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