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