On Sat, Oct 31, 2020 at 06:18:00PM +0000, Jonathan Cameron wrote: > From: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > > Relies on the patch to convert i2c-gate over to yaml. > > 2 prior examples combinded into one as a single example can show > all of the binding elements as long as the right part is selected. > > I don't know if there is a simple way to exclude i2c-gate if the > master interface is SPI. Not currently. > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > Cc: Jean-Baptiste Maneyrol <jmaneyrol@xxxxxxxxxxxxxx> > Cc: Wolfram Sang <wsa@xxxxxxxxxxxxx> > Cc: Peter Rosin <peda@xxxxxxxxxx> > --- > .../bindings/iio/imu/inv_mpu6050.txt | 67 ----------- > .../bindings/iio/imu/invensense,mpu6050.yaml | 105 ++++++++++++++++++ > 2 files changed, 105 insertions(+), 67 deletions(-) Reviewed-by: Rob Herring <robh@xxxxxxxxxx> However, ... > > diff --git a/Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txt b/Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txt > deleted file mode 100644 > index f2f64749e818..000000000000 > --- a/Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txt > +++ /dev/null > @@ -1,67 +0,0 @@ > -InvenSense MPU-6050 Six-Axis (Gyro + Accelerometer) MEMS MotionTracking Device > - > -http://www.invensense.com/mems/gyro/mpu6050.html > - > -Required properties: > - - compatible : should be one of > - "invensense,mpu6000" > - "invensense,mpu6050" > - "invensense,mpu6500" > - "invensense,mpu6515" > - "invensense,mpu9150" > - "invensense,mpu9250" > - "invensense,mpu9255" > - "invensense,icm20608" > - "invensense,icm20609" > - "invensense,icm20689" > - "invensense,icm20602" > - "invensense,icm20690" > - "invensense,iam20680" > - - reg : the I2C address of the sensor > - - interrupts: interrupt mapping for IRQ. It should be configured with flags > - IRQ_TYPE_LEVEL_HIGH, IRQ_TYPE_EDGE_RISING, IRQ_TYPE_LEVEL_LOW or > - IRQ_TYPE_EDGE_FALLING. > - > - Refer to interrupt-controller/interrupts.txt for generic interrupt client node > - bindings. > - > -Optional properties: > - - vdd-supply: regulator phandle for VDD supply > - - vddio-supply: regulator phandle for VDDIO supply > - - 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 { > - compatible = "invensense,mpu6050"; > - reg = <0x68>; > - interrupt-parent = <&gpio1>; > - interrupts = <18 IRQ_TYPE_EDGE_RISING>; > - mount-matrix = "-0.984807753012208", /* x0 */ > - "0", /* y0 */ > - "-0.173648177666930", /* z0 */ > - "0", /* x1 */ > - "-1", /* y1 */ > - "0", /* z1 */ > - "-0.173648177666930", /* x2 */ > - "0", /* y2 */ > - "0.984807753012208"; /* z2 */ > - }; > - > - > - mpu9250@68 { > - compatible = "invensense,mpu9250"; > - reg = <0x68>; > - interrupt-parent = <&gpio3>; > - interrupts = <21 IRQ_TYPE_LEVEL_HIGH>; > - i2c-gate { > - #address-cells = <1>; > - #size-cells = <0>; > - ax8975@c { > - compatible = "ak,ak8975"; > - reg = <0x0c>; > - }; > - }; > - }; > diff --git a/Documentation/devicetree/bindings/iio/imu/invensense,mpu6050.yaml b/Documentation/devicetree/bindings/iio/imu/invensense,mpu6050.yaml > new file mode 100644 > index 000000000000..f640d161773c > --- /dev/null > +++ b/Documentation/devicetree/bindings/iio/imu/invensense,mpu6050.yaml > @@ -0,0 +1,105 @@ > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/iio/imu/invensense,mpu6050.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: InvenSense MPU-6050 Six-Axis (Gyro + Accelerometer) MEMS MotionTracking Device > + > +maintainers: > + - Jean-Baptiste Maneyrol <jmaneyrol@xxxxxxxxxxxxxx> > + > +description: | > + These devices support both I2C and SPI bus interfaces. > + > +properties: > + compatible: > + enum: > + - invensense,iam20680 > + - invensense,icm20608 > + - invensense,icm20609 > + - invensense,icm20689 > + - invensense,icm20602 > + - invensense,icm20690 > + - invensense,mpu6000 > + - invensense,mpu6050 > + - invensense,mpu6500 > + - invensense,mpu6515 > + - invensense,mpu9150 > + - invensense,mpu9250 > + - invensense,mpu9255 > + > + reg: > + maxItems: 1 > + > + interrupts: > + maxItems: 1 > + > + spi-max-frequency: true > + > + vdd-supply: true > + vddio-supply: true > + > + mount-matrix: true > + > + i2c-gate: > + $ref: "../../i2c/i2c-gate.yaml" Though really I think we could just get rid of i2c-gate. We set the name here, so having it doesn't add much over just including i2c-controller.yaml here. > + unevaluatedProperties: false > + description: | > + These devices also support an auxiliary i2c bus. This is > + simple enough to be described using the i2c-gate binding. > + Only possible if using an I2C interface to the host. > + > +allOf: > + - if: > + not: > + properties: > + compatible: > + contains: > + enum: > + - invensense,mpu9150 > + - invensense,mpu9250 > + - invensense,mpu9255 > + then: > + properties: > + i2c-gate: false > + > +additionalProperties: false > + > +required: > + - compatible > + - reg > + - interrupts > + > +examples: > + - | > + #include <dt-bindings/interrupt-controller/irq.h> > + i2c { > + #address-cells = <1>; > + #size-cells = <0>; > + > + imu@68 { > + compatible = "invensense,mpu9250"; > + reg = <0x68>; > + interrupt-parent = <&gpio3>; > + interrupts = <21 IRQ_TYPE_LEVEL_HIGH>; > + mount-matrix = "-0.984807753012208", /* x0 */ > + "0", /* y0 */ > + "-0.173648177666930", /* z0 */ > + "0", /* x1 */ > + "-1", /* y1 */ > + "0", /* z1 */ > + "-0.173648177666930", /* x2 */ > + "0", /* y2 */ > + "0.984807753012208"; /* z2 */ > + i2c-gate { > + #address-cells = <1>; > + #size-cells = <0>; > + magnetometer@c { > + compatible = "ak,ak8975"; > + reg = <0x0c>; > + }; > + }; > + }; > + }; > +... > -- > 2.28.0 >