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