diff options
author | Simon Glass <sjg@chromium.org> | 2015-06-23 15:39:10 -0600 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2015-07-21 17:39:28 -0600 |
commit | 070d00b8dc8453b8c2f12d74551919cf2b124136 (patch) | |
tree | 824056b80d281291279fdb9b142fdf5ba528b86f /include | |
parent | cb5f97f70766fdabc90847bbbc25eb759b2b4797 (diff) |
dm: spl: Allow device tree/driver model in board_init_f()
Add an spl_init() function that does basic init such that board_init_f() can
use simple malloc(), device tree and driver model. Each one is set up only
if enabled for SPL.
Note: We really should refactor SPL such that there is a single
board_init_f() and rename the existing weak board_init_f() functions
provided by boards, calling them from the single board_init_f().
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-generic/global_data.h | 1 | ||||
-rw-r--r-- | include/spl.h | 12 |
2 files changed, 13 insertions, 0 deletions
diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index db0550b67c..7ef3e259b4 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -116,5 +116,6 @@ typedef struct global_data { #define GD_FLG_ENV_READY 0x00080 /* Env. imported into hash table */ #define GD_FLG_SERIAL_READY 0x00100 /* Pre-reloc serial console ready */ #define GD_FLG_FULL_MALLOC_INIT 0x00200 /* Full malloc() is ready */ +#define GD_FLG_SPL_INIT 0x00400 /* spl_init() has been called */ #endif /* __ASM_GENERIC_GBL_DATA_H */ diff --git a/include/spl.h b/include/spl.h index d19940f2a3..8e53426142 100644 --- a/include/spl.h +++ b/include/spl.h @@ -81,6 +81,18 @@ void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image); int spl_load_image_ext(block_dev_desc_t *block_dev, int partition, const char *filename); int spl_load_image_ext_os(block_dev_desc_t *block_dev, int partition); +/** + * spl_init() - Set up device tree and driver model in SPL if enabled + * + * Call this function in board_init_f() if you want to use device tree and + * driver model early, before board_init_r() is called. This function will + * be called from board_init_r() if not called earlier. + * + * If this is not called, then driver model will be inactive in SPL's + * board_init_f(), and no device tree will be available. + */ +int spl_init(void); + #ifdef CONFIG_SPL_BOARD_INIT void spl_board_init(void); #endif |