# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright (C) 2020 SiFive, Inc.
%YAML 1.2
---
$id: http://devicetree.org/schemas/cache/sifive,ccache0.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: SiFive Composable Cache Controller

maintainers:
  - Paul Walmsley <paul.walmsley@sifive.com>

description:
  The SiFive Composable Cache Controller is used to provide access to fast copies
  of memory for masters in a Core Complex. The Composable Cache Controller also
  acts as directory-based coherency manager.
  All the properties in ePAPR/DeviceTree specification applies for this platform.

select:
  properties:
    compatible:
      contains:
        enum:
          - sifive,ccache0
          - sifive,fu540-c000-ccache
          - sifive,fu740-c000-ccache

  required:
    - compatible

properties:
  compatible:
    oneOf:
      - items:
          - enum:
              - sifive,ccache0
              - sifive,fu540-c000-ccache
              - sifive,fu740-c000-ccache
          - const: cache
      - items:
          - enum:
              - eswin,eic7700-l3-cache
              - starfive,jh7100-ccache
              - starfive,jh7110-ccache
          - const: sifive,ccache0
          - const: cache
      - items:
          - const: microchip,mpfs-ccache
          - const: sifive,fu540-c000-ccache
          - const: cache

  cache-block-size:
    const: 64

  cache-level:
    enum: [2, 3]

  cache-sets:
    enum: [1024, 2048, 4096]

  cache-size:
    enum: [2097152, 4194304]

  cache-unified: true

  interrupts:
    minItems: 3
    items:
      - description: DirError interrupt
      - description: DataError interrupt
      - description: DataFail interrupt
      - description: DirFail interrupt

  reg:
    maxItems: 1

  next-level-cache: true

  memory-region:
    maxItems: 1
    description: |
      The reference to the reserved-memory for the L2 Loosely Integrated Memory region.
      The reserved memory node should be defined as per the bindings in reserved-memory.txt.

allOf:
  - $ref: /schemas/cache-controller.yaml#

  - if:
      properties:
        compatible:
          contains:
            enum:
              - eswin,eic7700-l3-cache
              - sifive,fu740-c000-ccache
              - starfive,jh7100-ccache
              - starfive,jh7110-ccache
              - microchip,mpfs-ccache

    then:
      properties:
        interrupts:
          description: |
            Must contain entries for DirError, DataError, DataFail, DirFail signals.
          minItems: 4

    else:
      properties:
        interrupts:
          description: |
            Must contain entries for DirError, DataError and DataFail signals.
          maxItems: 3

  - if:
      properties:
        compatible:
          contains:
            const: eswin,eic7700-l3-cache

    then:
      properties:
        cache-size:
          const: 4194304

    else:
      properties:
        cache-size:
          const: 2097152

  - if:
      properties:
        compatible:
          contains:
            enum:
              - sifive,fu740-c000-ccache
              - starfive,jh7100-ccache
              - starfive,jh7110-ccache

    then:
      properties:
        cache-sets:
          const: 2048

  - if:
      properties:
        compatible:
          contains:
            enum:
              - microchip,mpfs-ccache
              - sifive,fu540-c000-ccache

    then:
      properties:
        cache-sets:
          const: 1024

  - if:
      properties:
        compatible:
          contains:
            enum:
              - eswin,eic7700-l3-cache

    then:
      properties:
        cache-sets:
          const: 4096

  - if:
      properties:
        compatible:
          contains:
            const: sifive,ccache0

    then:
      properties:
        cache-level:
          enum: [2, 3]

    else:
      properties:
        cache-level:
          const: 2

additionalProperties: false

required:
  - compatible
  - cache-block-size
  - cache-level
  - cache-sets
  - cache-size
  - cache-unified
  - interrupts
  - reg

examples:
  - |
    cache-controller@2010000 {
        compatible = "sifive,fu540-c000-ccache", "cache";
        cache-block-size = <64>;
        cache-level = <2>;
        cache-sets = <1024>;
        cache-size = <2097152>;
        cache-unified;
        reg = <0x2010000 0x1000>;
        interrupt-parent = <&plic0>;
        interrupts = <1>,
                     <2>,
                     <3>;
        next-level-cache = <&L25>;
        memory-region = <&l2_lim>;
    };
