1 # SPDX-License-Identifier: GPL-2.0-only
4 $id: http://devicetree.org/schemas/mfd/qcom,spmi-pmic.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Qualcomm SPMI PMICs multi-function device
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.
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.
24 - Stephen Boyd <sboyd@kernel.org>
29 - pattern: '^pmic@.*$'
30 - pattern: '^pm(a|s)?[0-9]*@.*$'
82 - const: qcom,spmi-pmic
96 $ref: /schemas/regulator/qcom-labibb-regulator.yaml#
100 $ref: /schemas/regulator/qcom,spmi-regulator.yaml#
104 $ref: /schemas/leds/leds-qcom-lpg.yaml#
110 - $ref: /schemas/iio/adc/qcom,spmi-iadc.yaml#
111 - $ref: /schemas/iio/adc/qcom,spmi-vadc.yaml#
113 "^adc-tm@[0-9a-f]+$":
115 # ref depends on compatible, see allOf below
117 "^audio-codec@[0-9a-f]+$":
119 additionalProperties: true # FIXME qcom,pm8916-wcd-analog-codec binding not converted yet
121 "^charger@[0-9a-f]+$":
124 - $ref: /schemas/power/supply/qcom,pm8941-charger.yaml#
125 - $ref: /schemas/power/supply/qcom,pm8941-coincell.yaml#
129 $ref: /schemas/pinctrl/qcom,pmic-gpio.yaml#
133 $ref: /schemas/power/reset/qcom,pon.yaml#
137 $ref: /schemas/rtc/qcom-pm8xxx-rtc.yaml#
139 "^temp-alarm@[0-9a-f]+$":
141 $ref: /schemas/thermal/qcom,spmi-temp-alarm.yaml#
143 "^usb-detect@[0-9a-f]+$":
145 $ref: /schemas/extcon/qcom,pm8941-misc.yaml#
147 "^usb-vbus-regulator@[0-9a-f]+$":
149 $ref: /schemas/regulator/qcom,usb-vbus-regulator.yaml#
151 "^vibrator@[0-9a-f]+$":
153 $ref: /schemas/input/qcom,pm8xxx-vib.yaml#
157 $ref: /schemas/pinctrl/qcom,pmic-mpp.yaml#
159 "(.*)?(wled|leds)@[0-9a-f]+$":
161 $ref: /schemas/leds/backlight/qcom-wled.yaml#
162 unevaluatedProperties: false
177 "^adc-tm@[0-9a-f]+$":
178 $ref: /schemas/thermal/qcom-spmi-adc-tm-hc.yaml#
181 "^adc-tm@[0-9a-f]+$":
182 $ref: /schemas/thermal/qcom-spmi-adc-tm5.yaml#
184 additionalProperties: false
188 #include <dt-bindings/spmi/spmi.h>
189 #include <dt-bindings/interrupt-controller/irq.h>
190 #include <dt-bindings/interrupt-controller/arm-gic.h>
193 compatible = "qcom,spmi-pmic-arb";
194 reg = <0x0c440000 0x1100>,
195 <0x0c600000 0x2000000>,
196 <0x0e600000 0x100000>,
197 <0x0e700000 0xa0000>,
198 <0x0c40a000 0x26000>;
199 reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
200 interrupt-names = "periph_irq";
201 interrupts = <GIC_SPI 481 IRQ_TYPE_LEVEL_HIGH>;
204 #address-cells = <2>;
206 interrupt-controller;
207 #interrupt-cells = <4>;
209 pmi8998_lsid0: pmic@2 {
210 compatible = "qcom,pmi8998", "qcom,spmi-pmic";
211 reg = <0x2 SPMI_USID>;
212 #address-cells = <1>;
215 pmi8998_gpio: gpio@c000 {
216 compatible = "qcom,pmi8998-gpio", "qcom,spmi-gpio";
219 gpio-ranges = <&pmi8998_gpio 0 0 14>;
221 interrupt-controller;
222 #interrupt-cells = <2>;
228 #include <dt-bindings/input/input.h>
229 #include <dt-bindings/interrupt-controller/irq.h>
230 #include <dt-bindings/interrupt-controller/arm-gic.h>
231 #include <dt-bindings/iio/qcom,spmi-vadc.h>
232 #include <dt-bindings/spmi/spmi.h>
235 compatible = "qcom,pm6150", "qcom,spmi-pmic";
236 reg = <0x0 SPMI_USID>;
237 #address-cells = <1>;
241 compatible = "qcom,pm8998-pon";
243 mode-bootloader = <0x2>;
244 mode-recovery = <0x1>;
247 compatible = "qcom,pm8941-pwrkey";
248 interrupts = <0x0 0x8 0 IRQ_TYPE_EDGE_BOTH>;
251 linux,code = <KEY_POWER>;
256 compatible = "qcom,spmi-temp-alarm";
258 interrupts = <0x0 0x24 0x0 IRQ_TYPE_EDGE_RISING>;
259 io-channels = <&pm6150_adc ADC5_DIE_TEMP>;
260 io-channel-names = "thermal";
261 #thermal-sensor-cells = <0>;
264 pm6150_adc: adc@3100 {
265 compatible = "qcom,spmi-adc5";
267 interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>;
268 #address-cells = <1>;
270 #io-channel-cells = <1>;
273 reg = <ADC5_DIE_TEMP>;
278 reg = <ADC5_AMUX_THM3_100K_PU>;
280 qcom,hw-settle-time = <200>;
285 compatible = "qcom,spmi-adc-tm5";
287 interrupts = <0x0 0x35 0x0 IRQ_TYPE_EDGE_RISING>;
288 #thermal-sensor-cells = <1>;
289 #address-cells = <1>;
292 charger-thermistor@0 {
294 io-channels = <&pm6150_adc ADC5_AMUX_THM3_100K_PU>;
296 qcom,hw-settle-time-us = <200>;
300 pm6150_gpio: gpio@c000 {
301 compatible = "qcom,pm6150-gpio", "qcom,spmi-gpio";
304 gpio-ranges = <&pm6150_gpio 0 0 10>;
306 interrupt-controller;
307 #interrupt-cells = <2>;