-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dt-bindings: arm: Convert ARM CCI-400 binding to a schema
The ARM CCI-400 Interconnect is supported by Linux thanks to its device tree binding. Now that we have the DT validation in place, let's convert the device tree bindings for that driver over to a YAML schema. Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Signed-off-by: Maxime Ripard <maxime@cerno.tech> Link: https://lore.kernel.org/r/20210901091852.479202-7-maxime@cerno.tech Signed-off-by: Rob Herring <robh@kernel.org>
- Loading branch information
Maxime Ripard
authored and
Rob Herring
committed
Sep 13, 2021
1 parent
bf99826
commit ddf6cc9
Showing
4 changed files
with
256 additions
and
224 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,216 @@ | ||
# SPDX-License-Identifier: GPL-2.0 | ||
%YAML 1.2 | ||
--- | ||
$id: http://devicetree.org/schemas/arm/arm,cci-400.yaml# | ||
$schema: http://devicetree.org/meta-schemas/core.yaml# | ||
|
||
title: ARM CCI Cache Coherent Interconnect Device Tree Binding | ||
|
||
maintainers: | ||
- Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> | ||
|
||
description: > | ||
ARM multi-cluster systems maintain intra-cluster coherency through a cache | ||
coherent interconnect (CCI) that is capable of monitoring bus transactions | ||
and manage coherency, TLB invalidations and memory barriers. | ||
It allows snooping and distributed virtual memory message broadcast across | ||
clusters, through memory mapped interface, with a global control register | ||
space and multiple sets of interface control registers, one per slave | ||
interface. | ||
properties: | ||
$nodename: | ||
pattern: "^cci(@[0-9a-f]+)?$" | ||
|
||
compatible: | ||
enum: | ||
- arm,cci-400 | ||
- arm,cci-500 | ||
- arm,cci-550 | ||
|
||
reg: | ||
maxItems: 1 | ||
description: > | ||
Specifies base physical address of CCI control registers common to all | ||
interfaces. | ||
"#address-cells": true | ||
"#size-cells": true | ||
ranges: true | ||
|
||
patternProperties: | ||
"^slave-if@[0-9a-f]+$": | ||
type: object | ||
|
||
properties: | ||
compatible: | ||
const: arm,cci-400-ctrl-if | ||
|
||
interface-type: | ||
enum: | ||
- ace | ||
- ace-lite | ||
|
||
reg: | ||
maxItems: 1 | ||
|
||
required: | ||
- compatible | ||
- interface-type | ||
- reg | ||
|
||
additionalProperties: false | ||
|
||
"^pmu@[0-9a-f]+$": | ||
type: object | ||
|
||
properties: | ||
compatible: | ||
oneOf: | ||
- const: arm,cci-400-pmu,r0 | ||
- const: arm,cci-400-pmu,r1 | ||
- const: arm,cci-400-pmu | ||
deprecated: true | ||
description: > | ||
Permitted only where OS has secure access to CCI registers | ||
- const: arm,cci-500-pmu,r0 | ||
- const: arm,cci-550-pmu,r0 | ||
|
||
interrupts: | ||
minItems: 1 | ||
maxItems: 8 | ||
description: > | ||
List of counter overflow interrupts, one per counter. The interrupts | ||
must be specified starting with the cycle counter overflow interrupt, | ||
followed by counter0 overflow interrupt, counter1 overflow | ||
interrupt,... ,counterN overflow interrupt. | ||
The CCI PMU has an interrupt signal for each counter. The number of | ||
interrupts must be equal to the number of counters. | ||
reg: | ||
maxItems: 1 | ||
|
||
required: | ||
- compatible | ||
- interrupts | ||
- reg | ||
|
||
additionalProperties: false | ||
|
||
required: | ||
- "#address-cells" | ||
- "#size-cells" | ||
- compatible | ||
- ranges | ||
- reg | ||
|
||
additionalProperties: false | ||
|
||
examples: | ||
- | | ||
/ { | ||
#address-cells = <2>; | ||
#size-cells = <2>; | ||
compatible = "arm,vexpress,v2p-ca15_a7", "arm,vexpress"; | ||
model = "V2P-CA15_CA7"; | ||
arm,hbi = <0x249>; | ||
interrupt-parent = <&gic>; | ||
/* | ||
* This CCI node corresponds to a CCI component whose control | ||
* registers sits at address 0x000000002c090000. | ||
* | ||
* CCI slave interface @0x000000002c091000 is connected to dma | ||
* controller dma0. | ||
* | ||
* CCI slave interface @0x000000002c094000 is connected to CPUs | ||
* {CPU0, CPU1}; | ||
* | ||
* CCI slave interface @0x000000002c095000 is connected to CPUs | ||
* {CPU2, CPU3}; | ||
*/ | ||
cpus { | ||
#size-cells = <0>; | ||
#address-cells = <1>; | ||
CPU0: cpu@0 { | ||
device_type = "cpu"; | ||
compatible = "arm,cortex-a15"; | ||
cci-control-port = <&cci_control1>; | ||
reg = <0x0>; | ||
}; | ||
CPU1: cpu@1 { | ||
device_type = "cpu"; | ||
compatible = "arm,cortex-a15"; | ||
cci-control-port = <&cci_control1>; | ||
reg = <0x1>; | ||
}; | ||
CPU2: cpu@100 { | ||
device_type = "cpu"; | ||
compatible = "arm,cortex-a7"; | ||
cci-control-port = <&cci_control2>; | ||
reg = <0x100>; | ||
}; | ||
CPU3: cpu@101 { | ||
device_type = "cpu"; | ||
compatible = "arm,cortex-a7"; | ||
cci-control-port = <&cci_control2>; | ||
reg = <0x101>; | ||
}; | ||
}; | ||
dma0: dma@3000000 { | ||
/* compatible = "arm,pl330", "arm,primecell"; */ | ||
cci-control-port = <&cci_control0>; | ||
reg = <0x0 0x3000000 0x0 0x1000>; | ||
interrupts = <10>; | ||
#dma-cells = <1>; | ||
#dma-channels = <8>; | ||
#dma-requests = <32>; | ||
}; | ||
cci@2c090000 { | ||
compatible = "arm,cci-400"; | ||
#address-cells = <1>; | ||
#size-cells = <1>; | ||
reg = <0x0 0x2c090000 0 0x1000>; | ||
ranges = <0x0 0x0 0x2c090000 0x10000>; | ||
cci_control0: slave-if@1000 { | ||
compatible = "arm,cci-400-ctrl-if"; | ||
interface-type = "ace-lite"; | ||
reg = <0x1000 0x1000>; | ||
}; | ||
cci_control1: slave-if@4000 { | ||
compatible = "arm,cci-400-ctrl-if"; | ||
interface-type = "ace"; | ||
reg = <0x4000 0x1000>; | ||
}; | ||
cci_control2: slave-if@5000 { | ||
compatible = "arm,cci-400-ctrl-if"; | ||
interface-type = "ace"; | ||
reg = <0x5000 0x1000>; | ||
}; | ||
pmu@9000 { | ||
compatible = "arm,cci-400-pmu"; | ||
reg = <0x9000 0x5000>; | ||
interrupts = <0 101 4>, | ||
<0 102 4>, | ||
<0 103 4>, | ||
<0 104 4>, | ||
<0 105 4>; | ||
}; | ||
}; | ||
}; | ||
... |
38 changes: 38 additions & 0 deletions
38
Documentation/devicetree/bindings/arm/cci-control-port.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
# SPDX-License-Identifier: GPL-2.0 | ||
%YAML 1.2 | ||
--- | ||
$id: http://devicetree.org/schemas/arm/cci-control-port.yaml# | ||
$schema: http://devicetree.org/meta-schemas/core.yaml# | ||
|
||
title: CCI Interconnect Bus Masters binding | ||
|
||
maintainers: | ||
- Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> | ||
|
||
description: | | ||
Masters in the device tree connected to a CCI port (inclusive of CPUs | ||
and their cpu nodes). | ||
select: true | ||
|
||
properties: | ||
cci-control-port: | ||
$ref: /schemas/types.yaml#/definitions/phandle | ||
|
||
additionalProperties: true | ||
|
||
examples: | ||
- | | ||
cpus { | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
cpu@0 { | ||
compatible = "arm,cortex-a15"; | ||
device_type = "cpu"; | ||
cci-control-port = <&cci_control1>; | ||
reg = <0>; | ||
}; | ||
}; | ||
... |
Oops, something went wrong.