Commit 0c8f492d authored by Jonathan Cameron's avatar Jonathan Cameron

iio:imu:mpu6050 add explicit mpu9250 support

The mpu9250 is a SIP containing an mpu6500 and an ak8975.  If this was all
there was too it there would be no need for explicit handling in the driver.
Arguably the bindings would also only reflect the presence of an mpu6500 with
the ak8975 hanging off it, as the kernel doesn't care that they are in one
package.

However, the WHOAMI value changes as well so best to add explicit support.
Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
parent 3cc17e61
...@@ -7,6 +7,7 @@ Required properties: ...@@ -7,6 +7,7 @@ Required properties:
"invensense,mpu6050" "invensense,mpu6050"
"invensense,mpu6500" "invensense,mpu6500"
"invensense,mpu9150" "invensense,mpu9150"
"invensense,mpu9250"
"invensense,icm20608" "invensense,icm20608"
- reg : the I2C address of the sensor - reg : the I2C address of the sensor
- interrupt-parent : should be the phandle for the interrupt controller - interrupt-parent : should be the phandle for the interrupt controller
......
...@@ -113,6 +113,12 @@ static const struct inv_mpu6050_hw hw_info[] = { ...@@ -113,6 +113,12 @@ static const struct inv_mpu6050_hw hw_info[] = {
.reg = &reg_set_6050, .reg = &reg_set_6050,
.config = &chip_config_6050, .config = &chip_config_6050,
}, },
{
.whoami = INV_MPU9250_WHOAMI_VALUE,
.name = "MPU9250",
.reg = &reg_set_6500,
.config = &chip_config_6050,
},
{ {
.whoami = INV_ICM20608_WHOAMI_VALUE, .whoami = INV_ICM20608_WHOAMI_VALUE,
.name = "ICM20608", .name = "ICM20608",
......
...@@ -178,6 +178,7 @@ static const struct i2c_device_id inv_mpu_id[] = { ...@@ -178,6 +178,7 @@ static const struct i2c_device_id inv_mpu_id[] = {
{"mpu6050", INV_MPU6050}, {"mpu6050", INV_MPU6050},
{"mpu6500", INV_MPU6500}, {"mpu6500", INV_MPU6500},
{"mpu9150", INV_MPU9150}, {"mpu9150", INV_MPU9150},
{"mpu9250", INV_MPU9250},
{"icm20608", INV_ICM20608}, {"icm20608", INV_ICM20608},
{} {}
}; };
...@@ -197,6 +198,10 @@ static const struct of_device_id inv_of_match[] = { ...@@ -197,6 +198,10 @@ static const struct of_device_id inv_of_match[] = {
.compatible = "invensense,mpu9150", .compatible = "invensense,mpu9150",
.data = (void *)INV_MPU9150 .data = (void *)INV_MPU9150
}, },
{
.compatible = "invensense,mpu9250",
.data = (void *)INV_MPU9250
},
{ {
.compatible = "invensense,icm20608", .compatible = "invensense,icm20608",
.data = (void *)INV_ICM20608 .data = (void *)INV_ICM20608
......
...@@ -70,6 +70,7 @@ enum inv_devices { ...@@ -70,6 +70,7 @@ enum inv_devices {
INV_MPU6500, INV_MPU6500,
INV_MPU6000, INV_MPU6000,
INV_MPU9150, INV_MPU9150,
INV_MPU9250,
INV_ICM20608, INV_ICM20608,
INV_NUM_PARTS INV_NUM_PARTS
}; };
...@@ -226,6 +227,7 @@ struct inv_mpu6050_state { ...@@ -226,6 +227,7 @@ struct inv_mpu6050_state {
#define INV_MPU6050_WHOAMI_VALUE 0x68 #define INV_MPU6050_WHOAMI_VALUE 0x68
#define INV_MPU6500_WHOAMI_VALUE 0x70 #define INV_MPU6500_WHOAMI_VALUE 0x70
#define INV_MPU9150_WHOAMI_VALUE 0x68 #define INV_MPU9150_WHOAMI_VALUE 0x68
#define INV_MPU9250_WHOAMI_VALUE 0x71
#define INV_ICM20608_WHOAMI_VALUE 0xAF #define INV_ICM20608_WHOAMI_VALUE 0xAF
/* scan element definition */ /* scan element definition */
......
...@@ -82,6 +82,7 @@ static const struct spi_device_id inv_mpu_id[] = { ...@@ -82,6 +82,7 @@ static const struct spi_device_id inv_mpu_id[] = {
{"mpu6000", INV_MPU6000}, {"mpu6000", INV_MPU6000},
{"mpu6500", INV_MPU6500}, {"mpu6500", INV_MPU6500},
{"mpu9150", INV_MPU9150}, {"mpu9150", INV_MPU9150},
{"mpu9250", INV_MPU9250},
{"icm20608", INV_ICM20608}, {"icm20608", INV_ICM20608},
{} {}
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment