Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions boards/nordic/nrf54h20dk/nrf54h20dk_nrf54h20-ipc_conf_iron.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*
* Copyright (c) 2025 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/

/* This file is to be merged with the original ipc_conf.dtsi in the future. */

/ {
ipc {
/delete-node/ ipc-1-2;
/delete-node/ ipc-1-3;

cpusec_cpuapp_ipc: ipc-1-2 {
compatible = "nordic,ironside-call";
memory-region = <&cpusec_cpuapp_ipc_shm>;
mboxes = <&cpusec_bellboard 12>,
<&cpuapp_bellboard 0>;
status = "disabled";
};

cpusec_cpurad_ipc: ipc-1-3 {
compatible = "nordic,ironside-call";
memory-region = <&cpusec_cpurad_ipc_shm>;
mboxes = <&cpusec_bellboard 18>,
<&cpurad_bellboard 0>;
status = "disabled";
};
};
};
104 changes: 104 additions & 0 deletions boards/nordic/nrf54h20dk/nrf54h20dk_nrf54h20-memory_map_iron.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
/*
* Copyright (c) 2025 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/

/* This file is to be merged with the original memory_map.dtsi in the future.
* The following nodes will be replaced:
*/
/delete-node/ &cpuapp_cpusec_ipc_shm;
/delete-node/ &cpuapp_cpusys_ipc_shm;
/delete-node/ &cpurad_cpusec_ipc_shm;
/delete-node/ &cpurad_cpusys_ipc_shm;
/delete-node/ &cpusec_cpuapp_ipc_shm;
/delete-node/ &cpusec_cpurad_ipc_shm;
/delete-node/ &cpusys_cpuapp_ipc_shm;
/delete-node/ &cpusys_cpurad_ipc_shm;
/delete-node/ &cpuapp_rw_partitions;
/delete-node/ &cpuapp_rx_partitions;
/delete-node/ &cpurad_rx_partitions;

/ {
reserved-memory {
cpuapp_cpusys_ipc_shm: memory@2f88f600 {
reg = <0x2f88f600 0x80>;
};

cpusys_cpuapp_ipc_shm: memory@2f88f680 {
reg = <0x2f88f680 0x80>;
};

cpurad_cpusys_ipc_shm: memory@2f88f700 {
reg = <0x2f88f700 0x80>;
};

cpusys_cpurad_ipc_shm: memory@2f88f780 {
reg = <0x2f88f780 0x80>;
};

cpusec_cpurad_ipc_shm: memory@2f88f800 {
reg = <0x2f88f800 0x80>;
};

cpurad_ironside_se_event_report: memory@2f88f880 {
reg = <0x2f88f880 0x100>;
};

cpurad_ironside_se_boot_report: memory@2f88f980 {
reg = <0x2f88f980 0x200>;
};

cpusec_cpuapp_ipc_shm: memory@2f88fb80 {
reg = <0x2f88fb80 0x80>;
};

cpuapp_ironside_se_event_report: memory@2f88fc00 {
reg = <0x2f88fc00 0x100>;
};

cpuapp_ironside_se_boot_report: memory@2f88fd00 {
reg = <0x2f88fd00 0x200>;
};
};
};

&mram1x {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;

cpuapp_boot_partition: partition@2c000 {
reg = <0x2c000 DT_SIZE_K(64)>;
};

cpuapp_slot0_partition: partition@3c000 {
reg = <0x3c000 DT_SIZE_K(336)>;
};

cpurad_slot0_partition: partition@90000 {
reg = <0x90000 DT_SIZE_K(336)>;
};

cpuppr_code_partition: partition@e4000 {
reg = <0xe4000 DT_SIZE_K(64)>;
};

cpuflpr_code_partition: partition@f4000 {
reg = <0xf4000 DT_SIZE_K(48)>;
};

cpuapp_slot1_partition: partition@100000 {
reg = <0x100000 DT_SIZE_K(336)>;
};

cpurad_slot1_partition: partition@154000 {
reg = <0x154000 DT_SIZE_K(336)>;
};

storage_partition: partition@1a8000 {
reg = <0x1a8000 DT_SIZE_K(40)>;
};
};
};
80 changes: 14 additions & 66 deletions boards/nordic/nrf54h20dk/nrf54h20dk_nrf54h20_cpuapp_iron.dts
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,10 @@
*/

#include "nrf54h20dk_nrf54h20_cpuapp.dts"
#include "nrf54h20dk_nrf54h20-ipc_conf_iron.dtsi"
#include "nrf54h20dk_nrf54h20-memory_map_iron.dtsi"

