dm: Set up driver model after relocation
Make driver model available after relocation, by setting up data structures and scanning for devices using compiled-in platform_data and (when available) the device tree. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
653ef91cba
commit
1ce6017679
|
@ -18,6 +18,7 @@
|
||||||
#ifdef CONFIG_HAS_DATAFLASH
|
#ifdef CONFIG_HAS_DATAFLASH
|
||||||
#include <dataflash.h>
|
#include <dataflash.h>
|
||||||
#endif
|
#endif
|
||||||
|
#include <dm.h>
|
||||||
#include <environment.h>
|
#include <environment.h>
|
||||||
#include <fdtdec.h>
|
#include <fdtdec.h>
|
||||||
#if defined(CONFIG_CMD_IDE)
|
#if defined(CONFIG_CMD_IDE)
|
||||||
|
@ -51,7 +52,9 @@
|
||||||
#ifdef CONFIG_X86
|
#ifdef CONFIG_X86
|
||||||
#include <asm/init_helpers.h>
|
#include <asm/init_helpers.h>
|
||||||
#endif
|
#endif
|
||||||
|
#include <dm/root.h>
|
||||||
#include <linux/compiler.h>
|
#include <linux/compiler.h>
|
||||||
|
#include <linux/err.h>
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
|
@ -263,6 +266,33 @@ static int initr_malloc(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_DM
|
||||||
|
static int initr_dm(void)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = dm_init();
|
||||||
|
if (ret) {
|
||||||
|
debug("dm_init() failed: %d\n", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
ret = dm_scan_platdata();
|
||||||
|
if (ret) {
|
||||||
|
debug("dm_scan_platdata() failed: %d\n", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#ifdef CONFIG_OF_CONTROL
|
||||||
|
ret = dm_scan_fdt(gd->fdt_blob);
|
||||||
|
if (ret) {
|
||||||
|
debug("dm_scan_fdt() failed: %d\n", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
__weak int power_init_board(void)
|
__weak int power_init_board(void)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -761,6 +791,9 @@ init_fnc_t init_sequence_r[] = {
|
||||||
initr_barrier,
|
initr_barrier,
|
||||||
initr_malloc,
|
initr_malloc,
|
||||||
bootstage_relocate,
|
bootstage_relocate,
|
||||||
|
#ifdef CONFIG_DM
|
||||||
|
initr_dm,
|
||||||
|
#endif
|
||||||
#ifdef CONFIG_ARCH_EARLY_INIT_R
|
#ifdef CONFIG_ARCH_EARLY_INIT_R
|
||||||
arch_early_init_r,
|
arch_early_init_r,
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue