1c66ec88fSEmmanuel Vadot Qualcomm SPMI PMICs multi-function device bindings 2c66ec88fSEmmanuel Vadot 3c66ec88fSEmmanuel VadotThe Qualcomm SPMI series presently includes PM8941, PM8841 and PMA8084 4c66ec88fSEmmanuel VadotPMICs. These PMICs use a QPNP scheme through SPMI interface. 5c66ec88fSEmmanuel VadotQPNP is effectively a partitioning scheme for dividing the SPMI extended 6c66ec88fSEmmanuel Vadotregister space up into logical pieces, and set of fixed register 7c66ec88fSEmmanuel Vadotlocations/definitions within these regions, with some of these regions 8c66ec88fSEmmanuel Vadotspecifically used for interrupt handling. 9c66ec88fSEmmanuel Vadot 10c66ec88fSEmmanuel VadotThe QPNP PMICs are used with the Qualcomm Snapdragon series SoCs, and are 11c66ec88fSEmmanuel Vadotinterfaced to the chip via the SPMI (System Power Management Interface) bus. 12c66ec88fSEmmanuel VadotSupport for multiple independent functions are implemented by splitting the 13c66ec88fSEmmanuel Vadot16-bit SPMI slave address space into 256 smaller fixed-size regions, 256 bytes 14c66ec88fSEmmanuel Vadoteach. A function can consume one or more of these fixed-size register regions. 15c66ec88fSEmmanuel Vadot 16c66ec88fSEmmanuel VadotRequired properties: 17c66ec88fSEmmanuel Vadot- compatible: Should contain one of: 188cc087a1SEmmanuel Vadot "qcom,pm660", 198cc087a1SEmmanuel Vadot "qcom,pm660l", 205956d97fSEmmanuel Vadot "qcom,pm7325", 218cc087a1SEmmanuel Vadot "qcom,pm8004", 228cc087a1SEmmanuel Vadot "qcom,pm8005", 238cc087a1SEmmanuel Vadot "qcom,pm8019", 248cc087a1SEmmanuel Vadot "qcom,pm8028", 258cc087a1SEmmanuel Vadot "qcom,pm8110", 268cc087a1SEmmanuel Vadot "qcom,pm8150", 278cc087a1SEmmanuel Vadot "qcom,pm8150b", 288cc087a1SEmmanuel Vadot "qcom,pm8150c", 298cc087a1SEmmanuel Vadot "qcom,pm8150l", 308cc087a1SEmmanuel Vadot "qcom,pm8226", 318cc087a1SEmmanuel Vadot "qcom,pm8350c", 328cc087a1SEmmanuel Vadot "qcom,pm8841", 338cc087a1SEmmanuel Vadot "qcom,pm8901", 348cc087a1SEmmanuel Vadot "qcom,pm8909", 358cc087a1SEmmanuel Vadot "qcom,pm8916", 368cc087a1SEmmanuel Vadot "qcom,pm8941", 378cc087a1SEmmanuel Vadot "qcom,pm8950", 38c9ccf3a3SEmmanuel Vadot "qcom,pm8953", 398cc087a1SEmmanuel Vadot "qcom,pm8994", 408cc087a1SEmmanuel Vadot "qcom,pm8998", 418cc087a1SEmmanuel Vadot "qcom,pma8084", 428cc087a1SEmmanuel Vadot "qcom,pmd9635", 438cc087a1SEmmanuel Vadot "qcom,pmi8950", 448cc087a1SEmmanuel Vadot "qcom,pmi8962", 458cc087a1SEmmanuel Vadot "qcom,pmi8994", 468cc087a1SEmmanuel Vadot "qcom,pmi8998", 478cc087a1SEmmanuel Vadot "qcom,pmk8002", 488cc087a1SEmmanuel Vadot "qcom,pmk8350", 495956d97fSEmmanuel Vadot "qcom,pmr735a", 508cc087a1SEmmanuel Vadot "qcom,smb2351", 51c66ec88fSEmmanuel Vadot or generalized "qcom,spmi-pmic". 52c66ec88fSEmmanuel Vadot- reg: Specifies the SPMI USID slave address for this device. 53c66ec88fSEmmanuel Vadot For more information see: 546be33864SEmmanuel Vadot Documentation/devicetree/bindings/spmi/spmi.yaml 55c66ec88fSEmmanuel Vadot 56c66ec88fSEmmanuel VadotRequired properties for peripheral child nodes: 57c66ec88fSEmmanuel Vadot- compatible: Should contain "qcom,xxx", where "xxx" is a peripheral name. 58c66ec88fSEmmanuel Vadot 59c66ec88fSEmmanuel VadotOptional properties for peripheral child nodes: 60c66ec88fSEmmanuel Vadot- interrupts: Interrupts are specified as a 4-tuple. For more information 61c66ec88fSEmmanuel Vadot see: 62*d5b0e70fSEmmanuel Vadot Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.yaml 63c66ec88fSEmmanuel Vadot- interrupt-names: Corresponding interrupt name to the interrupts property 64c66ec88fSEmmanuel Vadot 65c66ec88fSEmmanuel VadotEach child node of SPMI slave id represents a function of the PMIC. In the 66c66ec88fSEmmanuel Vadotexample below the rtc device node represents a peripheral of pm8941 67c66ec88fSEmmanuel VadotSID = 0. The regulator device node represents a peripheral of pm8941 SID = 1. 68c66ec88fSEmmanuel Vadot 69c66ec88fSEmmanuel VadotExample: 70c66ec88fSEmmanuel Vadot 71c66ec88fSEmmanuel Vadot spmi { 72c66ec88fSEmmanuel Vadot compatible = "qcom,spmi-pmic-arb"; 73c66ec88fSEmmanuel Vadot 74c66ec88fSEmmanuel Vadot pm8941@0 { 75c66ec88fSEmmanuel Vadot compatible = "qcom,pm8941", "qcom,spmi-pmic"; 76c66ec88fSEmmanuel Vadot reg = <0x0 SPMI_USID>; 77c66ec88fSEmmanuel Vadot 78c66ec88fSEmmanuel Vadot rtc { 79c66ec88fSEmmanuel Vadot compatible = "qcom,rtc"; 80c66ec88fSEmmanuel Vadot interrupts = <0x0 0x61 0x1 IRQ_TYPE_EDGE_RISING>; 81c66ec88fSEmmanuel Vadot interrupt-names = "alarm"; 82c66ec88fSEmmanuel Vadot }; 83c66ec88fSEmmanuel Vadot }; 84c66ec88fSEmmanuel Vadot 85c66ec88fSEmmanuel Vadot pm8941@1 { 86c66ec88fSEmmanuel Vadot compatible = "qcom,pm8941", "qcom,spmi-pmic"; 87c66ec88fSEmmanuel Vadot reg = <0x1 SPMI_USID>; 88c66ec88fSEmmanuel Vadot 89c66ec88fSEmmanuel Vadot regulator { 90c66ec88fSEmmanuel Vadot compatible = "qcom,regulator"; 91c66ec88fSEmmanuel Vadot regulator-name = "8941_boost"; 92c66ec88fSEmmanuel Vadot }; 93c66ec88fSEmmanuel Vadot }; 94c66ec88fSEmmanuel Vadot }; 95