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