18c2ecf20Sopenharmony_ciQualcomm SPMI Controller (PMIC Arbiter) 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ciThe SPMI PMIC Arbiter is found on Snapdragon chipsets. It is an SPMI 48c2ecf20Sopenharmony_cicontroller with wrapping arbitration logic to allow for multiple on-chip 58c2ecf20Sopenharmony_cidevices to control a single SPMI master. 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ciThe PMIC Arbiter can also act as an interrupt controller, providing interrupts 88c2ecf20Sopenharmony_cito slave devices. 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ciSee Documentation/devicetree/bindings/spmi/spmi.yaml for the generic SPMI 118c2ecf20Sopenharmony_cicontroller binding requirements for child nodes. 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ciSee Documentation/devicetree/bindings/interrupt-controller/interrupts.txt for 148c2ecf20Sopenharmony_cigeneric interrupt controller binding documentation. 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ciRequired properties: 178c2ecf20Sopenharmony_ci- compatible : should be "qcom,spmi-pmic-arb". 188c2ecf20Sopenharmony_ci- reg-names : must contain: 198c2ecf20Sopenharmony_ci "core" - core registers 208c2ecf20Sopenharmony_ci "intr" - interrupt controller registers 218c2ecf20Sopenharmony_ci "cnfg" - configuration registers 228c2ecf20Sopenharmony_ci Registers used only for V2 PMIC Arbiter: 238c2ecf20Sopenharmony_ci "chnls" - tx-channel per virtual slave registers. 248c2ecf20Sopenharmony_ci "obsrvr" - rx-channel (called observer) per virtual slave registers. 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ci- reg : address + size pairs describing the PMIC arb register sets; order must 278c2ecf20Sopenharmony_ci correspond with the order of entries in reg-names 288c2ecf20Sopenharmony_ci- #address-cells : must be set to 2 298c2ecf20Sopenharmony_ci- #size-cells : must be set to 0 308c2ecf20Sopenharmony_ci- qcom,ee : indicates the active Execution Environment identifier (0-5) 318c2ecf20Sopenharmony_ci- qcom,channel : which of the PMIC Arb provided channels to use for accesses (0-5) 328c2ecf20Sopenharmony_ci- interrupts : interrupt list for the PMIC Arb controller, must contain a 338c2ecf20Sopenharmony_ci single interrupt entry for the peripheral interrupt 348c2ecf20Sopenharmony_ci- interrupt-names : corresponding interrupt names for the interrupts 358c2ecf20Sopenharmony_ci listed in the 'interrupts' property, must contain: 368c2ecf20Sopenharmony_ci "periph_irq" - summary interrupt for PMIC peripherals 378c2ecf20Sopenharmony_ci- interrupt-controller : boolean indicator that the PMIC arbiter is an interrupt controller 388c2ecf20Sopenharmony_ci- #interrupt-cells : must be set to 4. Interrupts are specified as a 4-tuple: 398c2ecf20Sopenharmony_ci cell 1: slave ID for the requested interrupt (0-15) 408c2ecf20Sopenharmony_ci cell 2: peripheral ID for requested interrupt (0-255) 418c2ecf20Sopenharmony_ci cell 3: the requested peripheral interrupt (0-7) 428c2ecf20Sopenharmony_ci cell 4: interrupt flags indicating level-sense information, as defined in 438c2ecf20Sopenharmony_ci dt-bindings/interrupt-controller/irq.h 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ciExample: 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci spmi { 488c2ecf20Sopenharmony_ci compatible = "qcom,spmi-pmic-arb"; 498c2ecf20Sopenharmony_ci reg-names = "core", "intr", "cnfg"; 508c2ecf20Sopenharmony_ci reg = <0xfc4cf000 0x1000>, 518c2ecf20Sopenharmony_ci <0xfc4cb000 0x1000>, 528c2ecf20Sopenharmony_ci <0xfc4ca000 0x1000>; 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_ci interrupt-names = "periph_irq"; 558c2ecf20Sopenharmony_ci interrupts = <0 190 0>; 568c2ecf20Sopenharmony_ci 578c2ecf20Sopenharmony_ci qcom,ee = <0>; 588c2ecf20Sopenharmony_ci qcom,channel = <0>; 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ci #address-cells = <2>; 618c2ecf20Sopenharmony_ci #size-cells = <0>; 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ci interrupt-controller; 648c2ecf20Sopenharmony_ci #interrupt-cells = <4>; 658c2ecf20Sopenharmony_ci }; 66