| Qualcomm SPMI Controller (PMIC Arbiter) |
| |
| The SPMI PMIC Arbiter is found on Snapdragon chipsets. It is an SPMI |
| controller with wrapping arbitration logic to allow for multiple on-chip |
| devices to control a single SPMI master. |
| |
| The PMIC Arbiter can also act as an interrupt controller, providing interrupts |
| to slave devices. |
| |
| See Documentation/devicetree/bindings/spmi/spmi.yaml for the generic SPMI |
| controller binding requirements for child nodes. |
| |
| See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt for |
| generic interrupt controller binding documentation. |
| |
| Required properties: |
| - compatible : should be "qcom,spmi-pmic-arb". |
| - reg-names : must contain: |
| "core" - core registers |
| "intr" - interrupt controller registers |
| "cnfg" - configuration registers |
| Registers used only for V2 PMIC Arbiter: |
| "chnls" - tx-channel per virtual slave registers. |
| "obsrvr" - rx-channel (called observer) per virtual slave registers. |
| |
| - reg : address + size pairs describing the PMIC arb register sets; order must |
| correspond with the order of entries in reg-names |
| - #address-cells : must be set to 2 |
| - #size-cells : must be set to 0 |
| - qcom,ee : indicates the active Execution Environment identifier (0-5) |
| - qcom,channel : which of the PMIC Arb provided channels to use for accesses (0-5) |
| - interrupts : interrupt list for the PMIC Arb controller, must contain a |
| single interrupt entry for the peripheral interrupt |
| - interrupt-names : corresponding interrupt names for the interrupts |
| listed in the 'interrupts' property, must contain: |
| "periph_irq" - summary interrupt for PMIC peripherals |
| - interrupt-controller : boolean indicator that the PMIC arbiter is an interrupt controller |
| - #interrupt-cells : must be set to 4. Interrupts are specified as a 4-tuple: |
| cell 1: slave ID for the requested interrupt (0-15) |
| cell 2: peripheral ID for requested interrupt (0-255) |
| cell 3: the requested peripheral interrupt (0-7) |
| cell 4: interrupt flags indicating level-sense information, as defined in |
| dt-bindings/interrupt-controller/irq.h |
| |
| Example: |
| |
| spmi { |
| compatible = "qcom,spmi-pmic-arb"; |
| reg-names = "core", "intr", "cnfg"; |
| reg = <0xfc4cf000 0x1000>, |
| <0xfc4cb000 0x1000>, |
| <0xfc4ca000 0x1000>; |
| |
| interrupt-names = "periph_irq"; |
| interrupts = <0 190 0>; |
| |
| qcom,ee = <0>; |
| qcom,channel = <0>; |
| |
| #address-cells = <2>; |
| #size-cells = <0>; |
| |
| interrupt-controller; |
| #interrupt-cells = <4>; |
| }; |