diff --git a/soc/arm/silabs_exx32/CMakeLists.txt b/soc/arm/silabs_exx32/CMakeLists.txt index 8bb88661f36..e4717b2d671 100644 --- a/soc/arm/silabs_exx32/CMakeLists.txt +++ b/soc/arm/silabs_exx32/CMakeLists.txt @@ -1,2 +1 @@ -add_subdirectory(${SOC_SERIES}) add_subdirectory(common) diff --git a/soc/arm/silabs_exx32/common/CMakeLists.txt b/soc/arm/silabs_exx32/common/CMakeLists.txt index b8d37db9a17..7ef868cac55 100644 --- a/soc/arm/silabs_exx32/common/CMakeLists.txt +++ b/soc/arm/silabs_exx32/common/CMakeLists.txt @@ -1 +1 @@ -zephyr_sources(soc_gpio.c) +zephyr_sources(soc.c soc_gpio.c) diff --git a/soc/arm/silabs_exx32/efr32fg1p/soc.c b/soc/arm/silabs_exx32/common/soc.c similarity index 94% rename from soc/arm/silabs_exx32/efr32fg1p/soc.c rename to soc/arm/silabs_exx32/common/soc.c index b0de0dc2801..f74caa5a40b 100644 --- a/soc/arm/silabs_exx32/efr32fg1p/soc.c +++ b/soc/arm/silabs_exx32/common/soc.c @@ -6,7 +6,7 @@ /** * @file - * @brief SoC initialization for the EFR32FG1P + * @brief Common SoC initialization for the EXX32 */ #include @@ -78,7 +78,7 @@ static ALWAYS_INLINE void clkInit(void) * * @return 0 */ -static int silabs_efr32fg1p_init(struct device *arg) +static int silabs_exx32_init(struct device *arg) { ARG_UNUSED(arg); @@ -106,4 +106,4 @@ static int silabs_efr32fg1p_init(struct device *arg) return 0; } -SYS_INIT(silabs_efr32fg1p_init, PRE_KERNEL_1, 0); +SYS_INIT(silabs_exx32_init, PRE_KERNEL_1, 0); diff --git a/soc/arm/silabs_exx32/efm32wg/CMakeLists.txt b/soc/arm/silabs_exx32/efm32wg/CMakeLists.txt deleted file mode 100644 index 74945fd994c..00000000000 --- a/soc/arm/silabs_exx32/efm32wg/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -zephyr_sources(soc.c) diff --git a/soc/arm/silabs_exx32/efm32wg/soc.c b/soc/arm/silabs_exx32/efm32wg/soc.c deleted file mode 100644 index 122fa27d1b0..00000000000 --- a/soc/arm/silabs_exx32/efm32wg/soc.c +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (c) 2017, Christian Taedcke - * - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @file - * @brief SoC initialization for the EFM32WG - */ - -#include -#include -#include -#include -#include -#include -#include - -#ifdef CONFIG_CMU_HFCLK_HFXO -/** - * @brief Initialization parameters for the external high frequency oscillator - */ -static const CMU_HFXOInit_TypeDef hfxoInit = CMU_HFXOINIT_DEFAULT; -#elif (defined CONFIG_CMU_HFCLK_LFXO) -/** - * @brief Initialization parameters for the external low frequency oscillator - */ -static const CMU_LFXOInit_TypeDef lfxoInit = CMU_LFXOINIT_DEFAULT; -#endif - -/** - * @brief Initialize the system clock - * - * @return N/A - * - */ -static ALWAYS_INLINE void clkInit(void) -{ -#ifdef CONFIG_CMU_HFCLK_HFXO - CMU_HFXOInit(&hfxoInit); - CMU_OscillatorEnable(cmuOsc_HFXO, true, true); - CMU_ClockSelectSet(cmuClock_HF, cmuSelect_HFXO); - CMU_OscillatorEnable(cmuOsc_HFRCO, false, false); - SystemHFXOClockSet(CONFIG_CMU_HFXO_FREQ); -#elif (defined CONFIG_CMU_HFCLK_LFXO) - CMU_LFXOInit(&lfxoInit); - CMU_OscillatorEnable(cmuOsc_LFXO, true, true); - CMU_ClockSelectSet(cmuClock_HF, cmuSelect_LFXO); - CMU_OscillatorEnable(cmuOsc_HFRCO, false, false); - SystemLFXOClockSet(CONFIG_CMU_LFXO_FREQ); -#elif (defined CONFIG_CMU_HFCLK_HFRCO) - /* - * This is the default clock, the controller starts with, so nothing to - * do here. - */ -#else -#error "Unsupported clock source for HFCLK selected" -#endif - - /* Enable the High Frequency Peripheral Clock */ - CMU_ClockEnable(cmuClock_HFPER, true); - -#ifdef CONFIG_GPIO_GECKO - CMU_ClockEnable(cmuClock_GPIO, true); -#endif -} - -/** - * @brief Perform basic hardware initialization - * - * Initialize the interrupt controller device drivers. - * Also initialize the timer device driver, if required. - * - * @return 0 - */ -static int silabs_efm32wg_init(struct device *arg) -{ - ARG_UNUSED(arg); - - unsigned int oldLevel; /* old interrupt lock level */ - - /* disable interrupts */ - oldLevel = irq_lock(); - - /* handle chip errata */ - CHIP_Init(); - - _ClearFaults(); - - /* Initialize system clock according to CONFIG_CMU settings */ - clkInit(); - - /* - * install default handler that simply resets the CPU - * if configured in the kernel, NOP otherwise - */ - NMI_INIT(); - - /* restore interrupt state */ - irq_unlock(oldLevel); - return 0; -} - -SYS_INIT(silabs_efm32wg_init, PRE_KERNEL_1, 0); diff --git a/soc/arm/silabs_exx32/efr32fg1p/CMakeLists.txt b/soc/arm/silabs_exx32/efr32fg1p/CMakeLists.txt deleted file mode 100644 index 74945fd994c..00000000000 --- a/soc/arm/silabs_exx32/efr32fg1p/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -zephyr_sources(soc.c)