1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2*4882a593Smuzhiyun%YAML 1.2
3*4882a593Smuzhiyun---
4*4882a593Smuzhiyun$id: http://devicetree.org/schemas/arm/socionext/socionext,uniphier-system-cache.yaml#
5*4882a593Smuzhiyun$schema: http://devicetree.org/meta-schemas/core.yaml#
6*4882a593Smuzhiyun
7*4882a593Smuzhiyuntitle: UniPhier outer cache controller
8*4882a593Smuzhiyun
9*4882a593Smuzhiyundescription: |
10*4882a593Smuzhiyun  UniPhier ARM 32-bit SoCs are integrated with a full-custom outer cache
11*4882a593Smuzhiyun  controller system. All of them have a level 2 cache controller, and some
12*4882a593Smuzhiyun  have a level 3 cache controller as well.
13*4882a593Smuzhiyun
14*4882a593Smuzhiyunmaintainers:
15*4882a593Smuzhiyun  - Masahiro Yamada <yamada.masahiro@socionext.com>
16*4882a593Smuzhiyun
17*4882a593Smuzhiyunproperties:
18*4882a593Smuzhiyun  compatible:
19*4882a593Smuzhiyun    const: socionext,uniphier-system-cache
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun  reg:
22*4882a593Smuzhiyun    description: |
23*4882a593Smuzhiyun      should contain 3 regions: control register, revision register,
24*4882a593Smuzhiyun      operation register, in this order.
25*4882a593Smuzhiyun    minItems: 3
26*4882a593Smuzhiyun    maxItems: 3
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun  interrupts:
29*4882a593Smuzhiyun    description: |
30*4882a593Smuzhiyun      Interrupts can be used to notify the completion of cache operations.
31*4882a593Smuzhiyun      The number of interrupts should match to the number of CPU cores.
32*4882a593Smuzhiyun      The specified interrupts correspond to CPU0, CPU1, ... in this order.
33*4882a593Smuzhiyun      minItems: 1
34*4882a593Smuzhiyun      maxItems: 4
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun  cache-unified: true
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun  cache-size: true
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun  cache-sets: true
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun  cache-line-size: true
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun  cache-level:
45*4882a593Smuzhiyun    minimum: 2
46*4882a593Smuzhiyun    maximum: 3
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun  next-level-cache: true
49*4882a593Smuzhiyun
50*4882a593SmuzhiyunallOf:
51*4882a593Smuzhiyun  - $ref: /schemas/cache-controller.yaml#
52*4882a593Smuzhiyun
53*4882a593SmuzhiyunadditionalProperties: false
54*4882a593Smuzhiyun
55*4882a593Smuzhiyunrequired:
56*4882a593Smuzhiyun  - compatible
57*4882a593Smuzhiyun  - reg
58*4882a593Smuzhiyun  - interrupts
59*4882a593Smuzhiyun  - cache-unified
60*4882a593Smuzhiyun  - cache-size
61*4882a593Smuzhiyun  - cache-sets
62*4882a593Smuzhiyun  - cache-line-size
63*4882a593Smuzhiyun  - cache-level
64*4882a593Smuzhiyun
65*4882a593Smuzhiyunexamples:
66*4882a593Smuzhiyun  - |
67*4882a593Smuzhiyun    // System with L2.
68*4882a593Smuzhiyun    cache-controller@500c0000 {
69*4882a593Smuzhiyun        compatible = "socionext,uniphier-system-cache";
70*4882a593Smuzhiyun        reg = <0x500c0000 0x2000>, <0x503c0100 0x4>, <0x506c0000 0x400>;
71*4882a593Smuzhiyun        interrupts = <0 174 4>, <0 175 4>, <0 190 4>, <0 191 4>;
72*4882a593Smuzhiyun        cache-unified;
73*4882a593Smuzhiyun        cache-size = <0x140000>;
74*4882a593Smuzhiyun        cache-sets = <512>;
75*4882a593Smuzhiyun        cache-line-size = <128>;
76*4882a593Smuzhiyun        cache-level = <2>;
77*4882a593Smuzhiyun    };
78*4882a593Smuzhiyun  - |
79*4882a593Smuzhiyun    // System with L2 and L3.
80*4882a593Smuzhiyun    //   L2 should specify the next level cache by 'next-level-cache'.
81*4882a593Smuzhiyun    l2: cache-controller@500c0000 {
82*4882a593Smuzhiyun        compatible = "socionext,uniphier-system-cache";
83*4882a593Smuzhiyun        reg = <0x500c0000 0x2000>, <0x503c0100 0x8>, <0x506c0000 0x400>;
84*4882a593Smuzhiyun        interrupts = <0 190 4>, <0 191 4>;
85*4882a593Smuzhiyun        cache-unified;
86*4882a593Smuzhiyun        cache-size = <0x200000>;
87*4882a593Smuzhiyun        cache-sets = <512>;
88*4882a593Smuzhiyun        cache-line-size = <128>;
89*4882a593Smuzhiyun        cache-level = <2>;
90*4882a593Smuzhiyun        next-level-cache = <&l3>;
91*4882a593Smuzhiyun    };
92*4882a593Smuzhiyun
93*4882a593Smuzhiyun    l3: cache-controller@500c8000 {
94*4882a593Smuzhiyun        compatible = "socionext,uniphier-system-cache";
95*4882a593Smuzhiyun        reg = <0x500c8000 0x2000>, <0x503c8100 0x8>, <0x506c8000 0x400>;
96*4882a593Smuzhiyun        interrupts = <0 174 4>, <0 175 4>;
97*4882a593Smuzhiyun        cache-unified;
98*4882a593Smuzhiyun        cache-size = <0x200000>;
99*4882a593Smuzhiyun        cache-sets = <512>;
100*4882a593Smuzhiyun        cache-line-size = <256>;
101*4882a593Smuzhiyun        cache-level = <3>;
102*4882a593Smuzhiyun    };
103