* [PATCH] iio: imu: inv_mpu6050: fix swapped accel and gyro startup times
@ 2026-10-11 4:57 Arnav Kapoor
2026-10-12 7:54 ` Jean-Baptiste Maneyrol
0 siblings, 1 reply; 3+ messages in thread
From: Arnav Kapoor @ 2026-10-11 4:57 UTC (permalink / raw)
To: Jean-Baptiste Maneyrol, Jonathan Cameron
Cc: David Lechner, Nuno Sá,
Andy Shevchenko, linux-iio, linux-kernel, Arnav Kapoor
struct inv_mpu6050_hw declares startup_time as { accel, gyro }, but
every entry of hw_info[] initializes it positionally as
{ *_GYRO_STARTUP_TIME, *_ACCEL_STARTUP_TIME }, so the two values are
swapped for all chips.
inv_mpu6050_switch_engine() waits for startup_time.gyro after enabling
the gyroscope, so it waits for the accelerometer startup time instead,
e.g. 20 ms instead of 60 ms on MPU6050 and 20 ms instead of 100 ms on
ICM20602, and the first gyroscope samples can be read before the sensor
has settled. Enabling only the accelerometer waits longer than needed.
Use designated initializers, so each value is assigned to the member it
is named after.
Fixes: e46a36d92da0 ("Add startup time for each chip using inv_mpu6050 driver")
Assisted-by: LLM
Signed-off-by: Arnav Kapoor <kapoorarnav43@gmail.com>
---
Compile-tested only (W=1); I don't have the hardware. I checked the
built object: before this patch hw_info[] has e.g. accel=60, gyro=20 for
MPU6050 and accel=100, gyro=20 for ICM20602; after it accel=20, gyro=60
and accel=20, gyro=100, matching the *_STARTUP_TIME defines.
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 95 +++++++++++++++++-----
1 file changed, 76 insertions(+), 19 deletions(-)
diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
index 38c3f3b398d4..b26d1d401aaf 100644
--- a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
+++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
@@ -150,7 +150,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
.config = &chip_config_6050,
.fifo_size = 1024,
.temp = {INV_MPU6050_TEMP_OFFSET, INV_MPU6050_TEMP_SCALE},
- .startup_time = {INV_MPU6050_GYRO_STARTUP_TIME, INV_MPU6050_ACCEL_STARTUP_TIME},
+ .startup_time = {
+ .accel = INV_MPU6050_ACCEL_STARTUP_TIME,
+ .gyro = INV_MPU6050_GYRO_STARTUP_TIME,
+ },
},
{
.whoami = INV_MPU6500_WHOAMI_VALUE,
@@ -159,7 +162,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
.config = &chip_config_6500,
.fifo_size = 512,
.temp = {INV_MPU6500_TEMP_OFFSET, INV_MPU6500_TEMP_SCALE},
- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
+ .startup_time = {
+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
+ },
},
{
.whoami = INV_MPU6515_WHOAMI_VALUE,
@@ -168,7 +174,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
.config = &chip_config_6500,
.fifo_size = 512,
.temp = {INV_MPU6500_TEMP_OFFSET, INV_MPU6500_TEMP_SCALE},
- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
+ .startup_time = {
+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
+ },
},
{
.whoami = INV_MPU6880_WHOAMI_VALUE,
@@ -177,7 +186,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
.config = &chip_config_6500,
.fifo_size = 4096,
.temp = {INV_MPU6500_TEMP_OFFSET, INV_MPU6500_TEMP_SCALE},
- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
+ .startup_time = {
+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
+ },
},
{
.whoami = INV_MPU6000_WHOAMI_VALUE,
@@ -186,7 +198,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
.config = &chip_config_6050,
.fifo_size = 1024,
.temp = {INV_MPU6050_TEMP_OFFSET, INV_MPU6050_TEMP_SCALE},
- .startup_time = {INV_MPU6050_GYRO_STARTUP_TIME, INV_MPU6050_ACCEL_STARTUP_TIME},
+ .startup_time = {
+ .accel = INV_MPU6050_ACCEL_STARTUP_TIME,
+ .gyro = INV_MPU6050_GYRO_STARTUP_TIME,
+ },
},
{
.whoami = INV_MPU9150_WHOAMI_VALUE,
@@ -195,7 +210,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
.config = &chip_config_6050,
.fifo_size = 1024,
.temp = {INV_MPU6050_TEMP_OFFSET, INV_MPU6050_TEMP_SCALE},
- .startup_time = {INV_MPU6050_GYRO_STARTUP_TIME, INV_MPU6050_ACCEL_STARTUP_TIME},
+ .startup_time = {
+ .accel = INV_MPU6050_ACCEL_STARTUP_TIME,
+ .gyro = INV_MPU6050_GYRO_STARTUP_TIME,
+ },
},
{
.whoami = INV_MPU9250_WHOAMI_VALUE,
@@ -204,7 +222,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
.config = &chip_config_6500,
.fifo_size = 512,
.temp = {INV_MPU6500_TEMP_OFFSET, INV_MPU6500_TEMP_SCALE},
- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
+ .startup_time = {
+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
+ },
},
{
.whoami = INV_MPU9255_WHOAMI_VALUE,
@@ -213,7 +234,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
.config = &chip_config_6500,
.fifo_size = 512,
.temp = {INV_MPU6500_TEMP_OFFSET, INV_MPU6500_TEMP_SCALE},
- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
+ .startup_time = {
+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
+ },
},
{
.whoami = INV_ICM20608_WHOAMI_VALUE,
@@ -222,7 +246,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
.config = &chip_config_6500,
.fifo_size = 512,
.temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
+ .startup_time = {
+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
+ },
},
{
.whoami = INV_ICM20608D_WHOAMI_VALUE,
@@ -231,7 +258,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
.config = &chip_config_6500,
.fifo_size = 512,
.temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
+ .startup_time = {
+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
+ },
},
{
.whoami = INV_ICM20609_WHOAMI_VALUE,
@@ -240,7 +270,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
.config = &chip_config_6500,
.fifo_size = 4 * 1024,
.temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
+ .startup_time = {
+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
+ },
},
{
.whoami = INV_ICM20689_WHOAMI_VALUE,
@@ -249,7 +282,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
.config = &chip_config_6500,
.fifo_size = 4 * 1024,
.temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
+ .startup_time = {
+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
+ },
},
{
.whoami = INV_ICM20600_WHOAMI_VALUE,
@@ -258,7 +294,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
.config = &chip_config_6500,
.fifo_size = 1008,
.temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
- .startup_time = {INV_ICM20602_GYRO_STARTUP_TIME, INV_ICM20602_ACCEL_STARTUP_TIME},
+ .startup_time = {
+ .accel = INV_ICM20602_ACCEL_STARTUP_TIME,
+ .gyro = INV_ICM20602_GYRO_STARTUP_TIME,
+ },
},
{
.whoami = INV_ICM20602_WHOAMI_VALUE,
@@ -267,7 +306,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
.config = &chip_config_6500,
.fifo_size = 1008,
.temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
- .startup_time = {INV_ICM20602_GYRO_STARTUP_TIME, INV_ICM20602_ACCEL_STARTUP_TIME},
+ .startup_time = {
+ .accel = INV_ICM20602_ACCEL_STARTUP_TIME,
+ .gyro = INV_ICM20602_GYRO_STARTUP_TIME,
+ },
},
{
.whoami = INV_ICM20690_WHOAMI_VALUE,
@@ -276,7 +318,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
.config = &chip_config_6500,
.fifo_size = 1024,
.temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
- .startup_time = {INV_ICM20690_GYRO_STARTUP_TIME, INV_ICM20690_ACCEL_STARTUP_TIME},
+ .startup_time = {
+ .accel = INV_ICM20690_ACCEL_STARTUP_TIME,
+ .gyro = INV_ICM20690_GYRO_STARTUP_TIME,
+ },
},
{ .whoami = INV_IAM20380_WHOAMI_VALUE,
.name = "IAM20380",
@@ -284,7 +329,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
.config = &chip_config_6500,
.fifo_size = 512,
.temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
+ .startup_time = {
+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
+ },
},
{
.whoami = INV_IAM20680_WHOAMI_VALUE,
@@ -293,7 +341,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
.config = &chip_config_6500,
.fifo_size = 512,
.temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
+ .startup_time = {
+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
+ },
},
{
.whoami = INV_IAM20680HP_WHOAMI_VALUE,
@@ -302,7 +353,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
.config = &chip_config_6500,
.fifo_size = 4 * 1024,
.temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
+ .startup_time = {
+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
+ },
},
{
.whoami = INV_IAM20680HT_WHOAMI_VALUE,
@@ -311,7 +365,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
.config = &chip_config_6500,
.fifo_size = 4 * 1024,
.temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
+ .startup_time = {
+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
+ },
},
};
--
2.53.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] iio: imu: inv_mpu6050: fix swapped accel and gyro startup times
2026-10-11 4:57 [PATCH] iio: imu: inv_mpu6050: fix swapped accel and gyro startup times Arnav Kapoor
@ 2026-10-12 7:54 ` Jean-Baptiste Maneyrol
2026-10-17 23:10 ` Jonathan Cameron
0 siblings, 1 reply; 3+ messages in thread
From: Jean-Baptiste Maneyrol @ 2026-10-12 7:54 UTC (permalink / raw)
To: Arnav Kapoor, Jonathan Cameron
Cc: David Lechner, Nuno Sá, Andy Shevchenko, linux-iio, linux-kernel
>struct inv_mpu6050_hw declares startup_time as { accel, gyro }, but
>every entry of hw_info[] initializes it positionally as
>{ *_GYRO_STARTUP_TIME, *_ACCEL_STARTUP_TIME }, so the two values are
>swapped for all chips.
>
>inv_mpu6050_switch_engine() waits for startup_time.gyro after enabling
>the gyroscope, so it waits for the accelerometer startup time instead,
>e.g. 20 ms instead of 60 ms on MPU6050 and 20 ms instead of 100 ms on
>ICM20602, and the first gyroscope samples can be read before the sensor
>has settled. Enabling only the accelerometer waits longer than needed.
>
>Use designated initializers, so each value is assigned to the member it
>is named after.
>
>Fixes: e46a36d92da0 ("Add startup time for each chip using inv_mpu6050 driver")
>Assisted-by: LLM
>Signed-off-by: Arnav Kapoor <kapoorarnav43@gmail.com>
>---
>Compile-tested only (W=1); I don't have the hardware. I checked the
>built object: before this patch hw_info[] has e.g. accel=60, gyro=20 for
>MPU6050 and accel=100, gyro=20 for ICM20602; after it accel=20, gyro=60
>and accel=20, gyro=100, matching the *_STARTUP_TIME defines.
>
> drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 95 +++++++++++++++++-----
> 1 file changed, 76 insertions(+), 19 deletions(-)
>
>diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
>index 38c3f3b398d4..b26d1d401aaf 100644
>--- a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
>+++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
>@@ -150,7 +150,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .config = &chip_config_6050,
> .fifo_size = 1024,
> .temp = {INV_MPU6050_TEMP_OFFSET, INV_MPU6050_TEMP_SCALE},
>- .startup_time = {INV_MPU6050_GYRO_STARTUP_TIME, INV_MPU6050_ACCEL_STARTUP_TIME},
>+ .startup_time = {
>+ .accel = INV_MPU6050_ACCEL_STARTUP_TIME,
>+ .gyro = INV_MPU6050_GYRO_STARTUP_TIME,
>+ },
> },
> {
> .whoami = INV_MPU6500_WHOAMI_VALUE,
>@@ -159,7 +162,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .config = &chip_config_6500,
> .fifo_size = 512,
> .temp = {INV_MPU6500_TEMP_OFFSET, INV_MPU6500_TEMP_SCALE},
>- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
>+ .startup_time = {
>+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
>+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
>+ },
> },
> {
> .whoami = INV_MPU6515_WHOAMI_VALUE,
>@@ -168,7 +174,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .config = &chip_config_6500,
> .fifo_size = 512,
> .temp = {INV_MPU6500_TEMP_OFFSET, INV_MPU6500_TEMP_SCALE},
>- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
>+ .startup_time = {
>+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
>+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
>+ },
> },
> {
> .whoami = INV_MPU6880_WHOAMI_VALUE,
>@@ -177,7 +186,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .config = &chip_config_6500,
> .fifo_size = 4096,
> .temp = {INV_MPU6500_TEMP_OFFSET, INV_MPU6500_TEMP_SCALE},
>- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
>+ .startup_time = {
>+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
>+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
>+ },
> },
> {
> .whoami = INV_MPU6000_WHOAMI_VALUE,
>@@ -186,7 +198,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .config = &chip_config_6050,
> .fifo_size = 1024,
> .temp = {INV_MPU6050_TEMP_OFFSET, INV_MPU6050_TEMP_SCALE},
>- .startup_time = {INV_MPU6050_GYRO_STARTUP_TIME, INV_MPU6050_ACCEL_STARTUP_TIME},
>+ .startup_time = {
>+ .accel = INV_MPU6050_ACCEL_STARTUP_TIME,
>+ .gyro = INV_MPU6050_GYRO_STARTUP_TIME,
>+ },
> },
> {
> .whoami = INV_MPU9150_WHOAMI_VALUE,
>@@ -195,7 +210,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .config = &chip_config_6050,
> .fifo_size = 1024,
> .temp = {INV_MPU6050_TEMP_OFFSET, INV_MPU6050_TEMP_SCALE},
>- .startup_time = {INV_MPU6050_GYRO_STARTUP_TIME, INV_MPU6050_ACCEL_STARTUP_TIME},
>+ .startup_time = {
>+ .accel = INV_MPU6050_ACCEL_STARTUP_TIME,
>+ .gyro = INV_MPU6050_GYRO_STARTUP_TIME,
>+ },
> },
> {
> .whoami = INV_MPU9250_WHOAMI_VALUE,
>@@ -204,7 +222,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .config = &chip_config_6500,
> .fifo_size = 512,
> .temp = {INV_MPU6500_TEMP_OFFSET, INV_MPU6500_TEMP_SCALE},
>- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
>+ .startup_time = {
>+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
>+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
>+ },
> },
> {
> .whoami = INV_MPU9255_WHOAMI_VALUE,
>@@ -213,7 +234,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .config = &chip_config_6500,
> .fifo_size = 512,
> .temp = {INV_MPU6500_TEMP_OFFSET, INV_MPU6500_TEMP_SCALE},
>- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
>+ .startup_time = {
>+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
>+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
>+ },
> },
> {
> .whoami = INV_ICM20608_WHOAMI_VALUE,
>@@ -222,7 +246,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .config = &chip_config_6500,
> .fifo_size = 512,
> .temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
>- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
>+ .startup_time = {
>+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
>+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
>+ },
> },
> {
> .whoami = INV_ICM20608D_WHOAMI_VALUE,
>@@ -231,7 +258,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .config = &chip_config_6500,
> .fifo_size = 512,
> .temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
>- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
>+ .startup_time = {
>+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
>+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
>+ },
> },
> {
> .whoami = INV_ICM20609_WHOAMI_VALUE,
>@@ -240,7 +270,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .config = &chip_config_6500,
> .fifo_size = 4 * 1024,
> .temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
>- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
>+ .startup_time = {
>+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
>+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
>+ },
> },
> {
> .whoami = INV_ICM20689_WHOAMI_VALUE,
>@@ -249,7 +282,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .config = &chip_config_6500,
> .fifo_size = 4 * 1024,
> .temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
>- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
>+ .startup_time = {
>+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
>+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
>+ },
> },
> {
> .whoami = INV_ICM20600_WHOAMI_VALUE,
>@@ -258,7 +294,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .config = &chip_config_6500,
> .fifo_size = 1008,
> .temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
>- .startup_time = {INV_ICM20602_GYRO_STARTUP_TIME, INV_ICM20602_ACCEL_STARTUP_TIME},
>+ .startup_time = {
>+ .accel = INV_ICM20602_ACCEL_STARTUP_TIME,
>+ .gyro = INV_ICM20602_GYRO_STARTUP_TIME,
>+ },
> },
> {
> .whoami = INV_ICM20602_WHOAMI_VALUE,
>@@ -267,7 +306,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .config = &chip_config_6500,
> .fifo_size = 1008,
> .temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
>- .startup_time = {INV_ICM20602_GYRO_STARTUP_TIME, INV_ICM20602_ACCEL_STARTUP_TIME},
>+ .startup_time = {
>+ .accel = INV_ICM20602_ACCEL_STARTUP_TIME,
>+ .gyro = INV_ICM20602_GYRO_STARTUP_TIME,
>+ },
> },
> {
> .whoami = INV_ICM20690_WHOAMI_VALUE,
>@@ -276,7 +318,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .config = &chip_config_6500,
> .fifo_size = 1024,
> .temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
>- .startup_time = {INV_ICM20690_GYRO_STARTUP_TIME, INV_ICM20690_ACCEL_STARTUP_TIME},
>+ .startup_time = {
>+ .accel = INV_ICM20690_ACCEL_STARTUP_TIME,
>+ .gyro = INV_ICM20690_GYRO_STARTUP_TIME,
>+ },
> },
> { .whoami = INV_IAM20380_WHOAMI_VALUE,
> .name = "IAM20380",
>@@ -284,7 +329,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .config = &chip_config_6500,
> .fifo_size = 512,
> .temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
>- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
>+ .startup_time = {
>+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
>+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
>+ },
> },
> {
> .whoami = INV_IAM20680_WHOAMI_VALUE,
>@@ -293,7 +341,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .config = &chip_config_6500,
> .fifo_size = 512,
> .temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
>- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
>+ .startup_time = {
>+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
>+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
>+ },
> },
> {
> .whoami = INV_IAM20680HP_WHOAMI_VALUE,
>@@ -302,7 +353,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .config = &chip_config_6500,
> .fifo_size = 4 * 1024,
> .temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
>- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
>+ .startup_time = {
>+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
>+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
>+ },
> },
> {
> .whoami = INV_IAM20680HT_WHOAMI_VALUE,
>@@ -311,7 +365,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .config = &chip_config_6500,
> .fifo_size = 4 * 1024,
> .temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
>- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
>+ .startup_time = {
>+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
>+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
>+ },
> },
> };
>
>--
>2.53.0
>
Hello Arnav,
another good catch, thanks for the patch.
Acked-by: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com>
Thanks,
JB
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] iio: imu: inv_mpu6050: fix swapped accel and gyro startup times
2026-10-12 7:54 ` Jean-Baptiste Maneyrol
@ 2026-10-17 23:10 ` Jonathan Cameron
0 siblings, 0 replies; 3+ messages in thread
From: Jonathan Cameron @ 2026-10-17 23:10 UTC (permalink / raw)
To: Jean-Baptiste Maneyrol
Cc: Arnav Kapoor, David Lechner, Nuno Sá,
Andy Shevchenko, linux-iio, linux-kernel
> > {
> > .whoami = INV_IAM20680HT_WHOAMI_VALUE,
> >@@ -311,7 +365,10 @@ static const struct inv_mpu6050_hw hw_info[] = {
> > .config = &chip_config_6500,
> > .fifo_size = 4 * 1024,
> > .temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
> >- .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
> >+ .startup_time = {
> >+ .accel = INV_MPU6500_ACCEL_STARTUP_TIME,
> >+ .gyro = INV_MPU6500_GYRO_STARTUP_TIME,
> >+ },
> > },
> > };
> >
> >--
> >2.53.0
> >
>
> Hello Arnav,
>
> another good catch, thanks for the patch.
Absolutely.
If you fancy doing a follow up cleanup, lets reduce chance of similar
by using named initializers for .temp just above each of the changes
made in this patch.
No problem if you have moved onto other things!
Applied to the fixes-togreg branch of iio.git and marked for stable.
Jonathan
>
> Acked-by: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com>
>
> Thanks,
> JB
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-10-17 23:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-11 4:57 [PATCH] iio: imu: inv_mpu6050: fix swapped accel and gyro startup times Arnav Kapoor
2026-10-12 7:54 ` Jean-Baptiste Maneyrol
2026-10-17 23:10 ` Jonathan Cameron
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®