18cc087a1SEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0 28cc087a1SEmmanuel Vadot%YAML 1.2 38cc087a1SEmmanuel Vadot--- 48cc087a1SEmmanuel Vadot$id: http://devicetree.org/schemas/arm/arm,cci-400.yaml# 58cc087a1SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 68cc087a1SEmmanuel Vadot 7*7ef62cebSEmmanuel Vadottitle: ARM CCI Cache Coherent Interconnect 88cc087a1SEmmanuel Vadot 98cc087a1SEmmanuel Vadotmaintainers: 108cc087a1SEmmanuel Vadot - Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 118cc087a1SEmmanuel Vadot 128cc087a1SEmmanuel Vadotdescription: > 138cc087a1SEmmanuel Vadot ARM multi-cluster systems maintain intra-cluster coherency through a cache 148cc087a1SEmmanuel Vadot coherent interconnect (CCI) that is capable of monitoring bus transactions 158cc087a1SEmmanuel Vadot and manage coherency, TLB invalidations and memory barriers. 168cc087a1SEmmanuel Vadot 178cc087a1SEmmanuel Vadot It allows snooping and distributed virtual memory message broadcast across 188cc087a1SEmmanuel Vadot clusters, through memory mapped interface, with a global control register 198cc087a1SEmmanuel Vadot space and multiple sets of interface control registers, one per slave 208cc087a1SEmmanuel Vadot interface. 218cc087a1SEmmanuel Vadot 228cc087a1SEmmanuel Vadotproperties: 238cc087a1SEmmanuel Vadot $nodename: 248cc087a1SEmmanuel Vadot pattern: "^cci(@[0-9a-f]+)?$" 258cc087a1SEmmanuel Vadot 268cc087a1SEmmanuel Vadot compatible: 278cc087a1SEmmanuel Vadot enum: 288cc087a1SEmmanuel Vadot - arm,cci-400 298cc087a1SEmmanuel Vadot - arm,cci-500 308cc087a1SEmmanuel Vadot - arm,cci-550 318cc087a1SEmmanuel Vadot 328cc087a1SEmmanuel Vadot reg: 338cc087a1SEmmanuel Vadot maxItems: 1 348cc087a1SEmmanuel Vadot description: > 358cc087a1SEmmanuel Vadot Specifies base physical address of CCI control registers common to all 368cc087a1SEmmanuel Vadot interfaces. 378cc087a1SEmmanuel Vadot 388cc087a1SEmmanuel Vadot "#address-cells": true 398cc087a1SEmmanuel Vadot "#size-cells": true 408cc087a1SEmmanuel Vadot ranges: true 418cc087a1SEmmanuel Vadot 428cc087a1SEmmanuel VadotpatternProperties: 438cc087a1SEmmanuel Vadot "^slave-if@[0-9a-f]+$": 448cc087a1SEmmanuel Vadot type: object 458cc087a1SEmmanuel Vadot 468cc087a1SEmmanuel Vadot properties: 478cc087a1SEmmanuel Vadot compatible: 488cc087a1SEmmanuel Vadot const: arm,cci-400-ctrl-if 498cc087a1SEmmanuel Vadot 508cc087a1SEmmanuel Vadot interface-type: 518cc087a1SEmmanuel Vadot enum: 528cc087a1SEmmanuel Vadot - ace 538cc087a1SEmmanuel Vadot - ace-lite 548cc087a1SEmmanuel Vadot 558cc087a1SEmmanuel Vadot reg: 568cc087a1SEmmanuel Vadot maxItems: 1 578cc087a1SEmmanuel Vadot 588cc087a1SEmmanuel Vadot required: 598cc087a1SEmmanuel Vadot - compatible 608cc087a1SEmmanuel Vadot - interface-type 618cc087a1SEmmanuel Vadot - reg 628cc087a1SEmmanuel Vadot 638cc087a1SEmmanuel Vadot additionalProperties: false 648cc087a1SEmmanuel Vadot 658cc087a1SEmmanuel Vadot "^pmu@[0-9a-f]+$": 668cc087a1SEmmanuel Vadot type: object 678cc087a1SEmmanuel Vadot 688cc087a1SEmmanuel Vadot properties: 698cc087a1SEmmanuel Vadot compatible: 708cc087a1SEmmanuel Vadot oneOf: 718cc087a1SEmmanuel Vadot - const: arm,cci-400-pmu,r0 728cc087a1SEmmanuel Vadot - const: arm,cci-400-pmu,r1 738cc087a1SEmmanuel Vadot - const: arm,cci-400-pmu 748cc087a1SEmmanuel Vadot deprecated: true 758cc087a1SEmmanuel Vadot description: > 768cc087a1SEmmanuel Vadot Permitted only where OS has secure access to CCI registers 778cc087a1SEmmanuel Vadot - const: arm,cci-500-pmu,r0 788cc087a1SEmmanuel Vadot - const: arm,cci-550-pmu,r0 798cc087a1SEmmanuel Vadot 808cc087a1SEmmanuel Vadot interrupts: 818cc087a1SEmmanuel Vadot minItems: 1 828cc087a1SEmmanuel Vadot maxItems: 8 838cc087a1SEmmanuel Vadot description: > 848cc087a1SEmmanuel Vadot List of counter overflow interrupts, one per counter. The interrupts 858cc087a1SEmmanuel Vadot must be specified starting with the cycle counter overflow interrupt, 868cc087a1SEmmanuel Vadot followed by counter0 overflow interrupt, counter1 overflow 878cc087a1SEmmanuel Vadot interrupt,... ,counterN overflow interrupt. 888cc087a1SEmmanuel Vadot 898cc087a1SEmmanuel Vadot The CCI PMU has an interrupt signal for each counter. The number of 908cc087a1SEmmanuel Vadot interrupts must be equal to the number of counters. 918cc087a1SEmmanuel Vadot 928cc087a1SEmmanuel Vadot reg: 938cc087a1SEmmanuel Vadot maxItems: 1 948cc087a1SEmmanuel Vadot 958cc087a1SEmmanuel Vadot required: 968cc087a1SEmmanuel Vadot - compatible 978cc087a1SEmmanuel Vadot - interrupts 988cc087a1SEmmanuel Vadot - reg 998cc087a1SEmmanuel Vadot 1008cc087a1SEmmanuel Vadot additionalProperties: false 1018cc087a1SEmmanuel Vadot 1028cc087a1SEmmanuel Vadotrequired: 1038cc087a1SEmmanuel Vadot - "#address-cells" 1048cc087a1SEmmanuel Vadot - "#size-cells" 1058cc087a1SEmmanuel Vadot - compatible 1068cc087a1SEmmanuel Vadot - ranges 1078cc087a1SEmmanuel Vadot - reg 1088cc087a1SEmmanuel Vadot 1098cc087a1SEmmanuel VadotadditionalProperties: false 1108cc087a1SEmmanuel Vadot 1118cc087a1SEmmanuel Vadotexamples: 1128cc087a1SEmmanuel Vadot - | 1138cc087a1SEmmanuel Vadot / { 1148cc087a1SEmmanuel Vadot #address-cells = <2>; 1158cc087a1SEmmanuel Vadot #size-cells = <2>; 1168cc087a1SEmmanuel Vadot 1178cc087a1SEmmanuel Vadot compatible = "arm,vexpress,v2p-ca15_a7", "arm,vexpress"; 1188cc087a1SEmmanuel Vadot model = "V2P-CA15_CA7"; 1198cc087a1SEmmanuel Vadot arm,hbi = <0x249>; 1208cc087a1SEmmanuel Vadot interrupt-parent = <&gic>; 1218cc087a1SEmmanuel Vadot 122c9ccf3a3SEmmanuel Vadot gic: interrupt-controller { 123c9ccf3a3SEmmanuel Vadot interrupt-controller; 124c9ccf3a3SEmmanuel Vadot #interrupt-cells = <3>; 125c9ccf3a3SEmmanuel Vadot }; 126c9ccf3a3SEmmanuel Vadot 1278cc087a1SEmmanuel Vadot /* 1288cc087a1SEmmanuel Vadot * This CCI node corresponds to a CCI component whose control 1298cc087a1SEmmanuel Vadot * registers sits at address 0x000000002c090000. 1308cc087a1SEmmanuel Vadot * 1318cc087a1SEmmanuel Vadot * CCI slave interface @0x000000002c091000 is connected to dma 1328cc087a1SEmmanuel Vadot * controller dma0. 1338cc087a1SEmmanuel Vadot * 1348cc087a1SEmmanuel Vadot * CCI slave interface @0x000000002c094000 is connected to CPUs 1358cc087a1SEmmanuel Vadot * {CPU0, CPU1}; 1368cc087a1SEmmanuel Vadot * 1378cc087a1SEmmanuel Vadot * CCI slave interface @0x000000002c095000 is connected to CPUs 1388cc087a1SEmmanuel Vadot * {CPU2, CPU3}; 1398cc087a1SEmmanuel Vadot */ 1408cc087a1SEmmanuel Vadot 1418cc087a1SEmmanuel Vadot cpus { 1428cc087a1SEmmanuel Vadot #size-cells = <0>; 1438cc087a1SEmmanuel Vadot #address-cells = <1>; 1448cc087a1SEmmanuel Vadot 1458cc087a1SEmmanuel Vadot CPU0: cpu@0 { 1468cc087a1SEmmanuel Vadot device_type = "cpu"; 1478cc087a1SEmmanuel Vadot compatible = "arm,cortex-a15"; 1488cc087a1SEmmanuel Vadot cci-control-port = <&cci_control1>; 1498cc087a1SEmmanuel Vadot reg = <0x0>; 1508cc087a1SEmmanuel Vadot }; 1518cc087a1SEmmanuel Vadot 1528cc087a1SEmmanuel Vadot CPU1: cpu@1 { 1538cc087a1SEmmanuel Vadot device_type = "cpu"; 1548cc087a1SEmmanuel Vadot compatible = "arm,cortex-a15"; 1558cc087a1SEmmanuel Vadot cci-control-port = <&cci_control1>; 1568cc087a1SEmmanuel Vadot reg = <0x1>; 1578cc087a1SEmmanuel Vadot }; 1588cc087a1SEmmanuel Vadot 1598cc087a1SEmmanuel Vadot CPU2: cpu@100 { 1608cc087a1SEmmanuel Vadot device_type = "cpu"; 1618cc087a1SEmmanuel Vadot compatible = "arm,cortex-a7"; 1628cc087a1SEmmanuel Vadot cci-control-port = <&cci_control2>; 1638cc087a1SEmmanuel Vadot reg = <0x100>; 1648cc087a1SEmmanuel Vadot }; 1658cc087a1SEmmanuel Vadot 1668cc087a1SEmmanuel Vadot CPU3: cpu@101 { 1678cc087a1SEmmanuel Vadot device_type = "cpu"; 1688cc087a1SEmmanuel Vadot compatible = "arm,cortex-a7"; 1698cc087a1SEmmanuel Vadot cci-control-port = <&cci_control2>; 1708cc087a1SEmmanuel Vadot reg = <0x101>; 1718cc087a1SEmmanuel Vadot }; 1728cc087a1SEmmanuel Vadot }; 1738cc087a1SEmmanuel Vadot 1748cc087a1SEmmanuel Vadot cci@2c090000 { 1758cc087a1SEmmanuel Vadot compatible = "arm,cci-400"; 1768cc087a1SEmmanuel Vadot #address-cells = <1>; 1778cc087a1SEmmanuel Vadot #size-cells = <1>; 1788cc087a1SEmmanuel Vadot reg = <0x0 0x2c090000 0 0x1000>; 1798cc087a1SEmmanuel Vadot ranges = <0x0 0x0 0x2c090000 0x10000>; 1808cc087a1SEmmanuel Vadot 1818cc087a1SEmmanuel Vadot cci_control0: slave-if@1000 { 1828cc087a1SEmmanuel Vadot compatible = "arm,cci-400-ctrl-if"; 1838cc087a1SEmmanuel Vadot interface-type = "ace-lite"; 1848cc087a1SEmmanuel Vadot reg = <0x1000 0x1000>; 1858cc087a1SEmmanuel Vadot }; 1868cc087a1SEmmanuel Vadot 1878cc087a1SEmmanuel Vadot cci_control1: slave-if@4000 { 1888cc087a1SEmmanuel Vadot compatible = "arm,cci-400-ctrl-if"; 1898cc087a1SEmmanuel Vadot interface-type = "ace"; 1908cc087a1SEmmanuel Vadot reg = <0x4000 0x1000>; 1918cc087a1SEmmanuel Vadot }; 1928cc087a1SEmmanuel Vadot 1938cc087a1SEmmanuel Vadot cci_control2: slave-if@5000 { 1948cc087a1SEmmanuel Vadot compatible = "arm,cci-400-ctrl-if"; 1958cc087a1SEmmanuel Vadot interface-type = "ace"; 1968cc087a1SEmmanuel Vadot reg = <0x5000 0x1000>; 1978cc087a1SEmmanuel Vadot }; 1988cc087a1SEmmanuel Vadot 1998cc087a1SEmmanuel Vadot pmu@9000 { 2008cc087a1SEmmanuel Vadot compatible = "arm,cci-400-pmu"; 2018cc087a1SEmmanuel Vadot reg = <0x9000 0x5000>; 2028cc087a1SEmmanuel Vadot interrupts = <0 101 4>, 2038cc087a1SEmmanuel Vadot <0 102 4>, 2048cc087a1SEmmanuel Vadot <0 103 4>, 2058cc087a1SEmmanuel Vadot <0 104 4>, 2068cc087a1SEmmanuel Vadot <0 105 4>; 2078cc087a1SEmmanuel Vadot }; 2088cc087a1SEmmanuel Vadot }; 2098cc087a1SEmmanuel Vadot }; 2108cc087a1SEmmanuel Vadot 2118cc087a1SEmmanuel Vadot... 212