162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/iio/st,st-sensors.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: STMicroelectronics MEMS sensors
862306a36Sopenharmony_ci
962306a36Sopenharmony_cidescription: The STMicroelectronics sensor devices are pretty straight-forward
1062306a36Sopenharmony_ci  I2C or SPI devices, all sharing the same device tree descriptions no matter
1162306a36Sopenharmony_ci  what type of sensor it is.
1262306a36Sopenharmony_ci  Note that whilst this covers many STMicro MEMs sensors, some more complex
1362306a36Sopenharmony_ci  IMUs need their own bindings.
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_cimaintainers:
1662306a36Sopenharmony_ci  - Denis Ciocca <denis.ciocca@st.com>
1762306a36Sopenharmony_ci  - Linus Walleij <linus.walleij@linaro.org>
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciproperties:
2062306a36Sopenharmony_ci  compatible:
2162306a36Sopenharmony_ci    oneOf:
2262306a36Sopenharmony_ci      - description: STMicroelectronics Accelerometers
2362306a36Sopenharmony_ci        enum:
2462306a36Sopenharmony_ci          - st,h3lis331dl-accel
2562306a36Sopenharmony_ci          - st,lis2de12
2662306a36Sopenharmony_ci          - st,lis2dw12
2762306a36Sopenharmony_ci          - st,lis2hh12
2862306a36Sopenharmony_ci          - st,lis2dh12-accel
2962306a36Sopenharmony_ci          - st,lis302dl
3062306a36Sopenharmony_ci          - st,lis331dl-accel
3162306a36Sopenharmony_ci          - st,lis331dlh-accel
3262306a36Sopenharmony_ci          - st,lis3de
3362306a36Sopenharmony_ci          - st,lis3dh-accel
3462306a36Sopenharmony_ci          - st,lis3dhh
3562306a36Sopenharmony_ci          - st,lis3l02dq
3662306a36Sopenharmony_ci          - st,lis3lv02dl-accel
3762306a36Sopenharmony_ci          - st,lng2dm-accel
3862306a36Sopenharmony_ci          - st,lsm303agr-accel
3962306a36Sopenharmony_ci          - st,lsm303c-accel
4062306a36Sopenharmony_ci          - st,lsm303dl-accel
4162306a36Sopenharmony_ci          - st,lsm303dlh-accel
4262306a36Sopenharmony_ci          - st,lsm303dlhc-accel
4362306a36Sopenharmony_ci          - st,lsm303dlm-accel
4462306a36Sopenharmony_ci          - st,lsm330-accel
4562306a36Sopenharmony_ci          - st,lsm330d-accel
4662306a36Sopenharmony_ci          - st,lsm330dl-accel
4762306a36Sopenharmony_ci          - st,lsm330dlc-accel
4862306a36Sopenharmony_ci      - items:
4962306a36Sopenharmony_ci          - const: st,iis328dq
5062306a36Sopenharmony_ci          - const: st,h3lis331dl-accel
5162306a36Sopenharmony_ci      - description: Silan Accelerometers
5262306a36Sopenharmony_ci        enum:
5362306a36Sopenharmony_ci          - silan,sc7a20
5462306a36Sopenharmony_ci      - description: STMicroelectronics Gyroscopes
5562306a36Sopenharmony_ci        enum:
5662306a36Sopenharmony_ci          - st,l3g4200d-gyro
5762306a36Sopenharmony_ci          - st,l3g4is-gyro
5862306a36Sopenharmony_ci          - st,l3gd20-gyro
5962306a36Sopenharmony_ci          - st,l3gd20h-gyro
6062306a36Sopenharmony_ci          - st,lsm330-gyro
6162306a36Sopenharmony_ci          - st,lsm330d-gyro
6262306a36Sopenharmony_ci          - st,lsm330dl-gyro
6362306a36Sopenharmony_ci          - st,lsm330dlc-gyro
6462306a36Sopenharmony_ci          - st,lsm9ds0-gyro
6562306a36Sopenharmony_ci      - description: STMicroelectronics Magnetometers
6662306a36Sopenharmony_ci        enum:
6762306a36Sopenharmony_ci          - st,lis2mdl
6862306a36Sopenharmony_ci          - st,lis3mdl-magn
6962306a36Sopenharmony_ci          - st,lsm303agr-magn
7062306a36Sopenharmony_ci          - st,lsm303c-magn
7162306a36Sopenharmony_ci          - st,lsm303dlh-magn
7262306a36Sopenharmony_ci          - st,lsm303dlhc-magn
7362306a36Sopenharmony_ci          - st,lsm303dlm-magn
7462306a36Sopenharmony_ci          - st,lsm9ds1-magn
7562306a36Sopenharmony_ci      - description: STMicroelectronics Pressure Sensors
7662306a36Sopenharmony_ci        enum:
7762306a36Sopenharmony_ci          - st,lps001wp-press
7862306a36Sopenharmony_ci          - st,lps22df
7962306a36Sopenharmony_ci          - st,lps22hb-press
8062306a36Sopenharmony_ci          - st,lps22hh
8162306a36Sopenharmony_ci          - st,lps25h-press
8262306a36Sopenharmony_ci          - st,lps331ap-press
8362306a36Sopenharmony_ci          - st,lps33hw
8462306a36Sopenharmony_ci          - st,lps35hw
8562306a36Sopenharmony_ci      - description: IMUs
8662306a36Sopenharmony_ci        enum:
8762306a36Sopenharmony_ci          - st,lsm303d-imu
8862306a36Sopenharmony_ci          - st,lsm9ds0-imu
8962306a36Sopenharmony_ci      - description: Deprecated bindings
9062306a36Sopenharmony_ci        enum:
9162306a36Sopenharmony_ci          - st,lis302dl-spi
9262306a36Sopenharmony_ci          - st,lis3lv02d
9362306a36Sopenharmony_ci        deprecated: true
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci  reg:
9662306a36Sopenharmony_ci    maxItems: 1
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci  interrupts:
9962306a36Sopenharmony_ci    description: interrupt line(s) connected to the DRDY line(s) and/or the
10062306a36Sopenharmony_ci      Inertial interrupt lines INT1 and INT2 if these exist. This means up to
10162306a36Sopenharmony_ci      three interrupts, and the DRDY must be the first one if it exists on
10262306a36Sopenharmony_ci      the package. The trigger edge of the interrupts is sometimes software
10362306a36Sopenharmony_ci      configurable in the hardware so the operating system should parse this
10462306a36Sopenharmony_ci      flag and set up the trigger edge as indicated in the device tree.
10562306a36Sopenharmony_ci    minItems: 1
10662306a36Sopenharmony_ci    maxItems: 2
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci  vdd-supply: true
10962306a36Sopenharmony_ci  vddio-supply: true
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci  st,drdy-int-pin:
11262306a36Sopenharmony_ci    description: the pin on the package that will be used to signal
11362306a36Sopenharmony_ci      "data ready" (valid values 1 or 2). This property is not configurable
11462306a36Sopenharmony_ci      on all sensors.
11562306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
11662306a36Sopenharmony_ci    enum: [1, 2]
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci  drive-open-drain:
11962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/flag
12062306a36Sopenharmony_ci    description: the interrupt/data ready line will be configured
12162306a36Sopenharmony_ci      as open drain, which is useful if several sensors share the same
12262306a36Sopenharmony_ci      interrupt line. (This binding is taken from pinctrl.)
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ci  mount-matrix:
12562306a36Sopenharmony_ci    description: an optional 3x3 mounting rotation matrix.
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ciallOf:
12862306a36Sopenharmony_ci  - if:
12962306a36Sopenharmony_ci      properties:
13062306a36Sopenharmony_ci        compatible:
13162306a36Sopenharmony_ci          enum:
13262306a36Sopenharmony_ci            # These have no interrupts
13362306a36Sopenharmony_ci            - st,lps001wp
13462306a36Sopenharmony_ci    then:
13562306a36Sopenharmony_ci      properties:
13662306a36Sopenharmony_ci        interrupts: false
13762306a36Sopenharmony_ci        st,drdy-int-pin: false
13862306a36Sopenharmony_ci        drive-open-drain: false
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ci  - if:
14162306a36Sopenharmony_ci      properties:
14262306a36Sopenharmony_ci        compatible:
14362306a36Sopenharmony_ci          enum:
14462306a36Sopenharmony_ci            # These have only DRDY
14562306a36Sopenharmony_ci            - st,lis2mdl
14662306a36Sopenharmony_ci            - st,lis3l02dq
14762306a36Sopenharmony_ci            - st,lis3lv02dl-accel
14862306a36Sopenharmony_ci            - st,lps22df
14962306a36Sopenharmony_ci            - st,lps22hb-press
15062306a36Sopenharmony_ci            - st,lps22hh
15162306a36Sopenharmony_ci            - st,lps25h-press
15262306a36Sopenharmony_ci            - st,lps33hw
15362306a36Sopenharmony_ci            - st,lps35hw
15462306a36Sopenharmony_ci            - st,lsm303agr-magn
15562306a36Sopenharmony_ci            - st,lsm303dlh-magn
15662306a36Sopenharmony_ci            - st,lsm303dlhc-magn
15762306a36Sopenharmony_ci            - st,lsm303dlm-magn
15862306a36Sopenharmony_ci    then:
15962306a36Sopenharmony_ci      properties:
16062306a36Sopenharmony_ci        interrupts:
16162306a36Sopenharmony_ci          maxItems: 1
16262306a36Sopenharmony_ci        st,drdy-int-pin: false
16362306a36Sopenharmony_ci
16462306a36Sopenharmony_cirequired:
16562306a36Sopenharmony_ci  - compatible
16662306a36Sopenharmony_ci  - reg
16762306a36Sopenharmony_ci
16862306a36Sopenharmony_ciadditionalProperties: false
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ciexamples:
17162306a36Sopenharmony_ci  - |
17262306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
17362306a36Sopenharmony_ci    i2c {
17462306a36Sopenharmony_ci      #address-cells = <1>;
17562306a36Sopenharmony_ci      #size-cells = <0>;
17662306a36Sopenharmony_ci
17762306a36Sopenharmony_ci      accelerometer@1c {
17862306a36Sopenharmony_ci        compatible = "st,lis331dl-accel";
17962306a36Sopenharmony_ci        reg = <0x1c>;
18062306a36Sopenharmony_ci        st,drdy-int-pin = <1>;
18162306a36Sopenharmony_ci        vdd-supply = <&ldo1>;
18262306a36Sopenharmony_ci        vddio-supply = <&ldo2>;
18362306a36Sopenharmony_ci        interrupt-parent = <&gpio>;
18462306a36Sopenharmony_ci        interrupts = <18 IRQ_TYPE_EDGE_RISING>, <19 IRQ_TYPE_EDGE_RISING>;
18562306a36Sopenharmony_ci      };
18662306a36Sopenharmony_ci    };
18762306a36Sopenharmony_ci    spi {
18862306a36Sopenharmony_ci      #address-cells = <1>;
18962306a36Sopenharmony_ci      #size-cells = <0>;
19062306a36Sopenharmony_ci      num-cs = <1>;
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ci      l3g4200d: gyroscope@0 {
19362306a36Sopenharmony_ci        compatible = "st,l3g4200d-gyro";
19462306a36Sopenharmony_ci        st,drdy-int-pin = <2>;
19562306a36Sopenharmony_ci        reg = <0>;
19662306a36Sopenharmony_ci        vdd-supply = <&vcc_io>;
19762306a36Sopenharmony_ci        vddio-supply = <&vcc_io>;
19862306a36Sopenharmony_ci      };
19962306a36Sopenharmony_ci    };
20062306a36Sopenharmony_ci...
201