On Fri, Sep 09, 2022 at 04:39:15PM +0200, Bastian Krause wrote: > According to the i.MX233 Reference Manual (i.MX233RM, Rev. 4, 03 April > 2009) section "14.1.1 AHB Address Ranges", the formula to calculate the > DRAM memory size is: > > dram_memory_available = 2 * 2^col * 2^row * (# dram_devices) * (# banks_per_device) > > The calulcation in barebox misses the first factor, so the result is > only half as big as it should be. > > On an iMX233 OLinuXino board the following errors can be observed: > > mmu: Critical Error: Can't request SDRAM region for ttb at 43fe4000 > Error: Cannot request SDRAM region for stack > > The faulty calulcation leads to 32 MB being detected (as seen in the > output of `iomem`), although 64 MB should be available (as passed to > barebox_arm_entry() in lowlevel code). > > Fix the memory calculation by adding the missing factor 2. > > Fixes: 7158c5987e6 ("ARM: i.MX23: Add memory size detection") > Signed-off-by: Bastian Krause <bst@xxxxxxxxxxxxxx> > Signed-off-by: Jürgen Borleis <jbe@xxxxxxxxxxxxxx> > --- > arch/arm/mach-mxs/include/mach/imx23.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Applied to master, thanks Sascha > > diff --git a/arch/arm/mach-mxs/include/mach/imx23.h b/arch/arm/mach-mxs/include/mach/imx23.h > index bdd3ae4407a..03eddabed0a 100644 > --- a/arch/arm/mach-mxs/include/mach/imx23.h > +++ b/arch/arm/mach-mxs/include/mach/imx23.h > @@ -25,7 +25,7 @@ static inline u32 imx23_get_memsize(void) > cs0 = FIELD_GET(DRAM_CTL14_CS0_EN, ctl14); > cs1 = FIELD_GET(DRAM_CTL14_CS1_EN, ctl14); > > - return (1 << columns) * (1 << rows) * banks * (cs0 + cs1); > + return 2 * (1 << columns) * (1 << rows) * banks * (cs0 + cs1); > } > > #endif /* __MACH_IMX23_H */ > -- > 2.30.2 > > > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |