The Qualcomm SM6115 SoC has several bus fabrics that could be
controlled and tuned dynamically according to the bandwidth demand.
Add the support for the same.
Cc: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Bhupesh Sharma <bhupesh.sharma@linaro.org>
---
.../bindings/interconnect/qcom,sm6115.yaml | 137 ++++++++++++++++++
.../dt-bindings/interconnect/qcom,sm6115.h | 115 +++++++++++++++
2 files changed, 252 insertions(+)
create mode 100644 Documentation/devicetree/bindings/interconnect/qcom,sm6115.yaml
create mode 100644 include/dt-bindings/interconnect/qcom,sm6115.h
diff --git a/Documentation/devicetree/bindings/interconnect/qcom,sm6115.yaml b/Documentation/devicetree/bindings/interconnect/qcom,sm6115.yaml
new file mode 100644
index 000000000000..f8ffc4360727
--- /dev/null
+++ b/Documentation/devicetree/bindings/interconnect/qcom,sm6115.yaml
@@ -0,0 +1,137 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interconnect/qcom,sm6115.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm SM6115 Network-On-Chip interconnect
+
+maintainers:
+ - Bhupesh Sharma <bhupesh.sharma@linaro.org>
+
+description: |
+ The Qualcomm SM6115 interconnect providers support adjusting the
+ bandwidth requirements between the various NoC fabrics.
+
+properties:
+ reg:
+ maxItems: 1
+
+ compatible:
+ enum:
+ - qcom,sm6115-bimc
+ - qcom,sm6115-cnoc
+ - qcom,sm6115-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,sm6115-clk-virt
+ - qcom,sm6115-mmrt-virt
+ - qcom,sm6115-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,sm6115-snoc";
+ reg = <0x01880000 0x60200>;
+ #interconnect-cells = <1>;
+ clock-names = "bus", "bus_a";
+ clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
+ <&rpmcc RPM_SMD_SNOC_A_CLK>;
+
+ clk_virt: interconnect-clk {
+ compatible = "qcom,sm6115-clk-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,sm6115-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,sm6115-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,sm6115-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,sm6115-bimc";
+ reg = <0x04480000 0x80000>;
+ #interconnect-cells = <1>;
+ clock-names = "bus", "bus_a";
+ clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
+ <&rpmcc RPM_SMD_BIMC_A_CLK>;
+ };
diff --git a/include/dt-bindings/interconnect/qcom,sm6115.h b/include/dt-bindings/interconnect/qcom,sm6115.h
new file mode 100644
index 000000000000..2997106a661e
--- /dev/null
+++ b/include/dt-bindings/interconnect/qcom,sm6115.h
@@ -0,0 +1,115 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Qualcomm SM6115 interconnect IDs
+ *
+ * Copyright (c) 2022, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2022, Linaro Limited
+ */
+
+#ifndef __DT_BINDINGS_INTERCONNECT_QCOM_SM6115_H
+#define __DT_BINDINGS_INTERCONNECT_QCOM_SM6115_H
+
+/* BIMC */
+#define MASTER_AMPSS_M0 0
+#define MASTER_SNOC_BIMC_RT 1
+#define MASTER_SNOC_BIMC_NRT 2
+#define MASTER_SNOC_BIMC 3
+#define MASTER_GRAPHICS_3D 4
+#define MASTER_TCU_0 5
+#define SLAVE_EBI_CH0 6
+#define SLAVE_BIMC_SNOC 7
+
+/* CNOC */
+#define MASTER_SNOC_CNOC 0
+#define MASTER_QDSS_DAP 1
+#define SLAVE_AHB2PHY_USB 2
+#define SLAVE_APSS_THROTTLE_CFG 3
+#define SLAVE_BIMC_CFG 4
+#define SLAVE_BOOT_ROM 5
+#define SLAVE_CAMERA_NRT_THROTTLE_CFG 6
+#define SLAVE_CAMERA_RT_THROTTLE_CFG 7
+#define SLAVE_CAMERA_CFG 8
+#define SLAVE_CLK_CTL 9
+#define SLAVE_RBCPR_CX_CFG 10
+#define SLAVE_RBCPR_MX_CFG 11
+#define SLAVE_CRYPTO_0_CFG 12
+#define SLAVE_DCC_CFG 13
+#define SLAVE_DDR_PHY_CFG 14
+#define SLAVE_DDR_SS_CFG 15
+#define SLAVE_DISPLAY_CFG 16
+#define SLAVE_DISPLAY_THROTTLE_CFG 17
+#define SLAVE_GPU_CFG 18
+#define SLAVE_GPU_THROTTLE_CFG 19
+#define SLAVE_HWKM_CORE 20
+#define SLAVE_IMEM_CFG 21
+#define SLAVE_IPA_CFG 22
+#define SLAVE_LPASS 23
+#define SLAVE_MAPSS 24
+#define SLAVE_MDSP_MPU_CFG 25
+#define SLAVE_MESSAGE_RAM 26
+#define SLAVE_CNOC_MSS 27
+#define SLAVE_PDM 28
+#define SLAVE_PIMEM_CFG 29
+#define SLAVE_PKA_CORE 30
+#define SLAVE_PMIC_ARB 31
+#define SLAVE_QDSS_CFG 32
+#define SLAVE_QM_CFG 33
+#define SLAVE_QM_MPU_CFG 34
+#define SLAVE_QPIC 35
+#define SLAVE_QUP_0 36
+#define SLAVE_RPM 37
+#define SLAVE_SDCC_1 38
+#define SLAVE_SDCC_2 39
+#define SLAVE_SECURITY 40
+#define SLAVE_SNOC_CFG 41
+#define SLAVE_TCSR 42
+#define SLAVE_TLMM 43
+#define SLAVE_USB3 44
+#define SLAVE_VENUS_CFG 45
+#define SLAVE_VENUS_THROTTLE_CFG 46
+#define SLAVE_VSENSE_CTRL_CFG 47
+#define SLAVE_SERVICE_CNOC 48
+
+/* SNOC */
+#define MASTER_SNOC_CFG 0
+#define MASTER_TIC 1
+#define MASTER_ANOC_SNOC 2
+#define MASTER_BIMC_SNOC 3
+#define MASTER_PIMEM 4
+#define MASTER_CRVIRT_A1NOC 5
+#define MASTER_QDSS_BAM 6
+#define MASTER_QPIC 7
+#define MASTER_QUP_0 8
+#define MASTER_IPA 9
+#define MASTER_QDSS_ETR 10
+#define MASTER_SDCC_1 11
+#define MASTER_SDCC_2 12
+#define MASTER_USB3 13
+#define SLAVE_APPSS 14
+#define SLAVE_SNOC_CNOC 15
+#define SLAVE_OCIMEM 16
+#define SLAVE_PIMEM 17
+#define SLAVE_SNOC_BIMC 18
+#define SLAVE_SERVICE_SNOC 19
+#define SLAVE_QDSS_STM 20
+#define SLAVE_TCU 21
+#define SLAVE_ANOC_SNOC 22
+
+/* CLK VIRT */
+#define MASTER_QUP_CORE_0 0
+#define MASTER_CRYPTO_CORE0 1
+#define SLAVE_QUP_CORE_0 2
+#define SLAVE_CRVIRT_A1NOC 3
+
+/* MMNRT Virtual */
+#define MASTER_CAMNOC_SF 0
+#define MASTER_VIDEO_P0 1
+#define MASTER_VIDEO_PROC 2
+#define SLAVE_SNOC_BIMC_NRT 3
+
+/* MMRT Virtual */
+#define MASTER_CAMNOC_HF 0
+#define MASTER_MDP_PORT0 1
+#define SLAVE_SNOC_BIMC_RT 2
+
+#endif
--
2.38.1
On 30/11/2022 11:38, Bhupesh Sharma wrote: > The Qualcomm SM6115 SoC has several bus fabrics that could be > controlled and tuned dynamically according to the bandwidth demand. > > Add the support for the same. > > Cc: Bjorn Andersson <andersson@kernel.org> > Signed-off-by: Bhupesh Sharma <bhupesh.sharma@linaro.org> > --- Thank you for your patch. There is something to discuss/improve. We could create common properties for these bindings, but it's fine now. > + > +additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/clock/qcom,rpmcc.h> > + > + snoc: interconnect@1880000 { > + compatible = "qcom,sm6115-snoc"; > + reg = <0x01880000 0x60200>; > + #interconnect-cells = <1>; > + clock-names = "bus", "bus_a"; > + clocks = <&rpmcc RPM_SMD_SNOC_CLK>, > + <&rpmcc RPM_SMD_SNOC_A_CLK>; > + > + clk_virt: interconnect-clk { > + compatible = "qcom,sm6115-clk-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,sm6115-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,sm6115-mmrt-virt"; > + #interconnect-cells = <1>; > + clock-names = "bus", "bus_a"; > + clocks = <&rpmcc RPM_SMD_MMRT_CLK>, > + <&rpmcc RPM_SMD_MMRT_A_CLK>; > + }; Drop last two nodes - they are the same as first. > + }; > + > + cnoc: interconnect@1900000 { > + compatible = "qcom,sm6115-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,sm6115-bimc"; > + reg = <0x04480000 0x80000>; > + #interconnect-cells = <1>; > + clock-names = "bus", "bus_a"; > + clocks = <&rpmcc RPM_SMD_BIMC_CLK>, > + <&rpmcc RPM_SMD_BIMC_A_CLK>; > + }; Drop these two as well, they do not bring anything new here. > diff --git a/include/dt-bindings/interconnect/qcom,sm6115.h b/include/dt-bindings/interconnect/qcom,sm6115.h > new file mode 100644 > index 000000000000..2997106a661e > --- /dev/null > +++ b/include/dt-bindings/interconnect/qcom,sm6115.h > @@ -0,0 +1,115 @@ > +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ > +/* > + * Qualcomm SM6115 interconnect IDs > + * > + * Copyright (c) 2022, The Linux Foundation. All rights reserved. > + * Copyright (c) 2022, Linaro Limited Best regards, Krzysztof
Hi Krzysztof, Thanks for your review. On Wed, 30 Nov 2022 at 17:11, Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote: > > On 30/11/2022 11:38, Bhupesh Sharma wrote: > > The Qualcomm SM6115 SoC has several bus fabrics that could be > > controlled and tuned dynamically according to the bandwidth demand. > > > > Add the support for the same. > > > > Cc: Bjorn Andersson <andersson@kernel.org> > > Signed-off-by: Bhupesh Sharma <bhupesh.sharma@linaro.org> > > --- > > Thank you for your patch. There is something to discuss/improve. > > We could create common properties for these bindings, but it's fine now. > > > + > > +additionalProperties: false > > + > > +examples: > > + - | > > + #include <dt-bindings/clock/qcom,rpmcc.h> > > + > > + snoc: interconnect@1880000 { > > + compatible = "qcom,sm6115-snoc"; > > + reg = <0x01880000 0x60200>; > > + #interconnect-cells = <1>; > > + clock-names = "bus", "bus_a"; > > + clocks = <&rpmcc RPM_SMD_SNOC_CLK>, > > + <&rpmcc RPM_SMD_SNOC_A_CLK>; > > + > > + clk_virt: interconnect-clk { > > + compatible = "qcom,sm6115-clk-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,sm6115-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,sm6115-mmrt-virt"; > > + #interconnect-cells = <1>; > > + clock-names = "bus", "bus_a"; > > + clocks = <&rpmcc RPM_SMD_MMRT_CLK>, > > + <&rpmcc RPM_SMD_MMRT_A_CLK>; > > + }; > > Drop last two nodes - they are the same as first. > > > + }; > > + > > + cnoc: interconnect@1900000 { > > + compatible = "qcom,sm6115-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,sm6115-bimc"; > > + reg = <0x04480000 0x80000>; > > + #interconnect-cells = <1>; > > + clock-names = "bus", "bus_a"; > > + clocks = <&rpmcc RPM_SMD_BIMC_CLK>, > > + <&rpmcc RPM_SMD_BIMC_A_CLK>; > > + }; > > Drop these two as well, they do not bring anything new here. Ack for both the suggestions. I will fix and send a v2 shortly. Regards, Bhupesh
© 2016 - 2025 Red Hat, Inc.