From 1c70f53a0d0cd3a0827c37d3abffba87814559ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bobob=20B=C3=A4ck=20Engstr=C3=B6m?= Date: Wed, 24 Jun 2026 12:10:54 +0200 Subject: [PATCH] boards: id8: add Seven nRF9151 board MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Bobob Bäck Engström --- boards/id8/seven_nrf9151/Kconfig.defconfig | 14 + boards/id8/seven_nrf9151/Kconfig.seven | 7 + boards/id8/seven_nrf9151/board.cmake | 14 + boards/id8/seven_nrf9151/board.yml | 8 + boards/id8/seven_nrf9151/doc/index.rst | 142 +++++++++++ boards/id8/seven_nrf9151/pre_dt_board.cmake | 7 + boards/id8/seven_nrf9151/seven_nrf9151.dts | 22 ++ boards/id8/seven_nrf9151/seven_nrf9151.yaml | 19 ++ .../seven_nrf9151_common-pinctrl.dtsi | 199 +++++++++++++++ .../seven_nrf9151/seven_nrf9151_common.dtsi | 241 ++++++++++++++++++ .../id8/seven_nrf9151/seven_nrf9151_defconfig | 21 ++ boards/id8/seven_nrf9151/seven_nrf9151_ns.dts | 25 ++ .../id8/seven_nrf9151/seven_nrf9151_ns.yaml | 21 ++ .../seven_nrf9151/seven_nrf9151_ns_defconfig | 24 ++ dts/bindings/misc/id8,buzzer.yaml | 12 + dts/bindings/vendor-prefixes.txt | 1 + 16 files changed, 777 insertions(+) create mode 100644 boards/id8/seven_nrf9151/Kconfig.defconfig create mode 100644 boards/id8/seven_nrf9151/Kconfig.seven create mode 100644 boards/id8/seven_nrf9151/board.cmake create mode 100644 boards/id8/seven_nrf9151/board.yml create mode 100644 boards/id8/seven_nrf9151/doc/index.rst create mode 100644 boards/id8/seven_nrf9151/pre_dt_board.cmake create mode 100644 boards/id8/seven_nrf9151/seven_nrf9151.dts create mode 100644 boards/id8/seven_nrf9151/seven_nrf9151.yaml create mode 100644 boards/id8/seven_nrf9151/seven_nrf9151_common-pinctrl.dtsi create mode 100644 boards/id8/seven_nrf9151/seven_nrf9151_common.dtsi create mode 100644 boards/id8/seven_nrf9151/seven_nrf9151_defconfig create mode 100644 boards/id8/seven_nrf9151/seven_nrf9151_ns.dts create mode 100644 boards/id8/seven_nrf9151/seven_nrf9151_ns.yaml create mode 100644 boards/id8/seven_nrf9151/seven_nrf9151_ns_defconfig create mode 100644 dts/bindings/misc/id8,buzzer.yaml diff --git a/boards/id8/seven_nrf9151/Kconfig.defconfig b/boards/id8/seven_nrf9151/Kconfig.defconfig new file mode 100644 index 000000000000..4601161f8fa2 --- /dev/null +++ b/boards/id8/seven_nrf9151/Kconfig.defconfig @@ -0,0 +1,14 @@ +# Seven_nrf9151 board configuration + +# Copyright (c) 2026 ID8 Engineering AB +# SPDX-License-Identifier: Apache-2.0 +# +config HW_STACK_PROTECTION + default ARCH_HAS_STACK_PROTECTION + +if BOARD_SEVEN_NRF9151 || BOARD_SEVEN_NRF9151_NS + +config BOARD_SEVEN + select USE_DT_CODE_PARTITION if BOARD_SEVEN_NRF9151_NS + +endif # BOARD_SEVEN_NRF9151 || BOARD_SEVEN_NRF9151_NS diff --git a/boards/id8/seven_nrf9151/Kconfig.seven b/boards/id8/seven_nrf9151/Kconfig.seven new file mode 100644 index 000000000000..d393b6f8153f --- /dev/null +++ b/boards/id8/seven_nrf9151/Kconfig.seven @@ -0,0 +1,7 @@ +# Seven nRF9151 board configuration + +# Copyright (c) 2026 ID8 Engineering AB +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_SEVEN + select SOC_NRF9151_LACA diff --git a/boards/id8/seven_nrf9151/board.cmake b/boards/id8/seven_nrf9151/board.cmake new file mode 100644 index 000000000000..b912ceada2ef --- /dev/null +++ b/boards/id8/seven_nrf9151/board.cmake @@ -0,0 +1,14 @@ +# SPDX-License-Identifier: Apache-2.0 + +if(CONFIG_BOARD_SEVEN_NRF9151_NS) + 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() + +board_runner_args(jlink "--device=nRF9151_xxCA" "--speed=4000") +include(${ZEPHYR_BASE}/boards/common/nrfutil.board.cmake) +include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) +include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/boards/id8/seven_nrf9151/board.yml b/boards/id8/seven_nrf9151/board.yml new file mode 100644 index 000000000000..9571dc0310a8 --- /dev/null +++ b/boards/id8/seven_nrf9151/board.yml @@ -0,0 +1,8 @@ +board: + name: seven + full_name: Seven nRF9151 + vendor: id8 + socs: + - name: nrf9151 + variants: + - name: 'ns' diff --git a/boards/id8/seven_nrf9151/doc/index.rst b/boards/id8/seven_nrf9151/doc/index.rst new file mode 100644 index 000000000000..029a8bea1d16 --- /dev/null +++ b/boards/id8/seven_nrf9151/doc/index.rst @@ -0,0 +1,142 @@ +.. zephyr:board:: seven + +Overview +******** + +Seven is a custom nRF9151-based board from ID8 Engineering AB. The +``seven/nrf9151`` board target supports the Nordic Semiconductor nRF9151 ARM +Cortex-M33 CPU with Armv8-M Security Extension. + +Hardware +******** + +Seven is based on the Nordic nRF9151 and provides: + +* LTE-M / NB-IoT modem support +* GNSS support +* 6 V to 36 V input supply +* One Nano-SIM card holder +* LTE and GNSS SMA connectors +* One WS2812-compatible system LED on ``P0.18`` +* One passive buzzer on ``P0.19`` +* One debug UART on ``P0.27`` (TX) and ``P0.26`` (RX) +* Two mikroBUS™ headers + +Supported Features +================== + +.. zephyr:board-supported-hw:: + +mikroBUS™ Notes +============== + +Seven provides default interface routing for the mikroBUS™ sockets: + +* mikroBUS™ 1 uses ``uart2`` / ``i2c2`` / ``spi2`` +* mikroBUS™ 2 uses ``uart3`` / ``i2c3`` / ``spi3`` + +Application overlays are expected to enable the function they need on the +target socket. The generic ``&mikrobus_*`` labels target mikroBUS™ 1 by +default, while the explicit ``&mikrobus_1_*`` and ``&mikrobus_2_*`` labels +target a specific socket. + +On nRF9151, the serial blocks are multiplexed: + +* ``uart1`` / ``i2c1`` / ``spi1`` +* ``uart2`` / ``i2c2`` / ``spi2`` +* ``uart3`` / ``i2c3`` / ``spi3`` + +Only one function from each group can be enabled at a time, so each mikroBUS™ +socket may use UART or I2C or SPI, but not multiple of those functions +simultaneously. + +The on-board RGB LED uses ``spi1`` with MOSI on ``P0.18`` by default, so +serial block 1 is not available for mikroBUS™ overlays unless that LED route +is overridden. + +For ``seven/nrf9151/ns``, ``uart1`` is disabled by default to match the +upstream ``nrf9151dk`` non-secure board behavior where TF-M uses it by +default. + +Examples: + +* To place an I2C Click board on mikroBUS™ 1, enable ``&mikrobus_1_i2c`` and + add the device below it in an app overlay. +* To place an SPI Click board on mikroBUS™ 2, enable ``&mikrobus_2_spi`` and + add the device below it in an app overlay. +* To place a UART Click board on mikroBUS™ 1, enable ``&mikrobus_1_serial`` in + an app overlay. +* Upstream shields target mikroBUS™ 1 by default through + ``&mikrobus_spi``, ``&mikrobus_i2c``, ``&mikrobus_serial``, and + ``&mikrobus_header``. + +Connections and IOs +=================== + +On-board peripherals +-------------------- + +* System LED data = ``P0.18`` via ``spi1`` MOSI +* Buzzer PWM = ``P0.19`` +* Debug UART TX = ``P0.27`` +* Debug UART RX = ``P0.26`` + +mikroBUS™ 1 +---------- + +* AN = ``P0.20`` +* RST = ``P0.16`` +* CS = ``P0.07`` +* SCK = ``P0.29`` +* MISO = ``P0.28`` +* MOSI = ``P0.21`` +* PWM = ``P0.17`` +* INT = ``P0.15`` +* RX = ``P0.13`` +* TX = ``P0.12`` +* SCL = ``P0.23`` +* SDA = ``P0.22`` + +mikroBUS™ 2 +---------- + +* AN = ``P0.14`` +* RST = ``P0.02`` +* CS = ``P0.00`` +* SCK = ``P0.06`` +* MISO = ``P0.05`` +* MOSI = ``P0.04`` +* PWM = ``P0.03`` +* INT = ``P0.01`` +* RX = ``P0.11`` +* TX = ``P0.10`` +* SCL = ``P0.08`` +* SDA = ``P0.09`` + +Programming and Debugging +************************* + +Seven provides a TC2030 SWD/JTAG connector for programming and a UART VCOM +interface for debug output. + +.. zephyr:board-supported-runners:: + +References +********** + +.. target-notes:: + +.. _Seven hardware documentation: + https://github.com/id8-engineering/seven-hardware + +.. _nRF9151 website: + https://www.nordicsemi.com/Products/nRF9151 + +.. _Nordic Semiconductor TechDocs: + https://docs.nordicsemi.com/ + +.. _Trusted Firmware M: + https://www.trustedfirmware.org/projects/tf-m/ + +.. _mikroBUS standard: + https://www.mikroe.com/mikrobus diff --git a/boards/id8/seven_nrf9151/pre_dt_board.cmake b/boards/id8/seven_nrf9151/pre_dt_board.cmake new file mode 100644 index 000000000000..c8267afd1b47 --- /dev/null +++ b/boards/id8/seven_nrf9151/pre_dt_board.cmake @@ -0,0 +1,7 @@ +# Copyright (c) 2021 Linaro Limited +# SPDX-License-Identifier: Apache-2.0 + +# Suppress "unique_unit_address_if_enabled" to handle the following overlaps: +# - flash-controller@39000 & kmu@39000 +# - power@5000 & clock@5000 +list(APPEND EXTRA_DTC_FLAGS "-Wno-unique_unit_address_if_enabled") diff --git a/boards/id8/seven_nrf9151/seven_nrf9151.dts b/boards/id8/seven_nrf9151/seven_nrf9151.dts new file mode 100644 index 000000000000..78c407ea2a77 --- /dev/null +++ b/boards/id8/seven_nrf9151/seven_nrf9151.dts @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2026 ID8 Engineering AB + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include +#include "seven_nrf9151_common.dtsi" + +/ { + model = "Seven nRF9151"; + compatible = "id8,seven-nrf9151"; + + chosen { + zephyr,sram = &sram0_s; + zephyr,flash = &flash0; + zephyr,code-partition = &slot0_partition; + zephyr,sram-secure-partition = &sram0_s; + zephyr,sram-non-secure-partition = &sram0_ns; + }; +}; diff --git a/boards/id8/seven_nrf9151/seven_nrf9151.yaml b/boards/id8/seven_nrf9151/seven_nrf9151.yaml new file mode 100644 index 000000000000..0e0050c564d5 --- /dev/null +++ b/boards/id8/seven_nrf9151/seven_nrf9151.yaml @@ -0,0 +1,19 @@ +identifier: seven/nrf9151 +name: seven_nrf9151 +type: mcu +arch: arm +toolchain: + - gnuarmemb + - zephyr +ram: 88 +flash: 1024 +supported: + - gpio + - i2c + - pwm + - uart + - spi + - watchdog + - counter + - adc +vendor: id8 diff --git a/boards/id8/seven_nrf9151/seven_nrf9151_common-pinctrl.dtsi b/boards/id8/seven_nrf9151/seven_nrf9151_common-pinctrl.dtsi new file mode 100644 index 000000000000..cb6f136bc06c --- /dev/null +++ b/boards/id8/seven_nrf9151/seven_nrf9151_common-pinctrl.dtsi @@ -0,0 +1,199 @@ +/* + * Copyright (c) 2026 ID8 Engineering AB + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +/* + * Pinctrl routes for the default mikroBUS™ serial mappings. + * + * mikroBUS™ 1 uses serial block 2 (uart2 / i2c2 / spi2) and mikroBUS™ 2 uses + * serial block 3 (uart3 / i2c3 / spi3). Application overlays should enable + * the needed function while respecting the nRF9151 mux rule that uartX/i2cX/ + * spiX share the same hardware block for each X. + */ + +&pinctrl { + /* Debug / AT / console UART0: TX P0.27, RX P0.26 */ + uart0_default: uart0_default { + group1 { + psels = ; + }; + + group2 { + psels = ; + bias-pull-up; + }; + }; + + uart0_sleep: uart0_sleep { + group1 { + psels = , + ; + low-power-enable; + }; + }; + + system_led_spi_default: system_led_spi_default { + group1 { + psels = , + , + ; + nordic,drive-mode = ; + }; + }; + + system_led_spi_sleep: system_led_spi_sleep { + group1 { + psels = , + , + ; + low-power-enable; + }; + }; + + mikrobus_1_uart_default: mikrobus_1_uart_default { + group1 { + psels = ; + }; + + group2 { + psels = ; + bias-pull-up; + }; + }; + + mikrobus_1_uart_sleep: mikrobus_1_uart_sleep { + group1 { + psels = , + ; + low-power-enable; + }; + }; + + mikrobus_2_uart_default: mikrobus_2_uart_default { + group1 { + psels = ; + }; + + group2 { + psels = ; + bias-pull-up; + }; + }; + + mikrobus_2_uart_sleep: mikrobus_2_uart_sleep { + group1 { + psels = , + ; + low-power-enable; + }; + }; + + mikrobus_1_i2c_default: mikrobus_1_i2c_default { + group1 { + psels = , + ; + }; + }; + + mikrobus_1_i2c_sleep: mikrobus_1_i2c_sleep { + group1 { + psels = , + ; + low-power-enable; + }; + }; + + mikrobus_2_i2c_default: mikrobus_2_i2c_default { + group1 { + psels = , + ; + }; + }; + + mikrobus_2_i2c_sleep: mikrobus_2_i2c_sleep { + group1 { + psels = , + ; + low-power-enable; + }; + }; + + mikrobus_1_spi_default: mikrobus_1_spi_default { + group1 { + psels = , + , + ; + nordic,drive-mode = ; + }; + }; + + mikrobus_1_spi_sleep: mikrobus_1_spi_sleep { + group1 { + psels = , + , + ; + low-power-enable; + }; + }; + + mikrobus_2_spi_default: mikrobus_2_spi_default { + group1 { + psels = , + , + ; + nordic,drive-mode = ; + }; + }; + + mikrobus_2_spi_sleep: mikrobus_2_spi_sleep { + group1 { + psels = , + , + ; + low-power-enable; + }; + }; + + mikrobus_1_pwm_default: mikrobus_1_pwm_default { + group1 { + psels = ; + }; + }; + + mikrobus_1_pwm_sleep: mikrobus_1_pwm_sleep { + group1 { + psels = ; + low-power-enable; + }; + }; + + mikrobus_2_pwm_default: mikrobus_2_pwm_default { + group1 { + psels = ; + }; + }; + + mikrobus_2_pwm_sleep: mikrobus_2_pwm_sleep { + group1 { + psels = ; + low-power-enable; + }; + }; + + pwm1_default: pwm1_default { + group1 { + psels = ; + }; + }; + + pwm1_sleep: pwm1_sleep { + group1 { + psels = ; + low-power-enable; + }; + }; +}; diff --git a/boards/id8/seven_nrf9151/seven_nrf9151_common.dtsi b/boards/id8/seven_nrf9151/seven_nrf9151_common.dtsi new file mode 100644 index 000000000000..634501112867 --- /dev/null +++ b/boards/id8/seven_nrf9151/seven_nrf9151_common.dtsi @@ -0,0 +1,241 @@ +/* + * Copyright (c) 2026 ID8 Engineering AB + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "seven_nrf9151_common-pinctrl.dtsi" +#include +#include +#include +#include + +/ { + chosen { + zephyr,console = &uart0; + zephyr,led-strip = &system_led; + zephyr,shell-uart = &uart0; + zephyr,uart-mcumgr = &uart0; + ncs,at-host-uart = &uart0; + }; + + /* + * Seven provides default serial routing for the mikroBUS™ sockets: + * - mikroBUS™ 1 uses uart2 / i2c2 / spi2 + * - mikroBUS™ 2 uses uart3 / i2c3 / spi3 + * + * Application overlays enable the function they need on the target socket. + * + * On nRF9151, the serial blocks are multiplexed: + * - uart1 / i2c1 / spi1 share one hardware block + * - uart2 / i2c2 / spi2 share one hardware block + * - uart3 / i2c3 / spi3 share one hardware block + * + * Only one function from each group can be enabled at a time, so each + * mikroBUS™ socket may use UART or I2C or SPI, but not multiple of those + * functions simultaneously. + * + * For the non-secure target, uart1 is disabled by default to match the + * upstream nrf9151dk behavior where TF-M uses it by default. + * + * The on-board RGB LED uses spi1 with MOSI on P0.18 by default, so serial + * block 1 is not available for mikroBUS™ overlays unless that LED route is + * overridden. + */ + + buzzer: buzzer { + compatible = "id8,buzzer"; + pwms = <&pwm1 0 PWM_MSEC(20) PWM_POLARITY_NORMAL>; + status = "okay"; + }; + + mikrobus_1_header: mikrobus-connector-1 { + compatible = "mikro-bus"; + #gpio-cells = <2>; + gpio-map-mask = <0xffffffff 0xffffffc0>; + gpio-map-pass-thru = <0 0x3f>; + gpio-map = <0 0 &gpio0 20 0>, /* AN */ + <1 0 &gpio0 16 0>, /* RST */ + <2 0 &gpio0 7 0>, /* CS */ + <3 0 &gpio0 29 0>, /* SCK */ + <4 0 &gpio0 28 0>, /* MISO */ + <5 0 &gpio0 21 0>, /* MOSI */ + <6 0 &gpio0 17 0>, /* PWM */ + <7 0 &gpio0 15 0>, /* INT */ + <8 0 &gpio0 13 0>, /* RX */ + <9 0 &gpio0 12 0>, /* TX */ + <10 0 &gpio0 23 0>, /* SCL */ + <11 0 &gpio0 22 0>; /* SDA */ + }; + + mikrobus_2_header: mikrobus-connector-2 { + compatible = "mikro-bus"; + #gpio-cells = <2>; + gpio-map-mask = <0xffffffff 0xffffffc0>; + gpio-map-pass-thru = <0 0x3f>; + gpio-map = <0 0 &gpio0 14 0>, /* AN */ + <1 0 &gpio0 2 0>, /* RST */ + <2 0 &gpio0 0 0>, /* CS */ + <3 0 &gpio0 6 0>, /* SCK */ + <4 0 &gpio0 5 0>, /* MISO */ + <5 0 &gpio0 4 0>, /* MOSI */ + <6 0 &gpio0 3 0>, /* PWM */ + <7 0 &gpio0 1 0>, /* INT */ + <8 0 &gpio0 11 0>, /* RX */ + <9 0 &gpio0 10 0>, /* TX */ + <10 0 &gpio0 8 0>, /* SCL */ + <11 0 &gpio0 9 0>; /* SDA */ + }; + + aliases { + led-strip = &system_led; + watchdog0 = &wdt0; + mikrobus-header-1 = &mikrobus_1_header; + mikrobus-header-2 = &mikrobus_2_header; + mikrobus-header = &mikrobus_1_header; + mikrobus-1-serial = &uart2; + mikrobus-1-uart = &uart2; + mikrobus-1-i2c = &i2c2; + mikrobus-1-spi = &spi2; + mikrobus-2-serial = &uart3; + mikrobus-2-uart = &uart3; + mikrobus-2-i2c = &i2c3; + mikrobus-2-spi = &spi3; + }; +}; + +/* + * Upstream Zephyr shields expect the default mikroBUS™ connector to expose + * these node labels directly. Socket 1 is the default connector on Seven. + */ +mikrobus_header: &mikrobus_1_header {}; +mikrobus_serial: &uart2 {}; +mikrobus_i2c: &i2c2 {}; +mikrobus_spi: &spi2 {}; + +/* + * Also expose explicit labels for both sockets so applications or future + * shields can target either connector without depending on aliases. + */ +mikrobus_1_serial: &uart2 {}; +mikrobus_1_i2c: &i2c2 {}; +mikrobus_1_spi: &spi2 {}; + +mikrobus_2_serial: &uart3 {}; +mikrobus_2_i2c: &i2c3 {}; +mikrobus_2_spi: &spi3 {}; + +&adc { + status = "okay"; + + #address-cells = <1>; + #size-cells = <0>; + + /* mikroBUS 1 AN: P0.20 / AIN7 */ + channel@0 { + reg = <0>; /* SAADC channel slot 0 */ + zephyr,gain = "ADC_GAIN_1_6"; + zephyr,reference = "ADC_REF_INTERNAL"; + zephyr,acquisition-time = ; + zephyr,input-positive = ; + zephyr,resolution = <12>; + }; + + /* mikroBUS 2 AN: P0.14 / AIN1 */ + channel@1 { + reg = <1>; /* SAADC channel slot 1 */ + zephyr,gain = "ADC_GAIN_1_6"; + zephyr,reference = "ADC_REF_INTERNAL"; + zephyr,acquisition-time = ; + zephyr,input-positive = ; + zephyr,resolution = <12>; + }; +}; + +&gpiote { + status = "okay"; +}; + +&gpio0 { + status = "okay"; +}; + +&spi1 { + compatible = "nordic,nrf-spim"; + status = "okay"; + pinctrl-0 = <&system_led_spi_default>; + pinctrl-1 = <&system_led_spi_sleep>; + pinctrl-names = "default", "sleep"; + + system_led: ws2812@0 { + compatible = "worldsemi,ws2812-spi"; + reg = <0>; + spi-max-frequency = <4000000>; + chain-length = <1>; + color-mapping = ; + spi-one-frame = <0x70>; + spi-zero-frame = <0x40>; + reset-delay = <50>; + }; +}; + +&pwm1 { + status = "okay"; + pinctrl-0 = <&pwm1_default>; + pinctrl-1 = <&pwm1_sleep>; + pinctrl-names = "default", "sleep"; +}; + +&uart0 { + status = "okay"; + current-speed = <115200>; + pinctrl-0 = <&uart0_default>; + pinctrl-1 = <&uart0_sleep>; + pinctrl-names = "default", "sleep"; +}; + +&uart2 { + status = "disabled"; + pinctrl-0 = <&mikrobus_1_uart_default>; + pinctrl-1 = <&mikrobus_1_uart_sleep>; + pinctrl-names = "default", "sleep"; +}; + +&uart3 { + status = "disabled"; + pinctrl-0 = <&mikrobus_2_uart_default>; + pinctrl-1 = <&mikrobus_2_uart_sleep>; + pinctrl-names = "default", "sleep"; +}; + +&i2c2 { + status = "disabled"; + pinctrl-0 = <&mikrobus_1_i2c_default>; + pinctrl-1 = <&mikrobus_1_i2c_sleep>; + pinctrl-names = "default", "sleep"; +}; + +&i2c3 { + status = "disabled"; + pinctrl-0 = <&mikrobus_2_i2c_default>; + pinctrl-1 = <&mikrobus_2_i2c_sleep>; + pinctrl-names = "default", "sleep"; +}; + +&spi2 { + compatible = "nordic,nrf-spim"; + status = "disabled"; + pinctrl-0 = <&mikrobus_1_spi_default>; + pinctrl-1 = <&mikrobus_1_spi_sleep>; + pinctrl-names = "default", "sleep"; +}; + +&spi3 { + compatible = "nordic,nrf-spim"; + status = "disabled"; + pinctrl-0 = <&mikrobus_2_spi_default>; + pinctrl-1 = <&mikrobus_2_spi_sleep>; + pinctrl-names = "default", "sleep"; +}; diff --git a/boards/id8/seven_nrf9151/seven_nrf9151_defconfig b/boards/id8/seven_nrf9151/seven_nrf9151_defconfig new file mode 100644 index 000000000000..38390a8d2f46 --- /dev/null +++ b/boards/id8/seven_nrf9151/seven_nrf9151_defconfig @@ -0,0 +1,21 @@ +# SPDX-License-Identifier: Apache-2.0 + +# Enable MPU +CONFIG_ARM_MPU=y + +# Enable TrustZone-M +CONFIG_ARM_TRUSTZONE_M=y + +# Enable GPIO +CONFIG_GPIO=y + +# Enable UART driver +CONFIG_SERIAL=y + +# Enable RTT console +CONFIG_CONSOLE=y +CONFIG_USE_SEGGER_RTT=y +CONFIG_RTT_CONSOLE=y +CONFIG_LOG_BACKEND_RTT=y +CONFIG_LOG_BACKEND_UART=n +CONFIG_UART_CONSOLE=n diff --git a/boards/id8/seven_nrf9151/seven_nrf9151_ns.dts b/boards/id8/seven_nrf9151/seven_nrf9151_ns.dts new file mode 100644 index 000000000000..9921aa67cf52 --- /dev/null +++ b/boards/id8/seven_nrf9151/seven_nrf9151_ns.dts @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2026 ID8 Engineering AB + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include +#include "seven_nrf9151_common.dtsi" + +/ { + model = "Seven nRF9151 Non-Secure"; + compatible = "id8,seven-nrf9151-ns"; + + chosen { + zephyr,flash = &flash0; + zephyr,sram = &sram0_ns_app; + zephyr,code-partition = &slot0_ns_partition; + }; +}; + +/* Disable UART1, because it is used by default in TF-M */ +&uart1 { + status = "disabled"; +}; diff --git a/boards/id8/seven_nrf9151/seven_nrf9151_ns.yaml b/boards/id8/seven_nrf9151/seven_nrf9151_ns.yaml new file mode 100644 index 000000000000..dfea96add1ff --- /dev/null +++ b/boards/id8/seven_nrf9151/seven_nrf9151_ns.yaml @@ -0,0 +1,21 @@ +identifier: seven/nrf9151/ns +name: seven_nrf9151_non_secure +type: mcu +arch: arm +toolchain: + - gnuarmemb + - zephyr +ram: 128 +flash: 192 +supported: + - gpio + - i2c + - pwm + - uart + - spi + - watchdog + - counter + - adc + - netif:modem +vendor: id8 +sysbuild: true diff --git a/boards/id8/seven_nrf9151/seven_nrf9151_ns_defconfig b/boards/id8/seven_nrf9151/seven_nrf9151_ns_defconfig new file mode 100644 index 000000000000..e9d0ec296318 --- /dev/null +++ b/boards/id8/seven_nrf9151/seven_nrf9151_ns_defconfig @@ -0,0 +1,24 @@ +# SPDX-License-Identifier: Apache-2.0 + +# Enable MPU +CONFIG_ARM_MPU=y + +# Enable TrustZone-M +CONFIG_ARM_TRUSTZONE_M=y + +# This board implies building Non-Secure firmware +CONFIG_TRUSTED_EXECUTION_NONSECURE=y + +# Enable GPIO +CONFIG_GPIO=y + +# Enable UART driver +CONFIG_SERIAL=y + +# Enable RTT console +CONFIG_CONSOLE=y +CONFIG_USE_SEGGER_RTT=y +CONFIG_RTT_CONSOLE=y +CONFIG_LOG_BACKEND_RTT=y +CONFIG_LOG_BACKEND_UART=n +CONFIG_UART_CONSOLE=n diff --git a/dts/bindings/misc/id8,buzzer.yaml b/dts/bindings/misc/id8,buzzer.yaml new file mode 100644 index 000000000000..20fcfeaf2db9 --- /dev/null +++ b/dts/bindings/misc/id8,buzzer.yaml @@ -0,0 +1,12 @@ +# Copyright (c) 2026 ID8 Engineering AB +# SPDX-License-Identifier: Apache-2.0 + +description: ID8 buzzer driven from a PWM output + +compatible: "id8,buzzer" + +properties: + pwms: + type: phandle-array + required: true + description: PWM specifier used to drive the buzzer. diff --git a/dts/bindings/vendor-prefixes.txt b/dts/bindings/vendor-prefixes.txt index 203a185bd994..cfaaa3acc7b7 100644 --- a/dts/bindings/vendor-prefixes.txt +++ b/dts/bindings/vendor-prefixes.txt @@ -332,6 +332,7 @@ iar IAR Systems AB ibm International Business Machines (IBM) iclegend Iclegend Microelectronics Co., Ltd. icplus IC Plus Corp. +id8 ID8 Engineering AB idt Integrated Device Technologies, Inc. ifi Ingenieurburo Fur Ic-Technologie (I/F/I) ilitek ILI Technology Corporation (ILITEK)