Look fine to me. Thanks. Best Regards, Ge GAO -----Original Message----- From: Jonathan Cameron [mailto:jic23@xxxxxxxxxx] Sent: Saturday, February 21, 2015 11:01 AM To: Viorel Suman; linux-iio@xxxxxxxxxxxxxxx Cc: linux-kernel@xxxxxxxxxxxxxxx; Srinivas Pandruvada; Ge Gao Subject: Re: [PATCH v2] iio: inv_mpu6050: Clear timestamps fifo while resetting hardware fifo On 18/02/15 18:05, Viorel Suman wrote: > A hardware fifo reset always imply an invalidation of the existing > timestamps, so we'll clear timestamps fifo on successfull hardware > fifo reset. > > Signed-off-by: Viorel Suman <viorel.suman@xxxxxxxxx> Looks sensible to me. Ge / Srinivas? > --- > v2: Addressed Jonathan's comment regarding the subject prefix. > > drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c | 25 > ++++++++++++++----------- > 1 file changed, 14 insertions(+), 11 deletions(-) > > diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c > b/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c > index 0cd306a..ba27e27 100644 > --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c > +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c > @@ -24,6 +24,16 @@ > #include <linux/poll.h> > #include "inv_mpu_iio.h" > > +static void inv_clear_kfifo(struct inv_mpu6050_state *st) { > + unsigned long flags; > + > + /* take the spin lock sem to avoid interrupt kick in */ > + spin_lock_irqsave(&st->time_stamp_lock, flags); > + kfifo_reset(&st->timestamps); > + spin_unlock_irqrestore(&st->time_stamp_lock, flags); } > + > int inv_reset_fifo(struct iio_dev *indio_dev) { > int result; > @@ -50,6 +60,10 @@ int inv_reset_fifo(struct iio_dev *indio_dev) > INV_MPU6050_BIT_FIFO_RST); > if (result) > goto reset_fifo_fail; > + > + /* clear timestamps fifo */ > + inv_clear_kfifo(st); > + > /* enable interrupt */ > if (st->chip_config.accl_fifo_enable || > st->chip_config.gyro_fifo_enable) { @@ -83,16 +97,6 @@ > reset_fifo_fail: > return result; > } > > -static void inv_clear_kfifo(struct inv_mpu6050_state *st) -{ > - unsigned long flags; > - > - /* take the spin lock sem to avoid interrupt kick in */ > - spin_lock_irqsave(&st->time_stamp_lock, flags); > - kfifo_reset(&st->timestamps); > - spin_unlock_irqrestore(&st->time_stamp_lock, flags); > -} > - > /** > * inv_mpu6050_irq_handler() - Cache a timestamp at each data ready interrupt. > */ > @@ -184,7 +188,6 @@ end_session: > flush_fifo: > /* Flush HW and SW FIFOs. */ > inv_reset_fifo(indio_dev); > - inv_clear_kfifo(st); > mutex_unlock(&indio_dev->mlock); > iio_trigger_notify_done(indio_dev->trig); > > -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html