brcm,bcm2835-armctrl-ic.txt 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. BCM2835 Top-Level ("ARMCTRL") Interrupt Controller
  2. The BCM2835 contains a custom top-level interrupt controller, which supports
  3. 72 interrupt sources using a 2-level register scheme. The interrupt
  4. controller, or the HW block containing it, is referred to occasionally
  5. as "armctrl" in the SoC documentation, hence naming of this binding.
  6. The BCM2836 contains the same interrupt controller with the same
  7. interrupts, but the per-CPU interrupt controller is the root, and an
  8. interrupt there indicates that the ARMCTRL has an interrupt to handle.
  9. Required properties:
  10. - compatible : should be "brcm,bcm2835-armctrl-ic" or
  11. "brcm,bcm2836-armctrl-ic"
  12. - reg : Specifies base physical address and size of the registers.
  13. - interrupt-controller : Identifies the node as an interrupt controller
  14. - #interrupt-cells : Specifies the number of cells needed to encode an
  15. interrupt source. The value shall be 2.
  16. The 1st cell is the interrupt bank; 0 for interrupts in the "IRQ basic
  17. pending" register, or 1/2 respectively for interrupts in the "IRQ pending
  18. 1/2" register.
  19. The 2nd cell contains the interrupt number within the bank. Valid values
  20. are 0..7 for bank 0, and 0..31 for bank 1.
  21. Additional required properties for brcm,bcm2836-armctrl-ic:
  22. - interrupt-parent : Specifies the parent interrupt controller when this
  23. controller is the second level.
  24. - interrupts : Specifies the interrupt on the parent for this interrupt
  25. controller to handle.
  26. The interrupt sources are as follows:
  27. Bank 0:
  28. 0: ARM_TIMER
  29. 1: ARM_MAILBOX
  30. 2: ARM_DOORBELL_0
  31. 3: ARM_DOORBELL_1
  32. 4: VPU0_HALTED
  33. 5: VPU1_HALTED
  34. 6: ILLEGAL_TYPE0
  35. 7: ILLEGAL_TYPE1
  36. Bank 1:
  37. 0: TIMER0
  38. 1: TIMER1
  39. 2: TIMER2
  40. 3: TIMER3
  41. 4: CODEC0
  42. 5: CODEC1
  43. 6: CODEC2
  44. 7: VC_JPEG
  45. 8: ISP
  46. 9: VC_USB
  47. 10: VC_3D
  48. 11: TRANSPOSER
  49. 12: MULTICORESYNC0
  50. 13: MULTICORESYNC1
  51. 14: MULTICORESYNC2
  52. 15: MULTICORESYNC3
  53. 16: DMA0
  54. 17: DMA1
  55. 18: VC_DMA2
  56. 19: VC_DMA3
  57. 20: DMA4
  58. 21: DMA5
  59. 22: DMA6
  60. 23: DMA7
  61. 24: DMA8
  62. 25: DMA9
  63. 26: DMA10
  64. 27: DMA11
  65. 28: DMA12
  66. 29: AUX
  67. 30: ARM
  68. 31: VPUDMA
  69. Bank 2:
  70. 0: HOSTPORT
  71. 1: VIDEOSCALER
  72. 2: CCP2TX
  73. 3: SDC
  74. 4: DSI0
  75. 5: AVE
  76. 6: CAM0
  77. 7: CAM1
  78. 8: HDMI0
  79. 9: HDMI1
  80. 10: PIXELVALVE1
  81. 11: I2CSPISLV
  82. 12: DSI1
  83. 13: PWA0
  84. 14: PWA1
  85. 15: CPR
  86. 16: SMI
  87. 17: GPIO0
  88. 18: GPIO1
  89. 19: GPIO2
  90. 20: GPIO3
  91. 21: VC_I2C
  92. 22: VC_SPI
  93. 23: VC_I2SPCM
  94. 24: VC_SDIO
  95. 25: VC_UART
  96. 26: SLIMBUS
  97. 27: VEC
  98. 28: CPG
  99. 29: RNG
  100. 30: VC_ARASANSDIO
  101. 31: AVSPMON
  102. Example:
  103. /* BCM2835, first level */
  104. intc: interrupt-controller {
  105. compatible = "brcm,bcm2835-armctrl-ic";
  106. reg = <0x7e00b200 0x200>;
  107. interrupt-controller;
  108. #interrupt-cells = <2>;
  109. };
  110. /* BCM2836, second level */
  111. intc: interrupt-controller {
  112. compatible = "brcm,bcm2836-armctrl-ic";
  113. reg = <0x7e00b200 0x200>;
  114. interrupt-controller;
  115. #interrupt-cells = <2>;
  116. interrupt-parent = <&local_intc>;
  117. interrupts = <8>;
  118. };