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