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