iio: imu: Add mpu9255 support to mpu6050 driver
Subsystems (3)
PATCH 1/1 iio: imu: Add mpu9255 support to mpu6050 driver
Added support for the mpu9255 IMU to the mpu6050 driver. The register map is the same as the other chips; the only driver difference is the compatible string and the WHOAMI register value.
---
Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txt +1 -0
@@ -8,6 +8,7 @@ Required properties: "invensense,mpu6500" "invensense,mpu9150" "invensense,mpu9250" + "invensense,mpu9255" "invensense,icm20608" - reg : the I2C address of the sensor - interrupt-parent : should be the phandle for the interrupt controller
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c +6 -0
@@ -121,6 +121,12 @@ static const struct inv_mpu6050_hw hw_in .config = &chip_config_6050, }, { + .whoami = INV_MPU9255_WHOAMI_VALUE, + .name = "MPU9255", + .reg = ®_set_6500, + .config = &chip_config_6050, + }, + { .whoami = INV_ICM20608_WHOAMI_VALUE, .name = "ICM20608", .reg = ®_set_6500,
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c +5 -0
@@ -179,6 +179,7 @@ static const struct i2c_device_id inv_mp {"mpu6500", INV_MPU6500}, {"mpu9150", INV_MPU9150}, {"mpu9250", INV_MPU9250}, + {"mpu9255", INV_MPU9255}, {"icm20608", INV_ICM20608}, {} };
@@ -203,6 +204,10 @@ static const struct of_device_id inv_of_ .data = (void *)INV_MPU9250 }, { + .compatible = "invensense,mpu9255", + .data = (void *)INV_MPU9255 + }, + { .compatible = "invensense,icm20608", .data = (void *)INV_ICM20608 },
drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h +2 -0
@@ -74,6 +74,7 @@ enum inv_devices {INV_MPU6000 ,INV_MPU9150 ,INV_MPU9250 , +INV_MPU9255 ,INV_ICM20608 , INV_NUM_PARTS };
@@ -232,6 +233,7 @@ struct inv_mpu6050_state {#define INV_MPU6500_WHOAMI_VALUE 0x70#define INV_MPU9150_WHOAMI_VALUE 0x68#define INV_MPU9250_WHOAMI_VALUE 0x71 +#define INV_MPU9255_WHOAMI_VALUE 0x73#define INV_ICM20608_WHOAMI_VALUE 0xAF/* scan element definition */
drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c +1 -0
@@ -83,6 +83,7 @@ static const struct spi_device_id inv_mp {"mpu6500", INV_MPU6500}, {"mpu9150", INV_MPU9150}, {"mpu9250", INV_MPU9250}, + {"mpu9255", INV_MPU9255}, {"icm20608", INV_ICM20608}, {} };
Jonathan Cameron
maintainerQuoted 6 lines · On Mon, 2 Apr 2018 18:42:00 -0400 Douglas Fischer <[email protected]>…
Added support for the mpu9255 IMU to the mpu6050 driver. The register map is the same as the other chips; the only driver difference is the compatible string and the WHOAMI register value.
Signed-off-by Douglas Fischer <[email protected]>
Looks good to me. I'd like to give some time for Jean-Baptiste/others to confirm they are happy with this as well though.
Give me a bump if I seem to have lost it in a couple of weeks time.
Thanks. It's interesting to note that all the manufacturer's interfaces finally seem to be stabilizing across generations. The days of large changes every version seem to finally be behind us.
Jonathan
Quoted 85 lines
---
diff -uprN
linux-4.16.orig/Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txtlinux-4.16/Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txtDocumentation/devicetree/bindings/iio/imu/inv_mpu6050.txt +1
-0@@ -8,6 +8,7 @@ Required properties: "invensense,mpu6500" "invensense,mpu9150" "invensense,mpu9250" + "invensense,mpu9255" "invensense,icm20608" - reg : the I2C address of the sensor - interrupt-parent : should be the phandle for the interrupt controllerdiff -uprN
linux-4.16.orig/drivers/iio/imu/inv_mpu6050/inv_mpu_core.clinux-4.16/drivers/iio/imu/inv_mpu6050/inv_mpu_core.cdrivers/iio/imu/inv_mpu6050/inv_mpu_core.c +6
-0@@ -121,6 +121,12 @@ static const struct inv_mpu6050_hw hw_in .config = &chip_config_6050, }, { + .whoami = INV_MPU9255_WHOAMI_VALUE, + .name = "MPU9255", + .reg = ®_set_6500, + .config = &chip_config_6050, + }, + { .whoami = INV_ICM20608_WHOAMI_VALUE, .name = "ICM20608", .reg = ®_set_6500,diff -uprN
linux-4.16.orig/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.clinux-4.16/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.cdrivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c +5
-0@@ -179,6 +179,7 @@ static const struct i2c_device_id inv_mp {"mpu6500", INV_MPU6500}, {"mpu9150", INV_MPU9150}, {"mpu9250", INV_MPU9250}, + {"mpu9255", INV_MPU9255}, {"icm20608", INV_ICM20608}, {} };@@ -203,6 +204,10 @@ static const struct of_device_id inv_of_ .data = (void *)INV_MPU9250 }, { + .compatible = "invensense,mpu9255", + .data = (void *)INV_MPU9255 + }, + { .compatible = "invensense,icm20608", .data = (void *)INV_ICM20608 },diff -uprN
linux-4.16.orig/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.hlinux-4.16/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.hdrivers/iio/imu/inv_mpu6050/inv_mpu_iio.h +2
-0@@ -74,6 +74,7 @@ enum inv_devices {INV_MPU6000 ,INV_MPU9150 ,INV_MPU9250 , +INV_MPU9255 ,INV_ICM20608 , INV_NUM_PARTS };@@ -232,6 +233,7 @@ struct inv_mpu6050_state {#define INV_MPU6500_WHOAMI_VALUE 0x70#define INV_MPU9150_WHOAMI_VALUE 0x68#define INV_MPU9250_WHOAMI_VALUE 0x71 +#define INV_MPU9255_WHOAMI_VALUE 0x73#define INV_ICM20608_WHOAMI_VALUE 0xAF/* scan element definition */ diff -uprN
linux-4.16.orig/drivers/iio/imu/inv_mpu6050/inv_mpu_spi.clinux-4.16/drivers/iio/imu/inv_mpu6050/inv_mpu_spi.cdrivers/iio/imu/inv_mpu6050/inv_mpu_spi.c +1
-1@@ -83,6 +83,7 @@ static const struct spi_device_id inv_mp {"mpu6500", INV_MPU6500}, {"mpu9150", INV_MPU9150}, {"mpu9250", INV_MPU9250}, + {"mpu9255", INV_MPU9255}, {"icm20608", INV_ICM20608}, {} }; --To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Hello,
mpu9255 is completely similar to mpu9250. The only thing that is changing is the associated firmware running inside it.
Since we are not loading and using firmware in this driver, the chips are virtually the same.
JB
Quoted 108 lines · Jonathan Cameron
Quoted 6 lines · On Mon, 2 Apr 2018 18:42:00 -0400 Douglas Fischer <[email protected]>…
Added support for the mpu9255 IMU to the mpu6050 driver. The register map is the same as the other chips; the only driver difference is the compatible string and the WHOAMI register value.
Signed-off-by Douglas Fischer <[email protected]>Looks good to me. I'd like to give some time for Jean-Baptiste/others to confirm they are happy with this as well though.
Give me a bump if I seem to have lost it in a couple of weeks time.
Thanks. It's interesting to note that all the manufacturer's interfaces finally seem to be stabilizing across generations. The days of large changes every version seem to finally be behind us.
Jonathan
Quoted 85 lines
---
diff -uprN
linux-4.16.orig/Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txtlinux-4.16/Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txtDocumentation/devicetree/bindings/iio/imu/inv_mpu6050.txt +1
-0@@ -8,6 +8,7 @@ Required properties: "invensense,mpu6500" "invensense,mpu9150" "invensense,mpu9250" + "invensense,mpu9255" "invensense,icm20608" - reg : the I2C address of the sensor - interrupt-parent : should be the phandle for the interrupt controllerdiff -uprN
linux-4.16.orig/drivers/iio/imu/inv_mpu6050/inv_mpu_core.clinux-4.16/drivers/iio/imu/inv_mpu6050/inv_mpu_core.cdrivers/iio/imu/inv_mpu6050/inv_mpu_core.c +6
-0@@ -121,6 +121,12 @@ static const struct inv_mpu6050_hw hw_in .config = &chip_config_6050, }, { + .whoami = INV_MPU9255_WHOAMI_VALUE, + .name = "MPU9255", + .reg = ®_set_6500, + .config = &chip_config_6050, + }, + { .whoami = INV_ICM20608_WHOAMI_VALUE, .name = "ICM20608", .reg = ®_set_6500,diff -uprN
linux-4.16.orig/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.clinux-4.16/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.cdrivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c +5
-0@@ -179,6 +179,7 @@ static const struct i2c_device_id inv_mp {"mpu6500", INV_MPU6500}, {"mpu9150", INV_MPU9150}, {"mpu9250", INV_MPU9250}, + {"mpu9255", INV_MPU9255}, {"icm20608", INV_ICM20608}, {} };@@ -203,6 +204,10 @@ static const struct of_device_id inv_of_ .data = (void *)INV_MPU9250 }, { + .compatible = "invensense,mpu9255", + .data = (void *)INV_MPU9255 + }, + { .compatible = "invensense,icm20608", .data = (void *)INV_ICM20608 },diff -uprN
linux-4.16.orig/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.hlinux-4.16/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.hdrivers/iio/imu/inv_mpu6050/inv_mpu_iio.h +2
-0@@ -74,6 +74,7 @@ enum inv_devices {INV_MPU6000 ,INV_MPU9150 ,INV_MPU9250 , +INV_MPU9255 ,INV_ICM20608 , INV_NUM_PARTS };@@ -232,6 +233,7 @@ struct inv_mpu6050_state {#define INV_MPU6500_WHOAMI_VALUE 0x70#define INV_MPU9150_WHOAMI_VALUE 0x68#define INV_MPU9250_WHOAMI_VALUE 0x71 +#define INV_MPU9255_WHOAMI_VALUE 0x73#define INV_ICM20608_WHOAMI_VALUE 0xAF/* scan element definition */ diff -uprN
linux-4.16.orig/drivers/iio/imu/inv_mpu6050/inv_mpu_spi.clinux-4.16/drivers/iio/imu/inv_mpu6050/inv_mpu_spi.cdrivers/iio/imu/inv_mpu6050/inv_mpu_spi.c +1
-1@@ -83,6 +83,7 @@ static const struct spi_device_id inv_mp {"mpu6500", INV_MPU6500}, {"mpu9150", INV_MPU9150}, {"mpu9250", INV_MPU9250}, + {"mpu9255", INV_MPU9255}, {"icm20608", INV_ICM20608}, {} }; --To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Jonathan Cameron
maintainerQuoted 9 lines · On Mon, 9 Apr 2018 11:54:28 +0200 Jean-Baptiste Maneyrol…
Hello,
mpu9255 is completely similar to mpu9250. The only thing that is changing is the associated firmware running inside it.
Since we are not loading and using firmware in this driver, the chips are virtually the same.
JB
Cool. Applied to the togreg branch of iio.git and pushed out as testing for the autobuilders to play with it.
Thanks,
Jonathan
Quoted 114 lines · Jonathan Cameron
Quoted 91 lines
Quoted 6 lines · On Mon, 2 Apr 2018 18:42:00 -0400 Douglas Fischer <[email protected]>…
Added support for the mpu9255 IMU to the mpu6050 driver. The register map is the same as the other chips; the only driver difference is the compatible string and the WHOAMI register value.
Signed-off-by Douglas Fischer <[email protected]>Looks good to me. I'd like to give some time for Jean-Baptiste/others to confirm they are happy with this as well though.
Give me a bump if I seem to have lost it in a couple of weeks time.
Thanks. It's interesting to note that all the manufacturer's interfaces finally seem to be stabilizing across generations. The days of large changes every version seem to finally be behind us.
Jonathan
Quoted 69 lines
---
diff -uprN
linux-4.16.orig/Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txtlinux-4.16/Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txtDocumentation/devicetree/bindings/iio/imu/inv_mpu6050.txt +1
-0@@ -8,6 +8,7 @@ Required properties: "invensense,mpu6500" "invensense,mpu9150" "invensense,mpu9250" + "invensense,mpu9255" "invensense,icm20608" - reg : the I2C address of the sensor - interrupt-parent : should be the phandle for the interrupt controllerdiff -uprN
linux-4.16.orig/drivers/iio/imu/inv_mpu6050/inv_mpu_core.clinux-4.16/drivers/iio/imu/inv_mpu6050/inv_mpu_core.cdrivers/iio/imu/inv_mpu6050/inv_mpu_core.c +6
-0@@ -121,6 +121,12 @@ static const struct inv_mpu6050_hw hw_in .config = &chip_config_6050, }, { + .whoami = INV_MPU9255_WHOAMI_VALUE, + .name = "MPU9255", + .reg = ®_set_6500, + .config = &chip_config_6050, + }, + { .whoami = INV_ICM20608_WHOAMI_VALUE, .name = "ICM20608", .reg = ®_set_6500,diff -uprN
linux-4.16.orig/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.clinux-4.16/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.cdrivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c +5
-0@@ -179,6 +179,7 @@ static const struct i2c_device_id inv_mp {"mpu6500", INV_MPU6500}, {"mpu9150", INV_MPU9150}, {"mpu9250", INV_MPU9250}, + {"mpu9255", INV_MPU9255}, {"icm20608", INV_ICM20608}, {} };@@ -203,6 +204,10 @@ static const struct of_device_id inv_of_ .data = (void *)INV_MPU9250 }, { + .compatible = "invensense,mpu9255", + .data = (void *)INV_MPU9255 + }, + { .compatible = "invensense,icm20608", .data = (void *)INV_ICM20608 },diff -uprN
linux-4.16.orig/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.hlinux-4.16/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.hdrivers/iio/imu/inv_mpu6050/inv_mpu_iio.h +2
-0@@ -74,6 +74,7 @@ enum inv_devices {INV_MPU6000 ,INV_MPU9150 ,INV_MPU9250 , +INV_MPU9255 ,INV_ICM20608 , INV_NUM_PARTS };@@ -232,6 +233,7 @@ struct inv_mpu6050_state {#define INV_MPU6500_WHOAMI_VALUE 0x70#define INV_MPU9150_WHOAMI_VALUE 0x68#define INV_MPU9250_WHOAMI_VALUE 0x71 +#define INV_MPU9255_WHOAMI_VALUE 0x73#define INV_ICM20608_WHOAMI_VALUE 0xAFQuoted 17 lines
Quoted 13 lines
drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h +0
-0/* scan element definition */ diff -uprN
linux-4.16.orig/drivers/iio/imu/inv_mpu6050/inv_mpu_spi.clinux-4.16/drivers/iio/imu/inv_mpu6050/inv_mpu_spi.cdrivers/iio/imu/inv_mpu6050/inv_mpu_spi.c +1
-1@@ -83,6 +83,7 @@ static const struct spi_device_id inv_mp {"mpu6500", INV_MPU6500}, {"mpu9150", INV_MPU9150}, {"mpu9250", INV_MPU9250}, + {"mpu9255", INV_MPU9255}, {"icm20608", INV_ICM20608}, {} }; --Quoted 3 lines
To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html