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