# Copyright (c) 2017 Christian Taedcke
# Copyright (c) 2018 Gil Benkoe
# SPDX-License-Identifier: Apache-2.0

rsource "*/Kconfig"

if SOC_FAMILY_SILABS_S0 || SOC_FAMILY_SILABS_S1 || SOC_FAMILY_SILABS_S2

config SOC_GECKO_SDID
	int
	help
	  Gecko SDK sometime refere to the chipset using the internal ID. This
	  entry reflects this ID.

config SOC_GECKO_BURTC
	bool
	help
	  Set if the Back-Up Real Time Counter (BURTC) HAL module is used.

config SOC_GECKO_CORE
	bool
	default y
	help
	  Set if the Core interrupt handling (CORE) HAL module is used.

config SOC_GECKO_ADC
	bool
	help
	  Set if the Analog to Digital Converter (ADC) HAL module is used.

config SOC_GECKO_IADC
	bool
	help
	  Set if the Incremental Analog to Digital Converter (IADC) 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) 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_SE
	bool
	help
	  Set if the Secure Element (SE) 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_EUSART
	bool
	help
	  Set if the Extended Universal Synchronous Asynchronous Receiver/Transmitter (EUSART)
	  HAL module is used.

config SOC_GECKO_WDOG
	bool
	help
	  Set if the Watchdog Timer (WDOG) HAL module is used.

config SOC_GECKO_TRNG
	bool
	help
	  Set if the SoC has a True Random Number Generator (TRNG) module.

config SOC_SILABS_SLEEPTIMER
	bool
	select SOC_GECKO_PRS
	select SOC_GECKO_RTCC if SOC_SERIES_EFR32BG22 || SOC_SERIES_EFR32BG27 || SOC_SERIES_EFR32MG21
	help
	  Set if the Sleeptimer HAL module is used.

config SOC_SILABS_HFXO_MANAGER
	bool
	default y if PM && $(dt_nodelabel_enabled,sysrtc0) && $(dt_nodelabel_enabled,hfxo)
	help
	  Set if the HFXO Manager HAL module is used.

if PM

config SOC_GECKO_PM_BACKEND_PMGR
	bool
	depends on SOC_GECKO_DEV_INIT
	default y if SOC_FAMILY_SILABS_S2
	help
	  Implement PM using sl_power_manager service from Gecko SDK

config SOC_GECKO_PM_BACKEND_EMU
	bool
	default y if !SOC_GECKO_PM_BACKEND_PMGR
	help
	  Implement PM using direct calls to EMU driver in emlib

endif # PM

config SOC_GECKO_EMU_DCDC
	bool "SoC DC/DC regulator"
	select SOC_GECKO_EMU
	help
	  Enable the on chip DC/DC regulator

choice SOC_GECKO_EMU_DCDC_MODE
	prompt "DC/DC mode"
	depends on SOC_GECKO_EMU_DCDC
	help
	  Select power configuration mode of the on chip DC/DC converter.

	config SOC_GECKO_EMU_DCDC_MODE_UNCONFIGURED
		bool "Initial / Unconfigured"

	config SOC_GECKO_EMU_DCDC_MODE_ON
		bool "DC/DC On"

	config SOC_GECKO_EMU_DCDC_MODE_OFF
		bool "DC/DC Off"

	config SOC_GECKO_EMU_DCDC_MODE_BYPASS
		bool "Bypass"
endchoice

config CRYPTO_ACC_GECKO_TRNG
	bool
	help
	  Enable Entropy driver based on the CRYPTO_ACC module for Silicon Labs
	  Gecko chips.

config SOC_GECKO_DEV_INIT
	bool
	help
	  Use the device initialization routines from the device_init service
	  in Silicon Labs HAL. These routines initialize and tune HFXOs,
	  configures DPLLs and manages the Energy Management Unit.

	  Disabling these services may negatively impact counter and timer
	  routines in Silabs SoCs.

config COUNTER_GECKO_STIMER
	bool
	help
	  Enable counter driver based on the Sleep Timer driver for Silicon Labs
	  Gecko chips.

