Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/contrib/device-tree/Bindings/cache/l2c2x0.yaml
48375 views
1
# SPDX-License-Identifier: GPL-2.0
2
%YAML 1.2
3
---
4
$id: http://devicetree.org/schemas/cache/l2c2x0.yaml#
5
$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7
title: ARM L2 Cache Controller
8
9
maintainers:
10
- Rob Herring <robh@kernel.org>
11
12
description: |+
13
ARM cores often have a separate L2C210/L2C220/L2C310 (also known as PL210/
14
PL220/PL310 and variants) based level 2 cache controller. All these various
15
implementations of the L2 cache controller have compatible programming
16
models (Note 1). Some of the properties that are just prefixed "cache-*" are
17
taken from section 3.7.3 of the Devicetree Specification which can be found
18
at:
19
https://www.devicetree.org/specifications/
20
21
Note 1: The description in this document doesn't apply to integrated L2
22
cache controllers as found in e.g. Cortex-A15/A7/A57/A53. These
23
integrated L2 controllers are assumed to be all preconfigured by
24
early secure boot code. Thus no need to deal with their configuration
25
in the kernel at all.
26
27
allOf:
28
- $ref: /schemas/cache-controller.yaml#
29
30
properties:
31
compatible:
32
oneOf:
33
- enum:
34
- arm,pl310-cache
35
- arm,l220-cache
36
- arm,l210-cache
37
# DEPRECATED by "brcm,bcm11351-a2-pl310-cache"
38
- bcm,bcm11351-a2-pl310-cache
39
# For Broadcom bcm11351 chipset where an
40
# offset needs to be added to the address before passing down to the L2
41
# cache controller
42
- brcm,bcm11351-a2-pl310-cache
43
# Marvell Controller designed to be
44
# compatible with the ARM one, with system cache mode (meaning
45
# maintenance operations on L1 are broadcasted to the L2 and L2
46
# performs the same operation).
47
- marvell,aurora-system-cache
48
# Marvell Controller designed to be
49
# compatible with the ARM one with outer cache mode.
50
- marvell,aurora-outer-cache
51
- items:
52
# Marvell Tauros3 cache controller, compatible
53
# with arm,pl310-cache controller.
54
- const: marvell,tauros3-cache
55
- const: arm,pl310-cache
56
57
cache-level:
58
const: 2
59
60
cache-unified: true
61
cache-size: true
62
cache-sets: true
63
cache-block-size: true
64
cache-line-size: true
65
66
reg:
67
maxItems: 1
68
69
arm,data-latency:
70
description: Cycles of latency for Data RAM accesses. Specifies 3 cells of
71
read, write and setup latencies. Minimum valid values are 1. Controllers
72
without setup latency control should use a value of 0.
73
$ref: /schemas/types.yaml#/definitions/uint32-array
74
minItems: 2
75
maxItems: 3
76
items:
77
minimum: 0
78
maximum: 8
79
80
arm,tag-latency:
81
description: Cycles of latency for Tag RAM accesses. Specifies 3 cells of
82
read, write and setup latencies. Controllers without setup latency control
83
should use 0. Controllers without separate read and write Tag RAM latency
84
values should only use the first cell.
85
$ref: /schemas/types.yaml#/definitions/uint32-array
86
minItems: 1
87
maxItems: 3
88
items:
89
minimum: 0
90
maximum: 8
91
92
arm,dirty-latency:
93
description: Cycles of latency for Dirty RAMs. This is a single cell.
94
$ref: /schemas/types.yaml#/definitions/uint32
95
minimum: 1
96
maximum: 8
97
98
arm,filter-ranges:
99
description: <start length> Starting address and length of window to
100
filter. Addresses in the filter window are directed to the M1 port. Other
101
addresses will go to the M0 port.
102
$ref: /schemas/types.yaml#/definitions/uint32-array
103
items:
104
minItems: 2
105
maxItems: 2
106
107
arm,io-coherent:
108
description: indicates that the system is operating in an hardware
109
I/O coherent mode. Valid only when the arm,pl310-cache compatible
110
string is used.
111
type: boolean
112
113
interrupts:
114
# Either a single combined interrupt or up to 9 individual interrupts
115
minItems: 1
116
maxItems: 9
117
118
cache-id-part:
119
description: cache id part number to be used if it is not present
120
on hardware
121
$ref: /schemas/types.yaml#/definitions/uint32
122
123
wt-override:
124
description: If present then L2 is forced to Write through mode
125
type: boolean
126
127
arm,double-linefill:
128
description: Override double linefill enable setting. Enable if
129
non-zero, disable if zero.
130
$ref: /schemas/types.yaml#/definitions/uint32
131
enum: [0, 1]
132
133
arm,double-linefill-incr:
134
description: Override double linefill on INCR read. Enable
135
if non-zero, disable if zero.
136
$ref: /schemas/types.yaml#/definitions/uint32
137
enum: [0, 1]
138
139
arm,double-linefill-wrap:
140
description: Override double linefill on WRAP read. Enable
141
if non-zero, disable if zero.
142
$ref: /schemas/types.yaml#/definitions/uint32
143
enum: [0, 1]
144
145
arm,prefetch-drop:
146
description: Override prefetch drop enable setting. Enable if non-zero,
147
disable if zero.
148
$ref: /schemas/types.yaml#/definitions/uint32
149
enum: [0, 1]
150
151
arm,prefetch-offset:
152
description: Override prefetch offset value.
153
$ref: /schemas/types.yaml#/definitions/uint32
154
enum: [0, 1, 2, 3, 4, 5, 6, 7, 15, 23, 31]
155
156
arm,shared-override:
157
description: The default behavior of the L220 or PL310 cache
158
controllers with respect to the shareable attribute is to transform "normal
159
memory non-cacheable transactions" into "cacheable no allocate" (for reads)
160
or "write through no write allocate" (for writes).
161
On systems where this may cause DMA buffer corruption, this property must
162
be specified to indicate that such transforms are precluded.
163
type: boolean
164
165
arm,parity-enable:
166
description: enable parity checking on the L2 cache (L220 or PL310).
167
type: boolean
168
169
arm,parity-disable:
170
description: disable parity checking on the L2 cache (L220 or PL310).
171
type: boolean
172
173
marvell,ecc-enable:
174
description: enable ECC protection on the L2 cache
175
type: boolean
176
177
arm,outer-sync-disable:
178
description: disable the outer sync operation on the L2 cache.
179
Some core tiles, especially ARM PB11MPCore have a faulty L220 cache that
180
will randomly hang unless outer sync operations are disabled.
181
type: boolean
182
183
prefetch-data:
184
description: |
185
Data prefetch. Value: <0> (forcibly disable), <1>
186
(forcibly enable), property absent (retain settings set by firmware)
187
$ref: /schemas/types.yaml#/definitions/uint32
188
enum: [0, 1]
189
190
prefetch-instr:
191
description: |
192
Instruction prefetch. Value: <0> (forcibly disable),
193
<1> (forcibly enable), property absent (retain settings set by
194
firmware)
195
$ref: /schemas/types.yaml#/definitions/uint32
196
enum: [0, 1]
197
198
arm,dynamic-clock-gating:
199
description: |
200
L2 dynamic clock gating. Value: <0> (forcibly
201
disable), <1> (forcibly enable), property absent (OS specific behavior,
202
preferably retain firmware settings)
203
$ref: /schemas/types.yaml#/definitions/uint32
204
enum: [0, 1]
205
206
arm,standby-mode:
207
description: L2 standby mode enable. Value <0> (forcibly disable),
208
<1> (forcibly enable), property absent (OS specific behavior,
209
preferably retain firmware settings)
210
$ref: /schemas/types.yaml#/definitions/uint32
211
enum: [0, 1]
212
213
arm,early-bresp-disable:
214
description: Disable the CA9 optimization Early BRESP (PL310)
215
type: boolean
216
217
arm,full-line-zero-disable:
218
description: Disable the CA9 optimization Full line of zero
219
write (PL310)
220
type: boolean
221
222
required:
223
- compatible
224
- cache-unified
225
- reg
226
227
additionalProperties: false
228
229
examples:
230
- |
231
cache-controller@fff12000 {
232
compatible = "arm,pl310-cache";
233
reg = <0xfff12000 0x1000>;
234
arm,data-latency = <1 1 1>;
235
arm,tag-latency = <2 2 2>;
236
arm,filter-ranges = <0x80000000 0x8000000>;
237
cache-unified;
238
cache-level = <2>;
239
interrupts = <45>;
240
};
241
242
...
243
244