Skip to content

Commit cbcd30a

Browse files
committed
Merge tag 'icc-6.18-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/djakov/icc into char-misc-next
Georgi writes: interconnect changes for 6.18 This pull request contains the interconnect changes for the 6.18-rc1 merge window. It contains new driver and a minor core cleanup. Core change: - Use device_match_of_node() instead of open coding it Driver changes: - Add new driver for the Qualcomm Glymur SoC - Enable OSM L3 support for the QCS615 SoC Signed-off-by: Georgi Djakov <[email protected]> * tag 'icc-6.18-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/djakov/icc: dt-bindings: interconnect: Add OSM L3 compatible for QCS615 SoC interconnect: core: Use device_match_of_node() interconnect: qcom: add glymur interconnect provider driver interconnect: qcom: icc-rpmh: increase MAX_PORTS to support four QoS ports dt-bindings: interconnect: document the RPMh Network-On-Chip interconnect in Glymur SoC
2 parents eafedbc + bcdf7a0 commit cbcd30a

File tree

8 files changed

+2938
-2
lines changed

8 files changed

+2938
-2
lines changed
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/interconnect/qcom,glymur-rpmh.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Qualcomm RPMh Network-On-Chip Interconnect on GLYMUR
8+
9+
maintainers:
10+
- Raviteja Laggyshetty <[email protected]>
11+
12+
description: |
13+
RPMh interconnect providers support system bandwidth requirements through
14+
RPMh hardware accelerators known as Bus Clock Manager (BCM). The provider is
15+
able to communicate with the BCM through the Resource State Coordinator (RSC)
16+
associated with each execution environment. Provider nodes must point to at
17+
least one RPMh device child node pertaining to their RSC and each provider
18+
can map to multiple RPMh resources.
19+
20+
See also: include/dt-bindings/interconnect/qcom,glymur-rpmh.h
21+
22+
properties:
23+
compatible:
24+
enum:
25+
- qcom,glymur-aggre1-noc
26+
- qcom,glymur-aggre2-noc
27+
- qcom,glymur-aggre3-noc
28+
- qcom,glymur-aggre4-noc
29+
- qcom,glymur-clk-virt
30+
- qcom,glymur-cnoc-cfg
31+
- qcom,glymur-cnoc-main
32+
- qcom,glymur-hscnoc
33+
- qcom,glymur-lpass-ag-noc
34+
- qcom,glymur-lpass-lpiaon-noc
35+
- qcom,glymur-lpass-lpicx-noc
36+
- qcom,glymur-mc-virt
37+
- qcom,glymur-mmss-noc
38+
- qcom,glymur-nsinoc
39+
- qcom,glymur-nsp-noc
40+
- qcom,glymur-oobm-ss-noc
41+
- qcom,glymur-pcie-east-anoc
42+
- qcom,glymur-pcie-east-slv-noc
43+
- qcom,glymur-pcie-west-anoc
44+
- qcom,glymur-pcie-west-slv-noc
45+
- qcom,glymur-system-noc
46+
47+
reg:
48+
maxItems: 1
49+
50+
clocks:
51+
minItems: 1
52+
maxItems: 4
53+
54+
required:
55+
- compatible
56+
57+
allOf:
58+
- $ref: qcom,rpmh-common.yaml#
59+
- if:
60+
properties:
61+
compatible:
62+
contains:
63+
enum:
64+
- qcom,glymur-clk-virt
65+
- qcom,glymur-mc-virt
66+
then:
67+
properties:
68+
reg: false
69+
else:
70+
required:
71+
- reg
72+
73+
- if:
74+
properties:
75+
compatible:
76+
contains:
77+
enum:
78+
- qcom,glymur-pcie-west-anoc
79+
then:
80+
properties:
81+
clocks:
82+
items:
83+
- description: aggre PCIE_3A WEST AXI clock
84+
- description: aggre PCIE_3B WEST AXI clock
85+
- description: aggre PCIE_4 WEST AXI clock
86+
- description: aggre PCIE_6 WEST AXI clock
87+
88+
- if:
89+
properties:
90+
compatible:
91+
contains:
92+
enum:
93+
- qcom,glymur-pcie-east-anoc
94+
then:
95+
properties:
96+
clocks:
97+
items:
98+
- description: aggre PCIE_5 EAST AXI clock
99+
100+
- if:
101+
properties:
102+
compatible:
103+
contains:
104+
enum:
105+
- qcom,glymur-aggre2-noc
106+
then:
107+
properties:
108+
clocks:
109+
items:
110+
- description: aggre USB3 TERT AXI clock
111+
- description: aggre USB4_2 AXI clock
112+
- description: aggre UFS PHY AXI clock
113+
114+
- if:
115+
properties:
116+
compatible:
117+
contains:
118+
enum:
119+
- qcom,glymur-aggre4-noc
120+
then:
121+
properties:
122+
clocks:
123+
items:
124+
- description: aggre USB3 PRIM AXI clock
125+
- description: aggre USB3 SEC AXI clock
126+
- description: aggre USB4_0 AXI clock
127+
- description: aggre USB4_1 AXI clock
128+
129+
- if:
130+
properties:
131+
compatible:
132+
contains:
133+
enum:
134+
- qcom,glymur-pcie-west-anoc
135+
- qcom,glymur-pcie-east-anoc
136+
- qcom,glymur-aggre2-noc
137+
- qcom,glymur-aggre4-noc
138+
then:
139+
required:
140+
- clocks
141+
else:
142+
properties:
143+
clocks: false
144+
145+
unevaluatedProperties: false
146+
147+
examples:
148+
- |
149+
#include <dt-bindings/clock/qcom,glymur-gcc.h>
150+
clk_virt: interconnect-0 {
151+
compatible = "qcom,glymur-clk-virt";
152+
#interconnect-cells = <2>;
153+
qcom,bcm-voters = <&apps_bcm_voter>;
154+
};
155+
156+
aggre1_noc: interconnect@16e0000 {
157+
compatible = "qcom,glymur-aggre1-noc";
158+
reg = <0x016e0000 0x14400>;
159+
#interconnect-cells = <2>;
160+
qcom,bcm-voters = <&apps_bcm_voter>;
161+
};
162+
163+
aggre4_noc: interconnect@1740000 {
164+
compatible = "qcom,glymur-aggre4-noc";
165+
reg = <0x01740000 0x14400>;
166+
#interconnect-cells = <2>;
167+
qcom,bcm-voters = <&apps_bcm_voter>;
168+
clocks = <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
169+
<&gcc GCC_AGGRE_USB3_SEC_AXI_CLK>,
170+
<&gcc GCC_AGGRE_USB4_0_AXI_CLK>,
171+
<&gcc GCC_AGGRE_USB4_1_AXI_CLK>;
172+
};

