Re: [PATCH v2] iio: inv_mpu6050: Clear timestamps fifo while resetting hardware fifo
From: Jonathan Cameron
Date: Sun Mar 08 2015 - 07:32:01 EST
On 26/02/15 18:35, Ge Gao wrote:
> Look fine to me.
> Thanks.
>
> Best Regards,
>
> Ge GAO
>
Formal Acks preferred ;)
Anyhow, applied to the fixes-togreg branch of iio.git.
Thanks,
Jonathan
>
> -----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-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/