u32 *dram_init_seq, int seq_sz)
 {
        volatile immap_t *im = (immap_t *)CONFIG_SYS_IMMR;
-       u32 msize = CONFIG_SYS_DDR_SIZE * 1024 * 1024;
+       u32 msize = CONFIG_SYS_MAX_RAM_SIZE;
        u32 msize_log2 = __ilog2(msize);
        u32 i;
 
        out_be32(&im->mddrc.ddr_time_config0, mddrc_config->ddr_time_config0);
        out_be32(&im->mddrc.ddr_sys_config, mddrc_config->ddr_sys_config);
 
+       msize = get_ram_size(CONFIG_SYS_DDR_BASE, CONFIG_SYS_MAX_RAM_SIZE);
+       /* Fix DDR Local Window for new size */
+       out_be32(&im->sysconf.ddrlaw.ar, __ilog2(msize) - 1);
+       sync_law(&im->sysconf.ddrlaw.ar);
+
        return msize;
 }
 
 #define CONFIG_SYS_DDR_SIZE            256             /* MB */
 #define CONFIG_SYS_DDR_BASE            0x00000000
 #define CONFIG_SYS_SDRAM_BASE          CONFIG_SYS_DDR_BASE
+#define CONFIG_SYS_MAX_RAM_SIZE                0x20000000
 
 #define CONFIG_SYS_IOCTRL_MUX_DDR      0x00000036
 
 
 
 #define CONFIG_SYS_DDR_BASE            0x00000000      /* DDR is sys memory*/
 #define CONFIG_SYS_SDRAM_BASE          CONFIG_SYS_DDR_BASE
+#define CONFIG_SYS_MAX_RAM_SIZE                0x20000000
 
 #define CONFIG_SYS_IOCTRL_MUX_DDR      0x00000036
 
 
 #endif
 #define CONFIG_SYS_DDR_BASE            0x00000000      /* DDR is system memory*/
 #define CONFIG_SYS_SDRAM_BASE          CONFIG_SYS_DDR_BASE
+#define CONFIG_SYS_MAX_RAM_SIZE                0x20000000
 
 #define CONFIG_SYS_IOCTRL_MUX_DDR      0x00000036