xref: /freebsd/sys/contrib/device-tree/Bindings/interrupt-controller/brcm,bcm6345-l1-intc.yaml (revision ae5de77ed78ae54d86cead5604869212e8008e6b)
1*ae5de77eSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*ae5de77eSEmmanuel Vadot%YAML 1.2
3*ae5de77eSEmmanuel Vadot---
4*ae5de77eSEmmanuel Vadot$id: http://devicetree.org/schemas/interrupt-controller/brcm,bcm6345-l1-intc.yaml#
5*ae5de77eSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*ae5de77eSEmmanuel Vadot
7*ae5de77eSEmmanuel Vadottitle: Broadcom BCM6345-style Level 1 interrupt controller
8*ae5de77eSEmmanuel Vadot
9*ae5de77eSEmmanuel Vadotmaintainers:
10*ae5de77eSEmmanuel Vadot  - Simon Arlott <simon@octiron.net>
11*ae5de77eSEmmanuel Vadot
12*ae5de77eSEmmanuel Vadotdescription: >
13*ae5de77eSEmmanuel Vadot  This block is a first level interrupt controller that is typically connected
14*ae5de77eSEmmanuel Vadot  directly to one of the HW INT lines on each CPU.
15*ae5de77eSEmmanuel Vadot
16*ae5de77eSEmmanuel Vadot  Key elements of the hardware design include:
17*ae5de77eSEmmanuel Vadot
18*ae5de77eSEmmanuel Vadot    - 32, 64 or 128 incoming level IRQ lines
19*ae5de77eSEmmanuel Vadot
20*ae5de77eSEmmanuel Vadot    - Most onchip peripherals are wired directly to an L1 input
21*ae5de77eSEmmanuel Vadot
22*ae5de77eSEmmanuel Vadot    - A separate instance of the register set for each CPU, allowing individual
23*ae5de77eSEmmanuel Vadot      peripheral IRQs to be routed to any CPU
24*ae5de77eSEmmanuel Vadot
25*ae5de77eSEmmanuel Vadot    - Contains one or more enable/status word pairs per CPU
26*ae5de77eSEmmanuel Vadot
27*ae5de77eSEmmanuel Vadot    - No atomic set/clear operations
28*ae5de77eSEmmanuel Vadot
29*ae5de77eSEmmanuel Vadot    - No polarity/level/edge settings
30*ae5de77eSEmmanuel Vadot
31*ae5de77eSEmmanuel Vadot    - No FIFO or priority encoder logic; software is expected to read all
32*ae5de77eSEmmanuel Vadot      2-4 status words to determine which IRQs are pending
33*ae5de77eSEmmanuel Vadot
34*ae5de77eSEmmanuel Vadot  If multiple reg ranges and interrupt-parent entries are present on an SMP
35*ae5de77eSEmmanuel Vadot  system, the driver will allow IRQ SMP affinity to be set up through the
36*ae5de77eSEmmanuel Vadot  /proc/irq/ interface.  In the simplest possible configuration, only one
37*ae5de77eSEmmanuel Vadot  reg range and one interrupt-parent is needed.
38*ae5de77eSEmmanuel Vadot
39*ae5de77eSEmmanuel Vadot  The driver operates in native CPU endian by default, there is no support for
40*ae5de77eSEmmanuel Vadot  specifying an alternative endianness.
41*ae5de77eSEmmanuel Vadot
42*ae5de77eSEmmanuel Vadotproperties:
43*ae5de77eSEmmanuel Vadot  compatible:
44*ae5de77eSEmmanuel Vadot    const: brcm,bcm6345-l1-intc
45*ae5de77eSEmmanuel Vadot
46*ae5de77eSEmmanuel Vadot  reg:
47*ae5de77eSEmmanuel Vadot    description: One entry per CPU core
48*ae5de77eSEmmanuel Vadot    minItems: 1
49*ae5de77eSEmmanuel Vadot    maxItems: 2
50*ae5de77eSEmmanuel Vadot
51*ae5de77eSEmmanuel Vadot  interrupt-controller: true
52*ae5de77eSEmmanuel Vadot
53*ae5de77eSEmmanuel Vadot  "#interrupt-cells":
54*ae5de77eSEmmanuel Vadot    const: 1
55*ae5de77eSEmmanuel Vadot
56*ae5de77eSEmmanuel Vadot  interrupts:
57*ae5de77eSEmmanuel Vadot    description: One entry per CPU core
58*ae5de77eSEmmanuel Vadot    minItems: 1
59*ae5de77eSEmmanuel Vadot    maxItems: 2
60*ae5de77eSEmmanuel Vadot
61*ae5de77eSEmmanuel Vadotrequired:
62*ae5de77eSEmmanuel Vadot  - compatible
63*ae5de77eSEmmanuel Vadot  - reg
64*ae5de77eSEmmanuel Vadot  - interrupt-controller
65*ae5de77eSEmmanuel Vadot  - '#interrupt-cells'
66*ae5de77eSEmmanuel Vadot  - interrupts
67*ae5de77eSEmmanuel Vadot
68*ae5de77eSEmmanuel VadotadditionalProperties: false
69*ae5de77eSEmmanuel Vadot
70*ae5de77eSEmmanuel Vadotexamples:
71*ae5de77eSEmmanuel Vadot  - |
72*ae5de77eSEmmanuel Vadot    interrupt-controller@10000000 {
73*ae5de77eSEmmanuel Vadot        compatible = "brcm,bcm6345-l1-intc";
74*ae5de77eSEmmanuel Vadot        reg = <0x10000020 0x20>,
75*ae5de77eSEmmanuel Vadot              <0x10000040 0x20>;
76*ae5de77eSEmmanuel Vadot
77*ae5de77eSEmmanuel Vadot        interrupt-controller;
78*ae5de77eSEmmanuel Vadot        #interrupt-cells = <1>;
79*ae5de77eSEmmanuel Vadot
80*ae5de77eSEmmanuel Vadot        interrupts = <2>, <3>;
81*ae5de77eSEmmanuel Vadot    };
82