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