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