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