2020-02-27 05:36:48 -07:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
|
|
|
%YAML 1.2
|
|
|
|
---
|
2023-03-30 10:32:56 -07:00
|
|
|
$id: http://devicetree.org/schemas/cache/socionext,uniphier-system-cache.yaml#
|
2020-02-27 05:36:48 -07:00
|
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
|
|
|
|
title: UniPhier outer cache controller
|
|
|
|
|
|
|
|
description: |
|
|
|
|
UniPhier ARM 32-bit SoCs are integrated with a full-custom outer cache
|
|
|
|
controller system. All of them have a level 2 cache controller, and some
|
|
|
|
have a level 3 cache controller as well.
|
|
|
|
|
|
|
|
maintainers:
|
|
|
|
- Masahiro Yamada <yamada.masahiro@socionext.com>
|
|
|
|
|
|
|
|
properties:
|
|
|
|
compatible:
|
|
|
|
const: socionext,uniphier-system-cache
|
|
|
|
|
|
|
|
reg:
|
|
|
|
description: |
|
|
|
|
should contain 3 regions: control register, revision register,
|
|
|
|
operation register, in this order.
|
|
|
|
maxItems: 3
|
|
|
|
|
|
|
|
interrupts:
|
|
|
|
description: |
|
|
|
|
Interrupts can be used to notify the completion of cache operations.
|
|
|
|
The number of interrupts should match to the number of CPU cores.
|
|
|
|
The specified interrupts correspond to CPU0, CPU1, ... in this order.
|
2021-01-04 16:02:53 -07:00
|
|
|
minItems: 1
|
|
|
|
maxItems: 4
|
2020-02-27 05:36:48 -07:00
|
|
|
|
|
|
|
cache-unified: true
|
|
|
|
|
|
|
|
cache-size: true
|
|
|
|
|
|
|
|
cache-sets: true
|
|
|
|
|
|
|
|
cache-line-size: true
|
|
|
|
|
|
|
|
cache-level:
|
|
|
|
minimum: 2
|
|
|
|
maximum: 3
|
|
|
|
|
|
|
|
next-level-cache: true
|
|
|
|
|
|
|
|
allOf:
|
|
|
|
- $ref: /schemas/cache-controller.yaml#
|
|
|
|
|
|
|
|
additionalProperties: false
|
|
|
|
|
|
|
|
required:
|
|
|
|
- compatible
|
|
|
|
- reg
|
|
|
|
- interrupts
|
|
|
|
- cache-unified
|
|
|
|
- cache-size
|
|
|
|
- cache-sets
|
|
|
|
- cache-line-size
|
|
|
|
- cache-level
|
|
|
|
|
|
|
|
examples:
|
|
|
|
- |
|
|
|
|
// System with L2.
|
|
|
|
cache-controller@500c0000 {
|
|
|
|
compatible = "socionext,uniphier-system-cache";
|
|
|
|
reg = <0x500c0000 0x2000>, <0x503c0100 0x4>, <0x506c0000 0x400>;
|
|
|
|
interrupts = <0 174 4>, <0 175 4>, <0 190 4>, <0 191 4>;
|
|
|
|
cache-unified;
|
|
|
|
cache-size = <0x140000>;
|
|
|
|
cache-sets = <512>;
|
|
|
|
cache-line-size = <128>;
|
|
|
|
cache-level = <2>;
|
|
|
|
};
|
|
|
|
- |
|
|
|
|
// System with L2 and L3.
|
|
|
|
// L2 should specify the next level cache by 'next-level-cache'.
|
|
|
|
l2: cache-controller@500c0000 {
|
|
|
|
compatible = "socionext,uniphier-system-cache";
|
|
|
|
reg = <0x500c0000 0x2000>, <0x503c0100 0x8>, <0x506c0000 0x400>;
|
|
|
|
interrupts = <0 190 4>, <0 191 4>;
|
|
|
|
cache-unified;
|
|
|
|
cache-size = <0x200000>;
|
|
|
|
cache-sets = <512>;
|
|
|
|
cache-line-size = <128>;
|
|
|
|
cache-level = <2>;
|
|
|
|
next-level-cache = <&l3>;
|
|
|
|
};
|
|
|
|
|
|
|
|
l3: cache-controller@500c8000 {
|
|
|
|
compatible = "socionext,uniphier-system-cache";
|
|
|
|
reg = <0x500c8000 0x2000>, <0x503c8100 0x8>, <0x506c8000 0x400>;
|
|
|
|
interrupts = <0 174 4>, <0 175 4>;
|
|
|
|
cache-unified;
|
|
|
|
cache-size = <0x200000>;
|
|
|
|
cache-sets = <512>;
|
|
|
|
cache-line-size = <256>;
|
|
|
|
cache-level = <3>;
|
|
|
|
};
|