
Add an implementation of arch_cpu_init that covers all MIPS boards, in preparation for performing various pieces of initialisation there in later patches.
In order to allow the ath79 code to continue performing initialisation at this point in the boot, it's converted to use a new mach_cpu_init function which is called from arch_cpu_init.
Signed-off-by: Paul Burton paul.burton@imgtec.com ---
arch/mips/Kconfig | 4 ++++ arch/mips/cpu/cpu.c | 6 ++++++ arch/mips/include/asm/u-boot-mips.h | 12 ++++++++++++ arch/mips/mach-ath79/cpu.c | 3 +-- 4 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 21066f0..34eb404 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -67,6 +67,7 @@ config ARCH_ATH79 bool "Support QCA/Atheros ath79" select OF_CONTROL select DM + select MACH_CPU_INIT
config MACH_PIC32 bool "Support Microchip PIC32" @@ -303,6 +304,9 @@ config MIPS_L1_CACHE_SHIFT config DYNAMIC_IO_PORT_BASE bool
+config MACH_CPU_INIT + bool + endif
endmenu diff --git a/arch/mips/cpu/cpu.c b/arch/mips/cpu/cpu.c index 391feb3..5ee80dd 100644 --- a/arch/mips/cpu/cpu.c +++ b/arch/mips/cpu/cpu.c @@ -35,3 +35,9 @@ void write_one_tlb(int index, u32 pagemask, u32 hi, u32 low0, u32 low1) write_c0_index(index); tlb_write_indexed(); } + +int arch_cpu_init(void) +{ + mach_cpu_init(); + return 0; +} diff --git a/arch/mips/include/asm/u-boot-mips.h b/arch/mips/include/asm/u-boot-mips.h index 1f527bb..0eaf32b 100644 --- a/arch/mips/include/asm/u-boot-mips.h +++ b/arch/mips/include/asm/u-boot-mips.h @@ -5,4 +5,16 @@ #ifndef _U_BOOT_MIPS_H_ #define _U_BOOT_MIPS_H_
+/** + * mach_cpu_init() - Perform SoC/machine-specific CPU initialisation + * + * This is called from arch_cpu_init() to allow for SoC/machine-level code to + * perform any CPU initialisation it may require. + */ +#ifdef CONFIG_MACH_CPU_INIT +void mach_cpu_init(void); +#else +static inline void mach_cpu_init(void) {} +#endif + #endif /* _U_BOOT_MIPS_H_ */ diff --git a/arch/mips/mach-ath79/cpu.c b/arch/mips/mach-ath79/cpu.c index 5756a06..a556b73 100644 --- a/arch/mips/mach-ath79/cpu.c +++ b/arch/mips/mach-ath79/cpu.c @@ -46,7 +46,7 @@ static const struct ath79_soc_desc desc[] = { {ATH79_SOC_QCA9561, "9561", REV_ID_MAJOR_QCA9561, 0}, };
-int arch_cpu_init(void) +void mach_cpu_init(void) { void __iomem *base; enum ath79_soc_type soc = ATH79_SOC_UNKNOWN; @@ -98,7 +98,6 @@ int arch_cpu_init(void) gd->arch.soc = soc; gd->arch.rev = rev; gd->arch.ver = ver; - return 0; }
int print_cpuinfo(void)