Boot Linux faster!

Check our new training course

Boot Linux faster!

Check our new training course
and Creative Commons CC-BY-SA
lecture and lab materials

Bootlin logo

Elixir Cross Referencer

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

config SOC_FAMILY_EXX32
	bool
	select HAS_SEGGER_RTT
	select BUILD_OUTPUT_HEX

if SOC_FAMILY_EXX32
config SOC_FAMILY
	string
	default "silabs_exx32"

source "soc/arm/silabs_exx32/*/Kconfig.soc"

config SOC_PART_NUMBER
	string
	help
	  This string holds the full part number of the SoC. It is a hidden option
	  that you should not set directly. The part number selection choice defines
	  the default value for this string.

config SOC_GECKO_CORE
	bool
	default y
	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) 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_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_GECKO_EMU_DCDC
	bool "Enable 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 SOC_GECKO_CMU
	bool
	help
	  Set if the clock management unit (CMU) is present in the SoC.

if SOC_GECKO_CMU

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"
	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.

endif # SOC_FAMILY_EXX32