| # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) | |
| # Copyright (C) 2020 SiFive, Inc. | |
| %YAML 1.2 | |
| --- | |
| $id: http://devicetree.org/schemas/cache/sifive,ccache0.yaml# | |
| $schema: http://devicetree.org/meta-schemas/core.yaml# | |
| title: SiFive Composable Cache Controller | |
| maintainers: | |
| - Paul Walmsley <paul.walmsley@sifive.com> | |
| description: | |
| The SiFive Composable Cache Controller is used to provide access to fast copies | |
| of memory for masters in a Core Complex. The Composable Cache Controller also | |
| acts as directory-based coherency manager. | |
| All the properties in ePAPR/DeviceTree specification applies for this platform. | |
| select: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - sifive,ccache0 | |
| - sifive,fu540-c000-ccache | |
| - sifive,fu740-c000-ccache | |
| required: | |
| - compatible | |
| properties: | |
| compatible: | |
| oneOf: | |
| - items: | |
| - enum: | |
| - sifive,ccache0 | |
| - sifive,fu540-c000-ccache | |
| - sifive,fu740-c000-ccache | |
| - const: cache | |
| - items: | |
| - enum: | |
| - eswin,eic7700-l3-cache | |
| - starfive,jh7100-ccache | |
| - starfive,jh7110-ccache | |
| - const: sifive,ccache0 | |
| - const: cache | |
| - items: | |
| - const: microchip,mpfs-ccache | |
| - const: sifive,fu540-c000-ccache | |
| - const: cache | |
| - items: | |
| - const: microchip,pic64gx-ccache | |
| - const: microchip,mpfs-ccache | |
| - const: sifive,fu540-c000-ccache | |
| - const: cache | |
| cache-block-size: | |
| const: 64 | |
| cache-level: | |
| enum: [2, 3] | |
| cache-sets: | |
| enum: [1024, 2048, 4096] | |
| cache-size: | |
| enum: [2097152, 4194304] | |
| 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. | |
| allOf: | |
| - $ref: /schemas/cache-controller.yaml# | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - eswin,eic7700-l3-cache | |
| - sifive,fu740-c000-ccache | |
| - starfive,jh7100-ccache | |
| - starfive,jh7110-ccache | |
| - microchip,mpfs-ccache | |
| then: | |
| properties: | |
| interrupts: | |
| description: | | |
| Must contain entries for DirError, DataError, DataFail, DirFail signals. | |
| minItems: 4 | |
| else: | |
| properties: | |
| interrupts: | |
| description: | | |
| Must contain entries for DirError, DataError and DataFail signals. | |
| maxItems: 3 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| const: eswin,eic7700-l3-cache | |
| then: | |
| properties: | |
| cache-size: | |
| const: 4194304 | |
| else: | |
| properties: | |
| cache-size: | |
| const: 2097152 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - sifive,fu740-c000-ccache | |
| - starfive,jh7100-ccache | |
| - starfive,jh7110-ccache | |
| then: | |
| properties: | |
| cache-sets: | |
| const: 2048 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - microchip,mpfs-ccache | |
| - sifive,fu540-c000-ccache | |
| then: | |
| properties: | |
| cache-sets: | |
| const: 1024 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - eswin,eic7700-l3-cache | |
| then: | |
| properties: | |
| cache-sets: | |
| const: 4096 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| const: sifive,ccache0 | |
| then: | |
| properties: | |
| cache-level: | |
| enum: [2, 3] | |
| else: | |
| properties: | |
| cache-level: | |
| const: 2 | |
| 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>; | |
| }; |