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