162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/mfd/qcom,spmi-pmic.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Qualcomm SPMI PMICs multi-function device 862306a36Sopenharmony_ci 962306a36Sopenharmony_cidescription: | 1062306a36Sopenharmony_ci Some Qualcomm PMICs used with the Snapdragon series SoCs are interfaced 1162306a36Sopenharmony_ci to the chip via the SPMI (System Power Management Interface) bus. 1262306a36Sopenharmony_ci Support for multiple independent functions are implemented by splitting the 1362306a36Sopenharmony_ci 16-bit SPMI peripheral address space into 256 smaller fixed-size regions, 256 bytes 1462306a36Sopenharmony_ci each. A function can consume one or more of these fixed-size register regions. 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci The Qualcomm SPMI series includes the PM8941, PM8841, PMA8084, PM8998 and other 1762306a36Sopenharmony_ci PMICs. These PMICs use a "QPNP" scheme through SPMI interface. 1862306a36Sopenharmony_ci QPNP is effectively a partitioning scheme for dividing the SPMI extended 1962306a36Sopenharmony_ci register space up into logical pieces, and set of fixed register 2062306a36Sopenharmony_ci locations/definitions within these regions, with some of these regions 2162306a36Sopenharmony_ci specifically used for interrupt handling. 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_cimaintainers: 2462306a36Sopenharmony_ci - Stephen Boyd <sboyd@kernel.org> 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ciproperties: 2762306a36Sopenharmony_ci $nodename: 2862306a36Sopenharmony_ci oneOf: 2962306a36Sopenharmony_ci - pattern: '^pmic@.*$' 3062306a36Sopenharmony_ci - pattern: '^pm(a|s)?[0-9]*@.*$' 3162306a36Sopenharmony_ci deprecated: true 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci compatible: 3462306a36Sopenharmony_ci items: 3562306a36Sopenharmony_ci - enum: 3662306a36Sopenharmony_ci - qcom,pm2250 3762306a36Sopenharmony_ci - qcom,pm6125 3862306a36Sopenharmony_ci - qcom,pm6150 3962306a36Sopenharmony_ci - qcom,pm6150l 4062306a36Sopenharmony_ci - qcom,pm6350 4162306a36Sopenharmony_ci - qcom,pm660 4262306a36Sopenharmony_ci - qcom,pm660l 4362306a36Sopenharmony_ci - qcom,pm7250b 4462306a36Sopenharmony_ci - qcom,pm7550ba 4562306a36Sopenharmony_ci - qcom,pm7325 4662306a36Sopenharmony_ci - qcom,pm8004 4762306a36Sopenharmony_ci - qcom,pm8005 4862306a36Sopenharmony_ci - qcom,pm8009 4962306a36Sopenharmony_ci - qcom,pm8010 5062306a36Sopenharmony_ci - qcom,pm8019 5162306a36Sopenharmony_ci - qcom,pm8028 5262306a36Sopenharmony_ci - qcom,pm8110 5362306a36Sopenharmony_ci - qcom,pm8150 5462306a36Sopenharmony_ci - qcom,pm8150b 5562306a36Sopenharmony_ci - qcom,pm8150c 5662306a36Sopenharmony_ci - qcom,pm8150l 5762306a36Sopenharmony_ci - qcom,pm8226 5862306a36Sopenharmony_ci - qcom,pm8350 5962306a36Sopenharmony_ci - qcom,pm8350b 6062306a36Sopenharmony_ci - qcom,pm8350c 6162306a36Sopenharmony_ci - qcom,pm8550 6262306a36Sopenharmony_ci - qcom,pm8550b 6362306a36Sopenharmony_ci - qcom,pm8550ve 6462306a36Sopenharmony_ci - qcom,pm8550vs 6562306a36Sopenharmony_ci - qcom,pm8841 6662306a36Sopenharmony_ci - qcom,pm8909 6762306a36Sopenharmony_ci - qcom,pm8916 6862306a36Sopenharmony_ci - qcom,pm8941 6962306a36Sopenharmony_ci - qcom,pm8950 7062306a36Sopenharmony_ci - qcom,pm8953 7162306a36Sopenharmony_ci - qcom,pm8994 7262306a36Sopenharmony_ci - qcom,pm8998 7362306a36Sopenharmony_ci - qcom,pma8084 7462306a36Sopenharmony_ci - qcom,pmc8180 7562306a36Sopenharmony_ci - qcom,pmc8180c 7662306a36Sopenharmony_ci - qcom,pmd9635 7762306a36Sopenharmony_ci - qcom,pmi632 7862306a36Sopenharmony_ci - qcom,pmi8950 7962306a36Sopenharmony_ci - qcom,pmi8962 8062306a36Sopenharmony_ci - qcom,pmi8994 8162306a36Sopenharmony_ci - qcom,pmi8998 8262306a36Sopenharmony_ci - qcom,pmk8002 8362306a36Sopenharmony_ci - qcom,pmk8350 8462306a36Sopenharmony_ci - qcom,pmk8550 8562306a36Sopenharmony_ci - qcom,pmm8155au 8662306a36Sopenharmony_ci - qcom,pmm8654au 8762306a36Sopenharmony_ci - qcom,pmp8074 8862306a36Sopenharmony_ci - qcom,pmr735a 8962306a36Sopenharmony_ci - qcom,pmr735b 9062306a36Sopenharmony_ci - qcom,pmr735d 9162306a36Sopenharmony_ci - qcom,pms405 9262306a36Sopenharmony_ci - qcom,pmx55 9362306a36Sopenharmony_ci - qcom,pmx65 9462306a36Sopenharmony_ci - qcom,pmx75 9562306a36Sopenharmony_ci - qcom,smb2351 9662306a36Sopenharmony_ci - const: qcom,spmi-pmic 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_ci reg: 9962306a36Sopenharmony_ci minItems: 1 10062306a36Sopenharmony_ci maxItems: 2 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ci '#address-cells': 10362306a36Sopenharmony_ci const: 1 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ci '#size-cells': 10662306a36Sopenharmony_ci const: 0 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ci labibb: 10962306a36Sopenharmony_ci type: object 11062306a36Sopenharmony_ci $ref: /schemas/regulator/qcom-labibb-regulator.yaml# 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci regulators: 11362306a36Sopenharmony_ci type: object 11462306a36Sopenharmony_ci $ref: /schemas/regulator/qcom,spmi-regulator.yaml# 11562306a36Sopenharmony_ci 11662306a36Sopenharmony_ci pwm: 11762306a36Sopenharmony_ci type: object 11862306a36Sopenharmony_ci $ref: /schemas/leds/leds-qcom-lpg.yaml# 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_cipatternProperties: 12162306a36Sopenharmony_ci "^adc@[0-9a-f]+$": 12262306a36Sopenharmony_ci type: object 12362306a36Sopenharmony_ci oneOf: 12462306a36Sopenharmony_ci - $ref: /schemas/iio/adc/qcom,spmi-iadc.yaml# 12562306a36Sopenharmony_ci - $ref: /schemas/iio/adc/qcom,spmi-rradc.yaml# 12662306a36Sopenharmony_ci - $ref: /schemas/iio/adc/qcom,spmi-vadc.yaml# 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_ci "^adc-tm@[0-9a-f]+$": 12962306a36Sopenharmony_ci type: object 13062306a36Sopenharmony_ci # ref depends on compatible, see allOf below 13162306a36Sopenharmony_ci 13262306a36Sopenharmony_ci "^audio-codec@[0-9a-f]+$": 13362306a36Sopenharmony_ci type: object 13462306a36Sopenharmony_ci $ref: /schemas/sound/qcom,pm8916-wcd-analog-codec.yaml# 13562306a36Sopenharmony_ci 13662306a36Sopenharmony_ci "^charger@[0-9a-f]+$": 13762306a36Sopenharmony_ci type: object 13862306a36Sopenharmony_ci oneOf: 13962306a36Sopenharmony_ci - $ref: /schemas/power/supply/qcom,pm8941-charger.yaml# 14062306a36Sopenharmony_ci - $ref: /schemas/power/supply/qcom,pm8941-coincell.yaml# 14162306a36Sopenharmony_ci - $ref: /schemas/power/supply/qcom,pmi8998-charger.yaml# 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ci "gpio@[0-9a-f]+$": 14462306a36Sopenharmony_ci type: object 14562306a36Sopenharmony_ci $ref: /schemas/pinctrl/qcom,pmic-gpio.yaml# 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ci "^led-controller@[0-9a-f]+$": 14862306a36Sopenharmony_ci type: object 14962306a36Sopenharmony_ci $ref: /schemas/leds/qcom,spmi-flash-led.yaml# 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_ci "^nvram@[0-9a-f]+$": 15262306a36Sopenharmony_ci type: object 15362306a36Sopenharmony_ci $ref: /schemas/nvmem/qcom,spmi-sdam.yaml# 15462306a36Sopenharmony_ci 15562306a36Sopenharmony_ci "phy@[0-9a-f]+$": 15662306a36Sopenharmony_ci type: object 15762306a36Sopenharmony_ci $ref: /schemas/phy/qcom,snps-eusb2-repeater.yaml# 15862306a36Sopenharmony_ci 15962306a36Sopenharmony_ci "pon@[0-9a-f]+$": 16062306a36Sopenharmony_ci type: object 16162306a36Sopenharmony_ci $ref: /schemas/power/reset/qcom,pon.yaml# 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci "^rtc@[0-9a-f]+$": 16462306a36Sopenharmony_ci type: object 16562306a36Sopenharmony_ci $ref: /schemas/rtc/qcom-pm8xxx-rtc.yaml# 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ci "^temp-alarm@[0-9a-f]+$": 16862306a36Sopenharmony_ci type: object 16962306a36Sopenharmony_ci $ref: /schemas/thermal/qcom,spmi-temp-alarm.yaml# 17062306a36Sopenharmony_ci 17162306a36Sopenharmony_ci "^usb-detect@[0-9a-f]+$": 17262306a36Sopenharmony_ci type: object 17362306a36Sopenharmony_ci $ref: /schemas/extcon/qcom,pm8941-misc.yaml# 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci "^usb-vbus-regulator@[0-9a-f]+$": 17662306a36Sopenharmony_ci type: object 17762306a36Sopenharmony_ci $ref: /schemas/regulator/qcom,usb-vbus-regulator.yaml# 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ci "^vibrator@[0-9a-f]+$": 18062306a36Sopenharmony_ci type: object 18162306a36Sopenharmony_ci $ref: /schemas/input/qcom,pm8xxx-vib.yaml# 18262306a36Sopenharmony_ci 18362306a36Sopenharmony_ci "^mpps@[0-9a-f]+$": 18462306a36Sopenharmony_ci type: object 18562306a36Sopenharmony_ci $ref: /schemas/pinctrl/qcom,pmic-mpp.yaml# 18662306a36Sopenharmony_ci 18762306a36Sopenharmony_ci "(.*)?(wled|leds)@[0-9a-f]+$": 18862306a36Sopenharmony_ci type: object 18962306a36Sopenharmony_ci $ref: /schemas/leds/backlight/qcom-wled.yaml# 19062306a36Sopenharmony_ci unevaluatedProperties: false 19162306a36Sopenharmony_ci 19262306a36Sopenharmony_cirequired: 19362306a36Sopenharmony_ci - compatible 19462306a36Sopenharmony_ci - reg 19562306a36Sopenharmony_ci 19662306a36Sopenharmony_ciallOf: 19762306a36Sopenharmony_ci - if: 19862306a36Sopenharmony_ci properties: 19962306a36Sopenharmony_ci compatible: 20062306a36Sopenharmony_ci contains: 20162306a36Sopenharmony_ci enum: 20262306a36Sopenharmony_ci - qcom,pm8998 20362306a36Sopenharmony_ci then: 20462306a36Sopenharmony_ci patternProperties: 20562306a36Sopenharmony_ci "^adc-tm@[0-9a-f]+$": 20662306a36Sopenharmony_ci $ref: /schemas/thermal/qcom-spmi-adc-tm-hc.yaml# 20762306a36Sopenharmony_ci else: 20862306a36Sopenharmony_ci patternProperties: 20962306a36Sopenharmony_ci "^adc-tm@[0-9a-f]+$": 21062306a36Sopenharmony_ci $ref: /schemas/thermal/qcom-spmi-adc-tm5.yaml# 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_ciadditionalProperties: false 21362306a36Sopenharmony_ci 21462306a36Sopenharmony_ciexamples: 21562306a36Sopenharmony_ci - | 21662306a36Sopenharmony_ci #include <dt-bindings/spmi/spmi.h> 21762306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/irq.h> 21862306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/arm-gic.h> 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_ci spmi@c440000 { 22162306a36Sopenharmony_ci compatible = "qcom,spmi-pmic-arb"; 22262306a36Sopenharmony_ci reg = <0x0c440000 0x1100>, 22362306a36Sopenharmony_ci <0x0c600000 0x2000000>, 22462306a36Sopenharmony_ci <0x0e600000 0x100000>, 22562306a36Sopenharmony_ci <0x0e700000 0xa0000>, 22662306a36Sopenharmony_ci <0x0c40a000 0x26000>; 22762306a36Sopenharmony_ci reg-names = "core", "chnls", "obsrvr", "intr", "cnfg"; 22862306a36Sopenharmony_ci interrupt-names = "periph_irq"; 22962306a36Sopenharmony_ci interrupts = <GIC_SPI 481 IRQ_TYPE_LEVEL_HIGH>; 23062306a36Sopenharmony_ci qcom,ee = <0>; 23162306a36Sopenharmony_ci qcom,channel = <0>; 23262306a36Sopenharmony_ci #address-cells = <2>; 23362306a36Sopenharmony_ci #size-cells = <0>; 23462306a36Sopenharmony_ci interrupt-controller; 23562306a36Sopenharmony_ci #interrupt-cells = <4>; 23662306a36Sopenharmony_ci 23762306a36Sopenharmony_ci pmi8998_lsid0: pmic@2 { 23862306a36Sopenharmony_ci compatible = "qcom,pmi8998", "qcom,spmi-pmic"; 23962306a36Sopenharmony_ci reg = <0x2 SPMI_USID>; 24062306a36Sopenharmony_ci #address-cells = <1>; 24162306a36Sopenharmony_ci #size-cells = <0>; 24262306a36Sopenharmony_ci 24362306a36Sopenharmony_ci pmi8998_gpio: gpio@c000 { 24462306a36Sopenharmony_ci compatible = "qcom,pmi8998-gpio", "qcom,spmi-gpio"; 24562306a36Sopenharmony_ci reg = <0xc000>; 24662306a36Sopenharmony_ci gpio-controller; 24762306a36Sopenharmony_ci gpio-ranges = <&pmi8998_gpio 0 0 14>; 24862306a36Sopenharmony_ci #gpio-cells = <2>; 24962306a36Sopenharmony_ci interrupt-controller; 25062306a36Sopenharmony_ci #interrupt-cells = <2>; 25162306a36Sopenharmony_ci }; 25262306a36Sopenharmony_ci }; 25362306a36Sopenharmony_ci }; 25462306a36Sopenharmony_ci 25562306a36Sopenharmony_ci - | 25662306a36Sopenharmony_ci #include <dt-bindings/input/input.h> 25762306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/irq.h> 25862306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/arm-gic.h> 25962306a36Sopenharmony_ci #include <dt-bindings/iio/qcom,spmi-vadc.h> 26062306a36Sopenharmony_ci #include <dt-bindings/spmi/spmi.h> 26162306a36Sopenharmony_ci 26262306a36Sopenharmony_ci pmic@0 { 26362306a36Sopenharmony_ci compatible = "qcom,pm6150", "qcom,spmi-pmic"; 26462306a36Sopenharmony_ci reg = <0x0 SPMI_USID>; 26562306a36Sopenharmony_ci #address-cells = <1>; 26662306a36Sopenharmony_ci #size-cells = <0>; 26762306a36Sopenharmony_ci 26862306a36Sopenharmony_ci pon@800 { 26962306a36Sopenharmony_ci compatible = "qcom,pm8998-pon"; 27062306a36Sopenharmony_ci reg = <0x800>; 27162306a36Sopenharmony_ci mode-bootloader = <0x2>; 27262306a36Sopenharmony_ci mode-recovery = <0x1>; 27362306a36Sopenharmony_ci 27462306a36Sopenharmony_ci pwrkey { 27562306a36Sopenharmony_ci compatible = "qcom,pm8941-pwrkey"; 27662306a36Sopenharmony_ci interrupts = <0x0 0x8 0 IRQ_TYPE_EDGE_BOTH>; 27762306a36Sopenharmony_ci debounce = <15625>; 27862306a36Sopenharmony_ci bias-pull-up; 27962306a36Sopenharmony_ci linux,code = <KEY_POWER>; 28062306a36Sopenharmony_ci }; 28162306a36Sopenharmony_ci }; 28262306a36Sopenharmony_ci 28362306a36Sopenharmony_ci temp-alarm@2400 { 28462306a36Sopenharmony_ci compatible = "qcom,spmi-temp-alarm"; 28562306a36Sopenharmony_ci reg = <0x2400>; 28662306a36Sopenharmony_ci interrupts = <0x0 0x24 0x0 IRQ_TYPE_EDGE_RISING>; 28762306a36Sopenharmony_ci io-channels = <&pm6150_adc ADC5_DIE_TEMP>; 28862306a36Sopenharmony_ci io-channel-names = "thermal"; 28962306a36Sopenharmony_ci #thermal-sensor-cells = <0>; 29062306a36Sopenharmony_ci }; 29162306a36Sopenharmony_ci 29262306a36Sopenharmony_ci pm6150_adc: adc@3100 { 29362306a36Sopenharmony_ci compatible = "qcom,spmi-adc5"; 29462306a36Sopenharmony_ci reg = <0x3100>; 29562306a36Sopenharmony_ci interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>; 29662306a36Sopenharmony_ci #address-cells = <1>; 29762306a36Sopenharmony_ci #size-cells = <0>; 29862306a36Sopenharmony_ci #io-channel-cells = <1>; 29962306a36Sopenharmony_ci 30062306a36Sopenharmony_ci channel@6 { 30162306a36Sopenharmony_ci reg = <ADC5_DIE_TEMP>; 30262306a36Sopenharmony_ci label = "die_temp"; 30362306a36Sopenharmony_ci }; 30462306a36Sopenharmony_ci 30562306a36Sopenharmony_ci channel@4f { 30662306a36Sopenharmony_ci reg = <ADC5_AMUX_THM3_100K_PU>; 30762306a36Sopenharmony_ci qcom,ratiometric; 30862306a36Sopenharmony_ci qcom,hw-settle-time = <200>; 30962306a36Sopenharmony_ci }; 31062306a36Sopenharmony_ci }; 31162306a36Sopenharmony_ci 31262306a36Sopenharmony_ci adc-tm@3500 { 31362306a36Sopenharmony_ci compatible = "qcom,spmi-adc-tm5"; 31462306a36Sopenharmony_ci reg = <0x3500>; 31562306a36Sopenharmony_ci interrupts = <0x0 0x35 0x0 IRQ_TYPE_EDGE_RISING>; 31662306a36Sopenharmony_ci #thermal-sensor-cells = <1>; 31762306a36Sopenharmony_ci #address-cells = <1>; 31862306a36Sopenharmony_ci #size-cells = <0>; 31962306a36Sopenharmony_ci 32062306a36Sopenharmony_ci charger-thermistor@0 { 32162306a36Sopenharmony_ci reg = <0>; 32262306a36Sopenharmony_ci io-channels = <&pm6150_adc ADC5_AMUX_THM3_100K_PU>; 32362306a36Sopenharmony_ci qcom,ratiometric; 32462306a36Sopenharmony_ci qcom,hw-settle-time-us = <200>; 32562306a36Sopenharmony_ci }; 32662306a36Sopenharmony_ci }; 32762306a36Sopenharmony_ci 32862306a36Sopenharmony_ci pm6150_gpio: gpio@c000 { 32962306a36Sopenharmony_ci compatible = "qcom,pm6150-gpio", "qcom,spmi-gpio"; 33062306a36Sopenharmony_ci reg = <0xc000>; 33162306a36Sopenharmony_ci gpio-controller; 33262306a36Sopenharmony_ci gpio-ranges = <&pm6150_gpio 0 0 10>; 33362306a36Sopenharmony_ci #gpio-cells = <2>; 33462306a36Sopenharmony_ci interrupt-controller; 33562306a36Sopenharmony_ci #interrupt-cells = <2>; 33662306a36Sopenharmony_ci }; 33762306a36Sopenharmony_ci }; 338