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