18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: "http://devicetree.org/schemas/interrupt-controller/loongson,liointc.yaml#"
58c2ecf20Sopenharmony_ci$schema: "http://devicetree.org/meta-schemas/core.yaml#"
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Loongson Local I/O Interrupt Controller
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Jiaxun Yang <jiaxun.yang@flygoat.com>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_cidescription: |
138c2ecf20Sopenharmony_ci  This interrupt controller is found in the Loongson-3 family of chips as the primary
148c2ecf20Sopenharmony_ci  package interrupt controller which can route local I/O interrupt to interrupt lines
158c2ecf20Sopenharmony_ci  of cores.
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ciallOf:
188c2ecf20Sopenharmony_ci  - $ref: /schemas/interrupt-controller.yaml#
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ciproperties:
218c2ecf20Sopenharmony_ci  compatible:
228c2ecf20Sopenharmony_ci    oneOf:
238c2ecf20Sopenharmony_ci      - const: loongson,liointc-1.0
248c2ecf20Sopenharmony_ci      - const: loongson,liointc-1.0a
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci  reg:
278c2ecf20Sopenharmony_ci    maxItems: 1
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci  interrupt-controller: true
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ci  interrupts:
328c2ecf20Sopenharmony_ci    description:
338c2ecf20Sopenharmony_ci      Interrupt source of the CPU interrupts.
348c2ecf20Sopenharmony_ci    minItems: 1
358c2ecf20Sopenharmony_ci    maxItems: 4
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ci  interrupt-names:
388c2ecf20Sopenharmony_ci    description: List of names for the parent interrupts.
398c2ecf20Sopenharmony_ci    items:
408c2ecf20Sopenharmony_ci      - const: int0
418c2ecf20Sopenharmony_ci      - const: int1
428c2ecf20Sopenharmony_ci      - const: int2
438c2ecf20Sopenharmony_ci      - const: int3
448c2ecf20Sopenharmony_ci    minItems: 1
458c2ecf20Sopenharmony_ci    maxItems: 4
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci  '#interrupt-cells':
488c2ecf20Sopenharmony_ci    const: 2
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ci  'loongson,parent_int_map':
518c2ecf20Sopenharmony_ci    description: |
528c2ecf20Sopenharmony_ci      This property points how the children interrupts will be mapped into CPU
538c2ecf20Sopenharmony_ci      interrupt lines. Each cell refers to a parent interrupt line from 0 to 3
548c2ecf20Sopenharmony_ci      and each bit in the cell refers to a child interrupt from 0 to 31.
558c2ecf20Sopenharmony_ci      If a CPU interrupt line didn't connect with liointc, then keep its
568c2ecf20Sopenharmony_ci      cell with zero.
578c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
588c2ecf20Sopenharmony_ci    minItems: 4
598c2ecf20Sopenharmony_ci    maxItems: 4
608c2ecf20Sopenharmony_ci
618c2ecf20Sopenharmony_cirequired:
628c2ecf20Sopenharmony_ci  - compatible
638c2ecf20Sopenharmony_ci  - reg
648c2ecf20Sopenharmony_ci  - interrupts
658c2ecf20Sopenharmony_ci  - interrupt-controller
668c2ecf20Sopenharmony_ci  - '#interrupt-cells'
678c2ecf20Sopenharmony_ci  - 'loongson,parent_int_map'
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_ci
708c2ecf20Sopenharmony_ciunevaluatedProperties: false
718c2ecf20Sopenharmony_ci
728c2ecf20Sopenharmony_ciexamples:
738c2ecf20Sopenharmony_ci  - |
748c2ecf20Sopenharmony_ci    iointc: interrupt-controller@3ff01400 {
758c2ecf20Sopenharmony_ci      compatible = "loongson,liointc-1.0";
768c2ecf20Sopenharmony_ci      reg = <0x3ff01400 0x64>;
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ci      interrupt-controller;
798c2ecf20Sopenharmony_ci      #interrupt-cells = <2>;
808c2ecf20Sopenharmony_ci
818c2ecf20Sopenharmony_ci      interrupt-parent = <&cpuintc>;
828c2ecf20Sopenharmony_ci      interrupts = <2>, <3>;
838c2ecf20Sopenharmony_ci      interrupt-names = "int0", "int1";
848c2ecf20Sopenharmony_ci
858c2ecf20Sopenharmony_ci      loongson,parent_int_map = <0xf0ffffff>, /* int0 */
868c2ecf20Sopenharmony_ci                                <0x0f000000>, /* int1 */
878c2ecf20Sopenharmony_ci                                <0x00000000>, /* int2 */
888c2ecf20Sopenharmony_ci                                <0x00000000>; /* int3 */
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_ci    };
918c2ecf20Sopenharmony_ci
928c2ecf20Sopenharmony_ci...
93