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/timer/sifive,clint.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: SiFive Core Local Interruptor
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Palmer Dabbelt <palmer@dabbelt.com>
1162306a36Sopenharmony_ci  - Anup Patel <anup.patel@wdc.com>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cidescription:
1462306a36Sopenharmony_ci  SiFive (and other RISC-V) SOCs include an implementation of the SiFive
1562306a36Sopenharmony_ci  Core Local Interruptor (CLINT) for M-mode timer and M-mode inter-processor
1662306a36Sopenharmony_ci  interrupts. It directly connects to the timer and inter-processor interrupt
1762306a36Sopenharmony_ci  lines of various HARTs (or CPUs) so RISC-V per-HART (or per-CPU) local
1862306a36Sopenharmony_ci  interrupt controller is the parent interrupt controller for CLINT device.
1962306a36Sopenharmony_ci  The clock frequency of CLINT is specified via "timebase-frequency" DT
2062306a36Sopenharmony_ci  property of "/cpus" DT node. The "timebase-frequency" DT property is
2162306a36Sopenharmony_ci  described in Documentation/devicetree/bindings/riscv/cpus.yaml
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci  T-Head C906/C910 CPU cores include an implementation of CLINT too, however
2462306a36Sopenharmony_ci  their implementation lacks a memory-mapped MTIME register, thus not
2562306a36Sopenharmony_ci  compatible with SiFive ones.
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ciproperties:
2862306a36Sopenharmony_ci  compatible:
2962306a36Sopenharmony_ci    oneOf:
3062306a36Sopenharmony_ci      - items:
3162306a36Sopenharmony_ci          - enum:
3262306a36Sopenharmony_ci              - canaan,k210-clint       # Canaan Kendryte K210
3362306a36Sopenharmony_ci              - sifive,fu540-c000-clint # SiFive FU540
3462306a36Sopenharmony_ci              - starfive,jh7100-clint   # StarFive JH7100
3562306a36Sopenharmony_ci              - starfive,jh7110-clint   # StarFive JH7110
3662306a36Sopenharmony_ci          - const: sifive,clint0        # SiFive CLINT v0 IP block
3762306a36Sopenharmony_ci      - items:
3862306a36Sopenharmony_ci          - enum:
3962306a36Sopenharmony_ci              - allwinner,sun20i-d1-clint
4062306a36Sopenharmony_ci              - thead,th1520-clint
4162306a36Sopenharmony_ci          - const: thead,c900-clint
4262306a36Sopenharmony_ci      - items:
4362306a36Sopenharmony_ci          - const: sifive,clint0
4462306a36Sopenharmony_ci          - const: riscv,clint0
4562306a36Sopenharmony_ci        deprecated: true
4662306a36Sopenharmony_ci        description: For the QEMU virt machine only
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci    description:
4962306a36Sopenharmony_ci      Should be "<vendor>,<chip>-clint", followed by "sifive,clint<version>"
5062306a36Sopenharmony_ci      when compatible with a SiFive CLINT.  Please refer to
5162306a36Sopenharmony_ci      sifive-blocks-ip-versioning.txt for details regarding the latter.
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci  reg:
5462306a36Sopenharmony_ci    maxItems: 1
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci  interrupts-extended:
5762306a36Sopenharmony_ci    minItems: 1
5862306a36Sopenharmony_ci    maxItems: 4095
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ciadditionalProperties: false
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_cirequired:
6362306a36Sopenharmony_ci  - compatible
6462306a36Sopenharmony_ci  - reg
6562306a36Sopenharmony_ci  - interrupts-extended
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ciexamples:
6862306a36Sopenharmony_ci  - |
6962306a36Sopenharmony_ci    timer@2000000 {
7062306a36Sopenharmony_ci      compatible = "sifive,fu540-c000-clint", "sifive,clint0";
7162306a36Sopenharmony_ci      interrupts-extended = <&cpu1intc 3>, <&cpu1intc 7>,
7262306a36Sopenharmony_ci                            <&cpu2intc 3>, <&cpu2intc 7>,
7362306a36Sopenharmony_ci                            <&cpu3intc 3>, <&cpu3intc 7>,
7462306a36Sopenharmony_ci                            <&cpu4intc 3>, <&cpu4intc 7>;
7562306a36Sopenharmony_ci       reg = <0x2000000 0x10000>;
7662306a36Sopenharmony_ci    };
7762306a36Sopenharmony_ci...
78