zephyr/soc/nordic/nrf53/Kconfig

348 lines
10 KiB
Plaintext

# Nordic Semiconductor nRF53 MCU line
# Copyright (c) 2019 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
config SOC_SERIES_NRF53X
bool
select ARM
select SOC_COMPATIBLE_NRF53X
select CPU_CORTEX_M33
select CPU_CORTEX_M_HAS_DWT
select CPU_HAS_ARM_MPU
imply XIP
select HAS_NRFX
select HAS_NORDIC_DRIVERS
select HAS_SEGGER_RTT if ZEPHYR_SEGGER_MODULE
select HAS_SWO
help
Enable support for NRF53 MCU series
config SOC_NRF5340_CPUAPP
select CPU_HAS_NRF_IDAU
select CPU_HAS_FPU
select ARMV8_M_DSP
select HAS_POWEROFF
select SOC_COMPATIBLE_NRF5340_CPUAPP
select SOC_NRF53_CPUNET_MGMT
imply SOC_NRF53_RTC_PRETICK
imply SOC_NRF53_ANOMALY_168_WORKAROUND
config SOC_NRF5340_CPUNET
select ARM_ON_EXIT_CPU_IDLE
select SOC_COMPATIBLE_NRF5340_CPUNET
imply SOC_NRF53_ANOMALY_160_WORKAROUND_NEEDED
imply SOC_NRF53_RTC_PRETICK if !WDT_NRFX
imply SOC_NRF53_ANOMALY_168_WORKAROUND
if SOC_SERIES_NRF53X
VREGMAIN_PATH := $(dt_nodelabel_path,vregmain)
VREGRADIO_PATH := $(dt_nodelabel_path,vregradio)
config SOC_NRF53_ANOMALY_160_WORKAROUND_NEEDED
bool "Workaround for nRF5340 anomaly 160"
imply SOC_NRF53_ANOMALY_160_WORKAROUND
default y if "$(dt_node_int_prop_int,$(VREGMAIN_PATH),regulator-initial-mode)" = 1
default y if "$(dt_node_int_prop_int,$(VREGRADIO_PATH),regulator-initial-mode)" = 1
help
Indicates that the workaround for the anomaly 160 that affects
the nRF5340 SoC should be applied.
This option is enabled by default for the Application MCU when
DC/DC mode is enabled for the VREGMAIN or VREGRADIO regulator
and always for the Network MCU.
If this option is enabled, but the workaround cannot be applied,
because the system clock is disabled, a related cmake warning is
issued.
config SOC_NRF53_ANOMALY_160_WORKAROUND
bool
depends on SYS_CLOCK_EXISTS
select ARM_ON_ENTER_CPU_IDLE_HOOK
config SOC_NRF53_ANOMALY_168_WORKAROUND
bool "Workaround for nRF5340 anomaly 168"
select ARM_ON_EXIT_CPU_IDLE
help
Indicates that the workaround for the anomaly 168 that affects
the nRF5340 SoC should be applied.
The workaround involves execution of 8 NOP instructions when the CPU
exist its idle state (when the WFI/WFE instruction returns) and it is
enabled by default for both the application and network core.
config SOC_NRF53_ANOMALY_168_WORKAROUND_FOR_EXECUTION_FROM_RAM
bool "Extend the workaround to execution at 128 MHz from RAM"
depends on SOC_NRF53_ANOMALY_168_WORKAROUND && SOC_NRF5340_CPUAPP
help
Indicates that the anomaly 168 workaround is to be extended to cover
also a specific case when the WFI/WFE instruction is executed at 128
MHz from RAM. Then, 26 instead of 8 NOP instructions needs to be
executed after WFI/WFE. This extension is not enabled by default.
config SOC_NRF53_RTC_PRETICK
bool "Pre-tick workaround for nRF5340 anomaly 165"
depends on (SYS_CLOCK_EXISTS && SOC_NRF5340_CPUNET) || SOC_NRF5340_CPUAPP
select NRFX_DPPI
select ARM_ON_ENTER_CPU_IDLE_HOOK if SOC_NRF5340_CPUNET
select ARM_ON_ENTER_CPU_IDLE_PREPARE_HOOK if SOC_NRF5340_CPUNET
help
Indicates that the pre-tick workaround for the anomaly 165 that affects
the nRF5340 SoC should be applied. The workaround applies to wake ups caused
by EVENTS_COMPARE and EVENTS_OVRFLW on RTC0 and RTC1 for which interrupts are
enabled through INTENSET register. The case when these events are generated
by EVTEN but without interrupts enabled through INTENSET is not handled.
The EVENTS_TICK event is not handled.
if SOC_NRF53_RTC_PRETICK
config SOC_NRF53_RTC_PRETICK_IPC_CH_FROM_NET
int "IPC 0 channel for RTC pretick"
range 0 15
default 10
config SOC_NRF53_RTC_PRETICK_IPC_CH_TO_NET
int "IPC 1 channel for RTC pretick"
range 0 15
default 11
endif
if SOC_NRF5340_CPUAPP
config SOC_DCDC_NRF53X_APP
bool
imply SOC_NRF53_ANOMALY_160_WORKAROUND_NEEDED
select DEPRECATED
help
This option is deprecated, use devicetree instead. Example
configuration:
&vregmain {
regulator-initial-mode = <NRF5X_REG_MODE_DCDC>;
};
Enable nRF53 series System on Chip Application MCU DC/DC converter.
config SOC_DCDC_NRF53X_NET
bool
imply SOC_NRF53_ANOMALY_160_WORKAROUND_NEEDED
select DEPRECATED
help
This option is deprecated, use devicetree instead. Example
configuration:
&vregradio {
regulator-initial-mode = <NRF5X_REG_MODE_DCDC>;
};
Enable nRF53 series System on Chip Network MCU DC/DC converter.
config SOC_DCDC_NRF53X_HV
bool
select DEPRECATED
help
This option is deprecated, use devicetree instead. Example
configuration:
&vregh {
status = "okay";
};
Enable nRF53 series System on Chip High Voltage DC/DC converter.
config NRF_SPU_FLASH_REGION_SIZE
hex
default 0x4000
help
FLASH region size for the NRF_SPU peripheral
config NRF_SPU_RAM_REGION_SIZE
hex
default 0x2000
help
RAM region size for the NRF_SPU peripheral
config SOC_NRF_GPIO_FORWARDER_FOR_NRF5340
bool "Forward GPIO pins to network core"
depends on NRF_SOC_SECURE_SUPPORTED
default y if $(dt_compat_enabled,$(DT_COMPAT_NORDIC_NRF_GPIO_FORWARDER))
help
Will forward configured pins with the forwarder compatible to the network core for usage.
config SOC_NRF53_CPUNET_MGMT
bool
select ONOFF
help
hidden option for including the nRF53 network CPU management
config SOC_NRF53_CPUNET_ENABLE
bool "NRF53 Network MCU is enabled at boot time"
default y if NRF_802154_SER_HOST
select SOC_NRF53_CPUNET_MGMT
help
This option enables releasing the Network 'force off' signal, which
as a consequence will power up the Network MCU during system boot.
Additionally, the option allocates GPIO pins that will be used by UARTE
of the Network MCU.
Note: GPIO pin allocation can only be configured by the secure Application
MCU firmware, so when this option is used with the non-secure version of
the board, the application needs to take into consideration, that the
secure firmware image must already have configured GPIO allocation for the
Network MCU.
config BOARD_ENABLE_CPUNET
bool "[DEPRECATED] NRF53 Network MCU is enabled at boot time"
select SOC_NRF53_CPUNET_ENABLE
select DEPRECATED
help
Use SOC_NRF53_CPUNET_ENABLE instead.
if !TRUSTED_EXECUTION_NONSECURE || BUILD_WITH_TFM
config SOC_ENABLE_LFXO
bool "LFXO"
select DEPRECATED
help
This option is deprecated, use DT instead. For this option to apply,
make sure to select either "internal" or "external" in the
load-capacitors property.
Enable the low-frequency oscillator (LFXO) functionality on XL1 and
XL2 pins.
This option must be enabled if either application or network core is
to use the LFXO. Otherwise, XL1 and XL2 pins will behave as regular
GPIOs.
choice SOC_LFXO_LOAD_CAPACITANCE
prompt "LFXO load capacitance"
depends on SOC_ENABLE_LFXO
config SOC_LFXO_CAP_EXTERNAL
bool "Use external load capacitors"
select DEPRECATED
help
This option is deprecated, use DT instead. Example configuration:
&lfxo {
load-capacitors = "external";
};
config SOC_LFXO_CAP_INT_6PF
bool "6 pF internal load capacitance"
select DEPRECATED
help
This option is deprecated, use DT instead. Example configuration:
&lfxo {
load-capacitors = "internal";
load-capacitance-picofarad = <6>;
};
config SOC_LFXO_CAP_INT_7PF
bool "7 pF internal load capacitance"
select DEPRECATED
help
This option is deprecated, use DT instead. Example configuration:
&lfxo {
load-capacitors = "internal";
load-capacitance-picofarad = <7>;
};
config SOC_LFXO_CAP_INT_9PF
bool "9 pF internal load capacitance"
select DEPRECATED
help
This option is deprecated, use DT instead. Example configuration:
&lfxo {
load-capacitors = "internal";
load-capacitance-picofarad = <9>;
};
endchoice
choice SOC_HFXO_LOAD_CAPACITANCE
prompt "HFXO load capacitance"
default SOC_HFXO_CAP_DEFAULT
config SOC_HFXO_CAP_DEFAULT
bool "SoC default"
help
This option is deprecated, use DT instead. For this configuration to
apply, no DT changes are required from the SoC DT file defaults.
When this option is used, the SoC initialization routine does not
touch the XOSC32MCAPS register value, so the default setting for
the SoC is in effect. Please note that this may not necessarily be
the reset value (0) for the register, as the register can be set
during the device trimming in the SystemInit() function.
config SOC_HFXO_CAP_EXTERNAL
bool "Use external load capacitors"
select DEPRECATED
help
This option is deprecated, use DT instead. Example configuration:
&hfxo {
load-capacitors = "external";
};
config SOC_HFXO_CAP_INTERNAL
bool "Use internal load capacitors"
depends on NRF_SOC_SECURE_SUPPORTED
select DEPRECATED
help
This option is deprecated, use DT instead. Example configuration:
&hfxo {
load-capacitors = "internal";
...
};
See CONFIG_SOC_HFXO_CAP_INT_VALUE_X2 for more information.
endchoice
config SOC_HFXO_CAP_INT_VALUE_X2
int "Doubled value of HFXO internal load capacitors (in pF)"
depends on SOC_HFXO_CAP_INTERNAL
range 14 40
help
This option is deprecated, use DT instead. Example configuration:
&hfxo {
load-capacitors = "internal";
load-capacitance-femtofarad = <7000>;
};
Internal capacitors ranging from 7.0 pF to 20.0 pF in 0.5 pF steps
can be enabled on pins XC1 and XC2. This option specifies doubled
capacitance value for the two capacitors. Set it to 14 to get 7.0 pF
for each capacitor, 15 to get 7.5 pF, and so on.
endif # !TRUSTED_EXECUTION_NONSECURE || BUILD_WITH_TFM
endif # SOC_NRF5340_CPUAPP
config NRF_ENABLE_CACHE
bool "Cache"
depends on (SOC_NRF5340_CPUAPP && (!TRUSTED_EXECUTION_NONSECURE || BUILD_WITH_TFM)) \
|| SOC_NRF5340_CPUNET
default y
help
Instruction and Data cache is available on nRF5340 CPUAPP
(Application MCU). It may only be accessed by Secure code.
Instruction cache only (I-Cache) is available in nRF5340
CPUNET (Network MCU).
config BUILD_WITH_TFM
# TF-M nRF53 platform enables the cache unconditionally.
select NRF_ENABLE_CACHE if SOC_NRF5340_CPUAPP
rsource "Kconfig.sync_rtc"
endif # SOC_SERIES_NRF53X