xref: /linux/Documentation/devicetree/bindings/interrupt-controller/st,spear300-shirq.yaml (revision e78f70bad29c5ae1e1076698b690b15794e9b81e)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/interrupt-controller/st,spear300-shirq.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: SPEAr3xx Shared IRQ controller
8
9maintainers:
10  - Viresh Kumar <vireshk@kernel.org>
11  - Shiraz Hashim <shiraz.linux.kernel@gmail.com>
12
13description: |
14  SPEAr3xx architecture includes shared/multiplexed irqs for certain set of
15  devices. The multiplexor provides a single interrupt to parent interrupt
16  controller (VIC) on behalf of a group of devices.
17
18  There can be multiple groups available on SPEAr3xx variants but not exceeding
19  4. The number of devices in a group can differ, further they may share same
20  set of status/mask registers spanning across different bit masks. Also in some
21  cases the group may not have enable or other registers. This makes software
22  little complex.
23
24  A single node in the device tree is used to describe the shared interrupt
25  multiplexer (one node for all groups). A group in the interrupt controller
26  shares config/control registers with other groups. For example, a 32-bit
27  interrupt enable/disable config register can accommodate up to 4 interrupt
28  groups.
29
30properties:
31  compatible:
32    enum:
33      - st,spear300-shirq
34      - st,spear310-shirq
35      - st,spear320-shirq
36
37  reg:
38    maxItems: 1
39
40  '#interrupt-cells':
41    const: 1
42
43  interrupt-controller: true
44
45  interrupts:
46    description: Interrupt specifier array for SHIRQ groups
47    minItems: 1
48    maxItems: 4
49
50required:
51  - compatible
52  - reg
53  - '#interrupt-cells'
54  - interrupt-controller
55  - interrupts
56
57additionalProperties: false
58
59examples:
60  - |
61    interrupt-controller@b3000000 {
62        compatible = "st,spear320-shirq";
63        reg = <0xb3000000 0x1000>;
64        interrupts = <28 29 30 1>;
65        #interrupt-cells = <1>;
66        interrupt-controller;
67    };
68