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