Skip to contentSkip to conversation

iio:imu:mpu6050 update bindings and add mpu9250 support.

PATCH In review Jonathan Cameron 2 participants 7 messages Mar 26, 2017 – Apr 2, 2017 3 messages not in the archive

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

cover iio:imu:mpu6050 update bindings and add mpu9250 support.

The bindings for this driver are somewhat lagging the current situation. I have update the existing binding for i2c parts, but not added the spi binding as yet. That can follow later.

The main purpose of this series was to add explicit support for the mpu9250, mostly to avoid the log message that the whoami value does match. It's also more inituitive to support the part explicitly than to rely on people reading the datasheet to see they actually have an mpu6500 and ak8975 in a SIP.

If no one else does the SPI binding doc in the near future I'll get to it eventually.

Jonathan

Jonathan Cameron (2):
iio:imu:mpu6050 update i2c bindings to reflect i2c-gate and supported
parts
iio:imu:mpu6050 add explicit mpu9250 support

 .../devicetree/bindings/iio/imu/inv_mpu6050.txt    | 23 ++++++++++++++++++++--
 drivers/iio/imu/inv_mpu6050/inv_mpu_core.c         |  6 ++++++
 drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c          |  5 +++++
 drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h          |  2 ++
 drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c          |  1 +
 5 files changed, 35 insertions(+), 2 deletions(-)
Signature · 1 line
2.12.0

A message that is not in the archive (sent off-list or not yet received): 20170326111100.2571-1-jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org

#2 lore raw

PATCH 1/2 iio:imu:mpu6050 update i2c bindings to reflect i2c-gate and supported parts

These bindings are somewhat lagging the state of the driver. The i2c-gate bindings are documented elsewhere, but it seems sensible to at least have an example and cross reference in here. SPI bindings will need to be the subject of a future patch.

---
 .../devicetree/bindings/iio/imu/inv_mpu6050.txt    | 23 ++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)
Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txt +21 -2
index a9fc11e43b45..e18e04f3c6f4 100644
@@ -3,14 +3,17 @@ InvenSense MPU-6050 Six-Axis (Gyro + Accelerometer) MEMS MotionTracking Device
 http://www.invensense.com/mems/gyro/mpu6050.html
 
 Required properties:
- - compatible : should be "invensense,mpu6050"
+ - compatible : should be "invensense,mpu6050", "invensense,mpu6500",
+   "invensense,mpu9150" or "invensense,icm20608"
  - reg : the I2C address of the sensor
  - interrupt-parent : should be the phandle for the interrupt controller
  - interrupts : interrupt mapping for GPIO IRQ
 
 Optional properties:
  - mount-matrix: an optional 3x3 mounting rotation matrix
-
+ - i2c-gate node.  These devices also support an auxiliary i2c bus.  This is
+   simple enough to be described using the i2c-gate binding. See
+   i2c/i2c-gate.txt for more details.
 
 Example:
 	mpu6050@68 {
@@ -28,3 +31,19 @@ Example:
 		               "0",                   /* y2 */
 		               "0.984807753012208";   /* z2 */
 	};
+
+
+	mpu9250@68 {
+		compatible = "invensense,mpu9250";
+		reg = <0x68>;
+		interrupt-parent = <&gpio3>;
+		interrupts = <21 1>;
+		i2c-gate {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			ax8975@c {
+				compatible = "ak,ak8975";
+				reg = <0x0c>;
+			};
+		};
+	};
Signature · 1 line
2.12.0

A message that is not in the archive (sent off-list or not yet received): 20170326111100.2571-2-jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org

Acked-by
#4 lore raw

Re: [PATCH 1/2] iio:imu:mpu6050 update i2c bindings to reflect i2c-gate and supported parts

Quoted 15 lines · Jonathan Cameron

These bindings are somewhat lagging the state of the driver. The i2c-gate bindings are documented elsewhere, but it seems sensible to at least have an example and cross reference in here. SPI bindings will need to be the subject of a future patch.

---
 .../devicetree/bindings/iio/imu/inv_mpu6050.txt    | 23 ++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)
Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txt +0 -0
index a9fc11e43b45..e18e04f3c6f4 100644

Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txt InvenSense MPU-6050 Six-Axis (Gyro + Accelerometer) MEMS MotionTracking Device · line 7

Quoted 6 lines
Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txt +2 -1
@@ -3,14 +3,17 @@ InvenSense MPU-6050 Six-Axis (Gyro + Accelerometer) MEMS MotionTracking Device
 http://www.invensense.com/mems/gyro/mpu6050.html
 
 Required properties:
- - compatible : should be "invensense,mpu6050"
+ - compatible : should be "invensense,mpu6050", "invensense,mpu6500",
+   "invensense,mpu9150" or "invensense,icm20608"

One per line please. With that,

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

#5 lore raw

Re: [PATCH 1/2] iio:imu:mpu6050 update i2c bindings to reflect i2c-gate and supported parts

Quoted 18 lines · Rob Herring
Quoted 17 lines · Jonathan Cameron

These bindings are somewhat lagging the state of the driver. The i2c-gate bindings are documented elsewhere, but it seems sensible to at least have an example and cross reference in here. SPI bindings will need to be the subject of a future patch.

---
 .../devicetree/bindings/iio/imu/inv_mpu6050.txt    | 23 ++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)
Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txt +0 -0
index a9fc11e43b45..e18e04f3c6f4 100644
@@ -3,14 +3,17 @@ InvenSense MPU-6050 Six-Axis (Gyro + Accelerometer) MEMS MotionTracking Device
 http://www.invensense.com/mems/gyro/mpu6050.html
 
