1*ae5de77eSEmmanuel Vadot%YAML 1.2 2*ae5de77eSEmmanuel Vadot--- 3*ae5de77eSEmmanuel Vadot$id: http://devicetree.org/schemas/interrupt-controller/brcm,bcm2835-armctrl-ic.yaml# 4*ae5de77eSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 5*ae5de77eSEmmanuel Vadot 6*ae5de77eSEmmanuel Vadottitle: BCM2835 ARMCTRL Interrupt Controller 7*ae5de77eSEmmanuel Vadot 8*ae5de77eSEmmanuel Vadotmaintainers: 9*ae5de77eSEmmanuel Vadot - Florian Fainelli <florian.fainelli@broadcom.com> 10*ae5de77eSEmmanuel Vadot - Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com> 11*ae5de77eSEmmanuel Vadot 12*ae5de77eSEmmanuel Vadotdescription: > 13*ae5de77eSEmmanuel Vadot The BCM2835 contains a custom top-level interrupt controller, which supports 14*ae5de77eSEmmanuel Vadot 72 interrupt sources using a 2-level register scheme. The interrupt 15*ae5de77eSEmmanuel Vadot controller, or the HW block containing it, is referred to occasionally as 16*ae5de77eSEmmanuel Vadot "armctrl" in the SoC documentation, hence naming of this binding. 17*ae5de77eSEmmanuel Vadot 18*ae5de77eSEmmanuel Vadot The BCM2836 contains the same interrupt controller with the same interrupts, 19*ae5de77eSEmmanuel Vadot but the per-CPU interrupt controller is the root, and an interrupt there 20*ae5de77eSEmmanuel Vadot indicates that the ARMCTRL has an interrupt to handle. 21*ae5de77eSEmmanuel Vadot 22*ae5de77eSEmmanuel Vadot The interrupt sources are as follows: 23*ae5de77eSEmmanuel Vadot 24*ae5de77eSEmmanuel Vadot Bank 0: 25*ae5de77eSEmmanuel Vadot 0: ARM_TIMER 26*ae5de77eSEmmanuel Vadot 1: ARM_MAILBOX 27*ae5de77eSEmmanuel Vadot 2: ARM_DOORBELL_0 28*ae5de77eSEmmanuel Vadot 3: ARM_DOORBELL_1 29*ae5de77eSEmmanuel Vadot 4: VPU0_HALTED 30*ae5de77eSEmmanuel Vadot 5: VPU1_HALTED 31*ae5de77eSEmmanuel Vadot 6: ILLEGAL_TYPE0 32*ae5de77eSEmmanuel Vadot 7: ILLEGAL_TYPE1 33*ae5de77eSEmmanuel Vadot 34*ae5de77eSEmmanuel Vadot Bank 1: 35*ae5de77eSEmmanuel Vadot 0: TIMER0 36*ae5de77eSEmmanuel Vadot 1: TIMER1 37*ae5de77eSEmmanuel Vadot 2: TIMER2 38*ae5de77eSEmmanuel Vadot 3: TIMER3 39*ae5de77eSEmmanuel Vadot 4: CODEC0 40*ae5de77eSEmmanuel Vadot 5: CODEC1 41*ae5de77eSEmmanuel Vadot 6: CODEC2 42*ae5de77eSEmmanuel Vadot 7: VC_JPEG 43*ae5de77eSEmmanuel Vadot 8: ISP 44*ae5de77eSEmmanuel Vadot 9: VC_USB 45*ae5de77eSEmmanuel Vadot 10: VC_3D 46*ae5de77eSEmmanuel Vadot 11: TRANSPOSER 47*ae5de77eSEmmanuel Vadot 12: MULTICORESYNC0 48*ae5de77eSEmmanuel Vadot 13: MULTICORESYNC1 49*ae5de77eSEmmanuel Vadot 14: MULTICORESYNC2 50*ae5de77eSEmmanuel Vadot 15: MULTICORESYNC3 51*ae5de77eSEmmanuel Vadot 16: DMA0 52*ae5de77eSEmmanuel Vadot 17: DMA1 53*ae5de77eSEmmanuel Vadot 18: VC_DMA2 54*ae5de77eSEmmanuel Vadot 19: VC_DMA3 55*ae5de77eSEmmanuel Vadot 20: DMA4 56*ae5de77eSEmmanuel Vadot 21: DMA5 57*ae5de77eSEmmanuel Vadot 22: DMA6 58*ae5de77eSEmmanuel Vadot 23: DMA7 59*ae5de77eSEmmanuel Vadot 24: DMA8 60*ae5de77eSEmmanuel Vadot 25: DMA9 61*ae5de77eSEmmanuel Vadot 26: DMA10 62*ae5de77eSEmmanuel Vadot 27: DMA11-14 - shared interrupt for DMA 11 to 14 63*ae5de77eSEmmanuel Vadot 28: DMAALL - triggers on all dma interrupts (including channel 15) 64*ae5de77eSEmmanuel Vadot 29: AUX 65*ae5de77eSEmmanuel Vadot 30: ARM 66*ae5de77eSEmmanuel Vadot 31: VPUDMA 67*ae5de77eSEmmanuel Vadot 68*ae5de77eSEmmanuel Vadot Bank 2: 69*ae5de77eSEmmanuel Vadot 0: HOSTPORT 70*ae5de77eSEmmanuel Vadot 1: VIDEOSCALER 71*ae5de77eSEmmanuel Vadot 2: CCP2TX 72*ae5de77eSEmmanuel Vadot 3: SDC 73*ae5de77eSEmmanuel Vadot 4: DSI0 74*ae5de77eSEmmanuel Vadot 5: AVE 75*ae5de77eSEmmanuel Vadot 6: CAM0 76*ae5de77eSEmmanuel Vadot 7: CAM1 77*ae5de77eSEmmanuel Vadot 8: HDMI0 78*ae5de77eSEmmanuel Vadot 9: HDMI1 79*ae5de77eSEmmanuel Vadot 10: PIXELVALVE1 80*ae5de77eSEmmanuel Vadot 11: I2CSPISLV 81*ae5de77eSEmmanuel Vadot 12: DSI1 82*ae5de77eSEmmanuel Vadot 13: PWA0 83*ae5de77eSEmmanuel Vadot 14: PWA1 84*ae5de77eSEmmanuel Vadot 15: CPR 85*ae5de77eSEmmanuel Vadot 16: SMI 86*ae5de77eSEmmanuel Vadot 17: GPIO0 87*ae5de77eSEmmanuel Vadot 18: GPIO1 88*ae5de77eSEmmanuel Vadot 19: GPIO2 89*ae5de77eSEmmanuel Vadot 20: GPIO3 90*ae5de77eSEmmanuel Vadot 21: VC_I2C 91*ae5de77eSEmmanuel Vadot 22: VC_SPI 92*ae5de77eSEmmanuel Vadot 23: VC_I2SPCM 93*ae5de77eSEmmanuel Vadot 24: VC_SDIO 94*ae5de77eSEmmanuel Vadot 25: VC_UART 95*ae5de77eSEmmanuel Vadot 26: SLIMBUS 96*ae5de77eSEmmanuel Vadot 27: VEC 97*ae5de77eSEmmanuel Vadot 28: CPG 98*ae5de77eSEmmanuel Vadot 29: RNG 99*ae5de77eSEmmanuel Vadot 30: VC_ARASANSDIO 100*ae5de77eSEmmanuel Vadot 31: AVSPMON 101*ae5de77eSEmmanuel Vadot 102*ae5de77eSEmmanuel Vadotproperties: 103*ae5de77eSEmmanuel Vadot compatible: 104*ae5de77eSEmmanuel Vadot enum: 105*ae5de77eSEmmanuel Vadot - brcm,bcm2835-armctrl-ic 106*ae5de77eSEmmanuel Vadot - brcm,bcm2836-armctrl-ic 107*ae5de77eSEmmanuel Vadot 108*ae5de77eSEmmanuel Vadot reg: 109*ae5de77eSEmmanuel Vadot maxItems: 1 110*ae5de77eSEmmanuel Vadot 111*ae5de77eSEmmanuel Vadot interrupt-controller: true 112*ae5de77eSEmmanuel Vadot 113*ae5de77eSEmmanuel Vadot '#interrupt-cells': 114*ae5de77eSEmmanuel Vadot const: 2 115*ae5de77eSEmmanuel Vadot description: > 116*ae5de77eSEmmanuel Vadot The 1st cell is the interrupt bank; 0 for interrupts in the "IRQ basic 117*ae5de77eSEmmanuel Vadot pending" register, or 1/2 respectively for interrupts in the "IRQ pending 118*ae5de77eSEmmanuel Vadot 1/2" register. 119*ae5de77eSEmmanuel Vadot 120*ae5de77eSEmmanuel Vadot The 2nd cell contains the interrupt number within the bank. Valid values 121*ae5de77eSEmmanuel Vadot are 0..7 for bank 0, and 0..31 for bank 1. 122*ae5de77eSEmmanuel Vadot 123*ae5de77eSEmmanuel Vadot interrupts: 124*ae5de77eSEmmanuel Vadot maxItems: 1 125*ae5de77eSEmmanuel Vadot 126*ae5de77eSEmmanuel Vadotrequired: 127*ae5de77eSEmmanuel Vadot - compatible 128*ae5de77eSEmmanuel Vadot - reg 129*ae5de77eSEmmanuel Vadot - interrupt-controller 130*ae5de77eSEmmanuel Vadot - '#interrupt-cells' 131*ae5de77eSEmmanuel Vadot 132*ae5de77eSEmmanuel VadotallOf: 133*ae5de77eSEmmanuel Vadot - if: 134*ae5de77eSEmmanuel Vadot properties: 135*ae5de77eSEmmanuel Vadot compatible: 136*ae5de77eSEmmanuel Vadot contains: 137*ae5de77eSEmmanuel Vadot const: brcm,bcm2836-armctrl-ic 138*ae5de77eSEmmanuel Vadot then: 139*ae5de77eSEmmanuel Vadot required: 140*ae5de77eSEmmanuel Vadot - interrupts 141*ae5de77eSEmmanuel Vadot else: 142*ae5de77eSEmmanuel Vadot properties: 143*ae5de77eSEmmanuel Vadot interrupts: false 144*ae5de77eSEmmanuel Vadot 145*ae5de77eSEmmanuel VadotadditionalProperties: false 146*ae5de77eSEmmanuel Vadot 147*ae5de77eSEmmanuel Vadotexamples: 148*ae5de77eSEmmanuel Vadot - | 149*ae5de77eSEmmanuel Vadot interrupt-controller@7e00b200 { 150*ae5de77eSEmmanuel Vadot compatible = "brcm,bcm2835-armctrl-ic"; 151*ae5de77eSEmmanuel Vadot reg = <0x7e00b200 0x200>; 152*ae5de77eSEmmanuel Vadot interrupt-controller; 153*ae5de77eSEmmanuel Vadot #interrupt-cells = <2>; 154*ae5de77eSEmmanuel Vadot }; 155*ae5de77eSEmmanuel Vadot - | 156*ae5de77eSEmmanuel Vadot interrupt-controller@7e00b200 { 157*ae5de77eSEmmanuel Vadot compatible = "brcm,bcm2836-armctrl-ic"; 158*ae5de77eSEmmanuel Vadot reg = <0x7e00b200 0x200>; 159*ae5de77eSEmmanuel Vadot interrupt-controller; 160*ae5de77eSEmmanuel Vadot #interrupt-cells = <2>; 161*ae5de77eSEmmanuel Vadot interrupts = <8>; 162*ae5de77eSEmmanuel Vadot }; 163