kconfig: soc: adopt Nordic SoC series to support hw model v2 scheme

This commit adopts hw model v2 to nRF SoC family.

This ensures that when hw model v2 is used for an nRF51, nRF52, nRF53,
and nRF91 SoC series, so that all SoC selections are handled internally
by Kconfig, and no selection / re-configuration is possible by end-user
or through configuration files.

Hw model v2 requires the SoC to be self-contained, that is no
references are allowed out-side the SoC Kconfig tree.

All Zephyr Kconfig specifics are therefore sourced into the Zephyr
Kconfig tree through Kconfig.zephyr and Kconfig.zephyr.defconfig.

Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
This commit is contained in:
Jamie McCrae
2024-02-02 11:37:55 +00:00
committed by Carles Cufi
parent 3584b30fc1
commit c79f1b0d94
67 changed files with 302 additions and 241 deletions

View File

@@ -4,6 +4,9 @@ zephyr_library()
add_subdirectory(${SOC_SERIES})
add_subdirectory(common)
zephyr_include_directories(${SOC_SERIES})
set(SOC_LINKER_SCRIPT ${ZEPHYR_BASE}/include/zephyr/arch/arm/cortex_m/scripts/linker.ld CACHE INTERNAL "SoC Linker script")
zephyr_library_sources(
validate_base_addresses.c

View File

@@ -3,10 +3,14 @@
# Copyright (c) 2016-2018 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
# This file is contains Zephyr build system Kconfig references and is not
# re-usable outside the Zephyr tree.
config SOC_FAMILY_NRF
select SOC_COMPATIBLE_NRF
select PLATFORM_SPECIFIC_INIT
bool
rsource "*/Kconfig.series"
if SOC_FAMILY_NRF
config SOC_FAMILY
@@ -14,7 +18,7 @@ config SOC_FAMILY
default "nordic_nrf"
source "soc/common/nordic_nrf/Kconfig.peripherals"
source "soc/soc_legacy/arm/nordic_nrf/*/Kconfig.soc"
rsource "*/Kconfig.soc"
config NRF_SOC_SECURE_SUPPORTED
def_bool !TRUSTED_EXECUTION_NONSECURE || (BUILD_WITH_TFM && TFM_PARTITION_PLATFORM)

View File

@@ -5,7 +5,7 @@
if SOC_FAMILY_NRF
source "soc/soc_legacy/arm/nordic_nrf/*/Kconfig.defconfig.series"
rsource "*/Kconfig.defconfig.series"
# If the kernel has timer support, enable clock control
if SYS_CLOCK_EXISTS

View File

@@ -0,0 +1,47 @@
# Copyright (c) 2022 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
# This file contains Zephyr hw modul v2 Kconfig description for
# Nordic Semiconductor SoCs.
# The hw model v2 is generic and contains no Kconfig references outside its own
# tree structure and is therefore reusable in Kconfig trees outside a Zephyr build.
config SOC_SERIES
default "nrf51" if SOC_SERIES_NRF51X
default "nrf52" if SOC_SERIES_NRF52X
default "nrf53" if SOC_SERIES_NRF53X
default "nrf91" if SOC_SERIES_NRF91X
config SOC_FAMILY_NRF
bool
config SOC_FAMILY
string
default "nordic_nrf"
depends on SOC_FAMILY_NRF
config SOC_SERIES_NRF51X
bool
help
Enable support for NRF51 MCU series
config SOC_SERIES_NRF52X
bool
select SOC_FAMILY_NRF
help
Enable support for NRF52 MCU series
config SOC_SERIES_NRF53X
bool
select SOC_FAMILY_NRF
help
Enable support for NRF53 MCU series
config SOC_SERIES_NRF91X
bool
select SOC_FAMILY_NRF
help
Enable support for NRF91 MCU series
rsource "*/Kconfig.soc"

View File

@@ -6,11 +6,6 @@
if SOC_SERIES_NRF51X
source "soc/soc_legacy/arm/nordic_nrf/nrf51/Kconfig.defconfig.nrf51*"
config SOC_SERIES
default "nrf51"
config NUM_IRQS
default 26

View File

@@ -5,7 +5,6 @@
# SPDX-License-Identifier: Apache-2.0
config SOC_SERIES_NRF51X
bool "Nordic Semiconductor nRF51 series MCU"
select ARM
select CPU_CORTEX_M0
select SOC_FAMILY_NRF

View File

@@ -0,0 +1,28 @@
# Nordic Semiconductor nRF51 MCU line
# Copyright (c) 2016 Linaro Limited
# SPDX-License-Identifier: Apache-2.0
config SOC_NRF51822_QFAA
bool
select SOC_SERIES_NRF51X
config SOC_NRF51822_QFAB
bool
select SOC_SERIES_NRF51X
config SOC_NRF51822_QFAC
bool
select SOC_SERIES_NRF51X
config SOC
default "nRF51822_QFAA"
depends on SOC_NRF51822_QFAA
config SOC
default "nRF51822_QFAB"
depends on SOC_NRF51822_QFAB
config SOC
default "nRF51822_QFAC"
depends on SOC_NRF51822_QFAC

View File

@@ -1,87 +1,23 @@
# Nordic Semiconductor nRF52 MCU line
# Copyright (c) 2016-2019 Nordic Semiconductor ASA
# Copyright (c) 2016-2023 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
if SOC_SERIES_NRF52X
config SOC_NRF52805
bool
config SOC_NRF52810
bool
config SOC_NRF52811
bool
config SOC_NRF52820
bool
config SOC_NRF52832
bool
select CPU_CORTEX_M_HAS_DWT
select CPU_HAS_FPU
config SOC_NRF52833
bool
select SOC_COMPATIBLE_NRF52833
select CPU_CORTEX_M_HAS_DWT
select CPU_HAS_FPU
config SOC_NRF52840
bool
select CPU_CORTEX_M_HAS_DWT
select CPU_HAS_FPU
choice
prompt "nRF52x MCU Selection"
config SOC_NRF52805_CAAA
bool "NRF52805_CAAA"
select SOC_NRF52805
config SOC_NRF52810_QFAA
bool "NRF52810_QFAA"
select SOC_NRF52810
config SOC_NRF52811_QFAA
bool "NRF52811_QFAA"
select SOC_NRF52811
config SOC_NRF52820_QDAA
bool "NRF52820_QDAA"
select SOC_NRF52820
config SOC_NRF52832_CIAA
bool "NRF52832_CIAA"
select SOC_NRF52832
config SOC_NRF52832_QFAA
bool "NRF52832_QFAA"
select SOC_NRF52832
config SOC_NRF52832_QFAB
bool "NRF52832_QFAB"
select SOC_NRF52832
config SOC_NRF52833_QDAA
bool "NRF52833_QDAA"
select SOC_NRF52833
config SOC_NRF52833_QIAA
bool "NRF52833_QIAA"
select SOC_NRF52833
config SOC_NRF52840_QFAA
bool "NRF52840_QFAA"
select SOC_NRF52840
config SOC_NRF52840_QIAA
bool "NRF52840_QIAA"
select SOC_NRF52840
endchoice
config SOC_DCDC_NRF52X
bool
help

View File

@@ -5,9 +5,6 @@
if SOC_NRF52805_CAAA
config SOC
default "nRF52805_CAAA"
config NUM_IRQS
default 26

View File

@@ -5,9 +5,6 @@
if SOC_NRF52810_QFAA
config SOC
default "nRF52810_QFAA"
config NUM_IRQS
default 30

View File

@@ -5,9 +5,6 @@
if SOC_NRF52811_QFAA
config SOC
default "nRF52811_QFAA"
config NUM_IRQS
default 30

View File

@@ -5,10 +5,6 @@
if SOC_NRF52820_QDAA
config SOC
string
default "nRF52820_QDAA"
config NUM_IRQS
int
default 40

View File

@@ -5,9 +5,6 @@
if SOC_NRF52832_CIAA
config SOC
default "nRF52832_CIAA"
config NUM_IRQS
default 39

View File

@@ -5,9 +5,6 @@
if SOC_NRF52832_QFAA
config SOC
default "nRF52832_QFAA"
config NUM_IRQS
default 39

View File

@@ -5,9 +5,6 @@
if SOC_NRF52832_QFAB
config SOC
default "nRF52832_QFAB"
config NUM_IRQS
default 39

View File

@@ -5,10 +5,6 @@
if SOC_NRF52833_QIAA
config SOC
string
default "nRF52833_QIAA"
config NUM_IRQS
int
default 48

View File

@@ -5,9 +5,6 @@
if SOC_NRF52840_QIAA
config SOC
default "nRF52840_QIAA"
config NUM_IRQS
default 48

View File

@@ -5,10 +5,7 @@
if SOC_SERIES_NRF52X
source "soc/soc_legacy/arm/nordic_nrf/nrf52/Kconfig.defconfig.nrf52*"
config SOC_SERIES
default "nrf52"
rsource "Kconfig.defconfig.nrf52*"
# If the kernel has timer support, enable the timer
config NRF_RTC_TIMER

View File

@@ -4,7 +4,6 @@
# SPDX-License-Identifier: Apache-2.0
config SOC_SERIES_NRF52X
bool "Nordic Semiconductor nRF52 series MCU"
select ARM
select SOC_COMPATIBLE_NRF52X
select CPU_CORTEX_M4

View File

@@ -0,0 +1,105 @@
# Nordic Semiconductor nRF52 MCU line, Zephyr hw model v2 compliant
# Copyright (c) 2022-2023 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
config SOC_NRF52805
bool
select SOC_SERIES_NRF52X
config SOC_NRF52810
bool
select SOC_SERIES_NRF52X
config SOC_NRF52811
bool
select SOC_SERIES_NRF52X
config SOC_NRF52820
bool
select SOC_SERIES_NRF52X
config SOC_NRF52832
bool
select SOC_SERIES_NRF52X
config SOC_NRF52833
bool
select SOC_SERIES_NRF52X
config SOC_NRF52840
bool
select SOC_SERIES_NRF52X
config SOC_NRF52805_CAAA
bool
select SOC_NRF52805
config SOC_NRF52810_QFAA
bool
select SOC_NRF52810
config SOC_NRF52811_QFAA
bool
select SOC_NRF52811
config SOC_NRF52820_QDAA
bool
select SOC_NRF52820
config SOC_NRF52832_CIAA
bool
select SOC_NRF52832
config SOC_NRF52832_QFAA
bool
select SOC_NRF52832
config SOC_NRF52832_QFAB
bool
select SOC_NRF52832
config SOC_NRF52833_QIAA
bool
select SOC_NRF52833
config SOC_NRF52840_QIAA
bool
select SOC_NRF52840
config SOC
default "nRF52805_CAAA"
depends on SOC_NRF52805_CAAA
config SOC
default "nRF52840_QIAA"
depends on SOC_NRF52840_QIAA
config SOC
default "nRF52810_QFAA"
depends on SOC_NRF52810_QFAA
config SOC
default "nRF52811_QFAA"
depends on SOC_NRF52811_QFAA
config SOC
string
default "nRF52820_QDAA"
depends on SOC_NRF52820_QDAA
config SOC
default "nRF52832_CIAA"
depends on SOC_NRF52832_CIAA
config SOC
default "nRF52832_QFAA"
depends on SOC_NRF52832_QFAA
config SOC
default "nRF52832_QFAB"
depends on SOC_NRF52832_QFAB
config SOC
default "nRF52833_QIAA"
depends on SOC_NRF52833_QIAA

View File

@@ -4,8 +4,8 @@
# SPDX-License-Identifier: Apache-2.0
if SOC_SERIES_NRF53X
config SOC_NRF5340_CPUAPP
bool
select CPU_HAS_NRF_IDAU
select CPU_HAS_FPU
select ARMV8_M_DSP
@@ -15,25 +15,12 @@ config SOC_NRF5340_CPUAPP
imply SOC_NRF53_ANOMALY_168_WORKAROUND
config SOC_NRF5340_CPUNET
bool
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
choice
prompt "nRF53x MCU Selection"
config SOC_NRF5340_CPUAPP_QKAA
bool "NRF5340_CPUAPP_QKAA"
select SOC_NRF5340_CPUAPP
config SOC_NRF5340_CPUNET_QKAA
bool "NRF5340_CPUNET_QKAA"
select SOC_NRF5340_CPUNET
endchoice
config SOC_NRF53_ANOMALY_160_WORKAROUND_NEEDED
bool "Workaround for nRF5340 anomaly 160"
imply SOC_NRF53_ANOMALY_160_WORKAROUND
@@ -52,6 +39,25 @@ config SOC_NRF53_ANOMALY_160_WORKAROUND
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
@@ -80,25 +86,6 @@ config SOC_NRF53_RTC_PRETICK_IPC_CH_TO_NET
endif
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.
if SOC_NRF5340_CPUAPP
config SOC_DCDC_NRF53X_APP

View File

@@ -5,9 +5,6 @@
if SOC_NRF5340_CPUAPP_QKAA
config SOC
default "nRF5340_CPUAPP_QKAA"
config NUM_IRQS
default 69

View File

@@ -5,9 +5,6 @@
if SOC_NRF5340_CPUNET_QKAA
config SOC
default "nRF5340_CPUNET_QKAA"
config NUM_IRQS
default 30

View File

@@ -5,10 +5,7 @@
if SOC_SERIES_NRF53X
source "soc/soc_legacy/arm/nordic_nrf/nrf53/Kconfig.defconfig.nrf53*"
config SOC_SERIES
default "nrf53"
rsource "Kconfig.defconfig.nrf53*"
# If the kernel has timer support, enable the timer
config NRF_RTC_TIMER

View File

@@ -4,7 +4,7 @@
# SPDX-License-Identifier: Apache-2.0
config SOC_SERIES_NRF53X
bool "Nordic Semiconductor nRF53 series MCU"
bool "Nordic Semiconductor nRF53 series MCU" if "$(SOC_SCHEME)" = "v1"
select ARM
select SOC_COMPATIBLE_NRF53X
select CPU_CORTEX_M33

View File

@@ -0,0 +1,28 @@
# Nordic Semiconductor nRF52 MCU line, Zephyr hw model v2 compliant
# Copyright (c) 2023 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
config SOC_NRF5340_CPUAPP
bool
select SOC_SERIES_NRF53X
config SOC_NRF5340_CPUNET
bool
select SOC_SERIES_NRF53X
config SOC_NRF5340_CPUAPP_QKAA
bool
select SOC_NRF5340_CPUAPP
config SOC_NRF5340_CPUNET_QKAA
bool
select SOC_NRF5340_CPUNET
config SOC
default "nRF5340_CPUAPP_QKAA"
depends on SOC_NRF5340_CPUAPP_QKAA
config SOC
default "nRF5340_CPUNET_QKAA"
depends on SOC_NRF5340_CPUNET_QKAA

View File

@@ -0,0 +1,12 @@
# Nordic Semiconductor nRF91 MCU line
# Copyright (c) 2018 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
if SOC_SERIES_NRF91X
config NRF_ENABLE_ICACHE
bool "Instruction cache (I-Cache)"
default y
endif # SOC_SERIES_NRF91X

View File

@@ -5,9 +5,6 @@
if SOC_NRF9131_LACA
config SOC
default "nRF9131_LACA"
config NUM_IRQS
default 65

View File

@@ -5,9 +5,6 @@
if SOC_NRF9160_SICA
config SOC
default "nRF9160_SICA"
config NUM_IRQS
default 65

View File

@@ -5,9 +5,6 @@
if SOC_NRF9161_LACA
config SOC
default "nRF9161_LACA"
config NUM_IRQS
default 65

View File

@@ -5,10 +5,7 @@
if SOC_SERIES_NRF91X
source "soc/soc_legacy/arm/nordic_nrf/nrf91/Kconfig.defconfig.nrf91*"
config SOC_SERIES
default "nrf91"
rsource "Kconfig.defconfig.nrf91*"
# If the kernel has timer support, enable the timer
config NRF_RTC_TIMER

View File

@@ -4,7 +4,6 @@
# SPDX-License-Identifier: Apache-2.0
config SOC_SERIES_NRF91X
bool "Nordic Semiconductor nRF91 series MCU"
select ARM
select CPU_CORTEX_M33
select CPU_CORTEX_M_HAS_DWT
@@ -32,4 +31,8 @@ config NRF_SPU_RAM_REGION_SIZE
default 0x2000
help
RAM region size for the NRF_SPU peripheral
config NRF_ENABLE_ICACHE
bool "Instruction cache (I-Cache)"
default y
endif

View File

@@ -3,19 +3,16 @@
# Copyright (c) 2018 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
if SOC_SERIES_NRF91X
config SOC_NRF9120
bool
select SOC_SERIES_NRF91X
config SOC_NRF9160
bool
choice
prompt "nRF91x MCU Selection"
select SOC_SERIES_NRF91X
config SOC_NRF9160_SICA
bool "NRF9160_SICA"
bool
select SOC_NRF9160
# The nRF9161 is technically a SiP (System-in-Package) that consists of
@@ -27,21 +24,25 @@ config SOC_NRF9160_SICA
# options in Kconfig, for example) the nRF9161 term is used and nRF9120
# underneath.
config SOC_NRF9161_LACA
bool "NRF9161_LACA"
bool
select SOC_NRF9120
config SOC_NRF9131_LACA
bool "NRF9131_LACA"
bool
select SOC_NRF9120
config SOC_NRF9151_LACA
bool "NRF9151_LACA"
bool
select SOC_NRF9120
endchoice
config SOC
default "nRF9131_LACA"
depends on SOC_NRF9131_LACA
config NRF_ENABLE_ICACHE
bool "Instruction cache (I-Cache)"
default y
config SOC
default "nRF9160_SICA"
depends on SOC_NRF9160_SICA
endif # SOC_SERIES_NRF91X
config SOC
default "nRF9161_LACA"
depends on SOC_NRF9161_LACA

27
soc/nordic_nrf/soc.yml Normal file
View File

@@ -0,0 +1,27 @@
family:
- name: nordic_nrf
series:
- name: nrf51
socs:
- name: nrf51422
- name: nrf51822
- name: nrf52
socs:
- name: nrf52805
- name: nrf52810
- name: nrf52811
- name: nrf52820
- name: nrf52832
- name: nrf52833
- name: nrf52840
- name: nrf53
socs:
- name: nrf5340
cpuclusters:
- name: cpuapp
- name: cpunet
- name: nrf91
socs:
- name: nrf9160
- name: nrf9161
- name: nrf9131

View File

@@ -1,6 +0,0 @@
# Nordic Semiconductor nRFx MCU line
# Copyright (c) 2016-2018 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
source "soc/soc_legacy/arm/nordic_nrf/*/Kconfig.series"

View File

@@ -1,9 +0,0 @@
# Nordic Semiconductor nRF51822 MCU
# Copyright (c) 2016 Linaro Limited
# Copyright (c) 2016 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
config SOC
default "nRF51822_QFAA"
depends on SOC_NRF51822_QFAA

View File

@@ -1,9 +0,0 @@
# Nordic Semiconductor nRF51822 MCU
# Copyright (c) 2016 Linaro Limited
# Copyright (c) 2016 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
config SOC
default "nRF51822_QFAB"
depends on SOC_NRF51822_QFAB

View File

@@ -1,9 +0,0 @@
# Nordic Semiconductor nRF51822 MCU
# Copyright (c) 2016 Linaro Limited
# Copyright (c) 2016 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
config SOC
default "nRF51822_QFAC"
depends on SOC_NRF51822_QFAC

View File

@@ -1,19 +0,0 @@
# Nordic Semiconductor nRF51 MCU line
# Copyright (c) 2016 Linaro Limited
# SPDX-License-Identifier: Apache-2.0
choice
prompt "nRF51x MCU Selection"
depends on SOC_SERIES_NRF51X
config SOC_NRF51822_QFAA
bool "NRF51822_QFAA"
config SOC_NRF51822_QFAB
bool "NRF51822_QFAB"
config SOC_NRF51822_QFAC
bool "NRF51822_QFAC"
endchoice

View File

@@ -1,8 +0,0 @@
/*
* Copyright (c) 2023 TOKITA Hiroshi <tokita.hiroshi@fujitsu.com>
*
* SPDX-License-Identifier: Apache-2.0
*
*/
#include <zephyr/arch/arm/cortex_m/scripts/linker.ld>