@@ -107,9 +107,19 @@ LOG_MODULE_REGISTER(MODULE, CONFIG_DESKTOP_CONFIG_CHANNEL_DFU_LOG_LEVEL);
107107 BUILD_ASSERT (DT_FIXED_PARTITION_EXISTS (MCUBOOT_SECONDARY_NODE ),
108108 "Missing secondary partition definition in DTS." );
109109
110- #define CODE_PARTITION_START_ADDR DT_FIXED_PARTITION_ADDR(CODE_PARTITION_NODE)
111- #define MCUBOOT_PRIMARY_START_ADDR DT_FIXED_PARTITION_ADDR(MCUBOOT_PRIMARY_NODE)
112- #define MCUBOOT_SECONDARY_START_ADDR DT_FIXED_PARTITION_ADDR(MCUBOOT_SECONDARY_NODE)
110+
111+ /* DT_FIXED_PARTITION_ADDR is not supported on nRF54H20.
112+ * See: https://github.com/zephyrproject-rtos/zephyr/pull/96808
113+ */
114+ #define PARTITION_ADDR_FIXED (node ) (DT_REG_ADDR(node_id) + \
115+ DT_REG_ADDR(DT_GPARENT(node_id)))
116+ #define CODE_PARTITION_START_ADDR PARTITION_ADDR_FIXED(CODE_PARTITION_NODE)
117+ #define MCUBOOT_PRIMARY_START_ADDR PARTITION_ADDR_FIXED(MCUBOOT_PRIMARY_NODE)
118+ #define MCUBOOT_SECONDARY_START_ADDR PARTITION_ADDR_FIXED(MCUBOOT_SECONDARY_NODE)
119+ #define MCUBOOT_PRIMARY_END_ADDR (MCUBOOT_PRIMARY_START_ADDR + \
120+ DT_REG_SIZE(MCUBOOT_PRIMARY_NODE0))
121+ #define MCUBOOT_SECOARY_END_ADDR (MCUBOOT_SECONDARY_START_ADDR + \
122+ DT_REG_SIZE(MCUBOOT_SECONDARY_NODE0))
113123
114124 #if MCUBOOT_PRIMARY_START_ADDR == MCUBOOT_SECONDARY_START_ADDR
115125 #error Primary and secondary partitions cannot have the same address.
@@ -118,9 +128,11 @@ LOG_MODULE_REGISTER(MODULE, CONFIG_DESKTOP_CONFIG_CHANNEL_DFU_LOG_LEVEL);
118128 #define MCUBOOT_PRIMARY_SLOT_ID DT_FIXED_PARTITION_ID(MCUBOOT_PRIMARY_NODE)
119129 #define MCUBOOT_SECONDARY_SLOT_ID DT_FIXED_PARTITION_ID(MCUBOOT_SECONDARY_NODE)
120130
121- #if CODE_PARTITION_START_ADDR == MCUBOOT_PRIMARY_START_ADDR
131+ #if (CODE_PARTITION_START_ADDR >= MCUBOOT_PRIMARY_START_ADDR ) &&
132+ (CODE_PARTITION_START_ADDR < MCUBOOT_PRIMARY_END_ADDR )
122133 #define DFU_SLOT_ID MCUBOOT_SECONDARY_SLOT_ID
123- #elif CODE_PARTITION_START_ADDR == MCUBOOT_SECONDARY_START_ADDR
134+ #elif (CODE_PARTITION_START_ADDR >= MCUBOOT_SECONDARY_START_ADDR ) &&
135+ (CODE_PARTITION_START_ADDR < MCUBOOT_SECONDARY_END_ADDR )
124136 #define DFU_SLOT_ID MCUBOOT_PRIMARY_SLOT_ID
125137 #else
126138 #error Missing partition definitions in DTS.
0 commit comments