1*07f7f686SFlorian Fainelli# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*07f7f686SFlorian Fainelli%YAML 1.2 3*07f7f686SFlorian Fainelli--- 4*07f7f686SFlorian Fainelli$id: http://devicetree.org/schemas/interrupt-controller/brcm,bcm7120-l2-intc.yaml# 5*07f7f686SFlorian Fainelli$schema: http://devicetree.org/meta-schemas/core.yaml# 6*07f7f686SFlorian Fainelli 7*07f7f686SFlorian Fainellititle: Broadcom BCM7120-style Level 2 interrupt controller 8*07f7f686SFlorian Fainelli 9*07f7f686SFlorian Fainellimaintainers: 10*07f7f686SFlorian Fainelli - Florian Fainelli <f.fainelli@gmail.com> 11*07f7f686SFlorian Fainelli 12*07f7f686SFlorian Fainellidescription: > 13*07f7f686SFlorian Fainelli This interrupt controller hardware is a second level interrupt controller that 14*07f7f686SFlorian Fainelli is hooked to a parent interrupt controller: e.g: ARM GIC for ARM-based 15*07f7f686SFlorian Fainelli platforms. It can be found on BCM7xxx products starting with BCM7120. 16*07f7f686SFlorian Fainelli 17*07f7f686SFlorian Fainelli Such an interrupt controller has the following hardware design: 18*07f7f686SFlorian Fainelli 19*07f7f686SFlorian Fainelli - outputs multiple interrupts signals towards its interrupt controller parent 20*07f7f686SFlorian Fainelli 21*07f7f686SFlorian Fainelli - controls how some of the interrupts will be flowing, whether they will 22*07f7f686SFlorian Fainelli directly output an interrupt signal towards the interrupt controller parent, 23*07f7f686SFlorian Fainelli or if they will output an interrupt signal at this 2nd level interrupt 24*07f7f686SFlorian Fainelli controller, in particular for UARTs 25*07f7f686SFlorian Fainelli 26*07f7f686SFlorian Fainelli - has one 32-bit enable word and one 32-bit status word 27*07f7f686SFlorian Fainelli 28*07f7f686SFlorian Fainelli - no atomic set/clear operations 29*07f7f686SFlorian Fainelli 30*07f7f686SFlorian Fainelli - not all bits within the interrupt controller actually map to an interrupt 31*07f7f686SFlorian Fainelli 32*07f7f686SFlorian Fainelli The typical hardware layout for this controller is represented below: 33*07f7f686SFlorian Fainelli 34*07f7f686SFlorian Fainelli 2nd level interrupt line Outputs for the parent controller (e.g: ARM GIC) 35*07f7f686SFlorian Fainelli 36*07f7f686SFlorian Fainelli 0 -----[ MUX ] ------------|==========> GIC interrupt 75 37*07f7f686SFlorian Fainelli \-----------\ 38*07f7f686SFlorian Fainelli | 39*07f7f686SFlorian Fainelli 1 -----[ MUX ] --------)---|==========> GIC interrupt 76 40*07f7f686SFlorian Fainelli \------------| 41*07f7f686SFlorian Fainelli | 42*07f7f686SFlorian Fainelli 2 -----[ MUX ] --------)---|==========> GIC interrupt 77 43*07f7f686SFlorian Fainelli \------------| 44*07f7f686SFlorian Fainelli | 45*07f7f686SFlorian Fainelli 3 ---------------------| 46*07f7f686SFlorian Fainelli 4 ---------------------| 47*07f7f686SFlorian Fainelli 5 ---------------------| 48*07f7f686SFlorian Fainelli 7 ---------------------|---|===========> GIC interrupt 66 49*07f7f686SFlorian Fainelli 9 ---------------------| 50*07f7f686SFlorian Fainelli 10 --------------------| 51*07f7f686SFlorian Fainelli 11 --------------------/ 52*07f7f686SFlorian Fainelli 53*07f7f686SFlorian Fainelli 6 ------------------------\ 54*07f7f686SFlorian Fainelli |===========> GIC interrupt 64 55*07f7f686SFlorian Fainelli 8 ------------------------/ 56*07f7f686SFlorian Fainelli 57*07f7f686SFlorian Fainelli 12 ........................ X 58*07f7f686SFlorian Fainelli 13 ........................ X (not connected) 59*07f7f686SFlorian Fainelli .. 60*07f7f686SFlorian Fainelli 31 ........................ X 61*07f7f686SFlorian Fainelli 62*07f7f686SFlorian FainelliallOf: 63*07f7f686SFlorian Fainelli - $ref: /schemas/interrupt-controller.yaml# 64*07f7f686SFlorian Fainelli 65*07f7f686SFlorian Fainelliproperties: 66*07f7f686SFlorian Fainelli compatible: 67*07f7f686SFlorian Fainelli const: brcm,bcm7120-l2-intc 68*07f7f686SFlorian Fainelli 69*07f7f686SFlorian Fainelli reg: 70*07f7f686SFlorian Fainelli maxItems: 1 71*07f7f686SFlorian Fainelli description: > 72*07f7f686SFlorian Fainelli Specifies the base physical address and size of the registers 73*07f7f686SFlorian Fainelli 74*07f7f686SFlorian Fainelli interrupt-controller: true 75*07f7f686SFlorian Fainelli 76*07f7f686SFlorian Fainelli "#interrupt-cells": 77*07f7f686SFlorian Fainelli const: 1 78*07f7f686SFlorian Fainelli 79*07f7f686SFlorian Fainelli interrupts: 80*07f7f686SFlorian Fainelli minItems: 1 81*07f7f686SFlorian Fainelli maxItems: 32 82*07f7f686SFlorian Fainelli 83*07f7f686SFlorian Fainelli brcm,int-map-mask: 84*07f7f686SFlorian Fainelli $ref: /schemas/types.yaml#/definitions/uint32-array 85*07f7f686SFlorian Fainelli description: > 86*07f7f686SFlorian Fainelli 32-bits bit mask describing how many and which interrupts are wired to 87*07f7f686SFlorian Fainelli this 2nd level interrupt controller, and how they match their respective 88*07f7f686SFlorian Fainelli interrupt parents. Should match exactly the number of interrupts 89*07f7f686SFlorian Fainelli specified in the 'interrupts' property. 90*07f7f686SFlorian Fainelli 91*07f7f686SFlorian Fainelli brcm,irq-can-wake: 92*07f7f686SFlorian Fainelli type: boolean 93*07f7f686SFlorian Fainelli description: > 94*07f7f686SFlorian Fainelli If present, this means the L2 controller can be used as a wakeup source 95*07f7f686SFlorian Fainelli for system suspend/resume. 96*07f7f686SFlorian Fainelli 97*07f7f686SFlorian Fainelli brcm,int-fwd-mask: 98*07f7f686SFlorian Fainelli $ref: /schemas/types.yaml#/definitions/uint32 99*07f7f686SFlorian Fainelli description: > 100*07f7f686SFlorian Fainelli if present, a bit mask to configure the interrupts which have a mux gate, 101*07f7f686SFlorian Fainelli typically UARTs. Setting these bits will make their respective interrupt 102*07f7f686SFlorian Fainelli outputs bypass this 2nd level interrupt controller completely; it is 103*07f7f686SFlorian Fainelli completely transparent for the interrupt controller parent. This should 104*07f7f686SFlorian Fainelli have one 32-bit word per enable/status pair. 105*07f7f686SFlorian Fainelli 106*07f7f686SFlorian FainelliadditionalProperties: false 107*07f7f686SFlorian Fainelli 108*07f7f686SFlorian Fainellirequired: 109*07f7f686SFlorian Fainelli - compatible 110*07f7f686SFlorian Fainelli - reg 111*07f7f686SFlorian Fainelli - interrupt-controller 112*07f7f686SFlorian Fainelli - "#interrupt-cells" 113*07f7f686SFlorian Fainelli - interrupts 114*07f7f686SFlorian Fainelli 115*07f7f686SFlorian Fainelliexamples: 116*07f7f686SFlorian Fainelli - | 117*07f7f686SFlorian Fainelli irq0_intc: interrupt-controller@f0406800 { 118*07f7f686SFlorian Fainelli compatible = "brcm,bcm7120-l2-intc"; 119*07f7f686SFlorian Fainelli interrupt-parent = <&intc>; 120*07f7f686SFlorian Fainelli #interrupt-cells = <1>; 121*07f7f686SFlorian Fainelli reg = <0xf0406800 0x8>; 122*07f7f686SFlorian Fainelli interrupt-controller; 123*07f7f686SFlorian Fainelli interrupts = <0x0 0x42 0x0>, <0x0 0x40 0x0>; 124*07f7f686SFlorian Fainelli brcm,int-map-mask = <0xeb8>, <0x140>; 125*07f7f686SFlorian Fainelli brcm,int-fwd-mask = <0x7>; 126*07f7f686SFlorian Fainelli }; 127