348 lines
10 KiB
Plaintext
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
|