1fac71e4eSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2fac71e4eSEmmanuel Vadot# Copyright (C) 2020 SiFive, Inc. 3fac71e4eSEmmanuel Vadot%YAML 1.2 4fac71e4eSEmmanuel Vadot--- 5fac71e4eSEmmanuel Vadot$id: http://devicetree.org/schemas/cache/sifive,ccache0.yaml# 6fac71e4eSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 7fac71e4eSEmmanuel Vadot 8fac71e4eSEmmanuel Vadottitle: SiFive Composable Cache Controller 9fac71e4eSEmmanuel Vadot 10fac71e4eSEmmanuel Vadotmaintainers: 11fac71e4eSEmmanuel Vadot - Paul Walmsley <paul.walmsley@sifive.com> 12fac71e4eSEmmanuel Vadot 13fac71e4eSEmmanuel Vadotdescription: 14fac71e4eSEmmanuel Vadot The SiFive Composable Cache Controller is used to provide access to fast copies 15fac71e4eSEmmanuel Vadot of memory for masters in a Core Complex. The Composable Cache Controller also 16fac71e4eSEmmanuel Vadot acts as directory-based coherency manager. 17fac71e4eSEmmanuel Vadot All the properties in ePAPR/DeviceTree specification applies for this platform. 18fac71e4eSEmmanuel Vadot 19fac71e4eSEmmanuel Vadotselect: 20fac71e4eSEmmanuel Vadot properties: 21fac71e4eSEmmanuel Vadot compatible: 22fac71e4eSEmmanuel Vadot contains: 23fac71e4eSEmmanuel Vadot enum: 24fac71e4eSEmmanuel Vadot - sifive,ccache0 25fac71e4eSEmmanuel Vadot - sifive,fu540-c000-ccache 26fac71e4eSEmmanuel Vadot - sifive,fu740-c000-ccache 27fac71e4eSEmmanuel Vadot 28fac71e4eSEmmanuel Vadot required: 29fac71e4eSEmmanuel Vadot - compatible 30fac71e4eSEmmanuel Vadot 31fac71e4eSEmmanuel Vadotproperties: 32fac71e4eSEmmanuel Vadot compatible: 33fac71e4eSEmmanuel Vadot oneOf: 34fac71e4eSEmmanuel Vadot - items: 35fac71e4eSEmmanuel Vadot - enum: 36fac71e4eSEmmanuel Vadot - sifive,ccache0 37fac71e4eSEmmanuel Vadot - sifive,fu540-c000-ccache 38fac71e4eSEmmanuel Vadot - sifive,fu740-c000-ccache 39fac71e4eSEmmanuel Vadot - const: cache 40fac71e4eSEmmanuel Vadot - items: 41*8d13bc63SEmmanuel Vadot - enum: 42*8d13bc63SEmmanuel Vadot - starfive,jh7100-ccache 43*8d13bc63SEmmanuel Vadot - starfive,jh7110-ccache 44fac71e4eSEmmanuel Vadot - const: sifive,ccache0 45fac71e4eSEmmanuel Vadot - const: cache 46fac71e4eSEmmanuel Vadot - items: 47fac71e4eSEmmanuel Vadot - const: microchip,mpfs-ccache 48fac71e4eSEmmanuel Vadot - const: sifive,fu540-c000-ccache 49fac71e4eSEmmanuel Vadot - const: cache 50fac71e4eSEmmanuel Vadot 51fac71e4eSEmmanuel Vadot cache-block-size: 52fac71e4eSEmmanuel Vadot const: 64 53fac71e4eSEmmanuel Vadot 54fac71e4eSEmmanuel Vadot cache-level: 55fac71e4eSEmmanuel Vadot enum: [2, 3] 56fac71e4eSEmmanuel Vadot 57fac71e4eSEmmanuel Vadot cache-sets: 58fac71e4eSEmmanuel Vadot enum: [1024, 2048] 59fac71e4eSEmmanuel Vadot 60fac71e4eSEmmanuel Vadot cache-size: 61fac71e4eSEmmanuel Vadot const: 2097152 62fac71e4eSEmmanuel Vadot 63fac71e4eSEmmanuel Vadot cache-unified: true 64fac71e4eSEmmanuel Vadot 65fac71e4eSEmmanuel Vadot interrupts: 66fac71e4eSEmmanuel Vadot minItems: 3 67fac71e4eSEmmanuel Vadot items: 68fac71e4eSEmmanuel Vadot - description: DirError interrupt 69fac71e4eSEmmanuel Vadot - description: DataError interrupt 70fac71e4eSEmmanuel Vadot - description: DataFail interrupt 71fac71e4eSEmmanuel Vadot - description: DirFail interrupt 72fac71e4eSEmmanuel Vadot 73fac71e4eSEmmanuel Vadot reg: 74fac71e4eSEmmanuel Vadot maxItems: 1 75fac71e4eSEmmanuel Vadot 76fac71e4eSEmmanuel Vadot next-level-cache: true 77fac71e4eSEmmanuel Vadot 78fac71e4eSEmmanuel Vadot memory-region: 79fac71e4eSEmmanuel Vadot maxItems: 1 80fac71e4eSEmmanuel Vadot description: | 81fac71e4eSEmmanuel Vadot The reference to the reserved-memory for the L2 Loosely Integrated Memory region. 82fac71e4eSEmmanuel Vadot The reserved memory node should be defined as per the bindings in reserved-memory.txt. 83fac71e4eSEmmanuel Vadot 84fac71e4eSEmmanuel VadotallOf: 85fac71e4eSEmmanuel Vadot - $ref: /schemas/cache-controller.yaml# 86fac71e4eSEmmanuel Vadot 87fac71e4eSEmmanuel Vadot - if: 88fac71e4eSEmmanuel Vadot properties: 89fac71e4eSEmmanuel Vadot compatible: 90fac71e4eSEmmanuel Vadot contains: 91fac71e4eSEmmanuel Vadot enum: 92fac71e4eSEmmanuel Vadot - sifive,fu740-c000-ccache 93*8d13bc63SEmmanuel Vadot - starfive,jh7100-ccache 94fac71e4eSEmmanuel Vadot - starfive,jh7110-ccache 95fac71e4eSEmmanuel Vadot - microchip,mpfs-ccache 96fac71e4eSEmmanuel Vadot 97fac71e4eSEmmanuel Vadot then: 98fac71e4eSEmmanuel Vadot properties: 99fac71e4eSEmmanuel Vadot interrupts: 100fac71e4eSEmmanuel Vadot description: | 101fac71e4eSEmmanuel Vadot Must contain entries for DirError, DataError, DataFail, DirFail signals. 102fac71e4eSEmmanuel Vadot minItems: 4 103fac71e4eSEmmanuel Vadot 104fac71e4eSEmmanuel Vadot else: 105fac71e4eSEmmanuel Vadot properties: 106fac71e4eSEmmanuel Vadot interrupts: 107fac71e4eSEmmanuel Vadot description: | 108fac71e4eSEmmanuel Vadot Must contain entries for DirError, DataError and DataFail signals. 109fac71e4eSEmmanuel Vadot maxItems: 3 110fac71e4eSEmmanuel Vadot 111fac71e4eSEmmanuel Vadot - if: 112fac71e4eSEmmanuel Vadot properties: 113fac71e4eSEmmanuel Vadot compatible: 114fac71e4eSEmmanuel Vadot contains: 115fac71e4eSEmmanuel Vadot enum: 116fac71e4eSEmmanuel Vadot - sifive,fu740-c000-ccache 117*8d13bc63SEmmanuel Vadot - starfive,jh7100-ccache 118fac71e4eSEmmanuel Vadot - starfive,jh7110-ccache 119fac71e4eSEmmanuel Vadot 120fac71e4eSEmmanuel Vadot then: 121fac71e4eSEmmanuel Vadot properties: 122fac71e4eSEmmanuel Vadot cache-sets: 123fac71e4eSEmmanuel Vadot const: 2048 124fac71e4eSEmmanuel Vadot 125fac71e4eSEmmanuel Vadot else: 126fac71e4eSEmmanuel Vadot properties: 127fac71e4eSEmmanuel Vadot cache-sets: 128fac71e4eSEmmanuel Vadot const: 1024 129fac71e4eSEmmanuel Vadot 130fac71e4eSEmmanuel Vadot - if: 131fac71e4eSEmmanuel Vadot properties: 132fac71e4eSEmmanuel Vadot compatible: 133fac71e4eSEmmanuel Vadot contains: 134fac71e4eSEmmanuel Vadot const: sifive,ccache0 135fac71e4eSEmmanuel Vadot 136fac71e4eSEmmanuel Vadot then: 137fac71e4eSEmmanuel Vadot properties: 138fac71e4eSEmmanuel Vadot cache-level: 139fac71e4eSEmmanuel Vadot enum: [2, 3] 140fac71e4eSEmmanuel Vadot 141fac71e4eSEmmanuel Vadot else: 142fac71e4eSEmmanuel Vadot properties: 143fac71e4eSEmmanuel Vadot cache-level: 144fac71e4eSEmmanuel Vadot const: 2 145fac71e4eSEmmanuel Vadot 146fac71e4eSEmmanuel VadotadditionalProperties: false 147fac71e4eSEmmanuel Vadot 148fac71e4eSEmmanuel Vadotrequired: 149fac71e4eSEmmanuel Vadot - compatible 150fac71e4eSEmmanuel Vadot - cache-block-size 151fac71e4eSEmmanuel Vadot - cache-level 152fac71e4eSEmmanuel Vadot - cache-sets 153fac71e4eSEmmanuel Vadot - cache-size 154fac71e4eSEmmanuel Vadot - cache-unified 155fac71e4eSEmmanuel Vadot - interrupts 156fac71e4eSEmmanuel Vadot - reg 157fac71e4eSEmmanuel Vadot 158fac71e4eSEmmanuel Vadotexamples: 159fac71e4eSEmmanuel Vadot - | 160fac71e4eSEmmanuel Vadot cache-controller@2010000 { 161fac71e4eSEmmanuel Vadot compatible = "sifive,fu540-c000-ccache", "cache"; 162fac71e4eSEmmanuel Vadot cache-block-size = <64>; 163fac71e4eSEmmanuel Vadot cache-level = <2>; 164fac71e4eSEmmanuel Vadot cache-sets = <1024>; 165fac71e4eSEmmanuel Vadot cache-size = <2097152>; 166fac71e4eSEmmanuel Vadot cache-unified; 167fac71e4eSEmmanuel Vadot reg = <0x2010000 0x1000>; 168fac71e4eSEmmanuel Vadot interrupt-parent = <&plic0>; 169fac71e4eSEmmanuel Vadot interrupts = <1>, 170fac71e4eSEmmanuel Vadot <2>, 171fac71e4eSEmmanuel Vadot <3>; 172fac71e4eSEmmanuel Vadot next-level-cache = <&L25>; 173fac71e4eSEmmanuel Vadot memory-region = <&l2_lim>; 174fac71e4eSEmmanuel Vadot }; 175