arm: zynq: Do not remap OCM to high address
authorMichal Simek <michal.simek@xilinx.com>
Wed, 28 Aug 2013 06:26:41 +0000 (08:26 +0200)
committerMichal Simek <michal.simek@xilinx.com>
Wed, 6 Nov 2013 08:23:58 +0000 (09:23 +0100)
In case where ps-ddr is not used, do not remap
OCM to high address and keep it from 0x0.
Linux SMP requires to have memory at 0x0.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
arch/arm/cpu/armv7/zynq/cpu.c

index 2bb38438ae4ab6848ca80e52d62aaf40d0c0d307..0ca5d8a97a0b6d150fd7dd4ad8e8e6e48e12170b 100644 (file)
@@ -16,13 +16,15 @@ void lowlevel_init(void)
 int arch_cpu_init(void)
 {
        zynq_slcr_unlock();
-       /* remap DDR to zero, FILTERSTART */
-       writel(0, &scu_base->filter_start);
 
        /* Device config APB, unlock the PCAP */
        writel(0x757BDF0D, &devcfg_base->unlock);
        writel(0xFFFFFFFF, &devcfg_base->rom_shadow);
 
+#if (CONFIG_SYS_SDRAM_BASE == 0)
+       /* remap DDR to zero, FILTERSTART */
+       writel(0, &scu_base->filter_start);
+
        /* OCM_CFG, Mask out the ROM, map ram into upper addresses */
        writel(0x1F, &slcr_base->ocm_cfg);
        /* FPGA_RST_CTRL, clear resets on AXI fabric ports */
@@ -33,6 +35,7 @@ int arch_cpu_init(void)
        writel(0x0, &slcr_base->ddr_urgent_sel);
        /* Urgent write, ports S2/S3 */
        writel(0xC, &slcr_base->ddr_urgent);
+#endif
 
        zynq_slcr_lock();