18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/arm/socionext/socionext,uniphier-system-cache.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: UniPhier outer cache controller
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cidescription: |
108c2ecf20Sopenharmony_ci  UniPhier ARM 32-bit SoCs are integrated with a full-custom outer cache
118c2ecf20Sopenharmony_ci  controller system. All of them have a level 2 cache controller, and some
128c2ecf20Sopenharmony_ci  have a level 3 cache controller as well.
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_cimaintainers:
158c2ecf20Sopenharmony_ci  - Masahiro Yamada <yamada.masahiro@socionext.com>
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ciproperties:
188c2ecf20Sopenharmony_ci  compatible:
198c2ecf20Sopenharmony_ci    const: socionext,uniphier-system-cache
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci  reg:
228c2ecf20Sopenharmony_ci    description: |
238c2ecf20Sopenharmony_ci      should contain 3 regions: control register, revision register,
248c2ecf20Sopenharmony_ci      operation register, in this order.
258c2ecf20Sopenharmony_ci    minItems: 3
268c2ecf20Sopenharmony_ci    maxItems: 3
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci  interrupts:
298c2ecf20Sopenharmony_ci    description: |
308c2ecf20Sopenharmony_ci      Interrupts can be used to notify the completion of cache operations.
318c2ecf20Sopenharmony_ci      The number of interrupts should match to the number of CPU cores.
328c2ecf20Sopenharmony_ci      The specified interrupts correspond to CPU0, CPU1, ... in this order.
338c2ecf20Sopenharmony_ci      minItems: 1
348c2ecf20Sopenharmony_ci      maxItems: 4
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci  cache-unified: true
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci  cache-size: true
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci  cache-sets: true
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci  cache-line-size: true
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ci  cache-level:
458c2ecf20Sopenharmony_ci    minimum: 2
468c2ecf20Sopenharmony_ci    maximum: 3
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ci  next-level-cache: true
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ciallOf:
518c2ecf20Sopenharmony_ci  - $ref: /schemas/cache-controller.yaml#
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ciadditionalProperties: false
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_cirequired:
568c2ecf20Sopenharmony_ci  - compatible
578c2ecf20Sopenharmony_ci  - reg
588c2ecf20Sopenharmony_ci  - interrupts
598c2ecf20Sopenharmony_ci  - cache-unified
608c2ecf20Sopenharmony_ci  - cache-size
618c2ecf20Sopenharmony_ci  - cache-sets
628c2ecf20Sopenharmony_ci  - cache-line-size
638c2ecf20Sopenharmony_ci  - cache-level
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ciexamples:
668c2ecf20Sopenharmony_ci  - |
678c2ecf20Sopenharmony_ci    // System with L2.
688c2ecf20Sopenharmony_ci    cache-controller@500c0000 {
698c2ecf20Sopenharmony_ci        compatible = "socionext,uniphier-system-cache";
708c2ecf20Sopenharmony_ci        reg = <0x500c0000 0x2000>, <0x503c0100 0x4>, <0x506c0000 0x400>;
718c2ecf20Sopenharmony_ci        interrupts = <0 174 4>, <0 175 4>, <0 190 4>, <0 191 4>;
728c2ecf20Sopenharmony_ci        cache-unified;
738c2ecf20Sopenharmony_ci        cache-size = <0x140000>;
748c2ecf20Sopenharmony_ci        cache-sets = <512>;
758c2ecf20Sopenharmony_ci        cache-line-size = <128>;
768c2ecf20Sopenharmony_ci        cache-level = <2>;
778c2ecf20Sopenharmony_ci    };
788c2ecf20Sopenharmony_ci  - |
798c2ecf20Sopenharmony_ci    // System with L2 and L3.
808c2ecf20Sopenharmony_ci    //   L2 should specify the next level cache by 'next-level-cache'.
818c2ecf20Sopenharmony_ci    l2: cache-controller@500c0000 {
828c2ecf20Sopenharmony_ci        compatible = "socionext,uniphier-system-cache";
838c2ecf20Sopenharmony_ci        reg = <0x500c0000 0x2000>, <0x503c0100 0x8>, <0x506c0000 0x400>;
848c2ecf20Sopenharmony_ci        interrupts = <0 190 4>, <0 191 4>;
858c2ecf20Sopenharmony_ci        cache-unified;
868c2ecf20Sopenharmony_ci        cache-size = <0x200000>;
878c2ecf20Sopenharmony_ci        cache-sets = <512>;
888c2ecf20Sopenharmony_ci        cache-line-size = <128>;
898c2ecf20Sopenharmony_ci        cache-level = <2>;
908c2ecf20Sopenharmony_ci        next-level-cache = <&l3>;
918c2ecf20Sopenharmony_ci    };
928c2ecf20Sopenharmony_ci
938c2ecf20Sopenharmony_ci    l3: cache-controller@500c8000 {
948c2ecf20Sopenharmony_ci        compatible = "socionext,uniphier-system-cache";
958c2ecf20Sopenharmony_ci        reg = <0x500c8000 0x2000>, <0x503c8100 0x8>, <0x506c8000 0x400>;
968c2ecf20Sopenharmony_ci        interrupts = <0 174 4>, <0 175 4>;
978c2ecf20Sopenharmony_ci        cache-unified;
988c2ecf20Sopenharmony_ci        cache-size = <0x200000>;
998c2ecf20Sopenharmony_ci        cache-sets = <512>;
1008c2ecf20Sopenharmony_ci        cache-line-size = <256>;
1018c2ecf20Sopenharmony_ci        cache-level = <3>;
1028c2ecf20Sopenharmony_ci    };
103