iio:imu:mpu6050: icm20608 initial support
Introduce support for Invense ICM20608 IMU, a 6-axis motion tracking device that combines a 3-axis gyroscope and a 3-axis accelerometer: http://www.invensense.com/products/motion-tracking/6-axis/icm-20608-2 Signed-off-by: Gregor Boirie <gregor.boirie@parrot.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
parent
152c9aa00d
commit
468c5620d0
@ -13,8 +13,8 @@ config INV_MPU6050_I2C
|
|||||||
select INV_MPU6050_IIO
|
select INV_MPU6050_IIO
|
||||||
select REGMAP_I2C
|
select REGMAP_I2C
|
||||||
help
|
help
|
||||||
This driver supports the Invensense MPU6050/6500/9150 motion tracking
|
This driver supports the Invensense MPU6050/6500/9150 and ICM20608
|
||||||
devices over I2C.
|
motion tracking devices over I2C.
|
||||||
This driver can be built as a module. The module will be called
|
This driver can be built as a module. The module will be called
|
||||||
inv-mpu6050-i2c.
|
inv-mpu6050-i2c.
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ config INV_MPU6050_SPI
|
|||||||
select INV_MPU6050_IIO
|
select INV_MPU6050_IIO
|
||||||
select REGMAP_SPI
|
select REGMAP_SPI
|
||||||
help
|
help
|
||||||
This driver supports the Invensense MPU6000/6500/9150 motion tracking
|
This driver supports the Invensense MPU6050/6500/9150 and ICM20608
|
||||||
devices over SPI.
|
motion tracking devices over SPI.
|
||||||
This driver can be built as a module. The module will be called
|
This driver can be built as a module. The module will be called
|
||||||
inv-mpu6050-spi.
|
inv-mpu6050-spi.
|
||||||
|
@ -113,6 +113,12 @@ static const struct inv_mpu6050_hw hw_info[] = {
|
|||||||
.reg = ®_set_6050,
|
.reg = ®_set_6050,
|
||||||
.config = &chip_config_6050,
|
.config = &chip_config_6050,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.whoami = INV_ICM20608_WHOAMI_VALUE,
|
||||||
|
.name = "ICM20608",
|
||||||
|
.reg = ®_set_6500,
|
||||||
|
.config = &chip_config_6050,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
int inv_mpu6050_switch_engine(struct inv_mpu6050_state *st, bool en, u32 mask)
|
int inv_mpu6050_switch_engine(struct inv_mpu6050_state *st, bool en, u32 mask)
|
||||||
|
@ -170,6 +170,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},
|
||||||
|
{"icm20608", INV_ICM20608},
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -70,6 +70,7 @@ enum inv_devices {
|
|||||||
INV_MPU6500,
|
INV_MPU6500,
|
||||||
INV_MPU6000,
|
INV_MPU6000,
|
||||||
INV_MPU9150,
|
INV_MPU9150,
|
||||||
|
INV_ICM20608,
|
||||||
INV_NUM_PARTS
|
INV_NUM_PARTS
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -225,6 +226,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_ICM20608_WHOAMI_VALUE 0xAF
|
||||||
|
|
||||||
/* scan element definition */
|
/* scan element definition */
|
||||||
enum inv_mpu6050_scan {
|
enum inv_mpu6050_scan {
|
||||||
|
@ -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},
|
||||||
|
{"icm20608", INV_ICM20608},
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user