Skip to content

Commit 300e0fb

Browse files
author
Georgi Djakov
committed
Merge branch 'icc-rpm-dt-bindings' into icc-next
The recent necessary overhaul [1] of how we represent SMD ICC and RPM bus clocks changed the way they're connected. The bindings however were not updated to reflect that. This series tries to address that, while also making the relevant bindings less convoluted. Now, instead of referencing RPM SMD bus clocks via clocks=<>, they're handled internally within the interconnect framework (via direct RPM calls from there). We still need to allow some "interface" clocks, which are necessary to access some registers and not managed for us. [1] https://lore.kernel.org/linux-arm-msm/20230526-topic-smd_icc-v7-0-09c78c175546@linaro.org/ * icc-rpm-dt-bindings dt-bindings: interconnect: qcom: Introduce qcom,rpm-common dt-bindings: interconnect: qcom: qcm2290: Remove RPM bus clocks dt-bindings: interconnect: qcom: Fix and separate out SDM660 dt-bindings: interconnect: qcom: Fix and separate out MSM8996 dt-bindings: interconnect: qcom: Fix and separate out MSM8939 dt-bindings: interconnect: qcom: rpm: Clean up the file dt-bindings: interconnect: qcom: rpm: Clean up the example Link: https://lore.kernel.org/r/20230721-topic-icc_bindings-v2-0-e33d5acbf3bd@linaro.org Signed-off-by: Georgi Djakov <djakov@kernel.org>
2 parents 0481107 + 1ecbcc0 commit 300e0fb

6 files changed

Lines changed: 352 additions & 294 deletions

