diff --git a/samples/boards/nordic/spis_wakeup/Kconfig.sysbuild b/samples/boards/nordic/spis_wakeup/Kconfig.sysbuild new file mode 100644 index 0000000000000..caf02cc119199 --- /dev/null +++ b/samples/boards/nordic/spis_wakeup/Kconfig.sysbuild @@ -0,0 +1,22 @@ +# Copyright (c) 2025 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +source "$(ZEPHYR_BASE)/share/sysbuild/Kconfig" + +choice REMOTE_NRF54H20_CORE + prompt "Remote nRF54h20 core" + default REMOTE_NRF54H20_CPURAD_CORE + depends on SOC_NRF54H20_CPUAPP + +config REMOTE_NRF54H20_CPUPPR_CORE + bool "ppr core" + +config REMOTE_NRF54H20_CPURAD_CORE + bool "cpurad" + +endchoice + +config REMOTE_BOARD + string + default "$(BOARD)/nrf54h20/cpurad" if SOC_NRF54H20_CPUAPP && REMOTE_NRF54H20_CPURAD_CORE + default "$(BOARD)/nrf54h20/cpuppr/xip" if SOC_NRF54H20_CPUAPP && REMOTE_NRF54H20_CPUPPR_CORE diff --git a/samples/boards/nordic/spis_wakeup/boards/nrf54h20dk_nrf54h20_common.dtsi b/samples/boards/nordic/spis_wakeup/boards/nrf54h20dk_nrf54h20_common.dtsi new file mode 100644 index 0000000000000..d34df2873d5fc --- /dev/null +++ b/samples/boards/nordic/spis_wakeup/boards/nrf54h20dk_nrf54h20_common.dtsi @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor ASA + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + aliases { + led = &led0; + spis = &spi130; + /delete-property/ sw0; + /delete-property/ sw1; + /delete-property/ sw2; + /delete-property/ sw3; + }; + /delete-node/ buttons; +}; + +&exmif { + status = "disabled"; +}; + +&gpiote130 { + status = "okay"; + owned-channels = <0>; +}; + +&pinctrl { + spi130_default_alt: spi130_default_alt { + group1 { + psels = , + , + , + ; + }; + }; + + spi130_sleep_alt: spi130_sleep_alt { + group1 { + psels = , + , + , + ; + low-power-enable; + }; + }; +}; + +&spi130 { + compatible = "nordic,nrf-spis"; + status = "okay"; + def-char = <0x00>; + pinctrl-0 = <&spi130_default_alt>; + pinctrl-1 = <&spi130_sleep_alt>; + pinctrl-names = "default", "sleep"; + wake-gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>; + memory-regions = <&cpuapp_dma_region>; + zephyr,pm-device-runtime-auto; + /delete-property/ rx-delay-supported; + /delete-property/ rx-delay; +}; + +&uart136 { + zephyr,pm-device-runtime-auto; +}; diff --git a/samples/boards/nordic/spis_wakeup/boards/nrf54h20dk_nrf54h20_cpuapp.overlay b/samples/boards/nordic/spis_wakeup/boards/nrf54h20dk_nrf54h20_cpuapp.overlay index ae3c8b6c81fc6..75d90b40595a5 100644 --- a/samples/boards/nordic/spis_wakeup/boards/nrf54h20dk_nrf54h20_cpuapp.overlay +++ b/samples/boards/nordic/spis_wakeup/boards/nrf54h20dk_nrf54h20_cpuapp.overlay @@ -3,64 +3,13 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include "nrf54h20dk_nrf54h20_common.dtsi" + +/* LED1 will be used by the cpurad core. */ / { aliases { - led = &led0; - spis = &spi130; /delete-property/ led1; - /delete-property/ sw0; - /delete-property/ sw1; - /delete-property/ sw2; - /delete-property/ sw3; }; - /delete-node/ buttons; }; /delete-node/ &led1; - -&exmif { - status = "disabled"; -}; - -&gpiote130 { - status = "okay"; - owned-channels = <0>; -}; - -&pinctrl { - spi130_default_alt: spi130_default_alt { - group1 { - psels = , - , - , - ; - }; - }; - - spi130_sleep_alt: spi130_sleep_alt { - group1 { - psels = , - , - , - ; - low-power-enable; - }; - }; -}; - -&spi130 { - compatible = "nordic,nrf-spis"; - status = "okay"; - def-char = <0x00>; - pinctrl-0 = <&spi130_default_alt>; - pinctrl-1 = <&spi130_sleep_alt>; - pinctrl-names = "default", "sleep"; - wake-gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>; - memory-regions = <&cpuapp_dma_region>; - /delete-property/ rx-delay-supported; - /delete-property/ rx-delay; -}; - -&uart136 { - zephyr,pm-device-runtime-auto; -}; diff --git a/samples/boards/nordic/spis_wakeup/boards/nrf54h20dk_nrf54h20_cpuapp_with_cpuppr.overlay b/samples/boards/nordic/spis_wakeup/boards/nrf54h20dk_nrf54h20_cpuapp_with_cpuppr.overlay new file mode 100644 index 0000000000000..fc0f24ad71c0f --- /dev/null +++ b/samples/boards/nordic/spis_wakeup/boards/nrf54h20dk_nrf54h20_cpuapp_with_cpuppr.overlay @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor ASA + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "nrf54h20dk_nrf54h20_common.dtsi" + +&spi131 { + status = "reserved"; + interrupt-parent = <&cpuppr_clic>; +}; + +&uart135 { + status = "reserved"; + interrupt-parent = <&cpuppr_clic>; +}; diff --git a/samples/boards/nordic/spis_wakeup/sample.yaml b/samples/boards/nordic/spis_wakeup/sample.yaml index 7bc97eedcb99c..a2dca27d3e82a 100644 --- a/samples/boards/nordic/spis_wakeup/sample.yaml +++ b/samples/boards/nordic/spis_wakeup/sample.yaml @@ -1,22 +1,32 @@ common: sysbuild: true depends_on: spi + tags: + - spi + harness: console + harness_config: + fixture: spi_loopback + type: multi_line + ordered: true + regex: + - ".*SPIS: waiting for SPI transfer" + - ".*SPIS: woken up by" sample: name: SPI wakeup sample tests: sample.drivers.spis.wakeup: - tags: - - spi platform_allow: - nrf54h20dk/nrf54h20/cpuapp integration_platforms: - nrf54h20dk/nrf54h20/cpuapp - harness: console - harness_config: - fixture: spi_loopback - type: multi_line - ordered: true - regex: - - ".*SPIS: waiting for SPI transfer" - - ".*SPIS: woken up by" + sample.drivers.spis.wakeup.ppr: + platform_allow: + - nrf54h20dk/nrf54h20/cpuapp + integration_platforms: + - nrf54h20dk/nrf54h20/cpuapp + extra_args: + - SB_CONFIG_REMOTE_NRF54H20_CPUPPR_CORE=y + - spis_wakeup_CONFIG_SOC_NRF54H20_CPURAD_ENABLE=n + - spis_wakeup_SNIPPET=nordic-ppr-xip + - DTC_OVERLAY_FILE="boards/nrf54h20dk_nrf54h20_cpuapp_with_cpuppr.overlay" diff --git a/samples/boards/nordic/spis_wakeup/sysbuild.cmake b/samples/boards/nordic/spis_wakeup/sysbuild.cmake index bbd350fbe6372..becedfd6971f8 100644 --- a/samples/boards/nordic/spis_wakeup/sysbuild.cmake +++ b/samples/boards/nordic/spis_wakeup/sysbuild.cmake @@ -3,12 +3,12 @@ # SPDX-License-Identifier: Apache-2.0 # -if(SB_CONFIG_SOC_NRF54H20) +if(SB_CONFIG_REMOTE_BOARD) # Add remote project ExternalZephyrProject_Add( APPLICATION wakeup_trigger SOURCE_DIR ${APP_DIR}/wakeup_trigger - BOARD ${SB_CONFIG_BOARD}/${SB_CONFIG_SOC}/cpurad + BOARD ${SB_CONFIG_REMOTE_BOARD} BOARD_REVISION ${BOARD_REVISION} ) endif() diff --git a/samples/boards/nordic/spis_wakeup/wakeup_trigger/boards/nrf54h20dk_nrf54h20_common.dtsi b/samples/boards/nordic/spis_wakeup/wakeup_trigger/boards/nrf54h20dk_nrf54h20_common.dtsi new file mode 100644 index 0000000000000..c804bbd8e53c2 --- /dev/null +++ b/samples/boards/nordic/spis_wakeup/wakeup_trigger/boards/nrf54h20dk_nrf54h20_common.dtsi @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + aliases { + led = &led1; + }; + + leds { + compatible = "gpio-leds"; + led1: led_1 { + gpios = <&gpio9 1 GPIO_ACTIVE_HIGH>; + label = "Green LED 1"; + }; + }; +}; + +&gpiote130 { + status = "okay"; + owned-channels = <1>; +}; + +&gpio0 { + status = "okay"; +}; + +&gpio9 { + status = "okay"; +}; + +&pinctrl { + spi131_default_alt: spi131_default_alt { + group1 { + psels = , + , + ; + }; + }; + + spi131_sleep_alt: spi131_sleep_alt { + group1 { + psels = , + , + ; + low-power-enable; + }; + }; +}; + +&spi131 { + compatible = "nordic,nrf-spim"; + status = "okay"; + pinctrl-0 = <&spi131_default_alt>; + pinctrl-1 = <&spi131_sleep_alt>; + pinctrl-names = "default", "sleep"; + overrun-character = <0x00>; + cs-gpios = <&gpio0 11 GPIO_ACTIVE_LOW>; + wake-gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>; + zephyr,pm-device-runtime-auto; + spim_dt: spi-device@0 { + compatible = "vnd,spi-device"; + reg = <0>; + spi-max-frequency = ; + }; +}; + +&uart135 { + zephyr,pm-device-runtime-auto; +}; diff --git a/samples/boards/nordic/spis_wakeup/wakeup_trigger/boards/nrf54h20dk_nrf54h20_cpuppr_xip.conf b/samples/boards/nordic/spis_wakeup/wakeup_trigger/boards/nrf54h20dk_nrf54h20_cpuppr_xip.conf new file mode 100644 index 0000000000000..7b0ca9cbcfa38 --- /dev/null +++ b/samples/boards/nordic/spis_wakeup/wakeup_trigger/boards/nrf54h20dk_nrf54h20_cpuppr_xip.conf @@ -0,0 +1 @@ +CONFIG_ASSERT=n diff --git a/samples/boards/nordic/spis_wakeup/wakeup_trigger/boards/nrf54h20dk_nrf54h20_cpuppr_xip.overlay b/samples/boards/nordic/spis_wakeup/wakeup_trigger/boards/nrf54h20dk_nrf54h20_cpuppr_xip.overlay new file mode 100644 index 0000000000000..0e01ff40bb9e8 --- /dev/null +++ b/samples/boards/nordic/spis_wakeup/wakeup_trigger/boards/nrf54h20dk_nrf54h20_cpuppr_xip.overlay @@ -0,0 +1,6 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "nrf54h20dk_nrf54h20_common.dtsi" diff --git a/samples/boards/nordic/spis_wakeup/wakeup_trigger/boards/nrf54h20dk_nrf54h20_cpurad.conf b/samples/boards/nordic/spis_wakeup/wakeup_trigger/boards/nrf54h20dk_nrf54h20_cpurad.conf new file mode 100644 index 0000000000000..9eaa8724bb39a --- /dev/null +++ b/samples/boards/nordic/spis_wakeup/wakeup_trigger/boards/nrf54h20dk_nrf54h20_cpurad.conf @@ -0,0 +1,3 @@ +CONFIG_PM=y + +CONFIG_ASSERT=y diff --git a/samples/boards/nordic/spis_wakeup/wakeup_trigger/boards/nrf54h20dk_nrf54h20_cpurad.overlay b/samples/boards/nordic/spis_wakeup/wakeup_trigger/boards/nrf54h20dk_nrf54h20_cpurad.overlay index c54fb28742e96..846a44d165a35 100644 --- a/samples/boards/nordic/spis_wakeup/wakeup_trigger/boards/nrf54h20dk_nrf54h20_cpurad.overlay +++ b/samples/boards/nordic/spis_wakeup/wakeup_trigger/boards/nrf54h20dk_nrf54h20_cpurad.overlay @@ -3,70 +3,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -/ { - aliases { - led = &led1; - }; - - leds { - compatible = "gpio-leds"; - led1: led_1 { - gpios = <&gpio9 1 GPIO_ACTIVE_HIGH>; - label = "Green LED 1"; - }; - }; -}; - -&gpiote130 { - status = "okay"; - owned-channels = <1>; -}; - -&gpio0 { - status = "okay"; -}; - -&gpio9 { - status = "okay"; -}; - -&pinctrl { - spi131_default_alt: spi131_default_alt { - group1 { - psels = , - , - ; - }; - }; - - spi131_sleep_alt: spi131_sleep_alt { - group1 { - psels = , - , - ; - low-power-enable; - }; - }; -}; +#include "nrf54h20dk_nrf54h20_common.dtsi" &spi131 { - compatible = "nordic,nrf-spim"; - status = "okay"; - pinctrl-0 = <&spi131_default_alt>; - pinctrl-1 = <&spi131_sleep_alt>; - pinctrl-names = "default", "sleep"; - overrun-character = <0x00>; - cs-gpios = <&gpio0 11 GPIO_ACTIVE_LOW>; - wake-gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>; - zephyr,pm-device-runtime-auto; memory-regions = <&cpurad_dma_region>; - spim_dt: spi-device@0 { - compatible = "vnd,spi-device"; - reg = <0>; - spi-max-frequency = ; - }; -}; - -&uart135 { - zephyr,pm-device-runtime-auto; }; diff --git a/samples/boards/nordic/spis_wakeup/wakeup_trigger/prj.conf b/samples/boards/nordic/spis_wakeup/wakeup_trigger/prj.conf index ad4577807f895..662d75582fea0 100644 --- a/samples/boards/nordic/spis_wakeup/wakeup_trigger/prj.conf +++ b/samples/boards/nordic/spis_wakeup/wakeup_trigger/prj.conf @@ -2,10 +2,7 @@ CONFIG_SPI=y CONFIG_SPI_NRFX_WAKE_TIMEOUT_US=500 CONFIG_GPIO=y -CONFIG_PM=y CONFIG_PM_DEVICE=y CONFIG_PM_DEVICE_RUNTIME=y -CONFIG_ASSERT=y - CONFIG_LOG=y