| # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/arm/socionext/socionext,uniphier-system-cache.yaml# |
| $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. |
| minItems: 3 |
| 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. |
| minItems: 1 |
| maxItems: 4 |
| |
| 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>; |
| }; |