162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/cache/l2c2x0.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: ARM L2 Cache Controller 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Rob Herring <robh@kernel.org> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cidescription: |+ 1362306a36Sopenharmony_ci ARM cores often have a separate L2C210/L2C220/L2C310 (also known as PL210/ 1462306a36Sopenharmony_ci PL220/PL310 and variants) based level 2 cache controller. All these various 1562306a36Sopenharmony_ci implementations of the L2 cache controller have compatible programming 1662306a36Sopenharmony_ci models (Note 1). Some of the properties that are just prefixed "cache-*" are 1762306a36Sopenharmony_ci taken from section 3.7.3 of the Devicetree Specification which can be found 1862306a36Sopenharmony_ci at: 1962306a36Sopenharmony_ci https://www.devicetree.org/specifications/ 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci Note 1: The description in this document doesn't apply to integrated L2 2262306a36Sopenharmony_ci cache controllers as found in e.g. Cortex-A15/A7/A57/A53. These 2362306a36Sopenharmony_ci integrated L2 controllers are assumed to be all preconfigured by 2462306a36Sopenharmony_ci early secure boot code. Thus no need to deal with their configuration 2562306a36Sopenharmony_ci in the kernel at all. 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ciallOf: 2862306a36Sopenharmony_ci - $ref: /schemas/cache-controller.yaml# 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ciproperties: 3162306a36Sopenharmony_ci compatible: 3262306a36Sopenharmony_ci oneOf: 3362306a36Sopenharmony_ci - enum: 3462306a36Sopenharmony_ci - arm,pl310-cache 3562306a36Sopenharmony_ci - arm,l220-cache 3662306a36Sopenharmony_ci - arm,l210-cache 3762306a36Sopenharmony_ci # DEPRECATED by "brcm,bcm11351-a2-pl310-cache" 3862306a36Sopenharmony_ci - bcm,bcm11351-a2-pl310-cache 3962306a36Sopenharmony_ci # For Broadcom bcm11351 chipset where an 4062306a36Sopenharmony_ci # offset needs to be added to the address before passing down to the L2 4162306a36Sopenharmony_ci # cache controller 4262306a36Sopenharmony_ci - brcm,bcm11351-a2-pl310-cache 4362306a36Sopenharmony_ci # Marvell Controller designed to be 4462306a36Sopenharmony_ci # compatible with the ARM one, with system cache mode (meaning 4562306a36Sopenharmony_ci # maintenance operations on L1 are broadcasted to the L2 and L2 4662306a36Sopenharmony_ci # performs the same operation). 4762306a36Sopenharmony_ci - marvell,aurora-system-cache 4862306a36Sopenharmony_ci # Marvell Controller designed to be 4962306a36Sopenharmony_ci # compatible with the ARM one with outer cache mode. 5062306a36Sopenharmony_ci - marvell,aurora-outer-cache 5162306a36Sopenharmony_ci - items: 5262306a36Sopenharmony_ci # Marvell Tauros3 cache controller, compatible 5362306a36Sopenharmony_ci # with arm,pl310-cache controller. 5462306a36Sopenharmony_ci - const: marvell,tauros3-cache 5562306a36Sopenharmony_ci - const: arm,pl310-cache 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci cache-level: 5862306a36Sopenharmony_ci const: 2 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci cache-unified: true 6162306a36Sopenharmony_ci cache-size: true 6262306a36Sopenharmony_ci cache-sets: true 6362306a36Sopenharmony_ci cache-block-size: true 6462306a36Sopenharmony_ci cache-line-size: true 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci reg: 6762306a36Sopenharmony_ci maxItems: 1 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci arm,data-latency: 7062306a36Sopenharmony_ci description: Cycles of latency for Data RAM accesses. Specifies 3 cells of 7162306a36Sopenharmony_ci read, write and setup latencies. Minimum valid values are 1. Controllers 7262306a36Sopenharmony_ci without setup latency control should use a value of 0. 7362306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32-array 7462306a36Sopenharmony_ci minItems: 2 7562306a36Sopenharmony_ci maxItems: 3 7662306a36Sopenharmony_ci items: 7762306a36Sopenharmony_ci minimum: 0 7862306a36Sopenharmony_ci maximum: 8 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci arm,tag-latency: 8162306a36Sopenharmony_ci description: Cycles of latency for Tag RAM accesses. Specifies 3 cells of 8262306a36Sopenharmony_ci read, write and setup latencies. Controllers without setup latency control 8362306a36Sopenharmony_ci should use 0. Controllers without separate read and write Tag RAM latency 8462306a36Sopenharmony_ci values should only use the first cell. 8562306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32-array 8662306a36Sopenharmony_ci minItems: 1 8762306a36Sopenharmony_ci maxItems: 3 8862306a36Sopenharmony_ci items: 8962306a36Sopenharmony_ci minimum: 0 9062306a36Sopenharmony_ci maximum: 8 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci arm,dirty-latency: 9362306a36Sopenharmony_ci description: Cycles of latency for Dirty RAMs. This is a single cell. 9462306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 9562306a36Sopenharmony_ci minimum: 1 9662306a36Sopenharmony_ci maximum: 8 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_ci arm,filter-ranges: 9962306a36Sopenharmony_ci description: <start length> Starting address and length of window to 10062306a36Sopenharmony_ci filter. Addresses in the filter window are directed to the M1 port. Other 10162306a36Sopenharmony_ci addresses will go to the M0 port. 10262306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32-array 10362306a36Sopenharmony_ci items: 10462306a36Sopenharmony_ci minItems: 2 10562306a36Sopenharmony_ci maxItems: 2 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ci arm,io-coherent: 10862306a36Sopenharmony_ci description: indicates that the system is operating in an hardware 10962306a36Sopenharmony_ci I/O coherent mode. Valid only when the arm,pl310-cache compatible 11062306a36Sopenharmony_ci string is used. 11162306a36Sopenharmony_ci type: boolean 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ci interrupts: 11462306a36Sopenharmony_ci # Either a single combined interrupt or up to 9 individual interrupts 11562306a36Sopenharmony_ci minItems: 1 11662306a36Sopenharmony_ci maxItems: 9 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_ci cache-id-part: 11962306a36Sopenharmony_ci description: cache id part number to be used if it is not present 12062306a36Sopenharmony_ci on hardware 12162306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci wt-override: 12462306a36Sopenharmony_ci description: If present then L2 is forced to Write through mode 12562306a36Sopenharmony_ci type: boolean 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ci arm,double-linefill: 12862306a36Sopenharmony_ci description: Override double linefill enable setting. Enable if 12962306a36Sopenharmony_ci non-zero, disable if zero. 13062306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 13162306a36Sopenharmony_ci enum: [0, 1] 13262306a36Sopenharmony_ci 13362306a36Sopenharmony_ci arm,double-linefill-incr: 13462306a36Sopenharmony_ci description: Override double linefill on INCR read. Enable 13562306a36Sopenharmony_ci if non-zero, disable if zero. 13662306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 13762306a36Sopenharmony_ci enum: [0, 1] 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ci arm,double-linefill-wrap: 14062306a36Sopenharmony_ci description: Override double linefill on WRAP read. Enable 14162306a36Sopenharmony_ci if non-zero, disable if zero. 14262306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 14362306a36Sopenharmony_ci enum: [0, 1] 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_ci arm,prefetch-drop: 14662306a36Sopenharmony_ci description: Override prefetch drop enable setting. Enable if non-zero, 14762306a36Sopenharmony_ci disable if zero. 14862306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 14962306a36Sopenharmony_ci enum: [0, 1] 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_ci arm,prefetch-offset: 15262306a36Sopenharmony_ci description: Override prefetch offset value. 15362306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 15462306a36Sopenharmony_ci enum: [0, 1, 2, 3, 4, 5, 6, 7, 15, 23, 31] 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_ci arm,shared-override: 15762306a36Sopenharmony_ci description: The default behavior of the L220 or PL310 cache 15862306a36Sopenharmony_ci controllers with respect to the shareable attribute is to transform "normal 15962306a36Sopenharmony_ci memory non-cacheable transactions" into "cacheable no allocate" (for reads) 16062306a36Sopenharmony_ci or "write through no write allocate" (for writes). 16162306a36Sopenharmony_ci On systems where this may cause DMA buffer corruption, this property must 16262306a36Sopenharmony_ci be specified to indicate that such transforms are precluded. 16362306a36Sopenharmony_ci type: boolean 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ci arm,parity-enable: 16662306a36Sopenharmony_ci description: enable parity checking on the L2 cache (L220 or PL310). 16762306a36Sopenharmony_ci type: boolean 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_ci arm,parity-disable: 17062306a36Sopenharmony_ci description: disable parity checking on the L2 cache (L220 or PL310). 17162306a36Sopenharmony_ci type: boolean 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_ci marvell,ecc-enable: 17462306a36Sopenharmony_ci description: enable ECC protection on the L2 cache 17562306a36Sopenharmony_ci type: boolean 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_ci arm,outer-sync-disable: 17862306a36Sopenharmony_ci description: disable the outer sync operation on the L2 cache. 17962306a36Sopenharmony_ci Some core tiles, especially ARM PB11MPCore have a faulty L220 cache that 18062306a36Sopenharmony_ci will randomly hang unless outer sync operations are disabled. 18162306a36Sopenharmony_ci type: boolean 18262306a36Sopenharmony_ci 18362306a36Sopenharmony_ci prefetch-data: 18462306a36Sopenharmony_ci description: | 18562306a36Sopenharmony_ci Data prefetch. Value: <0> (forcibly disable), <1> 18662306a36Sopenharmony_ci (forcibly enable), property absent (retain settings set by firmware) 18762306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 18862306a36Sopenharmony_ci enum: [0, 1] 18962306a36Sopenharmony_ci 19062306a36Sopenharmony_ci prefetch-instr: 19162306a36Sopenharmony_ci description: | 19262306a36Sopenharmony_ci Instruction prefetch. Value: <0> (forcibly disable), 19362306a36Sopenharmony_ci <1> (forcibly enable), property absent (retain settings set by 19462306a36Sopenharmony_ci firmware) 19562306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 19662306a36Sopenharmony_ci enum: [0, 1] 19762306a36Sopenharmony_ci 19862306a36Sopenharmony_ci arm,dynamic-clock-gating: 19962306a36Sopenharmony_ci description: | 20062306a36Sopenharmony_ci L2 dynamic clock gating. Value: <0> (forcibly 20162306a36Sopenharmony_ci disable), <1> (forcibly enable), property absent (OS specific behavior, 20262306a36Sopenharmony_ci preferably retain firmware settings) 20362306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 20462306a36Sopenharmony_ci enum: [0, 1] 20562306a36Sopenharmony_ci 20662306a36Sopenharmony_ci arm,standby-mode: 20762306a36Sopenharmony_ci description: L2 standby mode enable. Value <0> (forcibly disable), 20862306a36Sopenharmony_ci <1> (forcibly enable), property absent (OS specific behavior, 20962306a36Sopenharmony_ci preferably retain firmware settings) 21062306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 21162306a36Sopenharmony_ci enum: [0, 1] 21262306a36Sopenharmony_ci 21362306a36Sopenharmony_ci arm,early-bresp-disable: 21462306a36Sopenharmony_ci description: Disable the CA9 optimization Early BRESP (PL310) 21562306a36Sopenharmony_ci type: boolean 21662306a36Sopenharmony_ci 21762306a36Sopenharmony_ci arm,full-line-zero-disable: 21862306a36Sopenharmony_ci description: Disable the CA9 optimization Full line of zero 21962306a36Sopenharmony_ci write (PL310) 22062306a36Sopenharmony_ci type: boolean 22162306a36Sopenharmony_ci 22262306a36Sopenharmony_cirequired: 22362306a36Sopenharmony_ci - compatible 22462306a36Sopenharmony_ci - cache-unified 22562306a36Sopenharmony_ci - reg 22662306a36Sopenharmony_ci 22762306a36Sopenharmony_ciadditionalProperties: false 22862306a36Sopenharmony_ci 22962306a36Sopenharmony_ciexamples: 23062306a36Sopenharmony_ci - | 23162306a36Sopenharmony_ci cache-controller@fff12000 { 23262306a36Sopenharmony_ci compatible = "arm,pl310-cache"; 23362306a36Sopenharmony_ci reg = <0xfff12000 0x1000>; 23462306a36Sopenharmony_ci arm,data-latency = <1 1 1>; 23562306a36Sopenharmony_ci arm,tag-latency = <2 2 2>; 23662306a36Sopenharmony_ci arm,filter-ranges = <0x80000000 0x8000000>; 23762306a36Sopenharmony_ci cache-unified; 23862306a36Sopenharmony_ci cache-level = <2>; 23962306a36Sopenharmony_ci interrupts = <45>; 24062306a36Sopenharmony_ci }; 24162306a36Sopenharmony_ci 24262306a36Sopenharmony_ci... 243