[U-Boot] Do we really need CONFIG_ARCH_CPU_INIT ?
Fabio Estevam
festevam at gmail.com
Thu Mar 1 14:23:10 CET 2012
Hi,
Currently CONFIG_ARCH_CPU_INIT is used to select arch_cpu_init() function.
arch_cpu_init() does CPU level initialization, so why do we need to
include CONFIG_ARCH_CPU_INIT in the include/configs/boardXYZ files,
which are board related files ?
For example:
Let's say boards X, Y and Z are based on SoC S:
1. If processor S has a arch_cpu_init() defined, then it means that
X,Y,Z need the code from arch_cpu_init() and then we need to define
CONFIG_ARCH_CPU_INIT for each of these boards (actually all the boards
based on this processor would need CONFIG_ARCH_CPU_INIT)
2. If not all boards need the code inside arch_cpu_init() for
processor S, then it means that this code is not really CPU specific
and then it should be moved to board code.
I was thinking in doing the following:
--- a/arch/arm/lib/board.c
+++ b/arch/arm/lib/board.c
@@ -224,10 +224,15 @@ void __dram_init_banksize(void)
void dram_init_banksize(void)
__attribute__((weak, alias("__dram_init_banksize")));
+int __arch_cpu_init(void)
+{
+ return 0;
+}
+int arch_cpu_init(void)
+ __attribute__((weak, alias("__arch_cpu_init")));
+
init_fnc_t *init_sequence[] = {
-#if defined(CONFIG_ARCH_CPU_INIT)
arch_cpu_init, /* basic arch cpu dependent setup */
-#endif
#if defined(CONFIG_BOARD_EARLY_INIT_F)
board_early_init_f,
#endif
,so that CONFIG_ARCH_CPU_INIT is not needed anymore.
Before I go further in this route to remove CONFIG_ARCH_CPU_INIT from
other places, I would like to know if this makes sense.
Thanks,
Fabio Estevam
More information about the U-Boot
mailing list