blob: b77cc3f3075d7904a5fa4a5fee77af79dafaf504 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mfd/st,stmpe.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: STMicroelectonics Port Expander (STMPE)
8
9description: STMicroelectronics Port Expander (STMPE) is a series of slow
10 bus controllers for various expanded peripherals such as GPIO, keypad,
11 touchscreen, ADC, PWM or rotator. It can contain one or several different
12 peripherals connected to SPI or I2C.
13
14maintainers:
15 - Linus Walleij <linus.walleij@linaro.org>
16
17allOf:
18 - $ref: /schemas/spi/spi-peripheral-props.yaml#
19
20properties:
21 compatible:
22 enum:
23 - st,stmpe601
24 - st,stmpe801
25 - st,stmpe811
26 - st,stmpe1600
27 - st,stmpe1601
28 - st,stmpe2401
29 - st,stmpe2403
30
31 reg:
32 maxItems: 1
33
34 interrupts:
35 maxItems: 1
36
37 vcc-supply: true
38
39 vio-supply: true
40
41 reset-gpios:
42 maxItems: 1
43
44 wakeup-source: true
45
46 st,autosleep-timeout:
47 $ref: /schemas/types.yaml#/definitions/uint32
48 enum: [ 4, 16, 32, 64, 128, 256, 512, 1024 ]
49 description: Time idle before going to automatic sleep to save power
50
51 st,sample-time:
52 $ref: /schemas/types.yaml#/definitions/uint32
53 enum: [ 0, 1, 2, 3, 4, 5, 6 ]
54 description: |
55 Sample time per iteration
56 0 = 36 clock ticks
57 1 = 44 clock ticks
58 2 = 56 clock ticks
59 3 = 64 clock ticks
60 4 = 80 clock ticks - recommended
61 5 = 96 clock ticks
62 6 = 124 clock ticks
63
64 st,mod-12b:
65 $ref: /schemas/types.yaml#/definitions/uint32
66 enum: [ 0, 1 ]
67 description: ADC bit mode 0 = 10bit ADC, 1 = 12bit ADC
68
69 st,ref-sel:
70 $ref: /schemas/types.yaml#/definitions/uint32
71 enum: [ 0, 1 ]
72 description: ADC reference source 0 = internal, 1 = external
73
74 st,adc-freq:
75 $ref: /schemas/types.yaml#/definitions/uint32
76 enum: [ 0, 1, 2, 3 ]
77 description: |
78 ADC clock speed
79 0 = 1.625 MHz
80 1 = 3.25 MHz
81 2, 3 = 6.5 MHz
82
83 adc:
84 type: object
85 $ref: /schemas/iio/adc/st,stmpe-adc.yaml#
86
87 gpio:
88 type: object
89 $ref: /schemas/gpio/st,stmpe-gpio.yaml#
90
91 keyboard-controller:
92 type: object
93 $ref: /schemas/input/matrix-keymap.yaml#
94
95 unevaluatedProperties: false
96
97 properties:
98 compatible:
99 const: st,stmpe-keypad
100
101 debounce-interval:
102 description: Debouncing interval in milliseconds
103 $ref: /schemas/types.yaml#/definitions/uint32
104
105 st,no-autorepeat:
106 description: If present, the keys will not autorepeat when pressed
107 $ref: /schemas/types.yaml#/definitions/flag
108
109 st,scan-count:
110 description: Scanning cycles elapsed before key data is updated
111 $ref: /schemas/types.yaml#/definitions/uint32
112
113 required:
114 - compatible
115 - linux,keymap
116
117 pwm:
118 type: object
119 $ref: /schemas/pwm/pwm.yaml#
120
121 unevaluatedProperties: false
122
123 properties:
124 compatible:
125 const: st,stmpe-pwm
126
127 "#pwm-cells":
128 const: 2
129
130 touchscreen:
131 type: object
132 $ref: /schemas/input/touchscreen/touchscreen.yaml#
133
134 unevaluatedProperties: false
135
136 properties:
137 compatible:
138 const: st,stmpe-ts
139
140 st,ave-ctrl:
141 $ref: /schemas/types.yaml#/definitions/uint32
142 enum: [ 0, 1, 2, 3 ]
143 description: |
144 Sample average control
145 0 = 1 sample
146 1 = 2 samples
147 2 = 4 samples
148 3 = 8 samples
149
150 st,touch-det-delay:
151 $ref: /schemas/types.yaml#/definitions/uint32
152 enum: [ 0, 1, 2, 3, 4, 5, 6, 7 ]
153 description: |
154 Touch detection delay
155 0 = 10 us
156 1 = 50 us
157 2 = 100 us
158 3 = 500 us - recommended
159 4 = 1 ms
160 5 = 5 ms
161 6 = 10 ms
162 7 = 50 ms
163
164 st,settling:
165 $ref: /schemas/types.yaml#/definitions/uint32
166 enum: [ 0, 1, 2, 3, 4, 5, 6, 7 ]
167 description: |
168 Panel driver settling time
169 0 = 10 us
170 1 = 100 us
171 2 = 500 us - recommended
172 3 = 1 ms
173 4 = 5 ms
174 5 = 10 ms
175 6 = 50 ms
176 7 = 100 ms
177
178 st,fraction-z:
179 $ref: /schemas/types.yaml#/definitions/uint32
180 enum: [ 0, 1, 2, 3, 4, 5, 6, 7 ]
181 description: Length of the fractional part in z, recommended is 7
182 (fraction-z ([0..7]) = Count of the fractional part)
183
184 st,i-drive:
185 $ref: /schemas/types.yaml#/definitions/uint32
186 enum: [ 0, 1 ]
187 description: |
188 current limit value of the touchscreen drivers
189 0 = 20 mA (typical 35 mA max)
190 1 = 50 mA (typical 80 mA max)
191
192 required:
193 - compatible
194
195additionalProperties: false
196
197required:
198 - compatible
199 - reg
200 - interrupts
201
202examples:
203 - |
204 #include <dt-bindings/gpio/gpio.h>
205 #include <dt-bindings/interrupt-controller/irq.h>
206 #include <dt-bindings/input/input.h>
207 i2c {
208 #address-cells = <1>;
209 #size-cells = <0>;
210
211 port-expander@43 {
212 compatible = "st,stmpe2401";
213 reg = <0x43>;
214 reset-gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
215 interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
216 interrupt-parent = <&gpio>;
217 vcc-supply = <&db8500_vsmps2_reg>;
218 vio-supply = <&db8500_vsmps2_reg>;
219 wakeup-source;
220 st,autosleep-timeout = <1024>;
221
222 gpio {
223 compatible = "st,stmpe-gpio";
224 gpio-controller;
225 #gpio-cells = <2>;
226 interrupt-controller;
227 #interrupt-cells = <2>;
228 st,norequest-mask = <0xf0f002>;
229 };
230
231 keyboard-controller {
232 compatible = "st,stmpe-keypad";
233 debounce-interval = <64>;
234 st,scan-count = <8>;
235 st,no-autorepeat;
236 keypad,num-rows = <8>;
237 keypad,num-columns = <8>;
238 linux,keymap = <
239 MATRIX_KEY(0x00, 0x00, KEY_1)
240 MATRIX_KEY(0x00, 0x01, KEY_2)
241 MATRIX_KEY(0x00, 0x02, KEY_3)
242 MATRIX_KEY(0x00, 0x03, KEY_4)
243 MATRIX_KEY(0x00, 0x04, KEY_5)
244 MATRIX_KEY(0x00, 0x05, KEY_6)
245 MATRIX_KEY(0x00, 0x06, KEY_7)
246 MATRIX_KEY(0x00, 0x07, KEY_8)
247 MATRIX_KEY(0x00, 0x08, KEY_9)
248 MATRIX_KEY(0x00, 0x09, KEY_0)
249 >;
250 };
251
252 pwm {
253 compatible = "st,stmpe-pwm";
254 #pwm-cells = <2>;
255 };
256 };
257
258 port-expander@41 {
259 compatible = "st,stmpe811";
260 reg = <0x41>;
261 interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
262 interrupt-parent = <&gpio>;
263 st,adc-freq = <1>;
264 st,mod-12b = <1>;
265 st,ref-sel = <0>;
266 st,sample-time = <4>;
267
268 adc {
269 compatible = "st,stmpe-adc";
270 st,norequest-mask = <0x0f>;
271 #io-channel-cells = <1>;
272 };
273
274 gpio {
275 compatible = "st,stmpe-gpio";
276 gpio-controller;
277 #gpio-cells = <2>;
278 interrupt-controller;
279 #interrupt-cells = <2>;
280 };
281
282 pwm {
283 compatible = "st,stmpe-pwm";
284 #pwm-cells = <2>;
285 };
286
287 touchscreen {
288 compatible = "st,stmpe-ts";
289 st,ave-ctrl = <3>;
290 st,touch-det-delay = <5>;
291 st,settling = <3>;
292 st,fraction-z = <7>;
293 st,i-drive = <1>;
294 };
295 };
296 };
297...