From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kever Yang Date: Sun, 31 May 2020 20:51:58 +0800 Subject: [PATCH v2 1/2] rockchip: spl: do full dram_init instead of only probing In-Reply-To: <20200525175725.3638830-1-heiko@sntech.de> References: <20200525175725.3638830-1-heiko@sntech.de> Message-ID: <950e8f23-6c57-7e22-199d-04b5f7e0ac2a@rock-chips.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 2020/5/26 ??1:57, Heiko Stuebner wrote: > From: Heiko Stuebner > > 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. > > dram_init() from sdram.c does the following steps: > - uclass_get_device(UCLASS_RAM, ...) like the current code > - ret = ram_get_info(dev, &ram); > - gd->ram_size = ram.size; > > CONFIG_SPL_RAM already makes sure that sdram.c gets compiled > and thus no other variant of dram_init() can exist. > > So it's the same functionality as before and only adds that the > SPL now aquires knowledge about the amount of available ram, > which it didn't know about before. > > Signed-off-by: Heiko Stuebner Reviewed-by: Kever Yang Thanks, - Kever > --- > changes in v2: > - dropped changeid > - expanded commit message on how this does not change functionality > > 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(); > }