162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/cache/socionext,uniphier-system-cache.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: UniPhier outer cache controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cidescription: |
1062306a36Sopenharmony_ci  UniPhier ARM 32-bit SoCs are integrated with a full-custom outer cache
1162306a36Sopenharmony_ci  controller system. All of them have a level 2 cache controller, and some
1262306a36Sopenharmony_ci  have a level 3 cache controller as well.
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cimaintainers:
1562306a36Sopenharmony_ci  - Masahiro Yamada <yamada.masahiro@socionext.com>
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciproperties:
1862306a36Sopenharmony_ci  compatible:
1962306a36Sopenharmony_ci    const: socionext,uniphier-system-cache
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci  reg:
2262306a36Sopenharmony_ci    description: |
2362306a36Sopenharmony_ci      should contain 3 regions: control register, revision register,
2462306a36Sopenharmony_ci      operation register, in this order.
2562306a36Sopenharmony_ci    maxItems: 3
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci  interrupts:
2862306a36Sopenharmony_ci    description: |
2962306a36Sopenharmony_ci      Interrupts can be used to notify the completion of cache operations.
3062306a36Sopenharmony_ci      The number of interrupts should match to the number of CPU cores.
3162306a36Sopenharmony_ci      The specified interrupts correspond to CPU0, CPU1, ... in this order.
3262306a36Sopenharmony_ci    minItems: 1
3362306a36Sopenharmony_ci    maxItems: 4
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci  cache-unified: true
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci  cache-size: true
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci  cache-sets: true
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci  cache-line-size: true
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci  cache-level:
4462306a36Sopenharmony_ci    minimum: 2
4562306a36Sopenharmony_ci    maximum: 3
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci  next-level-cache: true
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ciallOf:
5062306a36Sopenharmony_ci  - $ref: /schemas/cache-controller.yaml#
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ciadditionalProperties: false
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_cirequired:
5562306a36Sopenharmony_ci  - compatible
5662306a36Sopenharmony_ci  - reg
5762306a36Sopenharmony_ci  - interrupts
5862306a36Sopenharmony_ci  - cache-unified
5962306a36Sopenharmony_ci  - cache-size
6062306a36Sopenharmony_ci  - cache-sets
6162306a36Sopenharmony_ci  - cache-line-size
6262306a36Sopenharmony_ci  - cache-level
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ciexamples:
6562306a36Sopenharmony_ci  - |
6662306a36Sopenharmony_ci    // System with L2.
6762306a36Sopenharmony_ci    cache-controller@500c0000 {
6862306a36Sopenharmony_ci        compatible = "socionext,uniphier-system-cache";
6962306a36Sopenharmony_ci        reg = <0x500c0000 0x2000>, <0x503c0100 0x4>, <0x506c0000 0x400>;
7062306a36Sopenharmony_ci        interrupts = <0 174 4>, <0 175 4>, <0 190 4>, <0 191 4>;
7162306a36Sopenharmony_ci        cache-unified;
7262306a36Sopenharmony_ci        cache-size = <0x140000>;
7362306a36Sopenharmony_ci        cache-sets = <512>;
7462306a36Sopenharmony_ci        cache-line-size = <128>;
7562306a36Sopenharmony_ci        cache-level = <2>;
7662306a36Sopenharmony_ci    };
7762306a36Sopenharmony_ci  - |
7862306a36Sopenharmony_ci    // System with L2 and L3.
7962306a36Sopenharmony_ci    //   L2 should specify the next level cache by 'next-level-cache'.
8062306a36Sopenharmony_ci    l2: cache-controller@500c0000 {
8162306a36Sopenharmony_ci        compatible = "socionext,uniphier-system-cache";
8262306a36Sopenharmony_ci        reg = <0x500c0000 0x2000>, <0x503c0100 0x8>, <0x506c0000 0x400>;
8362306a36Sopenharmony_ci        interrupts = <0 190 4>, <0 191 4>;
8462306a36Sopenharmony_ci        cache-unified;
8562306a36Sopenharmony_ci        cache-size = <0x200000>;
8662306a36Sopenharmony_ci        cache-sets = <512>;
8762306a36Sopenharmony_ci        cache-line-size = <128>;
8862306a36Sopenharmony_ci        cache-level = <2>;
8962306a36Sopenharmony_ci        next-level-cache = <&l3>;
9062306a36Sopenharmony_ci    };
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci    l3: cache-controller@500c8000 {
9362306a36Sopenharmony_ci        compatible = "socionext,uniphier-system-cache";
9462306a36Sopenharmony_ci        reg = <0x500c8000 0x2000>, <0x503c8100 0x8>, <0x506c8000 0x400>;
9562306a36Sopenharmony_ci        interrupts = <0 174 4>, <0 175 4>;
9662306a36Sopenharmony_ci        cache-unified;
9762306a36Sopenharmony_ci        cache-size = <0x200000>;
9862306a36Sopenharmony_ci        cache-sets = <512>;
9962306a36Sopenharmony_ci        cache-line-size = <256>;
10062306a36Sopenharmony_ci        cache-level = <3>;
10162306a36Sopenharmony_ci    };
102