brcm,bcm2835-armctrl-ic.txt 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  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. - interrupts : Specifies the interrupt on the parent for this interrupt
  23. controller to handle.
  24. The interrupt sources are as follows:
  25. Bank 0:
  26. 0: ARM_TIMER
  27. 1: ARM_MAILBOX
  28. 2: ARM_DOORBELL_0
  29. 3: ARM_DOORBELL_1
  30. 4: VPU0_HALTED
  31. 5: VPU1_HALTED
  32. 6: ILLEGAL_TYPE0
  33. 7: ILLEGAL_TYPE1
  34. Bank 1:
  35. 0: TIMER0
  36. 1: TIMER1
  37. 2: TIMER2
  38. 3: TIMER3
  39. 4: CODEC0
  40. 5: CODEC1
  41. 6: CODEC2
  42. 7: VC_JPEG
  43. 8: ISP
  44. 9: VC_USB
  45. 10: VC_3D
  46. 11: TRANSPOSER
  47. 12: MULTICORESYNC0
  48. 13: MULTICORESYNC1
  49. 14: MULTICORESYNC2
  50. 15: MULTICORESYNC3
  51. 16: DMA0
  52. 17: DMA1
  53. 18: VC_DMA2
  54. 19: VC_DMA3
  55. 20: DMA4
  56. 21: DMA5
  57. 22: DMA6
  58. 23: DMA7
  59. 24: DMA8
  60. 25: DMA9
  61. 26: DMA10
  62. 27: DMA11-14 - shared interrupt for DMA 11 to 14
  63. 28: DMAALL - triggers on all dma interrupts (including chanel 15)
  64. 29: AUX
  65. 30: ARM
  66. 31: VPUDMA
  67. Bank 2:
  68. 0: HOSTPORT
  69. 1: VIDEOSCALER
  70. 2: CCP2TX
  71. 3: SDC
  72. 4: DSI0
  73. 5: AVE
  74. 6: CAM0
  75. 7: CAM1
  76. 8: HDMI0
  77. 9: HDMI1
  78. 10: PIXELVALVE1
  79. 11: I2CSPISLV
  80. 12: DSI1
  81. 13: PWA0
  82. 14: PWA1
  83. 15: CPR
  84. 16: SMI
  85. 17: GPIO0
  86. 18: GPIO1
  87. 19: GPIO2
  88. 20: GPIO3
  89. 21: VC_I2C
  90. 22: VC_SPI
  91. 23: VC_I2SPCM
  92. 24: VC_SDIO
  93. 25: VC_UART
  94. 26: SLIMBUS
  95. 27: VEC
  96. 28: CPG
  97. 29: RNG
  98. 30: VC_ARASANSDIO
  99. 31: AVSPMON
  100. Example:
  101. /* BCM2835, first level */
  102. intc: interrupt-controller {
  103. compatible = "brcm,bcm2835-armctrl-ic";
  104. reg = <0x7e00b200 0x200>;
  105. interrupt-controller;
  106. #interrupt-cells = <2>;
  107. };
  108. /* BCM2836, second level */
  109. intc: interrupt-controller {
  110. compatible = "brcm,bcm2836-armctrl-ic";
  111. reg = <0x7e00b200 0x200>;
  112. interrupt-controller;
  113. #interrupt-cells = <2>;
  114. interrupt-parent = <&local_intc>;
  115. interrupts = <8>;
  116. };