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