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