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 Device Tree Binding 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 /* 123 * This CCI node corresponds to a CCI component whose control 124 * registers sits at address 0x000000002c090000. 125 * 126 * CCI slave interface @0x000000002c091000 is connected to dma 127 * controller dma0. 128 * 129 * CCI slave interface @0x000000002c094000 is connected to CPUs 130 * {CPU0, CPU1}; 131 * 132 * CCI slave interface @0x000000002c095000 is connected to CPUs 133 * {CPU2, CPU3}; 134 */ 135 136 cpus { 137 #size-cells = <0>; 138 #address-cells = <1>; 139 140 CPU0: cpu@0 { 141 device_type = "cpu"; 142 compatible = "arm,cortex-a15"; 143 cci-control-port = <&cci_control1>; 144 reg = <0x0>; 145 }; 146 147 CPU1: cpu@1 { 148 device_type = "cpu"; 149 compatible = "arm,cortex-a15"; 150 cci-control-port = <&cci_control1>; 151 reg = <0x1>; 152 }; 153 154 CPU2: cpu@100 { 155 device_type = "cpu"; 156 compatible = "arm,cortex-a7"; 157 cci-control-port = <&cci_control2>; 158 reg = <0x100>; 159 }; 160 161 CPU3: cpu@101 { 162 device_type = "cpu"; 163 compatible = "arm,cortex-a7"; 164 cci-control-port = <&cci_control2>; 165 reg = <0x101>; 166 }; 167 }; 168 169 dma0: dma@3000000 { 170 /* compatible = "arm,pl330", "arm,primecell"; */ 171 cci-control-port = <&cci_control0>; 172 reg = <0x0 0x3000000 0x0 0x1000>; 173 interrupts = <10>; 174 #dma-cells = <1>; 175 #dma-channels = <8>; 176 #dma-requests = <32>; 177 }; 178 179 cci@2c090000 { 180 compatible = "arm,cci-400"; 181 #address-cells = <1>; 182 #size-cells = <1>; 183 reg = <0x0 0x2c090000 0 0x1000>; 184 ranges = <0x0 0x0 0x2c090000 0x10000>; 185 186 cci_control0: slave-if@1000 { 187 compatible = "arm,cci-400-ctrl-if"; 188 interface-type = "ace-lite"; 189 reg = <0x1000 0x1000>; 190 }; 191 192 cci_control1: slave-if@4000 { 193 compatible = "arm,cci-400-ctrl-if"; 194 interface-type = "ace"; 195 reg = <0x4000 0x1000>; 196 }; 197 198 cci_control2: slave-if@5000 { 199 compatible = "arm,cci-400-ctrl-if"; 200 interface-type = "ace"; 201 reg = <0x5000 0x1000>; 202 }; 203 204 pmu@9000 { 205 compatible = "arm,cci-400-pmu"; 206 reg = <0x9000 0x5000>; 207 interrupts = <0 101 4>, 208 <0 102 4>, 209 <0 103 4>, 210 <0 104 4>, 211 <0 105 4>; 212 }; 213 }; 214 }; 215 216... 217