Tom Rini | 53633a8 | 2024-02-29 12:33:36 -0500 | [diff] [blame] | 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 | ... |