]>
Commit | Line | Data |
---|---|---|
53633a89 TR |
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 | }; |