xref: /freebsd/sys/contrib/device-tree/Bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.yaml (revision ae5de77ed78ae54d86cead5604869212e8008e6b)
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