xref: /linux/Documentation/devicetree/bindings/interrupt-controller/st,spear3xx-shirq.txt (revision 3eb66e91a25497065c5322b1268cbc3953642227)
1eb3fcf00SRob Herring* SPEAr Shared IRQ layer (shirq)
2eb3fcf00SRob Herring
3eb3fcf00SRob HerringSPEAr3xx architecture includes shared/multiplexed irqs for certain set
4eb3fcf00SRob Herringof devices. The multiplexor provides a single interrupt to parent
5eb3fcf00SRob Herringinterrupt controller (VIC) on behalf of a group of devices.
6eb3fcf00SRob Herring
7eb3fcf00SRob HerringThere can be multiple groups available on SPEAr3xx variants but not
8eb3fcf00SRob Herringexceeding 4. The number of devices in a group can differ, further they
9eb3fcf00SRob Herringmay share same set of status/mask registers spanning across different
10eb3fcf00SRob Herringbit masks. Also in some cases the group may not have enable or other
11eb3fcf00SRob Herringregisters. This makes software little complex.
12eb3fcf00SRob Herring
13eb3fcf00SRob HerringA single node in the device tree is used to describe the shared
14eb3fcf00SRob Herringinterrupt multiplexor (one node for all groups). A group in the
15eb3fcf00SRob Herringinterrupt controller shares config/control registers with other groups.
16eb3fcf00SRob HerringFor example, a 32-bit interrupt enable/disable config register can
17eb3fcf00SRob Herringaccommodate up to 4 interrupt groups.
18eb3fcf00SRob Herring
19eb3fcf00SRob HerringRequired properties:
20eb3fcf00SRob Herring  - compatible: should be, either of
21eb3fcf00SRob Herring     - "st,spear300-shirq"
22eb3fcf00SRob Herring     - "st,spear310-shirq"
23eb3fcf00SRob Herring     - "st,spear320-shirq"
24eb3fcf00SRob Herring  - interrupt-controller: Identifies the node as an interrupt controller.
25eb3fcf00SRob Herring  - #interrupt-cells: should be <1> which basically contains the offset
26eb3fcf00SRob Herring    (starting from 0) of interrupts for all the groups.
27eb3fcf00SRob Herring  - reg: Base address and size of shirq registers.
28eb3fcf00SRob Herring  - interrupts: The list of interrupts generated by the groups which are
29eb3fcf00SRob Herring    then connected to a parent interrupt controller. Each group is
30eb3fcf00SRob Herring    associated with one of the interrupts, hence number of interrupts (to
31eb3fcf00SRob Herring    parent) is equal to number of groups. The format of the interrupt
32eb3fcf00SRob Herring    specifier depends in the interrupt parent controller.
33eb3fcf00SRob Herring
34eb3fcf00SRob HerringExample:
35eb3fcf00SRob Herring
36eb3fcf00SRob HerringThe following is an example from the SPEAr320 SoC dtsi file.
37eb3fcf00SRob Herring
38*4c9847b7SMathieu Malaterreshirq: interrupt-controller@b3000000 {
39eb3fcf00SRob Herring	compatible = "st,spear320-shirq";
40eb3fcf00SRob Herring	reg = <0xb3000000 0x1000>;
41eb3fcf00SRob Herring	interrupts = <28 29 30 1>;
42eb3fcf00SRob Herring	#interrupt-cells = <1>;
43eb3fcf00SRob Herring	interrupt-controller;
44eb3fcf00SRob Herring};
45