GNU Linux-libre 6.8.9-gnu
[releases.git] / Documentation / devicetree / bindings / iio / st,st-sensors.yaml
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
7 title: STMicroelectronics MEMS sensors
8
9 description: 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
15 maintainers:
16   - Denis Ciocca <denis.ciocca@st.com>
17   - Linus Walleij <linus.walleij@linaro.org>
18
19 properties:
20   compatible:
21     oneOf:
22       - description: STMicroelectronics Accelerometers
23         enum:
24           - st,h3lis331dl-accel
25           - st,lis2de12
26           - st,lis2dw12
27           - st,lis2hh12
28           - st,lis2dh12-accel
29           - st,lis302dl
30           - st,lis331dl-accel
31           - st,lis331dlh-accel
32           - st,lis3de
33           - st,lis3dh-accel
34           - st,lis3dhh
35           - st,lis3l02dq
36           - st,lis3lv02dl-accel
37           - st,lng2dm-accel
38           - st,lsm303agr-accel
39           - st,lsm303c-accel
40           - st,lsm303dl-accel
41           - st,lsm303dlh-accel
42           - st,lsm303dlhc-accel
43           - st,lsm303dlm-accel
44           - st,lsm330-accel
45           - st,lsm330d-accel
46           - st,lsm330dl-accel
47           - st,lsm330dlc-accel
48       - items:
49           - const: st,iis328dq
50           - const: st,h3lis331dl-accel
51       - description: Silan Accelerometers
52         enum:
53           - silan,sc7a20
54       - description: STMicroelectronics Gyroscopes
55         enum:
56           - st,l3g4200d-gyro
57           - st,l3g4is-gyro
58           - st,l3gd20-gyro
59           - st,l3gd20h-gyro
60           - st,lsm330-gyro
61           - st,lsm330d-gyro
62           - st,lsm330dl-gyro
63           - st,lsm330dlc-gyro
64           - st,lsm9ds0-gyro
65       - description: STMicroelectronics Magnetometers
66         enum:
67           - st,lis2mdl
68           - st,lis3mdl-magn
69           - st,lsm303agr-magn
70           - st,lsm303c-magn
71           - st,lsm303dlh-magn
72           - st,lsm303dlhc-magn
73           - st,lsm303dlm-magn
74           - st,lsm9ds1-magn
75       - description: STMicroelectronics Pressure Sensors
76         enum:
77           - st,lps001wp-press
78           - st,lps22df
79           - st,lps22hb-press
80           - st,lps22hh
81           - st,lps25h-press
82           - st,lps331ap-press
83           - st,lps33hw
84           - st,lps35hw
85       - description: IMUs
86         enum:
87           - st,lsm303d-imu
88           - st,lsm9ds0-imu
89       - description: Deprecated bindings
90         enum:
91           - st,lis302dl-spi
92           - st,lis3lv02d
93         deprecated: true
94
95   reg:
96     maxItems: 1
97
98   interrupts:
99     description: interrupt line(s) connected to the DRDY line(s) and/or the
100       Inertial interrupt lines INT1 and INT2 if these exist. This means up to
101       three interrupts, and the DRDY must be the first one if it exists on
102       the package. The trigger edge of the interrupts is sometimes software
103       configurable in the hardware so the operating system should parse this
104       flag and set up the trigger edge as indicated in the device tree.
105     minItems: 1
106     maxItems: 2
107
108   vdd-supply: true
109   vddio-supply: true
110
111   st,drdy-int-pin:
112     description: the pin on the package that will be used to signal
113       "data ready" (valid values 1 or 2). This property is not configurable
114       on all sensors.
115     $ref: /schemas/types.yaml#/definitions/uint32
116     enum: [1, 2]
117
118   drive-open-drain:
119     $ref: /schemas/types.yaml#/definitions/flag
120     description: the interrupt/data ready line will be configured
121       as open drain, which is useful if several sensors share the same
122       interrupt line. (This binding is taken from pinctrl.)
123
124   mount-matrix:
125     description: an optional 3x3 mounting rotation matrix.
126
127 allOf:
128   - if:
129       properties:
130         compatible:
131           enum:
132             # These have no interrupts
133             - st,lps001wp
134     then:
135       properties:
136         interrupts: false
137         st,drdy-int-pin: false
138         drive-open-drain: false
139
140   - if:
141       properties:
142         compatible:
143           enum:
144             # These have only DRDY
145             - st,lis2mdl
146             - st,lis3l02dq
147             - st,lis3lv02dl-accel
148             - st,lps22df
149             - st,lps22hb-press
150             - st,lps22hh
151             - st,lps25h-press
152             - st,lps33hw
153             - st,lps35hw
154             - st,lsm303agr-magn
155             - st,lsm303dlh-magn
156             - st,lsm303dlhc-magn
157             - st,lsm303dlm-magn
158     then:
159       properties:
160         interrupts:
161           maxItems: 1
162         st,drdy-int-pin: false
163
164 required:
165   - compatible
166   - reg
167
168 additionalProperties: false
169
170 examples:
171   - |
172     #include <dt-bindings/interrupt-controller/irq.h>
173     i2c {
174       #address-cells = <1>;
175       #size-cells = <0>;
176
177       accelerometer@1c {
178         compatible = "st,lis331dl-accel";
179         reg = <0x1c>;
180         st,drdy-int-pin = <1>;
181         vdd-supply = <&ldo1>;
182         vddio-supply = <&ldo2>;
183         interrupt-parent = <&gpio>;
184         interrupts = <18 IRQ_TYPE_EDGE_RISING>, <19 IRQ_TYPE_EDGE_RISING>;
185       };
186     };
187     spi {
188       #address-cells = <1>;
189       #size-cells = <0>;
190       num-cs = <1>;
191
192       l3g4200d: gyroscope@0 {
193         compatible = "st,l3g4200d-gyro";
194         st,drdy-int-pin = <2>;
195         reg = <0>;
196         vdd-supply = <&vcc_io>;
197         vddio-supply = <&vcc_io>;
198       };
199     };
200 ...