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