1 # SPDX-License-Identifier: GPL-2.0
4 $id: http://devicetree.org/schemas/arm/l2c2x0.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: ARM L2 Cache Controller
10 - Rob Herring <robh@kernel.org>
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
19 https://www.devicetree.org/specifications/
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
28 - $ref: /schemas/cache-controller.yaml#
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
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
52 # Marvell Tauros3 cache controller, compatible
53 # with arm,pl310-cache controller.
54 - const: marvell,tauros3-cache
55 - const: arm,pl310-cache
63 cache-block-size: true
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
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
93 description: Cycles of latency for Dirty RAMs. This is a single cell.
94 $ref: /schemas/types.yaml#/definitions/uint32
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
108 description: indicates that the system is operating in an hardware
109 I/O coherent mode. Valid only when the arm,pl310-cache compatible
114 # Either a single combined interrupt or up to 9 individual interrupts
119 description: cache id part number to be used if it is not present
121 $ref: /schemas/types.yaml#/definitions/uint32
124 description: If present then L2 is forced to Write through mode
128 description: Override double linefill enable setting. Enable if
129 non-zero, disable if zero.
130 $ref: /schemas/types.yaml#/definitions/uint32
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
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
146 description: Override prefetch drop enable setting. Enable if non-zero,
148 $ref: /schemas/types.yaml#/definitions/uint32
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]
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.
166 description: enable parity checking on the L2 cache (L220 or PL310).
170 description: disable parity checking on the L2 cache (L220 or PL310).
174 description: enable ECC protection on the L2 cache
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.
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
192 Instruction prefetch. Value: <0> (forcibly disable),
193 <1> (forcibly enable), property absent (retain settings set by
195 $ref: /schemas/types.yaml#/definitions/uint32
198 arm,dynamic-clock-gating:
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
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
213 arm,early-bresp-disable:
214 description: Disable the CA9 optimization Early BRESP (PL310)
217 arm,full-line-zero-disable:
218 description: Disable the CA9 optimization Full line of zero
227 additionalProperties: false
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>;