spl: Add support for passing handoff info to U-Boot proper
There is some basic informaton that SPL normally wants to pass through to U-Boot, such as the SDRAM size and bank information. Mkae use of the new bloblist structure for this. Add a new 'handoff' blob which is set up in SPL and passed to U-Boot proper. Also adda test for sandbox_spl that checks that this works correctly and a new 'sb' command to show the information passed from SPL. Reviewed-by: Tom Rini <trini@konsulko.com> Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -5,3 +5,4 @@
|
||||
#
|
||||
|
||||
obj-y += board_init.o
|
||||
obj-$(CONFIG_$(SPL_TPL_)HANDOFF) += handoff.o
|
||||
|
||||
47
common/init/handoff.c
Normal file
47
common/init/handoff.c
Normal file
@@ -0,0 +1,47 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Passing basic information from SPL to U-Boot proper
|
||||
*
|
||||
* Copyright 2018 Google, Inc
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <handoff.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
void handoff_save_dram(struct spl_handoff *ho)
|
||||
{
|
||||
ho->ram_size = gd->ram_size;
|
||||
#ifdef CONFIG_NR_DRAM_BANKS
|
||||
{
|
||||
struct bd_info *bd = gd->bd;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
|
||||
ho->ram_bank[i].start = bd->bi_dram[i].start;
|
||||
ho->ram_bank[i].size = bd->bi_dram[i].size;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void handoff_load_dram_size(struct spl_handoff *ho)
|
||||
{
|
||||
gd->ram_size = ho->ram_size;
|
||||
}
|
||||
|
||||
void handoff_load_dram_banks(struct spl_handoff *ho)
|
||||
{
|
||||
#ifdef CONFIG_NR_DRAM_BANKS
|
||||
{
|
||||
struct bd_info *bd = gd->bd;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
|
||||
bd->bi_dram[i].start = ho->ram_bank[i].start;
|
||||
bd->bi_dram[i].size = ho->ram_bank[i].size;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
Reference in New Issue
Block a user