162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/interrupt-controller/amlogic,meson-gpio-intc.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Amlogic Meson GPIO interrupt controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Heiner Kallweit <hkallweit1@gmail.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  Meson SoCs contains an interrupt controller which is able to watch the SoC
1462306a36Sopenharmony_ci  pads and generate an interrupt on edge or level. The controller is essentially
1562306a36Sopenharmony_ci  a 256 pads to 8 or 12 GIC interrupt multiplexer, with a filter block to select
1662306a36Sopenharmony_ci  edge or level and polarity. It does not expose all 256 mux inputs because the
1762306a36Sopenharmony_ci  documentation shows that the upper part is not mapped to any pad. The actual
1862306a36Sopenharmony_ci  number of interrupts exposed depends on the SoC.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciallOf:
2162306a36Sopenharmony_ci  - $ref: /schemas/interrupt-controller.yaml#
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ciproperties:
2462306a36Sopenharmony_ci  compatible:
2562306a36Sopenharmony_ci    oneOf:
2662306a36Sopenharmony_ci      - const: amlogic,meson-gpio-intc
2762306a36Sopenharmony_ci      - items:
2862306a36Sopenharmony_ci          - enum:
2962306a36Sopenharmony_ci              - amlogic,meson8-gpio-intc
3062306a36Sopenharmony_ci              - amlogic,meson8b-gpio-intc
3162306a36Sopenharmony_ci              - amlogic,meson-gxbb-gpio-intc
3262306a36Sopenharmony_ci              - amlogic,meson-gxl-gpio-intc
3362306a36Sopenharmony_ci              - amlogic,meson-axg-gpio-intc
3462306a36Sopenharmony_ci              - amlogic,meson-g12a-gpio-intc
3562306a36Sopenharmony_ci              - amlogic,meson-sm1-gpio-intc
3662306a36Sopenharmony_ci              - amlogic,meson-a1-gpio-intc
3762306a36Sopenharmony_ci              - amlogic,meson-s4-gpio-intc
3862306a36Sopenharmony_ci              - amlogic,c3-gpio-intc
3962306a36Sopenharmony_ci          - const: amlogic,meson-gpio-intc
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci  reg:
4262306a36Sopenharmony_ci    maxItems: 1
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci  interrupt-controller: true
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci  "#interrupt-cells":
4762306a36Sopenharmony_ci    const: 2
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci  amlogic,channel-interrupts:
5062306a36Sopenharmony_ci    description: Array with the upstream hwirq numbers
5162306a36Sopenharmony_ci    minItems: 8
5262306a36Sopenharmony_ci    maxItems: 12
5362306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_cirequired:
5662306a36Sopenharmony_ci  - compatible
5762306a36Sopenharmony_ci  - reg
5862306a36Sopenharmony_ci  - interrupt-controller
5962306a36Sopenharmony_ci  - "#interrupt-cells"
6062306a36Sopenharmony_ci  - amlogic,channel-interrupts
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ciadditionalProperties: false
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ciexamples:
6562306a36Sopenharmony_ci  - |
6662306a36Sopenharmony_ci    interrupt-controller@9880 {
6762306a36Sopenharmony_ci      compatible = "amlogic,meson-gxbb-gpio-intc",
6862306a36Sopenharmony_ci                   "amlogic,meson-gpio-intc";
6962306a36Sopenharmony_ci      reg = <0x9880 0x10>;
7062306a36Sopenharmony_ci      interrupt-controller;
7162306a36Sopenharmony_ci      #interrupt-cells = <2>;
7262306a36Sopenharmony_ci      amlogic,channel-interrupts = <64 65 66 67 68 69 70 71>;
7362306a36Sopenharmony_ci    };
74