Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/Documentation/devicetree/bindings/cache/l2c2x0.yaml
26307 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
minItems: 2
104
maxItems: 2
105
106
arm,io-coherent:
107
description: indicates that the system is operating in an hardware
108
I/O coherent mode. Valid only when the arm,pl310-cache compatible
109
string is used.
110
type: boolean
111
112
interrupts:
113
# Either a single combined interrupt or up to 9 individual interrupts
114
minItems: 1
115
maxItems: 9
116
117
cache-id-part:
118
description: cache id part number to be used if it is not present
119
on hardware
120
$ref: /schemas/types.yaml#/definitions/uint32
121
122
wt-override:
123
description: If present then L2 is forced to Write through mode
124
type: boolean
125
126
arm,double-linefill:
127
description: Override double linefill enable setting. Enable if
128
non-zero, disable if zero.
129
$ref: /schemas/types.yaml#/definitions/uint32
130
enum: [0, 1]
131
132
arm,double-linefill-incr:
133
description: Override double linefill on INCR read. Enable
134
if non-zero, disable if zero.
135
$ref: /schemas/types.yaml#/definitions/uint32
136
enum: [0, 1]
137
138
arm,double-linefill-wrap:
139
description: Override double linefill on WRAP read. Enable
140
if non-zero, disable if zero.
141
$ref: /schemas/types.yaml#/definitions/uint32
142
enum: [0, 1]
143
144
arm,prefetch-drop:
145
description: Override prefetch drop enable setting. Enable if non-zero,
146
disable if zero.
147
$ref: /schemas/types.yaml#/definitions/uint32
148
enum: [0, 1]
149
150
arm,prefetch-offset:
151
description: Override prefetch offset value.
152
$ref: /schemas/types.yaml#/definitions/uint32
153
enum: [0, 1, 2, 3, 4, 5, 6, 7, 15, 23, 31]
154
155
arm,shared-override:
156
description: The default behavior of the L220 or PL310 cache
157
controllers with respect to the shareable attribute is to transform "normal
158
memory non-cacheable transactions" into "cacheable no allocate" (for reads)
159
or "write through no write allocate" (for writes).
160
On systems where this may cause DMA buffer corruption, this property must
161
be specified to indicate that such transforms are precluded.
162
type: boolean
163
164
arm,parity-enable:
165
description: enable parity checking on the L2 cache (L220 or PL310).
166
type: boolean
167
168
arm,parity-disable:
169
description: disable parity checking on the L2 cache (L220 or PL310).
170
type: boolean
171
172
marvell,ecc-enable:
173
description: enable ECC protection on the L2 cache
174
type: boolean
175
176
arm,outer-sync-disable:
177
description: disable the outer sync operation on the L2 cache.
178
Some core tiles, especially ARM PB11MPCore have a faulty L220 cache that
179
will randomly hang unless outer sync operations are disabled.
180
type: boolean
181
182
prefetch-data:
183
description: |
184
Data prefetch. Value: <0> (forcibly disable), <1>
185
(forcibly enable), property absent (retain settings set by firmware)
186
$ref: /schemas/types.yaml#/definitions/uint32
187
enum: [0, 1]
188
189
prefetch-instr:
190
description: |
191
Instruction prefetch. Value: <0> (forcibly disable),
192
<1> (forcibly enable), property absent (retain settings set by
193
firmware)
194
$ref: /schemas/types.yaml#/definitions/uint32
195
enum: [0, 1]
196
197
arm,dynamic-clock-gating:
198
description: |
199
L2 dynamic clock gating. Value: <0> (forcibly
200
disable), <1> (forcibly enable), property absent (OS specific behavior,
201
preferably retain firmware settings)
202
$ref: /schemas/types.yaml#/definitions/uint32
203
enum: [0, 1]
204
205
arm,standby-mode:
206
description: L2 standby mode enable. Value <0> (forcibly disable),
207
<1> (forcibly enable), property absent (OS specific behavior,
208
preferably retain firmware settings)
209
$ref: /schemas/types.yaml#/definitions/uint32
210
enum: [0, 1]
211
212
arm,early-bresp-disable:
213
description: Disable the CA9 optimization Early BRESP (PL310)
214
type: boolean
215
216
arm,full-line-zero-disable:
217
description: Disable the CA9 optimization Full line of zero
218
write (PL310)
219
type: boolean
220
221
required:
222
- compatible
223
- cache-unified
224
- reg
225
226
additionalProperties: false
227
228
examples:
229
- |
230
cache-controller@fff12000 {
231
compatible = "arm,pl310-cache";
232
reg = <0xfff12000 0x1000>;
233
arm,data-latency = <1 1 1>;
234
arm,tag-latency = <2 2 2>;
235
arm,filter-ranges = <0x80000000 0x8000000>;
236
cache-unified;
237
cache-level = <2>;
238
interrupts = <45>;
239
};
240
241
...
242
243