diff --git a/drivers/sensor/icm42688/icm42688_trigger.c b/drivers/sensor/icm42688/icm42688_trigger.c index 01e555a3f82f0c..4bf728b40545a8 100644 --- a/drivers/sensor/icm42688/icm42688_trigger.c +++ b/drivers/sensor/icm42688/icm42688_trigger.c @@ -35,16 +35,11 @@ static void icm42688_gpio_callback(const struct device *dev, struct gpio_callbac static void icm42688_thread_cb(const struct device *dev) { struct icm42688_dev_data *data = dev->data; - const struct icm42688_dev_cfg *cfg = dev->config; icm42688_lock(dev); if (data->data_ready_handler != NULL) { data->data_ready_handler(dev, data->data_ready_trigger); - } else { - uint8_t status; - - icm42688_spi_read(&cfg->spi, REG_INT_STATUS, &status, 1); } icm42688_unlock(dev); @@ -81,6 +76,7 @@ int icm42688_trigger_set(const struct device *dev, const struct sensor_trigger * { struct icm42688_dev_data *data = dev->data; const struct icm42688_dev_cfg *cfg = dev->config; + uint8_t status; int res = 0; if (trig == NULL || handler == NULL) { @@ -94,6 +90,10 @@ int icm42688_trigger_set(const struct device *dev, const struct sensor_trigger * case SENSOR_TRIG_DATA_READY: data->data_ready_handler = handler; data->data_ready_trigger = trig; + + icm42688_lock(dev); + icm42688_spi_read(&cfg->spi, REG_INT_STATUS, &status, 1); + icm42688_unlock(dev); break; default: res = -ENOTSUP;