diff --git a/drivers/flash/Kconfig.gecko b/drivers/flash/Kconfig.gecko index 626bbe1271b..a1f01719c64 100644 --- a/drivers/flash/Kconfig.gecko +++ b/drivers/flash/Kconfig.gecko @@ -8,6 +8,7 @@ config SOC_FLASH_GECKO bool "Silicon Labs Gecko flash driver" depends on FLASH && SOC_FAMILY_EXX32 select FLASH_HAS_DRIVER_ENABLED + select SOC_GECKO_MSC help Enable Silicon Labs Gecko series internal flash driver. diff --git a/drivers/gpio/Kconfig.gecko b/drivers/gpio/Kconfig.gecko index daa1f941c92..93bf318bb4a 100644 --- a/drivers/gpio/Kconfig.gecko +++ b/drivers/gpio/Kconfig.gecko @@ -9,6 +9,7 @@ menuconfig GPIO_GECKO bool "Gecko GPIO driver" depends on GPIO && HAS_SILABS_GECKO select HAS_DTS_GPIO + select SOC_GECKO_GPIO help Enable the Gecko gpio driver. diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig index f48033dbfa4..3c54bee2194 100644 --- a/drivers/i2c/Kconfig +++ b/drivers/i2c/Kconfig @@ -242,6 +242,7 @@ config I2C_7_IRQ_PRI config I2C_GECKO bool "Gecko I2C driver" depends on HAS_SILABS_GECKO + select SOC_GECKO_I2C help Enable the SiLabs Gecko I2C bus driver. diff --git a/drivers/serial/Kconfig.gecko b/drivers/serial/Kconfig.gecko index 56323025b5f..7424021a3fa 100644 --- a/drivers/serial/Kconfig.gecko +++ b/drivers/serial/Kconfig.gecko @@ -11,6 +11,7 @@ menuconfig UART_GECKO depends on GPIO_GECKO select SERIAL_HAS_DRIVER select SERIAL_SUPPORT_INTERRUPT + select SOC_GECKO_USART help Enable the Gecko uart driver. diff --git a/drivers/serial/Kconfig.leuart_gecko b/drivers/serial/Kconfig.leuart_gecko index 54287f44dec..e7ccbf74546 100644 --- a/drivers/serial/Kconfig.leuart_gecko +++ b/drivers/serial/Kconfig.leuart_gecko @@ -11,6 +11,7 @@ menuconfig LEUART_GECKO depends on GPIO_GECKO select SERIAL_HAS_DRIVER select SERIAL_SUPPORT_INTERRUPT + select SOC_GECKO_LEUART help Enable the Gecko leuart driver. diff --git a/ext/hal/silabs/gecko/CMakeLists.txt b/ext/hal/silabs/gecko/CMakeLists.txt index e494d35ee25..a581b238045 100644 --- a/ext/hal/silabs/gecko/CMakeLists.txt +++ b/ext/hal/silabs/gecko/CMakeLists.txt @@ -23,13 +23,22 @@ zephyr_compile_definitions( ) zephyr_sources( emlib/src/em_system.c) -zephyr_sources_ifdef(CONFIG_HAS_CMU emlib/src/em_cmu.c) +zephyr_sources_ifdef(CONFIG_SOC_GECKO_CMU emlib/src/em_cmu.c) +zephyr_sources_ifdef(CONFIG_SOC_GECKO_CORE emlib/src/em_core.c) +zephyr_sources_ifdef(CONFIG_SOC_GECKO_CRYOTIMER emlib/src/em_cryotimer.c) zephyr_sources_ifdef(CONFIG_SOC_GECKO_EMU emlib/src/em_emu.c) -zephyr_sources_ifdef(CONFIG_GPIO_GECKO emlib/src/em_gpio.c) -zephyr_sources_ifdef(CONFIG_UART_GECKO emlib/src/em_usart.c) -zephyr_sources_ifdef(CONFIG_LEUART_GECKO emlib/src/em_leuart.c) -zephyr_sources_ifdef(CONFIG_I2C_GECKO emlib/src/em_i2c.c) -zephyr_sources_ifdef(CONFIG_SOC_FLASH_GECKO emlib/src/em_msc.c) +zephyr_sources_ifdef(CONFIG_SOC_GECKO_GPIO emlib/src/em_gpio.c) +zephyr_sources_ifdef(CONFIG_SOC_GECKO_I2C emlib/src/em_i2c.c) +zephyr_sources_ifdef(CONFIG_SOC_GECKO_LETIMER emlib/src/em_letimer.c) +zephyr_sources_ifdef(CONFIG_SOC_GECKO_LEUART emlib/src/em_leuart.c) +zephyr_sources_ifdef(CONFIG_SOC_GECKO_MSC emlib/src/em_msc.c) +zephyr_sources_ifdef(CONFIG_SOC_GECKO_PRS emlib/src/em_prs.c) +zephyr_sources_ifdef(CONFIG_SOC_GECKO_RMU emlib/src/em_rmu.c) +zephyr_sources_ifdef(CONFIG_SOC_GECKO_RTC emlib/src/em_rtc.c) +zephyr_sources_ifdef(CONFIG_SOC_GECKO_RTCC emlib/src/em_rtcc.c) +zephyr_sources_ifdef(CONFIG_SOC_GECKO_TIMER emlib/src/em_timer.c) +zephyr_sources_ifdef(CONFIG_SOC_GECKO_USART emlib/src/em_usart.c) +zephyr_sources_ifdef(CONFIG_SOC_GECKO_WDOG emlib/src/em_wdog.c) zephyr_sources_ifdef(CONFIG_SOC_SERIES_EFM32WG Device/SiliconLabs/EFM32WG/Source/system_efm32wg.c) zephyr_sources_ifdef(CONFIG_SOC_SERIES_EFR32FG1P Device/SiliconLabs/EFR32FG1P/Source/system_efr32fg1p.c) zephyr_sources_ifdef(CONFIG_SOC_SERIES_EFM32HG Device/SiliconLabs/EFM32HG/Source/system_efm32hg.c) diff --git a/soc/arm/silabs_exx32/Kconfig b/soc/arm/silabs_exx32/Kconfig index 0068b60f06d..ad67291c74c 100644 --- a/soc/arm/silabs_exx32/Kconfig +++ b/soc/arm/silabs_exx32/Kconfig @@ -24,10 +24,82 @@ config SOC_PART_NUMBER that you should not set directly. The part number selection choice defines the default value for this string. +config SOC_GECKO_CORE + bool + help + Set if the Core interrupt handling (CORE) HAL module is used. + +config SOC_GECKO_CRYOTIMER + bool + help + Set if the Ultra Low Energy Timer/Counter (CRYOTIMER) HAL module is used. + config SOC_GECKO_EMU bool help - Set if the energy management unit (EMU) is used. + Set if the Energy Management Unit (EMU) HAL module is used. + +config SOC_GECKO_GPIO + bool + help + Set if the General Purpose Input/Output (GPIO) HAL module is used. + +config SOC_GECKO_I2C + bool + help + Set if the Inter-Integrated Circuit Interface (I2C) HAL module is used. + +config SOC_GECKO_LETIMER + bool + help + Set if the Low Energy Timer (LETIMER) HAL module is used. + +config SOC_GECKO_LEUART + bool + help + Set if the Low Energy Universal Asynchronous Receiver/Transmitter (LEUART) + HAL module is used. + +config SOC_GECKO_MSC + bool + help + Set if the Memory System Controller (MSC) HAL module is used. + +config SOC_GECKO_PRS + bool + help + Set if the Peripheral Reflex System (PRS) HAL module is used. + +config SOC_GECKO_RMU + bool + help + Set if the Reset Management Unit (RMU) HAL module is used. + +config SOC_GECKO_RTC + bool + help + Set if the Real Time Counter (RTC) HAL module is used. + +config SOC_GECKO_RTCC + bool + help + Set if the Real Time Counter and Calendar (RTCC) HAL module is used. + +config SOC_GECKO_TIMER + bool + help + Set if the Timer/Counter (TIMER) HAL module is used. + +config SOC_GECKO_USART + bool + help + Set if the Universal Synchronous Asynchronous Receiver/Transmitter (USART) + HAL module is used. + +config SOC_GECKO_WDOG + bool + help + Set if the Watchdog Timer (WDOG) HAL module is used. config SOC_GECKO_EMU_DCDC bool "Enable SoC DC/DC regulator" @@ -54,12 +126,12 @@ choice SOC_GECKO_EMU_DCDC_MODE bool "Bypass" endchoice -config HAS_CMU +config SOC_GECKO_CMU bool help Set if the clock management unit (CMU) is present in the SoC. -if HAS_CMU +if SOC_GECKO_CMU choice prompt "High Frequency Clock Selection" @@ -96,5 +168,5 @@ config CMU_LFXO_FREQ Set the external low frequency oscillator frequency in Hz. This should be set by the board's defconfig. -endif # HAS_CMU +endif # SOC_GECKO_CMU endif # SOC_FAMILY_EXX32 diff --git a/soc/arm/silabs_exx32/efm32hg/Kconfig.defconfig.efm32hg b/soc/arm/silabs_exx32/efm32hg/Kconfig.defconfig.efm32hg index f71fbc76a73..06298f6f452 100644 --- a/soc/arm/silabs_exx32/efm32hg/Kconfig.defconfig.efm32hg +++ b/soc/arm/silabs_exx32/efm32hg/Kconfig.defconfig.efm32hg @@ -8,9 +8,6 @@ if SOC_SERIES_EFM32HG -config GPIO - default y - if GPIO config GPIO_GECKO diff --git a/soc/arm/silabs_exx32/efm32hg/Kconfig.series b/soc/arm/silabs_exx32/efm32hg/Kconfig.series index 2cf337a9273..bcf9be7b325 100644 --- a/soc/arm/silabs_exx32/efm32hg/Kconfig.series +++ b/soc/arm/silabs_exx32/efm32hg/Kconfig.series @@ -13,6 +13,7 @@ config SOC_SERIES_EFM32HG select SYS_POWER_LOW_POWER_STATE_SUPPORTED select CPU_HAS_SYSTICK select HAS_SILABS_GECKO - select HAS_CMU + select SOC_GECKO_CMU + select SOC_GECKO_GPIO help Enable support for EFM32 Happy Gecko MCU series diff --git a/soc/arm/silabs_exx32/efm32pg12b/Kconfig.defconfig.efm32pg12b b/soc/arm/silabs_exx32/efm32pg12b/Kconfig.defconfig.efm32pg12b index 21461f01296..4fa8b4c9e39 100644 --- a/soc/arm/silabs_exx32/efm32pg12b/Kconfig.defconfig.efm32pg12b +++ b/soc/arm/silabs_exx32/efm32pg12b/Kconfig.defconfig.efm32pg12b @@ -8,9 +8,6 @@ if SOC_SERIES_EFM32PG12B -config GPIO - default y - if GPIO config GPIO_GECKO diff --git a/soc/arm/silabs_exx32/efm32pg12b/Kconfig.series b/soc/arm/silabs_exx32/efm32pg12b/Kconfig.series index cb07468d245..036682a6498 100644 --- a/soc/arm/silabs_exx32/efm32pg12b/Kconfig.series +++ b/soc/arm/silabs_exx32/efm32pg12b/Kconfig.series @@ -13,7 +13,8 @@ config SOC_SERIES_EFM32PG12B select SOC_FAMILY_EXX32 select SYS_POWER_LOW_POWER_STATE_SUPPORTED select CPU_HAS_SYSTICK - select HAS_CMU + select SOC_GECKO_CMU select SOC_GECKO_EMU + select SOC_GECKO_GPIO help Enable support for EFM32 PearlGecko MCU series diff --git a/soc/arm/silabs_exx32/efm32wg/Kconfig.defconfig.efm32wg b/soc/arm/silabs_exx32/efm32wg/Kconfig.defconfig.efm32wg index 01315b3a2ef..d3460584ba8 100644 --- a/soc/arm/silabs_exx32/efm32wg/Kconfig.defconfig.efm32wg +++ b/soc/arm/silabs_exx32/efm32wg/Kconfig.defconfig.efm32wg @@ -8,9 +8,6 @@ if SOC_SERIES_EFM32WG -config GPIO - default y - if GPIO config GPIO_GECKO diff --git a/soc/arm/silabs_exx32/efm32wg/Kconfig.series b/soc/arm/silabs_exx32/efm32wg/Kconfig.series index 6dc418146c4..29b0f397673 100644 --- a/soc/arm/silabs_exx32/efm32wg/Kconfig.series +++ b/soc/arm/silabs_exx32/efm32wg/Kconfig.series @@ -13,6 +13,7 @@ config SOC_SERIES_EFM32WG select SYS_POWER_LOW_POWER_STATE_SUPPORTED select CPU_HAS_SYSTICK select HAS_SILABS_GECKO - select HAS_CMU + select SOC_GECKO_CMU + select SOC_GECKO_GPIO help Enable support for EFM32 WonderGecko MCU series diff --git a/soc/arm/silabs_exx32/efr32fg1p/Kconfig.defconfig.efr32fg1p b/soc/arm/silabs_exx32/efr32fg1p/Kconfig.defconfig.efr32fg1p index 7624a22a972..41630e7523e 100644 --- a/soc/arm/silabs_exx32/efr32fg1p/Kconfig.defconfig.efr32fg1p +++ b/soc/arm/silabs_exx32/efr32fg1p/Kconfig.defconfig.efr32fg1p @@ -8,9 +8,6 @@ if SOC_SERIES_EFR32FG1P -config GPIO - default y - if GPIO config GPIO_GECKO diff --git a/soc/arm/silabs_exx32/efr32fg1p/Kconfig.series b/soc/arm/silabs_exx32/efr32fg1p/Kconfig.series index 19a9991e2dc..0d6068d862e 100644 --- a/soc/arm/silabs_exx32/efr32fg1p/Kconfig.series +++ b/soc/arm/silabs_exx32/efr32fg1p/Kconfig.series @@ -8,11 +8,12 @@ config SOC_SERIES_EFR32FG1P bool "EFR32FG1P Series MCU" select HAS_SILABS_GECKO - select HAS_CMU select CPU_CORTEX_M4 select CPU_HAS_FPU select SOC_FAMILY_EXX32 select SYS_POWER_LOW_POWER_STATE_SUPPORTED select CPU_HAS_SYSTICK + select SOC_GECKO_CMU + select SOC_GECKO_GPIO help Enable support for EFR32 FlexGecko MCU series diff --git a/soc/arm/silabs_exx32/efr32mg12p/Kconfig.defconfig.efr32mg12p b/soc/arm/silabs_exx32/efr32mg12p/Kconfig.defconfig.efr32mg12p index aa4a36e44ac..aa1cc1dfc95 100644 --- a/soc/arm/silabs_exx32/efr32mg12p/Kconfig.defconfig.efr32mg12p +++ b/soc/arm/silabs_exx32/efr32mg12p/Kconfig.defconfig.efr32mg12p @@ -8,9 +8,6 @@ if SOC_SERIES_EFR32MG12P -config GPIO - default y - if GPIO config GPIO_GECKO diff --git a/soc/arm/silabs_exx32/efr32mg12p/Kconfig.series b/soc/arm/silabs_exx32/efr32mg12p/Kconfig.series index 2441aa66dbe..d6256a6b797 100644 --- a/soc/arm/silabs_exx32/efr32mg12p/Kconfig.series +++ b/soc/arm/silabs_exx32/efr32mg12p/Kconfig.series @@ -13,7 +13,8 @@ config SOC_SERIES_EFR32MG12P select SYS_POWER_LOW_POWER_STATE_SUPPORTED select CPU_HAS_SYSTICK select HAS_SILABS_GECKO - select HAS_CMU + select SOC_GECKO_CMU select SOC_GECKO_EMU + select SOC_GECKO_GPIO help Enable support for EFR32 Mighty Gecko MCU series