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]*@.*$'
94 - const: qcom,spmi-pmic
108 $ref: /schemas/regulator/qcom-labibb-regulator.yaml#
112 $ref: /schemas/regulator/qcom,spmi-regulator.yaml#
116 $ref: /schemas/leds/leds-qcom-lpg.yaml#
122 - $ref: /schemas/iio/adc/qcom,spmi-iadc.yaml#
123 - $ref: /schemas/iio/adc/qcom,spmi-rradc.yaml#
124 - $ref: /schemas/iio/adc/qcom,spmi-vadc.yaml#
126 "^adc-tm@[0-9a-f]+$":
128 # ref depends on compatible, see allOf below
130 "^audio-codec@[0-9a-f]+$":
132 $ref: /schemas/sound/qcom,pm8916-wcd-analog-codec.yaml#
134 "^charger@[0-9a-f]+$":
137 - $ref: /schemas/power/supply/qcom,pm8941-charger.yaml#
138 - $ref: /schemas/power/supply/qcom,pm8941-coincell.yaml#
139 - $ref: /schemas/power/supply/qcom,pmi8998-charger.yaml#
143 $ref: /schemas/pinctrl/qcom,pmic-gpio.yaml#
145 "^led-controller@[0-9a-f]+$":
147 $ref: /schemas/leds/qcom,spmi-flash-led.yaml#
151 $ref: /schemas/nvmem/qcom,spmi-sdam.yaml#
155 $ref: /schemas/phy/qcom,snps-eusb2-repeater.yaml#
159 $ref: /schemas/power/reset/qcom,pon.yaml#
163 $ref: /schemas/rtc/qcom-pm8xxx-rtc.yaml#
165 "^temp-alarm@[0-9a-f]+$":
167 $ref: /schemas/thermal/qcom,spmi-temp-alarm.yaml#
169 "^usb-detect@[0-9a-f]+$":
171 $ref: /schemas/extcon/qcom,pm8941-misc.yaml#
173 "^usb-vbus-regulator@[0-9a-f]+$":
175 $ref: /schemas/regulator/qcom,usb-vbus-regulator.yaml#
177 "^vibrator@[0-9a-f]+$":
179 $ref: /schemas/input/qcom,pm8xxx-vib.yaml#
183 $ref: /schemas/pinctrl/qcom,pmic-mpp.yaml#
185 "(.*)?(wled|leds)@[0-9a-f]+$":
187 $ref: /schemas/leds/backlight/qcom-wled.yaml#
188 unevaluatedProperties: false
203 "^adc-tm@[0-9a-f]+$":
204 $ref: /schemas/thermal/qcom-spmi-adc-tm-hc.yaml#
207 "^adc-tm@[0-9a-f]+$":
208 $ref: /schemas/thermal/qcom-spmi-adc-tm5.yaml#
210 additionalProperties: false
214 #include <dt-bindings/spmi/spmi.h>
215 #include <dt-bindings/interrupt-controller/irq.h>
216 #include <dt-bindings/interrupt-controller/arm-gic.h>
219 compatible = "qcom,spmi-pmic-arb";
220 reg = <0x0c440000 0x1100>,
221 <0x0c600000 0x2000000>,
222 <0x0e600000 0x100000>,
223 <0x0e700000 0xa0000>,
224 <0x0c40a000 0x26000>;
225 reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
226 interrupt-names = "periph_irq";
227 interrupts = <GIC_SPI 481 IRQ_TYPE_LEVEL_HIGH>;
230 #address-cells = <2>;
232 interrupt-controller;
233 #interrupt-cells = <4>;
235 pmi8998_lsid0: pmic@2 {
236 compatible = "qcom,pmi8998", "qcom,spmi-pmic";
237 reg = <0x2 SPMI_USID>;
238 #address-cells = <1>;
241 pmi8998_gpio: gpio@c000 {
242 compatible = "qcom,pmi8998-gpio", "qcom,spmi-gpio";
245 gpio-ranges = <&pmi8998_gpio 0 0 14>;
247 interrupt-controller;
248 #interrupt-cells = <2>;
254 #include <dt-bindings/input/input.h>
255 #include <dt-bindings/interrupt-controller/irq.h>
256 #include <dt-bindings/interrupt-controller/arm-gic.h>
257 #include <dt-bindings/iio/qcom,spmi-vadc.h>
258 #include <dt-bindings/spmi/spmi.h>
261 compatible = "qcom,pm6150", "qcom,spmi-pmic";
262 reg = <0x0 SPMI_USID>;
263 #address-cells = <1>;
267 compatible = "qcom,pm8998-pon";
269 mode-bootloader = <0x2>;
270 mode-recovery = <0x1>;
273 compatible = "qcom,pm8941-pwrkey";
274 interrupts = <0x0 0x8 0 IRQ_TYPE_EDGE_BOTH>;
277 linux,code = <KEY_POWER>;
282 compatible = "qcom,spmi-temp-alarm";
284 interrupts = <0x0 0x24 0x0 IRQ_TYPE_EDGE_RISING>;
285 io-channels = <&pm6150_adc ADC5_DIE_TEMP>;
286 io-channel-names = "thermal";
287 #thermal-sensor-cells = <0>;
290 pm6150_adc: adc@3100 {
291 compatible = "qcom,spmi-adc5";
293 interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>;
294 #address-cells = <1>;
296 #io-channel-cells = <1>;
299 reg = <ADC5_DIE_TEMP>;
304 reg = <ADC5_AMUX_THM3_100K_PU>;
306 qcom,hw-settle-time = <200>;
311 compatible = "qcom,spmi-adc-tm5";
313 interrupts = <0x0 0x35 0x0 IRQ_TYPE_EDGE_RISING>;
314 #thermal-sensor-cells = <1>;
315 #address-cells = <1>;
318 charger-thermistor@0 {
320 io-channels = <&pm6150_adc ADC5_AMUX_THM3_100K_PU>;
322 qcom,hw-settle-time-us = <200>;
326 pm6150_gpio: gpio@c000 {
327 compatible = "qcom,pm6150-gpio", "qcom,spmi-gpio";
330 gpio-ranges = <&pm6150_gpio 0 0 10>;
332 interrupt-controller;
333 #interrupt-cells = <2>;