Documentation/devicetree/bindings/interconnect/qcom,osm-l3.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ properties:
4141
- qcom,qcs8300-epss-l3
4242
- const: qcom,sa8775p-epss-l3
4343
- const: qcom,epss-l3
44+
- items:
45+
- enum:
46+
- qcom,qcs615-osm-l3
47+
- const: qcom,sm8150-osm-l3
48+
- const: qcom,osm-l3
4449

4550
reg:
4651
maxItems: 1

drivers/interconnect/core.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ struct icc_node_data *of_icc_get_from_provider(const struct of_phandle_args *spe
385385

386386
mutex_lock(&icc_lock);
387387
list_for_each_entry(provider, &icc_providers, provider_list) {
388-
if (provider->dev->of_node == spec->np) {
388+
if (device_match_of_node(provider->dev, spec->np)) {
389389
if (provider->xlate_extended) {
390390
data = provider->xlate_extended(spec, provider->data);
391391
if (!IS_ERR(data)) {

drivers/interconnect/qcom/Kconfig

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@ config INTERCONNECT_QCOM
88
config INTERCONNECT_QCOM_BCM_VOTER
99
tristate
1010

11+
config INTERCONNECT_QCOM_GLYMUR
12+
tristate "Qualcomm GLYMUR interconnect driver"
13+
depends on INTERCONNECT_QCOM_RPMH_POSSIBLE
14+
select INTERCONNECT_QCOM_RPMH
15+
select INTERCONNECT_QCOM_BCM_VOTER
16+
help
17+
This is a driver for the Qualcomm Network-on-Chip on glymur-based
18+
platforms.
19+
1120
config INTERCONNECT_QCOM_MSM8909
1221
tristate "Qualcomm MSM8909 interconnect driver"
1322
depends on INTERCONNECT_QCOM

drivers/interconnect/qcom/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ obj-$(CONFIG_INTERCONNECT_QCOM) += interconnect_qcom.o
44

55
interconnect_qcom-y := icc-common.o
66
icc-bcm-voter-objs := bcm-voter.o
7+
qnoc-glymur-objs := glymur.o
78
qnoc-milos-objs := milos.o
89
qnoc-msm8909-objs := msm8909.o
910
qnoc-msm8916-objs := msm8916.o
@@ -46,6 +47,7 @@ qnoc-x1e80100-objs := x1e80100.o
4647
icc-smd-rpm-objs := smd-rpm.o icc-rpm.o icc-rpm-clocks.o
4748

4849
obj-$(CONFIG_INTERCONNECT_QCOM_BCM_VOTER) += icc-bcm-voter.o
50+
obj-$(CONFIG_INTERCONNECT_QCOM_GLYMUR) += qnoc-glymur.o
4951
obj-$(CONFIG_INTERCONNECT_QCOM_MILOS) += qnoc-milos.o
5052
obj-$(CONFIG_INTERCONNECT_QCOM_MSM8909) += qnoc-msm8909.o
5153
obj-$(CONFIG_INTERCONNECT_QCOM_MSM8916) += qnoc-msm8916.o

0 commit comments

Comments
 (0)