
Fix device tree schema validation error messages for the SiFive
Unmatched: ' cache-sets:0:0: 1024 was expected'.
The existing bindings allow for just 1024 cache-sets but the fu740 on
Unmatched the has 2048 cache-sets. The ISA itself permits any arbitrary
power of two, however this is not supported by dt-schema. The RTL for
the IP, to which the number of cache-sets is a tunable parameter, has
been released publicly so speculatively adding a small number of
"reasonable" values seems unwise also.
Instead, as the binding only supports two distinct controllers: add 2048
and explicitly lock it to the fu740's l2 cache while limiting 1024 to
the l2 cache on the fu540.
Fixes: af951c3a11
("dt-bindings: riscv: Update l2 cache DT documentation to add support for SiFive FU740")
Reported-by: Atul Khare <atulkhare@rivosinc.com>
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20220803185359.942928-1-mail@conchuod.ie
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
128 lines
2.7 KiB
YAML
128 lines
2.7 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
|
# Copyright (C) 2020 SiFive, Inc.
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/riscv/sifive-l2-cache.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: SiFive L2 Cache Controller
|
|
|
|
maintainers:
|
|
- Sagar Kadam <sagar.kadam@sifive.com>
|
|
- Paul Walmsley <paul.walmsley@sifive.com>
|
|
|
|
description:
|
|
The SiFive Level 2 Cache Controller is used to provide access to fast copies
|
|
of memory for masters in a Core Complex. The Level 2 Cache Controller also
|
|
acts as directory-based coherency manager.
|
|
All the properties in ePAPR/DeviceTree specification applies for this platform.
|
|
|
|
allOf:
|
|
- $ref: /schemas/cache-controller.yaml#
|
|
|
|
select:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- sifive,fu540-c000-ccache
|
|
- sifive,fu740-c000-ccache
|
|
|
|
required:
|
|
- compatible
|
|
|
|
properties:
|
|
compatible:
|
|
items:
|
|
- enum:
|
|
- sifive,fu540-c000-ccache
|
|
- sifive,fu740-c000-ccache
|
|
- const: cache
|
|
|
|
cache-block-size:
|
|
const: 64
|
|
|
|
cache-level:
|
|
const: 2
|
|
|
|
cache-sets:
|
|
enum: [1024, 2048]
|
|
|
|
cache-size:
|
|
const: 2097152
|
|
|
|
cache-unified: true
|
|
|
|
interrupts:
|
|
minItems: 3
|
|
items:
|
|
- description: DirError interrupt
|
|
- description: DataError interrupt
|
|
- description: DataFail interrupt
|
|
- description: DirFail interrupt
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
next-level-cache: true
|
|
|
|
memory-region:
|
|
maxItems: 1
|
|
description: |
|
|
The reference to the reserved-memory for the L2 Loosely Integrated Memory region.
|
|
The reserved memory node should be defined as per the bindings in reserved-memory.txt.
|
|
|
|
if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: sifive,fu540-c000-ccache
|
|
|
|
then:
|
|
properties:
|
|
interrupts:
|
|
description: |
|
|
Must contain entries for DirError, DataError and DataFail signals.
|
|
maxItems: 3
|
|
cache-sets:
|
|
const: 1024
|
|
|
|
else:
|
|
properties:
|
|
interrupts:
|
|
description: |
|
|
Must contain entries for DirError, DataError, DataFail, DirFail signals.
|
|
minItems: 4
|
|
cache-sets:
|
|
const: 2048
|
|
|
|
additionalProperties: false
|
|
|
|
required:
|
|
- compatible
|
|
- cache-block-size
|
|
- cache-level
|
|
- cache-sets
|
|
- cache-size
|
|
- cache-unified
|
|
- interrupts
|
|
- reg
|
|
|
|
examples:
|
|
- |
|
|
cache-controller@2010000 {
|
|
compatible = "sifive,fu540-c000-ccache", "cache";
|
|
cache-block-size = <64>;
|
|
cache-level = <2>;
|
|
cache-sets = <1024>;
|
|
cache-size = <2097152>;
|
|
cache-unified;
|
|
reg = <0x2010000 0x1000>;
|
|
interrupt-parent = <&plic0>;
|
|
interrupts = <1>,
|
|
<2>,
|
|
<3>;
|
|
next-level-cache = <&L25>;
|
|
memory-region = <&l2_lim>;
|
|
};
|