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