Quoted 9 lines

Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txt InvenSense MPU-6050 Six-Axis (Gyro + Accelerometer) MEMS MotionTracking Device · line 7

Quoted 4 lines
Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txt +2 -1
 Required properties:
- - compatible : should be "invensense,mpu6050"
+ - compatible : should be "invensense,mpu6050", "invensense,mpu6500",
+   "invensense,mpu9150" or "invensense,icm20608"

One per line please. With that,

Fixed and applied.

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

#6 lore raw

PATCH 2/2 iio:imu:mpu6050 add explicit mpu9250 support

In reply to a message not in the archive

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.

---
 Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txt | 2 +-
 drivers/iio/imu/inv_mpu6050/inv_mpu_core.c                | 6 ++++++
 drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c                 | 5 +++++
 drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h                 | 2 ++
 drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c                 | 1 +
 5 files changed, 15 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txt +1 -1
index e18e04f3c6f4..10c1abdcc34d 100644
@@ -4,7 +4,7 @@ http://www.invensense.com/mems/gyro/mpu6050.html
 
 Required properties:
  - compatible : should be "invensense,mpu6050", "invensense,mpu6500",
-   "invensense,mpu9150" or "invensense,icm20608"
+   "invensense,mpu9150", "invensense,mpu9250" or "invensense,icm20608"
  - reg : the I2C address of the sensor
  - interrupt-parent : should be the phandle for the interrupt controller
  - interrupts : interrupt mapping for GPIO IRQ
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c +6 -0
index b9fcbf18aa99..96dabbd2f004 100644
@@ -114,6 +114,12 @@ static const struct inv_mpu6050_hw hw_info[] = {
 		.config = &chip_config_6050,
 	},
 	{
+		.whoami = INV_MPU9250_WHOAMI_VALUE,
+		.name = "MPU9250",
+		.reg = &reg_set_6500,
+		.config = &chip_config_6050,
+	},
+	{
 		.whoami = INV_ICM20608_WHOAMI_VALUE,
 		.name = "ICM20608",
 		.reg = &reg_set_6500,
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c +5 -0
index a8e6330cb906..64b5f5b92200 100644
@@ -178,6 +178,7 @@ static const struct i2c_device_id inv_mpu_id[] = {
 	{"mpu6050", INV_MPU6050},
 	{"mpu6500", INV_MPU6500},
 	{"mpu9150", INV_MPU9150},
+	{"mpu9250", INV_MPU9250},
 	{"icm20608", INV_ICM20608},
 	{}
 };
@@ -198,6 +199,10 @@ static const struct of_device_id inv_of_match[] = {
 		.data = (void *)INV_MPU9150
 	},
 	{
+		.compatible = "invensense,mpu9250",
+		.data = (void *)INV_MPU9250
+	},
+	{
 		.compatible = "invensense,icm20608",
 		.data = (void *)INV_ICM20608
 	},
drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h +2 -0
index f0e8c5dd9fae..ef13de7a2c20 100644
@@ -70,6 +70,7 @@ enum inv_devices {
 	INV_MPU6500,
 	INV_MPU6000,
 	INV_MPU9150,
+	INV_MPU9250,
 	INV_ICM20608,
 	INV_NUM_PARTS
 };
@@ -226,6 +227,7 @@ struct inv_mpu6050_state {
 #define INV_MPU6050_WHOAMI_VALUE		0x68
 #define INV_MPU6500_WHOAMI_VALUE		0x70
 #define INV_MPU9150_WHOAMI_VALUE		0x68
+#define INV_MPU9250_WHOAMI_VALUE		0x71
 #define INV_ICM20608_WHOAMI_VALUE		0xAF
 
 /* scan element definition */
drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c +1 -0
index 6e6476dfa188..74506e5ac0db 100644
@@ -82,6 +82,7 @@ static const struct spi_device_id inv_mpu_id[] = {
 	{"mpu6000", INV_MPU6000},
 	{"mpu6500", INV_MPU6500},
 	{"mpu9150", INV_MPU9150},
+	{"mpu9250", INV_MPU9250},
 	{"icm20608", INV_ICM20608},
 	{}
 };
Signature · 1 line
2.12.0

A message that is not in the archive (sent off-list or not yet received): 20170326111100.2571-3-jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org

Acked-by
#8 lore raw

Re: [PATCH 2/2] iio:imu:mpu6050 add explicit mpu9250 support

Quoted 8 lines · Jonathan Cameron

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.

Quoted 8 lines
---
 Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txt | 2 +-
 drivers/iio/imu/inv_mpu6050/inv_mpu_core.c                | 6 ++++++
 drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c                 | 5 +++++
 drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h                 | 2 ++
 drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c                 | 1 +
 5 files changed, 15 insertions(+), 1 deletion(-)

Same one per line comment, but

#9 lore raw

Re: [PATCH 2/2] iio:imu:mpu6050 add explicit mpu9250 support

Quoted 18 lines · Rob Herring
Quoted 8 lines · Jonathan Cameron

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.

Quoted 8 lines
---
 Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txt | 2 +-
 drivers/iio/imu/inv_mpu6050/inv_mpu_core.c                | 6 ++++++
 drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c                 | 5 +++++
 drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h                 | 2 ++
 drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c                 | 1 +
 5 files changed, 15 insertions(+), 1 deletion(-)
Quoted 4 lines

Same one per line comment, but

Fixed up and applied. Thanks Rob.

Jonathan