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