File tree

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/interconnect/qcom,msm8939.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Qualcomm MSM8939 Network-On-Chip interconnect
8+
9+
maintainers:
10+
- Konrad Dybcio <konradybcio@kernel.org>
11+
12+
description: |
13+
The Qualcomm MSM8939 interconnect providers support adjusting the
14+
bandwidth requirements between the various NoC fabrics.
15+
16+
allOf:
17+
- $ref: qcom,rpm-common.yaml#
18+
19+
properties:
20+
compatible:
21+
enum:
22+
- qcom,msm8939-bimc
23+
- qcom,msm8939-pcnoc
24+
- qcom,msm8939-snoc
25+
26+
reg:
27+
maxItems: 1
28+
29+
patternProperties:
30+
'^interconnect-[a-z0-9\-]+$':
31+
type: object
32+
$ref: qcom,rpm-common.yaml#
33+
description:
34+
The interconnect providers do not have a separate QoS register space,
35+
but share parent's space.
36+
37+
allOf:
38+
- $ref: qcom,rpm-common.yaml#
39+
40+
properties:
41+
compatible:
42+
const: qcom,msm8939-snoc-mm
43+
44+
required:
45+
- compatible
46+
47+
unevaluatedProperties: false
48+
49+
required:
50+
- compatible
51+
- reg
52+
53+
unevaluatedProperties: false
54+
55+
examples:
56+
- |
57+
#include <dt-bindings/clock/qcom,rpmcc.h>
58+
59+
snoc: interconnect@580000 {
60+
compatible = "qcom,msm8939-snoc";
61+
reg = <0x00580000 0x14000>;
62+
#interconnect-cells = <1>;
63+
};
64+
65+
bimc: interconnect@400000 {
66+
compatible = "qcom,msm8939-bimc";
67+
reg = <0x00400000 0x62000>;
68+
#interconnect-cells = <1>;
69+
70+
snoc_mm: interconnect-snoc {
71+
compatible = "qcom,msm8939-snoc-mm";
72+
#interconnect-cells = <1>;
73+
};
74+
};
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/interconnect/qcom,msm8996.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Qualcomm MSM8996 Network-On-Chip interconnect
8+
9+
maintainers:
10+
- Konrad Dybcio <konradybcio@kernel.org>
11+
12+
description: |
13+
The Qualcomm MSM8996 interconnect providers support adjusting the
14+
bandwidth requirements between the various NoC fabrics.
15+
16+
properties:
17+
compatible:
18+
enum:
19+
- qcom,msm8996-a0noc
20+
- qcom,msm8996-a1noc
21+
- qcom,msm8996-a2noc
22+
- qcom,msm8996-bimc
23+
- qcom,msm8996-cnoc
24+
- qcom,msm8996-mnoc
25+
- qcom,msm8996-pnoc
26+
- qcom,msm8996-snoc
27+
28+
reg:
29+
maxItems: 1
30+
31+
clock-names:
32+
minItems: 1
33+
maxItems: 3
34+
35+
clocks:
36+
minItems: 1
37+
maxItems: 3
38+
39+
power-domains:
40+
maxItems: 1
41+
42+
required:
43+
- compatible
44+
- reg
45+
46+
unevaluatedProperties: false
47+
48+
allOf:
49+
- $ref: qcom,rpm-common.yaml#
50+
- if:
51+
properties:
52+
compatible:
53+
const: qcom,msm8996-a0noc
54+
55+
then:
56+
properties:
57+
clocks:
58+
items:
59+
- description: Aggregate0 System NoC AXI Clock.
60+
- description: Aggregate0 Config NoC AHB Clock.
61+
- description: Aggregate0 NoC MPU Clock.
62+
63+
clock-names:
64+
items:
65+
- const: aggre0_snoc_axi
66+
- const: aggre0_cnoc_ahb
67+
- const: aggre0_noc_mpu_cfg
68+
69+
required:
70+
- power-domains
71+
72+
- if:
73+
properties:
74+
compatible:
75+
const: qcom,msm8996-mnoc
76+
77+
then:
78+
properties:
79+
clocks:
80+
items:
81+
- description: CPU-NoC High-performance Bus Clock.
82+
83+
clock-names:
84+
const: iface
85+
86+
- if:
87+
properties:
88+
compatible:
89+
const: qcom,msm8996-a2noc
90+
91+
then:
92+
properties:
93+
clocks:
94+
items:
95+
- description: Aggregate2 NoC UFS AXI Clock
96+
- description: UFS AXI Clock
97+
98+
clock-names:
99+
items:
100+
- const: aggre2_ufs_axi
101+
- const: ufs_axi
102+
103+
examples:
104+
- |
105+
#include <dt-bindings/clock/qcom,gcc-msm8996.h>
106+
#include <dt-bindings/clock/qcom,mmcc-msm8996.h>
107+
#include <dt-bindings/clock/qcom,rpmcc.h>
108+
109+
bimc: interconnect@408000 {
110+
compatible = "qcom,msm8996-bimc";
111+
reg = <0x00408000 0x5a000>;
112+
#interconnect-cells = <1>;
113+
};
114+
115+
a0noc: interconnect@543000 {
116+
compatible = "qcom,msm8996-a0noc";
117+
reg = <0x00543000 0x6000>;
118+
#interconnect-cells = <1>;
119+
clocks = <&gcc GCC_AGGRE0_SNOC_AXI_CLK>,
120+
<&gcc GCC_AGGRE0_CNOC_AHB_CLK>,
121+
<&gcc GCC_AGGRE0_NOC_MPU_CFG_AHB_CLK>;
122+
clock-names = "aggre0_snoc_axi",
123+
"aggre0_cnoc_ahb",
124+
"aggre0_noc_mpu_cfg";
125+
power-domains = <&gcc AGGRE0_NOC_GDSC>;
126+
};

Documentation/devicetree/bindings/interconnect/qcom,qcm2290.yaml

Lines changed: 8 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ description: |
1313
The Qualcomm QCM2290 interconnect providers support adjusting the
1414
bandwidth requirements between the various NoC fabrics.
1515
16+
allOf:
17+
- $ref: qcom,rpm-common.yaml#
18+
1619
properties:
1720
reg:
1821
maxItems: 1
@@ -23,19 +26,6 @@ properties:
2326
- qcom,qcm2290-cnoc
2427
- qcom,qcm2290-snoc
2528

26-
'#interconnect-cells':
27-
const: 1
28-
29-
clock-names:
30-
items:
31-
- const: bus
32-
- const: bus_a
33-
34-
clocks:
35-
items:
36-
- description: Bus Clock
37-
- description: Bus A Clock
38-
3929
# Child node's properties
4030
patternProperties:
4131
'^interconnect-[a-z0-9]+$':
@@ -44,42 +34,26 @@ patternProperties:
4434
The interconnect providers do not have a separate QoS register space,
4535
but share parent's space.
4636

