Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/interrupt-controller/brcm,bcm7120-l2-intc.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006 
0007 title: Broadcom BCM7120-style Level 2 and Broadcom BCM3380 Level 1 / Level 2
0008 
0009 maintainers:
0010   - Florian Fainelli <f.fainelli@gmail.com>
0011 
0012 description: >
0013   This interrupt controller hardware is a second level interrupt controller that
0014   is hooked to a parent interrupt controller: e.g: ARM GIC for ARM-based
0015   platforms. It can be found on BCM7xxx products starting with BCM7120.
0016 
0017   Such an interrupt controller has the following hardware design:
0018 
0019   - outputs multiple interrupts signals towards its interrupt controller parent
0020 
0021   - controls how some of the interrupts will be flowing, whether they will
0022     directly output an interrupt signal towards the interrupt controller parent,
0023     or if they will output an interrupt signal at this 2nd level interrupt
0024     controller, in particular for UARTs
0025 
0026   - has one 32-bit enable word and one 32-bit status word
0027 
0028   - no atomic set/clear operations
0029 
0030   - not all bits within the interrupt controller actually map to an interrupt
0031 
0032   The typical hardware layout for this controller is represented below:
0033 
0034   2nd level interrupt line              Outputs for the parent controller (e.g: ARM GIC)
0035 
0036   0 -----[ MUX ] ------------|==========> GIC interrupt 75
0037             \-----------\
0038                          |
0039   1 -----[ MUX ] --------)---|==========> GIC interrupt 76
0040             \------------|
0041                          |
0042   2 -----[ MUX ] --------)---|==========> GIC interrupt 77
0043             \------------|
0044                          |
0045   3 ---------------------|
0046   4 ---------------------|
0047   5 ---------------------|
0048   7 ---------------------|---|===========> GIC interrupt 66
0049   9 ---------------------|
0050   10 --------------------|
0051   11 --------------------/
0052 
0053   6 ------------------------\
0054                             |===========> GIC interrupt 64
0055   8 ------------------------/
0056 
0057   12 ........................ X
0058   13 ........................ X           (not connected)
0059   ..
0060   31 ........................ X
0061 
0062   The BCM3380 Level 1 / Level 2 interrrupt controller shows up in various forms
0063   on many BCM338x/BCM63xx chipsets. It has the following properties:
0064 
0065   - outputs a single interrupt signal to its interrupt controller parent
0066 
0067   - contains one or more enable/status word pairs, which often appear at
0068     different offsets in different blocks
0069 
0070   - no atomic set/clear operations
0071 
0072 allOf:
0073   - $ref: /schemas/interrupt-controller.yaml#
0074 
0075 properties:
0076   compatible:
0077     items:
0078       - enum:
0079           - brcm,bcm7120-l2-intc
0080           - brcm,bcm3380-l2-intc
0081 
0082   reg:
0083     minItems: 1
0084     maxItems: 4
0085     description: >
0086       Specifies the base physical address and size of the registers
0087 
0088   interrupt-controller: true
0089 
0090   "#interrupt-cells":
0091     const: 1
0092 
0093   interrupts:
0094     minItems: 1
0095     maxItems: 32
0096 
0097   brcm,int-map-mask:
0098     $ref: /schemas/types.yaml#/definitions/uint32-array
0099     description: >
0100       32-bits bit mask describing how many and which interrupts are wired to
0101       this 2nd level interrupt controller, and how they match their respective
0102       interrupt parents. Should match exactly the number of interrupts
0103       specified in the 'interrupts' property.
0104 
0105   brcm,irq-can-wake:
0106     type: boolean
0107     description: >
0108       If present, this means the L2 controller can be used as a wakeup source
0109       for system suspend/resume.
0110 
0111   brcm,int-fwd-mask:
0112     $ref: /schemas/types.yaml#/definitions/uint32
0113     description: >
0114       if present, a bit mask to configure the interrupts which have a mux gate,
0115       typically UARTs. Setting these bits will make their respective interrupt
0116       outputs bypass this 2nd level interrupt controller completely; it is
0117       completely transparent for the interrupt controller parent. This should
0118       have one 32-bit word per enable/status pair.
0119 
0120 additionalProperties: false
0121 
0122 required:
0123   - compatible
0124   - reg
0125   - interrupt-controller
0126   - "#interrupt-cells"
0127   - interrupts
0128 
0129 examples:
0130   - |
0131     irq0_intc: interrupt-controller@f0406800 {
0132       compatible = "brcm,bcm7120-l2-intc";
0133       interrupt-parent = <&intc>;
0134       #interrupt-cells = <1>;
0135       reg = <0xf0406800 0x8>;
0136       interrupt-controller;
0137       interrupts = <0x0 0x42 0x0>, <0x0 0x40 0x0>;
0138       brcm,int-map-mask = <0xeb8>, <0x140>;
0139       brcm,int-fwd-mask = <0x7>;
0140     };
0141 
0142   - |
0143     irq1_intc: interrupt-controller@10000020 {
0144        compatible = "brcm,bcm3380-l2-intc";
0145        reg = <0x10000024 0x4>, <0x1000002c 0x4>,
0146              <0x10000020 0x4>, <0x10000028 0x4>;
0147        interrupt-controller;
0148        #interrupt-cells = <1>;
0149        interrupt-parent = <&cpu_intc>;
0150        interrupts = <2>;
0151     };