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