1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2# Copyright (C) 2020 SiFive, Inc.
3%YAML 1.2
4---
5$id: http://devicetree.org/schemas/riscv/sifive-l2-cache.yaml#
6$schema: http://devicetree.org/meta-schemas/core.yaml#
7
8title: SiFive L2 Cache Controller
9
10maintainers:
11  - Sagar Kadam <sagar.kadam@sifive.com>
12  - Paul Walmsley  <paul.walmsley@sifive.com>
13
14description:
15  The SiFive Level 2 Cache Controller is used to provide access to fast copies
16  of memory for masters in a Core Complex. The Level 2 Cache Controller also
17  acts as directory-based coherency manager.
18  All the properties in ePAPR/DeviceTree specification applies for this platform.
19
20select:
21  properties:
22    compatible:
23      contains:
24        enum:
25          - sifive,fu540-c000-ccache
26          - sifive,fu740-c000-ccache
27
28  required:
29    - compatible
30
31properties:
32  compatible:
33    oneOf:
34      - items:
35          - enum:
36              - sifive,fu540-c000-ccache
37              - sifive,fu740-c000-ccache
38          - const: cache
39      - items:
40          - const: microchip,mpfs-ccache
41          - const: sifive,fu540-c000-ccache
42          - const: cache
43
44  cache-block-size:
45    const: 64
46
47  cache-level:
48    const: 2
49
50  cache-sets:
51    enum: [1024, 2048]
52
53  cache-size:
54    const: 2097152
55
56  cache-unified: true
57
58  interrupts:
59    minItems: 3
60    items:
61      - description: DirError interrupt
62      - description: DataError interrupt
63      - description: DataFail interrupt
64      - description: DirFail interrupt
65
66  reg:
67    maxItems: 1
68
69  next-level-cache: true
70
71  memory-region:
72    maxItems: 1
73    description: |
74      The reference to the reserved-memory for the L2 Loosely Integrated Memory region.
75      The reserved memory node should be defined as per the bindings in reserved-memory.txt.
76
77allOf:
78  - $ref: /schemas/cache-controller.yaml#
79
80  - if:
81      properties:
82        compatible:
83          contains:
84            enum:
85              - sifive,fu740-c000-ccache
86              - microchip,mpfs-ccache
87
88    then:
89      properties:
90        interrupts:
91          description: |
92            Must contain entries for DirError, DataError, DataFail, DirFail signals.
93          minItems: 4
94
95    else:
96      properties:
97        interrupts:
98          description: |
99            Must contain entries for DirError, DataError and DataFail signals.
100          maxItems: 3
101
102  - if:
103      properties:
104        compatible:
105          contains:
106            const: sifive,fu740-c000-ccache
107
108    then:
109      properties:
110        cache-sets:
111          const: 2048
112
113    else:
114      properties:
115        cache-sets:
116          const: 1024
117
118additionalProperties: false
119
120required:
121  - compatible
122  - cache-block-size
123  - cache-level
124  - cache-sets
125  - cache-size
126  - cache-unified
127  - interrupts
128  - reg
129
130examples:
131  - |
132    cache-controller@2010000 {
133        compatible = "sifive,fu540-c000-ccache", "cache";
134        cache-block-size = <64>;
135        cache-level = <2>;
136        cache-sets = <1024>;
137        cache-size = <2097152>;
138        cache-unified;
139        reg = <0x2010000 0x1000>;
140        interrupt-parent = <&plic0>;
141        interrupts = <1>,
142                     <2>,
143                     <3>;
144        next-level-cache = <&L25>;
145        memory-region = <&l2_lim>;
146    };
147