Path: blob/master/Documentation/devicetree/bindings/cache/l2c2x0.yaml
26307 views
# SPDX-License-Identifier: GPL-2.01%YAML 1.22---3$id: http://devicetree.org/schemas/cache/l2c2x0.yaml#4$schema: http://devicetree.org/meta-schemas/core.yaml#56title: ARM L2 Cache Controller78maintainers:9- Rob Herring <robh@kernel.org>1011description: |+12ARM cores often have a separate L2C210/L2C220/L2C310 (also known as PL210/13PL220/PL310 and variants) based level 2 cache controller. All these various14implementations of the L2 cache controller have compatible programming15models (Note 1). Some of the properties that are just prefixed "cache-*" are16taken from section 3.7.3 of the Devicetree Specification which can be found17at:18https://www.devicetree.org/specifications/1920Note 1: The description in this document doesn't apply to integrated L221cache controllers as found in e.g. Cortex-A15/A7/A57/A53. These22integrated L2 controllers are assumed to be all preconfigured by23early secure boot code. Thus no need to deal with their configuration24in the kernel at all.2526allOf:27- $ref: /schemas/cache-controller.yaml#2829properties:30compatible:31oneOf:32- enum:33- arm,pl310-cache34- arm,l220-cache35- arm,l210-cache36# DEPRECATED by "brcm,bcm11351-a2-pl310-cache"37- bcm,bcm11351-a2-pl310-cache38# For Broadcom bcm11351 chipset where an39# offset needs to be added to the address before passing down to the L240# cache controller41- brcm,bcm11351-a2-pl310-cache42# Marvell Controller designed to be43# compatible with the ARM one, with system cache mode (meaning44# maintenance operations on L1 are broadcasted to the L2 and L245# performs the same operation).46- marvell,aurora-system-cache47# Marvell Controller designed to be48# compatible with the ARM one with outer cache mode.49- marvell,aurora-outer-cache50- items:51# Marvell Tauros3 cache controller, compatible52# with arm,pl310-cache controller.53- const: marvell,tauros3-cache54- const: arm,pl310-cache5556cache-level:57const: 25859cache-unified: true60cache-size: true61cache-sets: true62cache-block-size: true63cache-line-size: true6465reg:66maxItems: 16768arm,data-latency:69description: Cycles of latency for Data RAM accesses. Specifies 3 cells of70read, write and setup latencies. Minimum valid values are 1. Controllers71without setup latency control should use a value of 0.72$ref: /schemas/types.yaml#/definitions/uint32-array73minItems: 274maxItems: 375items:76minimum: 077maximum: 87879arm,tag-latency:80description: Cycles of latency for Tag RAM accesses. Specifies 3 cells of81read, write and setup latencies. Controllers without setup latency control82should use 0. Controllers without separate read and write Tag RAM latency83values should only use the first cell.84$ref: /schemas/types.yaml#/definitions/uint32-array85minItems: 186maxItems: 387items:88minimum: 089maximum: 89091arm,dirty-latency:92description: Cycles of latency for Dirty RAMs. This is a single cell.93$ref: /schemas/types.yaml#/definitions/uint3294minimum: 195maximum: 89697arm,filter-ranges:98description: <start length> Starting address and length of window to99filter. Addresses in the filter window are directed to the M1 port. Other100addresses will go to the M0 port.101$ref: /schemas/types.yaml#/definitions/uint32-array102minItems: 2103maxItems: 2104105arm,io-coherent:106description: indicates that the system is operating in an hardware107I/O coherent mode. Valid only when the arm,pl310-cache compatible108string is used.109type: boolean110111interrupts:112# Either a single combined interrupt or up to 9 individual interrupts113minItems: 1114maxItems: 9115116cache-id-part:117description: cache id part number to be used if it is not present118on hardware119$ref: /schemas/types.yaml#/definitions/uint32120121wt-override:122description: If present then L2 is forced to Write through mode123type: boolean124125arm,double-linefill:126description: Override double linefill enable setting. Enable if127non-zero, disable if zero.128$ref: /schemas/types.yaml#/definitions/uint32129enum: [0, 1]130131arm,double-linefill-incr:132description: Override double linefill on INCR read. Enable133if non-zero, disable if zero.134$ref: /schemas/types.yaml#/definitions/uint32135enum: [0, 1]136137arm,double-linefill-wrap:138description: Override double linefill on WRAP read. Enable139if non-zero, disable if zero.140$ref: /schemas/types.yaml#/definitions/uint32141enum: [0, 1]142143arm,prefetch-drop:144description: Override prefetch drop enable setting. Enable if non-zero,145disable if zero.146$ref: /schemas/types.yaml#/definitions/uint32147enum: [0, 1]148149arm,prefetch-offset:150description: Override prefetch offset value.151$ref: /schemas/types.yaml#/definitions/uint32152enum: [0, 1, 2, 3, 4, 5, 6, 7, 15, 23, 31]153154arm,shared-override:155description: The default behavior of the L220 or PL310 cache156controllers with respect to the shareable attribute is to transform "normal157memory non-cacheable transactions" into "cacheable no allocate" (for reads)158or "write through no write allocate" (for writes).159On systems where this may cause DMA buffer corruption, this property must160be specified to indicate that such transforms are precluded.161type: boolean162163arm,parity-enable:164description: enable parity checking on the L2 cache (L220 or PL310).165type: boolean166167arm,parity-disable:168description: disable parity checking on the L2 cache (L220 or PL310).169type: boolean170171marvell,ecc-enable:172description: enable ECC protection on the L2 cache173type: boolean174175arm,outer-sync-disable:176description: disable the outer sync operation on the L2 cache.177Some core tiles, especially ARM PB11MPCore have a faulty L220 cache that178will randomly hang unless outer sync operations are disabled.179type: boolean180181prefetch-data:182description: |183Data prefetch. Value: <0> (forcibly disable), <1>184(forcibly enable), property absent (retain settings set by firmware)185$ref: /schemas/types.yaml#/definitions/uint32186enum: [0, 1]187188prefetch-instr:189description: |190Instruction prefetch. Value: <0> (forcibly disable),191<1> (forcibly enable), property absent (retain settings set by192firmware)193$ref: /schemas/types.yaml#/definitions/uint32194enum: [0, 1]195196arm,dynamic-clock-gating:197description: |198L2 dynamic clock gating. Value: <0> (forcibly199disable), <1> (forcibly enable), property absent (OS specific behavior,200preferably retain firmware settings)201$ref: /schemas/types.yaml#/definitions/uint32202enum: [0, 1]203204arm,standby-mode:205description: L2 standby mode enable. Value <0> (forcibly disable),206<1> (forcibly enable), property absent (OS specific behavior,207preferably retain firmware settings)208$ref: /schemas/types.yaml#/definitions/uint32209enum: [0, 1]210211arm,early-bresp-disable:212description: Disable the CA9 optimization Early BRESP (PL310)213type: boolean214215arm,full-line-zero-disable:216description: Disable the CA9 optimization Full line of zero217write (PL310)218type: boolean219220required:221- compatible222- cache-unified223- reg224225additionalProperties: false226227examples:228- |229cache-controller@fff12000 {230compatible = "arm,pl310-cache";231reg = <0xfff12000 0x1000>;232arm,data-latency = <1 1 1>;233arm,tag-latency = <2 2 2>;234arm,filter-ranges = <0x80000000 0x8000000>;235cache-unified;236cache-level = <2>;237interrupts = <45>;238};239240...241242243