[U-Boot] [PATCH v2 04/22] dm: Add a new CPU init function which can use driver model

Simon Glass sjg at chromium.org
Thu Mar 5 20:25:16 CET 2015


Since driver model is set up after arch_cpu_init(), that function cannot
use drivers. Add a new arch_cpu_init_dm() function which is called
immediately after driver model is ready, and can reference devices.

This can be used to probe essential devices for the CPU.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

Changes in v2:
- Add a new patch with a CPU init function which can use driver model

 common/board_f.c |  6 ++++++
 include/common.h | 11 +++++++++++
 2 files changed, 17 insertions(+)

diff --git a/common/board_f.c b/common/board_f.c
index 4d8b8a6..8bbece2 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -787,6 +787,11 @@ __weak int reserve_arch(void)
 	return 0;
 }
 
+__weak int arch_cpu_init_dm(void)
+{
+	return 0;
+}
+
 static init_fnc_t init_sequence_f[] = {
 #ifdef CONFIG_SANDBOX
 	setup_ram_buf,
@@ -807,6 +812,7 @@ static init_fnc_t init_sequence_f[] = {
 	fdtdec_check_fdt,
 #endif
 	initf_dm,
+	arch_cpu_init_dm,
 #if defined(CONFIG_BOARD_EARLY_INIT_F)
 	board_early_init_f,
 #endif
diff --git a/include/common.h b/include/common.h
index 77c55c6..f9aaaa5 100644
--- a/include/common.h
+++ b/include/common.h
@@ -253,6 +253,17 @@ int update_flash_size(int flash_size);
 int arch_early_init_r(void);
 
 /**
+ * arch_cpu_init_dm() - init CPU after driver model is available
+ *
+ * This is called immediately after driver model is available before
+ * relocation. This is similar to arch_cpu_init() but is able to reference
+ * devices
+ *
+ * @return 0 if OK, -ve on error
+ */
+int arch_cpu_init_dm(void);
+
+/**
  * Reserve all necessary stacks
  *
  * This is used in generic board init sequence in common/board_f.c. Each
-- 
2.2.0.rc0.207.ga3a616c



More information about the U-Boot mailing list