From b079316b4e3e55720231ca08fcb7df0e4e12268b Mon Sep 17 00:00:00 2001 From: Maureen Helm Date: Wed, 8 Mar 2023 15:51:41 -0600 Subject: [PATCH] drivers: sensor: iis2mdc: Store sensor trigger as a pointer Fixes the iis2mdc sensor driver to store the user-supplied sensor trigger as a pointer rather than a copy. This enables the trigger handler to use CONTAINER_OF to retrieve a context pointer when the trigger is embedded in a larger struct. Signed-off-by: Maureen Helm --- drivers/sensor/iis2mdc/iis2mdc.h | 1 + drivers/sensor/iis2mdc/iis2mdc_trigger.c | 6 ++---- 2 files changed, 3 insertions(+), 4 deletions(-) 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,