staging: iio: lis3l02dq add a thresh_timestamp field to state for no ring case
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk> Acked-by: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Родитель
34f57cc789
Коммит
b98c9e60a4
|
@ -151,6 +151,7 @@ Form of high byte dependant on justification set in ctrl reg */
|
|||
* @helper: data and func pointer allowing generic functions
|
||||
* @us: actual spi_device
|
||||
* @work_thresh: bh for threshold events
|
||||
* @thresh_timestamp: timestamp for threshold interrupts.
|
||||
* @inter: used to check if new interrupt has been triggered
|
||||
* @trig: data ready trigger registered with iio
|
||||
* @tx: transmit buffer
|
||||
|
@ -161,6 +162,7 @@ struct lis3l02dq_state {
|
|||
struct iio_sw_ring_helper_state help;
|
||||
struct spi_device *us;
|
||||
struct work_struct work_thresh;
|
||||
s64 thresh_timestamp;
|
||||
bool inter;
|
||||
struct iio_trigger *trig;
|
||||
u8 *tx;
|
||||
|
|
|
@ -615,7 +615,7 @@ static int lis3l02dq_thresh_handler_th(struct iio_dev *indio_dev,
|
|||
struct lis3l02dq_state *st = lis3l02dq_h_to_s(h);
|
||||
|
||||
/* Stash the timestamp somewhere convenient for the bh */
|
||||
h->last_timestamp = timestamp;
|
||||
st->thresh_timestamp = timestamp;
|
||||
schedule_work(&st->work_thresh);
|
||||
|
||||
return 0;
|
||||
|
@ -640,32 +640,32 @@ static void lis3l02dq_thresh_handler_bh_no_check(struct work_struct *work_s)
|
|||
if (t & LIS3L02DQ_REG_WAKE_UP_SRC_INTERRUPT_Z_HIGH)
|
||||
iio_push_event(st->help.indio_dev, 0,
|
||||
IIO_EVENT_CODE_ACCEL_Z_HIGH,
|
||||
st->help.last_timestamp);
|
||||
st->thresh_timestamp);
|
||||
|
||||
if (t & LIS3L02DQ_REG_WAKE_UP_SRC_INTERRUPT_Z_LOW)
|
||||
iio_push_event(st->help.indio_dev, 0,
|
||||
IIO_EVENT_CODE_ACCEL_Z_LOW,
|
||||
st->help.last_timestamp);
|
||||
st->thresh_timestamp);
|
||||
|
||||
if (t & LIS3L02DQ_REG_WAKE_UP_SRC_INTERRUPT_Y_HIGH)
|
||||
iio_push_event(st->help.indio_dev, 0,
|
||||
IIO_EVENT_CODE_ACCEL_Y_HIGH,
|
||||
st->help.last_timestamp);
|
||||
st->thresh_timestamp);
|
||||
|
||||
if (t & LIS3L02DQ_REG_WAKE_UP_SRC_INTERRUPT_Y_LOW)
|
||||
iio_push_event(st->help.indio_dev, 0,
|
||||
IIO_EVENT_CODE_ACCEL_Y_LOW,
|
||||
st->help.last_timestamp);
|
||||
st->thresh_timestamp);
|
||||
|
||||
if (t & LIS3L02DQ_REG_WAKE_UP_SRC_INTERRUPT_X_HIGH)
|
||||
iio_push_event(st->help.indio_dev, 0,
|
||||
IIO_EVENT_CODE_ACCEL_X_HIGH,
|
||||
st->help.last_timestamp);
|
||||
st->thresh_timestamp);
|
||||
|
||||
if (t & LIS3L02DQ_REG_WAKE_UP_SRC_INTERRUPT_X_LOW)
|
||||
iio_push_event(st->help.indio_dev, 0,
|
||||
IIO_EVENT_CODE_ACCEL_X_LOW,
|
||||
st->help.last_timestamp);
|
||||
st->thresh_timestamp);
|
||||
/* reenable the irq */
|
||||
enable_irq(st->us->irq);
|
||||
/* Ack and allow for new interrupts */
|
||||
|
|
Загрузка…
Ссылка в новой задаче