qcom,spmi-pmic-arb.txt 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. Qualcomm SPMI Controller (PMIC Arbiter)
  2. The SPMI PMIC Arbiter is found on Snapdragon chipsets. It is an SPMI
  3. controller with wrapping arbitration logic to allow for multiple on-chip
  4. devices to control a single SPMI master.
  5. The PMIC Arbiter can also act as an interrupt controller, providing interrupts
  6. to slave devices.
  7. See spmi.txt for the generic SPMI controller binding requirements for child
  8. nodes.
  9. See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt for
  10. generic interrupt controller binding documentation.
  11. Required properties:
  12. - compatible : should be "qcom,spmi-pmic-arb".
  13. - reg-names : must contain:
  14. "core" - core registers
  15. "intr" - interrupt controller registers
  16. "cnfg" - configuration registers
  17. Registers used only for V2 PMIC Arbiter:
  18. "chnls" - tx-channel per virtual slave registers.
  19. "obsrvr" - rx-channel (called observer) per virtual slave registers.
  20. - reg : address + size pairs describing the PMIC arb register sets; order must
  21. correspond with the order of entries in reg-names
  22. - #address-cells : must be set to 2
  23. - #size-cells : must be set to 0
  24. - qcom,ee : indicates the active Execution Environment identifier (0-5)
  25. - qcom,channel : which of the PMIC Arb provided channels to use for accesses (0-5)
  26. - interrupts : interrupt list for the PMIC Arb controller, must contain a
  27. single interrupt entry for the peripheral interrupt
  28. - interrupt-names : corresponding interrupt names for the interrupts
  29. listed in the 'interrupts' property, must contain:
  30. "periph_irq" - summary interrupt for PMIC peripherals
  31. - interrupt-controller : boolean indicator that the PMIC arbiter is an interrupt controller
  32. - #interrupt-cells : must be set to 4. Interrupts are specified as a 4-tuple:
  33. cell 1: slave ID for the requested interrupt (0-15)
  34. cell 2: peripheral ID for requested interrupt (0-255)
  35. cell 3: the requested peripheral interrupt (0-7)
  36. cell 4: interrupt flags indicating level-sense information, as defined in
  37. dt-bindings/interrupt-controller/irq.h
  38. Optional properties:
  39. - qcom,enable-ahb-bus-workaround : Boolean flag which indicates that the AHB bus
  40. workaround sequence should be used for SPMI
  41. write transactions to avoid corruption
  42. Example V1 PMIC-Arbiter:
  43. spmi {
  44. compatible = "qcom,spmi-pmic-arb";
  45. reg-names = "core", "intr", "cnfg";
  46. reg = <0xfc4cf000 0x1000>,
  47. <0xfc4cb000 0x1000>,
  48. <0xfc4ca000 0x1000>;
  49. interrupt-names = "periph_irq";
  50. interrupts = <0 190 0>;
  51. qcom,ee = <0>;
  52. qcom,channel = <0>;
  53. #address-cells = <2>;
  54. #size-cells = <0>;
  55. interrupt-controller;
  56. #interrupt-cells = <4>;
  57. };
  58. Example V2 PMIC-Arbiter:
  59. spmi_bus: qcom,spmi@200f000 {
  60. compatible = "qcom,spmi-pmic-arb";
  61. reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
  62. reg = <0x200f000 0xc00>,
  63. <0x2400000 0x400000>,
  64. <0x2c00000 0x400000>,
  65. <0x3800000 0x200000>,
  66. <0x200a000 0x2100>;
  67. interrupt-names = "periph_irq";
  68. interrupts = <0 190 0>;
  69. qcom,ee = <0>;
  70. #address-cells = <2>;
  71. #size-cells = <0>;
  72. interrupt-controller;
  73. #interrupt-cells = <4>;
  74. };