Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: GPL-2.0
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/arm/l2c2x0.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006 
0007 title: ARM L2 Cache Controller
0008 
0009 maintainers:
0010   - Rob Herring <robh@kernel.org>
0011 
0012 description: |+
0013   ARM cores often have a separate L2C210/L2C220/L2C310 (also known as PL210/
0014   PL220/PL310 and variants) based level 2 cache controller. All these various
0015   implementations of the L2 cache controller have compatible programming
0016   models (Note 1). Some of the properties that are just prefixed "cache-*" are
0017   taken from section 3.7.3 of the Devicetree Specification which can be found
0018   at:
0019   https://www.devicetree.org/specifications/
0020 
0021   Note 1: The description in this document doesn't apply to integrated L2
0022     cache controllers as found in e.g. Cortex-A15/A7/A57/A53. These
0023     integrated L2 controllers are assumed to be all preconfigured by
0024     early secure boot code. Thus no need to deal with their configuration
0025     in the kernel at all.
0026 
0027 allOf:
0028   - $ref: /schemas/cache-controller.yaml#
0029 
0030 properties:
0031   compatible:
0032     oneOf:
0033       - enum:
0034           - arm,pl310-cache
0035           - arm,l220-cache
0036           - arm,l210-cache
0037             # DEPRECATED by "brcm,bcm11351-a2-pl310-cache"
0038           - bcm,bcm11351-a2-pl310-cache
0039             # For Broadcom bcm11351 chipset where an
0040             # offset needs to be added to the address before passing down to the L2
0041             # cache controller
0042           - brcm,bcm11351-a2-pl310-cache
0043             # Marvell Controller designed to be
0044             # compatible with the ARM one, with system cache mode (meaning
0045             # maintenance operations on L1 are broadcasted to the L2 and L2
0046             # performs the same operation).
0047           - marvell,aurora-system-cache
0048             # Marvell Controller designed to be
0049             # compatible with the ARM one with outer cache mode.
0050           - marvell,aurora-outer-cache
0051       - items:
0052            # Marvell Tauros3 cache controller, compatible
0053            # with arm,pl310-cache controller.
0054           - const: marvell,tauros3-cache
0055           - const: arm,pl310-cache
0056 
0057   cache-level:
0058     const: 2
0059 
0060   cache-unified: true
0061   cache-size: true
0062   cache-sets: true
0063   cache-block-size: true
0064   cache-line-size: true
0065 
0066   reg:
0067     maxItems: 1
0068 
0069   arm,data-latency:
0070     description: Cycles of latency for Data RAM accesses. Specifies 3 cells of
0071       read, write and setup latencies. Minimum valid values are 1. Controllers
0072       without setup latency control should use a value of 0.
0073     $ref: /schemas/types.yaml#/definitions/uint32-array
0074     minItems: 2
0075     maxItems: 3
0076     items:
0077       minimum: 0
0078       maximum: 8
0079 
0080   arm,tag-latency:
0081     description: Cycles of latency for Tag RAM accesses. Specifies 3 cells of
0082       read, write and setup latencies. Controllers without setup latency control
0083       should use 0. Controllers without separate read and write Tag RAM latency
0084       values should only use the first cell.
0085     $ref: /schemas/types.yaml#/definitions/uint32-array
0086     minItems: 1
0087     maxItems: 3
0088     items:
0089       minimum: 0
0090       maximum: 8
0091 
0092   arm,dirty-latency:
0093     description: Cycles of latency for Dirty RAMs. This is a single cell.
0094     $ref: /schemas/types.yaml#/definitions/uint32
0095     minimum: 1
0096     maximum: 8
0097 
0098   arm,filter-ranges:
0099     description: <start length> Starting address and length of window to
0100       filter. Addresses in the filter window are directed to the M1 port. Other
0101       addresses will go to the M0 port.
0102     $ref: /schemas/types.yaml#/definitions/uint32-array
0103     items:
0104       minItems: 2
0105       maxItems: 2
0106 
0107   arm,io-coherent:
0108     description: indicates that the system is operating in an hardware
0109       I/O coherent mode. Valid only when the arm,pl310-cache compatible
0110       string is used.
0111     type: boolean
0112 
0113   interrupts:
0114     # Either a single combined interrupt or up to 9 individual interrupts
0115     minItems: 1
0116     maxItems: 9
0117 
0118   cache-id-part:
0119     description: cache id part number to be used if it is not present
0120       on hardware
0121     $ref: /schemas/types.yaml#/definitions/uint32
0122 
0123   wt-override:
0124     description: If present then L2 is forced to Write through mode
0125     type: boolean
0126 
0127   arm,double-linefill:
0128     description: Override double linefill enable setting. Enable if
0129       non-zero, disable if zero.
0130     $ref: /schemas/types.yaml#/definitions/uint32
0131     enum: [0, 1]
0132 
0133   arm,double-linefill-incr:
0134     description: Override double linefill on INCR read. Enable
0135       if non-zero, disable if zero.
0136     $ref: /schemas/types.yaml#/definitions/uint32
0137     enum: [0, 1]
0138 
0139   arm,double-linefill-wrap:
0140     description: Override double linefill on WRAP read. Enable
0141       if non-zero, disable if zero.
0142     $ref: /schemas/types.yaml#/definitions/uint32
0143     enum: [0, 1]
0144 
0145   arm,prefetch-drop:
0146     description: Override prefetch drop enable setting. Enable if non-zero,
0147       disable if zero.
0148     $ref: /schemas/types.yaml#/definitions/uint32
0149     enum: [0, 1]
0150 
0151   arm,prefetch-offset:
0152     description: Override prefetch offset value.
0153     $ref: /schemas/types.yaml#/definitions/uint32
0154     enum: [0, 1, 2, 3, 4, 5, 6, 7, 15, 23, 31]
0155 
0156   arm,shared-override:
0157     description: The default behavior of the L220 or PL310 cache
0158       controllers with respect to the shareable attribute is to transform "normal
0159       memory non-cacheable transactions" into "cacheable no allocate" (for reads)
0160       or "write through no write allocate" (for writes).
0161       On systems where this may cause DMA buffer corruption, this property must
0162       be specified to indicate that such transforms are precluded.
0163     type: boolean
0164 
0165   arm,parity-enable:
0166     description: enable parity checking on the L2 cache (L220 or PL310).
0167     type: boolean
0168 
0169   arm,parity-disable:
0170     description: disable parity checking on the L2 cache (L220 or PL310).
0171     type: boolean
0172 
0173   marvell,ecc-enable:
0174     description: enable ECC protection on the L2 cache
0175     type: boolean
0176 
0177   arm,outer-sync-disable:
0178     description: disable the outer sync operation on the L2 cache.
0179       Some core tiles, especially ARM PB11MPCore have a faulty L220 cache that
0180       will randomly hang unless outer sync operations are disabled.
0181     type: boolean
0182 
0183   prefetch-data:
0184     description: |
0185       Data prefetch. Value: <0> (forcibly disable), <1>
0186       (forcibly enable), property absent (retain settings set by firmware)
0187     $ref: /schemas/types.yaml#/definitions/uint32
0188     enum: [0, 1]
0189 
0190   prefetch-instr:
0191     description: |
0192       Instruction prefetch. Value: <0> (forcibly disable),
0193       <1> (forcibly enable), property absent (retain settings set by
0194       firmware)
0195     $ref: /schemas/types.yaml#/definitions/uint32
0196     enum: [0, 1]
0197 
0198   arm,dynamic-clock-gating:
0199     description: |
0200       L2 dynamic clock gating. Value: <0> (forcibly
0201       disable), <1> (forcibly enable), property absent (OS specific behavior,
0202       preferably retain firmware settings)
0203     $ref: /schemas/types.yaml#/definitions/uint32
0204     enum: [0, 1]
0205 
0206   arm,standby-mode:
0207     description: L2 standby mode enable. Value <0> (forcibly disable),
0208       <1> (forcibly enable), property absent (OS specific behavior,
0209       preferably retain firmware settings)
0210     $ref: /schemas/types.yaml#/definitions/uint32
0211     enum: [0, 1]
0212 
0213   arm,early-bresp-disable:
0214     description: Disable the CA9 optimization Early BRESP (PL310)
0215     type: boolean
0216 
0217   arm,full-line-zero-disable:
0218     description: Disable the CA9 optimization Full line of zero
0219       write (PL310)
0220     type: boolean
0221 
0222 required:
0223   - compatible
0224   - cache-unified
0225   - reg
0226 
0227 additionalProperties: false
0228 
0229 examples:
0230   - |
0231     cache-controller@fff12000 {
0232         compatible = "arm,pl310-cache";
0233         reg = <0xfff12000 0x1000>;
0234         arm,data-latency = <1 1 1>;
0235         arm,tag-latency = <2 2 2>;
0236         arm,filter-ranges = <0x80000000 0x8000000>;
0237         cache-unified;
0238         cache-level = <2>;
0239         interrupts = <45>;
0240     };
0241 
0242 ...