]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
zynq: ddrc: Change memory size when 16bit mode is used
authorMichal Simek <michal.simek@xilinx.com>
Tue, 18 Jun 2013 07:07:02 +0000 (09:07 +0200)
committerMichal Simek <michal.simek@xilinx.com>
Tue, 18 Jun 2013 07:57:12 +0000 (09:57 +0200)
When 16bit mode is enable u-boot should also report
only half of memory.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Acked-by: Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
arch/arm/cpu/armv7/zynq/ddrc.c

index 11c405bb26cef1576780dd456e0836666e8fb53e..e8f8c19ed118f2fa04ce1897f7aed738aaa88535 100644 (file)
 #include <asm/arch/sys_proto.h>
 #include <asm/arch/hardware.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 /* Control regsiter bitfield definitions */
 #define ZYNQ_DDRC_CTRLREG_BUSWIDTH_MASK                0xC
 #define ZYNQ_DDRC_CTRLREG_BUSWIDTH_SHIFT       2
+#define ZYNQ_DDRC_CTRLREG_BUSWIDTH_16BIT       1
 
 /* ECC scrub regsiter definitions */
 #define ZYNQ_DDRC_ECC_SCRUBREG_ECC_MODE_MASK   0x7
@@ -45,7 +48,7 @@ void zynq_ddrc_init(void)
 
        /* ECC is enabled when memory is in 16bit mode and it is enabled */
        if ((ecctype == ZYNQ_DDRC_ECC_SCRUBREG_ECCMODE_SECDED) &&
-           (width == 1)) {
+           (width == ZYNQ_DDRC_CTRLREG_BUSWIDTH_16BIT)) {
                puts("Memory: ECC enabled\n");
                /*
                 * Clear the first 1MB because it is not initialized from
@@ -56,4 +59,7 @@ void zynq_ddrc_init(void)
        } else {
                puts("Memory: ECC disabled\n");
        }
+
+       if (width == ZYNQ_DDRC_CTRLREG_BUSWIDTH_16BIT)
+               gd->ram_size /= 2;
 }