Re: [PATCH 5/5] iio: inv_mpu6050: Add explicit support for MPU9150

From: Jonathan Cameron
Date: Sun Apr 24 2016 - 07:16:26 EST


On 20/04/16 14:15, Crestez Dan Leonard wrote:
> This device is a package containing a MPU6050-like sensor and an AK8975
> magnetometer. The magnetometer component is supported by the existing
> ak8975 driver.
>
> This patch also rephrases the Kconfig descriptions.
>
> Signed-off-by: Crestez Dan Leonard <leonard.crestez@xxxxxxxxx>
Looks good. Will just wait for Ge to hopefully have time to take a look
at the whole series. For future reference, it's always worth making sure
you have cc'd the original author of a driver unless you know someone
else is definitely maintaining it.

Ge was reply to emails recently so I guess he is still very much active!

Jonathan
> ---
> drivers/iio/imu/inv_mpu6050/Kconfig | 10 ++++------
> drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 6 ++++++
> drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c | 1 +
> drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h | 2 ++
> drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c | 1 +
> 5 files changed, 14 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/iio/imu/inv_mpu6050/Kconfig b/drivers/iio/imu/inv_mpu6050/Kconfig
> index a7f557a..c05d474 100644
> --- a/drivers/iio/imu/inv_mpu6050/Kconfig
> +++ b/drivers/iio/imu/inv_mpu6050/Kconfig
> @@ -14,10 +14,8 @@ config INV_MPU6050_I2C
> select I2C_MUX
> select REGMAP_I2C
> help
> - This driver supports the Invensense MPU6050 devices.
> - This driver can also support MPU6500 in MPU6050 compatibility mode
> - and also in MPU6500 mode with some limitations.
> - It is a gyroscope/accelerometer combo device.
> + This driver supports the Invensense MPU6050/6500/9150 motion tracking
> + devices over I2C.
> This driver can be built as a module. The module will be called
> inv-mpu6050-i2c.
>
> @@ -27,7 +25,7 @@ config INV_MPU6050_SPI
> select INV_MPU6050_IIO
> select REGMAP_SPI
> help
> - This driver supports the Invensense MPU6050 devices.
> - It is a gyroscope/accelerometer combo device.
> + This driver supports the Invensense MPU6000/6500/9150 motion tracking
> + devices over SPI.
> This driver can be built as a module. The module will be called
> inv-mpu6050-spi.
> diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
> index 273b7fa7..3a82a49 100644
> --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
> +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
> @@ -108,6 +108,12 @@ static const struct inv_mpu6050_hw hw_info[] = {
> .reg = &reg_set_6050,
> .config = &chip_config_6050,
> },
> + {
> + .whoami = INV_MPU9150_WHOAMI_VALUE,
> + .name = "MPU9150",
> + .reg = &reg_set_6050,
> + .config = &chip_config_6050,
> + },
> };
>
> int inv_mpu6050_switch_engine(struct inv_mpu6050_state *st, bool en, u32 mask)
> diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
> index bb1a7b1..1a424a6 100644
> --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
> +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
> @@ -202,6 +202,7 @@ static int inv_mpu_remove(struct i2c_client *client)
> static const struct i2c_device_id inv_mpu_id[] = {
> {"mpu6050", INV_MPU6050},
> {"mpu6500", INV_MPU6500},
> + {"mpu9150", INV_MPU9150},
> {}
> };
>
> diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h b/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h
> index 564cabd..38d6a09 100644
> --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h
> +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h
> @@ -68,6 +68,7 @@ enum inv_devices {
> INV_MPU6050,
> INV_MPU6500,
> INV_MPU6000,
> + INV_MPU9150,
> INV_NUM_PARTS
> };
>
> @@ -220,6 +221,7 @@ struct inv_mpu6050_state {
> #define INV_MPU6000_WHOAMI_VALUE 0x68
> #define INV_MPU6050_WHOAMI_VALUE 0x68
> #define INV_MPU6500_WHOAMI_VALUE 0x70
> +#define INV_MPU9150_WHOAMI_VALUE 0x68
>
> /* scan element definition */
> enum inv_mpu6050_scan {
> diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c
> index a0f8df2..190a4a5 100644
> --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c
> +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c
> @@ -81,6 +81,7 @@ static int inv_mpu_remove(struct spi_device *spi)
> static const struct spi_device_id inv_mpu_id[] = {
> {"mpu6000", INV_MPU6000},
> {"mpu6500", INV_MPU6500},
> + {"mpu9150", INV_MPU9150},
> {}
> };
>
>