18c2ecf20Sopenharmony_ci* Samsung Exynos Interrupt Combiner Controller 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ciSamsung's Exynos4 architecture includes a interrupt combiner controller which 48c2ecf20Sopenharmony_cican combine interrupt sources as a group and provide a single interrupt request 58c2ecf20Sopenharmony_cifor the group. The interrupt request from each group are connected to a parent 68c2ecf20Sopenharmony_ciinterrupt controller, such as GIC in case of Exynos4210. 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ciThe interrupt combiner controller consists of multiple combiners. Up to eight 98c2ecf20Sopenharmony_ciinterrupt sources can be connected to a combiner. The combiner outputs one 108c2ecf20Sopenharmony_cicombined interrupt for its eight interrupt sources. The combined interrupt 118c2ecf20Sopenharmony_ciis usually connected to a parent interrupt controller. 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ciA single node in the device tree is used to describe the interrupt combiner 148c2ecf20Sopenharmony_cicontroller module (which includes multiple combiners). A combiner in the 158c2ecf20Sopenharmony_ciinterrupt controller module shares config/control registers with other 168c2ecf20Sopenharmony_cicombiners. For example, a 32-bit interrupt enable/disable config register 178c2ecf20Sopenharmony_cican accommodate up to 4 interrupt combiners (with each combiner supporting 188c2ecf20Sopenharmony_ciup to 8 interrupt sources). 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ciRequired properties: 218c2ecf20Sopenharmony_ci- compatible: should be "samsung,exynos4210-combiner". 228c2ecf20Sopenharmony_ci- interrupt-controller: Identifies the node as an interrupt controller. 238c2ecf20Sopenharmony_ci- #interrupt-cells: should be <2>. The meaning of the cells are 248c2ecf20Sopenharmony_ci * First Cell: Combiner Group Number. 258c2ecf20Sopenharmony_ci * Second Cell: Interrupt number within the group. 268c2ecf20Sopenharmony_ci- reg: Base address and size of interrupt combiner registers. 278c2ecf20Sopenharmony_ci- interrupts: The list of interrupts generated by the combiners which are then 288c2ecf20Sopenharmony_ci connected to a parent interrupt controller. The format of the interrupt 298c2ecf20Sopenharmony_ci specifier depends in the interrupt parent controller. 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ciOptional properties: 328c2ecf20Sopenharmony_ci- samsung,combiner-nr: The number of interrupt combiners supported. If this 338c2ecf20Sopenharmony_ci property is not specified, the default number of combiners is assumed 348c2ecf20Sopenharmony_ci to be 16. 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ciExample: 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci The following is a an example from the Exynos4210 SoC dtsi file. 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci combiner:interrupt-controller@10440000 { 428c2ecf20Sopenharmony_ci compatible = "samsung,exynos4210-combiner"; 438c2ecf20Sopenharmony_ci interrupt-controller; 448c2ecf20Sopenharmony_ci #interrupt-cells = <2>; 458c2ecf20Sopenharmony_ci reg = <0x10440000 0x1000>; 468c2ecf20Sopenharmony_ci interrupts = <0 0 0>, <0 1 0>, <0 2 0>, <0 3 0>, 478c2ecf20Sopenharmony_ci <0 4 0>, <0 5 0>, <0 6 0>, <0 7 0>, 488c2ecf20Sopenharmony_ci <0 8 0>, <0 9 0>, <0 10 0>, <0 11 0>, 498c2ecf20Sopenharmony_ci <0 12 0>, <0 13 0>, <0 14 0>, <0 15 0>; 508c2ecf20Sopenharmony_ci }; 51