[PATCH 1/2] rockchip: spl: do full dram_init instead of only probing

Heiko Stübner heiko at sntech.de
Fri May 15 12:33:09 CEST 2020


Hi Kever,

Am Freitag, 15. Mai 2020, 04:07:41 CEST schrieb Kever Yang:
> 
> On 2020/5/12 下午6:34, Heiko Stuebner wrote:
> > From: Heiko Stuebner <heiko.stuebner at theobroma-systems.com>
> >
> > Parts of later SPL may need RAM information as well, so do full
> > dram_init() call, which includes the existing dram probing but also
> > initializes the ram information in gd.
> 
> NAK.
> 
> I would prefer to use DM interface and leave the decision of ram 
> initialization to the ram driver.

With CONFIG_SPL_RAM, we get dram_init from mach-rockchip/sdram.c
not some board-specific variant and the in the code change below you
can see that it is guarded by such a defined(CONFIG_SPL_RAM).

That dram_init() function does only:
- uclass_get_device(UCLASS_RAM, 0, &dev);
- ram_get_info(dev, &ram);
- gd->ram_size = ram.size;


So the only difference between the old code and my change is that it
will store information about usable ram in the gd struct, so that other
parts of the SPL can access it - and we of course keep using the DM
interface as before ;-) .


Heiko


> > All Rockchip SoCs use a TPL+SPL combination now, so that's ok for all
> > of them.
> Still not all of the board use the combination.
> >
> > Signed-off-by: Heiko Stuebner <heiko.stuebner at theobroma-systems.com>
> > Change-Id: I2c7496f2d88d65a9f80f74d2139bf307bb4b442b
> 
> Please remove the Change-Id next time.
> 
> Thanks,
> 
> - Kever
> 
> > ---
> >   arch/arm/mach-rockchip/spl.c | 6 ++++--
> >   1 file changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/arch/arm/mach-rockchip/spl.c b/arch/arm/mach-rockchip/spl.c
> > index 0b76af6080..0eda2c3485 100644
> > --- a/arch/arm/mach-rockchip/spl.c
> > +++ b/arch/arm/mach-rockchip/spl.c
> > @@ -135,13 +135,15 @@ void board_init_f(ulong dummy)
> >   	/* Init ARM arch timer in arch/arm/cpu/armv7/arch_timer.c */
> >   	timer_init();
> >   #endif
> > -#if !defined(CONFIG_TPL) || defined(CONFIG_SPL_OS_BOOT)
> > +#if !defined(CONFIG_TPL) || defined(CONFIG_SPL_RAM)
> >   	debug("\nspl:init dram\n");
> > -	ret = uclass_get_device(UCLASS_RAM, 0, &dev);
> > +	ret = dram_init();
> >   	if (ret) {
> >   		printf("DRAM init failed: %d\n", ret);
> >   		return;
> >   	}
> > +	gd->ram_top = gd->ram_base + get_effective_memsize();
> > +	gd->ram_top = board_get_usable_ram_top(gd->ram_size);
> >   #endif
> >   	preloader_console_init();
> >   }
> 
> 
> 






More information about the U-Boot mailing list