]>
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 | |
93743d24 | 69 | - qcom,pm8937 |
53633a89 TR |
70 | - qcom,pm8941 |
71 | - qcom,pm8950 | |
72 | - qcom,pm8953 | |
73 | - qcom,pm8994 | |
74 | - qcom,pm8998 | |
75 | - qcom,pma8084 | |
76 | - qcom,pmc8180 | |
77 | - qcom,pmc8180c | |
78 | - qcom,pmd9635 | |
79 | - qcom,pmi632 | |
80 | - qcom,pmi8950 | |
81 | - qcom,pmi8962 | |
82 | - qcom,pmi8994 | |
83 | - qcom,pmi8998 | |
84 | - qcom,pmk8002 | |
85 | - qcom,pmk8350 | |
86 | - qcom,pmk8550 | |
87 | - qcom,pmm8155au | |
88 | - qcom,pmm8654au | |
89 | - qcom,pmp8074 | |
90 | - qcom,pmr735a | |
91 | - qcom,pmr735b | |
92 | - qcom,pmr735d | |
93 | - qcom,pms405 | |
94 | - qcom,pmx55 | |
95 | - qcom,pmx65 | |
96 | - qcom,pmx75 | |
97 | - qcom,smb2351 | |
98 | - const: qcom,spmi-pmic | |
99 | ||
100 | reg: | |
101 | minItems: 1 | |
102 | maxItems: 2 | |
103 | ||
104 | '#address-cells': | |
105 | const: 1 | |
106 | ||
107 | '#size-cells': | |
108 | const: 0 | |
109 | ||
110 | labibb: | |
111 | type: object | |
112 | $ref: /schemas/regulator/qcom-labibb-regulator.yaml# | |
113 | ||
114 | regulators: | |
115 | type: object | |
116 | $ref: /schemas/regulator/qcom,spmi-regulator.yaml# | |
117 | ||
118 | pwm: | |
119 | type: object | |
120 | $ref: /schemas/leds/leds-qcom-lpg.yaml# | |
121 | ||
122 | patternProperties: | |
123 | "^adc@[0-9a-f]+$": | |
124 | type: object | |
125 | oneOf: | |
126 | - $ref: /schemas/iio/adc/qcom,spmi-iadc.yaml# | |
127 | - $ref: /schemas/iio/adc/qcom,spmi-rradc.yaml# | |
128 | - $ref: /schemas/iio/adc/qcom,spmi-vadc.yaml# | |
129 | ||
130 | "^adc-tm@[0-9a-f]+$": | |
131 | type: object | |
132 | # ref depends on compatible, see allOf below | |
133 | ||
134 | "^audio-codec@[0-9a-f]+$": | |
135 | type: object | |
136 | $ref: /schemas/sound/qcom,pm8916-wcd-analog-codec.yaml# | |
137 | ||
93743d24 TR |
138 | "^battery@[0-9a-f]+$": |
139 | type: object | |
140 | oneOf: | |
141 | - $ref: /schemas/power/supply/qcom,pm8916-bms-vm.yaml# | |
142 | ||
53633a89 TR |
143 | "^charger@[0-9a-f]+$": |
144 | type: object | |
145 | oneOf: | |
93743d24 | 146 | - $ref: /schemas/power/supply/qcom,pm8916-lbc.yaml# |
53633a89 TR |
147 | - $ref: /schemas/power/supply/qcom,pm8941-charger.yaml# |
148 | - $ref: /schemas/power/supply/qcom,pm8941-coincell.yaml# | |
149 | - $ref: /schemas/power/supply/qcom,pmi8998-charger.yaml# | |
150 | ||
151 | "gpio@[0-9a-f]+$": | |
152 | type: object | |
153 | $ref: /schemas/pinctrl/qcom,pmic-gpio.yaml# | |
154 | ||
155 | "^led-controller@[0-9a-f]+$": | |
156 | type: object | |
157 | $ref: /schemas/leds/qcom,spmi-flash-led.yaml# | |
158 | ||
159 | "^nvram@[0-9a-f]+$": | |
160 | type: object | |
161 | $ref: /schemas/nvmem/qcom,spmi-sdam.yaml# | |
162 | ||
163 | "phy@[0-9a-f]+$": | |
164 | type: object | |
165 | $ref: /schemas/phy/qcom,snps-eusb2-repeater.yaml# | |
166 | ||
167 | "pon@[0-9a-f]+$": | |
168 | type: object | |
169 | $ref: /schemas/power/reset/qcom,pon.yaml# | |
170 | ||
171 | "^rtc@[0-9a-f]+$": | |
172 | type: object | |
173 | $ref: /schemas/rtc/qcom-pm8xxx-rtc.yaml# | |
174 | ||
175 | "^temp-alarm@[0-9a-f]+$": | |
176 | type: object | |
177 | $ref: /schemas/thermal/qcom,spmi-temp-alarm.yaml# | |
178 | ||
179 | "^typec@[0-9a-f]+$": | |
180 | type: object | |
181 | $ref: /schemas/usb/qcom,pmic-typec.yaml# | |
182 | ||
183 | "^usb-detect@[0-9a-f]+$": | |
184 | type: object | |
185 | $ref: /schemas/extcon/qcom,pm8941-misc.yaml# | |
186 | ||
187 | "^usb-vbus-regulator@[0-9a-f]+$": | |
188 | type: object | |
189 | $ref: /schemas/regulator/qcom,usb-vbus-regulator.yaml# | |
190 | ||
191 | "^vibrator@[0-9a-f]+$": | |
192 | type: object | |
193 | $ref: /schemas/input/qcom,pm8xxx-vib.yaml# | |
194 | ||
195 | "^mpps@[0-9a-f]+$": | |
196 | type: object | |
197 | $ref: /schemas/pinctrl/qcom,pmic-mpp.yaml# | |
198 | ||
199 | "(.*)?(wled|leds)@[0-9a-f]+$": | |
200 | type: object | |
201 | $ref: /schemas/leds/backlight/qcom-wled.yaml# | |
202 | unevaluatedProperties: false | |
203 | ||
204 | required: | |
205 | - compatible | |
206 | - reg | |
207 | ||
208 | allOf: | |
209 | - if: | |
210 | properties: | |
211 | compatible: | |
212 | contains: | |
213 | enum: | |
214 | - qcom,pm8998 | |
215 | then: | |
216 | patternProperties: | |
217 | "^adc-tm@[0-9a-f]+$": | |
218 | $ref: /schemas/thermal/qcom-spmi-adc-tm-hc.yaml# | |
219 | else: | |
220 | patternProperties: | |
221 | "^adc-tm@[0-9a-f]+$": | |
222 | $ref: /schemas/thermal/qcom-spmi-adc-tm5.yaml# | |
223 | ||
224 | additionalProperties: false | |
225 | ||
226 | examples: | |
227 | - | | |
228 | #include <dt-bindings/spmi/spmi.h> | |
229 | #include <dt-bindings/interrupt-controller/irq.h> | |
230 | #include <dt-bindings/interrupt-controller/arm-gic.h> | |
231 | ||
232 | spmi@c440000 { | |
233 | compatible = "qcom,spmi-pmic-arb"; | |
234 | reg = <0x0c440000 0x1100>, | |
235 | <0x0c600000 0x2000000>, | |
236 | <0x0e600000 0x100000>, | |
237 | <0x0e700000 0xa0000>, | |
238 | <0x0c40a000 0x26000>; | |
239 | reg-names = "core", "chnls", "obsrvr", "intr", "cnfg"; | |
240 | interrupt-names = "periph_irq"; | |
241 | interrupts = <GIC_SPI 481 IRQ_TYPE_LEVEL_HIGH>; | |
242 | qcom,ee = <0>; | |
243 | qcom,channel = <0>; | |
244 | #address-cells = <2>; | |
245 | #size-cells = <0>; | |
246 | interrupt-controller; | |
247 | #interrupt-cells = <4>; | |
248 | ||
249 | pmic@2 { | |
250 | compatible = "qcom,pmi8998", "qcom,spmi-pmic"; | |
251 | reg = <0x2 SPMI_USID>; | |
252 | #address-cells = <1>; | |
253 | #size-cells = <0>; | |
254 | ||
255 | gpio@c000 { | |
256 | compatible = "qcom,pmi8998-gpio", "qcom,spmi-gpio"; | |
257 | reg = <0xc000>; | |
258 | gpio-controller; | |
259 | gpio-ranges = <&pmi8998_gpio 0 0 14>; | |
260 | #gpio-cells = <2>; | |
261 | interrupt-controller; | |
262 | #interrupt-cells = <2>; | |
263 | }; | |
264 | }; | |
265 | }; | |
266 | ||
267 | - | | |
268 | #include <dt-bindings/input/input.h> | |
269 | #include <dt-bindings/interrupt-controller/irq.h> | |
270 | #include <dt-bindings/interrupt-controller/arm-gic.h> | |
271 | #include <dt-bindings/iio/qcom,spmi-vadc.h> | |
272 | #include <dt-bindings/spmi/spmi.h> | |
273 | ||
274 | pmic@0 { | |
275 | compatible = "qcom,pm6150", "qcom,spmi-pmic"; | |
276 | reg = <0x0 SPMI_USID>; | |
277 | #address-cells = <1>; | |
278 | #size-cells = <0>; | |
279 | ||
280 | pon@800 { | |
281 | compatible = "qcom,pm8998-pon"; | |
282 | reg = <0x800>; | |
283 | mode-bootloader = <0x2>; | |
284 | mode-recovery = <0x1>; | |
285 | ||
286 | pwrkey { | |
287 | compatible = "qcom,pm8941-pwrkey"; | |
288 | interrupts = <0x0 0x8 0 IRQ_TYPE_EDGE_BOTH>; | |
289 | debounce = <15625>; | |
290 | bias-pull-up; | |
291 | linux,code = <KEY_POWER>; | |
292 | }; | |
293 | }; | |
294 | ||
295 | temp-alarm@2400 { | |
296 | compatible = "qcom,spmi-temp-alarm"; | |
297 | reg = <0x2400>; | |
298 | interrupts = <0x0 0x24 0x0 IRQ_TYPE_EDGE_RISING>; | |
299 | io-channels = <&pm6150_adc ADC5_DIE_TEMP>; | |
300 | io-channel-names = "thermal"; | |
301 | #thermal-sensor-cells = <0>; | |
302 | }; | |
303 | ||
304 | pm6150_adc: adc@3100 { | |
305 | compatible = "qcom,spmi-adc5"; | |
306 | reg = <0x3100>; | |
307 | interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>; | |
308 | #address-cells = <1>; | |
309 | #size-cells = <0>; | |
310 | #io-channel-cells = <1>; | |
311 | ||
312 | channel@6 { | |
313 | reg = <ADC5_DIE_TEMP>; | |
314 | label = "die_temp"; | |
315 | }; | |
316 | ||
317 | channel@4f { | |
318 | reg = <ADC5_AMUX_THM3_100K_PU>; | |
319 | qcom,ratiometric; | |
320 | qcom,hw-settle-time = <200>; | |
321 | }; | |
322 | }; | |
323 | ||
324 | adc-tm@3500 { | |
325 | compatible = "qcom,spmi-adc-tm5"; | |
326 | reg = <0x3500>; | |
327 | interrupts = <0x0 0x35 0x0 IRQ_TYPE_EDGE_RISING>; | |
328 | #thermal-sensor-cells = <1>; | |
329 | #address-cells = <1>; | |
330 | #size-cells = <0>; | |
331 | ||
332 | charger-thermistor@0 { | |
333 | reg = <0>; | |
334 | io-channels = <&pm6150_adc ADC5_AMUX_THM3_100K_PU>; | |
335 | qcom,ratiometric; | |
336 | qcom,hw-settle-time-us = <200>; | |
337 | }; | |
338 | }; | |
339 | ||
340 | gpio@c000 { | |
341 | compatible = "qcom,pm6150-gpio", "qcom,spmi-gpio"; | |
342 | reg = <0xc000>; | |
343 | gpio-controller; | |
344 | gpio-ranges = <&pm6150_gpio 0 0 10>; | |
345 | #gpio-cells = <2>; | |
346 | interrupt-controller; | |
347 | #interrupt-cells = <2>; | |
348 | }; | |
349 | }; |