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
7title: Qualcomm SPMI PMICs multi-function device
8
9description: |
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
23maintainers:
24  - Stephen Boyd <sboyd@kernel.org>
25
26properties:
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,pm660
37          - qcom,pm660l
38          - qcom,pm6150
39          - qcom,pm6150l
40          - qcom,pm6350
41          - qcom,pm7325
42          - qcom,pm8004
43          - qcom,pm8005
44          - qcom,pm8009
45          - qcom,pm8019
46          - qcom,pm8110
47          - qcom,pm8150
48          - qcom,pm8150b
49          - qcom,pm8150l
50          - qcom,pm8226
51          - qcom,pm8350
52          - qcom,pm8350b
53          - qcom,pm8350c
54          - qcom,pm8841
55          - qcom,pm8909
56          - qcom,pm8916
57          - qcom,pm8941
58          - qcom,pm8950
59          - qcom,pm8994
60          - qcom,pm8998
61          - qcom,pma8084
62          - qcom,pmd9635
63          - qcom,pmi8950
64          - qcom,pmi8962
65          - qcom,pmi8994
66          - qcom,pmi8998
67          - qcom,pmk8350
68          - qcom,pmm8155au
69          - qcom,pmr735a
70          - qcom,pmr735b
71          - qcom,pms405
72          - qcom,pmx55
73          - qcom,pmx65
74          - qcom,smb2351
75      - const: qcom,spmi-pmic
76
77  reg:
78    minItems: 1
79    maxItems: 2
80
81  '#address-cells':
82    const: 1
83
84  '#size-cells':
85    const: 0
86
87  labibb:
88    type: object
89    $ref: /schemas/regulator/qcom-labibb-regulator.yaml#
90
91  regulators:
92    type: object
93    $ref: /schemas/regulator/regulator.yaml#
94
95patternProperties:
96  "^adc@[0-9a-f]+$":
97    type: object
98    $ref: /schemas/iio/adc/qcom,spmi-vadc.yaml#
99
100  "^adc-tm@[0-9a-f]+$":
101    type: object
102    $ref: /schemas/thermal/qcom-spmi-adc-tm5.yaml#
103
104  "^audio-codec@[0-9a-f]+$":
105    type: object
106    additionalProperties: true # FIXME qcom,pm8916-wcd-analog-codec binding not converted yet
107
108  "extcon@[0-9a-f]+$":
109    type: object
110    $ref: /schemas/extcon/qcom,pm8941-misc.yaml#
111
112  "gpio(s)?@[0-9a-f]+$":
113    type: object
114    $ref: /schemas/pinctrl/qcom,pmic-gpio.yaml#
115
116  "pon@[0-9a-f]+$":
117    type: object
118    $ref: /schemas/power/reset/qcom,pon.yaml#
119
120  "pwm@[0-9a-f]+$":
121    type: object
122    $ref: /schemas/leds/leds-qcom-lpg.yaml#
123
124  "^rtc@[0-9a-f]+$":
125    type: object
126    $ref: /schemas/rtc/qcom-pm8xxx-rtc.yaml#
127
128  "^temp-alarm@[0-9a-f]+$":
129    type: object
130    $ref: /schemas/thermal/qcom,spmi-temp-alarm.yaml#
131
132  "^vibrator@[0-9a-f]+$":
133    type: object
134    additionalProperties: true # FIXME qcom,pm8916-vib binding not converted yet
135
136  "^mpps@[0-9a-f]+$":
137    type: object
138    $ref: /schemas/pinctrl/qcom,pmic-mpp.yaml#
139
140  "(.*)?(wled|leds)@[0-9a-f]+$":
141    type: object
142    $ref: /schemas/leds/backlight/qcom-wled.yaml#
143    unevaluatedProperties: false
144
145required:
146  - compatible
147  - reg
148
149additionalProperties: false
150
151examples:
152  - |
153    #include <dt-bindings/spmi/spmi.h>
154    #include <dt-bindings/interrupt-controller/irq.h>
155    #include <dt-bindings/interrupt-controller/arm-gic.h>
156
157    spmi@c440000 {
158        compatible = "qcom,spmi-pmic-arb";
159        reg = <0x0c440000 0x1100>,
160              <0x0c600000 0x2000000>,
161              <0x0e600000 0x100000>,
162              <0x0e700000 0xa0000>,
163              <0x0c40a000 0x26000>;
164        reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
165        interrupt-names = "periph_irq";
166        interrupts = <GIC_SPI 481 IRQ_TYPE_LEVEL_HIGH>;
167        qcom,ee = <0>;
168        qcom,channel = <0>;
169        #address-cells = <2>;
170        #size-cells = <0>;
171        interrupt-controller;
172        #interrupt-cells = <4>;
173
174        pmi8998_lsid0: pmic@2 {
175            compatible = "qcom,pmi8998", "qcom,spmi-pmic";
176            reg = <0x2 SPMI_USID>;
177            #address-cells = <1>;
178            #size-cells = <0>;
179
180            pmi8998_gpio: gpios@c000 {
181                compatible = "qcom,pmi8998-gpio", "qcom,spmi-gpio";
182                reg = <0xc000>;
183                gpio-controller;
184                gpio-ranges = <&pmi8998_gpio 0 0 14>;
185                #gpio-cells = <2>;
186                interrupt-controller;
187                #interrupt-cells = <2>;
188            };
189        };
190    };
191