xref: /linux/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt (revision a493f339a88ddd20693460c1dcf8230aa3732b8b)
189214f00SSimon ArlottBCM2835 Top-Level ("ARMCTRL") Interrupt Controller
289214f00SSimon Arlott
389214f00SSimon ArlottThe BCM2835 contains a custom top-level interrupt controller, which supports
489214f00SSimon Arlott72 interrupt sources using a 2-level register scheme. The interrupt
589214f00SSimon Arlottcontroller, or the HW block containing it, is referred to occasionally
689214f00SSimon Arlottas "armctrl" in the SoC documentation, hence naming of this binding.
789214f00SSimon Arlott
8*a493f339SEric AnholtThe BCM2836 contains the same interrupt controller with the same
9*a493f339SEric Anholtinterrupts, but the per-CPU interrupt controller is the root, and an
10*a493f339SEric Anholtinterrupt there indicates that the ARMCTRL has an interrupt to handle.
11*a493f339SEric Anholt
1289214f00SSimon ArlottRequired properties:
1389214f00SSimon Arlott
14*a493f339SEric Anholt- compatible : should be "brcm,bcm2835-armctrl-ic" or
15*a493f339SEric Anholt                 "brcm,bcm2836-armctrl-ic"
1689214f00SSimon Arlott- reg : Specifies base physical address and size of the registers.
1789214f00SSimon Arlott- interrupt-controller : Identifies the node as an interrupt controller
1889214f00SSimon Arlott- #interrupt-cells : Specifies the number of cells needed to encode an
1989214f00SSimon Arlott  interrupt source. The value shall be 2.
2089214f00SSimon Arlott
2189214f00SSimon Arlott  The 1st cell is the interrupt bank; 0 for interrupts in the "IRQ basic
2289214f00SSimon Arlott  pending" register, or 1/2 respectively for interrupts in the "IRQ pending
2389214f00SSimon Arlott  1/2" register.
2489214f00SSimon Arlott
2589214f00SSimon Arlott  The 2nd cell contains the interrupt number within the bank. Valid values
2689214f00SSimon Arlott  are 0..7 for bank 0, and 0..31 for bank 1.
2789214f00SSimon Arlott
28*a493f339SEric AnholtAdditional required properties for brcm,bcm2836-armctrl-ic:
29*a493f339SEric Anholt- interrupt-parent : Specifies the parent interrupt controller when this
30*a493f339SEric Anholt  controller is the second level.
31*a493f339SEric Anholt- interrupts : Specifies the interrupt on the parent for this interrupt
32*a493f339SEric Anholt  controller to handle.
33*a493f339SEric Anholt
3489214f00SSimon ArlottThe interrupt sources are as follows:
3589214f00SSimon Arlott
3689214f00SSimon ArlottBank 0:
3789214f00SSimon Arlott0: ARM_TIMER
3889214f00SSimon Arlott1: ARM_MAILBOX
3989214f00SSimon Arlott2: ARM_DOORBELL_0
4089214f00SSimon Arlott3: ARM_DOORBELL_1
4189214f00SSimon Arlott4: VPU0_HALTED
4289214f00SSimon Arlott5: VPU1_HALTED
4389214f00SSimon Arlott6: ILLEGAL_TYPE0
4489214f00SSimon Arlott7: ILLEGAL_TYPE1
4589214f00SSimon Arlott
4689214f00SSimon ArlottBank 1:
4789214f00SSimon Arlott0: TIMER0
4889214f00SSimon Arlott1: TIMER1
4989214f00SSimon Arlott2: TIMER2
5089214f00SSimon Arlott3: TIMER3
5189214f00SSimon Arlott4: CODEC0
5289214f00SSimon Arlott5: CODEC1
5389214f00SSimon Arlott6: CODEC2
5489214f00SSimon Arlott7: VC_JPEG
5589214f00SSimon Arlott8: ISP
5689214f00SSimon Arlott9: VC_USB
5789214f00SSimon Arlott10: VC_3D
5889214f00SSimon Arlott11: TRANSPOSER
5989214f00SSimon Arlott12: MULTICORESYNC0
6089214f00SSimon Arlott13: MULTICORESYNC1
6189214f00SSimon Arlott14: MULTICORESYNC2
6289214f00SSimon Arlott15: MULTICORESYNC3
6389214f00SSimon Arlott16: DMA0
6489214f00SSimon Arlott17: DMA1
6589214f00SSimon Arlott18: VC_DMA2
6689214f00SSimon Arlott19: VC_DMA3
6789214f00SSimon Arlott20: DMA4
6889214f00SSimon Arlott21: DMA5
6989214f00SSimon Arlott22: DMA6
7089214f00SSimon Arlott23: DMA7
7189214f00SSimon Arlott24: DMA8
7289214f00SSimon Arlott25: DMA9
7389214f00SSimon Arlott26: DMA10
7489214f00SSimon Arlott27: DMA11
7589214f00SSimon Arlott28: DMA12
7689214f00SSimon Arlott29: AUX
7789214f00SSimon Arlott30: ARM
7889214f00SSimon Arlott31: VPUDMA
7989214f00SSimon Arlott
8089214f00SSimon ArlottBank 2:
8189214f00SSimon Arlott0: HOSTPORT
8289214f00SSimon Arlott1: VIDEOSCALER
8389214f00SSimon Arlott2: CCP2TX
8489214f00SSimon Arlott3: SDC
8589214f00SSimon Arlott4: DSI0
8689214f00SSimon Arlott5: AVE
8789214f00SSimon Arlott6: CAM0
8889214f00SSimon Arlott7: CAM1
8989214f00SSimon Arlott8: HDMI0
9089214f00SSimon Arlott9: HDMI1
9189214f00SSimon Arlott10: PIXELVALVE1
9289214f00SSimon Arlott11: I2CSPISLV
9389214f00SSimon Arlott12: DSI1
9489214f00SSimon Arlott13: PWA0
9589214f00SSimon Arlott14: PWA1
9689214f00SSimon Arlott15: CPR
9789214f00SSimon Arlott16: SMI
9889214f00SSimon Arlott17: GPIO0
9989214f00SSimon Arlott18: GPIO1
10089214f00SSimon Arlott19: GPIO2
10189214f00SSimon Arlott20: GPIO3
10289214f00SSimon Arlott21: VC_I2C
10389214f00SSimon Arlott22: VC_SPI
10489214f00SSimon Arlott23: VC_I2SPCM
10589214f00SSimon Arlott24: VC_SDIO
10689214f00SSimon Arlott25: VC_UART
10789214f00SSimon Arlott26: SLIMBUS
10889214f00SSimon Arlott27: VEC
10989214f00SSimon Arlott28: CPG
11089214f00SSimon Arlott29: RNG
11189214f00SSimon Arlott30: VC_ARASANSDIO
11289214f00SSimon Arlott31: AVSPMON
11389214f00SSimon Arlott
11489214f00SSimon ArlottExample:
11589214f00SSimon Arlott
116*a493f339SEric Anholt/* BCM2835, first level */
11789214f00SSimon Arlottintc: interrupt-controller {
11889214f00SSimon Arlott	compatible = "brcm,bcm2835-armctrl-ic";
11989214f00SSimon Arlott	reg = <0x7e00b200 0x200>;
12089214f00SSimon Arlott	interrupt-controller;
12189214f00SSimon Arlott	#interrupt-cells = <2>;
12289214f00SSimon Arlott};
123*a493f339SEric Anholt
124*a493f339SEric Anholt/* BCM2836, second level */
125*a493f339SEric Anholtintc: interrupt-controller {
126*a493f339SEric Anholt	compatible = "brcm,bcm2836-armctrl-ic";
127*a493f339SEric Anholt	reg = <0x7e00b200 0x200>;
128*a493f339SEric Anholt	interrupt-controller;
129*a493f339SEric Anholt	#interrupt-cells = <2>;
130*a493f339SEric Anholt
131*a493f339SEric Anholt	interrupt-parent = <&local_intc>;
132*a493f339SEric Anholt	interrupts = <8>;
133*a493f339SEric Anholt};
134