From 1a6611e53c6ee3dfac8413f74c98ef65c5ec8710 Mon Sep 17 00:00:00 2001 From: Seppo Takalo Date: Wed, 25 Mar 2026 16:29:13 +0200 Subject: [PATCH] [nrf fromtree] boards: nordic: Add nRF93M1 DK board Add build targets for nRF93M1 DK board which includes nRF54L15 as a host MCU. Bulk of the board definitions are copied from nRF54L15DK. Main differences: * The console UART is changed to uart20 as uart30 is routed to modem * Few GPIO hogs to control the modem and UART switches * nPM1300 PMIC set up to enable various voltages on board Signed-off-by: Seppo Takalo (cherry picked from commit 503c4ca327839949463690d98f36cf8d37f5e09b) --- boards/nordic/nrf93m1dk/Kconfig.defconfig | 69 +++++++++ boards/nordic/nrf93m1dk/Kconfig.nrf93m1dk | 7 + boards/nordic/nrf93m1dk/board.cmake | 19 +++ boards/nordic/nrf93m1dk/board.yml | 52 +++++++ .../nordic/nrf93m1dk/doc/img/nrf93m1_dk.webp | Bin 0 -> 13874 bytes boards/nordic/nrf93m1dk/doc/index.rst | 107 +++++++++++++ .../nrf93m1dk/nrf93m1dk_nrf54l15-pinctrl.dtsi | 101 +++++++++++++ .../nrf93m1dk/nrf93m1dk_nrf54l15_common.dtsi | 140 +++++++++++++++++ .../nrf93m1dk_nrf54l15_common_0_1_0.dtsi | 36 +++++ .../nrf93m1dk_nrf54l15_common_0_2_0.dtsi | 58 +++++++ .../nrf93m1dk_nrf54l15_common_0_3_0.dtsi | 58 +++++++ .../nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp.dts | 28 ++++ .../nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp.yaml | 24 +++ .../nrf93m1dk_nrf54l15_cpuapp_0_1_0.overlay | 7 + .../nrf93m1dk_nrf54l15_cpuapp_0_2_0.overlay | 7 + .../nrf93m1dk_nrf54l15_cpuapp_0_3_0.overlay | 7 + .../nrf93m1dk_nrf54l15_cpuapp_common.dtsi | 143 ++++++++++++++++++ .../nrf93m1dk_nrf54l15_cpuapp_defconfig | 18 +++ .../nrf93m1dk_nrf54l15_cpuapp_ns.dts | 32 ++++ .../nrf93m1dk_nrf54l15_cpuapp_ns.yaml | 23 +++ ...nrf93m1dk_nrf54l15_cpuapp_ns_0_1_0.overlay | 7 + ...nrf93m1dk_nrf54l15_cpuapp_ns_0_2_0.overlay | 7 + ...nrf93m1dk_nrf54l15_cpuapp_ns_0_3_0.overlay | 7 + .../nrf93m1dk_nrf54l15_cpuapp_ns_defconfig | 33 ++++ .../nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr.dts | 114 ++++++++++++++ .../nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr.yaml | 18 +++ .../nrf93m1dk_nrf54l15_cpuflpr_defconfig | 15 ++ .../nrf93m1dk_nrf54l15_cpuflpr_xip.dts | 12 ++ .../nrf93m1dk_nrf54l15_cpuflpr_xip.yaml | 18 +++ .../nrf93m1dk_nrf54l15_cpuflpr_xip_defconfig | 15 ++ dts/bindings/modem/nordic,nrf93m1.yaml | 16 ++ 31 files changed, 1198 insertions(+) create mode 100644 boards/nordic/nrf93m1dk/Kconfig.defconfig create mode 100644 boards/nordic/nrf93m1dk/Kconfig.nrf93m1dk create mode 100644 boards/nordic/nrf93m1dk/board.cmake create mode 100644 boards/nordic/nrf93m1dk/board.yml create mode 100644 boards/nordic/nrf93m1dk/doc/img/nrf93m1_dk.webp create mode 100644 boards/nordic/nrf93m1dk/doc/index.rst create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15-pinctrl.dtsi create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_common.dtsi create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_common_0_1_0.dtsi create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_common_0_2_0.dtsi create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_common_0_3_0.dtsi create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp.dts create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp.yaml create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_0_1_0.overlay create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_0_2_0.overlay create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_0_3_0.overlay create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_common.dtsi create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_defconfig create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns.dts create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns.yaml create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns_0_1_0.overlay create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns_0_2_0.overlay create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns_0_3_0.overlay create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns_defconfig create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr.dts create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr.yaml create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr_defconfig create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr_xip.dts create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr_xip.yaml create mode 100644 boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr_xip_defconfig create mode 100644 dts/bindings/modem/nordic,nrf93m1.yaml diff --git a/boards/nordic/nrf93m1dk/Kconfig.defconfig b/boards/nordic/nrf93m1dk/Kconfig.defconfig new file mode 100644 index 000000000000..faaceb735e7b --- /dev/null +++ b/boards/nordic/nrf93m1dk/Kconfig.defconfig @@ -0,0 +1,69 @@ +# Copyright (c) 2026 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +config HW_STACK_PROTECTION + default ARCH_HAS_STACK_PROTECTION + +if SPI_NOR + +config SPI_NOR_FLASH_LAYOUT_PAGE_SIZE + default 4096 if MCUBOOT || BOOTLOADER_MCUBOOT + +endif # SPI_NOR + +if BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS + +config BOARD_NRF93M1DK + select USE_DT_CODE_PARTITION if BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS + +# By default, if we build for a Non-Secure version of the board, +# enable building with TF-M as the Secure Execution Environment. +config BUILD_WITH_TFM + default y + +# If building with TF-M, disable UART in TF-M to avoid conflicts with +# the UART used by the modem +if BUILD_WITH_TFM + +config TFM_SECURE_UART + default n + +config TFM_LOG_LEVEL_SILENCE + default y + +endif # BUILD_WITH_TFM + +endif # BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS + +if BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS || BOARD_NRF93M1DK_NRF54L15_CPUAPP + +# Configure default init priority: +# 1. I2C (CONFIG_I2C_INIT_PRIORITY, default 50) +# 2. NPM13xx MFD (CONFIG_MFD_INIT_PRIORITY, default 80) +# 3. NPM13xx charger (CONFIG_SENSOR_INIT_PRIORITY, default 90) +# 4. Power domain GPIO (CONFIG_POWER_DOMAIN_GPIO_INIT_PRIORITY, default was 75) +# 5. Cellular modem (CONFIG_MODEM_CELLULAR_INIT_PRIORITY, default was 79) +# +# The order of 3, 4 and 5 is critical to ensure that the Vbus current limit +# is set before the modem is initialized. + +config POWER_DOMAIN_GPIO_INIT_PRIORITY + default 92 + +config MODEM_CELLULAR_INIT_PRIORITY + default 93 + +if !MCUBOOT + +config REGULATOR + default y + +config SENSOR + default y + +config POWER_DOMAIN + default y + +endif # !MCUBOOT + +endif # BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS || BOARD_NRF93M1DK_NRF54L15_CPUAPP diff --git a/boards/nordic/nrf93m1dk/Kconfig.nrf93m1dk b/boards/nordic/nrf93m1dk/Kconfig.nrf93m1dk new file mode 100644 index 000000000000..e656109fe09b --- /dev/null +++ b/boards/nordic/nrf93m1dk/Kconfig.nrf93m1dk @@ -0,0 +1,7 @@ +# Copyright (c) 2026 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_NRF93M1DK + select SOC_NRF54L15_CPUAPP if BOARD_NRF93M1DK_NRF54L15_CPUAPP || BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS + select SOC_NRF54L15_CPUFLPR if BOARD_NRF93M1DK_NRF54L15_CPUFLPR || \ + BOARD_NRF93M1DK_NRF54L15_CPUFLPR_XIP diff --git a/boards/nordic/nrf93m1dk/board.cmake b/boards/nordic/nrf93m1dk/board.cmake new file mode 100644 index 000000000000..9134e6b7d290 --- /dev/null +++ b/boards/nordic/nrf93m1dk/board.cmake @@ -0,0 +1,19 @@ +# Copyright (c) 2026 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +if(CONFIG_SOC_NRF54L15_CPUAPP) + board_runner_args(jlink "--device=nRF54L15_M33" "--speed=4000") +elseif(CONFIG_SOC_NRF54L15_CPUFLPR) + board_runner_args(jlink "--device=nRF54L15_RV32") +endif() + +if(CONFIG_TRUSTED_EXECUTION_NONSECURE) + set(TFM_PUBLIC_KEY_FORMAT "full") +endif() + +if(CONFIG_TFM_FLASH_MERGED_BINARY) + set_property(TARGET runners_yaml_props_target PROPERTY hex_file tfm_merged.hex) +endif() + +include(${ZEPHYR_BASE}/boards/common/nrfutil.board.cmake) +include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/boards/nordic/nrf93m1dk/board.yml b/boards/nordic/nrf93m1dk/board.yml new file mode 100644 index 000000000000..14d9bba33431 --- /dev/null +++ b/boards/nordic/nrf93m1dk/board.yml @@ -0,0 +1,52 @@ +board: + name: nrf93m1dk + full_name: nRF93M1 DK + vendor: nordic + revision: + format: major.minor.patch + default: "0.3.0" + revisions: + - name: "0.1.0" + - name: "0.2.0" + - name: "0.3.0" + socs: + - name: nrf54l15 + variants: + - name: xip + cpucluster: cpuflpr + - name: ns + cpucluster: cpuapp +runners: + run_once: + '--recover': + - runners: + - nrfutil + run: first + groups: + - boards: + - nrf93m1dk/nrf54l15/cpuapp + - nrf93m1dk/nrf54l15/cpuapp/ns + - nrf93m1dk/nrf54l15/cpuflpr + - nrf93m1dk/nrf54l15/cpuflpr/xip + '--erase': + - runners: + - jlink + - nrfutil + run: first + groups: + - boards: + - nrf93m1dk/nrf54l15/cpuapp + - nrf93m1dk/nrf54l15/cpuapp/ns + - nrf93m1dk/nrf54l15/cpuflpr + - nrf93m1dk/nrf54l15/cpuflpr/xip + '--reset': + - runners: + - jlink + - nrfutil + run: last + groups: + - boards: + - nrf93m1dk/nrf54l15/cpuapp + - nrf93m1dk/nrf54l15/cpuapp/ns + - nrf93m1dk/nrf54l15/cpuflpr + - nrf93m1dk/nrf54l15/cpuflpr/xip diff --git a/boards/nordic/nrf93m1dk/doc/img/nrf93m1_dk.webp b/boards/nordic/nrf93m1dk/doc/img/nrf93m1_dk.webp new file mode 100644 index 0000000000000000000000000000000000000000..988a0e496ad9519081902cc9a386a264bd76356c GIT binary patch literal 13874 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, + ; + }; + + group2 { + psels = , + ; + bias-pull-up; + }; + }; + + /omit-if-no-ref/ uart20_sleep: uart20_sleep { + group1 { + psels = , + , + , + ; + low-power-enable; + }; + }; + + /omit-if-no-ref/ uart30_default: uart30_default { + group1 { + psels = , + ; + }; + + group2 { + psels = , + ; + bias-pull-up; + }; + }; + + /omit-if-no-ref/ uart30_sleep: uart30_sleep { + group1 { + psels = , + , + , + ; + low-power-enable; + }; + }; + + /omit-if-no-ref/ spi00_default: spi00_default { + group1 { + psels = , + , + ; + }; + }; + + /omit-if-no-ref/ spi00_sleep: spi00_sleep { + group1 { + psels = , + , + ; + low-power-enable; + }; + }; + + /omit-if-no-ref/ grtc_default: grtc_default { + group1 { + psels = , + ; + }; + }; + + /omit-if-no-ref/ grtc_sleep: grtc_sleep { + group1 { + psels = , + ; + low-power-enable; + }; + }; + + /omit-if-no-ref/ i2c21_default: i2c21_default { + group1 { + psels = , + ; + bias-pull-up; + }; + }; + + /omit-if-no-ref/ i2c21_sleep: i2c21_sleep { + group1 { + psels = , + ; + low-power-enable; + }; + }; +}; diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_common.dtsi b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_common.dtsi new file mode 100644 index 000000000000..761b9bd11ab2 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_common.dtsi @@ -0,0 +1,140 @@ +/* + * Copyright (c) 2026 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "nrf93m1dk_nrf54l15-pinctrl.dtsi" +#include + +/ { + leds { + compatible = "gpio-leds"; + status = "okay"; + + led0: led_0 { + gpios = <&gpio2 9 GPIO_ACTIVE_HIGH>; + label = "Blue LED"; + }; + + led1: led_1 { + gpios = <&gpio2 8 GPIO_ACTIVE_HIGH>; + label = "Red LED"; + }; + + led2: led_2 { + gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>; + label = "Green LED"; + }; + }; + + buttons { + compatible = "gpio-keys"; + status = "okay"; + + button0: button_0 { + gpios = <&gpio0 4 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + label = "Push button 0"; + zephyr,code = ; + }; + }; + + aliases { + led0 = &led0; + led1 = &led1; + led2 = &led2; + sw0 = &button0; + watchdog0 = &wdt31; + i2c-controller = &i2c21; + modem-uart = &uart30; + battery = &npm1300_charger; + modem = &modem; + }; +}; + +&gpio1 { + modem-reset { + gpio-hog; + gpios = <12 GPIO_ACTIVE_HIGH>; + output-low; + }; + + modem-powerkey { + gpio-hog; + gpios = <13 GPIO_ACTIVE_HIGH>; + output-low; + }; +}; + +&uart20 { + current-speed = <115200>; + pinctrl-0 = <&uart20_default>; + pinctrl-1 = <&uart20_sleep>; + pinctrl-names = "default", "sleep"; +}; + +&uart30 { + status = "okay"; + current-speed = <115200>; + hw-flow-control; + pinctrl-0 = <&uart30_default>; + pinctrl-1 = <&uart30_sleep>; + pinctrl-names = "default", "sleep"; +}; + +&i2c21 { + pinctrl-0 = <&i2c21_default>; + pinctrl-1 = <&i2c21_sleep>; + pinctrl-names = "default", "sleep"; + zephyr,concat-buf-size = <256>; + status = "okay"; + + pmic_main: npm1300@6b { + compatible = "nordic,npm1300"; + status = "okay"; + reg = <0x6b>; + + regulators { + compatible = "nordic,npm1300-regulator"; + status = "okay"; + + /* Main 1.8 V regulator */ + vdd_nrf: BUCK1 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + }; + + vdd_dbgr: BUCK2 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + }; + + /* LDO1 is used for powering the LEDs and level shifters */ + ldo1_3v3: LDO1 { + regulator-initial-mode = ; + regulator-allowed-modes = ; + regulator-init-microvolt = <3300000>; + regulator-boot-on; + }; + }; + + npm1300_charger: charger { + compatible = "nordic,npm1300-charger"; + status = "okay"; + vbus-limit-microamp = <1500000>; + /* Battery specs from LiPol LP803448 datasheet (Dwg. nr. FD_3245_70) */ + term-microvolt = <4200000>; + current-microamp = <675000>; /* 0.5C charging current */ + dischg-limit-microamp = <1000000>; /* Maximum value for PMIC */ + thermistor-cold-millidegrees = <0>; + thermistor-cool-millidegrees = <0>; + thermistor-warm-millidegrees = <45000>; + thermistor-hot-millidegrees = <45000>; + thermistor-ohms = <10000>; + thermistor-beta = <3435>; + charging-enable; + }; + }; +}; diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_common_0_1_0.dtsi b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_common_0_1_0.dtsi new file mode 100644 index 000000000000..95b082461fc8 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_common_0_1_0.dtsi @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2026 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "nrf93m1dk_nrf54l15_common.dtsi" + +/ { + buttons { + /* Override button0 with different GPIO */ + button0: button_0 { + gpios = <&gpio1 2 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + label = "Push button 0"; + zephyr,code = ; + }; + + button1: button_1 { + gpios = <&gpio1 3 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + label = "Push button 1"; + zephyr,code = ; + }; + }; + + aliases { + sw1 = &button1; + }; +}; + +&uart30 { + modem: modem { + compatible = "nordic,nrf93m1"; + mdm-power-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>; + mdm-reset-gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>; + }; +}; diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_common_0_2_0.dtsi b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_common_0_2_0.dtsi new file mode 100644 index 000000000000..9ca728961038 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_common_0_2_0.dtsi @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2026 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "nrf93m1dk_nrf54l15_common.dtsi" + +/ { + buttons { + button1: button_1 { + gpios = <&gpio1 9 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + label = "Push button 1"; + zephyr,code = ; + }; + }; + + modem_dcdc: modem_dcdc { + compatible = "power-domain-gpio"; + enable-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>; + #power-domain-cells = <0>; + startup-delay-us = <100000>; /* wait for 100ms to stabilize dcdc supply */ + off-on-delay-us = <500000>; /* wait for 500ms to stabilize main supply */ + }; + + aliases { + sw1 = &button1; + }; +}; + +&gpio1 { + status = "okay"; + + modem-usb-boot { + gpio-hog; + gpios = <0 GPIO_ACTIVE_HIGH>; + output-low; + }; +}; + +&gpio2 { + status = "okay"; + + modem_uart_switch: modem-uart-switch { + gpio-hog; + gpios = <6 GPIO_ACTIVE_HIGH>; + output-high; + }; +}; + +&uart30 { + modem: modem { + compatible = "nordic,nrf93m1"; + power-domains = <&modem_dcdc>; + mdm-power-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>; + mdm-reset-gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>; + }; +}; diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_common_0_3_0.dtsi b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_common_0_3_0.dtsi new file mode 100644 index 000000000000..9ca728961038 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_common_0_3_0.dtsi @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2026 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "nrf93m1dk_nrf54l15_common.dtsi" + +/ { + buttons { + button1: button_1 { + gpios = <&gpio1 9 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + label = "Push button 1"; + zephyr,code = ; + }; + }; + + modem_dcdc: modem_dcdc { + compatible = "power-domain-gpio"; + enable-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>; + #power-domain-cells = <0>; + startup-delay-us = <100000>; /* wait for 100ms to stabilize dcdc supply */ + off-on-delay-us = <500000>; /* wait for 500ms to stabilize main supply */ + }; + + aliases { + sw1 = &button1; + }; +}; + +&gpio1 { + status = "okay"; + + modem-usb-boot { + gpio-hog; + gpios = <0 GPIO_ACTIVE_HIGH>; + output-low; + }; +}; + +&gpio2 { + status = "okay"; + + modem_uart_switch: modem-uart-switch { + gpio-hog; + gpios = <6 GPIO_ACTIVE_HIGH>; + output-high; + }; +}; + +&uart30 { + modem: modem { + compatible = "nordic,nrf93m1"; + power-domains = <&modem_dcdc>; + mdm-power-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>; + mdm-reset-gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>; + }; +}; diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp.dts b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp.dts new file mode 100644 index 000000000000..007e60a00cd4 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp.dts @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2026 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include "nrf93m1dk_nrf54l15_cpuapp_common.dtsi" + +/ { + compatible = "nordic,nrf93m1dk_nrf54l15-cpuapp"; + model = "Nordic nRF93M1 DK nRF54L15 Application MCU"; + + chosen { + zephyr,code-partition = &slot0_partition; + zephyr,sram = &cpuapp_sram; + }; +}; + +/* Workaround, because buttons are connected to NFC1 & NFC2 */ +&uicr { + nfct-pins-as-gpios; +}; + +/* Include default memory partition configuration file */ +#include diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp.yaml b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp.yaml new file mode 100644 index 000000000000..ec7115e8a686 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp.yaml @@ -0,0 +1,24 @@ +# Copyright (c) 2026 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +identifier: nrf93m1dk/nrf54l15/cpuapp +name: nRF93M1-EK-nRF54l15-Application +type: mcu +arch: arm +toolchain: + - gnuarmemb + - zephyr +sysbuild: true +ram: 256 +flash: 712 +supported: + - adc + - counter + - dmic + - gpio + - i2c + - pwm + - retained_mem + - spi + - watchdog + - i2s diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_0_1_0.overlay b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_0_1_0.overlay new file mode 100644 index 000000000000..c20e043eaaa2 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_0_1_0.overlay @@ -0,0 +1,7 @@ +/* + * Copyright (c) 2026 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "nrf93m1dk_nrf54l15_common_0_1_0.dtsi" diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_0_2_0.overlay b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_0_2_0.overlay new file mode 100644 index 000000000000..f923789908fa --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_0_2_0.overlay @@ -0,0 +1,7 @@ +/* + * Copyright (c) 2026 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "nrf93m1dk_nrf54l15_common_0_2_0.dtsi" diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_0_3_0.overlay b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_0_3_0.overlay new file mode 100644 index 000000000000..c2cc3da41ae8 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_0_3_0.overlay @@ -0,0 +1,7 @@ +/* + * Copyright (c) 2026 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "nrf93m1dk_nrf54l15_common_0_3_0.dtsi" diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_common.dtsi b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_common.dtsi new file mode 100644 index 000000000000..d943766e6a73 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_common.dtsi @@ -0,0 +1,143 @@ +/* + * Copyright (c) 2026 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/* This file is common to the secure and non-secure domain */ + +/ { + chosen { + zephyr,console = &uart20; + zephyr,shell-uart = &uart20; + zephyr,uart-mcumgr = &uart20; + zephyr,bt-mon-uart = &uart20; + zephyr,bt-c2h-uart = &uart20; + zephyr,flash-controller = &rram_controller; + zephyr,flash = &cpuapp_rram; + zephyr,ieee802154 = &ieee802154; + zephyr,boot-mode = &boot_mode0; + }; + + aliases { + mcuboot-button0 = &button0; + mcuboot-led0 = &led0; + }; +}; + +&cpuapp_sram { + status = "okay"; +}; + +&lfxo { + load-capacitors = "internal"; + load-capacitance-femtofarad = <17000>; +}; + +&hfxo { + load-capacitors = "internal"; + load-capacitance-femtofarad = <15000>; +}; + +®ulators { + status = "okay"; +}; + +&vregmain { + status = "okay"; + regulator-initial-mode = ; +}; + +&grtc { + owned-channels = <0 1 2 3 4 5 6 7 8 9 10 11>; + /* Channels 7-11 reserved for Zero Latency IRQs, 3-4 for FLPR */ + child-owned-channels = <3 4 7 8 9 10 11>; + status = "okay"; +}; + +&uart20 { + status = "okay"; + label = "uart1"; +}; + +&nfct { + status = "okay"; +}; + +&gpio0 { + status = "okay"; + label = "gpio0"; +}; + +&gpio1 { + status = "okay"; + label = "gpio1"; +}; + +&gpio2 { + status = "okay"; + label = "gpio2"; +}; + +&gpiote20 { + status = "okay"; +}; + +&gpiote30 { + status = "okay"; +}; + +&radio { + status = "okay"; +}; + +&ieee802154 { + status = "okay"; +}; + +&temp { + status = "okay"; +}; + +&clock { + status = "okay"; +}; + +&gpregret1 { + status = "okay"; + + boot_mode0: boot_mode@0 { + compatible = "zephyr,retention"; + status = "okay"; + reg = <0x0 0x1>; + }; +}; + +&spi00 { + status = "okay"; + cs-gpios = <&gpio2 5 GPIO_ACTIVE_LOW>; + pinctrl-0 = <&spi00_default>; + pinctrl-1 = <&spi00_sleep>; + pinctrl-names = "default", "sleep"; + + mx25r64: mx25r6435f@0 { + compatible = "jedec,spi-nor"; + status = "okay"; + reg = <0>; + spi-max-frequency = <8000000>; + jedec-id = [c2 28 17]; + sfdp-bfp = [e5 20 f1 ff ff ff ff 03 44 eb 08 6b 08 3b 04 bb + ee ff ff ff ff ff 00 ff ff ff 00 ff 0c 20 0f 52 + 10 d8 00 ff 23 72 f5 00 82 ed 04 cc 44 83 48 44 + 30 b0 30 b0 f7 c4 d5 5c 00 be 29 ff f0 d0 ff ff]; + size = <67108864>; + has-dpd; + t-enter-dpd = <10000>; + t-exit-dpd = <35000>; + reset-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>; + }; +}; + +&adc { + status = "okay"; +}; diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_defconfig b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_defconfig new file mode 100644 index 000000000000..2b73ed5427d7 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_defconfig @@ -0,0 +1,18 @@ +# Copyright (c) 2026 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +# DK does no have 32kHz crystal, use the internal RC oscillator +CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y + +# Enable UART driver +CONFIG_SERIAL=y + +# Enable console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +# Enable GPIO +CONFIG_GPIO=y + +# Enable MPU +CONFIG_ARM_MPU=y diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns.dts b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns.dts new file mode 100644 index 000000000000..067839bb5c4e --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns.dts @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2026 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#define USE_NON_SECURE_ADDRESS_MAP 1 + +#include +#include "nrf93m1dk_nrf54l15_cpuapp_common.dtsi" + +/ { + compatible = "nordic,nrf93m1dk_nrf54l15-cpuapp"; + model = "Nordic nRF93M1 DK nRF54L15 Application MCU"; + + chosen { + zephyr,code-partition = &slot0_ns_partition; + zephyr,sram = &sram0_ns; + zephyr,entropy = &psa_rng; + }; + + /delete-node/ rng; + + psa_rng: psa-rng { + status = "okay"; + }; +}; + +/* Include default memory partition configuration file */ +#include diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns.yaml b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns.yaml new file mode 100644 index 000000000000..e0e7008b8468 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns.yaml @@ -0,0 +1,23 @@ +# Copyright (c) 2026 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +identifier: nrf93m1dk/nrf54l15/cpuapp/ns +name: nRF93M1-EK-nRF54l15-Application-Non-Secure +type: mcu +arch: arm +toolchain: + - gnuarmemb + - zephyr +ram: 256 +flash: 940 +supported: + - adc + - gpio + - i2c + - spi + - counter + - watchdog + - adc + - i2s +vendor: nordic +sysbuild: true diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns_0_1_0.overlay b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns_0_1_0.overlay new file mode 100644 index 000000000000..c20e043eaaa2 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns_0_1_0.overlay @@ -0,0 +1,7 @@ +/* + * Copyright (c) 2026 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "nrf93m1dk_nrf54l15_common_0_1_0.dtsi" diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns_0_2_0.overlay b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns_0_2_0.overlay new file mode 100644 index 000000000000..f923789908fa --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns_0_2_0.overlay @@ -0,0 +1,7 @@ +/* + * Copyright (c) 2026 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "nrf93m1dk_nrf54l15_common_0_2_0.dtsi" diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns_0_3_0.overlay b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns_0_3_0.overlay new file mode 100644 index 000000000000..c2cc3da41ae8 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns_0_3_0.overlay @@ -0,0 +1,7 @@ +/* + * Copyright (c) 2026 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "nrf93m1dk_nrf54l15_common_0_3_0.dtsi" diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns_defconfig b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns_defconfig new file mode 100644 index 000000000000..1ba18d601223 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuapp_ns_defconfig @@ -0,0 +1,33 @@ +# Copyright (c) 2026 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +# DK does no have 32kHz crystal, use the internal RC oscillator +CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y + +CONFIG_ARM_MPU=y +CONFIG_ARM_TRUSTZONE_M=y + +# This Board implies building Non-Secure firmware +CONFIG_TRUSTED_EXECUTION_NONSECURE=y + +# Don't enable the cache in the non-secure image as it is a +# secure-only peripheral on 54l +CONFIG_CACHE_MANAGEMENT=n +CONFIG_EXTERNAL_CACHE=n + +CONFIG_UART_CONSOLE=y +CONFIG_CONSOLE=y +CONFIG_SERIAL=y +CONFIG_GPIO=y + +# Disable TFM BL2 since it is not supported +CONFIG_TFM_BL2=n + +# The oscillators are configured as secure and cannot be configured +# from the non secure application directly. This needs to be set +# otherwise nrfx will try to configure them, resulting in a bus +# fault. +CONFIG_NRF_SKIP_CLOCK_CONFIG=y + +CONFIG_TFM_SECURE_UART=n +CONFIG_TFM_LOG_LEVEL_SILENCE=y diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr.dts b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr.dts new file mode 100644 index 000000000000..77b45189e2b1 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr.dts @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2026 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include +#include "nrf93m1dk_nrf54l15-pinctrl.dtsi" + +/ { + model = "Nordic nRF93M1 DK nRF54L15 FLPR MCU"; + compatible = "nordic,nrf93m1dk_nrf54l15-cpuflpr"; + + leds { + compatible = "gpio-leds"; + status = "okay"; + + led0: led_0 { + gpios = <&gpio2 9 GPIO_ACTIVE_HIGH>; + label = "Blue LED"; + }; + + led1: led_1 { + gpios = <&gpio2 8 GPIO_ACTIVE_HIGH>; + label = "Red LED"; + }; + + led2: led_2 { + gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>; + label = "Green LED"; + }; + }; + + buttons { + compatible = "gpio-keys"; + status = "okay"; + + button0: button_0 { + gpios = <&gpio0 4 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + label = "Push button 0"; + zephyr,code = ; + }; + + button1: button_1 { + gpios = <&gpio1 9 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + label = "Push button 1"; + zephyr,code = ; + }; + }; + + aliases { + led0 = &led0; + led1 = &led1; + led2 = &led2; + sw0 = &button0; + sw1 = &button1; + }; + + chosen { + zephyr,console = &uart20; + zephyr,shell-uart = &uart20; + zephyr,code-partition = &cpuflpr_code_partition; + zephyr,flash = &cpuflpr_rram; + zephyr,sram = &cpuflpr_sram; + }; +}; + +&cpuflpr_rram { + partitions { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + cpuflpr_code_partition: partition@0 { + compatible = "zephyr,mapped-partition"; + label = "image-0"; + reg = <0x0 DT_SIZE_K(96)>; + }; + }; +}; + +&grtc { + owned-channels = <3 4>; + status = "okay"; +}; + +&uart20 { + status = "okay"; + current-speed = <115200>; + pinctrl-0 = <&uart20_default>; + pinctrl-1 = <&uart20_sleep>; + pinctrl-names = "default", "sleep"; +}; + +&gpio0 { + status = "okay"; +}; + +&gpio1 { + status = "okay"; +}; + +&gpio2 { + status = "okay"; +}; + +&gpiote20 { + status = "okay"; +}; + +&gpiote30 { + status = "okay"; +}; diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr.yaml b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr.yaml new file mode 100644 index 000000000000..4b76c9bf6f77 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr.yaml @@ -0,0 +1,18 @@ +# Copyright (c) 2026 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +identifier: nrf93m1dk/nrf54l15/cpuflpr +name: nRF93M1-EK-nRF54L15-Fast-Lightweight-Peripheral-Processor +type: mcu +arch: riscv +toolchain: + - zephyr +sysbuild: true +ram: 96 +flash: 96 +supported: + - counter + - gpio + - i2c + - spi + - watchdog diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr_defconfig b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr_defconfig new file mode 100644 index 000000000000..2655e5d38e66 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr_defconfig @@ -0,0 +1,15 @@ +# Copyright (c) 2026 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +# Enable UART driver +CONFIG_SERIAL=y + +# Enable console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +# Enable GPIO +CONFIG_GPIO=y + +# Execute from SRAM +CONFIG_XIP=n diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr_xip.dts b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr_xip.dts new file mode 100644 index 000000000000..48456e4d13d1 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr_xip.dts @@ -0,0 +1,12 @@ +/* + * Copyright (c) 2026 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "nrf93m1dk_nrf54l15_cpuflpr.dts" + +&cpuflpr_sram { + reg = <0x2002f000 DT_SIZE_K(68)>; + ranges = <0x0 0x2002f000 0x11000>; +}; diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr_xip.yaml b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr_xip.yaml new file mode 100644 index 000000000000..265b2a0a74c6 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr_xip.yaml @@ -0,0 +1,18 @@ +# Copyright (c) 2026 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +identifier: nrf93m1dk/nrf54l15/cpuflpr/xip +name: nRF93M1-EK-nRF54L15-Fast-Lightweight-Peripheral-Processor (RRAM XIP) +type: mcu +arch: riscv +toolchain: + - zephyr +sysbuild: true +ram: 68 +flash: 96 +supported: + - counter + - gpio + - i2c + - spi + - watchdog diff --git a/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr_xip_defconfig b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr_xip_defconfig new file mode 100644 index 000000000000..1a717de7cbb9 --- /dev/null +++ b/boards/nordic/nrf93m1dk/nrf93m1dk_nrf54l15_cpuflpr_xip_defconfig @@ -0,0 +1,15 @@ +# Copyright (c) 2026 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +# Enable UART driver +CONFIG_SERIAL=y + +# Enable console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +# Enable GPIO +CONFIG_GPIO=y + +# Execute from RRAM +CONFIG_XIP=y diff --git a/dts/bindings/modem/nordic,nrf93m1.yaml b/dts/bindings/modem/nordic,nrf93m1.yaml new file mode 100644 index 000000000000..a9406d216869 --- /dev/null +++ b/dts/bindings/modem/nordic,nrf93m1.yaml @@ -0,0 +1,16 @@ +# Copyright (c) 2026 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +description: Nordic nRF93M1 module + +compatible: "nordic,nrf93m1" + +include: zephyr,cellular-modem-device.yaml + +properties: + zephyr,mdm-reset-behavior: + default: ["toggle_on_recovery"] + + mdm-power-gpios: + type: phandle-array + required: true