Commit 4df68509 authored by Stephan Gerhold's avatar Stephan Gerhold Committed by Jonathan Cameron
Browse files

iio: imu: inv_mpu6050: Add support for MPU-6880



MPU-6880 seems to be very similar to MPU-6500 and it works
fine with some minor additions for the mpu6050 driver.

Add the necessary defines for it and make it use the same registers
as MPU-6500 but with a FIFO size of 4096.

Signed-off-by: default avatarStephan Gerhold <stephan@gerhold.net>
Acked-by: default avatarJean-Baptiste Maneyrol <jmaneyrol@invensense.com>
Cc: Jean-Baptiste Maneyrol <jmaneyrol@invensense.com>
Link: https://lore.kernel.org/r/20201202104656.5119-2-stephan@gerhold.net


Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent af73caa7
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -16,8 +16,8 @@ config INV_MPU6050_I2C
	select REGMAP_I2C
	help
	  This driver supports the Invensense MPU6050/9150,
	  MPU6500/6515/9250/9255, ICM20608/20609/20689, ICM20602/ICM20690 and
	  IAM20680 motion tracking devices over I2C.
	  MPU6500/6515/6880/9250/9255, ICM20608/20609/20689, ICM20602/ICM20690
	  and IAM20680 motion tracking devices over I2C.
	  This driver can be built as a module. The module will be called
	  inv-mpu6050-i2c.

@@ -28,7 +28,7 @@ config INV_MPU6050_SPI
	select REGMAP_SPI
	help
	  This driver supports the Invensense MPU6000,
	  MPU6500/6515/9250/9255, ICM20608/20609/20689, ICM20602/ICM20690 and
	  IAM20680 motion tracking devices over SPI.
	  MPU6500/6515/6880/9250/9255, ICM20608/20609/20689, ICM20602/ICM20690
	  and IAM20680 motion tracking devices over SPI.
	  This driver can be built as a module. The module will be called
	  inv-mpu6050-spi.
+9 −0
Original line number Diff line number Diff line
@@ -160,6 +160,14 @@ static const struct inv_mpu6050_hw hw_info[] = {
		.fifo_size = 512,
		.temp = {INV_MPU6500_TEMP_OFFSET, INV_MPU6500_TEMP_SCALE},
	},
	{
		.whoami = INV_MPU6880_WHOAMI_VALUE,
		.name = "MPU6880",
		.reg = &reg_set_6500,
		.config = &chip_config_6500,
		.fifo_size = 4096,
		.temp = {INV_MPU6500_TEMP_OFFSET, INV_MPU6500_TEMP_SCALE},
	},
	{
		.whoami = INV_MPU6000_WHOAMI_VALUE,
		.name = "MPU6000",
@@ -1323,6 +1331,7 @@ static int inv_check_and_setup_chip(struct inv_mpu6050_state *st)
	case INV_MPU6000:
	case INV_MPU6500:
	case INV_MPU6515:
	case INV_MPU6880:
	case INV_MPU9250:
	case INV_MPU9255:
		/* reset signal path (required for spi connection) */
+5 −0
Original line number Diff line number Diff line
@@ -177,6 +177,7 @@ static const struct i2c_device_id inv_mpu_id[] = {
	{"mpu6050", INV_MPU6050},
	{"mpu6500", INV_MPU6500},
	{"mpu6515", INV_MPU6515},
	{"mpu6880", INV_MPU6880},
	{"mpu9150", INV_MPU9150},
	{"mpu9250", INV_MPU9250},
	{"mpu9255", INV_MPU9255},
@@ -204,6 +205,10 @@ static const struct of_device_id inv_of_match[] = {
		.compatible = "invensense,mpu6515",
		.data = (void *)INV_MPU6515
	},
	{
		.compatible = "invensense,mpu6880",
		.data = (void *)INV_MPU6880
	},
	{
		.compatible = "invensense,mpu9150",
		.data = (void *)INV_MPU9150
+2 −0
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ enum inv_devices {
	INV_MPU6050,
	INV_MPU6500,
	INV_MPU6515,
	INV_MPU6880,
	INV_MPU6000,
	INV_MPU9150,
	INV_MPU9250,
@@ -373,6 +374,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_MPU6880_WHOAMI_VALUE		0x78
#define INV_MPU9150_WHOAMI_VALUE		0x68
#define INV_MPU9250_WHOAMI_VALUE		0x71
#define INV_MPU9255_WHOAMI_VALUE		0x73
+5 −0
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ static const struct spi_device_id inv_mpu_id[] = {
	{"mpu6000", INV_MPU6000},
	{"mpu6500", INV_MPU6500},
	{"mpu6515", INV_MPU6515},
	{"mpu6880", INV_MPU6880},
	{"mpu9250", INV_MPU9250},
	{"mpu9255", INV_MPU9255},
	{"icm20608", INV_ICM20608},
@@ -96,6 +97,10 @@ static const struct of_device_id inv_of_match[] = {
		.compatible = "invensense,mpu6515",
		.data = (void *)INV_MPU6515
	},
	{
		.compatible = "invensense,mpu6880",
		.data = (void *)INV_MPU6880
	},
	{
		.compatible = "invensense,mpu9250",
		.data = (void *)INV_MPU9250