diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2016-07-04 12:26:05 +0200 |
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2016-07-04 12:26:05 +0200 |
| commit | 8658be133baa92c06b6d832a436d437deb2e2a22 (patch) | |
| tree | 8f798f4aae5892533831487e4838a85b95414a0f /drivers/iio/common/st_sensors/st_sensors_buffer.c | |
| parent | Merge tag 'irqchip-core-4.8-2' of git://git.infradead.org/users/jcooper/linux... (diff) | |
| parent | genirq: Add a helper to spread an affinity mask for MSI/MSI-X vectors (diff) | |
| download | linux-8658be133baa92c06b6d832a436d437deb2e2a22.tar.gz linux-8658be133baa92c06b6d832a436d437deb2e2a22.zip | |
Merge branch 'irq/for-block' into irq/core
Pull the irq affinity managing code which is in a seperate branch for block
developers to pull.
Diffstat (limited to 'drivers/iio/common/st_sensors/st_sensors_buffer.c')
| -rw-r--r-- | drivers/iio/common/st_sensors/st_sensors_buffer.c | 25 |
1 files changed, 7 insertions, 18 deletions
diff --git a/drivers/iio/common/st_sensors/st_sensors_buffer.c b/drivers/iio/common/st_sensors/st_sensors_buffer.c index c55898543a47..f1693dbebb8a 100644 --- a/drivers/iio/common/st_sensors/st_sensors_buffer.c +++ b/drivers/iio/common/st_sensors/st_sensors_buffer.c @@ -57,31 +57,20 @@ irqreturn_t st_sensors_trigger_handler(int irq, void *p) struct iio_poll_func *pf = p; struct iio_dev *indio_dev = pf->indio_dev; struct st_sensor_data *sdata = iio_priv(indio_dev); + s64 timestamp; - /* If we have a status register, check if this IRQ came from us */ - if (sdata->sensor_settings->drdy_irq.addr_stat_drdy) { - u8 status; - - len = sdata->tf->read_byte(&sdata->tb, sdata->dev, - sdata->sensor_settings->drdy_irq.addr_stat_drdy, - &status); - if (len < 0) - dev_err(sdata->dev, "could not read channel status\n"); - - /* - * If this was not caused by any channels on this sensor, - * return IRQ_NONE - */ - if (!(status & (u8)indio_dev->active_scan_mask[0])) - return IRQ_NONE; - } + /* If we do timetamping here, do it before reading the values */ + if (sdata->hw_irq_trigger) + timestamp = sdata->hw_timestamp; + else + timestamp = iio_get_time_ns(); len = st_sensors_get_buffer_element(indio_dev, sdata->buffer_data); if (len < 0) goto st_sensors_get_buffer_element_error; iio_push_to_buffers_with_timestamp(indio_dev, sdata->buffer_data, - pf->timestamp); + timestamp); st_sensors_get_buffer_element_error: iio_trigger_notify_done(indio_dev->trig); |
