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