xref: /freebsd/sys/contrib/device-tree/Bindings/riscv/sifive,ccache0.yaml (revision cb7aa33ac6cd46a5434798e50363136e64f3ae98)
17ef62cebSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
27ef62cebSEmmanuel Vadot# Copyright (C) 2020 SiFive, Inc.
37ef62cebSEmmanuel Vadot%YAML 1.2
47ef62cebSEmmanuel Vadot---
57ef62cebSEmmanuel Vadot$id: http://devicetree.org/schemas/riscv/sifive,ccache0.yaml#
67ef62cebSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
77ef62cebSEmmanuel Vadot
87ef62cebSEmmanuel Vadottitle: SiFive Composable Cache Controller
97ef62cebSEmmanuel Vadot
107ef62cebSEmmanuel Vadotmaintainers:
117ef62cebSEmmanuel Vadot  - Paul Walmsley <paul.walmsley@sifive.com>
127ef62cebSEmmanuel Vadot
137ef62cebSEmmanuel Vadotdescription:
147ef62cebSEmmanuel Vadot  The SiFive Composable Cache Controller is used to provide access to fast copies
157ef62cebSEmmanuel Vadot  of memory for masters in a Core Complex. The Composable Cache Controller also
167ef62cebSEmmanuel Vadot  acts as directory-based coherency manager.
177ef62cebSEmmanuel Vadot  All the properties in ePAPR/DeviceTree specification applies for this platform.
187ef62cebSEmmanuel Vadot
197ef62cebSEmmanuel Vadotselect:
207ef62cebSEmmanuel Vadot  properties:
217ef62cebSEmmanuel Vadot    compatible:
227ef62cebSEmmanuel Vadot      contains:
237ef62cebSEmmanuel Vadot        enum:
247ef62cebSEmmanuel Vadot          - sifive,ccache0
257ef62cebSEmmanuel Vadot          - sifive,fu540-c000-ccache
267ef62cebSEmmanuel Vadot          - sifive,fu740-c000-ccache
277ef62cebSEmmanuel Vadot
287ef62cebSEmmanuel Vadot  required:
297ef62cebSEmmanuel Vadot    - compatible
307ef62cebSEmmanuel Vadot
317ef62cebSEmmanuel Vadotproperties:
327ef62cebSEmmanuel Vadot  compatible:
337ef62cebSEmmanuel Vadot    oneOf:
347ef62cebSEmmanuel Vadot      - items:
357ef62cebSEmmanuel Vadot          - enum:
367ef62cebSEmmanuel Vadot              - sifive,ccache0
377ef62cebSEmmanuel Vadot              - sifive,fu540-c000-ccache
387ef62cebSEmmanuel Vadot              - sifive,fu740-c000-ccache
397ef62cebSEmmanuel Vadot          - const: cache
407ef62cebSEmmanuel Vadot      - items:
41*cb7aa33aSEmmanuel Vadot          - const: starfive,jh7110-ccache
42*cb7aa33aSEmmanuel Vadot          - const: sifive,ccache0
43*cb7aa33aSEmmanuel Vadot          - const: cache
44*cb7aa33aSEmmanuel Vadot      - items:
457ef62cebSEmmanuel Vadot          - const: microchip,mpfs-ccache
467ef62cebSEmmanuel Vadot          - const: sifive,fu540-c000-ccache
477ef62cebSEmmanuel Vadot          - const: cache
487ef62cebSEmmanuel Vadot
497ef62cebSEmmanuel Vadot  cache-block-size:
507ef62cebSEmmanuel Vadot    const: 64
517ef62cebSEmmanuel Vadot
527ef62cebSEmmanuel Vadot  cache-level:
537ef62cebSEmmanuel Vadot    enum: [2, 3]
547ef62cebSEmmanuel Vadot
557ef62cebSEmmanuel Vadot  cache-sets:
567ef62cebSEmmanuel Vadot    enum: [1024, 2048]
577ef62cebSEmmanuel Vadot
587ef62cebSEmmanuel Vadot  cache-size:
597ef62cebSEmmanuel Vadot    const: 2097152
607ef62cebSEmmanuel Vadot
617ef62cebSEmmanuel Vadot  cache-unified: true
627ef62cebSEmmanuel Vadot
637ef62cebSEmmanuel Vadot  interrupts:
647ef62cebSEmmanuel Vadot    minItems: 3
657ef62cebSEmmanuel Vadot    items:
667ef62cebSEmmanuel Vadot      - description: DirError interrupt
677ef62cebSEmmanuel Vadot      - description: DataError interrupt
687ef62cebSEmmanuel Vadot      - description: DataFail interrupt
697ef62cebSEmmanuel Vadot      - description: DirFail interrupt
707ef62cebSEmmanuel Vadot
717ef62cebSEmmanuel Vadot  reg:
727ef62cebSEmmanuel Vadot    maxItems: 1
737ef62cebSEmmanuel Vadot
747ef62cebSEmmanuel Vadot  next-level-cache: true
757ef62cebSEmmanuel Vadot
767ef62cebSEmmanuel Vadot  memory-region:
777ef62cebSEmmanuel Vadot    maxItems: 1
787ef62cebSEmmanuel Vadot    description: |
797ef62cebSEmmanuel Vadot      The reference to the reserved-memory for the L2 Loosely Integrated Memory region.
807ef62cebSEmmanuel Vadot      The reserved memory node should be defined as per the bindings in reserved-memory.txt.
817ef62cebSEmmanuel Vadot
827ef62cebSEmmanuel VadotallOf:
837ef62cebSEmmanuel Vadot  - $ref: /schemas/cache-controller.yaml#
847ef62cebSEmmanuel Vadot
857ef62cebSEmmanuel Vadot  - if:
867ef62cebSEmmanuel Vadot      properties:
877ef62cebSEmmanuel Vadot        compatible:
887ef62cebSEmmanuel Vadot          contains:
897ef62cebSEmmanuel Vadot            enum:
907ef62cebSEmmanuel Vadot              - sifive,fu740-c000-ccache
91*cb7aa33aSEmmanuel Vadot              - starfive,jh7110-ccache
927ef62cebSEmmanuel Vadot              - microchip,mpfs-ccache
937ef62cebSEmmanuel Vadot
947ef62cebSEmmanuel Vadot    then:
957ef62cebSEmmanuel Vadot      properties:
967ef62cebSEmmanuel Vadot        interrupts:
977ef62cebSEmmanuel Vadot          description: |
987ef62cebSEmmanuel Vadot            Must contain entries for DirError, DataError, DataFail, DirFail signals.
997ef62cebSEmmanuel Vadot          minItems: 4
1007ef62cebSEmmanuel Vadot
1017ef62cebSEmmanuel Vadot    else:
1027ef62cebSEmmanuel Vadot      properties:
1037ef62cebSEmmanuel Vadot        interrupts:
1047ef62cebSEmmanuel Vadot          description: |
1057ef62cebSEmmanuel Vadot            Must contain entries for DirError, DataError and DataFail signals.
1067ef62cebSEmmanuel Vadot          maxItems: 3
1077ef62cebSEmmanuel Vadot
1087ef62cebSEmmanuel Vadot  - if:
1097ef62cebSEmmanuel Vadot      properties:
1107ef62cebSEmmanuel Vadot        compatible:
1117ef62cebSEmmanuel Vadot          contains:
112*cb7aa33aSEmmanuel Vadot            enum:
113*cb7aa33aSEmmanuel Vadot              - sifive,fu740-c000-ccache
114*cb7aa33aSEmmanuel Vadot              - starfive,jh7110-ccache
1157ef62cebSEmmanuel Vadot
1167ef62cebSEmmanuel Vadot    then:
1177ef62cebSEmmanuel Vadot      properties:
1187ef62cebSEmmanuel Vadot        cache-sets:
1197ef62cebSEmmanuel Vadot          const: 2048
1207ef62cebSEmmanuel Vadot
1217ef62cebSEmmanuel Vadot    else:
1227ef62cebSEmmanuel Vadot      properties:
1237ef62cebSEmmanuel Vadot        cache-sets:
1247ef62cebSEmmanuel Vadot          const: 1024
1257ef62cebSEmmanuel Vadot
1267ef62cebSEmmanuel Vadot  - if:
1277ef62cebSEmmanuel Vadot      properties:
1287ef62cebSEmmanuel Vadot        compatible:
1297ef62cebSEmmanuel Vadot          contains:
1307ef62cebSEmmanuel Vadot            const: sifive,ccache0
1317ef62cebSEmmanuel Vadot
1327ef62cebSEmmanuel Vadot    then:
1337ef62cebSEmmanuel Vadot      properties:
1347ef62cebSEmmanuel Vadot        cache-level:
1357ef62cebSEmmanuel Vadot          enum: [2, 3]
1367ef62cebSEmmanuel Vadot
1377ef62cebSEmmanuel Vadot    else:
1387ef62cebSEmmanuel Vadot      properties:
1397ef62cebSEmmanuel Vadot        cache-level:
1407ef62cebSEmmanuel Vadot          const: 2
1417ef62cebSEmmanuel Vadot
1427ef62cebSEmmanuel VadotadditionalProperties: false
1437ef62cebSEmmanuel Vadot
1447ef62cebSEmmanuel Vadotrequired:
1457ef62cebSEmmanuel Vadot  - compatible
1467ef62cebSEmmanuel Vadot  - cache-block-size
1477ef62cebSEmmanuel Vadot  - cache-level
1487ef62cebSEmmanuel Vadot  - cache-sets
1497ef62cebSEmmanuel Vadot  - cache-size
1507ef62cebSEmmanuel Vadot  - cache-unified
1517ef62cebSEmmanuel Vadot  - interrupts
1527ef62cebSEmmanuel Vadot  - reg
1537ef62cebSEmmanuel Vadot
1547ef62cebSEmmanuel Vadotexamples:
1557ef62cebSEmmanuel Vadot  - |
1567ef62cebSEmmanuel Vadot    cache-controller@2010000 {
1577ef62cebSEmmanuel Vadot        compatible = "sifive,fu540-c000-ccache", "cache";
1587ef62cebSEmmanuel Vadot        cache-block-size = <64>;
1597ef62cebSEmmanuel Vadot        cache-level = <2>;
1607ef62cebSEmmanuel Vadot        cache-sets = <1024>;
1617ef62cebSEmmanuel Vadot        cache-size = <2097152>;
1627ef62cebSEmmanuel Vadot        cache-unified;
1637ef62cebSEmmanuel Vadot        reg = <0x2010000 0x1000>;
1647ef62cebSEmmanuel Vadot        interrupt-parent = <&plic0>;
1657ef62cebSEmmanuel Vadot        interrupts = <1>,
1667ef62cebSEmmanuel Vadot                     <2>,
1677ef62cebSEmmanuel Vadot                     <3>;
1687ef62cebSEmmanuel Vadot        next-level-cache = <&L25>;
1697ef62cebSEmmanuel Vadot        memory-region = <&l2_lim>;
1707ef62cebSEmmanuel Vadot    };
171