37+
allOf:
38+
- $ref: qcom,rpm-common.yaml#
39+
4740
properties:
4841
compatible:
4942
enum:
5043
- qcom,qcm2290-qup-virt
5144
- qcom,qcm2290-mmrt-virt
5245
- qcom,qcm2290-mmnrt-virt
5346

54-
'#interconnect-cells':
55-
const: 1
56-
57-
clock-names:
58-
items:
59-
- const: bus
60-
- const: bus_a
61-
62-
clocks:
63-
items:
64-
- description: Bus Clock
65-
- description: Bus A Clock
66-
6747
required:
6848
- compatible
69-
- '#interconnect-cells'
70-
- clock-names
71-
- clocks
7249

73-
additionalProperties: false
50+
unevaluatedProperties: false
7451

7552
required:
7653
- compatible
7754
- reg
78-
- '#interconnect-cells'
79-
- clock-names
80-
- clocks
8155

82-
additionalProperties: false
56+
unevaluatedProperties: false
8357

8458
examples:
8559
- |
@@ -89,49 +63,31 @@ examples:
8963
compatible = "qcom,qcm2290-snoc";
9064
reg = <0x01880000 0x60200>;
9165
#interconnect-cells = <1>;
92-
clock-names = "bus", "bus_a";
93-
clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
94-
<&rpmcc RPM_SMD_SNOC_A_CLK>;
9566
9667
qup_virt: interconnect-qup {
9768
compatible = "qcom,qcm2290-qup-virt";
9869
#interconnect-cells = <1>;
99-
clock-names = "bus", "bus_a";
100-
clocks = <&rpmcc RPM_SMD_QUP_CLK>,
101-
<&rpmcc RPM_SMD_QUP_A_CLK>;
10270
};
10371
10472
mmnrt_virt: interconnect-mmnrt {
10573
compatible = "qcom,qcm2290-mmnrt-virt";
10674
#interconnect-cells = <1>;
107-
clock-names = "bus", "bus_a";
108-
clocks = <&rpmcc RPM_SMD_MMNRT_CLK>,
109-
<&rpmcc RPM_SMD_MMNRT_A_CLK>;
11075
};
11176
11277
mmrt_virt: interconnect-mmrt {
11378
compatible = "qcom,qcm2290-mmrt-virt";
11479
#interconnect-cells = <1>;
115-
clock-names = "bus", "bus_a";
116-
clocks = <&rpmcc RPM_SMD_MMRT_CLK>,
117-
<&rpmcc RPM_SMD_MMRT_A_CLK>;
11880
};
11981
};
12082
12183
cnoc: interconnect@1900000 {
12284
compatible = "qcom,qcm2290-cnoc";
12385
reg = <0x01900000 0x8200>;
12486
#interconnect-cells = <1>;
125-
clock-names = "bus", "bus_a";
126-
clocks = <&rpmcc RPM_SMD_CNOC_CLK>,
127-
<&rpmcc RPM_SMD_CNOC_A_CLK>;
12887
};
12988
13089
bimc: interconnect@4480000 {
13190
compatible = "qcom,qcm2290-bimc";
13291
reg = <0x04480000 0x80000>;
13392
#interconnect-cells = <1>;
134-
clock-names = "bus", "bus_a";
135-
clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
136-
<&rpmcc RPM_SMD_BIMC_A_CLK>;
13793
};
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/interconnect/qcom,rpm-common.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Qualcomm RPMh Network-On-Chip Interconnect
8+
9+
maintainers:
10+
- Konrad Dybcio <konradybcio@kernel.org>
11+
12+
description:
13+
RPM interconnect providers support for managing system bandwidth requirements
14+
through manual requests based on either predefined values or as indicated by
15+
the bus monitor hardware. Each provider node represents a NoC bus master,
16+
driven by a dedicated clock source.
17+
18+
properties:
19+
'#interconnect-cells':
20+
oneOf:
21+
- const: 2
22+
- const: 1
23+
deprecated: true
24+
25+
required:
26+
- '#interconnect-cells'
27+
28+
additionalProperties: true

0 commit comments

Comments
 (0)