xref: /linux/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt (revision a1c613ae4c322ddd58d5a8539dbfba2a0380a8c0)
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
8a493f339SEric AnholtThe BCM2836 contains the same interrupt controller with the same
9a493f339SEric Anholtinterrupts, but the per-CPU interrupt controller is the root, and an
10a493f339SEric Anholtinterrupt there indicates that the ARMCTRL has an interrupt to handle.
11a493f339SEric Anholt
1289214f00SSimon ArlottRequired properties:
1389214f00SSimon Arlott
14a493f339SEric Anholt- compatible : should be "brcm,bcm2835-armctrl-ic" or
15a493f339SEric 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
28a493f339SEric AnholtAdditional required properties for brcm,bcm2836-armctrl-ic:
29a493f339SEric Anholt- interrupts : Specifies the interrupt on the parent for this interrupt
30a493f339SEric Anholt  controller to handle.
31a493f339SEric Anholt
3289214f00SSimon ArlottThe interrupt sources are as follows:
3389214f00SSimon Arlott
3489214f00SSimon ArlottBank 0:
3589214f00SSimon Arlott0: ARM_TIMER
3689214f00SSimon Arlott1: ARM_MAILBOX
3789214f00SSimon Arlott2: ARM_DOORBELL_0
3889214f00SSimon Arlott3: ARM_DOORBELL_1
3989214f00SSimon Arlott4: VPU0_HALTED
4089214f00SSimon Arlott5: VPU1_HALTED
4189214f00SSimon Arlott6: ILLEGAL_TYPE0
4289214f00SSimon Arlott7: ILLEGAL_TYPE1
4389214f00SSimon Arlott
4489214f00SSimon ArlottBank 1:
4589214f00SSimon Arlott0: TIMER0
4689214f00SSimon Arlott1: TIMER1
4789214f00SSimon Arlott2: TIMER2
4889214f00SSimon Arlott3: TIMER3
4989214f00SSimon Arlott4: CODEC0
5089214f00SSimon Arlott5: CODEC1
5189214f00SSimon Arlott6: CODEC2
5289214f00SSimon Arlott7: VC_JPEG
5389214f00SSimon Arlott8: ISP
5489214f00SSimon Arlott9: VC_USB
5589214f00SSimon Arlott10: VC_3D
5689214f00SSimon Arlott11: TRANSPOSER
5789214f00SSimon Arlott12: MULTICORESYNC0
5889214f00SSimon Arlott13: MULTICORESYNC1
5989214f00SSimon Arlott14: MULTICORESYNC2
6089214f00SSimon Arlott15: MULTICORESYNC3
6189214f00SSimon Arlott16: DMA0
6289214f00SSimon Arlott17: DMA1
6389214f00SSimon Arlott18: VC_DMA2
6489214f00SSimon Arlott19: VC_DMA3
6589214f00SSimon Arlott20: DMA4
6689214f00SSimon Arlott21: DMA5
6789214f00SSimon Arlott22: DMA6
6889214f00SSimon Arlott23: DMA7
6989214f00SSimon Arlott24: DMA8
7089214f00SSimon Arlott25: DMA9
7189214f00SSimon Arlott26: DMA10
72896ad420SMartin Sperl27: DMA11-14 - shared interrupt for DMA 11 to 14
73*47aab533SBjorn Helgaas28: DMAALL - triggers on all dma interrupts (including channel 15)
7489214f00SSimon Arlott29: AUX
7589214f00SSimon Arlott30: ARM
7689214f00SSimon Arlott31: VPUDMA
7789214f00SSimon Arlott
7889214f00SSimon ArlottBank 2:
7989214f00SSimon Arlott0: HOSTPORT
8089214f00SSimon Arlott1: VIDEOSCALER
8189214f00SSimon Arlott2: CCP2TX
8289214f00SSimon Arlott3: SDC
8389214f00SSimon Arlott4: DSI0
8489214f00SSimon Arlott5: AVE
8589214f00SSimon Arlott6: CAM0
8689214f00SSimon Arlott7: CAM1
8789214f00SSimon Arlott8: HDMI0
8889214f00SSimon Arlott9: HDMI1
8989214f00SSimon Arlott10: PIXELVALVE1
9089214f00SSimon Arlott11: I2CSPISLV
9189214f00SSimon Arlott12: DSI1
9289214f00SSimon Arlott13: PWA0
9389214f00SSimon Arlott14: PWA1
9489214f00SSimon Arlott15: CPR
9589214f00SSimon Arlott16: SMI
9689214f00SSimon Arlott17: GPIO0
9789214f00SSimon Arlott18: GPIO1
9889214f00SSimon Arlott19: GPIO2
9989214f00SSimon Arlott20: GPIO3
10089214f00SSimon Arlott21: VC_I2C
10189214f00SSimon Arlott22: VC_SPI
10289214f00SSimon Arlott23: VC_I2SPCM
10389214f00SSimon Arlott24: VC_SDIO
10489214f00SSimon Arlott25: VC_UART
10589214f00SSimon Arlott26: SLIMBUS
10689214f00SSimon Arlott27: VEC
10789214f00SSimon Arlott28: CPG
10889214f00SSimon Arlott29: RNG
10989214f00SSimon Arlott30: VC_ARASANSDIO
11089214f00SSimon Arlott31: AVSPMON
11189214f00SSimon Arlott
11289214f00SSimon ArlottExample:
11389214f00SSimon Arlott
114a493f339SEric Anholt/* BCM2835, first level */
11589214f00SSimon Arlottintc: interrupt-controller {
11689214f00SSimon Arlott	compatible = "brcm,bcm2835-armctrl-ic";
11789214f00SSimon Arlott	reg = <0x7e00b200 0x200>;
11889214f00SSimon Arlott	interrupt-controller;
11989214f00SSimon Arlott	#interrupt-cells = <2>;
12089214f00SSimon Arlott};
121a493f339SEric Anholt
122a493f339SEric Anholt/* BCM2836, second level */
123a493f339SEric Anholtintc: interrupt-controller {
124a493f339SEric Anholt	compatible = "brcm,bcm2836-armctrl-ic";
125a493f339SEric Anholt	reg = <0x7e00b200 0x200>;
126a493f339SEric Anholt	interrupt-controller;
127a493f339SEric Anholt	#interrupt-cells = <2>;
128a493f339SEric Anholt
129a493f339SEric Anholt	interrupt-parent = <&local_intc>;
130a493f339SEric Anholt	interrupts = <8>;
131a493f339SEric Anholt};
132