From 2eb347b174046037139c024e1ab2f63caf549315 Mon Sep 17 00:00:00 2001 From: Christian Taedcke Date: Sun, 16 Sep 2018 12:01:04 +0200 Subject: [PATCH] arm: exx32: Use one common soc.c for all exx32 socs The differentiation between the MCUs is handled in the HAL from Silabs. So all EXX32 MCUs should use the same soc.c file. Signed-off-by: Christian Taedcke --- soc/arm/silabs_exx32/CMakeLists.txt | 1 - soc/arm/silabs_exx32/common/CMakeLists.txt | 2 +- .../silabs_exx32/{efr32fg1p => common}/soc.c | 6 +- soc/arm/silabs_exx32/efm32wg/CMakeLists.txt | 1 - soc/arm/silabs_exx32/efm32wg/soc.c | 105 ------------------ soc/arm/silabs_exx32/efr32fg1p/CMakeLists.txt | 1 - 6 files changed, 4 insertions(+), 112 deletions(-) rename soc/arm/silabs_exx32/{efr32fg1p => common}/soc.c (94%) delete mode 100644 soc/arm/silabs_exx32/efm32wg/CMakeLists.txt delete mode 100644 soc/arm/silabs_exx32/efm32wg/soc.c delete mode 100644 soc/arm/silabs_exx32/efr32fg1p/CMakeLists.txt 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)