p1010rdb: fix ddr values for p1014rdb (setting bus width to 16bit)
authorMatthew McClintock <msm@freescale.com>
Mon, 13 Aug 2012 08:10:38 +0000 (08:10 +0000)
committerAndy Fleming <afleming@freescale.com>
Thu, 23 Aug 2012 15:24:16 +0000 (10:24 -0500)
There was an extra 0 in front of the value we were using to mask,
remove it to improve the code.

Also fix the value written to ddr_sdram_cfg to set the bus width
properly to 16 bits

Signed-off-by: Matthew McClintock <msm@freescale.com>
Signed-off-by: Andy Fleming <afleming@freescale.com>
board/freescale/p1010rdb/ddr.c

index 10c5a42d1eacfad2c7e616d3125e33d09db68639..6d00caffa373e4369505f749cb6b3ce057b0f561 100644 (file)
@@ -147,10 +147,11 @@ phys_size_t fixed_sdram(void)
        cpu = gd->cpu;
        /* P1014 and it's derivatives support max 16bit DDR width */
        if (cpu->soc_ver == SVR_P1014) {
+               ddr_cfg_regs.ddr_sdram_cfg &= ~SDRAM_CFG_DBW_MASK;
                ddr_cfg_regs.ddr_sdram_cfg |= SDRAM_CFG_16_BE;
-               ddr_cfg_regs.cs[0].bnds = CONFIG_SYS_DDR_CS0_BNDS >> 1;
-               ddr_cfg_regs.ddr_sdram_cfg &= ~0x00180000;
-               ddr_cfg_regs.ddr_sdram_cfg |= 0x001080000;
+               /* divide SA and EA by two and then mask the rest so we don't
+                * write to reserved fields */
+               ddr_cfg_regs.cs[0].bnds = (CONFIG_SYS_DDR_CS0_BNDS >> 1) & 0x0fff0fff;
        }
 
        ddr_size = (phys_size_t) CONFIG_SYS_SDRAM_SIZE * 1024 * 1024;