diff --git a/drivers/sensor/iis2mdc/iis2mdc.h b/drivers/sensor/iis2mdc/iis2mdc.h index fe70d053912..3f688b183f9 100644 --- a/drivers/sensor/iis2mdc/iis2mdc.h +++ b/drivers/sensor/iis2mdc/iis2mdc.h @@ -59,6 +59,7 @@ struct iis2mdc_data { struct gpio_callback gpio_cb; sensor_trigger_handler_t handler_drdy; + const struct sensor_trigger *trig_drdy; #if defined(CONFIG_IIS2MDC_TRIGGER_OWN_THREAD) K_KERNEL_STACK_MEMBER(thread_stack, CONFIG_IIS2MDC_THREAD_STACK_SIZE); diff --git a/drivers/sensor/iis2mdc/iis2mdc_trigger.c b/drivers/sensor/iis2mdc/iis2mdc_trigger.c index c98dd6061fc..7c911ec72de 100644 --- a/drivers/sensor/iis2mdc/iis2mdc_trigger.c +++ b/drivers/sensor/iis2mdc/iis2mdc_trigger.c @@ -36,6 +36,7 @@ int iis2mdc_trigger_set(const struct device *dev, if (trig->chan == SENSOR_CHAN_MAGN_XYZ) { iis2mdc->handler_drdy = handler; + iis2mdc->trig_drdy = trig; if (handler) { /* fetch raw data sample: re-trigger lost interrupt */ iis2mdc_magnetic_raw_get(iis2mdc->ctx, raw); @@ -54,12 +55,9 @@ static void iis2mdc_handle_interrupt(const struct device *dev) { struct iis2mdc_data *iis2mdc = dev->data; const struct iis2mdc_dev_config *const config = dev->config; - struct sensor_trigger drdy_trigger = { - .type = SENSOR_TRIG_DATA_READY, - }; if (iis2mdc->handler_drdy != NULL) { - iis2mdc->handler_drdy(dev, &drdy_trigger); + iis2mdc->handler_drdy(dev, iis2mdc->trig_drdy); } gpio_pin_interrupt_configure_dt(&config->gpio_drdy,