/delete-node/&cpurad_rx_partitions;
/delete-node/&cpuapp_rx_partitions;

/* Update the location of cpusys IPC shared memory */
/delete-node/&cpuapp_cpusys_ipc_shm;
/delete-node/&cpusys_cpuapp_ipc_shm;
/delete-node/&cpurad_cpusys_ipc_shm;
/delete-node/&cpusys_cpurad_ipc_shm;

/* This is not yet an exhaustive memory map, and contain only a minimum required to boot
* the application core.
*/
/delete-node/ &cpusec_cpurad_ipc;

/ {
chosen {
Expand All @@ -26,62 +17,19 @@
};
};

&mram1x {
cpuapp_rx_partitions: cpuapp-rx-partitions {
compatible = "nordic,owned-partitions", "fixed-partitions";
nordic,access = <NRF_OWNER_ID_APPLICATION NRF_PERM_RXS>;
#address-cells = <1>;
#size-cells = <1>;

boot_partition: partition@2c000 {
label = "mcuboot";
reg = <0x2c000 DT_SIZE_K(64)>;
};

slot0_partition: partition@3c000 {
label = "image-0";
reg = <0x3c000 DT_SIZE_K(336)>;
};

slot1_partition: partition@90000 {
label = "image-1";
reg = <0x90000 DT_SIZE_K(336)>;
};

cpuppr_code_partition: partition@e4000 {
reg = <0xe4000 DT_SIZE_K(64)>;
};

cpuflpr_code_partition: partition@f4000 {
reg = <0xf4000 DT_SIZE_K(48)>;
};
};
&cpusec_cpuapp_ipc {
mbox-names = "tx", "rx";
status = "okay";
};

/ {
reserved-memory {
sysctrl_rom_report: memory@2f88ff00 {
reg = <0x2f88ff00 0x100>;
};

cpuapp_ironside_se_boot_report: memory@2f88fd00 {
reg = <0x2f88fd00 0x200>;
};

cpusys_cpurad_ipc_shm: memory@2f88f780 {
reg = <0x2f88f780 0x80>;
};

cpurad_cpusys_ipc_shm: memory@2f88f700 {
reg = <0x2f88f700 0x80>;
};
boot_partition: &cpuapp_boot_partition {
label = "mcuboot";
};

cpusys_cpuapp_ipc_shm: memory@2f88f680 {
reg = <0x2f88f680 0x80>;
};
slot0_partition: &cpuapp_slot0_partition {
label = "image-0";
};

cpuapp_cpusys_ipc_shm: memory@2f88f600 {
reg = <0x2f88f600 0x80>;
};
};
slot1_partition: &cpuapp_slot1_partition {
label = "image-1";
};
3 changes: 3 additions & 0 deletions drivers/firmware/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# SPDX-License-Identifier: Apache-2.0

# zephyr-keep-sorted-start
add_subdirectory(nrf_ironside)
add_subdirectory_ifdef(CONFIG_ARM_SCMI scmi)
# zephyr-keep-sorted-stop
3 changes: 3 additions & 0 deletions drivers/firmware/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ config ARM_SCMI
Enable support for ARM's System Configuration and Management
Interface (SCMI).

# zephyr-keep-sorted-start
source "drivers/firmware/nrf_ironside/Kconfig"
source "drivers/firmware/scmi/Kconfig"
# zephyr-keep-sorted-stop

endmenu
6 changes: 6 additions & 0 deletions drivers/firmware/nrf_ironside/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Copyright (c) 2025 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

zephyr_library()

zephyr_library_sources_ifdef(CONFIG_NRF_IRONSIDE_CALL call.c)
22 changes: 22 additions & 0 deletions drivers/firmware/nrf_ironside/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Copyright (c) 2025 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

config NRF_IRONSIDE_CALL
bool
depends on DT_HAS_NORDIC_IRONSIDE_CALL_ENABLED
depends on SOC_NRF54H20_IRON
select EVENTS
select MBOX
help
This is selected by features that require support for IRONside calls.

if NRF_IRONSIDE_CALL

config NRF_IRONSIDE_CALL_INIT_PRIORITY
int "IRONside calls' initialization priority"
default 41
help
Initialization priority of IRONside calls. It must be below MBOX_INIT_PRIORITY,
but higher than the priority of any feature that selects NRF_IRONSIDE_CALL.

endif # NRF_IRONSIDE_CALL
Loading