]> git.ipfire.org Git - thirdparty/u-boot.git/blob - Bindings/mfd/qcom,spmi-pmic.yaml
Squashed 'dts/upstream/' content from commit aaba2d45dc2a
[thirdparty/u-boot.git] / Bindings / mfd / qcom,spmi-pmic.yaml
1 # SPDX-License-Identifier: GPL-2.0-only
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/mfd/qcom,spmi-pmic.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Qualcomm SPMI PMICs multi-function device
8
9 description: |
10 Some Qualcomm PMICs used with the Snapdragon series SoCs are interfaced
11 to the chip via the SPMI (System Power Management Interface) bus.
12 Support for multiple independent functions are implemented by splitting the
13 16-bit SPMI peripheral address space into 256 smaller fixed-size regions, 256 bytes
14 each. A function can consume one or more of these fixed-size register regions.
15
16 The Qualcomm SPMI series includes the PM8941, PM8841, PMA8084, PM8998 and other
17 PMICs. These PMICs use a "QPNP" scheme through SPMI interface.
18 QPNP is effectively a partitioning scheme for dividing the SPMI extended
19 register space up into logical pieces, and set of fixed register
20 locations/definitions within these regions, with some of these regions
21 specifically used for interrupt handling.
22
23 maintainers:
24 - Stephen Boyd <sboyd@kernel.org>
25
26 properties:
27 $nodename:
28 oneOf:
29 - pattern: '^pmic@.*$'
30 - pattern: '^pm(a|s)?[0-9]*@.*$'
31 deprecated: true
32
33 compatible:
34 items:
35 - enum:
36 - qcom,pm2250
37 - qcom,pm6125
38 - qcom,pm6150
39 - qcom,pm6150l
40 - qcom,pm6350
41 - qcom,pm660
42 - qcom,pm660l
43 - qcom,pm7250b
44 - qcom,pm7550ba
45 - qcom,pm7325
46 - qcom,pm8004
47 - qcom,pm8005
48 - qcom,pm8009
49 - qcom,pm8010
50 - qcom,pm8019
51 - qcom,pm8028
52 - qcom,pm8110
53 - qcom,pm8150
54 - qcom,pm8150b
55 - qcom,pm8150c
56 - qcom,pm8150l
57 - qcom,pm8226
58 - qcom,pm8350
59 - qcom,pm8350b
60 - qcom,pm8350c
61 - qcom,pm8450
62 - qcom,pm8550
63 - qcom,pm8550b
64 - qcom,pm8550ve
65 - qcom,pm8550vs
66 - qcom,pm8841
67 - qcom,pm8909
68 - qcom,pm8916
69 - qcom,pm8941
70 - qcom,pm8950
71 - qcom,pm8953
72 - qcom,pm8994
73 - qcom,pm8998
74 - qcom,pma8084
75 - qcom,pmc8180
76 - qcom,pmc8180c
77 - qcom,pmd9635
78 - qcom,pmi632
79 - qcom,pmi8950
80 - qcom,pmi8962
81 - qcom,pmi8994
82 - qcom,pmi8998
83 - qcom,pmk8002
84 - qcom,pmk8350
85 - qcom,pmk8550
86 - qcom,pmm8155au
87 - qcom,pmm8654au
88 - qcom,pmp8074
89 - qcom,pmr735a
90 - qcom,pmr735b
91 - qcom,pmr735d
92 - qcom,pms405
93 - qcom,pmx55
94 - qcom,pmx65
95 - qcom,pmx75
96 - qcom,smb2351
97 - const: qcom,spmi-pmic
98
99 reg:
100 minItems: 1
101 maxItems: 2
102
103 '#address-cells':
104 const: 1
105
106 '#size-cells':
107 const: 0
108
109 labibb:
110 type: object
111 $ref: /schemas/regulator/qcom-labibb-regulator.yaml#
112
113 regulators:
114 type: object
115 $ref: /schemas/regulator/qcom,spmi-regulator.yaml#
116
117 pwm:
118 type: object
119 $ref: /schemas/leds/leds-qcom-lpg.yaml#
120
121 patternProperties:
122 "^adc@[0-9a-f]+$":
123 type: object
124 oneOf:
125 - $ref: /schemas/iio/adc/qcom,spmi-iadc.yaml#
126 - $ref: /schemas/iio/adc/qcom,spmi-rradc.yaml#
127 - $ref: /schemas/iio/adc/qcom,spmi-vadc.yaml#
128
129 "^adc-tm@[0-9a-f]+$":
130 type: object
131 # ref depends on compatible, see allOf below
132
133 "^audio-codec@[0-9a-f]+$":
134 type: object
135 $ref: /schemas/sound/qcom,pm8916-wcd-analog-codec.yaml#
136
137 "^charger@[0-9a-f]+$":
138 type: object
139 oneOf:
140 - $ref: /schemas/power/supply/qcom,pm8941-charger.yaml#
141 - $ref: /schemas/power/supply/qcom,pm8941-coincell.yaml#
142 - $ref: /schemas/power/supply/qcom,pmi8998-charger.yaml#
143
144 "gpio@[0-9a-f]+$":
145 type: object
146 $ref: /schemas/pinctrl/qcom,pmic-gpio.yaml#
147
148 "^led-controller@[0-9a-f]+$":
149 type: object
150 $ref: /schemas/leds/qcom,spmi-flash-led.yaml#
151
152 "^nvram@[0-9a-f]+$":
153 type: object
154 $ref: /schemas/nvmem/qcom,spmi-sdam.yaml#
155
156 "phy@[0-9a-f]+$":
157 type: object
158 $ref: /schemas/phy/qcom,snps-eusb2-repeater.yaml#
159
160 "pon@[0-9a-f]+$":
161 type: object
162 $ref: /schemas/power/reset/qcom,pon.yaml#
163
164 "^rtc@[0-9a-f]+$":
165 type: object
166 $ref: /schemas/rtc/qcom-pm8xxx-rtc.yaml#
167
168 "^temp-alarm@[0-9a-f]+$":
169 type: object
170 $ref: /schemas/thermal/qcom,spmi-temp-alarm.yaml#
171
172 "^typec@[0-9a-f]+$":
173 type: object
174 $ref: /schemas/usb/qcom,pmic-typec.yaml#
175
176 "^usb-detect@[0-9a-f]+$":
177 type: object
178 $ref: /schemas/extcon/qcom,pm8941-misc.yaml#
179
180 "^usb-vbus-regulator@[0-9a-f]+$":
181 type: object
182 $ref: /schemas/regulator/qcom,usb-vbus-regulator.yaml#
183
184 "^vibrator@[0-9a-f]+$":
185 type: object
186 $ref: /schemas/input/qcom,pm8xxx-vib.yaml#
187
188 "^mpps@[0-9a-f]+$":
189 type: object
190 $ref: /schemas/pinctrl/qcom,pmic-mpp.yaml#
191
192 "(.*)?(wled|leds)@[0-9a-f]+$":
193 type: object
194 $ref: /schemas/leds/backlight/qcom-wled.yaml#
195 unevaluatedProperties: false
196
197 required:
198 - compatible
199 - reg
200
201 allOf:
202 - if:
203 properties:
204 compatible:
205 contains:
206 enum:
207 - qcom,pm8998
208 then:
209 patternProperties:
210 "^adc-tm@[0-9a-f]+$":
211 $ref: /schemas/thermal/qcom-spmi-adc-tm-hc.yaml#
212 else:
213 patternProperties:
214 "^adc-tm@[0-9a-f]+$":
215 $ref: /schemas/thermal/qcom-spmi-adc-tm5.yaml#
216
217 additionalProperties: false
218
219 examples:
220 - |
221 #include <dt-bindings/spmi/spmi.h>
222 #include <dt-bindings/interrupt-controller/irq.h>
223 #include <dt-bindings/interrupt-controller/arm-gic.h>
224
225 spmi@c440000 {
226 compatible = "qcom,spmi-pmic-arb";
227 reg = <0x0c440000 0x1100>,
228 <0x0c600000 0x2000000>,
229 <0x0e600000 0x100000>,
230 <0x0e700000 0xa0000>,
231 <0x0c40a000 0x26000>;
232 reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
233 interrupt-names = "periph_irq";
234 interrupts = <GIC_SPI 481 IRQ_TYPE_LEVEL_HIGH>;
235 qcom,ee = <0>;
236 qcom,channel = <0>;
237 #address-cells = <2>;
238 #size-cells = <0>;
239 interrupt-controller;
240 #interrupt-cells = <4>;
241
242 pmic@2 {
243 compatible = "qcom,pmi8998", "qcom,spmi-pmic";
244 reg = <0x2 SPMI_USID>;
245 #address-cells = <1>;
246 #size-cells = <0>;
247
248 gpio@c000 {
249 compatible = "qcom,pmi8998-gpio", "qcom,spmi-gpio";
250 reg = <0xc000>;
251 gpio-controller;
252 gpio-ranges = <&pmi8998_gpio 0 0 14>;
253 #gpio-cells = <2>;
254 interrupt-controller;
255 #interrupt-cells = <2>;
256 };
257 };
258 };
259
260 - |
261 #include <dt-bindings/input/input.h>
262 #include <dt-bindings/interrupt-controller/irq.h>
263 #include <dt-bindings/interrupt-controller/arm-gic.h>
264 #include <dt-bindings/iio/qcom,spmi-vadc.h>
265 #include <dt-bindings/spmi/spmi.h>
266
267 pmic@0 {
268 compatible = "qcom,pm6150", "qcom,spmi-pmic";
269 reg = <0x0 SPMI_USID>;
270 #address-cells = <1>;
271 #size-cells = <0>;
272
273 pon@800 {
274 compatible = "qcom,pm8998-pon";
275 reg = <0x800>;
276 mode-bootloader = <0x2>;
277 mode-recovery = <0x1>;
278
279 pwrkey {
280 compatible = "qcom,pm8941-pwrkey";
281 interrupts = <0x0 0x8 0 IRQ_TYPE_EDGE_BOTH>;
282 debounce = <15625>;
283 bias-pull-up;
284 linux,code = <KEY_POWER>;
285 };
286 };
287
288 temp-alarm@2400 {
289 compatible = "qcom,spmi-temp-alarm";
290 reg = <0x2400>;
291 interrupts = <0x0 0x24 0x0 IRQ_TYPE_EDGE_RISING>;
292 io-channels = <&pm6150_adc ADC5_DIE_TEMP>;
293 io-channel-names = "thermal";
294 #thermal-sensor-cells = <0>;
295 };
296
297 pm6150_adc: adc@3100 {
298 compatible = "qcom,spmi-adc5";
299 reg = <0x3100>;
300 interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>;
301 #address-cells = <1>;
302 #size-cells = <0>;
303 #io-channel-cells = <1>;
304
305 channel@6 {
306 reg = <ADC5_DIE_TEMP>;
307 label = "die_temp";
308 };
309
310 channel@4f {
311 reg = <ADC5_AMUX_THM3_100K_PU>;
312 qcom,ratiometric;
313 qcom,hw-settle-time = <200>;
314 };
315 };
316
317 adc-tm@3500 {
318 compatible = "qcom,spmi-adc-tm5";
319 reg = <0x3500>;
320 interrupts = <0x0 0x35 0x0 IRQ_TYPE_EDGE_RISING>;
321 #thermal-sensor-cells = <1>;
322 #address-cells = <1>;
323 #size-cells = <0>;
324
325 charger-thermistor@0 {
326 reg = <0>;
327 io-channels = <&pm6150_adc ADC5_AMUX_THM3_100K_PU>;
328 qcom,ratiometric;
329 qcom,hw-settle-time-us = <200>;
330 };
331 };
332
333 gpio@c000 {
334 compatible = "qcom,pm6150-gpio", "qcom,spmi-gpio";
335 reg = <0xc000>;
336 gpio-controller;
337 gpio-ranges = <&pm6150_gpio 0 0 10>;
338 #gpio-cells = <2>;
339 interrupt-controller;
340 #interrupt-cells = <2>;
341 };
342 };