On Sun, Mar 26, 2023 at 10:34:55AM +0200, Rouven Czerwinski wrote: > Hi, > > On Fri, 2023-03-24 at 15:03 +0100, Sascha Hauer wrote: > > From: Ahmad Fatoum <ahmad@xxxxxx> > > > > Add a driver to read out the amount of memory from the DDR controller. > > The decoding of the registers has been taken from U-Boot. Currently > > supported are the RK3399 and the RK3568, but decoding should work on > > other Rockchip SoCs as well. > > > > Signed-off-by: Ahmad Fatoum <ahmad@xxxxxx> > > Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> > > --- > > arch/arm/mach-rockchip/Makefile | 1 + > > arch/arm/mach-rockchip/dmc.c | 232 ++++++++++++++++++++++++++++ > > include/linux/sizes.h | 3 + > > include/mach/rockchip/dmc.h | 86 +++++++++++ > > include/mach/rockchip/rk3399-regs.h | 1 + > > include/mach/rockchip/rk3568-regs.h | 1 + > > 6 files changed, 324 insertions(+) > > create mode 100644 arch/arm/mach-rockchip/dmc.c > > create mode 100644 include/mach/rockchip/dmc.h > > [...] > > + > > +resource_size_t rk3568_ram0_size(void) > > +{ > > + void __iomem *pmugrf = IOMEM(RK3568_PMUGRF_BASE); > > + u32 sys_reg2, sys_reg3; > > + resource_size_t size; > > + > > + sys_reg2 = readl(pmugrf + RK3568_PMUGRF_OS_REG2); > > + sys_reg3 = readl(pmugrf + RK3568_PMUGRF_OS_REG3); > > + > > + size = rockchip_sdram_size(sys_reg2, sys_reg3); > > + size = min_t(resource_size_t, SZ_4G - SZ_128M, size); > this ^ > Should be SZ_256M, The frist memory region for RK356x is from 0x0 to > 0xf000_0000, not 0xf800_0000. Tested on Radxa CM3 RK3566. True. Maybe we should better write 0xf0000000, because that's the address value where the DDR stops. Sascha -- 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 |