18c2ecf20Sopenharmony_ciBCM2835 Top-Level ("ARMCTRL") Interrupt Controller 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ciThe BCM2835 contains a custom top-level interrupt controller, which supports 48c2ecf20Sopenharmony_ci72 interrupt sources using a 2-level register scheme. The interrupt 58c2ecf20Sopenharmony_cicontroller, or the HW block containing it, is referred to occasionally 68c2ecf20Sopenharmony_cias "armctrl" in the SoC documentation, hence naming of this binding. 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ciThe BCM2836 contains the same interrupt controller with the same 98c2ecf20Sopenharmony_ciinterrupts, but the per-CPU interrupt controller is the root, and an 108c2ecf20Sopenharmony_ciinterrupt there indicates that the ARMCTRL has an interrupt to handle. 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ciRequired properties: 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci- compatible : should be "brcm,bcm2835-armctrl-ic" or 158c2ecf20Sopenharmony_ci "brcm,bcm2836-armctrl-ic" 168c2ecf20Sopenharmony_ci- reg : Specifies base physical address and size of the registers. 178c2ecf20Sopenharmony_ci- interrupt-controller : Identifies the node as an interrupt controller 188c2ecf20Sopenharmony_ci- #interrupt-cells : Specifies the number of cells needed to encode an 198c2ecf20Sopenharmony_ci interrupt source. The value shall be 2. 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci The 1st cell is the interrupt bank; 0 for interrupts in the "IRQ basic 228c2ecf20Sopenharmony_ci pending" register, or 1/2 respectively for interrupts in the "IRQ pending 238c2ecf20Sopenharmony_ci 1/2" register. 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci The 2nd cell contains the interrupt number within the bank. Valid values 268c2ecf20Sopenharmony_ci are 0..7 for bank 0, and 0..31 for bank 1. 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ciAdditional required properties for brcm,bcm2836-armctrl-ic: 298c2ecf20Sopenharmony_ci- interrupts : Specifies the interrupt on the parent for this interrupt 308c2ecf20Sopenharmony_ci controller to handle. 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ciThe interrupt sources are as follows: 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ciBank 0: 358c2ecf20Sopenharmony_ci0: ARM_TIMER 368c2ecf20Sopenharmony_ci1: ARM_MAILBOX 378c2ecf20Sopenharmony_ci2: ARM_DOORBELL_0 388c2ecf20Sopenharmony_ci3: ARM_DOORBELL_1 398c2ecf20Sopenharmony_ci4: VPU0_HALTED 408c2ecf20Sopenharmony_ci5: VPU1_HALTED 418c2ecf20Sopenharmony_ci6: ILLEGAL_TYPE0 428c2ecf20Sopenharmony_ci7: ILLEGAL_TYPE1 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ciBank 1: 458c2ecf20Sopenharmony_ci0: TIMER0 468c2ecf20Sopenharmony_ci1: TIMER1 478c2ecf20Sopenharmony_ci2: TIMER2 488c2ecf20Sopenharmony_ci3: TIMER3 498c2ecf20Sopenharmony_ci4: CODEC0 508c2ecf20Sopenharmony_ci5: CODEC1 518c2ecf20Sopenharmony_ci6: CODEC2 528c2ecf20Sopenharmony_ci7: VC_JPEG 538c2ecf20Sopenharmony_ci8: ISP 548c2ecf20Sopenharmony_ci9: VC_USB 558c2ecf20Sopenharmony_ci10: VC_3D 568c2ecf20Sopenharmony_ci11: TRANSPOSER 578c2ecf20Sopenharmony_ci12: MULTICORESYNC0 588c2ecf20Sopenharmony_ci13: MULTICORESYNC1 598c2ecf20Sopenharmony_ci14: MULTICORESYNC2 608c2ecf20Sopenharmony_ci15: MULTICORESYNC3 618c2ecf20Sopenharmony_ci16: DMA0 628c2ecf20Sopenharmony_ci17: DMA1 638c2ecf20Sopenharmony_ci18: VC_DMA2 648c2ecf20Sopenharmony_ci19: VC_DMA3 658c2ecf20Sopenharmony_ci20: DMA4 668c2ecf20Sopenharmony_ci21: DMA5 678c2ecf20Sopenharmony_ci22: DMA6 688c2ecf20Sopenharmony_ci23: DMA7 698c2ecf20Sopenharmony_ci24: DMA8 708c2ecf20Sopenharmony_ci25: DMA9 718c2ecf20Sopenharmony_ci26: DMA10 728c2ecf20Sopenharmony_ci27: DMA11-14 - shared interrupt for DMA 11 to 14 738c2ecf20Sopenharmony_ci28: DMAALL - triggers on all dma interrupts (including chanel 15) 748c2ecf20Sopenharmony_ci29: AUX 758c2ecf20Sopenharmony_ci30: ARM 768c2ecf20Sopenharmony_ci31: VPUDMA 778c2ecf20Sopenharmony_ci 788c2ecf20Sopenharmony_ciBank 2: 798c2ecf20Sopenharmony_ci0: HOSTPORT 808c2ecf20Sopenharmony_ci1: VIDEOSCALER 818c2ecf20Sopenharmony_ci2: CCP2TX 828c2ecf20Sopenharmony_ci3: SDC 838c2ecf20Sopenharmony_ci4: DSI0 848c2ecf20Sopenharmony_ci5: AVE 858c2ecf20Sopenharmony_ci6: CAM0 868c2ecf20Sopenharmony_ci7: CAM1 878c2ecf20Sopenharmony_ci8: HDMI0 888c2ecf20Sopenharmony_ci9: HDMI1 898c2ecf20Sopenharmony_ci10: PIXELVALVE1 908c2ecf20Sopenharmony_ci11: I2CSPISLV 918c2ecf20Sopenharmony_ci12: DSI1 928c2ecf20Sopenharmony_ci13: PWA0 938c2ecf20Sopenharmony_ci14: PWA1 948c2ecf20Sopenharmony_ci15: CPR 958c2ecf20Sopenharmony_ci16: SMI 968c2ecf20Sopenharmony_ci17: GPIO0 978c2ecf20Sopenharmony_ci18: GPIO1 988c2ecf20Sopenharmony_ci19: GPIO2 998c2ecf20Sopenharmony_ci20: GPIO3 1008c2ecf20Sopenharmony_ci21: VC_I2C 1018c2ecf20Sopenharmony_ci22: VC_SPI 1028c2ecf20Sopenharmony_ci23: VC_I2SPCM 1038c2ecf20Sopenharmony_ci24: VC_SDIO 1048c2ecf20Sopenharmony_ci25: VC_UART 1058c2ecf20Sopenharmony_ci26: SLIMBUS 1068c2ecf20Sopenharmony_ci27: VEC 1078c2ecf20Sopenharmony_ci28: CPG 1088c2ecf20Sopenharmony_ci29: RNG 1098c2ecf20Sopenharmony_ci30: VC_ARASANSDIO 1108c2ecf20Sopenharmony_ci31: AVSPMON 1118c2ecf20Sopenharmony_ci 1128c2ecf20Sopenharmony_ciExample: 1138c2ecf20Sopenharmony_ci 1148c2ecf20Sopenharmony_ci/* BCM2835, first level */ 1158c2ecf20Sopenharmony_ciintc: interrupt-controller { 1168c2ecf20Sopenharmony_ci compatible = "brcm,bcm2835-armctrl-ic"; 1178c2ecf20Sopenharmony_ci reg = <0x7e00b200 0x200>; 1188c2ecf20Sopenharmony_ci interrupt-controller; 1198c2ecf20Sopenharmony_ci #interrupt-cells = <2>; 1208c2ecf20Sopenharmony_ci}; 1218c2ecf20Sopenharmony_ci 1228c2ecf20Sopenharmony_ci/* BCM2836, second level */ 1238c2ecf20Sopenharmony_ciintc: interrupt-controller { 1248c2ecf20Sopenharmony_ci compatible = "brcm,bcm2836-armctrl-ic"; 1258c2ecf20Sopenharmony_ci reg = <0x7e00b200 0x200>; 1268c2ecf20Sopenharmony_ci interrupt-controller; 1278c2ecf20Sopenharmony_ci #interrupt-cells = <2>; 1288c2ecf20Sopenharmony_ci 1298c2ecf20Sopenharmony_ci interrupt-parent = <&local_intc>; 1308c2ecf20Sopenharmony_ci interrupts = <8>; 1318c2ecf20Sopenharmony_ci}; 132