config SOC_GECKO_CMU
	bool
	help
	  Set if the clock management unit (CMU) is present in the SoC.

if SOC_GECKO_CMU

config CMU_NEED_LFXO
	bool
	help
	  Set if LFXO oscillator should be configured and enabled, potentially
	  in on-demand mode, after SoC is initialized.

choice
	prompt "High Frequency Clock Selection"
	default CMU_HFCLK_HFXO

config CMU_HFCLK_HFXO
	bool "External high frequency crystal oscillator"
	help
	  Set this option to use the external high frequency crystal oscillator
	  as high frequency clock.

config CMU_HFCLK_LFXO
	bool "External low frequency crystal oscillator"
	select CMU_NEED_LFXO
	help
	  Set this option to use the external low frequency crystal oscillator
	  as high frequency clock.

config CMU_HFCLK_HFRCO
	bool "Internal high frequency RC oscillator"
	help
	  Set this option to use the internal high frequency RC oscillator as high frequency clock.

endchoice

config CMU_HFXO_FREQ
	int "External high frequency oscillator frequency"
	help
	  Set the external high frequency oscillator frequency in Hz. This should be set by the
	  board's defconfig.

config CMU_LFXO_FREQ
	int "External low frequency oscillator frequency"
	help
	  Set the external low frequency oscillator frequency in Hz. This should be set by the
	  board's defconfig.

config CMU_HFRCO_FREQ
	int "Internal high frequency RC oscillator frequency"
	default 0
	depends on SOC_GECKO_HAS_HFRCO_FREQRANGE
	help
	  Set the internal high frequency RC oscillator frequency in Hz. This should be set by the
	  board's defconfig. Only supported values may be used here. Setting this to 0, skips the
	  configuration of the high frequency RC oscillator completely. This may be desired, if
	  the bootloader already configured it properly or the device's default clock source should
	  be used with it's default configuration.

endif # SOC_GECKO_CMU

config SOC_GECKO_HAS_INDIVIDUAL_PIN_LOCATION
	bool
	help
	  If enabled, indicates that SoC allows to configure individual pin
	  locations. This is supported by e.g. efr32fg1p, efr32mg12p series.
	  If disabled, indicates that pin locations are configured in groups.
	  This is supported by e.g. efm32hg, efm32wg series.

config SOC_GECKO_HAS_ERRATA_RTCC_E201
	bool
	help
	  Set if the SoC is affected by errata RTCC_E201:
	  "When the RTCC is configured with a prescaler, the CCV1 top value enable
	  feature enabled by setting CCV1TOP in RTCC_CTRL fails to wrap the counter
	  when RTCC_CNT is equal to RTCC_CC1_CCV, as intended."

config SOC_GECKO_HAS_HFRCO_FREQRANGE
	bool
	help
	  If enabled, indicates that configuration of HFRCO frequency for this SOC is supported
	  via FREQRANGE field. This is supported for e.g. efr32fg1p, efr32mg12p series.
	  If disabled, indicates that configuration of HFRCO frequency for corresponding SOC
	  is not supported via this field. This is the case for e.g. efm32hg, efm32wg series.

config SOC_GECKO_HAS_RADIO
	bool
	help
	  If enabled, indicates that the SoC has a Radio PHY.

config SOC_GECKO_USE_RAIL
	bool "Use RAIL (Radio Abstraction Interface Layer)"
	depends on SOC_GECKO_HAS_RADIO
	help
	  RAIL (Radio Abstraction Interface Layer) is a library needed to use the EFR radio
	  hardware. This option enable the proper set of features to allow to properly compile
	  with the RAIL blob.

config SOC_GECKO_CUSTOM_RADIO_PHY
	bool "Use RAIL for custom radio phy packet sending and receiving"
	depends on SOC_GECKO_HAS_RADIO
	select SOC_GECKO_USE_RAIL
	help
	  If enabled, RAIL can be used for user generated custom radio phy
	  management, sending and receiving packets on radio phy. User has
	  to provide the radio_config.c and radio_config.h files for the phy.

endif # SOC_FAMILY_SILABS_S0 || SOC_FAMILY_SILABS_S1 || SOC_FAMILY_SILABS_S2
