dt-bindings: interconnect: Add Qualcomm SM6115 NoC
authorKonrad Dybcio <konrad.dybcio@linaro.org>
Wed, 29 Nov 2023 14:41:01 +0000 (15:41 +0100)
committerGeorgi Djakov <djakov@kernel.org>
Wed, 6 Dec 2023 15:16:07 +0000 (17:16 +0200)
Add bindings for Qualcomm SM6115 Network-On-Chip interconnect.

Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20231125-topic-6115icc-v3-1-bd8907b8cfd7@linaro.org
Signed-off-by: Georgi Djakov <djakov@kernel.org>
Documentation/devicetree/bindings/interconnect/qcom,sm6115.yaml [new file with mode: 0644]
include/dt-bindings/interconnect/qcom,sm6115.h [new file with mode: 0644]

diff --git a/Documentation/devicetree/bindings/interconnect/qcom,sm6115.yaml b/Documentation/devicetree/bindings/interconnect/qcom,sm6115.yaml
new file mode 100644 (file)
index 0000000..14b1a0b
--- /dev/null
@@ -0,0 +1,152 @@
+# 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:
+  - Konrad Dybcio <konradybcio@kernel.org>
+
+description:
+  The Qualcomm SM6115 interconnect providers support adjusting the
+  bandwidth requirements between the various NoC fabrics.
+
+properties:
+  compatible:
+    enum:
+      - qcom,sm6115-bimc
+      - qcom,sm6115-cnoc
+      - qcom,sm6115-snoc
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    minItems: 1
+    maxItems: 4
+
+  clock-names:
+    minItems: 1
+    maxItems: 4
+
+# 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.
+
+    $ref: qcom,rpm-common.yaml#
+
+    properties:
+      compatible:
+        enum:
+          - qcom,sm6115-clk-virt
+          - qcom,sm6115-mmrt-virt
+          - qcom,sm6115-mmnrt-virt
+
+    required:
+      - compatible
+
+    unevaluatedProperties: false
+
+required:
+  - compatible
+  - reg
+
+allOf:
+  - $ref: qcom,rpm-common.yaml#
+  - if:
+      properties:
+        compatible:
+          const: qcom,sm6115-cnoc
+
+    then:
+      properties:
+        clocks:
+          items:
+            - description: USB-NoC AXI clock
+
+        clock-names:
+          items:
+            - const: usb_axi
+
+  - if:
+      properties:
+        compatible:
+          const: qcom,sm6115-snoc
+
+    then:
+      properties:
+        clocks:
+          items:
+            - description: CPU-NoC AXI clock.
+            - description: UFS-NoC AXI clock.
+            - description: USB-NoC AXI clock.
+            - description: IPA clock.
+
+        clock-names:
+          items:
+            - const: cpu_axi
+            - const: ufs_axi
+            - const: usb_axi
+            - const: ipa
+
+  - if:
+      properties:
+        compatible:
+          enum:
+            - qcom,sm6115-bimc
+            - qcom,sm6115-clk-virt
+            - qcom,sm6115-mmrt-virt
+            - qcom,sm6115-mmnrt-virt
+
+    then:
+      properties:
+        clocks: false
+        clock-names: false
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,gcc-sm6115.h>
+    #include <dt-bindings/clock/qcom,rpmcc.h>
+
+    snoc: interconnect@1880000 {
+        compatible = "qcom,sm6115-snoc";
+        reg = <0x01880000 0x60200>;
+        clocks = <&gcc GCC_SYS_NOC_CPUSS_AHB_CLK>,
+                 <&gcc GCC_SYS_NOC_UFS_PHY_AXI_CLK>,
+                 <&gcc GCC_SYS_NOC_USB3_PRIM_AXI_CLK>,
+                 <&rpmcc RPM_SMD_IPA_CLK>;
+        clock-names = "cpu_axi",
+                      "ufs_axi",
+                      "usb_axi",
+                      "ipa";
+        #interconnect-cells = <1>;
+
+        qup_virt: interconnect-clk {
+            compatible = "qcom,sm6115-clk-virt";
+            #interconnect-cells = <1>;
+        };
+
+        mmnrt_virt: interconnect-mmnrt {
+            compatible = "qcom,sm6115-mmnrt-virt";
+            #interconnect-cells = <1>;
+        };
+
+        mmrt_virt: interconnect-mmrt {
+            compatible = "qcom,sm6115-mmrt-virt";
+            #interconnect-cells = <1>;
+        };
+    };
+
+    cnoc: interconnect@1900000 {
+        compatible = "qcom,sm6115-cnoc";
+        reg = <0x01900000 0x8200>;
+        #interconnect-cells = <1>;
+    };
diff --git a/include/dt-bindings/interconnect/qcom,sm6115.h b/include/dt-bindings/interconnect/qcom,sm6115.h
new file mode 100644 (file)
index 0000000..21090e5
--- /dev/null
@@ -0,0 +1,111 @@
+/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
+/*
+ * Copyright (c) 2020, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2023, 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 SNOC_BIMC_MAS                          3
+#define MASTER_GRAPHICS_3D                     4
+#define MASTER_TCU_0                           5
+#define SLAVE_EBI_CH0                          6
+#define BIMC_SNOC_SLV                          7
+
+/* CNOC */
+#define SNOC_CNOC_MAS                          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_CRYPTO_CORE0                    0
+#define MASTER_SNOC_CFG                                1
+#define MASTER_TIC                             2
+#define MASTER_ANOC_SNOC                       3
+#define BIMC_SNOC_MAS                          4
+#define MASTER_PIMEM                           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 SNOC_CNOC_SLV                          15
+#define SLAVE_OCIMEM                           16
+#define SLAVE_PIMEM                            17
+#define SNOC_BIMC_SLV                          18
+#define SLAVE_SERVICE_SNOC                     19
+#define SLAVE_QDSS_STM                         20
+#define SLAVE_TCU                              21
+#define SLAVE_ANOC_SNOC                                22
+
+/* CLK Virtual */
+#define MASTER_QUP_CORE_0                      0
+#define SLAVE_QUP_CORE_0                       1
+
+/* MMRT Virtual */
+#define MASTER_CAMNOC_HF                       0
+#define MASTER_MDP_PORT0                       1
+#define SLAVE_SNOC_BIMC_RT                     2
+
+/* MMNRT Virtual */
+#define MASTER_CAMNOC_SF                       0
+#define MASTER_VIDEO_P0                                1
+#define MASTER_VIDEO_PROC                      2
+#define SLAVE_SNOC_BIMC_NRT                    3
+
+#endif