From 1b6806a8f57ca8c99f3251683f910f2d08181c19 Mon Sep 17 00:00:00 2001 From: Chaitanya Tata Date: Wed, 19 Nov 2025 11:36:53 +0530 Subject: [PATCH] [nrf fromlist] boards: shields: Add nRF7002 EB-II shield This is primarily intended for providing Wi-Fi capabilities for the nRF54L Series hosts using SPI. Upstream PR #: 100121 Signed-off-by: Chaitanya Tata --- boards/shields/nrf7002eb2/Kconfig.shield | 14 +++ .../boards/nrf54l15dk_nrf54l15_cpuapp.overlay | 54 +++++++++++ .../nrf54lm20dk_nrf54lm20a_cpuapp.overlay | 89 +++++++++++++++++++ boards/shields/nrf7002eb2/doc/index.rst | 72 +++++++++++++++ boards/shields/nrf7002eb2/nrf7002eb2.overlay | 24 +++++ .../nrf7002eb2/nrf7002eb2_coex.overlay | 15 ++++ .../shields/nrf7002eb2/nrf7002eb2_common.dtsi | 20 +++++ .../nrf7002eb2/nrf7002eb2_common_5g.dtsi | 12 +++ .../nrf7002eb2/nrf7002eb2_gpio_pins_1.dtsi | 25 ++++++ .../nrf7002eb2/nrf7002eb2_gpio_pins_2.dtsi | 15 ++++ .../nrf7002eb2/nrf7002eb2_nrf7000.overlay | 24 +++++ .../nrf7002eb2/nrf7002eb2_nrf7001.overlay | 23 +++++ 12 files changed, 387 insertions(+) create mode 100644 boards/shields/nrf7002eb2/Kconfig.shield create mode 100644 boards/shields/nrf7002eb2/boards/nrf54l15dk_nrf54l15_cpuapp.overlay create mode 100644 boards/shields/nrf7002eb2/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay create mode 100644 boards/shields/nrf7002eb2/doc/index.rst create mode 100644 boards/shields/nrf7002eb2/nrf7002eb2.overlay create mode 100644 boards/shields/nrf7002eb2/nrf7002eb2_coex.overlay create mode 100644 boards/shields/nrf7002eb2/nrf7002eb2_common.dtsi create mode 100644 boards/shields/nrf7002eb2/nrf7002eb2_common_5g.dtsi create mode 100644 boards/shields/nrf7002eb2/nrf7002eb2_gpio_pins_1.dtsi create mode 100644 boards/shields/nrf7002eb2/nrf7002eb2_gpio_pins_2.dtsi create mode 100644 boards/shields/nrf7002eb2/nrf7002eb2_nrf7000.overlay create mode 100644 boards/shields/nrf7002eb2/nrf7002eb2_nrf7001.overlay diff --git a/boards/shields/nrf7002eb2/Kconfig.shield b/boards/shields/nrf7002eb2/Kconfig.shield new file mode 100644 index 000000000000..3a6309b39148 --- /dev/null +++ b/boards/shields/nrf7002eb2/Kconfig.shield @@ -0,0 +1,14 @@ +# Copyright (c) 2025 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +config SHIELD_NRF7002EB2 + def_bool $(shields_list_contains,nrf7002eb2) + +config SHIELD_NRF7002EB2_NRF7001 + def_bool $(shields_list_contains,nrf7002eb2_nrf7001) + +config SHIELD_NRF7002EB2_NRF7000 + def_bool $(shields_list_contains,nrf7002eb2_nrf7000) + +config SHIELD_NRF7002EB2_COEX + def_bool $(shields_list_contains,nrf7002eb2_coex) diff --git a/boards/shields/nrf7002eb2/boards/nrf54l15dk_nrf54l15_cpuapp.overlay b/boards/shields/nrf7002eb2/boards/nrf54l15dk_nrf54l15_cpuapp.overlay new file mode 100644 index 000000000000..912d806b5f47 --- /dev/null +++ b/boards/shields/nrf7002eb2/boards/nrf54l15dk_nrf54l15_cpuapp.overlay @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "../nrf7002eb2_gpio_pins_1.dtsi" + +/ { + chosen { + zephyr,wifi = &wlan0; + zephyr,console = &uart30; + zephyr,shell-uart = &uart30; + zephyr,uart-mcumgr = &uart30; + zephyr,bt-mon-uart = &uart30; + zephyr,bt-c2h-uart = &uart30; + }; +}; + +&pinctrl { + spi22_default: spi22_default { + group1 { + psels = , + , + ; + bias-pull-down; + }; + }; + + spi22_sleep: spi22_sleep { + group1 { + psels = , + , + ; + bias-pull-down; + low-power-enable; + }; + }; +}; + +&spi22 { + cs-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>; + pinctrl-0 = <&spi22_default>; + pinctrl-1 = <&spi22_sleep>; + pinctrl-names = "default", "sleep"; +}; + +&uart20 { + status = "disabled"; +}; + +&uart30 { + status = "okay"; +}; diff --git a/boards/shields/nrf7002eb2/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay b/boards/shields/nrf7002eb2/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay new file mode 100644 index 000000000000..dcc759345bad --- /dev/null +++ b/boards/shields/nrf7002eb2/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "../nrf7002eb2_gpio_pins_2.dtsi" + +/ { + chosen { + zephyr,wifi = &wlan0; + zephyr,console = &uart30; + zephyr,shell-uart = &uart30; + zephyr,uart-mcumgr = &uart30; + zephyr,bt-mon-uart = &uart30; + zephyr,bt-c2h-uart = &uart30; + }; + + buttons { + /delete-node/ button_3; + }; + + aliases { + /delete-property/ sw3; + }; +}; + +&gpio3 { + status = "okay"; +}; + +&pinctrl { + spi22_default: spi22_default { + group1 { + psels = , + , + ; + bias-pull-down; + }; + }; + + spi22_sleep: spi22_sleep { + group1 { + psels = , + , + ; + bias-pull-down; + low-power-enable; + }; + }; + + uart30_default: uart30_default { + group1 { + psels = ; + }; + + group2 { + psels = ; + bias-pull-up; + }; + }; + + uart30_sleep: uart30_sleep { + group1 { + psels = , + ; + low-power-enable; + }; + }; +}; + +&spi22 { + status = "okay"; + cs-gpios = <&gpio3 2 GPIO_ACTIVE_LOW>; + pinctrl-0 = <&spi22_default>; + pinctrl-1 = <&spi22_sleep>; + pinctrl-names = "default", "sleep"; +}; + +/* uart20 has pin conflicts with EB-II shield hence disabling that + * and enabling uart30 as console port. + */ +&uart20 { + status = "disabled"; +}; + +&uart30 { + status = "okay"; +}; diff --git a/boards/shields/nrf7002eb2/doc/index.rst b/boards/shields/nrf7002eb2/doc/index.rst new file mode 100644 index 000000000000..6fe033c21221 --- /dev/null +++ b/boards/shields/nrf7002eb2/doc/index.rst @@ -0,0 +1,72 @@ +.. _nrf7002eb2: + +nRF7002 EB II +############# + +Overview +******** + +The nRF7002 EB II is a versatile evaluation kit in the form of a thumbstick shield which connects to +compatible Nordic host boards using the Nordic edge-connector. + +The nRF7002 EB II unlocks low-power Wi-Fi 6 capabilities for your host device. It supports dual-band Wi-Fi +2.4GHz and 5GHz, and is based on the nRF7002 SoC. The shield also supports nRF7001 and nRF7000 SoCs +through variant overlays. +Seamlessly connect to Wi-Fi networks and leverage Wi-Fi-based locationing, enabling advanced +features such as SSID sniffing of local Wi-Fi hubs. + +.. figure:: nrf7002eb2.jpg + :alt: nRF7002 EB II + :align: center + + nRF7002 EB II + +Requirements +************ + +The nRF7002 EB II board is designed to fit straight into a Nordic edge-connector and uses SPI as the +communication interface. Any host board that supports the Nordic edge-connector can be used with +the nRF7002 EB II. + +Prerequisites +------------- + +The nRF70 driver requires firmware binary blobs for Wi-Fi operation. Run the command +below to retrieve those files. + +.. code-block:: console + + west update + west blobs fetch nrf_wifi + +Usage +***** + +The shield can be used in any application by setting ``--shield nrf7002eb2`` when invoking ``west build``. + +Shield Variants +*************** + +The nRF7002 EB II has several variants to support different nRF70 SoCs and features: + +- ``nrf7002eb2``: The default variant using the nRF7002 SoC. +- ``nrf7002eb2_nrf7001``: Variant using the nRF7001 SoC. +- ``nrf7002eb2_nrf7000``: Variant using the nRF7000 SoC. +- ``nrf7002eb2_coex``: Variant which includes the COEX pins. These pins are not routed to the + edge-connector on some boards, like earlier revisions of the Thingy53 than v1.0.0. + +SR Co-existence +*************** + +The nRF7002 EB II supports SR co-existence provided the host board supports it. The SR co-existence +pins are connected to the host board's GPIO pins. + +Two Kconfig options are available to enable SR co-existence: + +- :kconfig:option:`CONFIG_NRF70_SR_COEX`: Enables SR co-existence. +- :kconfig:option:`CONFIG_NRF70_SR_COEX_RF_SWITCH`: Control SR side RF switch. + +References +********** + +- `Developing with nRF7002 EB II `_ diff --git a/boards/shields/nrf7002eb2/nrf7002eb2.overlay b/boards/shields/nrf7002eb2/nrf7002eb2.overlay new file mode 100644 index 000000000000..304814fa3040 --- /dev/null +++ b/boards/shields/nrf7002eb2/nrf7002eb2.overlay @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + chosen { + zephyr,wifi = &wlan0; + }; +}; + +&wifi_spi { + status = "okay"; + + nrf70: nrf7002-spi@0 { + compatible = "nordic,nrf7002-spi"; + status = "okay"; + + /* Include common nRF70 overlays */ + #include "nrf7002eb2_common.dtsi" + #include "nrf7002eb2_common_5g.dtsi" + }; +}; diff --git a/boards/shields/nrf7002eb2/nrf7002eb2_coex.overlay b/boards/shields/nrf7002eb2/nrf7002eb2_coex.overlay new file mode 100644 index 000000000000..36f352bc6a5e --- /dev/null +++ b/boards/shields/nrf7002eb2/nrf7002eb2_coex.overlay @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + nrf_radio_coex: coex { + compatible = "nordic,nrf7002-coex"; + status = "okay"; + status0-gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>; + req-gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>; + grant-gpios = <&gpio1 7 (GPIO_PULL_DOWN | GPIO_ACTIVE_LOW)>; + }; +}; diff --git a/boards/shields/nrf7002eb2/nrf7002eb2_common.dtsi b/boards/shields/nrf7002eb2/nrf7002eb2_common.dtsi new file mode 100644 index 000000000000..efe0703ac9dd --- /dev/null +++ b/boards/shields/nrf7002eb2/nrf7002eb2_common.dtsi @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include + +/* Common assignments for nRF70 EB-II shield */ +reg = <0>; +spi-max-frequency = ; + +/* Maximum TX power limits for 2.4 GHz */ +wifi-max-tx-pwr-2g-dsss = <21>; +wifi-max-tx-pwr-2g-mcs0 = <16>; +wifi-max-tx-pwr-2g-mcs7 = <16>; + +/* List of interfaces */ +wlan0: wlan0 { + compatible = "nordic,wlan"; +}; diff --git a/boards/shields/nrf7002eb2/nrf7002eb2_common_5g.dtsi b/boards/shields/nrf7002eb2/nrf7002eb2_common_5g.dtsi new file mode 100644 index 000000000000..05a472a32bd5 --- /dev/null +++ b/boards/shields/nrf7002eb2/nrf7002eb2_common_5g.dtsi @@ -0,0 +1,12 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor + * + * SPDX-License-Identifier: Apache-2.0 + */ + +wifi-max-tx-pwr-5g-low-mcs0 = <13>; +wifi-max-tx-pwr-5g-low-mcs7 = <13>; +wifi-max-tx-pwr-5g-mid-mcs0 = <13>; +wifi-max-tx-pwr-5g-mid-mcs7 = <13>; +wifi-max-tx-pwr-5g-high-mcs0 = <12>; +wifi-max-tx-pwr-5g-high-mcs7 = <12>; diff --git a/boards/shields/nrf7002eb2/nrf7002eb2_gpio_pins_1.dtsi b/boards/shields/nrf7002eb2/nrf7002eb2_gpio_pins_1.dtsi new file mode 100644 index 000000000000..95ad1ed44221 --- /dev/null +++ b/boards/shields/nrf7002eb2/nrf7002eb2_gpio_pins_1.dtsi @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + nrf_radio_coex: coex { + compatible = "nordic,nrf7002-coex"; + status = "disabled"; + status0-gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>; + req-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>; + grant-gpios = <&gpio1 12 (GPIO_PULL_DOWN | GPIO_ACTIVE_LOW)>; + }; +}; + +&nrf70 { + iovdd-ctrl-gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>; + bucken-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>; + host-irq-gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>; +}; + +&gpio1 { + status = "okay"; +}; diff --git a/boards/shields/nrf7002eb2/nrf7002eb2_gpio_pins_2.dtsi b/boards/shields/nrf7002eb2/nrf7002eb2_gpio_pins_2.dtsi new file mode 100644 index 000000000000..dc59273a0314 --- /dev/null +++ b/boards/shields/nrf7002eb2/nrf7002eb2_gpio_pins_2.dtsi @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&nrf70 { + iovdd-ctrl-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>; + bucken-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>; + host-irq-gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>; +}; + +&gpio1 { + status = "okay"; +}; diff --git a/boards/shields/nrf7002eb2/nrf7002eb2_nrf7000.overlay b/boards/shields/nrf7002eb2/nrf7002eb2_nrf7000.overlay new file mode 100644 index 000000000000..22b36e7b27fc --- /dev/null +++ b/boards/shields/nrf7002eb2/nrf7002eb2_nrf7000.overlay @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + chosen { + zephyr,wifi = &wlan0; + }; +}; + +&wifi_spi { + status = "okay"; + + nrf70: nrf7000-spi@0 { + compatible = "nordic,nrf7000-spi"; + status = "okay"; + + /* Include common nRF70 overlays */ + #include "nrf7002eb2_common.dtsi" + #include "nrf7002eb2_common_5g.dtsi" + }; +}; diff --git a/boards/shields/nrf7002eb2/nrf7002eb2_nrf7001.overlay b/boards/shields/nrf7002eb2/nrf7002eb2_nrf7001.overlay new file mode 100644 index 000000000000..9a9243063a98 --- /dev/null +++ b/boards/shields/nrf7002eb2/nrf7002eb2_nrf7001.overlay @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + chosen { + zephyr,wifi = &wlan0; + }; +}; + +&wifi_spi { + status = "okay"; + + nrf70: nrf7001-spi@0 { + compatible = "nordic,nrf7001-spi"; + status = "okay"; + + /* Include common nRF70 overlays */ + #include "nrf7002eb2_common.dtsi" + }; +};