162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/interrupt-controller/samsung,exynos4210-combiner.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Samsung Exynos SoC Interrupt Combiner Controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Krzysztof Kozlowski <krzk@kernel.org>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  Samsung's Exynos4 architecture includes a interrupt combiner controller which
1462306a36Sopenharmony_ci  can combine interrupt sources as a group and provide a single interrupt
1562306a36Sopenharmony_ci  request for the group. The interrupt request from each group are connected to
1662306a36Sopenharmony_ci  a parent interrupt controller, such as GIC in case of Exynos4210.
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci  The interrupt combiner controller consists of multiple combiners. Up to eight
1962306a36Sopenharmony_ci  interrupt sources can be connected to a combiner. The combiner outputs one
2062306a36Sopenharmony_ci  combined interrupt for its eight interrupt sources. The combined interrupt is
2162306a36Sopenharmony_ci  usually connected to a parent interrupt controller.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci  A single node in the device tree is used to describe the interrupt combiner
2462306a36Sopenharmony_ci  controller module (which includes multiple combiners). A combiner in the
2562306a36Sopenharmony_ci  interrupt controller module shares config/control registers with other
2662306a36Sopenharmony_ci  combiners. For example, a 32-bit interrupt enable/disable config register can
2762306a36Sopenharmony_ci  accommodate up to 4 interrupt combiners (with each combiner supporting up to
2862306a36Sopenharmony_ci  8 interrupt sources).
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ciallOf:
3162306a36Sopenharmony_ci  - $ref: /schemas/interrupt-controller.yaml#
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ciproperties:
3462306a36Sopenharmony_ci  compatible:
3562306a36Sopenharmony_ci    const: samsung,exynos4210-combiner
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci  interrupt-controller: true
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci  interrupts:
4062306a36Sopenharmony_ci    minItems: 8
4162306a36Sopenharmony_ci    maxItems: 32
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci  "#interrupt-cells":
4462306a36Sopenharmony_ci    description: |
4562306a36Sopenharmony_ci      The meaning of the cells are:
4662306a36Sopenharmony_ci        * First Cell: Combiner Group Number.
4762306a36Sopenharmony_ci        * Second Cell: Interrupt number within the group.
4862306a36Sopenharmony_ci    const: 2
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci  reg:
5162306a36Sopenharmony_ci    maxItems: 1
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci  samsung,combiner-nr:
5462306a36Sopenharmony_ci    description: |
5562306a36Sopenharmony_ci      The number of interrupt combiners supported.  Should match number
5662306a36Sopenharmony_ci      of interrupts set in "interrupts" property.
5762306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
5862306a36Sopenharmony_ci    minimum: 8
5962306a36Sopenharmony_ci    maximum: 32
6062306a36Sopenharmony_ci    default: 16
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_cirequired:
6362306a36Sopenharmony_ci  - compatible
6462306a36Sopenharmony_ci  - interrupt-controller
6562306a36Sopenharmony_ci  - interrupts
6662306a36Sopenharmony_ci  - "#interrupt-cells"
6762306a36Sopenharmony_ci  - reg
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ciadditionalProperties: false
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ciexamples:
7262306a36Sopenharmony_ci  - |
7362306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci    interrupt-controller@10440000 {
7662306a36Sopenharmony_ci        compatible = "samsung,exynos4210-combiner";
7762306a36Sopenharmony_ci        interrupt-controller;
7862306a36Sopenharmony_ci        #interrupt-cells = <2>;
7962306a36Sopenharmony_ci        reg = <0x10440000 0x1000>;
8062306a36Sopenharmony_ci        interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
8162306a36Sopenharmony_ci                     <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
8262306a36Sopenharmony_ci                     <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
8362306a36Sopenharmony_ci                     <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
8462306a36Sopenharmony_ci                     <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
8562306a36Sopenharmony_ci                     <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
8662306a36Sopenharmony_ci                     <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
8762306a36Sopenharmony_ci                     <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
8862306a36Sopenharmony_ci                     <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
8962306a36Sopenharmony_ci                     <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
9062306a36Sopenharmony_ci                     <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
9162306a36Sopenharmony_ci                     <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
9262306a36Sopenharmony_ci                     <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
9362306a36Sopenharmony_ci                     <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
9462306a36Sopenharmony_ci                     <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
9562306a36Sopenharmony_ci                     <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
9662306a36Sopenharmony_ci    };
97