File Index
Files and directories
Sign in
FILE

arm,cci-400.yaml

File preview with syntax highlighting.

linux-6.19.14/Documentation/devicetree/bindings/arm/arm,cci-400.yaml YAML
  1# SPDX-License-Identifier: GPL-2.0
  2%YAML 1.2
  3---
  4$id: http://devicetree.org/schemas/arm/arm,cci-400.yaml#
  5$schema: http://devicetree.org/meta-schemas/core.yaml#
  6
  7title: ARM CCI Cache Coherent Interconnect
  8
  9maintainers:
 10  - Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 11
 12description: >
 13  ARM multi-cluster systems maintain intra-cluster coherency through a cache
 14  coherent interconnect (CCI) that is capable of monitoring bus transactions
 15  and manage coherency, TLB invalidations and memory barriers.
 16
 17  It allows snooping and distributed virtual memory message broadcast across
 18  clusters, through memory mapped interface, with a global control register
 19  space and multiple sets of interface control registers, one per slave
 20  interface.
 21
 22properties:
 23  $nodename:
 24    pattern: "^cci(@[0-9a-f]+)?$"
 25
 26  compatible:
 27    enum:
 28      - arm,cci-400
 29      - arm,cci-500
 30      - arm,cci-550
 31
 32  reg:
 33    maxItems: 1
 34    description: >
 35      Specifies base physical address of CCI control registers common to all
 36      interfaces.
 37
 38  "#address-cells": true
 39  "#size-cells": true
 40  ranges: true
 41
 42patternProperties:
 43  "^slave-if@[0-9a-f]+$":
 44    type: object
 45
 46    properties:
 47      compatible:
 48        const: arm,cci-400-ctrl-if
 49
 50      interface-type:
 51        enum:
 52          - ace
 53          - ace-lite
 54
 55      reg:
 56        maxItems: 1
 57
 58    required:
 59      - compatible
 60      - interface-type
 61      - reg
 62
 63    additionalProperties: false
 64
 65  "^pmu@[0-9a-f]+$":
 66    type: object
 67
 68    properties:
 69      compatible:
 70        oneOf:
 71          - const: arm,cci-400-pmu,r0
 72          - const: arm,cci-400-pmu,r1
 73          - const: arm,cci-400-pmu
 74            deprecated: true
 75            description: >
 76              Permitted only where OS has secure access to CCI registers
 77          - const: arm,cci-500-pmu,r0
 78          - const: arm,cci-550-pmu,r0
 79
 80      interrupts:
 81        minItems: 1
 82        maxItems: 8
 83        description: >
 84          List of counter overflow interrupts, one per counter. The interrupts
 85          must be specified starting with the cycle counter overflow interrupt,
 86          followed by counter0 overflow interrupt, counter1 overflow
 87          interrupt,...  ,counterN overflow interrupt.
 88
 89          The CCI PMU has an interrupt signal for each counter. The number of
 90          interrupts must be equal to the number of counters.
 91
 92      reg:
 93        maxItems: 1
 94
 95    required:
 96      - compatible
 97      - interrupts
 98      - reg
 99
100    additionalProperties: false
101
102required:
103  - "#address-cells"
104  - "#size-cells"
105  - compatible
106  - ranges
107  - reg
108
109additionalProperties: false
110
111examples:
112  - |
113      / {
114          #address-cells = <2>;
115          #size-cells = <2>;
116
117          compatible = "arm,vexpress,v2p-ca15_a7", "arm,vexpress";
118          model = "V2P-CA15_CA7";
119          arm,hbi = <0x249>;
120          interrupt-parent = <&gic>;
121
122          gic: interrupt-controller {
123              interrupt-controller;
124              #interrupt-cells = <3>;
125          };
126
127          /*
128           * This CCI node corresponds to a CCI component whose control
129           * registers sits at address 0x000000002c090000.
130           *
131           * CCI slave interface @0x000000002c091000 is connected to dma
132           * controller dma0.
133           *
134           * CCI slave interface @0x000000002c094000 is connected to CPUs
135           * {CPU0, CPU1};
136           *
137           * CCI slave interface @0x000000002c095000 is connected to CPUs
138           * {CPU2, CPU3};
139           */
140
141          cpus {
142              #size-cells = <0>;
143              #address-cells = <1>;
144
145              CPU0: cpu@0 {
146                  device_type = "cpu";
147                  compatible = "arm,cortex-a15";
148                  cci-control-port = <&cci_control1>;
149                  reg = <0x0>;
150              };
151
152              CPU1: cpu@1 {
153                  device_type = "cpu";
154                  compatible = "arm,cortex-a15";
155                  cci-control-port = <&cci_control1>;
156                  reg = <0x1>;
157              };
158
159              CPU2: cpu@100 {
160                  device_type = "cpu";
161                  compatible = "arm,cortex-a7";
162                  cci-control-port = <&cci_control2>;
163                  reg = <0x100>;
164              };
165
166              CPU3: cpu@101 {
167                  device_type = "cpu";
168                  compatible = "arm,cortex-a7";
169                  cci-control-port = <&cci_control2>;
170                  reg = <0x101>;
171              };
172          };
173
174          cci@2c090000 {
175              compatible = "arm,cci-400";
176              #address-cells = <1>;
177              #size-cells = <1>;
178              reg = <0x0 0x2c090000 0 0x1000>;
179              ranges = <0x0 0x0 0x2c090000 0x10000>;
180
181              cci_control0: slave-if@1000 {
182                  compatible = "arm,cci-400-ctrl-if";
183                  interface-type = "ace-lite";
184                  reg = <0x1000 0x1000>;
185              };
186
187              cci_control1: slave-if@4000 {
188                  compatible = "arm,cci-400-ctrl-if";
189                  interface-type = "ace";
190                  reg = <0x4000 0x1000>;
191              };
192
193              cci_control2: slave-if@5000 {
194                  compatible = "arm,cci-400-ctrl-if";
195                  interface-type = "ace";
196                  reg = <0x5000 0x1000>;
197              };
198
199              pmu@9000 {
200                  compatible = "arm,cci-400-pmu";
201                  reg = <0x9000 0x5000>;
202                  interrupts = <0 101 4>,
203                    <0 102 4>,
204                    <0 103 4>,
205                    <0 104 4>,
206                    <0 105 4>;
207              };
208          };
209      };
210
211...
~/ Read-only file preview.