xref: /freebsd/sys/contrib/device-tree/Bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotBCM2835 Top-Level ("ARMCTRL") Interrupt Controller
2*c66ec88fSEmmanuel Vadot
3*c66ec88fSEmmanuel VadotThe BCM2835 contains a custom top-level interrupt controller, which supports
4*c66ec88fSEmmanuel Vadot72 interrupt sources using a 2-level register scheme. The interrupt
5*c66ec88fSEmmanuel Vadotcontroller, or the HW block containing it, is referred to occasionally
6*c66ec88fSEmmanuel Vadotas "armctrl" in the SoC documentation, hence naming of this binding.
7*c66ec88fSEmmanuel Vadot
8*c66ec88fSEmmanuel VadotThe BCM2836 contains the same interrupt controller with the same
9*c66ec88fSEmmanuel Vadotinterrupts, but the per-CPU interrupt controller is the root, and an
10*c66ec88fSEmmanuel Vadotinterrupt there indicates that the ARMCTRL has an interrupt to handle.
11*c66ec88fSEmmanuel Vadot
12*c66ec88fSEmmanuel VadotRequired properties:
13*c66ec88fSEmmanuel Vadot
14*c66ec88fSEmmanuel Vadot- compatible : should be "brcm,bcm2835-armctrl-ic" or
15*c66ec88fSEmmanuel Vadot                 "brcm,bcm2836-armctrl-ic"
16*c66ec88fSEmmanuel Vadot- reg : Specifies base physical address and size of the registers.
17*c66ec88fSEmmanuel Vadot- interrupt-controller : Identifies the node as an interrupt controller
18*c66ec88fSEmmanuel Vadot- #interrupt-cells : Specifies the number of cells needed to encode an
19*c66ec88fSEmmanuel Vadot  interrupt source. The value shall be 2.
20*c66ec88fSEmmanuel Vadot
21*c66ec88fSEmmanuel Vadot  The 1st cell is the interrupt bank; 0 for interrupts in the "IRQ basic
22*c66ec88fSEmmanuel Vadot  pending" register, or 1/2 respectively for interrupts in the "IRQ pending
23*c66ec88fSEmmanuel Vadot  1/2" register.
24*c66ec88fSEmmanuel Vadot
25*c66ec88fSEmmanuel Vadot  The 2nd cell contains the interrupt number within the bank. Valid values
26*c66ec88fSEmmanuel Vadot  are 0..7 for bank 0, and 0..31 for bank 1.
27*c66ec88fSEmmanuel Vadot
28*c66ec88fSEmmanuel VadotAdditional required properties for brcm,bcm2836-armctrl-ic:
29*c66ec88fSEmmanuel Vadot- interrupts : Specifies the interrupt on the parent for this interrupt
30*c66ec88fSEmmanuel Vadot  controller to handle.
31*c66ec88fSEmmanuel Vadot
32*c66ec88fSEmmanuel VadotThe interrupt sources are as follows:
33*c66ec88fSEmmanuel Vadot
34*c66ec88fSEmmanuel VadotBank 0:
35*c66ec88fSEmmanuel Vadot0: ARM_TIMER
36*c66ec88fSEmmanuel Vadot1: ARM_MAILBOX
37*c66ec88fSEmmanuel Vadot2: ARM_DOORBELL_0
38*c66ec88fSEmmanuel Vadot3: ARM_DOORBELL_1
39*c66ec88fSEmmanuel Vadot4: VPU0_HALTED
40*c66ec88fSEmmanuel Vadot5: VPU1_HALTED
41*c66ec88fSEmmanuel Vadot6: ILLEGAL_TYPE0
42*c66ec88fSEmmanuel Vadot7: ILLEGAL_TYPE1
43*c66ec88fSEmmanuel Vadot
44*c66ec88fSEmmanuel VadotBank 1:
45*c66ec88fSEmmanuel Vadot0: TIMER0
46*c66ec88fSEmmanuel Vadot1: TIMER1
47*c66ec88fSEmmanuel Vadot2: TIMER2
48*c66ec88fSEmmanuel Vadot3: TIMER3
49*c66ec88fSEmmanuel Vadot4: CODEC0
50*c66ec88fSEmmanuel Vadot5: CODEC1
51*c66ec88fSEmmanuel Vadot6: CODEC2
52*c66ec88fSEmmanuel Vadot7: VC_JPEG
53*c66ec88fSEmmanuel Vadot8: ISP
54*c66ec88fSEmmanuel Vadot9: VC_USB
55*c66ec88fSEmmanuel Vadot10: VC_3D
56*c66ec88fSEmmanuel Vadot11: TRANSPOSER
57*c66ec88fSEmmanuel Vadot12: MULTICORESYNC0
58*c66ec88fSEmmanuel Vadot13: MULTICORESYNC1
59*c66ec88fSEmmanuel Vadot14: MULTICORESYNC2
60*c66ec88fSEmmanuel Vadot15: MULTICORESYNC3
61*c66ec88fSEmmanuel Vadot16: DMA0
62*c66ec88fSEmmanuel Vadot17: DMA1
63*c66ec88fSEmmanuel Vadot18: VC_DMA2
64*c66ec88fSEmmanuel Vadot19: VC_DMA3
65*c66ec88fSEmmanuel Vadot20: DMA4
66*c66ec88fSEmmanuel Vadot21: DMA5
67*c66ec88fSEmmanuel Vadot22: DMA6
68*c66ec88fSEmmanuel Vadot23: DMA7
69*c66ec88fSEmmanuel Vadot24: DMA8
70*c66ec88fSEmmanuel Vadot25: DMA9
71*c66ec88fSEmmanuel Vadot26: DMA10
72*c66ec88fSEmmanuel Vadot27: DMA11-14 - shared interrupt for DMA 11 to 14
73*c66ec88fSEmmanuel Vadot28: DMAALL - triggers on all dma interrupts (including chanel 15)
74*c66ec88fSEmmanuel Vadot29: AUX
75*c66ec88fSEmmanuel Vadot30: ARM
76*c66ec88fSEmmanuel Vadot31: VPUDMA
77*c66ec88fSEmmanuel Vadot
78*c66ec88fSEmmanuel VadotBank 2:
79*c66ec88fSEmmanuel Vadot0: HOSTPORT
80*c66ec88fSEmmanuel Vadot1: VIDEOSCALER
81*c66ec88fSEmmanuel Vadot2: CCP2TX
82*c66ec88fSEmmanuel Vadot3: SDC
83*c66ec88fSEmmanuel Vadot4: DSI0
84*c66ec88fSEmmanuel Vadot5: AVE
85*c66ec88fSEmmanuel Vadot6: CAM0
86*c66ec88fSEmmanuel Vadot7: CAM1
87*c66ec88fSEmmanuel Vadot8: HDMI0
88*c66ec88fSEmmanuel Vadot9: HDMI1
89*c66ec88fSEmmanuel Vadot10: PIXELVALVE1
90*c66ec88fSEmmanuel Vadot11: I2CSPISLV
91*c66ec88fSEmmanuel Vadot12: DSI1
92*c66ec88fSEmmanuel Vadot13: PWA0
93*c66ec88fSEmmanuel Vadot14: PWA1
94*c66ec88fSEmmanuel Vadot15: CPR
95*c66ec88fSEmmanuel Vadot16: SMI
96*c66ec88fSEmmanuel Vadot17: GPIO0
97*c66ec88fSEmmanuel Vadot18: GPIO1
98*c66ec88fSEmmanuel Vadot19: GPIO2
99*c66ec88fSEmmanuel Vadot20: GPIO3
100*c66ec88fSEmmanuel Vadot21: VC_I2C
101*c66ec88fSEmmanuel Vadot22: VC_SPI
102*c66ec88fSEmmanuel Vadot23: VC_I2SPCM
103*c66ec88fSEmmanuel Vadot24: VC_SDIO
104*c66ec88fSEmmanuel Vadot25: VC_UART
105*c66ec88fSEmmanuel Vadot26: SLIMBUS
106*c66ec88fSEmmanuel Vadot27: VEC
107*c66ec88fSEmmanuel Vadot28: CPG
108*c66ec88fSEmmanuel Vadot29: RNG
109*c66ec88fSEmmanuel Vadot30: VC_ARASANSDIO
110*c66ec88fSEmmanuel Vadot31: AVSPMON
111*c66ec88fSEmmanuel Vadot
112*c66ec88fSEmmanuel VadotExample:
113*c66ec88fSEmmanuel Vadot
114*c66ec88fSEmmanuel Vadot/* BCM2835, first level */
115*c66ec88fSEmmanuel Vadotintc: interrupt-controller {
116*c66ec88fSEmmanuel Vadot	compatible = "brcm,bcm2835-armctrl-ic";
117*c66ec88fSEmmanuel Vadot	reg = <0x7e00b200 0x200>;
118*c66ec88fSEmmanuel Vadot	interrupt-controller;
119*c66ec88fSEmmanuel Vadot	#interrupt-cells = <2>;
120*c66ec88fSEmmanuel Vadot};
121*c66ec88fSEmmanuel Vadot
122*c66ec88fSEmmanuel Vadot/* BCM2836, second level */
123*c66ec88fSEmmanuel Vadotintc: interrupt-controller {
124*c66ec88fSEmmanuel Vadot	compatible = "brcm,bcm2836-armctrl-ic";
125*c66ec88fSEmmanuel Vadot	reg = <0x7e00b200 0x200>;
126*c66ec88fSEmmanuel Vadot	interrupt-controller;
127*c66ec88fSEmmanuel Vadot	#interrupt-cells = <2>;
128*c66ec88fSEmmanuel Vadot
129*c66ec88fSEmmanuel Vadot	interrupt-parent = <&local_intc>;
130*c66ec88fSEmmanuel Vadot	interrupts = <8>;
131*c66ec88fSEmmanuel Vadot};
132