FAILED: patch "[PATCH] iio: imu: inv_mpu6050: fix no data on MPU6050" failed to apply to 4.19-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 6e82ae6b8d11b948b74e71396efd8e074c415f44 Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Maneyrol <[email protected]>
Date: Wed, 16 Oct 2019 14:43:28 +0000
Subject: [PATCH] iio: imu: inv_mpu6050: fix no data on MPU6050
Some chips have a fifo overflow bit issue where the bit is always set. The result is that every data is dropped.
Change fifo overflow management by checking fifo count against a maximum value.
Add fifo size in chip hardware set of values.
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c +9 -0
@@ -114,54 +114,63 @@ static const struct inv_mpu6050_hw hw_info[] = { .name = "MPU6050", .reg = ®_set_6050, .config = &chip_config_6050, + .fifo_size = 1024, }, { .whoami = INV_MPU6500_WHOAMI_VALUE, .name = "MPU6500", .reg = ®_set_6500, .config = &chip_config_6050, + .fifo_size = 512, }, { .whoami = INV_MPU6515_WHOAMI_VALUE, .name = "MPU6515", .reg = ®_set_6500, .config = &chip_config_6050, + .fifo_size = 512, }, { .whoami = INV_MPU6000_WHOAMI_VALUE, .name = "MPU6000", .reg = ®_set_6050, .config = &chip_config_6050, + .fifo_size = 1024, }, { .whoami = INV_MPU9150_WHOAMI_VALUE, .name = "MPU9150", .reg = ®_set_6050, .config = &chip_config_6050, + .fifo_size = 1024, }, { .whoami = INV_MPU9250_WHOAMI_VALUE, .name = "MPU9250", .reg = ®_set_6500, .config = &chip_config_6050, + .fifo_size = 512, }, { .whoami = INV_MPU9255_WHOAMI_VALUE, .name = "MPU9255", .reg = ®_set_6500, .config = &chip_config_6050, + .fifo_size = 512, }, { .whoami = INV_ICM20608_WHOAMI_VALUE, .name = "ICM20608", .reg = ®_set_6500, .config = &chip_config_6050, + .fifo_size = 512, }, { .whoami = INV_ICM20602_WHOAMI_VALUE, .name = "ICM20602", .reg = ®_set_icm20602, .config = &chip_config_6050, + .fifo_size = 1008, }, };
drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h +2 -0
@@ -100,12 +100,14 @@ struct inv_mpu6050_chip_config {* @name: name of the chip. * @reg: register map of the chip. * @config: configuration of the chip. +* @fifo_size: size of the FIFO in bytes. */ struct inv_mpu6050_hw {u8 whoami;u8 *name;const struct inv_mpu6050_reg_map *reg;const struct inv_mpu6050_chip_config *config; +size_t fifo_size; };/*
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c +12 -3
@@ -180,9 +180,6 @@ irqreturn_t inv_mpu6050_read_fifo(int irq, void *p) "failed to ack interrupt\n"); goto flush_fifo; } -/* handle fifo overflow by reseting fifo */ -if (int_status &INV_MPU6050_BIT_FIFO_OVERFLOW_INT ) - goto flush_fifo;if (!(int_status &INV_MPU6050_BIT_RAW_DATA_RDY_INT )) {dev_warn (regmap_get_device (st->map),"spurious interrupt with status 0x%x\n" , int_status);
@@ -211,6 +208,18 @@ irqreturn_t inv_mpu6050_read_fifo(int irq, void *p)if (result) goto end_session; fifo_count =get_unaligned_be16 (&data[0 ]); + +/* +* Handle fifo overflow by resetting fifo. +* Reset if there is only 3 data set free remaining to mitigate +* possible delay between reading fifo count and fifo data. +*/ + nb =3 * bytes_per_datum; +if (fifo_count >= st->hw->fifo_size - nb) { +dev_warn (regmap_get_device (st->map),"fifo overflow reset\n" ); + goto flush_fifo; + } +/* compute and process all complete datum */ nb = fifo_count / bytes_per_datum;inv_mpu6050_update_period (st, pf->timestamp, nb);
Sasha Levin
maintainerQuoted 23 lines · On Mon, Nov 11, 2019 at 07:22:11AM +0100, [email protected] wrote:
The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From
6e82ae6b8d11b948b74e71396efd8e074c415f44Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Maneyrol <[email protected]>
Date: Wed, 16 Oct 2019 14:43:28 +0000
Subject: [PATCH] iio: imu:inv_mpu6050: fix no data on MPU6050Some chips have a fifo overflow bit issue where the bit is always set. The result is that every data is dropped.
Change fifo overflow management by checking fifo count against a maximum value.
Quoted 6 lines
Add fifo size in chip hardware set of values.
Fixes f5057e7b2dba ("iio: imu: inv_mpu6050: better fifo overflow handling")Signed-off-by Jean-Baptiste Maneyrol <[email protected]>Signed-off-by Jonathan Cameron <[email protected]>
I've resolved the conflict by also queueing up 22904bdff978 ("iio: imu:
mpu6050: Add support for the ICM 20602 IMU") on 4.19.
Signature · 2 lines
Thanks, Sasha