From c344771d8bf5842a74ef481bda7dbf93e69bbc13 Mon Sep 17 00:00:00 2001 From: Anas Nashif Date: Tue, 10 Sep 2024 09:42:34 -0400 Subject: [PATCH] soc: intel: move init code from SYS_INIT to hooks Replace SYS_INIT with SoC hooks and adapt SoC init code Signed-off-by: Anas Nashif --- soc/intel/intel_adsp/ace/Kconfig | 2 ++ soc/intel/intel_adsp/ace/multiprocessing.c | 6 +++--- soc/intel/intel_adsp/cavs/Kconfig | 1 + soc/intel/intel_adsp/common/boot_complete.c | 2 -- soc/intel/intel_adsp/common/soc.c | 8 +++----- soc/intel/intel_ish/Kconfig | 1 + soc/intel/intel_ish/intel_ish5/pm/power.c | 6 +----- soc/intel/intel_ish/intel_ish5/soc.c | 6 +----- soc/intel/intel_socfpga_std/cyclonev/Kconfig | 1 + soc/intel/intel_socfpga_std/cyclonev/soc.c | 6 +----- 10 files changed, 14 insertions(+), 25 deletions(-) diff --git a/soc/intel/intel_adsp/ace/Kconfig b/soc/intel/intel_adsp/ace/Kconfig index e38ebdeb9c5..af4f25171de 100644 --- a/soc/intel/intel_adsp/ace/Kconfig +++ b/soc/intel/intel_adsp/ace/Kconfig @@ -15,6 +15,8 @@ config SOC_SERIES_INTEL_ADSP_ACE select XTENSA_CPU_HAS_HIFI3 select XTENSA_CPU_HAS_HIFI4 select ARCH_HAS_RESERVED_PAGE_FRAMES if MMU + select SOC_LATE_INIT_HOOK + select SOC_EARLY_INIT_HOOK config SOC_INTEL_COMM_WIDGET bool "Intel Communication Widget driver" diff --git a/soc/intel/intel_adsp/ace/multiprocessing.c b/soc/intel/intel_adsp/ace/multiprocessing.c index 77ab0057238..363dc9ae74d 100644 --- a/soc/intel/intel_adsp/ace/multiprocessing.c +++ b/soc/intel/intel_adsp/ace/multiprocessing.c @@ -108,11 +108,11 @@ void soc_mp_init(void) soc_cpus_active[0] = true; } -static int host_runtime_get(void) +void soc_late_init_hook(void) { - return pm_device_runtime_get(INTEL_ADSP_HST_DOMAIN_DEV); + pm_device_runtime_get(INTEL_ADSP_HST_DOMAIN_DEV); } -SYS_INIT(host_runtime_get, POST_KERNEL, 99); + #ifdef CONFIG_ADSP_IMR_CONTEXT_SAVE /* diff --git a/soc/intel/intel_adsp/cavs/Kconfig b/soc/intel/intel_adsp/cavs/Kconfig index 01d325cc325..ecea64b1e7b 100644 --- a/soc/intel/intel_adsp/cavs/Kconfig +++ b/soc/intel/intel_adsp/cavs/Kconfig @@ -11,6 +11,7 @@ config SOC_SERIES_INTEL_ADSP_CAVS select ATOMIC_OPERATIONS_ARCH if "$(ZEPHYR_TOOLCHAIN_VARIANT)" = "xcc" select ARCH_HAS_COHERENCE select HAS_PM + select SOC_EARLY_INIT_HOOK config SOC_INTEL_CAVS_V25 select XTENSA_WAITI_BUG diff --git a/soc/intel/intel_adsp/common/boot_complete.c b/soc/intel/intel_adsp/common/boot_complete.c index 3d27ae18d13..96e47ef0292 100644 --- a/soc/intel/intel_adsp/common/boot_complete.c +++ b/soc/intel/intel_adsp/common/boot_complete.c @@ -28,5 +28,3 @@ int boot_complete(void) return 0; } - -SYS_INIT(boot_complete, PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEVICE); diff --git a/soc/intel/intel_adsp/common/soc.c b/soc/intel/intel_adsp/common/soc.c index 97c481a165e..a25493ff766 100644 --- a/soc/intel/intel_adsp/common/soc.c +++ b/soc/intel/intel_adsp/common/soc.c @@ -6,6 +6,7 @@ #include #include +extern int boot_complete(void); extern void power_init(void); extern void adsp_clock_init(void); @@ -13,8 +14,9 @@ extern void adsp_clock_init(void); extern void soc_mp_init(void); #endif -static __imr int soc_init(void) +void soc_early_init_hook(void) { + (void)boot_complete(); power_init(); #ifdef CONFIG_ADSP_CLOCK @@ -24,8 +26,4 @@ static __imr int soc_init(void) #if CONFIG_MP_MAX_NUM_CPUS > 1 soc_mp_init(); #endif - - return 0; } - -SYS_INIT(soc_init, PRE_KERNEL_1, 99); diff --git a/soc/intel/intel_ish/Kconfig b/soc/intel/intel_ish/Kconfig index 31568e85d65..084fb45b70f 100644 --- a/soc/intel/intel_ish/Kconfig +++ b/soc/intel/intel_ish/Kconfig @@ -13,3 +13,4 @@ config SOC_FAMILY_INTEL_ISH select INTEL_HAL select HAS_PM select HAS_COVERAGE_SUPPORT + select SOC_EARLY_INIT_HOOK diff --git a/soc/intel/intel_ish/intel_ish5/pm/power.c b/soc/intel/intel_ish/intel_ish5/pm/power.c index 3ad15eee36b..1ad559c3fea 100644 --- a/soc/intel/intel_ish/intel_ish5/pm/power.c +++ b/soc/intel/intel_ish/intel_ish5/pm/power.c @@ -72,11 +72,7 @@ void sys_arch_reboot(int type) extern void sedi_pm_init(void); -static int ish_sedi_pm_init(void) +void soc_early_init_hook(void) { sedi_pm_init(); - - return 0; } - -SYS_INIT(ish_sedi_pm_init, PRE_KERNEL_2, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); diff --git a/soc/intel/intel_ish/intel_ish5/soc.c b/soc/intel/intel_ish/intel_ish5/soc.c index ccf044824a7..6547b219d4e 100644 --- a/soc/intel/intel_ish/intel_ish5/soc.c +++ b/soc/intel/intel_ish/intel_ish5/soc.c @@ -11,13 +11,9 @@ #include "sedi_driver_hpet.h" #endif -static int intel_ish_init(void) +void soc_early_init_hook(void) { #if defined(CONFIG_HPET_TIMER) sedi_hpet_set_min_delay(HPET_CMP_MIN_DELAY); #endif - - return 0; } - -SYS_INIT(intel_ish_init, PRE_KERNEL_2, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); diff --git a/soc/intel/intel_socfpga_std/cyclonev/Kconfig b/soc/intel/intel_socfpga_std/cyclonev/Kconfig index 2b6ba6587b3..8c4e2b84006 100644 --- a/soc/intel/intel_socfpga_std/cyclonev/Kconfig +++ b/soc/intel/intel_socfpga_std/cyclonev/Kconfig @@ -7,3 +7,4 @@ config SOC_SERIES_CYCLONEV select ARM_AARCH32_MMU select ARM_ARCH_TIMER_ERRATUM_740657 if ARM_ARCH_TIMER select ARCH_HAS_RESERVED_PAGE_FRAMES + select SOC_EARLY_INIT_HOOK diff --git a/soc/intel/intel_socfpga_std/cyclonev/soc.c b/soc/intel/intel_socfpga_std/cyclonev/soc.c index 51d4aebd0cd..59f0c68ebd0 100644 --- a/soc/intel/intel_socfpga_std/cyclonev/soc.c +++ b/soc/intel/intel_socfpga_std/cyclonev/soc.c @@ -70,16 +70,12 @@ const struct arm_mmu_config mmu_config = { * * @return 0 */ -static int soc_intel_cyclonev_init(void) +void soc_early_init_hook(void) { unsigned int sctlr = __get_SCTLR(); /* modifying some registers prior to initialization */ sctlr &= ~SCTLR_A_Msk; __set_SCTLR(sctlr); __set_VBAR(0); - return 0; } - -SYS_INIT(soc_intel_cyclonev_init, PRE_KERNEL_1, - CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); /* EOF */