1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/iio/st,st-sensors.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: STMicroelectronics MEMS sensors
8
9description: The STMicroelectronics sensor devices are pretty straight-forward
10  I2C or SPI devices, all sharing the same device tree descriptions no matter
11  what type of sensor it is.
12  Note that whilst this covers many STMicro MEMs sensors, some more complex
13  IMUs need their own bindings.
14  The STMicroelectronics sensor devices are pretty straight-forward I2C or
15  SPI devices, all sharing the same device tree descriptions no matter what
16  type of sensor it is.
17
18maintainers:
19  - Denis Ciocca <denis.ciocca@st.com>
20  - Linus Walleij <linus.walleij@linaro.org>
21
22properties:
23  compatible:
24    oneOf:
25      - description: STMicroelectronics Accelerometers
26        enum:
27          - st,h3lis331dl-accel
28          - st,lis2de12
29          - st,lis2dw12
30          - st,lis2hh12
31          - st,lis2dh12-accel
32          - st,lis331dl-accel
33          - st,lis331dlh-accel
34          - st,lis3de
35          - st,lis3dh-accel
36          - st,lis3dhh
37          - st,lis3l02dq
38          - st,lis3lv02dl-accel
39          - st,lng2dm-accel
40          - st,lsm303agr-accel
41          - st,lsm303dl-accel
42          - st,lsm303dlh-accel
43          - st,lsm303dlhc-accel
44          - st,lsm303dlm-accel
45          - st,lsm330-accel
46          - st,lsm330d-accel
47          - st,lsm330dl-accel
48          - st,lsm330dlc-accel
49      - description: STMicroelectronics Gyroscopes
50        enum:
51          - st,l3g4200d-gyro
52          - st,l3g4is-gyro
53          - st,l3gd20-gyro
54          - st,l3gd20h-gyro
55          - st,lsm330-gyro
56          - st,lsm330d-gyro
57          - st,lsm330dl-gyro
58          - st,lsm330dlc-gyro
59          - st,lsm9ds0-gyro
60      - description: STMicroelectronics Magnetometers
61        enum:
62          - st,lis2mdl
63          - st,lis3mdl-magn
64          - st,lsm303agr-magn
65          - st,lsm303dlh-magn
66          - st,lsm303dlhc-magn
67          - st,lsm303dlm-magn
68          - st,lsm9ds1-magn
69      - description: STMicroelectronics Pressure Sensors
70        enum:
71          - st,lps001wp-press
72          - st,lps22hb-press
73          - st,lps22hh
74          - st,lps25h-press
75          - st,lps331ap-press
76          - st,lps33hw
77          - st,lps35hw
78      - description: IMUs
79        enum:
80          - st,lsm9ds0-imu
81      - description: Deprecated bindings
82        enum:
83          - st,lis302dl-spi
84          - st,lis3lv02d
85        deprecated: true
86
87  reg:
88    maxItems: 1
89
90  interrupts:
91    description: interrupt line(s) connected to the DRDY line(s) and/or the
92      Intertial interrupt lines INT1 and INT2 if these exist. This means up to
93      three interrupts, and the DRDY must be the first one if it exists on
94      the package. The trigger edge of the interrupts is sometimes software
95      configurable in the hardware so the operating system should parse this
96      flag and set up the trigger edge as indicated in the device tree.
97    minItems: 1
98    maxItems: 2
99
100  vdd-supply: true
101  vddio-supply: true
102
103  st,drdy-int-pin:
104    description: the pin on the package that will be used to signal
105      "data ready" (valid values 1 or 2). This property is not configurable
106      on all sensors.
107    $ref: /schemas/types.yaml#/definitions/uint32
108    enum: [1, 2]
109
110  drive-open-drain:
111    $ref: /schemas/types.yaml#/definitions/flag
112    description: the interrupt/data ready line will be configured
113      as open drain, which is useful if several sensors share the same
114      interrupt line. (This binding is taken from pinctrl.)
115
116  mount-matrix:
117    description: an optional 3x3 mounting rotation matrix.
118
119allOf:
120  - if:
121      properties:
122        compatible:
123          enum:
124            # These have no interrupts
125            - st,lps001wp
126    then:
127      properties:
128        interrupts: false
129        st,drdy-int-pin: false
130        drive-open-drain: false
131
132  - if:
133      properties:
134        compatible:
135          enum:
136            # These have only DRDY
137            - st,lis2mdl
138            - st,lis3l02dq
139            - st,lis3lv02dl-accel
140            - st,lps22hb-press
141            - st,lps22hh
142            - st,lps25h-press
143            - st,lps33hw
144            - st,lps35hw
145            - st,lsm303agr-magn
146            - st,lsm303dlh-magn
147            - st,lsm303dlhc-magn
148            - st,lsm303dlm-magn
149    then:
150      properties:
151        interrupts:
152          maxItems: 1
153        st,drdy-int-pin: false
154
155  - if:
156      properties:
157        compatible:
158          enum:
159            # Two intertial interrupts i.e. accelerometer/gyro interrupts
160            - st,h3lis331dl-accel
161            - st,l3g4200d-gyro
162            - st,l3g4is-gyro
163            - st,l3gd20-gyro
164            - st,l3gd20h-gyro
165            - st,lis2de12
166            - st,lis2dw12
167            - st,lis2hh12
168            - st,lis2dh12-accel
169            - st,lis331dl-accel
170            - st,lis331dlh-accel
171            - st,lis3de
172            - st,lis3dh-accel
173            - st,lis3dhh
174            - st,lis3mdl-magn
175            - st,lng2dm-accel
176            - st,lps331ap-press
177            - st,lsm303agr-accel
178            - st,lsm303dlh-accel
179            - st,lsm303dlhc-accel
180            - st,lsm303dlm-accel
181            - st,lsm330-accel
182            - st,lsm330-gyro
183            - st,lsm330d-accel
184            - st,lsm330d-gyro
185            - st,lsm330dl-accel
186            - st,lsm330dl-gyro
187            - st,lsm330dlc-accel
188            - st,lsm330dlc-gyro
189            - st,lsm9ds0-gyro
190            - st,lsm9ds1-magn
191    then:
192      properties:
193        interrupts:
194          maxItems: 2
195
196required:
197  - compatible
198  - reg
199
200additionalProperties: false
201
202examples:
203  - |
204    #include <dt-bindings/interrupt-controller/irq.h>
205    i2c {
206      #address-cells = <1>;
207      #size-cells = <0>;
208
209      accelerometer@1c {
210        compatible = "st,lis331dl-accel";
211        reg = <0x1c>;
212        st,drdy-int-pin = <1>;
213        vdd-supply = <&ldo1>;
214        vddio-supply = <&ldo2>;
215        interrupt-parent = <&gpio>;
216        interrupts = <18 IRQ_TYPE_EDGE_RISING>, <19 IRQ_TYPE_EDGE_RISING>;
217      };
218    };
219    spi {
220      #address-cells = <1>;
221      #size-cells = <0>;
222      num-cs = <1>;
223
224      l3g4200d: gyroscope@0 {
225        compatible = "st,l3g4200d-gyro";
226        st,drdy-int-pin = <2>;
227        reg = <0>;
228        vdd-supply = <&vcc_io>;
229        vddio-supply = <&vcc_io>;
230      };
231    };
232...
233