1*c66ec88fSEmmanuel Vadot* Samsung Exynos Interrupt Combiner Controller
2*c66ec88fSEmmanuel Vadot
3*c66ec88fSEmmanuel VadotSamsung's Exynos4 architecture includes a interrupt combiner controller which
4*c66ec88fSEmmanuel Vadotcan combine interrupt sources as a group and provide a single interrupt request
5*c66ec88fSEmmanuel Vadotfor the group. The interrupt request from each group are connected to a parent
6*c66ec88fSEmmanuel Vadotinterrupt controller, such as GIC in case of Exynos4210.
7*c66ec88fSEmmanuel Vadot
8*c66ec88fSEmmanuel VadotThe interrupt combiner controller consists of multiple combiners. Up to eight
9*c66ec88fSEmmanuel Vadotinterrupt sources can be connected to a combiner. The combiner outputs one
10*c66ec88fSEmmanuel Vadotcombined interrupt for its eight interrupt sources. The combined interrupt
11*c66ec88fSEmmanuel Vadotis usually connected to a parent interrupt controller.
12*c66ec88fSEmmanuel Vadot
13*c66ec88fSEmmanuel VadotA single node in the device tree is used to describe the interrupt combiner
14*c66ec88fSEmmanuel Vadotcontroller module (which includes multiple combiners). A combiner in the
15*c66ec88fSEmmanuel Vadotinterrupt controller module shares config/control registers with other
16*c66ec88fSEmmanuel Vadotcombiners. For example, a 32-bit interrupt enable/disable config register
17*c66ec88fSEmmanuel Vadotcan accommodate up to 4 interrupt combiners (with each combiner supporting
18*c66ec88fSEmmanuel Vadotup to 8 interrupt sources).
19*c66ec88fSEmmanuel Vadot
20*c66ec88fSEmmanuel VadotRequired properties:
21*c66ec88fSEmmanuel Vadot- compatible: should be "samsung,exynos4210-combiner".
22*c66ec88fSEmmanuel Vadot- interrupt-controller: Identifies the node as an interrupt controller.
23*c66ec88fSEmmanuel Vadot- #interrupt-cells: should be <2>. The meaning of the cells are
24*c66ec88fSEmmanuel Vadot	* First Cell: Combiner Group Number.
25*c66ec88fSEmmanuel Vadot	* Second Cell: Interrupt number within the group.
26*c66ec88fSEmmanuel Vadot- reg: Base address and size of interrupt combiner registers.
27*c66ec88fSEmmanuel Vadot- interrupts: The list of interrupts generated by the combiners which are then
28*c66ec88fSEmmanuel Vadot    connected to a parent interrupt controller. The format of the interrupt
29*c66ec88fSEmmanuel Vadot    specifier depends in the interrupt parent controller.
30*c66ec88fSEmmanuel Vadot
31*c66ec88fSEmmanuel VadotOptional properties:
32*c66ec88fSEmmanuel Vadot- samsung,combiner-nr: The number of interrupt combiners supported. If this
33*c66ec88fSEmmanuel Vadot  property is not specified, the default number of combiners is assumed
34*c66ec88fSEmmanuel Vadot  to be 16.
35*c66ec88fSEmmanuel Vadot
36*c66ec88fSEmmanuel Vadot
37*c66ec88fSEmmanuel VadotExample:
38*c66ec88fSEmmanuel Vadot
39*c66ec88fSEmmanuel Vadot	The following is a an example from the Exynos4210 SoC dtsi file.
40*c66ec88fSEmmanuel Vadot
41*c66ec88fSEmmanuel Vadot	combiner:interrupt-controller@10440000 {
42*c66ec88fSEmmanuel Vadot		compatible = "samsung,exynos4210-combiner";
43*c66ec88fSEmmanuel Vadot		interrupt-controller;
44*c66ec88fSEmmanuel Vadot		#interrupt-cells = <2>;
45*c66ec88fSEmmanuel Vadot		reg = <0x10440000 0x1000>;
46*c66ec88fSEmmanuel Vadot		interrupts = <0 0 0>, <0 1 0>, <0 2 0>, <0 3 0>,
47*c66ec88fSEmmanuel Vadot			     <0 4 0>, <0 5 0>, <0 6 0>, <0 7 0>,
48*c66ec88fSEmmanuel Vadot			     <0 8 0>, <0 9 0>, <0 10 0>, <0 11 0>,
49*c66ec88fSEmmanuel Vadot			     <0 12 0>, <0 13 0>, <0 14 0>, <0 15 0>;
50*c66ec88fSEmmanuel Vadot	};
51