1 # SPDX-License-Identifier: GPL-2.0-only 1 # SPDX-License-Identifier: GPL-2.0-only 2 %YAML 1.2 2 %YAML 1.2 3 --- 3 --- 4 $id: http://devicetree.org/schemas/mfd/qcom,sp 4 $id: http://devicetree.org/schemas/mfd/qcom,spmi-pmic.yaml# 5 $schema: http://devicetree.org/meta-schemas/co 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 6 6 7 title: Qualcomm SPMI PMICs multi-function devi 7 title: Qualcomm SPMI PMICs multi-function device 8 8 9 description: | 9 description: | 10 Some Qualcomm PMICs used with the Snapdragon 10 Some Qualcomm PMICs used with the Snapdragon series SoCs are interfaced 11 to the chip via the SPMI (System Power Manag 11 to the chip via the SPMI (System Power Management Interface) bus. 12 Support for multiple independent functions a 12 Support for multiple independent functions are implemented by splitting the 13 16-bit SPMI peripheral address space into 25 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 14 each. A function can consume one or more of these fixed-size register regions. 15 15 16 The Qualcomm SPMI series includes the PM8941 16 The Qualcomm SPMI series includes the PM8941, PM8841, PMA8084, PM8998 and other 17 PMICs. These PMICs use a "QPNP" scheme thro 17 PMICs. These PMICs use a "QPNP" scheme through SPMI interface. 18 QPNP is effectively a partitioning scheme fo 18 QPNP is effectively a partitioning scheme for dividing the SPMI extended 19 register space up into logical pieces, and s 19 register space up into logical pieces, and set of fixed register 20 locations/definitions within these regions, 20 locations/definitions within these regions, with some of these regions 21 specifically used for interrupt handling. 21 specifically used for interrupt handling. 22 22 23 maintainers: 23 maintainers: 24 - Stephen Boyd <sboyd@kernel.org> 24 - Stephen Boyd <sboyd@kernel.org> 25 25 26 properties: 26 properties: 27 $nodename: 27 $nodename: 28 oneOf: 28 oneOf: 29 - pattern: '^pmic@.*$' 29 - pattern: '^pmic@.*$' 30 - pattern: '^pm(a|s)?[0-9]*@.*$' 30 - pattern: '^pm(a|s)?[0-9]*@.*$' 31 deprecated: true 31 deprecated: true 32 32 33 compatible: 33 compatible: 34 items: 34 items: 35 - enum: 35 - enum: 36 - qcom,pm2250 36 - qcom,pm2250 37 - qcom,pm6125 37 - qcom,pm6125 38 - qcom,pm6150 38 - qcom,pm6150 39 - qcom,pm6150l 39 - qcom,pm6150l 40 - qcom,pm6350 40 - qcom,pm6350 41 - qcom,pm660 41 - qcom,pm660 42 - qcom,pm660l 42 - qcom,pm660l 43 - qcom,pm7250b 43 - qcom,pm7250b 44 - qcom,pm7550ba 44 - qcom,pm7550ba 45 - qcom,pm7325 45 - qcom,pm7325 46 - qcom,pm8004 46 - qcom,pm8004 47 - qcom,pm8005 47 - qcom,pm8005 48 - qcom,pm8009 48 - qcom,pm8009 49 - qcom,pm8010 49 - qcom,pm8010 50 - qcom,pm8019 50 - qcom,pm8019 51 - qcom,pm8028 51 - qcom,pm8028 52 - qcom,pm8110 52 - qcom,pm8110 53 - qcom,pm8150 53 - qcom,pm8150 54 - qcom,pm8150b 54 - qcom,pm8150b 55 - qcom,pm8150c 55 - qcom,pm8150c 56 - qcom,pm8150l 56 - qcom,pm8150l 57 - qcom,pm8226 57 - qcom,pm8226 58 - qcom,pm8350 58 - qcom,pm8350 59 - qcom,pm8350b 59 - qcom,pm8350b 60 - qcom,pm8350c 60 - qcom,pm8350c 61 - qcom,pm8450 << 62 - qcom,pm8550 61 - qcom,pm8550 63 - qcom,pm8550b 62 - qcom,pm8550b 64 - qcom,pm8550ve 63 - qcom,pm8550ve 65 - qcom,pm8550vs 64 - qcom,pm8550vs 66 - qcom,pm8841 65 - qcom,pm8841 67 - qcom,pm8909 66 - qcom,pm8909 68 - qcom,pm8916 67 - qcom,pm8916 69 - qcom,pm8937 << 70 - qcom,pm8941 68 - qcom,pm8941 71 - qcom,pm8950 69 - qcom,pm8950 72 - qcom,pm8953 70 - qcom,pm8953 73 - qcom,pm8994 71 - qcom,pm8994 74 - qcom,pm8998 72 - qcom,pm8998 75 - qcom,pma8084 73 - qcom,pma8084 76 - qcom,pmc8180 74 - qcom,pmc8180 77 - qcom,pmc8180c 75 - qcom,pmc8180c 78 - qcom,pmc8380 << 79 - qcom,pmd9635 76 - qcom,pmd9635 80 - qcom,pmi632 77 - qcom,pmi632 81 - qcom,pmi8950 78 - qcom,pmi8950 82 - qcom,pmi8962 79 - qcom,pmi8962 83 - qcom,pmi8994 80 - qcom,pmi8994 84 - qcom,pmi8998 81 - qcom,pmi8998 85 - qcom,pmk8002 82 - qcom,pmk8002 86 - qcom,pmk8350 83 - qcom,pmk8350 87 - qcom,pmk8550 84 - qcom,pmk8550 88 - qcom,pmm8155au 85 - qcom,pmm8155au 89 - qcom,pmm8654au 86 - qcom,pmm8654au 90 - qcom,pmp8074 87 - qcom,pmp8074 91 - qcom,pmr735a 88 - qcom,pmr735a 92 - qcom,pmr735b 89 - qcom,pmr735b 93 - qcom,pmr735d 90 - qcom,pmr735d 94 - qcom,pms405 91 - qcom,pms405 95 - qcom,pmx55 92 - qcom,pmx55 96 - qcom,pmx65 93 - qcom,pmx65 97 - qcom,pmx75 94 - qcom,pmx75 98 - qcom,smb2351 95 - qcom,smb2351 99 - qcom,smb2360 << 100 - const: qcom,spmi-pmic 96 - const: qcom,spmi-pmic 101 97 102 reg: 98 reg: 103 minItems: 1 99 minItems: 1 104 maxItems: 2 100 maxItems: 2 105 101 106 '#address-cells': 102 '#address-cells': 107 const: 1 103 const: 1 108 104 109 '#size-cells': 105 '#size-cells': 110 const: 0 106 const: 0 111 107 112 labibb: 108 labibb: 113 type: object 109 type: object 114 $ref: /schemas/regulator/qcom-labibb-regul 110 $ref: /schemas/regulator/qcom-labibb-regulator.yaml# 115 111 116 regulators: 112 regulators: 117 type: object 113 type: object 118 $ref: /schemas/regulator/qcom,spmi-regulat 114 $ref: /schemas/regulator/qcom,spmi-regulator.yaml# 119 115 120 pwm: 116 pwm: 121 type: object 117 type: object 122 $ref: /schemas/leds/leds-qcom-lpg.yaml# 118 $ref: /schemas/leds/leds-qcom-lpg.yaml# 123 119 124 patternProperties: 120 patternProperties: 125 "^adc@[0-9a-f]+$": 121 "^adc@[0-9a-f]+$": 126 type: object 122 type: object 127 oneOf: 123 oneOf: 128 - $ref: /schemas/iio/adc/qcom,spmi-iadc. 124 - $ref: /schemas/iio/adc/qcom,spmi-iadc.yaml# 129 - $ref: /schemas/iio/adc/qcom,spmi-rradc 125 - $ref: /schemas/iio/adc/qcom,spmi-rradc.yaml# 130 - $ref: /schemas/iio/adc/qcom,spmi-vadc. 126 - $ref: /schemas/iio/adc/qcom,spmi-vadc.yaml# 131 127 132 "^adc-tm@[0-9a-f]+$": 128 "^adc-tm@[0-9a-f]+$": 133 type: object 129 type: object 134 # ref depends on compatible, see allOf bel 130 # ref depends on compatible, see allOf below 135 131 136 "^audio-codec@[0-9a-f]+$": 132 "^audio-codec@[0-9a-f]+$": 137 type: object 133 type: object 138 $ref: /schemas/sound/qcom,pm8916-wcd-analo 134 $ref: /schemas/sound/qcom,pm8916-wcd-analog-codec.yaml# 139 135 140 "^battery@[0-9a-f]+$": << 141 type: object << 142 oneOf: << 143 - $ref: /schemas/power/supply/qcom,pm891 << 144 << 145 "^charger@[0-9a-f]+$": 136 "^charger@[0-9a-f]+$": 146 type: object 137 type: object 147 oneOf: 138 oneOf: 148 - $ref: /schemas/power/supply/qcom,pm891 << 149 - $ref: /schemas/power/supply/qcom,pm894 139 - $ref: /schemas/power/supply/qcom,pm8941-charger.yaml# 150 - $ref: /schemas/power/supply/qcom,pm894 140 - $ref: /schemas/power/supply/qcom,pm8941-coincell.yaml# 151 - $ref: /schemas/power/supply/qcom,pmi89 141 - $ref: /schemas/power/supply/qcom,pmi8998-charger.yaml# 152 142 153 "gpio@[0-9a-f]+$": 143 "gpio@[0-9a-f]+$": 154 type: object 144 type: object 155 $ref: /schemas/pinctrl/qcom,pmic-gpio.yaml 145 $ref: /schemas/pinctrl/qcom,pmic-gpio.yaml# 156 146 157 "^led-controller@[0-9a-f]+$": 147 "^led-controller@[0-9a-f]+$": 158 type: object 148 type: object 159 $ref: /schemas/leds/qcom,spmi-flash-led.ya 149 $ref: /schemas/leds/qcom,spmi-flash-led.yaml# 160 150 161 "^nvram@[0-9a-f]+$": 151 "^nvram@[0-9a-f]+$": 162 type: object 152 type: object 163 $ref: /schemas/nvmem/qcom,spmi-sdam.yaml# 153 $ref: /schemas/nvmem/qcom,spmi-sdam.yaml# 164 154 165 "^pbs@[0-9a-f]+$": << 166 type: object << 167 $ref: /schemas/soc/qcom/qcom,pbs.yaml# << 168 << 169 "phy@[0-9a-f]+$": 155 "phy@[0-9a-f]+$": 170 type: object 156 type: object 171 $ref: /schemas/phy/qcom,snps-eusb2-repeate 157 $ref: /schemas/phy/qcom,snps-eusb2-repeater.yaml# 172 158 173 "pon@[0-9a-f]+$": 159 "pon@[0-9a-f]+$": 174 type: object 160 type: object 175 $ref: /schemas/power/reset/qcom,pon.yaml# 161 $ref: /schemas/power/reset/qcom,pon.yaml# 176 162 177 "^rtc@[0-9a-f]+$": 163 "^rtc@[0-9a-f]+$": 178 type: object 164 type: object 179 $ref: /schemas/rtc/qcom-pm8xxx-rtc.yaml# 165 $ref: /schemas/rtc/qcom-pm8xxx-rtc.yaml# 180 166 181 "^temp-alarm@[0-9a-f]+$": 167 "^temp-alarm@[0-9a-f]+$": 182 type: object 168 type: object 183 $ref: /schemas/thermal/qcom,spmi-temp-alar 169 $ref: /schemas/thermal/qcom,spmi-temp-alarm.yaml# 184 170 185 "^typec@[0-9a-f]+$": << 186 type: object << 187 $ref: /schemas/usb/qcom,pmic-typec.yaml# << 188 << 189 "^usb-detect@[0-9a-f]+$": 171 "^usb-detect@[0-9a-f]+$": 190 type: object 172 type: object 191 $ref: /schemas/extcon/qcom,pm8941-misc.yam 173 $ref: /schemas/extcon/qcom,pm8941-misc.yaml# 192 174 193 "^usb-vbus-regulator@[0-9a-f]+$": 175 "^usb-vbus-regulator@[0-9a-f]+$": 194 type: object 176 type: object 195 $ref: /schemas/regulator/qcom,usb-vbus-reg 177 $ref: /schemas/regulator/qcom,usb-vbus-regulator.yaml# 196 178 197 "^vibrator@[0-9a-f]+$": 179 "^vibrator@[0-9a-f]+$": 198 type: object 180 type: object 199 $ref: /schemas/input/qcom,pm8xxx-vib.yaml# 181 $ref: /schemas/input/qcom,pm8xxx-vib.yaml# 200 182 201 "^mpps@[0-9a-f]+$": 183 "^mpps@[0-9a-f]+$": 202 type: object 184 type: object 203 $ref: /schemas/pinctrl/qcom,pmic-mpp.yaml# 185 $ref: /schemas/pinctrl/qcom,pmic-mpp.yaml# 204 186 205 "(.*)?(wled|leds)@[0-9a-f]+$": 187 "(.*)?(wled|leds)@[0-9a-f]+$": 206 type: object 188 type: object 207 $ref: /schemas/leds/backlight/qcom-wled.ya 189 $ref: /schemas/leds/backlight/qcom-wled.yaml# 208 unevaluatedProperties: false 190 unevaluatedProperties: false 209 191 210 required: 192 required: 211 - compatible 193 - compatible 212 - reg 194 - reg 213 195 214 allOf: 196 allOf: 215 - if: 197 - if: 216 properties: 198 properties: 217 compatible: 199 compatible: 218 contains: 200 contains: 219 enum: 201 enum: 220 - qcom,pm8998 202 - qcom,pm8998 221 then: 203 then: 222 patternProperties: 204 patternProperties: 223 "^adc-tm@[0-9a-f]+$": 205 "^adc-tm@[0-9a-f]+$": 224 $ref: /schemas/thermal/qcom-spmi-adc 206 $ref: /schemas/thermal/qcom-spmi-adc-tm-hc.yaml# 225 else: 207 else: 226 patternProperties: 208 patternProperties: 227 "^adc-tm@[0-9a-f]+$": 209 "^adc-tm@[0-9a-f]+$": 228 $ref: /schemas/thermal/qcom-spmi-adc 210 $ref: /schemas/thermal/qcom-spmi-adc-tm5.yaml# 229 211 230 additionalProperties: false 212 additionalProperties: false 231 213 232 examples: 214 examples: 233 - | 215 - | 234 #include <dt-bindings/spmi/spmi.h> 216 #include <dt-bindings/spmi/spmi.h> 235 #include <dt-bindings/interrupt-controller 217 #include <dt-bindings/interrupt-controller/irq.h> 236 #include <dt-bindings/interrupt-controller 218 #include <dt-bindings/interrupt-controller/arm-gic.h> 237 219 238 spmi@c440000 { 220 spmi@c440000 { 239 compatible = "qcom,spmi-pmic-arb"; 221 compatible = "qcom,spmi-pmic-arb"; 240 reg = <0x0c440000 0x1100>, 222 reg = <0x0c440000 0x1100>, 241 <0x0c600000 0x2000000>, 223 <0x0c600000 0x2000000>, 242 <0x0e600000 0x100000>, 224 <0x0e600000 0x100000>, 243 <0x0e700000 0xa0000>, 225 <0x0e700000 0xa0000>, 244 <0x0c40a000 0x26000>; 226 <0x0c40a000 0x26000>; 245 reg-names = "core", "chnls", "obsrvr", 227 reg-names = "core", "chnls", "obsrvr", "intr", "cnfg"; 246 interrupt-names = "periph_irq"; 228 interrupt-names = "periph_irq"; 247 interrupts = <GIC_SPI 481 IRQ_TYPE_LEV 229 interrupts = <GIC_SPI 481 IRQ_TYPE_LEVEL_HIGH>; 248 qcom,ee = <0>; 230 qcom,ee = <0>; 249 qcom,channel = <0>; 231 qcom,channel = <0>; 250 #address-cells = <2>; 232 #address-cells = <2>; 251 #size-cells = <0>; 233 #size-cells = <0>; 252 interrupt-controller; 234 interrupt-controller; 253 #interrupt-cells = <4>; 235 #interrupt-cells = <4>; 254 236 255 pmic@2 { !! 237 pmi8998_lsid0: pmic@2 { 256 compatible = "qcom,pmi8998", "qcom 238 compatible = "qcom,pmi8998", "qcom,spmi-pmic"; 257 reg = <0x2 SPMI_USID>; 239 reg = <0x2 SPMI_USID>; 258 #address-cells = <1>; 240 #address-cells = <1>; 259 #size-cells = <0>; 241 #size-cells = <0>; 260 242 261 gpio@c000 { !! 243 pmi8998_gpio: gpio@c000 { 262 compatible = "qcom,pmi8998-gpi 244 compatible = "qcom,pmi8998-gpio", "qcom,spmi-gpio"; 263 reg = <0xc000>; 245 reg = <0xc000>; 264 gpio-controller; 246 gpio-controller; 265 gpio-ranges = <&pmi8998_gpio 0 247 gpio-ranges = <&pmi8998_gpio 0 0 14>; 266 #gpio-cells = <2>; 248 #gpio-cells = <2>; 267 interrupt-controller; 249 interrupt-controller; 268 #interrupt-cells = <2>; 250 #interrupt-cells = <2>; 269 }; 251 }; 270 }; 252 }; 271 }; 253 }; 272 254 273 - | 255 - | 274 #include <dt-bindings/input/input.h> 256 #include <dt-bindings/input/input.h> 275 #include <dt-bindings/interrupt-controller 257 #include <dt-bindings/interrupt-controller/irq.h> 276 #include <dt-bindings/interrupt-controller 258 #include <dt-bindings/interrupt-controller/arm-gic.h> 277 #include <dt-bindings/iio/qcom,spmi-vadc.h 259 #include <dt-bindings/iio/qcom,spmi-vadc.h> 278 #include <dt-bindings/spmi/spmi.h> 260 #include <dt-bindings/spmi/spmi.h> 279 261 280 pmic@0 { 262 pmic@0 { 281 compatible = "qcom,pm6150", "qcom,spmi 263 compatible = "qcom,pm6150", "qcom,spmi-pmic"; 282 reg = <0x0 SPMI_USID>; 264 reg = <0x0 SPMI_USID>; 283 #address-cells = <1>; 265 #address-cells = <1>; 284 #size-cells = <0>; 266 #size-cells = <0>; 285 267 286 pon@800 { 268 pon@800 { 287 compatible = "qcom,pm8998-pon"; 269 compatible = "qcom,pm8998-pon"; 288 reg = <0x800>; 270 reg = <0x800>; 289 mode-bootloader = <0x2>; 271 mode-bootloader = <0x2>; 290 mode-recovery = <0x1>; 272 mode-recovery = <0x1>; 291 273 292 pwrkey { 274 pwrkey { 293 compatible = "qcom,pm8941-pwrk 275 compatible = "qcom,pm8941-pwrkey"; 294 interrupts = <0x0 0x8 0 IRQ_TY 276 interrupts = <0x0 0x8 0 IRQ_TYPE_EDGE_BOTH>; 295 debounce = <15625>; 277 debounce = <15625>; 296 bias-pull-up; 278 bias-pull-up; 297 linux,code = <KEY_POWER>; 279 linux,code = <KEY_POWER>; 298 }; 280 }; 299 }; 281 }; 300 282 301 temp-alarm@2400 { 283 temp-alarm@2400 { 302 compatible = "qcom,spmi-temp-alarm 284 compatible = "qcom,spmi-temp-alarm"; 303 reg = <0x2400>; 285 reg = <0x2400>; 304 interrupts = <0x0 0x24 0x0 IRQ_TYP 286 interrupts = <0x0 0x24 0x0 IRQ_TYPE_EDGE_RISING>; 305 io-channels = <&pm6150_adc ADC5_DI 287 io-channels = <&pm6150_adc ADC5_DIE_TEMP>; 306 io-channel-names = "thermal"; 288 io-channel-names = "thermal"; 307 #thermal-sensor-cells = <0>; 289 #thermal-sensor-cells = <0>; 308 }; 290 }; 309 291 310 pm6150_adc: adc@3100 { 292 pm6150_adc: adc@3100 { 311 compatible = "qcom,spmi-adc5"; 293 compatible = "qcom,spmi-adc5"; 312 reg = <0x3100>; 294 reg = <0x3100>; 313 interrupts = <0x0 0x31 0x0 IRQ_TYP 295 interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>; 314 #address-cells = <1>; 296 #address-cells = <1>; 315 #size-cells = <0>; 297 #size-cells = <0>; 316 #io-channel-cells = <1>; 298 #io-channel-cells = <1>; 317 299 318 channel@6 { 300 channel@6 { 319 reg = <ADC5_DIE_TEMP>; 301 reg = <ADC5_DIE_TEMP>; 320 label = "die_temp"; 302 label = "die_temp"; 321 }; 303 }; 322 304 323 channel@4f { 305 channel@4f { 324 reg = <ADC5_AMUX_THM3_100K_PU> 306 reg = <ADC5_AMUX_THM3_100K_PU>; 325 qcom,ratiometric; 307 qcom,ratiometric; 326 qcom,hw-settle-time = <200>; 308 qcom,hw-settle-time = <200>; 327 }; 309 }; 328 }; 310 }; 329 311 330 adc-tm@3500 { 312 adc-tm@3500 { 331 compatible = "qcom,spmi-adc-tm5"; 313 compatible = "qcom,spmi-adc-tm5"; 332 reg = <0x3500>; 314 reg = <0x3500>; 333 interrupts = <0x0 0x35 0x0 IRQ_TYP 315 interrupts = <0x0 0x35 0x0 IRQ_TYPE_EDGE_RISING>; 334 #thermal-sensor-cells = <1>; 316 #thermal-sensor-cells = <1>; 335 #address-cells = <1>; 317 #address-cells = <1>; 336 #size-cells = <0>; 318 #size-cells = <0>; 337 319 338 charger-thermistor@0 { 320 charger-thermistor@0 { 339 reg = <0>; 321 reg = <0>; 340 io-channels = <&pm6150_adc ADC 322 io-channels = <&pm6150_adc ADC5_AMUX_THM3_100K_PU>; 341 qcom,ratiometric; 323 qcom,ratiometric; 342 qcom,hw-settle-time-us = <200> 324 qcom,hw-settle-time-us = <200>; 343 }; 325 }; 344 }; 326 }; 345 327 346 gpio@c000 { !! 328 pm6150_gpio: gpio@c000 { 347 compatible = "qcom,pm6150-gpio", " 329 compatible = "qcom,pm6150-gpio", "qcom,spmi-gpio"; 348 reg = <0xc000>; 330 reg = <0xc000>; 349 gpio-controller; 331 gpio-controller; 350 gpio-ranges = <&pm6150_gpio 0 0 10 332 gpio-ranges = <&pm6150_gpio 0 0 10>; 351 #gpio-cells = <2>; 333 #gpio-cells = <2>; 352 interrupt-controller; 334 interrupt-controller; 353 #interrupt-cells = <2>; 335 #interrupt-cells = <2>; 354 }; 336 }; 355 }; 337 };
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.