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