1a9aa4686SJonathan Cameron# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2a9aa4686SJonathan Cameron%YAML 1.2
3a9aa4686SJonathan Cameron---
4a9aa4686SJonathan Cameron$id: http://devicetree.org/schemas/iio/st,st-sensors.yaml#
5a9aa4686SJonathan Cameron$schema: http://devicetree.org/meta-schemas/core.yaml#
6a9aa4686SJonathan Cameron
7a9aa4686SJonathan Camerontitle: STMicroelectronics MEMS sensors
8a9aa4686SJonathan Cameron
90cd71145SLinus Walleijdescription: The STMicroelectronics sensor devices are pretty straight-forward
100cd71145SLinus Walleij  I2C or SPI devices, all sharing the same device tree descriptions no matter
110cd71145SLinus Walleij  what type of sensor it is.
12a9aa4686SJonathan Cameron  Note that whilst this covers many STMicro MEMs sensors, some more complex
13a9aa4686SJonathan Cameron  IMUs need their own bindings.
14a9aa4686SJonathan Cameron
15a9aa4686SJonathan Cameronmaintainers:
16a9aa4686SJonathan Cameron  - Denis Ciocca <denis.ciocca@st.com>
170cd71145SLinus Walleij  - Linus Walleij <linus.walleij@linaro.org>
18a9aa4686SJonathan Cameron
19a9aa4686SJonathan Cameronproperties:
20a9aa4686SJonathan Cameron  compatible:
210cd71145SLinus Walleij    oneOf:
220cd71145SLinus Walleij      - description: STMicroelectronics Accelerometers
23a9aa4686SJonathan Cameron        enum:
240cd71145SLinus Walleij          - st,h3lis331dl-accel
250cd71145SLinus Walleij          - st,lis2de12
260cd71145SLinus Walleij          - st,lis2dw12
270cd71145SLinus Walleij          - st,lis2hh12
280cd71145SLinus Walleij          - st,lis2dh12-accel
29ce92d674SSicelo A. Mhlongo          - st,lis302dl
300cd71145SLinus Walleij          - st,lis331dl-accel
310cd71145SLinus Walleij          - st,lis331dlh-accel
320cd71145SLinus Walleij          - st,lis3de
330cd71145SLinus Walleij          - st,lis3dh-accel
340cd71145SLinus Walleij          - st,lis3dhh
350cd71145SLinus Walleij          - st,lis3l02dq
36a9aa4686SJonathan Cameron          - st,lis3lv02dl-accel
370cd71145SLinus Walleij          - st,lng2dm-accel
380cd71145SLinus Walleij          - st,lsm303agr-accel
394aaf3e40SStephan Gerhold          - st,lsm303c-accel
400cd71145SLinus Walleij          - st,lsm303dl-accel
41a9aa4686SJonathan Cameron          - st,lsm303dlh-accel
42a9aa4686SJonathan Cameron          - st,lsm303dlhc-accel
430cd71145SLinus Walleij          - st,lsm303dlm-accel
440cd71145SLinus Walleij          - st,lsm330-accel
45a9aa4686SJonathan Cameron          - st,lsm330d-accel
46a9aa4686SJonathan Cameron          - st,lsm330dl-accel
47a9aa4686SJonathan Cameron          - st,lsm330dlc-accel
48f9dbd94bSStefan Wahren      - items:
49f9dbd94bSStefan Wahren          - const: st,iis328dq
50f9dbd94bSStefan Wahren          - const: st,h3lis331dl-accel
51cb432e7dSSamuel Holland      - description: Silan Accelerometers
52cb432e7dSSamuel Holland        enum:
53cb432e7dSSamuel Holland          - silan,sc7a20
540cd71145SLinus Walleij      - description: STMicroelectronics Gyroscopes
550cd71145SLinus Walleij        enum:
56a9aa4686SJonathan Cameron          - st,l3g4200d-gyro
570cd71145SLinus Walleij          - st,l3g4is-gyro
580cd71145SLinus Walleij          - st,l3gd20-gyro
590cd71145SLinus Walleij          - st,l3gd20h-gyro
600cd71145SLinus Walleij          - st,lsm330-gyro
61a9aa4686SJonathan Cameron          - st,lsm330d-gyro
62a9aa4686SJonathan Cameron          - st,lsm330dl-gyro
63a9aa4686SJonathan Cameron          - st,lsm330dlc-gyro
64a9aa4686SJonathan Cameron          - st,lsm9ds0-gyro
650cd71145SLinus Walleij      - description: STMicroelectronics Magnetometers
660cd71145SLinus Walleij        enum:
670cd71145SLinus Walleij          - st,lis2mdl
680cd71145SLinus Walleij          - st,lis3mdl-magn
69a9aa4686SJonathan Cameron          - st,lsm303agr-magn
704aaf3e40SStephan Gerhold          - st,lsm303c-magn
71a9aa4686SJonathan Cameron          - st,lsm303dlh-magn
72a9aa4686SJonathan Cameron          - st,lsm303dlhc-magn
73a9aa4686SJonathan Cameron          - st,lsm303dlm-magn
74a9aa4686SJonathan Cameron          - st,lsm9ds1-magn
750cd71145SLinus Walleij      - description: STMicroelectronics Pressure Sensors
760cd71145SLinus Walleij        enum:
77a9aa4686SJonathan Cameron          - st,lps001wp-press
78b4027837SMartyn Welch          - st,lps22df
790cd71145SLinus Walleij          - st,lps22hb-press
800cd71145SLinus Walleij          - st,lps22hh
81a9aa4686SJonathan Cameron          - st,lps25h-press
82a9aa4686SJonathan Cameron          - st,lps331ap-press
83a9aa4686SJonathan Cameron          - st,lps33hw
84a9aa4686SJonathan Cameron          - st,lps35hw
858cd40131SAndy Shevchenko      - description: IMUs
868cd40131SAndy Shevchenko        enum:
87773aa06dSMarius Hoch          - st,lsm303d-imu
888cd40131SAndy Shevchenko          - st,lsm9ds0-imu
890cd71145SLinus Walleij      - description: Deprecated bindings
900cd71145SLinus Walleij        enum:
910cd71145SLinus Walleij          - st,lis302dl-spi
920cd71145SLinus Walleij          - st,lis3lv02d
930cd71145SLinus Walleij        deprecated: true
94a9aa4686SJonathan Cameron
95a9aa4686SJonathan Cameron  reg:
96a9aa4686SJonathan Cameron    maxItems: 1
97a9aa4686SJonathan Cameron
98a9aa4686SJonathan Cameron  interrupts:
990cd71145SLinus Walleij    description: interrupt line(s) connected to the DRDY line(s) and/or the
100*47aab533SBjorn Helgaas      Inertial interrupt lines INT1 and INT2 if these exist. This means up to
1010cd71145SLinus Walleij      three interrupts, and the DRDY must be the first one if it exists on
1020cd71145SLinus Walleij      the package. The trigger edge of the interrupts is sometimes software
1030cd71145SLinus Walleij      configurable in the hardware so the operating system should parse this
1040cd71145SLinus Walleij      flag and set up the trigger edge as indicated in the device tree.
105a9aa4686SJonathan Cameron    minItems: 1
1060cd71145SLinus Walleij    maxItems: 2
107a9aa4686SJonathan Cameron
108a9aa4686SJonathan Cameron  vdd-supply: true
109a9aa4686SJonathan Cameron  vddio-supply: true
110a9aa4686SJonathan Cameron
111a9aa4686SJonathan Cameron  st,drdy-int-pin:
1120cd71145SLinus Walleij    description: the pin on the package that will be used to signal
1130cd71145SLinus Walleij      "data ready" (valid values 1 or 2). This property is not configurable
1140cd71145SLinus Walleij      on all sensors.
115a9aa4686SJonathan Cameron    $ref: /schemas/types.yaml#/definitions/uint32
1160cd71145SLinus Walleij    enum: [1, 2]
117a9aa4686SJonathan Cameron
118a9aa4686SJonathan Cameron  drive-open-drain:
119a9aa4686SJonathan Cameron    $ref: /schemas/types.yaml#/definitions/flag
1200cd71145SLinus Walleij    description: the interrupt/data ready line will be configured
1210cd71145SLinus Walleij      as open drain, which is useful if several sensors share the same
1220cd71145SLinus Walleij      interrupt line. (This binding is taken from pinctrl.)
1230cd71145SLinus Walleij
1240cd71145SLinus Walleij  mount-matrix:
1250cd71145SLinus Walleij    description: an optional 3x3 mounting rotation matrix.
1260cd71145SLinus Walleij
1270cd71145SLinus WalleijallOf:
1280cd71145SLinus Walleij  - if:
1290cd71145SLinus Walleij      properties:
1300cd71145SLinus Walleij        compatible:
1310cd71145SLinus Walleij          enum:
1320cd71145SLinus Walleij            # These have no interrupts
1330cd71145SLinus Walleij            - st,lps001wp
1340cd71145SLinus Walleij    then:
1350cd71145SLinus Walleij      properties:
1360cd71145SLinus Walleij        interrupts: false
1370cd71145SLinus Walleij        st,drdy-int-pin: false
1380cd71145SLinus Walleij        drive-open-drain: false
1390cd71145SLinus Walleij
1400cd71145SLinus Walleij  - if:
1410cd71145SLinus Walleij      properties:
1420cd71145SLinus Walleij        compatible:
1430cd71145SLinus Walleij          enum:
1440cd71145SLinus Walleij            # These have only DRDY
1450cd71145SLinus Walleij            - st,lis2mdl
1460cd71145SLinus Walleij            - st,lis3l02dq
1470cd71145SLinus Walleij            - st,lis3lv02dl-accel
148b4027837SMartyn Welch            - st,lps22df
1490cd71145SLinus Walleij            - st,lps22hb-press
1500cd71145SLinus Walleij            - st,lps22hh
1510cd71145SLinus Walleij            - st,lps25h-press
1520cd71145SLinus Walleij            - st,lps33hw
1530cd71145SLinus Walleij            - st,lps35hw
1540cd71145SLinus Walleij            - st,lsm303agr-magn
1550cd71145SLinus Walleij            - st,lsm303dlh-magn
1560cd71145SLinus Walleij            - st,lsm303dlhc-magn
1570cd71145SLinus Walleij            - st,lsm303dlm-magn
1580cd71145SLinus Walleij    then:
1590cd71145SLinus Walleij      properties:
1600cd71145SLinus Walleij        interrupts:
1610cd71145SLinus Walleij          maxItems: 1
1620cd71145SLinus Walleij        st,drdy-int-pin: false
1630cd71145SLinus Walleij
164a9aa4686SJonathan Cameronrequired:
165a9aa4686SJonathan Cameron  - compatible
166a9aa4686SJonathan Cameron  - reg
167a9aa4686SJonathan Cameron
168a9aa4686SJonathan CameronadditionalProperties: false
169a9aa4686SJonathan Cameron
170a9aa4686SJonathan Cameronexamples:
171a9aa4686SJonathan Cameron  - |
172a9aa4686SJonathan Cameron    #include <dt-bindings/interrupt-controller/irq.h>
173a9aa4686SJonathan Cameron    i2c {
174a9aa4686SJonathan Cameron      #address-cells = <1>;
175a9aa4686SJonathan Cameron      #size-cells = <0>;
1760cd71145SLinus Walleij
1770cd71145SLinus Walleij      accelerometer@1c {
1780cd71145SLinus Walleij        compatible = "st,lis331dl-accel";
1790cd71145SLinus Walleij        reg = <0x1c>;
1800cd71145SLinus Walleij        st,drdy-int-pin = <1>;
1810cd71145SLinus Walleij        vdd-supply = <&ldo1>;
1820cd71145SLinus Walleij        vddio-supply = <&ldo2>;
1830cd71145SLinus Walleij        interrupt-parent = <&gpio>;
1840cd71145SLinus Walleij        interrupts = <18 IRQ_TYPE_EDGE_RISING>, <19 IRQ_TYPE_EDGE_RISING>;
1850cd71145SLinus Walleij      };
1860cd71145SLinus Walleij    };
1870cd71145SLinus Walleij    spi {
1880cd71145SLinus Walleij      #address-cells = <1>;
1890cd71145SLinus Walleij      #size-cells = <0>;
1900cd71145SLinus Walleij      num-cs = <1>;
1910cd71145SLinus Walleij
1920cd71145SLinus Walleij      l3g4200d: gyroscope@0 {
1930cd71145SLinus Walleij        compatible = "st,l3g4200d-gyro";
1940cd71145SLinus Walleij        st,drdy-int-pin = <2>;
1950cd71145SLinus Walleij        reg = <0>;
1960cd71145SLinus Walleij        vdd-supply = <&vcc_io>;
1970cd71145SLinus Walleij        vddio-supply = <&vcc_io>;
198a9aa4686SJonathan Cameron      };
199a9aa4686SJonathan Cameron    };
200a9aa4686SJonathan Cameron...
201