dt-bindings: Add devicetree bindings
Add snapshot of device tree bindings from keystone common kernel, branch "android-mainline-keystone-qcom-release" at c4c12103f9c0 ("Snap for 9228065 from e32903b9a63bb558df8b803b076619c53c16baad to android-mainline-keystone-qcom-release"). Change-Id: I7682079615cbd9f29340a5c1f2a1d84ec441a1f1 Signed-off-by: Melody Olvera <quic_molvera@quicinc.com>
This commit is contained in:
104
bindings/interconnect/fsl,imx8m-noc.yaml
Normal file
104
bindings/interconnect/fsl,imx8m-noc.yaml
Normal file
@@ -0,0 +1,104 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/interconnect/fsl,imx8m-noc.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Generic i.MX bus frequency device
|
||||
|
||||
maintainers:
|
||||
- Peng Fan <peng.fan@nxp.com>
|
||||
|
||||
description: |
|
||||
The i.MX SoC family has multiple buses for which clock frequency (and
|
||||
sometimes voltage) can be adjusted.
|
||||
|
||||
Some of those buses expose register areas mentioned in the memory maps as GPV
|
||||
("Global Programmers View") but not all. Access to this area might be denied
|
||||
for normal (non-secure) world.
|
||||
|
||||
The buses are based on externally licensed IPs such as ARM NIC-301 and
|
||||
Arteris FlexNOC but DT bindings are specific to the integration of these bus
|
||||
interconnect IPs into imx SOCs.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- items:
|
||||
- enum:
|
||||
- fsl,imx8mm-nic
|
||||
- fsl,imx8mn-nic
|
||||
- fsl,imx8mp-nic
|
||||
- fsl,imx8mq-nic
|
||||
- const: fsl,imx8m-nic
|
||||
- items:
|
||||
- enum:
|
||||
- fsl,imx8mm-noc
|
||||
- fsl,imx8mn-noc
|
||||
- fsl,imx8mp-noc
|
||||
- fsl,imx8mq-noc
|
||||
- const: fsl,imx8m-noc
|
||||
- const: fsl,imx8m-nic
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
operating-points-v2: true
|
||||
opp-table:
|
||||
type: object
|
||||
|
||||
fsl,ddrc:
|
||||
$ref: "/schemas/types.yaml#/definitions/phandle"
|
||||
description:
|
||||
Phandle to DDR Controller.
|
||||
|
||||
'#interconnect-cells':
|
||||
description:
|
||||
If specified then also act as an interconnect provider. Should only be
|
||||
set once per soc on the main noc.
|
||||
const: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- clocks
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/imx8mm-clock.h>
|
||||
#include <dt-bindings/interconnect/imx8mm.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
noc: interconnect@32700000 {
|
||||
compatible = "fsl,imx8mm-noc", "fsl,imx8m-noc";
|
||||
reg = <0x32700000 0x100000>;
|
||||
clocks = <&clk IMX8MM_CLK_NOC>;
|
||||
#interconnect-cells = <1>;
|
||||
fsl,ddrc = <&ddrc>;
|
||||
|
||||
operating-points-v2 = <&noc_opp_table>;
|
||||
noc_opp_table: opp-table {
|
||||
compatible = "operating-points-v2";
|
||||
|
||||
opp-133333333 {
|
||||
opp-hz = /bits/ 64 <133333333>;
|
||||
};
|
||||
opp-800000000 {
|
||||
opp-hz = /bits/ 64 <800000000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
ddrc: memory-controller@3d400000 {
|
||||
compatible = "fsl,imx8mm-ddrc", "fsl,imx8m-ddrc";
|
||||
reg = <0x3d400000 0x400000>;
|
||||
clock-names = "core", "pll", "alt", "apb";
|
||||
clocks = <&clk IMX8MM_CLK_DRAM_CORE>,
|
||||
<&clk IMX8MM_DRAM_PLL>,
|
||||
<&clk IMX8MM_CLK_DRAM_ALT>,
|
||||
<&clk IMX8MM_CLK_DRAM_APB>;
|
||||
};
|
86
bindings/interconnect/interconnect.txt
Normal file
86
bindings/interconnect/interconnect.txt
Normal file
@@ -0,0 +1,86 @@
|
||||
Interconnect Provider Device Tree Bindings
|
||||
=========================================
|
||||
|
||||
The purpose of this document is to define a common set of generic interconnect
|
||||
providers/consumers properties.
|
||||
|
||||
|
||||
= interconnect providers =
|
||||
|
||||
The interconnect provider binding is intended to represent the interconnect
|
||||
controllers in the system. Each provider registers a set of interconnect
|
||||
nodes, which expose the interconnect related capabilities of the interconnect
|
||||
to consumer drivers. These capabilities can be throughput, latency, priority
|
||||
etc. The consumer drivers set constraints on interconnect path (or endpoints)
|
||||
depending on the use case. Interconnect providers can also be interconnect
|
||||
consumers, such as in the case where two network-on-chip fabrics interface
|
||||
directly.
|
||||
|
||||
Required properties:
|
||||
- compatible : contains the interconnect provider compatible string
|
||||
- #interconnect-cells : number of cells in a interconnect specifier needed to
|
||||
encode the interconnect node id and optionally add a
|
||||
path tag
|
||||
|
||||
Example:
|
||||
|
||||
snoc: interconnect@580000 {
|
||||
compatible = "qcom,msm8916-snoc";
|
||||
#interconnect-cells = <1>;
|
||||
reg = <0x580000 0x14000>;
|
||||
clock-names = "bus_clk", "bus_a_clk";
|
||||
clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
|
||||
<&rpmcc RPM_SMD_SNOC_A_CLK>;
|
||||
};
|
||||
|
||||
|
||||
= interconnect consumers =
|
||||
|
||||
The interconnect consumers are device nodes which dynamically express their
|
||||
bandwidth requirements along interconnect paths they are connected to. There
|
||||
can be multiple interconnect providers on a SoC and the consumer may consume
|
||||
multiple paths from different providers depending on use case and the
|
||||
components it has to interact with.
|
||||
|
||||
Required properties:
|
||||
interconnects : Pairs of phandles and interconnect provider specifier to denote
|
||||
the edge source and destination ports of the interconnect path.
|
||||
An optional path tag value could specified as additional argument
|
||||
to both endpoints and in such cases, this information will be passed
|
||||
to the interconnect framework to do aggregation based on the attached
|
||||
tag.
|
||||
|
||||
Optional properties:
|
||||
interconnect-names : List of interconnect path name strings sorted in the same
|
||||
order as the interconnects property. Consumers drivers will use
|
||||
interconnect-names to match interconnect paths with interconnect
|
||||
specifier pairs.
|
||||
|
||||
Reserved interconnect names:
|
||||
* dma-mem: Path from the device to the main memory of
|
||||
the system
|
||||
|
||||
Example:
|
||||
|
||||
sdhci@7864000 {
|
||||
...
|
||||
interconnects = <&pnoc MASTER_SDCC_1 &bimc SLAVE_EBI_CH0>;
|
||||
interconnect-names = "sdhc-mem";
|
||||
};
|
||||
|
||||
Example with path tags:
|
||||
|
||||
gnoc: interconnect@17900000 {
|
||||
...
|
||||
interconnect-cells = <2>;
|
||||
};
|
||||
|
||||
mnoc: interconnect@1380000 {
|
||||
...
|
||||
interconnect-cells = <2>;
|
||||
};
|
||||
|
||||
cpu@0 {
|
||||
...
|
||||
interconnects = <&gnoc MASTER_APPSS_PROC 3 &mnoc SLAVE_EBI1 3>;
|
||||
}
|
142
bindings/interconnect/mediatek,cci.yaml
Normal file
142
bindings/interconnect/mediatek,cci.yaml
Normal file
@@ -0,0 +1,142 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/interconnect/mediatek,cci.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: MediaTek Cache Coherent Interconnect (CCI) frequency and voltage scaling
|
||||
|
||||
maintainers:
|
||||
- Jia-Wei Chang <jia-wei.chang@mediatek.com>
|
||||
- Johnson Wang <johnson.wang@mediatek.com>
|
||||
|
||||
description: |
|
||||
MediaTek Cache Coherent Interconnect (CCI) is a hardware engine used by
|
||||
MT8183 and MT8186 SoCs to scale the frequency and adjust the voltage in
|
||||
hardware. It can also optimize the voltage to reduce the power consumption.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- mediatek,mt8183-cci
|
||||
- mediatek,mt8186-cci
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description:
|
||||
The multiplexer for clock input of the bus.
|
||||
- description:
|
||||
A parent of "bus" clock which is used as an intermediate clock source
|
||||
when the original clock source (PLL) is under transition and not
|
||||
stable yet.
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: cci
|
||||
- const: intermediate
|
||||
|
||||
operating-points-v2: true
|
||||
opp-table:
|
||||
type: object
|
||||
|
||||
proc-supply:
|
||||
description:
|
||||
Phandle of the regulator for CCI that provides the supply voltage.
|
||||
|
||||
sram-supply:
|
||||
description:
|
||||
Phandle of the regulator for sram of CCI that provides the supply
|
||||
voltage. When it is present, the implementation needs to do
|
||||
"voltage tracking" to step by step scale up/down Vproc and Vsram to fit
|
||||
SoC specific needs. When absent, the voltage scaling flow is handled by
|
||||
hardware, hence no software "voltage tracking" is needed.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- clocks
|
||||
- clock-names
|
||||
- operating-points-v2
|
||||
- proc-supply
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/mt8183-clk.h>
|
||||
cci: cci {
|
||||
compatible = "mediatek,mt8183-cci";
|
||||
clocks = <&mcucfg CLK_MCU_BUS_SEL>,
|
||||
<&topckgen CLK_TOP_ARMPLL_DIV_PLL1>;
|
||||
clock-names = "cci", "intermediate";
|
||||
operating-points-v2 = <&cci_opp>;
|
||||
proc-supply = <&mt6358_vproc12_reg>;
|
||||
};
|
||||
|
||||
cci_opp: opp-table-cci {
|
||||
compatible = "operating-points-v2";
|
||||
opp-shared;
|
||||
opp2_00: opp-273000000 {
|
||||
opp-hz = /bits/ 64 <273000000>;
|
||||
opp-microvolt = <650000>;
|
||||
};
|
||||
opp2_01: opp-338000000 {
|
||||
opp-hz = /bits/ 64 <338000000>;
|
||||
opp-microvolt = <687500>;
|
||||
};
|
||||
opp2_02: opp-403000000 {
|
||||
opp-hz = /bits/ 64 <403000000>;
|
||||
opp-microvolt = <718750>;
|
||||
};
|
||||
opp2_03: opp-463000000 {
|
||||
opp-hz = /bits/ 64 <463000000>;
|
||||
opp-microvolt = <756250>;
|
||||
};
|
||||
opp2_04: opp-546000000 {
|
||||
opp-hz = /bits/ 64 <546000000>;
|
||||
opp-microvolt = <800000>;
|
||||
};
|
||||
opp2_05: opp-624000000 {
|
||||
opp-hz = /bits/ 64 <624000000>;
|
||||
opp-microvolt = <818750>;
|
||||
};
|
||||
opp2_06: opp-689000000 {
|
||||
opp-hz = /bits/ 64 <689000000>;
|
||||
opp-microvolt = <850000>;
|
||||
};
|
||||
opp2_07: opp-767000000 {
|
||||
opp-hz = /bits/ 64 <767000000>;
|
||||
opp-microvolt = <868750>;
|
||||
};
|
||||
opp2_08: opp-845000000 {
|
||||
opp-hz = /bits/ 64 <845000000>;
|
||||
opp-microvolt = <893750>;
|
||||
};
|
||||
opp2_09: opp-871000000 {
|
||||
opp-hz = /bits/ 64 <871000000>;
|
||||
opp-microvolt = <906250>;
|
||||
};
|
||||
opp2_10: opp-923000000 {
|
||||
opp-hz = /bits/ 64 <923000000>;
|
||||
opp-microvolt = <931250>;
|
||||
};
|
||||
opp2_11: opp-962000000 {
|
||||
opp-hz = /bits/ 64 <962000000>;
|
||||
opp-microvolt = <943750>;
|
||||
};
|
||||
opp2_12: opp-1027000000 {
|
||||
opp-hz = /bits/ 64 <1027000000>;
|
||||
opp-microvolt = <975000>;
|
||||
};
|
||||
opp2_13: opp-1092000000 {
|
||||
opp-hz = /bits/ 64 <1092000000>;
|
||||
opp-microvolt = <1000000>;
|
||||
};
|
||||
opp2_14: opp-1144000000 {
|
||||
opp-hz = /bits/ 64 <1144000000>;
|
||||
opp-microvolt = <1025000>;
|
||||
};
|
||||
opp2_15: opp-1196000000 {
|
||||
opp-hz = /bits/ 64 <1196000000>;
|
||||
opp-microvolt = <1050000>;
|
||||
};
|
||||
};
|
65
bindings/interconnect/qcom,bcm-voter.yaml
Normal file
65
bindings/interconnect/qcom,bcm-voter.yaml
Normal file
@@ -0,0 +1,65 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/interconnect/qcom,bcm-voter.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm BCM-Voter Interconnect
|
||||
|
||||
maintainers:
|
||||
- Georgi Djakov <georgi.djakov@linaro.org>
|
||||
|
||||
description: |
|
||||
The Bus Clock Manager (BCM) is a dedicated hardware accelerator that manages
|
||||
shared system resources by aggregating requests from multiple Resource State
|
||||
Coordinators (RSC). Interconnect providers are able to vote for aggregated
|
||||
thresholds values from consumers by communicating through their respective
|
||||
RSCs.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,bcm-voter
|
||||
|
||||
qcom,tcs-wait:
|
||||
description: |
|
||||
Optional mask of which TCSs (Triggered Command Sets) wait for completion
|
||||
upon triggering. If not specified, then the AMC and WAKE sets wait for
|
||||
completion. The mask bits are available in the QCOM_ICC_TAG_* defines.
|
||||
|
||||
The AMC TCS is triggered immediately when icc_set_bw() is called. The
|
||||
WAKE/SLEEP TCSs are triggered when the RSC transitions between active and
|
||||
sleep modes.
|
||||
|
||||
In most cases, it's necessary to wait in both the AMC and WAKE sets to
|
||||
ensure resources are available before use. If a specific RSC and its use
|
||||
cases can ensure sufficient delay by other means, then this can be
|
||||
overridden to reduce latencies.
|
||||
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
# Example 1: apps bcm_voter on SDM845 SoC should be defined inside &apps_rsc node
|
||||
# as defined in Documentation/devicetree/bindings/soc/qcom/qcom,rpmh-rsc.yaml
|
||||
- |
|
||||
|
||||
apps_bcm_voter: bcm-voter {
|
||||
compatible = "qcom,bcm-voter";
|
||||
};
|
||||
|
||||
# Example 2: disp bcm_voter on SDM845 should be defined inside &disp_rsc node
|
||||
# as defined in Documentation/devicetree/bindings/soc/qcom/qcom,rpmh-rsc.yaml
|
||||
- |
|
||||
|
||||
#include <dt-bindings/interconnect/qcom,icc.h>
|
||||
|
||||
disp_bcm_voter: bcm-voter {
|
||||
compatible = "qcom,bcm-voter";
|
||||
qcom,tcs-wait = <QCOM_ICC_TAG_AMC>;
|
||||
};
|
||||
...
|
62
bindings/interconnect/qcom,msm8974.yaml
Normal file
62
bindings/interconnect/qcom,msm8974.yaml
Normal file
@@ -0,0 +1,62 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/interconnect/qcom,msm8974.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm MSM8974 Network-On-Chip Interconnect
|
||||
|
||||
maintainers:
|
||||
- Brian Masney <masneyb@onstation.org>
|
||||
|
||||
description: |
|
||||
The Qualcomm MSM8974 interconnect providers support setting system
|
||||
bandwidth requirements between various network-on-chip fabrics.
|
||||
|
||||
properties:
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,msm8974-bimc
|
||||
- qcom,msm8974-cnoc
|
||||
- qcom,msm8974-mmssnoc
|
||||
- qcom,msm8974-ocmemnoc
|
||||
- qcom,msm8974-pnoc
|
||||
- qcom,msm8974-snoc
|
||||
|
||||
'#interconnect-cells':
|
||||
const: 1
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: bus
|
||||
- const: bus_a
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: Bus Clock
|
||||
- description: Bus A Clock
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- '#interconnect-cells'
|
||||
- clock-names
|
||||
- clocks
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/qcom,rpmcc.h>
|
||||
|
||||
bimc: interconnect@fc380000 {
|
||||
reg = <0xfc380000 0x6a000>;
|
||||
compatible = "qcom,msm8974-bimc";
|
||||
#interconnect-cells = <1>;
|
||||
clock-names = "bus", "bus_a";
|
||||
clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
|
||||
<&rpmcc RPM_SMD_BIMC_A_CLK>;
|
||||
};
|
90
bindings/interconnect/qcom,msm8998-bwmon.yaml
Normal file
90
bindings/interconnect/qcom,msm8998-bwmon.yaml
Normal file
@@ -0,0 +1,90 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/interconnect/qcom,msm8998-bwmon.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm Interconnect Bandwidth Monitor
|
||||
|
||||
maintainers:
|
||||
- Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
|
||||
|
||||
description: |
|
||||
Bandwidth Monitor measures current throughput on buses between various NoC
|
||||
fabrics and provides information when it crosses configured thresholds.
|
||||
|
||||
Certain SoCs might have more than one Bandwidth Monitors, for example on SDM845::
|
||||
- Measuring the bandwidth between CPUs and Last Level Cache Controller -
|
||||
called just BWMON,
|
||||
- Measuring the bandwidth between Last Level Cache Controller and memory
|
||||
(DDR) - called LLCC BWMON.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- items:
|
||||
- enum:
|
||||
- qcom,sc7280-cpu-bwmon
|
||||
- qcom,sdm845-bwmon
|
||||
- const: qcom,msm8998-bwmon
|
||||
- const: qcom,msm8998-bwmon # BWMON v4
|
||||
- const: qcom,sc7280-llcc-bwmon # BWMON v5
|
||||
- const: qcom,sdm845-llcc-bwmon # BWMON v5
|
||||
|
||||
interconnects:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
operating-points-v2: true
|
||||
opp-table:
|
||||
type: object
|
||||
|
||||
reg:
|
||||
# BWMON v4 (currently described) and BWMON v5 use one register address
|
||||
# space. BWMON v2 uses two register spaces - not yet described.
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- interconnects
|
||||
- interrupts
|
||||
- operating-points-v2
|
||||
- opp-table
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interconnect/qcom,sdm845.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
pmu@1436400 {
|
||||
compatible = "qcom,sdm845-bwmon", "qcom,msm8998-bwmon";
|
||||
reg = <0x01436400 0x600>;
|
||||
interrupts = <GIC_SPI 581 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_LLCC 3>;
|
||||
|
||||
operating-points-v2 = <&cpu_bwmon_opp_table>;
|
||||
|
||||
cpu_bwmon_opp_table: opp-table {
|
||||
compatible = "operating-points-v2";
|
||||
opp-0 {
|
||||
opp-peak-kBps = <4800000>;
|
||||
};
|
||||
opp-1 {
|
||||
opp-peak-kBps = <9216000>;
|
||||
};
|
||||
opp-2 {
|
||||
opp-peak-kBps = <15052800>;
|
||||
};
|
||||
opp-3 {
|
||||
opp-peak-kBps = <20889600>;
|
||||
};
|
||||
opp-4 {
|
||||
opp-peak-kBps = <25497600>;
|
||||
};
|
||||
};
|
||||
};
|
66
bindings/interconnect/qcom,osm-l3.yaml
Normal file
66
bindings/interconnect/qcom,osm-l3.yaml
Normal file
@@ -0,0 +1,66 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/interconnect/qcom,osm-l3.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm Operating State Manager (OSM) L3 Interconnect Provider
|
||||
|
||||
maintainers:
|
||||
- Sibi Sankar <quic_sibis@quicinc.com>
|
||||
|
||||
description:
|
||||
L3 cache bandwidth requirements on Qualcomm SoCs is serviced by the OSM.
|
||||
The OSM L3 interconnect provider aggregates the L3 bandwidth requests
|
||||
from CPU/GPU and relays it to the OSM.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,sc7180-osm-l3
|
||||
- qcom,sc7280-epss-l3
|
||||
- qcom,sc8180x-osm-l3
|
||||
- qcom,sdm845-osm-l3
|
||||
- qcom,sm8150-osm-l3
|
||||
- qcom,sm8250-epss-l3
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: xo clock
|
||||
- description: alternate clock
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: xo
|
||||
- const: alternate
|
||||
|
||||
'#interconnect-cells':
|
||||
const: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- clock-names
|
||||
- '#interconnect-cells'
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
|
||||
#define GPLL0 165
|
||||
#define RPMH_CXO_CLK 0
|
||||
|
||||
osm_l3: interconnect@17d41000 {
|
||||
compatible = "qcom,sdm845-osm-l3";
|
||||
reg = <0x17d41000 0x1400>;
|
||||
|
||||
clocks = <&rpmhcc RPMH_CXO_CLK>, <&gcc GPLL0>;
|
||||
clock-names = "xo", "alternate";
|
||||
|
||||
#interconnect-cells = <1>;
|
||||
};
|
137
bindings/interconnect/qcom,qcm2290.yaml
Normal file
137
bindings/interconnect/qcom,qcm2290.yaml
Normal file
@@ -0,0 +1,137 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/interconnect/qcom,qcm2290.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm QCM2290 Network-On-Chip interconnect
|
||||
|
||||
maintainers:
|
||||
- Shawn Guo <shawn.guo@linaro.org>
|
||||
|
||||
description: |
|
||||
The Qualcomm QCM2290 interconnect providers support adjusting the
|
||||
bandwidth requirements between the various NoC fabrics.
|
||||
|
||||
properties:
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,qcm2290-bimc
|
||||
- qcom,qcm2290-cnoc
|
||||
- qcom,qcm2290-snoc
|
||||
|
||||
'#interconnect-cells':
|
||||
const: 1
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: bus
|
||||
- const: bus_a
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: Bus Clock
|
||||
- description: Bus A Clock
|
||||
|
||||
# Child node's properties
|
||||
patternProperties:
|
||||
'^interconnect-[a-z0-9]+$':
|
||||
type: object
|
||||
description:
|
||||
The interconnect providers do not have a separate QoS register space,
|
||||
but share parent's space.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,qcm2290-qup-virt
|
||||
- qcom,qcm2290-mmrt-virt
|
||||
- qcom,qcm2290-mmnrt-virt
|
||||
|
||||
'#interconnect-cells':
|
||||
const: 1
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: bus
|
||||
- const: bus_a
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: Bus Clock
|
||||
- description: Bus A Clock
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- '#interconnect-cells'
|
||||
- clock-names
|
||||
- clocks
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- '#interconnect-cells'
|
||||
- clock-names
|
||||
- clocks
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/qcom,rpmcc.h>
|
||||
|
||||
snoc: interconnect@1880000 {
|
||||
compatible = "qcom,qcm2290-snoc";
|
||||
reg = <0x01880000 0x60200>;
|
||||
#interconnect-cells = <1>;
|
||||
clock-names = "bus", "bus_a";
|
||||
clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
|
||||
<&rpmcc RPM_SMD_SNOC_A_CLK>;
|
||||
|
||||
qup_virt: interconnect-qup {
|
||||
compatible = "qcom,qcm2290-qup-virt";
|
||||
#interconnect-cells = <1>;
|
||||
clock-names = "bus", "bus_a";
|
||||
clocks = <&rpmcc RPM_SMD_QUP_CLK>,
|
||||
<&rpmcc RPM_SMD_QUP_A_CLK>;
|
||||
};
|
||||
|
||||
mmnrt_virt: interconnect-mmnrt {
|
||||
compatible = "qcom,qcm2290-mmnrt-virt";
|
||||
#interconnect-cells = <1>;
|
||||
clock-names = "bus", "bus_a";
|
||||
clocks = <&rpmcc RPM_SMD_MMNRT_CLK>,
|
||||
<&rpmcc RPM_SMD_MMNRT_A_CLK>;
|
||||
};
|
||||
|
||||
mmrt_virt: interconnect-mmrt {
|
||||
compatible = "qcom,qcm2290-mmrt-virt";
|
||||
#interconnect-cells = <1>;
|
||||
clock-names = "bus", "bus_a";
|
||||
clocks = <&rpmcc RPM_SMD_MMRT_CLK>,
|
||||
<&rpmcc RPM_SMD_MMRT_A_CLK>;
|
||||
};
|
||||
};
|
||||
|
||||
cnoc: interconnect@1900000 {
|
||||
compatible = "qcom,qcm2290-cnoc";
|
||||
reg = <0x01900000 0x8200>;
|
||||
#interconnect-cells = <1>;
|
||||
clock-names = "bus", "bus_a";
|
||||
clocks = <&rpmcc RPM_SMD_CNOC_CLK>,
|
||||
<&rpmcc RPM_SMD_CNOC_A_CLK>;
|
||||
};
|
||||
|
||||
bimc: interconnect@4480000 {
|
||||
compatible = "qcom,qcm2290-bimc";
|
||||
reg = <0x04480000 0x80000>;
|
||||
#interconnect-cells = <1>;
|
||||
clock-names = "bus", "bus_a";
|
||||
clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
|
||||
<&rpmcc RPM_SMD_BIMC_A_CLK>;
|
||||
};
|
247
bindings/interconnect/qcom,rpm.yaml
Normal file
247
bindings/interconnect/qcom,rpm.yaml
Normal file
@@ -0,0 +1,247 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/interconnect/qcom,rpm.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm RPM Network-On-Chip Interconnect
|
||||
|
||||
maintainers:
|
||||
- Georgi Djakov <georgi.djakov@linaro.org>
|
||||
|
||||
description: |
|
||||
RPM interconnect providers support system bandwidth requirements through
|
||||
RPM processor. The provider is able to communicate with the RPM through
|
||||
the RPM shared memory device.
|
||||
|
||||
properties:
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,msm8916-bimc
|
||||
- qcom,msm8916-pcnoc
|
||||
- qcom,msm8916-snoc
|
||||
- qcom,msm8939-bimc
|
||||
- qcom,msm8939-pcnoc
|
||||
- qcom,msm8939-snoc
|
||||
- qcom,msm8996-a0noc
|
||||
- qcom,msm8996-a1noc
|
||||
- qcom,msm8996-a2noc
|
||||
- qcom,msm8996-bimc
|
||||
- qcom,msm8996-cnoc
|
||||
- qcom,msm8996-mnoc
|
||||
- qcom,msm8996-pnoc
|
||||
- qcom,msm8996-snoc
|
||||
- qcom,qcs404-bimc
|
||||
- qcom,qcs404-pcnoc
|
||||
- qcom,qcs404-snoc
|
||||
- qcom,sdm660-a2noc
|
||||
- qcom,sdm660-bimc
|
||||
- qcom,sdm660-cnoc
|
||||
- qcom,sdm660-gnoc
|
||||
- qcom,sdm660-mnoc
|
||||
- qcom,sdm660-snoc
|
||||
|
||||
'#interconnect-cells':
|
||||
description: |
|
||||
Value: <1> is one cell in an interconnect specifier for the
|
||||
interconnect node id, <2> requires the interconnect node id and an
|
||||
extra path tag.
|
||||
enum: [ 1, 2 ]
|
||||
|
||||
clocks:
|
||||
minItems: 2
|
||||
maxItems: 7
|
||||
|
||||
clock-names:
|
||||
minItems: 2
|
||||
maxItems: 7
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- '#interconnect-cells'
|
||||
- clock-names
|
||||
- clocks
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- qcom,msm8916-bimc
|
||||
- qcom,msm8916-pcnoc
|
||||
- qcom,msm8916-snoc
|
||||
- qcom,msm8939-bimc
|
||||
- qcom,msm8939-pcnoc
|
||||
- qcom,msm8939-snoc
|
||||
- qcom,msm8996-a1noc
|
||||
- qcom,msm8996-a2noc
|
||||
- qcom,msm8996-bimc
|
||||
- qcom,msm8996-cnoc
|
||||
- qcom,msm8996-pnoc
|
||||
- qcom,msm8996-snoc
|
||||
- qcom,qcs404-bimc
|
||||
- qcom,qcs404-pcnoc
|
||||
- qcom,qcs404-snoc
|
||||
- qcom,sdm660-bimc
|
||||
- qcom,sdm660-cnoc
|
||||
- qcom,sdm660-gnoc
|
||||
- qcom,sdm660-snoc
|
||||
|
||||
then:
|
||||
properties:
|
||||
clock-names:
|
||||
items:
|
||||
- const: bus
|
||||
- const: bus_a
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: Bus Clock
|
||||
- description: Bus A Clock
|
||||
|
||||
# Child node's properties
|
||||
patternProperties:
|
||||
'^interconnect-[a-z0-9]+$':
|
||||
type: object
|
||||
description:
|
||||
snoc-mm is a child of snoc, sharing snoc's register address space.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,msm8939-snoc-mm
|
||||
|
||||
'#interconnect-cells':
|
||||
const: 1
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: bus
|
||||
- const: bus_a
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: Bus Clock
|
||||
- description: Bus A Clock
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- '#interconnect-cells'
|
||||
- clock-names
|
||||
- clocks
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- qcom,msm8996-mnoc
|
||||
- qcom,sdm660-mnoc
|
||||
|
||||
then:
|
||||
properties:
|
||||
clock-names:
|
||||
items:
|
||||
- const: bus
|
||||
- const: bus_a
|
||||
- const: iface
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: Bus Clock.
|
||||
- description: Bus A Clock.
|
||||
- description: CPU-NoC High-performance Bus Clock.
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- qcom,msm8996-a0noc
|
||||
|
||||
then:
|
||||
properties:
|
||||
clock-names:
|
||||
items:
|
||||
- const: aggre0_snoc_axi
|
||||
- const: aggre0_cnoc_ahb
|
||||
- const: aggre0_noc_mpu_cfg
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: Aggregate0 System NoC AXI Clock.
|
||||
- description: Aggregate0 Config NoC AHB Clock.
|
||||
- description: Aggregate0 NoC MPU Clock.
|
||||
|
||||
required:
|
||||
- power-domains
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- qcom,sdm660-a2noc
|
||||
|
||||
then:
|
||||
properties:
|
||||
clock-names:
|
||||
items:
|
||||
- const: bus
|
||||
- const: bus_a
|
||||
- const: ipa
|
||||
- const: ufs_axi
|
||||
- const: aggre2_ufs_axi
|
||||
- const: aggre2_usb3_axi
|
||||
- const: cfg_noc_usb2_axi
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: Bus Clock.
|
||||
- description: Bus A Clock.
|
||||
- description: IPA Clock.
|
||||
- description: UFS AXI Clock.
|
||||
- description: Aggregate2 UFS AXI Clock.
|
||||
- description: Aggregate2 USB3 AXI Clock.
|
||||
- description: Config NoC USB2 AXI Clock.
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/qcom,rpmcc.h>
|
||||
|
||||
bimc: interconnect@400000 {
|
||||
compatible = "qcom,msm8916-bimc";
|
||||
reg = <0x00400000 0x62000>;
|
||||
#interconnect-cells = <1>;
|
||||
clock-names = "bus", "bus_a";
|
||||
clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
|
||||
<&rpmcc RPM_SMD_BIMC_A_CLK>;
|
||||
};
|
||||
|
||||
pcnoc: interconnect@500000 {
|
||||
compatible = "qcom,msm8916-pcnoc";
|
||||
reg = <0x00500000 0x11000>;
|
||||
#interconnect-cells = <1>;
|
||||
clock-names = "bus", "bus_a";
|
||||
clocks = <&rpmcc RPM_SMD_PCNOC_CLK>,
|
||||
<&rpmcc RPM_SMD_PCNOC_A_CLK>;
|
||||
};
|
||||
|
||||
snoc: interconnect@580000 {
|
||||
compatible = "qcom,msm8916-snoc";
|
||||
reg = <0x00580000 0x14000>;
|
||||
#interconnect-cells = <1>;
|
||||
clock-names = "bus", "bus_a";
|
||||
clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
|
||||
<&rpmcc RPM_SMD_SNOC_A_CLK>;
|
||||
};
|
43
bindings/interconnect/qcom,rpmh-common.yaml
Normal file
43
bindings/interconnect/qcom,rpmh-common.yaml
Normal file
@@ -0,0 +1,43 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/interconnect/qcom,rpmh-common.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm RPMh Network-On-Chip Interconnect
|
||||
|
||||
maintainers:
|
||||
- Georgi Djakov <djakov@kernel.org>
|
||||
- Bjorn Andersson <bjorn.andersson@linaro.org>
|
||||
|
||||
description:
|
||||
RPMh interconnect providers support system bandwidth requirements through
|
||||
RPMh hardware accelerators known as Bus Clock Manager (BCM). The provider is
|
||||
able to communicate with the BCM through the Resource State Coordinator (RSC)
|
||||
associated with each execution environment. Provider nodes must point to at
|
||||
least one RPMh device child node pertaining to their RSC and each provider
|
||||
can map to multiple RPMh resources.
|
||||
|
||||
properties:
|
||||
'#interconnect-cells':
|
||||
enum: [ 1, 2 ]
|
||||
|
||||
qcom,bcm-voters:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle-array
|
||||
items:
|
||||
maxItems: 1
|
||||
maxItems: 2
|
||||
description:
|
||||
List of phandles to qcom,bcm-voter nodes that are required by
|
||||
this interconnect to send RPMh commands.
|
||||
|
||||
qcom,bcm-voter-names:
|
||||
maxItems: 2
|
||||
description:
|
||||
Names for each of the qcom,bcm-voters specified.
|
||||
|
||||
required:
|
||||
- '#interconnect-cells'
|
||||
- qcom,bcm-voters
|
||||
|
||||
additionalProperties: true
|
161
bindings/interconnect/qcom,rpmh.yaml
Normal file
161
bindings/interconnect/qcom,rpmh.yaml
Normal file
@@ -0,0 +1,161 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/interconnect/qcom,rpmh.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm RPMh Network-On-Chip Interconnect
|
||||
|
||||
maintainers:
|
||||
- Georgi Djakov <georgi.djakov@linaro.org>
|
||||
- Odelu Kukatla <okukatla@codeaurora.org>
|
||||
|
||||
description: |
|
||||
RPMh interconnect providers support system bandwidth requirements through
|
||||
RPMh hardware accelerators known as Bus Clock Manager (BCM). The provider is
|
||||
able to communicate with the BCM through the Resource State Coordinator (RSC)
|
||||
associated with each execution environment. Provider nodes must point to at
|
||||
least one RPMh device child node pertaining to their RSC and each provider
|
||||
can map to multiple RPMh resources.
|
||||
|
||||
allOf:
|
||||
- $ref: qcom,rpmh-common.yaml#
|
||||
|
||||
properties:
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,sc7180-aggre1-noc
|
||||
- qcom,sc7180-aggre2-noc
|
||||
- qcom,sc7180-camnoc-virt
|
||||
- qcom,sc7180-compute-noc
|
||||
- qcom,sc7180-config-noc
|
||||
- qcom,sc7180-dc-noc
|
||||
- qcom,sc7180-gem-noc
|
||||
- qcom,sc7180-mc-virt
|
||||
- qcom,sc7180-mmss-noc
|
||||
- qcom,sc7180-npu-noc
|
||||
- qcom,sc7180-qup-virt
|
||||
- qcom,sc7180-system-noc
|
||||
- qcom,sc7280-aggre1-noc
|
||||
- qcom,sc7280-aggre2-noc
|
||||
- qcom,sc7280-clk-virt
|
||||
- qcom,sc7280-cnoc2
|
||||
- qcom,sc7280-cnoc3
|
||||
- qcom,sc7280-dc-noc
|
||||
- qcom,sc7280-gem-noc
|
||||
- qcom,sc7280-lpass-ag-noc
|
||||
- qcom,sc7280-mc-virt
|
||||
- qcom,sc7280-mmss-noc
|
||||
- qcom,sc7280-nsp-noc
|
||||
- qcom,sc7280-system-noc
|
||||
- qcom,sc8180x-aggre1-noc
|
||||
- qcom,sc8180x-aggre2-noc
|
||||
- qcom,sc8180x-camnoc-virt
|
||||
- qcom,sc8180x-compute-noc
|
||||
- qcom,sc8180x-config-noc
|
||||
- qcom,sc8180x-dc-noc
|
||||
- qcom,sc8180x-gem-noc
|
||||
- qcom,sc8180x-ipa-virt
|
||||
- qcom,sc8180x-mc-virt
|
||||
- qcom,sc8180x-mmss-noc
|
||||
- qcom,sc8180x-qup-virt
|
||||
- qcom,sc8180x-system-noc
|
||||
- qcom,sc8280xp-aggre1-noc
|
||||
- qcom,sc8280xp-aggre2-noc
|
||||
- qcom,sc8280xp-clk-virt
|
||||
- qcom,sc8280xp-config-noc
|
||||
- qcom,sc8280xp-dc-noc
|
||||
- qcom,sc8280xp-gem-noc
|
||||
- qcom,sc8280xp-lpass-ag-noc
|
||||
- qcom,sc8280xp-mc-virt
|
||||
- qcom,sc8280xp-mmss-noc
|
||||
- qcom,sc8280xp-nspa-noc
|
||||
- qcom,sc8280xp-nspb-noc
|
||||
- qcom,sc8280xp-system-noc
|
||||
- qcom,sdm845-aggre1-noc
|
||||
- qcom,sdm845-aggre2-noc
|
||||
- qcom,sdm845-config-noc
|
||||
- qcom,sdm845-dc-noc
|
||||
- qcom,sdm845-gladiator-noc
|
||||
- qcom,sdm845-mem-noc
|
||||
- qcom,sdm845-mmss-noc
|
||||
- qcom,sdm845-system-noc
|
||||
- qcom,sdx55-mc-virt
|
||||
- qcom,sdx55-mem-noc
|
||||
- qcom,sdx55-system-noc
|
||||
- qcom,sdx65-mc-virt
|
||||
- qcom,sdx65-mem-noc
|
||||
- qcom,sdx65-system-noc
|
||||
- qcom,sm8150-aggre1-noc
|
||||
- qcom,sm8150-aggre2-noc
|
||||
- qcom,sm8150-camnoc-noc
|
||||
- qcom,sm8150-compute-noc
|
||||
- qcom,sm8150-config-noc
|
||||
- qcom,sm8150-dc-noc
|
||||
- qcom,sm8150-gem-noc
|
||||
- qcom,sm8150-ipa-virt
|
||||
- qcom,sm8150-mc-virt
|
||||
- qcom,sm8150-mmss-noc
|
||||
- qcom,sm8150-system-noc
|
||||
- qcom,sm8250-aggre1-noc
|
||||
- qcom,sm8250-aggre2-noc
|
||||
- qcom,sm8250-compute-noc
|
||||
- qcom,sm8250-config-noc
|
||||
- qcom,sm8250-dc-noc
|
||||
- qcom,sm8250-gem-noc
|
||||
- qcom,sm8250-ipa-virt
|
||||
- qcom,sm8250-mc-virt
|
||||
- qcom,sm8250-mmss-noc
|
||||
- qcom,sm8250-npu-noc
|
||||
- qcom,sm8250-system-noc
|
||||
- qcom,sm8350-aggre1-noc
|
||||
- qcom,sm8350-aggre2-noc
|
||||
- qcom,sm8350-config-noc
|
||||
- qcom,sm8350-dc-noc
|
||||
- qcom,sm8350-gem-noc
|
||||
- qcom,sm8350-lpass-ag-noc
|
||||
- qcom,sm8350-mc-virt
|
||||
- qcom,sm8350-mmss-noc
|
||||
- qcom,sm8350-compute-noc
|
||||
- qcom,sm8350-system-noc
|
||||
- qcom,sm8450-aggre1-noc
|
||||
- qcom,sm8450-aggre2-noc
|
||||
- qcom,sm8450-clk-virt
|
||||
- qcom,sm8450-config-noc
|
||||
- qcom,sm8450-gem-noc
|
||||
- qcom,sm8450-lpass-ag-noc
|
||||
- qcom,sm8450-mc-virt
|
||||
- qcom,sm8450-mmss-noc
|
||||
- qcom,sm8450-nsp-noc
|
||||
- qcom,sm8450-pcie-anoc
|
||||
- qcom,sm8450-system-noc
|
||||
|
||||
'#interconnect-cells': true
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interconnect/qcom,sdm845.h>
|
||||
|
||||
mem_noc: interconnect@1380000 {
|
||||
compatible = "qcom,sdm845-mem-noc";
|
||||
reg = <0x01380000 0x27200>;
|
||||
#interconnect-cells = <1>;
|
||||
qcom,bcm-voters = <&apps_bcm_voter>;
|
||||
};
|
||||
|
||||
mmss_noc: interconnect@1740000 {
|
||||
compatible = "qcom,sdm845-mmss-noc";
|
||||
reg = <0x01740000 0x1c1000>;
|
||||
#interconnect-cells = <1>;
|
||||
qcom,bcm-voter-names = "apps", "disp";
|
||||
qcom,bcm-voters = <&apps_bcm_voter>, <&disp_bcm_voter>;
|
||||
};
|
82
bindings/interconnect/qcom,sm6350-rpmh.yaml
Normal file
82
bindings/interconnect/qcom,sm6350-rpmh.yaml
Normal file
@@ -0,0 +1,82 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/interconnect/qcom,sm6350-rpmh.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm SM6350 RPMh Network-On-Chip Interconnect
|
||||
|
||||
maintainers:
|
||||
- Luca Weiss <luca.weiss@fairphone.com>
|
||||
|
||||
description:
|
||||
Qualcomm RPMh-based interconnect provider on SM6350.
|
||||
|
||||
allOf:
|
||||
- $ref: qcom,rpmh-common.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,sm6350-aggre1-noc
|
||||
- qcom,sm6350-aggre2-noc
|
||||
- qcom,sm6350-config-noc
|
||||
- qcom,sm6350-dc-noc
|
||||
- qcom,sm6350-gem-noc
|
||||
- qcom,sm6350-mmss-noc
|
||||
- qcom,sm6350-npu-noc
|
||||
- qcom,sm6350-system-noc
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
'#interconnect-cells': true
|
||||
|
||||
patternProperties:
|
||||
'^interconnect-[a-z0-9\-]+$':
|
||||
type: object
|
||||
description:
|
||||
The interconnect providers do not have a separate QoS register space,
|
||||
but share parent's space.
|
||||
$ref: qcom,rpmh-common.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,sm6350-clk-virt
|
||||
- qcom,sm6350-compute-noc
|
||||
|
||||
'#interconnect-cells': true
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
config_noc: interconnect@1500000 {
|
||||
compatible = "qcom,sm6350-config-noc";
|
||||
reg = <0x01500000 0x28000>;
|
||||
#interconnect-cells = <2>;
|
||||
qcom,bcm-voters = <&apps_bcm_voter>;
|
||||
};
|
||||
|
||||
system_noc: interconnect@1620000 {
|
||||
compatible = "qcom,sm6350-system-noc";
|
||||
reg = <0x01620000 0x17080>;
|
||||
#interconnect-cells = <2>;
|
||||
qcom,bcm-voters = <&apps_bcm_voter>;
|
||||
|
||||
clk_virt: interconnect-clk-virt {
|
||||
compatible = "qcom,sm6350-clk-virt";
|
||||
#interconnect-cells = <2>;
|
||||
qcom,bcm-voters = <&apps_bcm_voter>;
|
||||
};
|
||||
};
|
290
bindings/interconnect/samsung,exynos-bus.yaml
Normal file
290
bindings/interconnect/samsung,exynos-bus.yaml
Normal file
@@ -0,0 +1,290 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/interconnect/samsung,exynos-bus.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Samsung Exynos SoC Bus and Interconnect
|
||||
|
||||
maintainers:
|
||||
- Chanwoo Choi <cw00.choi@samsung.com>
|
||||
- Krzysztof Kozlowski <krzk@kernel.org>
|
||||
|
||||
description: |
|
||||
The Samsung Exynos SoC has many buses for data transfer between DRAM and
|
||||
sub-blocks in SoC. Most Exynos SoCs share the common architecture for buses.
|
||||
Generally, each bus of Exynos SoC includes a source clock and a power line,
|
||||
which are able to change the clock frequency of the bus in runtime. To
|
||||
monitor the usage of each bus in runtime, the driver uses the PPMU (Platform
|
||||
Performance Monitoring Unit), which is able to measure the current load of
|
||||
sub-blocks.
|
||||
|
||||
The Exynos SoC includes the various sub-blocks which have the each AXI bus.
|
||||
The each AXI bus has the owned source clock but, has not the only owned power
|
||||
line. The power line might be shared among one more sub-blocks. So, we can
|
||||
divide into two type of device as the role of each sub-block. There are two
|
||||
type of bus devices as following::
|
||||
- parent bus device
|
||||
- passive bus device
|
||||
|
||||
Basically, parent and passive bus device share the same power line. The
|
||||
parent bus device can only change the voltage of shared power line and the
|
||||
rest bus devices (passive bus device) depend on the decision of the parent
|
||||
bus device. If there are three blocks which share the VDD_xxx power line,
|
||||
Only one block should be parent device and then the rest blocks should depend
|
||||
on the parent device as passive device.
|
||||
|
||||
VDD_xxx |--- A block (parent)
|
||||
|--- B block (passive)
|
||||
|--- C block (passive)
|
||||
|
||||
There are a little different composition among Exynos SoC because each Exynos
|
||||
SoC has different sub-blocks. Therefore, such difference should be specified
|
||||
in devicetree file instead of each device driver. In result, this driver is
|
||||
able to support the bus frequency for all Exynos SoCs.
|
||||
|
||||
Detailed correlation between sub-blocks and power line according
|
||||
to Exynos SoC::
|
||||
- In case of Exynos3250, there are two power line as following::
|
||||
VDD_MIF |--- DMC (Dynamic Memory Controller)
|
||||
|
||||
VDD_INT |--- LEFTBUS (parent device)
|
||||
|--- PERIL
|
||||
|--- MFC
|
||||
|--- G3D
|
||||
|--- RIGHTBUS
|
||||
|--- PERIR
|
||||
|--- FSYS
|
||||
|--- LCD0
|
||||
|--- PERIR
|
||||
|--- ISP
|
||||
|--- CAM
|
||||
|
||||
- MIF bus's frequency/voltage table
|
||||
-----------------------
|
||||
|Lv| Freq | Voltage |
|
||||
-----------------------
|
||||
|L1| 50000 |800000 |
|
||||
|L2| 100000 |800000 |
|
||||
|L3| 134000 |800000 |
|
||||
|L4| 200000 |825000 |
|
||||
|L5| 400000 |875000 |
|
||||
-----------------------
|
||||
|
||||
- INT bus's frequency/voltage table
|
||||
----------------------------------------------------------
|
||||
|Block|LEFTBUS|RIGHTBUS|MCUISP |ISP |PERIL ||VDD_INT |
|
||||
| name| |LCD0 | | | || |
|
||||
| | |FSYS | | | || |
|
||||
| | |MFC | | | || |
|
||||
----------------------------------------------------------
|
||||
|Mode |*parent|passive |passive|passive|passive|| |
|
||||
----------------------------------------------------------
|
||||
|Lv |Frequency ||Voltage |
|
||||
----------------------------------------------------------
|
||||
|L1 |50000 |50000 |50000 |50000 |50000 ||900000 |
|
||||
|L2 |80000 |80000 |80000 |80000 |80000 ||900000 |
|
||||
|L3 |100000 |100000 |100000 |100000 |100000 ||1000000 |
|
||||
|L4 |134000 |134000 |200000 |200000 | ||1000000 |
|
||||
|L5 |200000 |200000 |400000 |300000 | ||1000000 |
|
||||
----------------------------------------------------------
|
||||
|
||||
- In case of Exynos4210, there is one power line as following::
|
||||
VDD_INT |--- DMC (parent device, Dynamic Memory Controller)
|
||||
|--- LEFTBUS
|
||||
|--- PERIL
|
||||
|--- MFC(L)
|
||||
|--- G3D
|
||||
|--- TV
|
||||
|--- LCD0
|
||||
|--- RIGHTBUS
|
||||
|--- PERIR
|
||||
|--- MFC(R)
|
||||
|--- CAM
|
||||
|--- FSYS
|
||||
|--- GPS
|
||||
|--- LCD0
|
||||
|--- LCD1
|
||||
|
||||
- In case of Exynos4x12, there are two power line as following::
|
||||
VDD_MIF |--- DMC (Dynamic Memory Controller)
|
||||
|
||||
VDD_INT |--- LEFTBUS (parent device)
|
||||
|--- PERIL
|
||||
|--- MFC(L)
|
||||
|--- G3D
|
||||
|--- TV
|
||||
|--- IMAGE
|
||||
|--- RIGHTBUS
|
||||
|--- PERIR
|
||||
|--- MFC(R)
|
||||
|--- CAM
|
||||
|--- FSYS
|
||||
|--- GPS
|
||||
|--- LCD0
|
||||
|--- ISP
|
||||
|
||||
- In case of Exynos5422, there are two power line as following::
|
||||
VDD_MIF |--- DREX 0 (parent device, DRAM EXpress controller)
|
||||
|--- DREX 1
|
||||
|
||||
VDD_INT |--- NoC_Core (parent device)
|
||||
|--- G2D
|
||||
|--- G3D
|
||||
|--- DISP1
|
||||
|--- NoC_WCORE
|
||||
|--- GSCL
|
||||
|--- MSCL
|
||||
|--- ISP
|
||||
|--- MFC
|
||||
|--- GEN
|
||||
|--- PERIS
|
||||
|--- PERIC
|
||||
|--- FSYS
|
||||
|--- FSYS2
|
||||
|
||||
- In case of Exynos5433, there is VDD_INT power line as following::
|
||||
VDD_INT |--- G2D (parent device)
|
||||
|--- MSCL
|
||||
|--- GSCL
|
||||
|--- JPEG
|
||||
|--- MFC
|
||||
|--- HEVC
|
||||
|--- BUS0
|
||||
|--- BUS1
|
||||
|--- BUS2
|
||||
|--- PERIS (Fixed clock rate)
|
||||
|--- PERIC (Fixed clock rate)
|
||||
|--- FSYS (Fixed clock rate)
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- samsung,exynos-bus
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: bus
|
||||
|
||||
devfreq:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle
|
||||
description:
|
||||
Parent bus device. Valid and required only for the passive bus devices.
|
||||
|
||||
devfreq-events:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle-array
|
||||
minItems: 1
|
||||
maxItems: 4
|
||||
description:
|
||||
Devfreq-event device to monitor the current utilization of buses. Valid
|
||||
and required only for the parent bus devices.
|
||||
|
||||
exynos,saturation-ratio:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description:
|
||||
Percentage value which is used to calibrate the performance count against
|
||||
total cycle count. Valid only for the parent bus devices.
|
||||
|
||||
'#interconnect-cells':
|
||||
const: 0
|
||||
|
||||
interconnects:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
|
||||
operating-points-v2: true
|
||||
|
||||
samsung,data-clock-ratio:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
default: 8
|
||||
description:
|
||||
Ratio of the data throughput in B/s to minimum data clock frequency in
|
||||
Hz.
|
||||
|
||||
vdd-supply:
|
||||
description:
|
||||
Main bus power rail. Valid and required only for the parent bus devices.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- clocks
|
||||
- clock-names
|
||||
- operating-points-v2
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/exynos3250.h>
|
||||
|
||||
bus-dmc {
|
||||
compatible = "samsung,exynos-bus";
|
||||
clocks = <&cmu_dmc CLK_DIV_DMC>;
|
||||
clock-names = "bus";
|
||||
operating-points-v2 = <&bus_dmc_opp_table>;
|
||||
devfreq-events = <&ppmu_dmc0_3>, <&ppmu_dmc1_3>;
|
||||
vdd-supply = <&buck1_reg>;
|
||||
};
|
||||
|
||||
ppmu_dmc0: ppmu@106a0000 {
|
||||
compatible = "samsung,exynos-ppmu";
|
||||
reg = <0x106a0000 0x2000>;
|
||||
events {
|
||||
ppmu_dmc0_3: ppmu-event3-dmc0 {
|
||||
event-name = "ppmu-event3-dmc0";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
bus_leftbus: bus-leftbus {
|
||||
compatible = "samsung,exynos-bus";
|
||||
clocks = <&cmu CLK_DIV_GDL>;
|
||||
clock-names = "bus";
|
||||
operating-points-v2 = <&bus_leftbus_opp_table>;
|
||||
devfreq-events = <&ppmu_leftbus_3>, <&ppmu_rightbus_3>;
|
||||
vdd-supply = <&buck3_reg>;
|
||||
};
|
||||
|
||||
bus-rightbus {
|
||||
compatible = "samsung,exynos-bus";
|
||||
clocks = <&cmu CLK_DIV_GDR>;
|
||||
clock-names = "bus";
|
||||
operating-points-v2 = <&bus_leftbus_opp_table>;
|
||||
devfreq = <&bus_leftbus>;
|
||||
};
|
||||
|
||||
- |
|
||||
dmc: bus-dmc {
|
||||
compatible = "samsung,exynos-bus";
|
||||
clocks = <&clock CLK_DIV_DMC>;
|
||||
clock-names = "bus";
|
||||
operating-points-v2 = <&bus_dmc_opp_table>;
|
||||
samsung,data-clock-ratio = <4>;
|
||||
#interconnect-cells = <0>;
|
||||
devfreq-events = <&ppmu_dmc0_3>, <&ppmu_dmc1_3>;
|
||||
vdd-supply = <&buck1_reg>;
|
||||
};
|
||||
|
||||
leftbus: bus-leftbus {
|
||||
compatible = "samsung,exynos-bus";
|
||||
clocks = <&clock CLK_DIV_GDL>;
|
||||
clock-names = "bus";
|
||||
operating-points-v2 = <&bus_leftbus_opp_table>;
|
||||
interconnects = <&dmc>;
|
||||
#interconnect-cells = <0>;
|
||||
devfreq-events = <&ppmu_leftbus_3>, <&ppmu_rightbus_3>;
|
||||
vdd-supply = <&buck3_reg>;
|
||||
};
|
||||
|
||||
display: bus-display {
|
||||
compatible = "samsung,exynos-bus";
|
||||
clocks = <&clock CLK_DIV_ACLK_266>;
|
||||
clock-names = "bus";
|
||||
operating-points-v2 = <&bus_display_opp_table>;
|
||||
interconnects = <&leftbus &dmc>;
|
||||
#interconnect-cells = <0>;
|
||||
devfreq = <&leftbus>;
|
||||
};
|
Reference in New Issue
Block a user