xref: /linux/Documentation/devicetree/bindings/cache/sifive,ccache0.yaml (revision e7e86d7697c6ed1dbbde18d7185c35b6967945ed)
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/cache/sifive,ccache0.yaml#
6$schema: http://devicetree.org/meta-schemas/core.yaml#
7
8title: SiFive Composable Cache Controller
9
10maintainers:
11  - Paul Walmsley <paul.walmsley@sifive.com>
12
13description:
14  The SiFive Composable Cache Controller is used to provide access to fast copies
15  of memory for masters in a Core Complex. The Composable Cache Controller also
16  acts as directory-based coherency manager.
17  All the properties in ePAPR/DeviceTree specification applies for this platform.
18
19select:
20  properties:
21    compatible:
22      contains:
23        enum:
24          - sifive,ccache0
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,ccache0
37              - sifive,fu540-c000-ccache
38              - sifive,fu740-c000-ccache
39          - const: cache
40      - items:
41          - enum:
42              - eswin,eic7700-l3-cache
43              - starfive,jh7100-ccache
44              - starfive,jh7110-ccache
45          - const: sifive,ccache0
46          - const: cache
47      - items:
48          - const: microchip,mpfs-ccache
49          - const: sifive,fu540-c000-ccache
50          - const: cache
51
52  cache-block-size:
53    const: 64
54
55  cache-level:
56    enum: [2, 3]
57
58  cache-sets:
59    enum: [1024, 2048, 4096]
60
61  cache-size:
62    enum: [2097152, 4194304]
63
64  cache-unified: true
65
66  interrupts:
67    minItems: 3
68    items:
69      - description: DirError interrupt
70      - description: DataError interrupt
71      - description: DataFail interrupt
72      - description: DirFail interrupt
73
74  reg:
75    maxItems: 1
76
77  next-level-cache: true
78
79  memory-region:
80    maxItems: 1
81    description: |
82      The reference to the reserved-memory for the L2 Loosely Integrated Memory region.
83      The reserved memory node should be defined as per the bindings in reserved-memory.txt.
84
85allOf:
86  - $ref: /schemas/cache-controller.yaml#
87
88  - if:
89      properties:
90        compatible:
91          contains:
92            enum:
93              - eswin,eic7700-l3-cache
94              - sifive,fu740-c000-ccache
95              - starfive,jh7100-ccache
96              - starfive,jh7110-ccache
97              - microchip,mpfs-ccache
98
99    then:
100      properties:
101        interrupts:
102          description: |
103            Must contain entries for DirError, DataError, DataFail, DirFail signals.
104          minItems: 4
105
106    else:
107      properties:
108        interrupts:
109          description: |
110            Must contain entries for DirError, DataError and DataFail signals.
111          maxItems: 3
112
113  - if:
114      properties:
115        compatible:
116          contains:
117            const: eswin,eic7700-l3-cache
118
119    then:
120      properties:
121        cache-size:
122          const: 4194304
123
124    else:
125      properties:
126        cache-size:
127          const: 2097152
128
129  - if:
130      properties:
131        compatible:
132          contains:
133            enum:
134              - sifive,fu740-c000-ccache
135              - starfive,jh7100-ccache
136              - starfive,jh7110-ccache
137
138    then:
139      properties:
140        cache-sets:
141          const: 2048
142
143  - if:
144      properties:
145        compatible:
146          contains:
147            enum:
148              - microchip,mpfs-ccache
149              - sifive,fu540-c000-ccache
150
151    then:
152      properties:
153        cache-sets:
154          const: 1024
155
156  - if:
157      properties:
158        compatible:
159          contains:
160            enum:
161              - eswin,eic7700-l3-cache
162
163    then:
164      properties:
165        cache-sets:
166          const: 4096
167
168  - if:
169      properties:
170        compatible:
171          contains:
172            const: sifive,ccache0
173
174    then:
175      properties:
176        cache-level:
177          enum: [2, 3]
178
179    else:
180      properties:
181        cache-level:
182          const: 2
183
184additionalProperties: false
185
186required:
187  - compatible
188  - cache-block-size
189  - cache-level
190  - cache-sets
191  - cache-size
192  - cache-unified
193  - interrupts
194  - reg
195
196examples:
197  - |
198    cache-controller@2010000 {
199        compatible = "sifive,fu540-c000-ccache", "cache";
200        cache-block-size = <64>;
201        cache-level = <2>;
202        cache-sets = <1024>;
203        cache-size = <2097152>;
204        cache-unified;
205        reg = <0x2010000 0x1000>;
206        interrupt-parent = <&plic0>;
207        interrupts = <1>,
208                     <2>,
209                     <3>;
210        next-level-cache = <&L25>;
211        memory-region = <&l2_lim>;
212    };
213