arm64: dts: qcom: sm8550: add TRNG node
[linux-modified.git] / Documentation / devicetree / 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     };