Re: [PATCH v2] iio: inv_mpu6050: Clear timestamps fifo while resetting hardware fifo

From: Jonathan Cameron
Date: Sun Mar 08 2015 - 07:33:28 EST


On 08/03/15 11:31, Jonathan Cameron wrote:
> 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.
Forgot to say - marked for stable as well.

>
> 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-iio" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>

--
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/