xref: /freebsd/sys/contrib/device-tree/Bindings/cache/sifive,ccache0.yaml (revision a90b9d0159070121c221b966469c3e36d912bf82)
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              - starfive,jh7100-ccache
43              - starfive,jh7110-ccache
44          - const: sifive,ccache0
45          - const: cache
46      - items:
47          - const: microchip,mpfs-ccache
48          - const: sifive,fu540-c000-ccache
49          - const: cache
50
51  cache-block-size:
52    const: 64
53
54  cache-level:
55    enum: [2, 3]
56
57  cache-sets:
58    enum: [1024, 2048]
59
60  cache-size:
61    const: 2097152
62
63  cache-unified: true
64
65  interrupts:
66    minItems: 3
67    items:
68      - description: DirError interrupt
69      - description: DataError interrupt
70      - description: DataFail interrupt
71      - description: DirFail interrupt
72
73  reg:
74    maxItems: 1
75
76  next-level-cache: true
77
78  memory-region:
79    maxItems: 1
80    description: |
81      The reference to the reserved-memory for the L2 Loosely Integrated Memory region.
82      The reserved memory node should be defined as per the bindings in reserved-memory.txt.
83
84allOf:
85  - $ref: /schemas/cache-controller.yaml#
86
87  - if:
88      properties:
89        compatible:
90          contains:
91            enum:
92              - sifive,fu740-c000-ccache
93              - starfive,jh7100-ccache
94              - starfive,jh7110-ccache
95              - microchip,mpfs-ccache
96
97    then:
98      properties:
99        interrupts:
100          description: |
101            Must contain entries for DirError, DataError, DataFail, DirFail signals.
102          minItems: 4
103
104    else:
105      properties:
106        interrupts:
107          description: |
108            Must contain entries for DirError, DataError and DataFail signals.
109          maxItems: 3
110
111  - if:
112      properties:
113        compatible:
114          contains:
115            enum:
116              - sifive,fu740-c000-ccache
117              - starfive,jh7100-ccache
118              - starfive,jh7110-ccache
119
120    then:
121      properties:
122        cache-sets:
123          const: 2048
124
125    else:
126      properties:
127        cache-sets:
128          const: 1024
129
130  - if:
131      properties:
132        compatible:
133          contains:
134            const: sifive,ccache0
135
136    then:
137      properties:
138        cache-level:
139          enum: [2, 3]
140
141    else:
142      properties:
143        cache-level:
144          const: 2
145
146additionalProperties: false
147
148required:
149  - compatible
150  - cache-block-size
151  - cache-level
152  - cache-sets
153  - cache-size
154  - cache-unified
155  - interrupts
156  - reg
157
158examples:
159  - |
160    cache-controller@2010000 {
161        compatible = "sifive,fu540-c000-ccache", "cache";
162        cache-block-size = <64>;
163        cache-level = <2>;
164        cache-sets = <1024>;
165        cache-size = <2097152>;
166        cache-unified;
167        reg = <0x2010000 0x1000>;
168        interrupt-parent = <&plic0>;
169        interrupts = <1>,
170                     <2>,
171                     <3>;
172        next-level-cache = <&L25>;
173        memory-region = <&l2_lim>;
174    };
175