This is a trying to fix problem described in: http://lists.infradead.org/pipermail/barebox/2013-April/014182.html Signed-off-by: Alexander Shiyan <shc_work@xxxxxxx> --- arch/arm/mach-imx/esdctl.c | 13 ++----------- arch/arm/mach-imx/imx51.c | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/arch/arm/mach-imx/esdctl.c b/arch/arm/mach-imx/esdctl.c index cb57d45..bde02fd 100644 --- a/arch/arm/mach-imx/esdctl.c +++ b/arch/arm/mach-imx/esdctl.c @@ -345,7 +345,7 @@ static int imx_esdctl_init(void) return platform_driver_register(&imx_serial_driver); } -mem_initcall(imx_esdctl_init); +//mem_initcall(imx_esdctl_init); /* * The i.MX SoCs usually have two SDRAM chipselects. The following @@ -435,16 +435,7 @@ void __naked __noreturn imx35_barebox_entry(uint32_t boarddata) void __naked __noreturn imx51_barebox_entry(uint32_t boarddata) { - unsigned long base; - unsigned long size; - - base = MX51_CSD0_BASE_ADDR; - - size = imx_v3_sdram_size((void *)MX51_ESDCTL_BASE_ADDR, 0); - if (size == SZ_256M) - size += imx_v3_sdram_size((void *)MX51_ESDCTL_BASE_ADDR, 1); - - barebox_arm_entry(base, size, boarddata); + barebox_arm_entry(MX51_CSD0_BASE_ADDR, SZ_128M, boarddata); } void __naked __noreturn imx53_barebox_entry(uint32_t boarddata) diff --git a/arch/arm/mach-imx/imx51.c b/arch/arm/mach-imx/imx51.c index 54d99a4..6593b7d 100644 --- a/arch/arm/mach-imx/imx51.c +++ b/arch/arm/mach-imx/imx51.c @@ -21,6 +21,8 @@ #include <mach/revision.h> #include <mach/clock-imx51_53.h> #include <mach/generic.h> +#include <mach/esdctl.h> +#include <asm/memory.h> #define SI_REV 0x48 @@ -76,6 +78,25 @@ static int imx51_init(void) } postcore_initcall(imx51_init); +static int imx51_memory_init(void) +{ + void __iomem *esdctl = IOMEM(MX51_ESDCTL_BASE_ADDR + IMX_ESDCTL1); + unsigned long add, size = SZ_128M; + + add = get_ram_size((ulong *)(MX51_CSD0_BASE_ADDR + SZ_128M), SZ_128M); + if (add) { + size += add; + if (readl(esdctl) & ESDCTL0_SDE) + size += get_ram_size((ulong *)MX51_CSD1_BASE_ADDR, SZ_256M); + + } + + arm_add_mem_device("ram0", MX51_CSD0_BASE_ADDR, size); + + return 0; +} +mem_initcall(imx51_memory_init); + /* * Saves the boot source media into the $bootsource environment variable * -- 1.8.1.5 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox