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