iio: gyro: bmg160: remove redundant field
Replace the 'timestamp' field in struct bmg160_data with the identically named field in iio_poll_func and with calls to iio_get_time_ns(). The reported timestamps may be slightly different, but the advantage is that we no longer assume that the buffer of bmg160 is triggered by its own trigger. Signed-off-by: Vlad Dogaru <vlad.dogaru@intel.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
Родитель
fcc1b2f57d
Коммит
eb2191017e
|
@ -108,7 +108,6 @@ struct bmg160_data {
|
||||||
int slope_thres;
|
int slope_thres;
|
||||||
bool dready_trigger_on;
|
bool dready_trigger_on;
|
||||||
bool motion_trigger_on;
|
bool motion_trigger_on;
|
||||||
int64_t timestamp;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum bmg160_axis {
|
enum bmg160_axis {
|
||||||
|
@ -835,7 +834,7 @@ static irqreturn_t bmg160_trigger_handler(int irq, void *p)
|
||||||
mutex_unlock(&data->mutex);
|
mutex_unlock(&data->mutex);
|
||||||
|
|
||||||
iio_push_to_buffers_with_timestamp(indio_dev, data->buffer,
|
iio_push_to_buffers_with_timestamp(indio_dev, data->buffer,
|
||||||
data->timestamp);
|
pf->timestamp);
|
||||||
err:
|
err:
|
||||||
iio_trigger_notify_done(indio_dev->trig);
|
iio_trigger_notify_done(indio_dev->trig);
|
||||||
|
|
||||||
|
@ -938,21 +937,21 @@ static irqreturn_t bmg160_event_handler(int irq, void *private)
|
||||||
IIO_MOD_X,
|
IIO_MOD_X,
|
||||||
IIO_EV_TYPE_ROC,
|
IIO_EV_TYPE_ROC,
|
||||||
dir),
|
dir),
|
||||||
data->timestamp);
|
iio_get_time_ns());
|
||||||
if (ret & BMG160_ANY_MOTION_BIT_Y)
|
if (ret & BMG160_ANY_MOTION_BIT_Y)
|
||||||
iio_push_event(indio_dev, IIO_MOD_EVENT_CODE(IIO_ANGL_VEL,
|
iio_push_event(indio_dev, IIO_MOD_EVENT_CODE(IIO_ANGL_VEL,
|
||||||
0,
|
0,
|
||||||
IIO_MOD_Y,
|
IIO_MOD_Y,
|
||||||
IIO_EV_TYPE_ROC,
|
IIO_EV_TYPE_ROC,
|
||||||
dir),
|
dir),
|
||||||
data->timestamp);
|
iio_get_time_ns());
|
||||||
if (ret & BMG160_ANY_MOTION_BIT_Z)
|
if (ret & BMG160_ANY_MOTION_BIT_Z)
|
||||||
iio_push_event(indio_dev, IIO_MOD_EVENT_CODE(IIO_ANGL_VEL,
|
iio_push_event(indio_dev, IIO_MOD_EVENT_CODE(IIO_ANGL_VEL,
|
||||||
0,
|
0,
|
||||||
IIO_MOD_Z,
|
IIO_MOD_Z,
|
||||||
IIO_EV_TYPE_ROC,
|
IIO_EV_TYPE_ROC,
|
||||||
dir),
|
dir),
|
||||||
data->timestamp);
|
iio_get_time_ns());
|
||||||
|
|
||||||
ack_intr_status:
|
ack_intr_status:
|
||||||
if (!data->dready_trigger_on) {
|
if (!data->dready_trigger_on) {
|
||||||
|
@ -973,8 +972,6 @@ static irqreturn_t bmg160_data_rdy_trig_poll(int irq, void *private)
|
||||||
struct iio_dev *indio_dev = private;
|
struct iio_dev *indio_dev = private;
|
||||||
struct bmg160_data *data = iio_priv(indio_dev);
|
struct bmg160_data *data = iio_priv(indio_dev);
|
||||||
|
|
||||||
data->timestamp = iio_get_time_ns();
|
|
||||||
|
|
||||||
if (data->dready_trigger_on)
|
if (data->dready_trigger_on)
|
||||||
iio_trigger_poll(data->dready_trig);
|
iio_trigger_poll(data->dready_trig);
|
||||||
else if (data->motion_trigger_on)
|
else if (data->motion_trigger_on)
|
||||||
|
@ -1105,7 +1102,7 @@ static int bmg160_probe(struct i2c_client *client,
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = iio_triggered_buffer_setup(indio_dev,
|
ret = iio_triggered_buffer_setup(indio_dev,
|
||||||
NULL,
|
iio_pollfunc_store_time,
|
||||||
bmg160_trigger_handler,
|
bmg160_trigger_handler,
|
||||||
NULL);
|
NULL);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче