@@ -35,8 +35,10 @@ struct esp32_ipm_memory {
3535struct esp32_ipm_config {
3636 int irq_source_pro_cpu ;
3737 int irq_priority_pro_cpu ;
38+ int irq_flags_pro_cpu ;
3839 int irq_source_app_cpu ;
3940 int irq_priority_app_cpu ;
41+ int irq_flags_app_cpu ;
4042};
4143
4244struct esp32_ipm_data {
@@ -222,6 +224,7 @@ static int esp32_ipm_init(const struct device *dev)
222224 if (data -> this_core_id == 0 ) {
223225 ret = esp_intr_alloc (cfg -> irq_source_pro_cpu ,
224226 ESP_PRIO_TO_FLAGS (cfg -> irq_priority_pro_cpu ) |
227+ ESP_INT_FLAGS_CHECK (cfg -> irq_flags_pro_cpu ) |
225228 ESP_INTR_FLAG_IRAM ,
226229 (intr_handler_t )esp32_ipm_isr ,
227230 (void * )dev ,
@@ -239,6 +242,7 @@ static int esp32_ipm_init(const struct device *dev)
239242 */
240243 ret = esp_intr_alloc (cfg -> irq_source_app_cpu ,
241244 ESP_PRIO_TO_FLAGS (cfg -> irq_priority_app_cpu ) |
245+ ESP_INT_FLAGS_CHECK (cfg -> irq_flags_app_cpu ) |
242246 ESP_INTR_FLAG_IRAM ,
243247 (intr_handler_t )esp32_ipm_isr ,
244248 (void * )dev ,
@@ -283,8 +287,10 @@ static const struct ipm_driver_api esp32_ipm_driver_api = {
283287static struct esp32_ipm_config esp32_ipm_device_cfg_##idx = { \
284288 .irq_source_pro_cpu = DT_INST_IRQ_BY_IDX(idx, 0, irq), \
285289 .irq_priority_pro_cpu = DT_INST_IRQ_BY_IDX(idx, 0, priority), \
290+ .irq_flags_pro_cpu = DT_INST_IRQ_BY_IDX(idx, 0, flags), \
286291 .irq_source_app_cpu = DT_INST_IRQ_BY_IDX(idx, 1, irq), \
287292 .irq_priority_app_cpu = DT_INST_IRQ_BY_IDX(idx, 1, priority), \
293+ .irq_flags_app_cpu = DT_INST_IRQ_BY_IDX(idx, 1, flags), \
288294}; \
289295 \
290296static struct esp32_ipm_data esp32_ipm_device_data_##idx = { \
0 commit comments