~postmarketos/upstreaming

msm8937/msm8976/qcs404 icc patches v1 PROPOSED

This series introduce new ICC drivers for some legacy socs
while at it also updates a bit of qcs404 driver which seems
to not receive much attention lately.
Please take in consideration i do not own any qcs404 board
so i cannot test anything else than if it compiles.

Adam Skladowski (7):
  dt-bindings: interconnect: Add Qualcomm MSM8976 DT bindings
  interconnect: qcom: Add MSM8976 interconnect provider driver
  dt-bindings: interconnect: Add Qualcomm MSM8937 DT bindings
  interconnect: qcom: Add MSM8937 interconnect provider driver
  interconnect: qcom: qcs404: Introduce AP-owned nodes
  interconnect: qcom: qcs404: Add regmaps and more bus descriptions
  dt-bindings: interconnect: qcom: msm8939: Fix example

 .../bindings/interconnect/qcom,msm8937.yaml   |   81 +
 .../bindings/interconnect/qcom,msm8939.yaml   |   22 +-
 .../bindings/interconnect/qcom,msm8976.yaml   |  107 ++
 drivers/interconnect/qcom/Kconfig             |   18 +
 drivers/interconnect/qcom/Makefile            |    4 +
 drivers/interconnect/qcom/msm8937.c           | 1374 ++++++++++++++++
 drivers/interconnect/qcom/msm8976.c           | 1443 +++++++++++++++++
 drivers/interconnect/qcom/qcs404.c            |  126 +-
 .../dt-bindings/interconnect/qcom,msm8937.h   |   93 ++
 .../dt-bindings/interconnect/qcom,msm8976.h   |   97 ++
 10 files changed, 3354 insertions(+), 11 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/interconnect/qcom,msm8937.yaml
 create mode 100644 Documentation/devicetree/bindings/interconnect/qcom,msm8976.yaml
 create mode 100644 drivers/interconnect/qcom/msm8937.c
 create mode 100644 drivers/interconnect/qcom/msm8976.c
 create mode 100644 include/dt-bindings/interconnect/qcom,msm8937.h
 create mode 100644 include/dt-bindings/interconnect/qcom,msm8976.h

-- 
2.45.1
Hi Adam,

kernel test robot noticed the following build errors:

[auto build test ERROR on robh/for-next]
[also build test ERROR on linus/master v6.10-rc3 next-20240607]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Adam-Skladowski/dt-bindings-interconnect-Add-Qualcomm-MSM8976-DT-bindings/20240610-022416
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
patch link:    https://lore.kernel.org/r/20240609182112.13032-7-a39.skl%40gmail.com
patch subject: [PATCH 6/7] interconnect: qcom: qcs404: Add regmaps and more bus descriptions
config: arm64-defconfig (https://download.01.org/0day-ci/archive/20240610/202406101715.AMP9VWkx-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240610/202406101715.AMP9VWkx-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202406101715.AMP9VWkx-lkp@intel.com/

All error/warnings (new ones prefixed by >>):
1070 | static const struct regmap_config qcs404_bimc_regmap_config = {
         |                     ^~~~~~~~~~~~~
1071 |         .reg_bits = 32,
         |          ^~~~~~~~
1071 |         .reg_bits = 32,
         |                     ^~
   drivers/interconnect/qcom/qcs404.c:1071:21: note: (near initialization for 'qcs404_bimc_regmap_config')
1072 |         .reg_stride = 4,
         |          ^~~~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1072:23: warning: excess elements in struct initializer
    1072 |         .reg_stride = 4,
         |                       ^
   drivers/interconnect/qcom/qcs404.c:1072:23: note: (near initialization for 'qcs404_bimc_regmap_config')
1073 |         .val_bits = 32,
         |          ^~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1073:21: warning: excess elements in struct initializer
    1073 |         .val_bits = 32,
         |                     ^~
   drivers/interconnect/qcom/qcs404.c:1073:21: note: (near initialization for 'qcs404_bimc_regmap_config')
1074 |         .max_register = 0x80000,
         |          ^~~~~~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1074:25: warning: excess elements in struct initializer
    1074 |         .max_register = 0x80000,
         |                         ^~~~~~~
   drivers/interconnect/qcom/qcs404.c:1074:25: note: (near initialization for 'qcs404_bimc_regmap_config')
1075 |         .fast_io = true,
         |          ^~~~~~~
   drivers/interconnect/qcom/qcs404.c:1075:20: warning: excess elements in struct initializer
    1075 |         .fast_io = true,
         |                    ^~~~
   drivers/interconnect/qcom/qcs404.c:1075:20: note: (near initialization for 'qcs404_bimc_regmap_config')
1137 | static const struct regmap_config qcs404_pcnoc_regmap_config = {
         |                     ^~~~~~~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1138:10: error: 'const struct regmap_config' has no member named 'reg_bits'
    1138 |         .reg_bits = 32,
         |          ^~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1138:21: warning: excess elements in struct initializer
    1138 |         .reg_bits = 32,
         |                     ^~
   drivers/interconnect/qcom/qcs404.c:1138:21: note: (near initialization for 'qcs404_pcnoc_regmap_config')
   drivers/interconnect/qcom/qcs404.c:1139:10: error: 'const struct regmap_config' has no member named 'reg_stride'
    1139 |         .reg_stride = 4,
         |          ^~~~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1139:23: warning: excess elements in struct initializer
    1139 |         .reg_stride = 4,
         |                       ^
   drivers/interconnect/qcom/qcs404.c:1139:23: note: (near initialization for 'qcs404_pcnoc_regmap_config')
   drivers/interconnect/qcom/qcs404.c:1140:10: error: 'const struct regmap_config' has no member named 'val_bits'
    1140 |         .val_bits = 32,
         |          ^~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1140:21: warning: excess elements in struct initializer
    1140 |         .val_bits = 32,
         |                     ^~
   drivers/interconnect/qcom/qcs404.c:1140:21: note: (near initialization for 'qcs404_pcnoc_regmap_config')
   drivers/interconnect/qcom/qcs404.c:1141:10: error: 'const struct regmap_config' has no member named 'max_register'
    1141 |         .max_register = 0x15080,
         |          ^~~~~~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1141:25: warning: excess elements in struct initializer
    1141 |         .max_register = 0x15080,
         |                         ^~~~~~~
   drivers/interconnect/qcom/qcs404.c:1141:25: note: (near initialization for 'qcs404_pcnoc_regmap_config')
   drivers/interconnect/qcom/qcs404.c:1142:10: error: 'const struct regmap_config' has no member named 'fast_io'
    1142 |         .fast_io = true,
         |          ^~~~~~~
   drivers/interconnect/qcom/qcs404.c:1142:20: warning: excess elements in struct initializer
    1142 |         .fast_io = true,
         |                    ^~~~
   drivers/interconnect/qcom/qcs404.c:1142:20: note: (near initialization for 'qcs404_pcnoc_regmap_config')
1178 | static const struct regmap_config qcs404_snoc_regmap_config = {
         |                     ^~~~~~~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1179:10: error: 'const struct regmap_config' has no member named 'reg_bits'
    1179 |         .reg_bits = 32,
         |          ^~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1179:21: warning: excess elements in struct initializer
    1179 |         .reg_bits = 32,
         |                     ^~
   drivers/interconnect/qcom/qcs404.c:1179:21: note: (near initialization for 'qcs404_snoc_regmap_config')
   drivers/interconnect/qcom/qcs404.c:1180:10: error: 'const struct regmap_config' has no member named 'reg_stride'
    1180 |         .reg_stride = 4,
         |          ^~~~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1180:23: warning: excess elements in struct initializer
    1180 |         .reg_stride = 4,
         |                       ^
   drivers/interconnect/qcom/qcs404.c:1180:23: note: (near initialization for 'qcs404_snoc_regmap_config')
   drivers/interconnect/qcom/qcs404.c:1181:10: error: 'const struct regmap_config' has no member named 'val_bits'
    1181 |         .val_bits = 32,
         |          ^~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1181:21: warning: excess elements in struct initializer
    1181 |         .val_bits = 32,
         |                     ^~
   drivers/interconnect/qcom/qcs404.c:1181:21: note: (near initialization for 'qcs404_snoc_regmap_config')
   drivers/interconnect/qcom/qcs404.c:1182:10: error: 'const struct regmap_config' has no member named 'max_register'
    1182 |         .max_register = 0x23080,
         |          ^~~~~~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1182:25: warning: excess elements in struct initializer
    1182 |         .max_register = 0x23080,
         |                         ^~~~~~~
   drivers/interconnect/qcom/qcs404.c:1182:25: note: (near initialization for 'qcs404_snoc_regmap_config')
   drivers/interconnect/qcom/qcs404.c:1183:10: error: 'const struct regmap_config' has no member named 'fast_io'
    1183 |         .fast_io = true,
         |          ^~~~~~~
   drivers/interconnect/qcom/qcs404.c:1183:20: warning: excess elements in struct initializer
    1183 |         .fast_io = true,
         |                    ^~~~
   drivers/interconnect/qcom/qcs404.c:1183:20: note: (near initialization for 'qcs404_snoc_regmap_config')
1070 | static const struct regmap_config qcs404_bimc_regmap_config = {
         |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~
1137 | static const struct regmap_config qcs404_pcnoc_regmap_config = {
         |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~
1178 | static const struct regmap_config qcs404_snoc_regmap_config = {
         |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~


vim +/qcs404_bimc_regmap_config +1070 drivers/interconnect/qcom/qcs404.c

  1069
1076	};
  1077	
  1078	static const struct qcom_icc_desc qcs404_bimc = {
  1079		.type = QCOM_ICC_BIMC,
  1080		.nodes = qcs404_bimc_nodes,
  1081		.num_nodes = ARRAY_SIZE(qcs404_bimc_nodes),
  1082		.bus_clk_desc = &bimc_clk,
  1083		.regmap_cfg = &qcs404_bimc_regmap_config,
  1084		.qos_offset = 0x8000,
  1085		.ab_coeff = 153,
  1086	};
  1087	
  1088	static struct qcom_icc_node * const qcs404_pcnoc_nodes[] = {
  1089		[MASTER_SPDM] = &mas_spdm,
  1090		[MASTER_BLSP_1] = &mas_blsp_1,
  1091		[MASTER_BLSP_2] = &mas_blsp_2,
  1092		[MASTER_XI_USB_HS1] = &mas_xi_usb_hs1,
  1093		[MASTER_CRYPT0] = &mas_crypto,
  1094		[MASTER_SDCC_1] = &mas_sdcc_1,
  1095		[MASTER_SDCC_2] = &mas_sdcc_2,
  1096		[MASTER_SNOC_PCNOC] = &mas_snoc_pcnoc,
  1097		[MASTER_QPIC] = &mas_qpic,
  1098		[PCNOC_INT_0] = &pcnoc_int_0,
  1099		[PCNOC_INT_2] = &pcnoc_int_2,
  1100		[PCNOC_INT_3] = &pcnoc_int_3,
  1101		[PCNOC_S_0] = &pcnoc_s_0,
  1102		[PCNOC_S_1] = &pcnoc_s_1,
  1103		[PCNOC_S_2] = &pcnoc_s_2,
  1104		[PCNOC_S_3] = &pcnoc_s_3,
  1105		[PCNOC_S_4] = &pcnoc_s_4,
  1106		[PCNOC_S_6] = &pcnoc_s_6,
  1107		[PCNOC_S_7] = &pcnoc_s_7,
  1108		[PCNOC_S_8] = &pcnoc_s_8,
  1109		[PCNOC_S_9] = &pcnoc_s_9,
  1110		[PCNOC_S_10] = &pcnoc_s_10,
  1111		[PCNOC_S_11] = &pcnoc_s_11,
  1112		[SLAVE_SPDM] = &slv_spdm,
  1113		[SLAVE_PDM] = &slv_pdm,
  1114		[SLAVE_PRNG] = &slv_prng,
  1115		[SLAVE_TCSR] = &slv_tcsr,
  1116		[SLAVE_SNOC_CFG] = &slv_snoc_cfg,
  1117		[SLAVE_MESSAGE_RAM] = &slv_message_ram,
  1118		[SLAVE_DISP_SS_CFG] = &slv_disp_ss_cfg,
  1119		[SLAVE_GPU_CFG] = &slv_gpu_cfg,
  1120		[SLAVE_BLSP_1] = &slv_blsp_1,
  1121		[SLAVE_BLSP_2] = &slv_blsp_2,
  1122		[SLAVE_TLMM_NORTH] = &slv_tlmm_north,
  1123		[SLAVE_PCIE] = &slv_pcie,
  1124		[SLAVE_ETHERNET] = &slv_ethernet,
  1125		[SLAVE_TLMM_EAST] = &slv_tlmm_east,
  1126		[SLAVE_TCU] = &slv_tcu,
  1127		[SLAVE_PMIC_ARB] = &slv_pmic_arb,
  1128		[SLAVE_SDCC_1] = &slv_sdcc_1,
  1129		[SLAVE_SDCC_2] = &slv_sdcc_2,
  1130		[SLAVE_TLMM_SOUTH] = &slv_tlmm_south,
  1131		[SLAVE_USB_HS] = &slv_usb_hs,
  1132		[SLAVE_USB3] = &slv_usb3,
  1133		[SLAVE_CRYPTO_0_CFG] = &slv_crypto_0_cfg,
  1134		[SLAVE_PCNOC_SNOC] = &slv_pcnoc_snoc,
  1135	};
  1136
1138		.reg_bits = 32,
  1139		.reg_stride = 4,
  1140		.val_bits = 32,
  1141		.max_register = 0x15080,
  1142		.fast_io = true,
  1143	};
  1144	
  1145	static const struct qcom_icc_desc qcs404_pcnoc = {
  1146		.type = QCOM_ICC_NOC,
  1147		.nodes = qcs404_pcnoc_nodes,
  1148		.num_nodes = ARRAY_SIZE(qcs404_pcnoc_nodes),
  1149		.bus_clk_desc = &bus_0_clk,
  1150		.qos_offset = 0x7000,
  1151		.keep_alive = true,
  1152		.regmap_cfg = &qcs404_pcnoc_regmap_config,
  1153	};
  1154	
  1155	static struct qcom_icc_node * const qcs404_snoc_nodes[] = {
  1156		[MASTER_QDSS_BAM] = &mas_qdss_bam,
  1157		[MASTER_BIMC_SNOC] = &mas_bimc_snoc,
  1158		[MASTER_PCNOC_SNOC] = &mas_pcnoc_snoc,
  1159		[MASTER_QDSS_ETR] = &mas_qdss_etr,
  1160		[MASTER_EMAC] = &mas_emac,
  1161		[MASTER_PCIE] = &mas_pcie,
  1162		[MASTER_USB3] = &mas_usb3,
  1163		[QDSS_INT] = &qdss_int,
  1164		[SNOC_INT_0] = &snoc_int_0,
  1165		[SNOC_INT_1] = &snoc_int_1,
  1166		[SNOC_INT_2] = &snoc_int_2,
  1167		[SLAVE_KPSS_AHB] = &slv_kpss_ahb,
  1168		[SLAVE_WCSS] = &slv_wcss,
  1169		[SLAVE_SNOC_BIMC_1] = &slv_snoc_bimc_1,
  1170		[SLAVE_IMEM] = &slv_imem,
  1171		[SLAVE_SNOC_PCNOC] = &slv_snoc_pcnoc,
  1172		[SLAVE_QDSS_STM] = &slv_qdss_stm,
  1173		[SLAVE_CATS_0] = &slv_cats_0,
  1174		[SLAVE_CATS_1] = &slv_cats_1,
  1175		[SLAVE_LPASS] = &slv_lpass,
  1176	};
  1177
1179		.reg_bits = 32,
  1180		.reg_stride = 4,
  1181		.val_bits = 32,
  1182		.max_register = 0x23080,
  1183		.fast_io = true,
  1184	};
  1185
Hi Adam,

kernel test robot noticed the following build errors:

[auto build test ERROR on robh/for-next]
[also build test ERROR on linus/master v6.10-rc3 next-20240607]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Adam-Skladowski/dt-bindings-interconnect-Add-Qualcomm-MSM8976-DT-bindings/20240610-022416
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
patch link:    https://lore.kernel.org/r/20240609182112.13032-7-a39.skl%40gmail.com
patch subject: [PATCH 6/7] interconnect: qcom: qcs404: Add regmaps and more bus descriptions
config: arm64-allmodconfig (https://download.01.org/0day-ci/archive/20240610/202406102141.1kH3LXFy-lkp@intel.com/config)
compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project 4403cdbaf01379de96f8d0d6ea4f51a085e37766)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240610/202406102141.1kH3LXFy-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202406102141.1kH3LXFy-lkp@intel.com/

All errors (new ones prefixed by >>):
1070 | static const struct regmap_config qcs404_bimc_regmap_config = {
         |                                   ^
   drivers/interconnect/qcom/icc-rpm.h:136:15: note: forward declaration of 'struct regmap_config'
     136 |         const struct regmap_config *regmap_cfg;
         |                      ^
   drivers/interconnect/qcom/qcs404.c:1137:35: error: variable has incomplete type 'const struct regmap_config'
    1137 | static const struct regmap_config qcs404_pcnoc_regmap_config = {
         |                                   ^
   drivers/interconnect/qcom/icc-rpm.h:136:15: note: forward declaration of 'struct regmap_config'
     136 |         const struct regmap_config *regmap_cfg;
         |                      ^
   drivers/interconnect/qcom/qcs404.c:1178:35: error: variable has incomplete type 'const struct regmap_config'
    1178 | static const struct regmap_config qcs404_snoc_regmap_config = {
         |                                   ^
   drivers/interconnect/qcom/icc-rpm.h:136:15: note: forward declaration of 'struct regmap_config'
     136 |         const struct regmap_config *regmap_cfg;
         |                      ^
   3 errors generated.


vim +1070 drivers/interconnect/qcom/qcs404.c

  1069
1071		.reg_bits = 32,
  1072		.reg_stride = 4,
  1073		.val_bits = 32,
  1074		.max_register = 0x80000,
  1075		.fast_io = true,
  1076	};
  1077
Export patchset (mbox)
How do I use this?

Copy & paste the following snippet into your terminal to import this patchset into git:

curl -s https://lists.sr.ht/~postmarketos/upstreaming/patches/53203/mbox | git am -3
Learn more about email & git

[PATCH 1/7] dt-bindings: interconnect: Add Qualcomm MSM8976 DT bindings Export this patch

Add bindings for Qualcomm MSM8976 Network-On-Chip interconnect devices.

Signed-off-by: Adam Skladowski <a39.skl@gmail.com>
---
 .../bindings/interconnect/qcom,msm8976.yaml   | 107 ++++++++++++++++++
 .../dt-bindings/interconnect/qcom,msm8976.h   |  97 ++++++++++++++++
 2 files changed, 204 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/interconnect/qcom,msm8976.yaml
 create mode 100644 include/dt-bindings/interconnect/qcom,msm8976.h

diff --git a/Documentation/devicetree/bindings/interconnect/qcom,msm8976.yaml b/Documentation/devicetree/bindings/interconnect/qcom,msm8976.yaml
new file mode 100644
index 000000000000..bc9d08443e7c
--- /dev/null
+++ b/Documentation/devicetree/bindings/interconnect/qcom,msm8976.yaml
@@ -0,0 +1,107 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/interconnect/qcom,msm8976.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm MSM8976 Network-On-Chip interconnect

maintainers:
  - Konrad Dybcio <konradybcio@kernel.org>

description: |
  The Qualcomm MSM8976 interconnect providers support adjusting the
  bandwidth requirements between the various NoC fabrics.

properties:
  compatible:
    enum:
      - qcom,msm8976-bimc
      - qcom,msm8976-pcnoc
      - qcom,msm8976-snoc

  reg:
    maxItems: 1

  clock-names:
    minItems: 1
    maxItems: 2

  clocks:
    minItems: 1
    maxItems: 2

patternProperties:
  '^interconnect-[a-z0-9\-]+$':
    type: object
    $ref: qcom,rpm-common.yaml#
    description:
      The interconnect providers do not have a separate QoS register space,
      but share parent's space.

    allOf:
      - $ref: qcom,rpm-common.yaml#

    properties:
      compatible:
        const: qcom,msm8976-snoc-mm

    required:
      - compatible

    unevaluatedProperties: false

required:
  - compatible
  - reg

unevaluatedProperties: false

allOf:
  - $ref: qcom,rpm-common.yaml#
  - if:
      properties:
        compatible:
          const: qcom,msm8976-snoc

    then:
      properties:
        clocks:
          items:
            - description: IPA clock from RPMCC
        clock-names:
          const: ipa

      required:
        - clocks
        - clock-names

examples:
  - |
    #include <dt-bindings/clock/qcom,rpmcc.h>
    #include <dt-bindings/interconnect/qcom,rpm-icc.h>

    bimc: interconnect@400000 {
        compatible = "qcom,msm8976-bimc";
        reg = <0x00400000 0x62000>;
        #interconnect-cells = <2>;
    };

    pcnoc: interconnect@500000 {
        compatible = "qcom,msm8976-pcnoc";
        reg = <0x00500000 0x14000>;
        #interconnect-cells = <2>;
    };

    snoc: interconnect@580000 {
        compatible = "qcom,msm8976-snoc";
        reg = <0x00580000 0x1a000>;
        clocks =  <&rpmcc RPM_SMD_IPA_CLK>;
        clock-names = "ipa";
        #interconnect-cells = <2>;

          snoc_mm: interconnect-snoc {
              compatible = "qcom,msm8976-snoc-mm";
              #interconnect-cells = <2>;
          };
    };
diff --git a/include/dt-bindings/interconnect/qcom,msm8976.h b/include/dt-bindings/interconnect/qcom,msm8976.h
new file mode 100644
index 000000000000..4ea90f22320e
--- /dev/null
+++ b/include/dt-bindings/interconnect/qcom,msm8976.h
@@ -0,0 +1,97 @@
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
/*
 * Qualcomm MSM8976 interconnect IDs
 */

#ifndef __DT_BINDINGS_INTERCONNECT_QCOM_MSM8976_H
#define __DT_BINDINGS_INTERCONNECT_QCOM_MSM8976_H

/* BIMC fabric */
#define MAS_APPS_PROC		0
#define MAS_SMMNOC_BIMC	        1
#define MAS_SNOC_BIMC		2
#define MAS_TCU_0		3
#define SLV_EBI		        4
#define SLV_BIMC_SNOC		5

/* PCNOC fabric */
#define MAS_USB_HS2		0
#define MAS_BLSP_1		1
#define MAS_USB_HS1		2
#define MAS_BLSP_2		3
#define MAS_CRYPTO		4
#define MAS_SDCC_1		5
#define MAS_SDCC_2		6
#define MAS_SDCC_3		7
#define MAS_SNOC_PCNOC		8
#define MAS_LPASS_AHB		9
#define MAS_SPDM		10
#define MAS_DEHR		11
#define MAS_XM_USB_HS1		12
#define PCNOC_M_0		13
#define PCNOC_M_1		14
#define PCNOC_INT_0		15
#define PCNOC_INT_1		16
#define PCNOC_INT_2		17
#define PCNOC_S_1		18
#define PCNOC_S_2		19
#define PCNOC_S_3		20
#define PCNOC_S_4		21
#define PCNOC_S_8		22
#define PCNOC_S_9		23
#define SLV_TCSR		24
#define SLV_TLMM		25
#define SLV_CRYPTO_0_CFG	26
#define SLV_MESSAGE_RAM	        27
#define SLV_PDM		        28
#define SLV_PRNG		29
#define SLV_PMIC_ARB		30
#define SLV_SNOC_CFG		31
#define SLV_DCC_CFG		32
#define SLV_CAMERA_SS_CFG	33
#define SLV_DISP_SS_CFG	        34
#define SLV_VENUS_CFG		35
#define SLV_SDCC_1		36
#define SLV_BLSP_1		37
#define SLV_USB_HS		38
#define SLV_SDCC_3		39
#define SLV_SDCC_2		40
#define SLV_GPU_CFG		41
#define SLV_USB_HS2		42
#define SLV_BLSP_2		43
#define SLV_PCNOC_SNOC		44

/* SNOC fabric */
#define MAS_QDSS_BAM		0
#define MAS_BIMC_SNOC		1
#define MAS_PCNOC_SNOC		2
#define MAS_QDSS_ETR		3
#define MAS_LPASS_PROC		4
#define MAS_IPA		        5
#define QDSS_INT		6
#define SNOC_INT_0		7
#define SNOC_INT_1		8
#define SNOC_INT_2		9
#define SLV_KPSS_AHB		10
#define SLV_SNOC_BIMC		11
#define SLV_IMEM		12
#define SLV_SNOC_PCNOC		13
#define SLV_QDSS_STM		14
#define SLV_CATS_0		15
#define SLV_CATS_1		16
#define SLV_LPASS		17

/* SNOC-MM fabric */
#define MAS_JPEG		0
#define MAS_OXILI		1
#define MAS_MDP0		2
#define MAS_MDP1		3
#define MAS_VENUS_0		4
#define MAS_VENUS_1		5
#define MAS_VFE_0		6
#define MAS_VFE_1		7
#define MAS_CPP		        8
#define MM_INT_0		9
#define SLV_SMMNOC_BIMC		10

#endif /* __DT_BINDINGS_INTERCONNECT_QCOM_MSM8976_H */
-- 
2.45.1

[PATCH 2/7] interconnect: qcom: Add MSM8976 interconnect provider driver Export this patch

Add driver for interconnect busses found in MSM8976 based platforms.
The topology consists of four NoCs that are partially controlled
by a RPM processor.

Signed-off-by: Adam Skladowski <a39.skl@gmail.com>
---
 drivers/interconnect/qcom/Kconfig   |    9 +
 drivers/interconnect/qcom/Makefile  |    2 +
 drivers/interconnect/qcom/msm8976.c | 1443 +++++++++++++++++++++++++++
 3 files changed, 1454 insertions(+)
 create mode 100644 drivers/interconnect/qcom/msm8976.c

diff --git a/drivers/interconnect/qcom/Kconfig b/drivers/interconnect/qcom/Kconfig
index 1446a839184e..a0e9c09954ed 100644
--- a/drivers/interconnect/qcom/Kconfig
+++ b/drivers/interconnect/qcom/Kconfig
@@ -44,6 +44,15 @@ config INTERCONNECT_QCOM_MSM8974
	 This is a driver for the Qualcomm Network-on-Chip on msm8974-based
	 platforms.

config INTERCONNECT_QCOM_MSM8976
	tristate "Qualcomm MSM8976 interconnect driver"
	depends on INTERCONNECT_QCOM
	depends on QCOM_SMD_RPM
	select INTERCONNECT_QCOM_SMD_RPM
	help
	 This is a driver for the Qualcomm Network-on-Chip on msm8976-based
	 platforms.

config INTERCONNECT_QCOM_MSM8996
	tristate "Qualcomm MSM8996 interconnect driver"
	depends on INTERCONNECT_QCOM
diff --git a/drivers/interconnect/qcom/Makefile b/drivers/interconnect/qcom/Makefile
index 2ea3113d0a4d..21ce45438258 100644
--- a/drivers/interconnect/qcom/Makefile
+++ b/drivers/interconnect/qcom/Makefile
@@ -8,6 +8,7 @@ qnoc-msm8909-objs			:= msm8909.o
qnoc-msm8916-objs			:= msm8916.o
qnoc-msm8939-objs			:= msm8939.o
qnoc-msm8974-objs			:= msm8974.o
qnoc-msm8976-objs			:= msm8976.o
qnoc-msm8996-objs			:= msm8996.o
icc-osm-l3-objs				:= osm-l3.o
qnoc-qcm2290-objs			:= qcm2290.o
@@ -42,6 +43,7 @@ obj-$(CONFIG_INTERCONNECT_QCOM_MSM8909) += qnoc-msm8909.o
obj-$(CONFIG_INTERCONNECT_QCOM_MSM8916) += qnoc-msm8916.o
obj-$(CONFIG_INTERCONNECT_QCOM_MSM8939) += qnoc-msm8939.o
obj-$(CONFIG_INTERCONNECT_QCOM_MSM8974) += qnoc-msm8974.o
obj-$(CONFIG_INTERCONNECT_QCOM_MSM8976) += qnoc-msm8976.o
obj-$(CONFIG_INTERCONNECT_QCOM_MSM8996) += qnoc-msm8996.o
obj-$(CONFIG_INTERCONNECT_QCOM_OSM_L3) += icc-osm-l3.o
obj-$(CONFIG_INTERCONNECT_QCOM_QCM2290) += qnoc-qcm2290.o
diff --git a/drivers/interconnect/qcom/msm8976.c b/drivers/interconnect/qcom/msm8976.c
new file mode 100644
index 000000000000..b6cefdf0fecb
--- /dev/null
+++ b/drivers/interconnect/qcom/msm8976.c
@@ -0,0 +1,1443 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Based on data from msm8976-bus.dtsi in Qualcomm's msm-3.10 release:
 *   Copyright (c) 2014-2016, The Linux Foundation. All rights reserved.
 */


#include <linux/device.h>
#include <linux/interconnect-provider.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>


#include <dt-bindings/interconnect/qcom,msm8976.h>

#include "icc-rpm.h"

static const char * const snoc_intf_clocks[] = {
	"ipa", /* mas_ipa */
};

enum {
	QNOC_MASTER_AMPSS_M0 = 1,
	QNOC_MNOC_BIMC_MAS,
	QNOC_SNOC_BIMC_MAS,
	QNOC_MASTER_TCU_0,
	QNOC_MASTER_USB_HS2,
	QNOC_MASTER_BLSP_1,
	QNOC_MASTER_USB_HS,
	QNOC_MASTER_BLSP_2,
	QNOC_MASTER_CRYPTO_CORE0,
	QNOC_MASTER_SDCC_1,
	QNOC_MASTER_SDCC_2,
	QNOC_MASTER_SDCC_3,
	QNOC_SNOC_PNOC_MAS,
	QNOC_MASTER_LPASS_AHB,
	QNOC_MASTER_SPDM,
	QNOC_MASTER_DEHR,
	QNOC_MASTER_XM_USB_HS1,
	QNOC_MASTER_QDSS_BAM,
	QNOC_BIMC_SNOC_MAS,
	QNOC_MASTER_JPEG,
	QNOC_MASTER_GRAPHICS_3D,
	QNOC_MASTER_MDP_PORT0,
	QNOC_MASTER_MDP_PORT1,
	QNOC_PNOC_SNOC_MAS,
	QNOC_MASTER_VIDEO_P0,
	QNOC_MASTER_VIDEO_P1,
	QNOC_MASTER_VFE0,
	QNOC_MASTER_VFE1,
	QNOC_MASTER_CPP,
	QNOC_MASTER_QDSS_ETR,
	QNOC_MASTER_LPASS_PROC,
	QNOC_MASTER_IPA,
	QNOC_PNOC_M_0,
	QNOC_PNOC_M_1,
	QNOC_PNOC_INT_0,
	QNOC_PNOC_INT_1,
	QNOC_PNOC_INT_2,
	QNOC_PNOC_SLV_1,
	QNOC_PNOC_SLV_2,
	QNOC_PNOC_SLV_3,
	QNOC_PNOC_SLV_4,
	QNOC_PNOC_SLV_8,
	QNOC_PNOC_SLV_9,
	QNOC_SNOC_MM_INT_0,
	QNOC_SNOC_QDSS_INT,
	QNOC_SNOC_INT_0,
	QNOC_SNOC_INT_1,
	QNOC_SNOC_INT_2,
	QNOC_SLAVE_EBI_CH0,
	QNOC_BIMC_SNOC_SLV,
	QNOC_SLAVE_TCSR,
	QNOC_SLAVE_TLMM,
	QNOC_SLAVE_CRYPTO_0_CFG,
	QNOC_SLAVE_MESSAGE_RAM,
	QNOC_SLAVE_PDM,
	QNOC_SLAVE_PRNG,
	QNOC_SLAVE_PMIC_ARB,
	QNOC_SLAVE_SNOC_CFG,
	QNOC_SLAVE_DCC_CFG,
	QNOC_SLAVE_CAMERA_CFG,
	QNOC_SLAVE_DISPLAY_CFG,
	QNOC_SLAVE_VENUS_CFG,
	QNOC_SLAVE_SDCC_1,
	QNOC_SLAVE_BLSP_1,
	QNOC_SLAVE_USB_HS,
	QNOC_SLAVE_SDCC_3,
	QNOC_SLAVE_SDCC_2,
	QNOC_SLAVE_GRAPHICS_3D_CFG,
	QNOC_SLAVE_USB_HS2,
	QNOC_SLAVE_BLSP_2,
	QNOC_PNOC_SNOC_SLV,
	QNOC_SLAVE_APPSS,
	QNOC_MNOC_BIMC_SLV,
	QNOC_SNOC_BIMC_SLV,
	QNOC_SLAVE_SYSTEM_IMEM,
	QNOC_SNOC_PNOC_SLV,
	QNOC_SLAVE_QDSS_STM,
	QNOC_SLAVE_CATS_128,
	QNOC_SLAVE_OCMEM_64,
	QNOC_SLAVE_LPASS,
};

static const u16 mas_apps_proc_links[] = {
	QNOC_SLAVE_EBI_CH0,
	QNOC_BIMC_SNOC_SLV
};

static struct qcom_icc_node mas_apps_proc = {
	.name = "mas_apps_proc",
	.id = QNOC_MASTER_AMPSS_M0,
	.buswidth = 16,
	.mas_rpm_id = 0,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 0,
	.num_links = ARRAY_SIZE(mas_apps_proc_links),
	.links = mas_apps_proc_links,
};

static const u16 mas_smmnoc_bimc_links[] = {
	QNOC_SLAVE_EBI_CH0
};

static struct qcom_icc_node mas_smmnoc_bimc = {
	.name = "mas_smmnoc_bimc",
	.id = QNOC_MNOC_BIMC_MAS,
	.channels = 2,
	.buswidth = 16,
	.mas_rpm_id = 135,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 2,
	.num_links = ARRAY_SIZE(mas_smmnoc_bimc_links),
	.links = mas_smmnoc_bimc_links,
};

static const u16 mas_snoc_bimc_links[] = {
	QNOC_SLAVE_EBI_CH0
};

static struct qcom_icc_node mas_snoc_bimc = {
	.name = "mas_snoc_bimc",
	.id = QNOC_SNOC_BIMC_MAS,
	.channels = 2,
	.buswidth = 16,
	.mas_rpm_id = 3,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 3,
	.num_links = ARRAY_SIZE(mas_snoc_bimc_links),
	.links = mas_snoc_bimc_links,
};

static const u16 mas_tcu_0_links[] = {
	QNOC_SLAVE_EBI_CH0,
	QNOC_BIMC_SNOC_SLV
};

static struct qcom_icc_node mas_tcu_0 = {
	.name = "mas_tcu_0",
	.id = QNOC_MASTER_TCU_0,
	.buswidth = 16,
	.mas_rpm_id = 102,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 2,
	.qos.qos_port = 4,
	.num_links = ARRAY_SIZE(mas_tcu_0_links),
	.links = mas_tcu_0_links,
};

static const u16 mas_usb_hs2_links[] = {
	QNOC_PNOC_M_0
};

static struct qcom_icc_node mas_usb_hs2 = {
	.name = "mas_usb_hs2",
	.id = QNOC_MASTER_USB_HS2,
	.buswidth = 4,
	.mas_rpm_id = 57,
	.slv_rpm_id = -1,
	.num_links = ARRAY_SIZE(mas_usb_hs2_links),
	.links = mas_usb_hs2_links,
};

static const u16 mas_blsp_1_links[] = {
	QNOC_PNOC_M_1
};

static struct qcom_icc_node mas_blsp_1 = {
	.name = "mas_blsp_1",
	.id = QNOC_MASTER_BLSP_1,
	.buswidth = 4,
	.mas_rpm_id = 41,
	.slv_rpm_id = -1,
	.num_links = ARRAY_SIZE(mas_blsp_1_links),
	.links = mas_blsp_1_links,
};

static const u16 mas_usb_hs1_links[] = {
	QNOC_PNOC_M_1
};

static struct qcom_icc_node mas_usb_hs1 = {
	.name = "mas_usb_hs1",
	.id = QNOC_MASTER_USB_HS,
	.buswidth = 4,
	.mas_rpm_id = 42,
	.slv_rpm_id = -1,
	.num_links = ARRAY_SIZE(mas_usb_hs1_links),
	.links = mas_usb_hs1_links,
};

static const u16 mas_blsp_2_links[] = {
	QNOC_PNOC_M_1
};

static struct qcom_icc_node mas_blsp_2 = {
	.name = "mas_blsp_2",
	.id = QNOC_MASTER_BLSP_2,
	.buswidth = 4,
	.mas_rpm_id = 39,
	.slv_rpm_id = -1,
	.num_links = ARRAY_SIZE(mas_blsp_2_links),
	.links = mas_blsp_2_links,
};

static const u16 mas_crypto_links[] = {
	QNOC_PNOC_INT_1
};

static struct qcom_icc_node mas_crypto = {
	.name = "mas_crypto",
	.id = QNOC_MASTER_CRYPTO_CORE0,
	.buswidth = 8,
	.mas_rpm_id = 23,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 0,
	.num_links = ARRAY_SIZE(mas_crypto_links),
	.links = mas_crypto_links,
};

static const u16 mas_sdcc_1_links[] = {
	QNOC_PNOC_INT_1
};

static struct qcom_icc_node mas_sdcc_1 = {
	.name = "mas_sdcc_1",
	.id = QNOC_MASTER_SDCC_1,
	.buswidth = 8,
	.mas_rpm_id = 33,
	.slv_rpm_id = -1,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 7,
	.num_links = ARRAY_SIZE(mas_sdcc_1_links),
	.links = mas_sdcc_1_links,
};

static const u16 mas_sdcc_2_links[] = {
	QNOC_PNOC_INT_1
};

static struct qcom_icc_node mas_sdcc_2 = {
	.name = "mas_sdcc_2",
	.id = QNOC_MASTER_SDCC_2,
	.buswidth = 8,
	.mas_rpm_id = 35,
	.slv_rpm_id = -1,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 8,
	.num_links = ARRAY_SIZE(mas_sdcc_2_links),
	.links = mas_sdcc_2_links,
};

static const u16 mas_sdcc_3_links[] = {
	QNOC_PNOC_INT_1
};

static struct qcom_icc_node mas_sdcc_3 = {
	.name = "mas_sdcc_3",
	.id = QNOC_MASTER_SDCC_3,
	.buswidth = 8,
	.mas_rpm_id = 34,
	.slv_rpm_id = -1,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 10,
	.num_links = ARRAY_SIZE(mas_sdcc_3_links),
	.links = mas_sdcc_3_links,
};

static const u16 mas_snoc_pcnoc_links[] = {
	QNOC_PNOC_INT_2
};

static struct qcom_icc_node mas_snoc_pcnoc = {
	.name = "mas_snoc_pcnoc",
	.id = QNOC_SNOC_PNOC_MAS,
	.buswidth = 8,
	.mas_rpm_id = 77,
	.slv_rpm_id = -1,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 9,
	.num_links = ARRAY_SIZE(mas_snoc_pcnoc_links),
	.links = mas_snoc_pcnoc_links,
};

static const u16 mas_lpass_ahb_links[] = {
	QNOC_PNOC_SNOC_SLV
};

static struct qcom_icc_node mas_lpass_ahb = {
	.name = "mas_lpass_ahb",
	.id = QNOC_MASTER_LPASS_AHB,
	.buswidth = 8,
	.mas_rpm_id = 18,
	.slv_rpm_id = -1,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 12,
	.num_links = ARRAY_SIZE(mas_lpass_ahb_links),
	.links = mas_lpass_ahb_links,
};

static const u16 mas_spdm_links[] = {
	QNOC_PNOC_M_0
};

static struct qcom_icc_node mas_spdm = {
	.name = "mas_spdm",
	.id = QNOC_MASTER_SPDM,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.num_links = ARRAY_SIZE(mas_spdm_links),
	.links = mas_spdm_links,
};

static const u16 mas_dehr_links[] = {
	QNOC_PNOC_M_0
};

static struct qcom_icc_node mas_dehr = {
	.name = "mas_dehr",
	.id = QNOC_MASTER_DEHR,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.num_links = ARRAY_SIZE(mas_dehr_links),
	.links = mas_dehr_links,
};

static const u16 mas_xm_usb_hs1_links[] = {
	QNOC_PNOC_INT_0
};

static struct qcom_icc_node mas_xm_usb_hs1 = {
	.name = "mas_xm_usb_hs1",
	.id = QNOC_MASTER_XM_USB_HS1,
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.num_links = ARRAY_SIZE(mas_xm_usb_hs1_links),
	.links = mas_xm_usb_hs1_links,
};

static const u16 mas_qdss_bam_links[] = {
	QNOC_SNOC_QDSS_INT
};

static struct qcom_icc_node mas_qdss_bam = {
	.name = "mas_qdss_bam",
	.id = QNOC_MASTER_QDSS_BAM,
	.buswidth = 4,
	.mas_rpm_id = 19,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 1,
	.qos.prio_level = 1,
	.qos.qos_port = 11,
	.num_links = ARRAY_SIZE(mas_qdss_bam_links),
	.links = mas_qdss_bam_links,
};

static const u16 mas_bimc_snoc_links[] = {
	QNOC_SNOC_INT_2
};

static struct qcom_icc_node mas_bimc_snoc = {
	.name = "mas_bimc_snoc",
	.id = QNOC_BIMC_SNOC_MAS,
	.buswidth = 8,
	.mas_rpm_id = 21,
	.slv_rpm_id = -1,
	.num_links = ARRAY_SIZE(mas_bimc_snoc_links),
	.links = mas_bimc_snoc_links,
};

static const u16 mas_jpeg_links[] = {
	QNOC_SNOC_MM_INT_0,
	QNOC_MNOC_BIMC_SLV
};

static struct qcom_icc_node mas_jpeg = {
	.name = "mas_jpeg",
	.id = QNOC_MASTER_JPEG,
	.buswidth = 16,
	.mas_rpm_id = 7,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 6,
	.num_links = ARRAY_SIZE(mas_jpeg_links),
	.links = mas_jpeg_links,
};

static const u16 mas_oxili_links[] = {
	QNOC_MNOC_BIMC_SLV,
	QNOC_SNOC_MM_INT_0
};

static struct qcom_icc_node mas_oxili = {
	.name = "mas_oxili",
	.id = QNOC_MASTER_GRAPHICS_3D,
	.channels = 2,
	.buswidth = 16,
	.mas_rpm_id = 6,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 16, /* [16, 17] */
	.num_links = ARRAY_SIZE(mas_oxili_links),
	.links = mas_oxili_links,
};

static const u16 mas_mdp0_links[] = {
	QNOC_SNOC_MM_INT_0,
	QNOC_MNOC_BIMC_SLV
};

static struct qcom_icc_node mas_mdp0 = {
	.name = "mas_mdp0",
	.id = QNOC_MASTER_MDP_PORT0,
	.buswidth = 16,
	.mas_rpm_id = 8,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 7,
	.num_links = ARRAY_SIZE(mas_mdp0_links),
	.links = mas_mdp0_links,
};

static const u16 mas_mdp1_links[] = {
	QNOC_SNOC_MM_INT_0,
	QNOC_MNOC_BIMC_SLV
};

static struct qcom_icc_node mas_mdp1 = {
	.name = "mas_mdp1",
	.id = QNOC_MASTER_MDP_PORT1,
	.buswidth = 16,
	.mas_rpm_id = 61,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 13,
	.num_links = ARRAY_SIZE(mas_mdp1_links),
	.links = mas_mdp1_links,
};

static const u16 mas_pcnoc_snoc_links[] = {
	QNOC_SNOC_INT_2
};

static struct qcom_icc_node mas_pcnoc_snoc = {
	.name = "mas_pcnoc_snoc",
	.id = QNOC_PNOC_SNOC_MAS,
	.buswidth = 8,
	.mas_rpm_id = 29,
	.slv_rpm_id = -1,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 5,
	.num_links = ARRAY_SIZE(mas_pcnoc_snoc_links),
	.links = mas_pcnoc_snoc_links,
};

static const u16 mas_venus_0_links[] = {
	QNOC_SNOC_MM_INT_0,
	QNOC_MNOC_BIMC_SLV
};

static struct qcom_icc_node mas_venus_0 = {
	.name = "mas_venus_0",
	.id = QNOC_MASTER_VIDEO_P0,
	.buswidth = 16,
	.mas_rpm_id = 9,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 8,
	.num_links = ARRAY_SIZE(mas_venus_0_links),
	.links = mas_venus_0_links,
};

static const u16 mas_venus_1_links[] = {
	QNOC_SNOC_MM_INT_0,
	QNOC_MNOC_BIMC_SLV
};

static struct qcom_icc_node mas_venus_1 = {
	.name = "mas_venus_1",
	.id = QNOC_MASTER_VIDEO_P1,
	.buswidth = 16,
	.mas_rpm_id = 10,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 14,
	.num_links = ARRAY_SIZE(mas_venus_1_links),
	.links = mas_venus_1_links,
};

static const u16 mas_vfe_0_links[] = {
	QNOC_SNOC_MM_INT_0,
	QNOC_MNOC_BIMC_SLV
};

static struct qcom_icc_node mas_vfe_0 = {
	.name = "mas_vfe_0",
	.id = QNOC_MASTER_VFE0,
	.buswidth = 16,
	.mas_rpm_id = 11,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 9,
	.num_links = ARRAY_SIZE(mas_vfe_0_links),
	.links = mas_vfe_0_links,
};

static const u16 mas_vfe_1_links[] = {
	QNOC_SNOC_MM_INT_0,
	QNOC_MNOC_BIMC_SLV
};

static struct qcom_icc_node mas_vfe_1 = {
	.name = "mas_vfe_1",
	.id = QNOC_MASTER_VFE1,
	.buswidth = 16,
	.mas_rpm_id = 133,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 15,
	.num_links = ARRAY_SIZE(mas_vfe_1_links),
	.links = mas_vfe_1_links,
};

static const u16 mas_cpp_links[] = {
	QNOC_SNOC_MM_INT_0,
	QNOC_MNOC_BIMC_SLV
};

static struct qcom_icc_node mas_cpp = {
	.name = "mas_cpp",
	.id = QNOC_MASTER_CPP,
	.buswidth = 16,
	.mas_rpm_id = 115,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 12,
	.num_links = ARRAY_SIZE(mas_cpp_links),
	.links = mas_cpp_links,
};

static const u16 mas_qdss_etr_links[] = {
	QNOC_SNOC_QDSS_INT
};

static struct qcom_icc_node mas_qdss_etr = {
	.name = "mas_qdss_etr",
	.id = QNOC_MASTER_QDSS_ETR,
	.buswidth = 8,
	.mas_rpm_id = 31,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 1,
	.qos.prio_level = 1,
	.qos.qos_port = 10,
	.num_links = ARRAY_SIZE(mas_qdss_etr_links),
	.links = mas_qdss_etr_links,
};

static const u16 mas_lpass_proc_links[] = {
	QNOC_SNOC_INT_0,
	QNOC_SNOC_INT_1,
	QNOC_SNOC_BIMC_SLV
};

static struct qcom_icc_node mas_lpass_proc = {
	.name = "mas_lpass_proc",
	.id = QNOC_MASTER_LPASS_PROC,
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 19,
	.num_links = ARRAY_SIZE(mas_lpass_proc_links),
	.links = mas_lpass_proc_links,
};

static const u16 mas_ipa_links[] = {
	QNOC_SNOC_INT_2
};

static struct qcom_icc_node mas_ipa = {
	.name = "mas_ipa",
	.id = QNOC_MASTER_IPA,
	.buswidth = 8,
	.mas_rpm_id = 59,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 1,
	.qos.prio_level = 1,
	.qos.qos_port = 18,
	.num_links = ARRAY_SIZE(mas_ipa_links),
	.links = mas_ipa_links,
};

static const u16 pcnoc_m_0_links[] = {
	QNOC_PNOC_SNOC_SLV
};

static struct qcom_icc_node pcnoc_m_0 = {
	.name = "pcnoc_m_0",
	.id = QNOC_PNOC_M_0,
	.buswidth = 4,
	.mas_rpm_id = 87,
	.slv_rpm_id = 116,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 5,
	.num_links = ARRAY_SIZE(pcnoc_m_0_links),
	.links = pcnoc_m_0_links,
};

static const u16 pcnoc_m_1_links[] = {
	QNOC_PNOC_SNOC_SLV
};

static struct qcom_icc_node pcnoc_m_1 = {
	.name = "pcnoc_m_1",
	.id = QNOC_PNOC_M_1,
	.buswidth = 4,
	.mas_rpm_id = 88,
	.slv_rpm_id = 117,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 6,
	.num_links = ARRAY_SIZE(pcnoc_m_1_links),
	.links = pcnoc_m_1_links,
};

static const u16 pcnoc_int_0_links[] = {
	QNOC_PNOC_SNOC_SLV,
	QNOC_PNOC_INT_2
};

static struct qcom_icc_node pcnoc_int_0 = {
	.name = "pcnoc_int_0",
	.id = QNOC_PNOC_INT_0,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.num_links = ARRAY_SIZE(pcnoc_int_0_links),
	.links = pcnoc_int_0_links,
};

static const u16 pcnoc_int_1_links[] = {
	QNOC_PNOC_SNOC_SLV,
	QNOC_PNOC_INT_2
};

static struct qcom_icc_node pcnoc_int_1 = {
	.name = "pcnoc_int_1",
	.id = QNOC_PNOC_INT_1,
	.buswidth = 8,
	.mas_rpm_id = 86,
	.slv_rpm_id = 115,
	.num_links = ARRAY_SIZE(pcnoc_int_1_links),
	.links = pcnoc_int_1_links,
};

static const u16 pcnoc_int_2_links[] = {
	QNOC_PNOC_SLV_1,
	QNOC_PNOC_SLV_2,
	QNOC_PNOC_SLV_4,
	QNOC_PNOC_SLV_8,
	QNOC_PNOC_SLV_9,
	QNOC_PNOC_SLV_3
};

static struct qcom_icc_node pcnoc_int_2 = {
	.name = "pcnoc_int_2",
	.id = QNOC_PNOC_INT_2,
	.buswidth = 8,
	.mas_rpm_id = 124,
	.slv_rpm_id = 184,
	.num_links = ARRAY_SIZE(pcnoc_int_2_links),
	.links = pcnoc_int_2_links,
};

static const u16 pcnoc_s_1_links[] = {
	QNOC_SLAVE_CRYPTO_0_CFG,
	QNOC_SLAVE_PRNG,
	QNOC_SLAVE_PDM,
	QNOC_SLAVE_MESSAGE_RAM
};

static struct qcom_icc_node pcnoc_s_1 = {
	.name = "pcnoc_s_1",
	.id = QNOC_PNOC_SLV_1,
	.buswidth = 4,
	.mas_rpm_id = 90,
	.slv_rpm_id = 119,
	.num_links = ARRAY_SIZE(pcnoc_s_1_links),
	.links = pcnoc_s_1_links,
};

static const u16 pcnoc_s_2_links[] = {
	QNOC_SLAVE_PMIC_ARB
};

static struct qcom_icc_node pcnoc_s_2 = {
	.name = "pcnoc_s_2",
	.id = QNOC_PNOC_SLV_2,
	.buswidth = 4,
	.mas_rpm_id = 91,
	.slv_rpm_id = 120,
	.num_links = ARRAY_SIZE(pcnoc_s_2_links),
	.links = pcnoc_s_2_links,
};

static const u16 pcnoc_s_3_links[] = {
	QNOC_SLAVE_SNOC_CFG,
	QNOC_SLAVE_DCC_CFG
};

static struct qcom_icc_node pcnoc_s_3 = {
	.name = "pcnoc_s_3",
	.id = QNOC_PNOC_SLV_3,
	.buswidth = 4,
	.mas_rpm_id = 92,
	.slv_rpm_id = 121,
	.num_links = ARRAY_SIZE(pcnoc_s_3_links),
	.links = pcnoc_s_3_links,
};

static const u16 pcnoc_s_4_links[] = {
	QNOC_SLAVE_CAMERA_CFG,
	QNOC_SLAVE_DISPLAY_CFG,
	QNOC_SLAVE_VENUS_CFG
};

static struct qcom_icc_node pcnoc_s_4 = {
	.name = "pcnoc_s_4",
	.id = QNOC_PNOC_SLV_4,
	.buswidth = 4,
	.mas_rpm_id = 93,
	.slv_rpm_id = 122,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
	.num_links = ARRAY_SIZE(pcnoc_s_4_links),
	.links = pcnoc_s_4_links,
};

static const u16 pcnoc_s_8_links[] = {
	QNOC_SLAVE_USB_HS,
	QNOC_SLAVE_SDCC_3,
	QNOC_SLAVE_BLSP_1,
	QNOC_SLAVE_SDCC_1
};

static struct qcom_icc_node pcnoc_s_8 = {
	.name = "pcnoc_s_8",
	.id = QNOC_PNOC_SLV_8,
	.buswidth = 4,
	.mas_rpm_id = 96,
	.slv_rpm_id = 125,
	.num_links = ARRAY_SIZE(pcnoc_s_8_links),
	.links = pcnoc_s_8_links,
};

static const u16 pcnoc_s_9_links[] = {
	QNOC_SLAVE_GRAPHICS_3D_CFG,
	QNOC_SLAVE_USB_HS2,
	QNOC_SLAVE_SDCC_2,
	QNOC_SLAVE_BLSP_2
};

static struct qcom_icc_node pcnoc_s_9 = {
	.name = "pcnoc_s_9",
	.id = QNOC_PNOC_SLV_9,
	.buswidth = 4,
	.mas_rpm_id = 97,
	.slv_rpm_id = 126,
	.num_links = ARRAY_SIZE(pcnoc_s_9_links),
	.links = pcnoc_s_9_links,
};

static const u16 mm_int_0_links[] = {
	QNOC_SNOC_INT_0
};

static struct qcom_icc_node mm_int_0 = {
	.name = "mm_int_0",
	.id = QNOC_SNOC_MM_INT_0,
	.buswidth = 16,
	.mas_rpm_id = 79,
	.slv_rpm_id = 108,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
	.num_links = ARRAY_SIZE(mm_int_0_links),
	.links = mm_int_0_links,
};

static const u16 qdss_int_links[] = {
	QNOC_SNOC_INT_2
};

static struct qcom_icc_node qdss_int = {
	.name = "qdss_int",
	.id = QNOC_SNOC_QDSS_INT,
	.buswidth = 8,
	.mas_rpm_id = 98,
	.slv_rpm_id = 128,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
	.num_links = ARRAY_SIZE(qdss_int_links),
	.links = qdss_int_links,
};

static const u16 snoc_int_0_links[] = {
	QNOC_SLAVE_QDSS_STM,
	QNOC_SLAVE_SYSTEM_IMEM,
	QNOC_SNOC_PNOC_SLV
};

static struct qcom_icc_node snoc_int_0 = {
	.name = "snoc_int_0",
	.id = QNOC_SNOC_INT_0,
	.buswidth = 8,
	.mas_rpm_id = 99,
	.slv_rpm_id = 130,
	.num_links = ARRAY_SIZE(snoc_int_0_links),
	.links = snoc_int_0_links,
};

static const u16 snoc_int_1_links[] = {
	QNOC_SLAVE_LPASS,
	QNOC_SLAVE_CATS_128,
	QNOC_SLAVE_OCMEM_64,
	QNOC_SLAVE_APPSS
};

static struct qcom_icc_node snoc_int_1 = {
	.name = "snoc_int_1",
	.id = QNOC_SNOC_INT_1,
	.buswidth = 8,
	.mas_rpm_id = 100,
	.slv_rpm_id = 131,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
	.num_links = ARRAY_SIZE(snoc_int_1_links),
	.links = snoc_int_1_links,
};

static const u16 snoc_int_2_links[] = {
	QNOC_SNOC_INT_0,
	QNOC_SNOC_INT_1,
	QNOC_SNOC_BIMC_SLV
};

static struct qcom_icc_node snoc_int_2 = {
	.name = "snoc_int_2",
	.id = QNOC_SNOC_INT_2,
	.buswidth = 8,
	.mas_rpm_id = 134,
	.slv_rpm_id = 197,
	.num_links = ARRAY_SIZE(snoc_int_2_links),
	.links = snoc_int_2_links,
};

static struct qcom_icc_node slv_ebi = {
	.name = "slv_ebi",
	.id = QNOC_SLAVE_EBI_CH0,
	.channels = 2,
	.buswidth = 16,
	.mas_rpm_id = -1,
	.slv_rpm_id = 0,
};

static const u16 slv_bimc_snoc_links[] = {
	QNOC_BIMC_SNOC_MAS
};

static struct qcom_icc_node slv_bimc_snoc = {
	.name = "slv_bimc_snoc",
	.id = QNOC_BIMC_SNOC_SLV,
	.buswidth = 16,
	.mas_rpm_id = -1,
	.slv_rpm_id = 2,
	.num_links = ARRAY_SIZE(slv_bimc_snoc_links),
	.links = slv_bimc_snoc_links,
};

static struct qcom_icc_node slv_tcsr = {
	.name = "slv_tcsr",
	.id = QNOC_SLAVE_TCSR,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 50,
};

static struct qcom_icc_node slv_tlmm = {
	.name = "slv_tlmm",
	.id = QNOC_SLAVE_TLMM,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 51,
};

static struct qcom_icc_node slv_crypto_0_cfg = {
	.name = "slv_crypto_0_cfg",
	.id = QNOC_SLAVE_CRYPTO_0_CFG,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 52,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_message_ram = {
	.name = "slv_message_ram",
	.id = QNOC_SLAVE_MESSAGE_RAM,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 55,
};

static struct qcom_icc_node slv_pdm = {
	.name = "slv_pdm",
	.id = QNOC_SLAVE_PDM,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 41,
};

static struct qcom_icc_node slv_prng = {
	.name = "slv_prng",
	.id = QNOC_SLAVE_PRNG,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 44,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_pmic_arb = {
	.name = "slv_pmic_arb",
	.id = QNOC_SLAVE_PMIC_ARB,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 59,
};

static struct qcom_icc_node slv_snoc_cfg = {
	.name = "slv_snoc_cfg",
	.id = QNOC_SLAVE_SNOC_CFG,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 70,
};

static struct qcom_icc_node slv_dcc_cfg = {
	.name = "slv_dcc_cfg",
	.id = QNOC_SLAVE_DCC_CFG,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 155,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_camera_ss_cfg = {
	.name = "slv_camera_ss_cfg",
	.id = QNOC_SLAVE_CAMERA_CFG,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 3,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_disp_ss_cfg = {
	.name = "slv_disp_ss_cfg",
	.id = QNOC_SLAVE_DISPLAY_CFG,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 4,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_venus_cfg = {
	.name = "slv_venus_cfg",
	.id = QNOC_SLAVE_VENUS_CFG,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 10,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_sdcc_1 = {
	.name = "slv_sdcc_1",
	.id = QNOC_SLAVE_SDCC_1,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 31,
};

static struct qcom_icc_node slv_blsp_1 = {
	.name = "slv_blsp_1",
	.id = QNOC_SLAVE_BLSP_1,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 39,
};

static struct qcom_icc_node slv_usb_hs = {
	.name = "slv_usb_hs",
	.id = QNOC_SLAVE_USB_HS,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 40,
};

static struct qcom_icc_node slv_sdcc_3 = {
	.name = "slv_sdcc_3",
	.id = QNOC_SLAVE_SDCC_3,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 32,
};

static struct qcom_icc_node slv_sdcc_2 = {
	.name = "slv_sdcc_2",
	.id = QNOC_SLAVE_SDCC_2,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 33,
};

static struct qcom_icc_node slv_gpu_cfg = {
	.name = "slv_gpu_cfg",
	.id = QNOC_SLAVE_GRAPHICS_3D_CFG,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 11,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_usb_hs2 = {
	.name = "slv_usb_hs2",
	.id = QNOC_SLAVE_USB_HS2,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 79,
};

static struct qcom_icc_node slv_blsp_2 = {
	.name = "slv_blsp_2",
	.id = QNOC_SLAVE_BLSP_2,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 37,
};

static const u16 slv_pcnoc_snoc_links[] = {
	QNOC_PNOC_SNOC_MAS
};

static struct qcom_icc_node slv_pcnoc_snoc = {
	.name = "slv_pcnoc_snoc",
	.id = QNOC_PNOC_SNOC_SLV,
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = 45,
	.num_links = ARRAY_SIZE(slv_pcnoc_snoc_links),
	.links = slv_pcnoc_snoc_links,
};

static struct qcom_icc_node slv_kpss_ahb = {
	.name = "slv_kpss_ahb",
	.id = QNOC_SLAVE_APPSS,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 20,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static const u16 slv_smmnoc_bimc_links[] = {
	QNOC_MNOC_BIMC_MAS
};

static struct qcom_icc_node slv_smmnoc_bimc = {
	.name = "slv_smmnoc_bimc",
	.id = QNOC_MNOC_BIMC_SLV,
	.channels = 2,
	.buswidth = 16,
	.mas_rpm_id = -1,
	.slv_rpm_id = 198,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
	.num_links = ARRAY_SIZE(slv_smmnoc_bimc_links),
	.links = slv_smmnoc_bimc_links,
};

static const u16 slv_snoc_bimc_links[] = {
	QNOC_SNOC_BIMC_MAS
};

static struct qcom_icc_node slv_snoc_bimc = {
	.name = "slv_snoc_bimc",
	.id = QNOC_SNOC_BIMC_SLV,
	.channels = 2,
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = 24,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
	.num_links = ARRAY_SIZE(slv_snoc_bimc_links),
	.links = slv_snoc_bimc_links,
};

static struct qcom_icc_node slv_imem = {
	.name = "slv_imem",
	.id = QNOC_SLAVE_SYSTEM_IMEM,
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = 26,
};

static const u16 slv_snoc_pcnoc_links[] = {
	QNOC_SNOC_PNOC_MAS
};

static struct qcom_icc_node slv_snoc_pcnoc = {
	.name = "slv_snoc_pcnoc",
	.id = QNOC_SNOC_PNOC_SLV,
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = 28,
	.num_links = ARRAY_SIZE(slv_snoc_pcnoc_links),
	.links = slv_snoc_pcnoc_links,
};

static struct qcom_icc_node slv_qdss_stm = {
	.name = "slv_qdss_stm",
	.id = QNOC_SLAVE_QDSS_STM,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 30,
};

static struct qcom_icc_node slv_cats_0 = {
	.name = "slv_cats_0",
	.id = QNOC_SLAVE_CATS_128,
	.buswidth = 16,
	.mas_rpm_id = -1,
	.slv_rpm_id = 106,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_cats_1 = {
	.name = "slv_cats_1",
	.id = QNOC_SLAVE_OCMEM_64,
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = 107,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_lpass = {
	.name = "slv_lpass",
	.id = QNOC_SLAVE_LPASS,
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = 21,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node * const msm8976_bimc_nodes[] = {
	[MAS_APPS_PROC] = &mas_apps_proc,
	[MAS_SMMNOC_BIMC] = &mas_smmnoc_bimc,
	[MAS_SNOC_BIMC] = &mas_snoc_bimc,
	[MAS_TCU_0] = &mas_tcu_0,
	[SLV_EBI] = &slv_ebi,
	[SLV_BIMC_SNOC] = &slv_bimc_snoc,
};

static const struct regmap_config msm8976_bimc_regmap_config = {
	.reg_bits = 32,
	.reg_stride = 4,
	.val_bits = 32,
	.max_register = 0x62000,
	.fast_io = true,
};

static const struct qcom_icc_desc msm8976_bimc = {
	.type = QCOM_ICC_BIMC,
	.nodes = msm8976_bimc_nodes,
	.num_nodes = ARRAY_SIZE(msm8976_bimc_nodes),
	.bus_clk_desc = &bimc_clk,
	.regmap_cfg = &msm8976_bimc_regmap_config,
	.qos_offset = 0x8000,
	.ab_coeff = 154,
};

static struct qcom_icc_node * const msm8976_pcnoc_nodes[] = {
	[MAS_USB_HS2] = &mas_usb_hs2,
	[MAS_BLSP_1] = &mas_blsp_1,
	[MAS_USB_HS1] = &mas_usb_hs1,
	[MAS_BLSP_2] = &mas_blsp_2,
	[MAS_CRYPTO] = &mas_crypto,
	[MAS_SDCC_1] = &mas_sdcc_1,
	[MAS_SDCC_2] = &mas_sdcc_2,
	[MAS_SDCC_3] = &mas_sdcc_3,
	[MAS_SNOC_PCNOC] = &mas_snoc_pcnoc,
	[MAS_LPASS_AHB] = &mas_lpass_ahb,
	[MAS_SPDM] = &mas_spdm,
	[MAS_DEHR] = &mas_dehr,
	[MAS_XM_USB_HS1] = &mas_xm_usb_hs1,
	[PCNOC_M_0] = &pcnoc_m_0,
	[PCNOC_M_1] = &pcnoc_m_1,
	[PCNOC_INT_0] = &pcnoc_int_0,
	[PCNOC_INT_1] = &pcnoc_int_1,
	[PCNOC_INT_2] = &pcnoc_int_2,
	[PCNOC_S_1] = &pcnoc_s_1,
	[PCNOC_S_2] = &pcnoc_s_2,
	[PCNOC_S_3] = &pcnoc_s_3,
	[PCNOC_S_4] = &pcnoc_s_4,
	[PCNOC_S_8] = &pcnoc_s_8,
	[PCNOC_S_9] = &pcnoc_s_9,
	[SLV_TCSR] = &slv_tcsr,
	[SLV_TLMM] = &slv_tlmm,
	[SLV_CRYPTO_0_CFG] = &slv_crypto_0_cfg,
	[SLV_MESSAGE_RAM] = &slv_message_ram,
	[SLV_PDM] = &slv_pdm,
	[SLV_PRNG] = &slv_prng,
	[SLV_PMIC_ARB] = &slv_pmic_arb,
	[SLV_SNOC_CFG] = &slv_snoc_cfg,
	[SLV_DCC_CFG] = &slv_dcc_cfg,
	[SLV_CAMERA_SS_CFG] = &slv_camera_ss_cfg,
	[SLV_DISP_SS_CFG] = &slv_disp_ss_cfg,
	[SLV_VENUS_CFG] = &slv_venus_cfg,
	[SLV_SDCC_1] = &slv_sdcc_1,
	[SLV_BLSP_1] = &slv_blsp_1,
	[SLV_USB_HS] = &slv_usb_hs,
	[SLV_SDCC_3] = &slv_sdcc_3,
	[SLV_SDCC_2] = &slv_sdcc_2,
	[SLV_GPU_CFG] = &slv_gpu_cfg,
	[SLV_USB_HS2] = &slv_usb_hs2,
	[SLV_BLSP_2] = &slv_blsp_2,
	[SLV_PCNOC_SNOC] = &slv_pcnoc_snoc,
};

static const struct regmap_config msm8976_pcnoc_regmap_config = {
	.reg_bits = 32,
	.reg_stride = 4,
	.val_bits = 32,
	.max_register = 0x14000,
	.fast_io = true,
};

static const struct qcom_icc_desc msm8976_pcnoc = {
	.type = QCOM_ICC_NOC,
	.nodes = msm8976_pcnoc_nodes,
	.num_nodes = ARRAY_SIZE(msm8976_pcnoc_nodes),
	.bus_clk_desc = &bus_0_clk,
	.qos_offset = 0x7000,
	.keep_alive = true,
	.regmap_cfg = &msm8976_pcnoc_regmap_config,
};

static struct qcom_icc_node * const msm8976_snoc_nodes[] = {
	[MAS_QDSS_BAM] = &mas_qdss_bam,
	[MAS_BIMC_SNOC] = &mas_bimc_snoc,
	[MAS_PCNOC_SNOC] = &mas_pcnoc_snoc,
	[MAS_QDSS_ETR] = &mas_qdss_etr,
	[MAS_LPASS_PROC] = &mas_lpass_proc,
	[MAS_IPA] = &mas_ipa,
	[QDSS_INT] = &qdss_int,
	[SNOC_INT_0] = &snoc_int_0,
	[SNOC_INT_1] = &snoc_int_1,
	[SNOC_INT_2] = &snoc_int_2,
	[SLV_KPSS_AHB] = &slv_kpss_ahb,
	[SLV_SNOC_BIMC] = &slv_snoc_bimc,
	[SLV_IMEM] = &slv_imem,
	[SLV_SNOC_PCNOC] = &slv_snoc_pcnoc,
	[SLV_QDSS_STM] = &slv_qdss_stm,
	[SLV_CATS_0] = &slv_cats_0,
	[SLV_CATS_1] = &slv_cats_1,
	[SLV_LPASS] = &slv_lpass,
};

static const struct regmap_config msm8976_snoc_regmap_config = {
	.reg_bits = 32,
	.reg_stride = 4,
	.val_bits = 32,
	.max_register = 0x1A000,
	.fast_io = true,
};

static const struct qcom_icc_desc msm8976_snoc = {
	.type = QCOM_ICC_NOC,
	.nodes = msm8976_snoc_nodes,
	.num_nodes = ARRAY_SIZE(msm8976_snoc_nodes),
	.bus_clk_desc = &bus_1_clk,
	.intf_clocks = snoc_intf_clocks,
	.num_intf_clocks = ARRAY_SIZE(snoc_intf_clocks),
	.regmap_cfg = &msm8976_snoc_regmap_config,
	.qos_offset = 0x7000,
};

static struct qcom_icc_node * const msm8976_snoc_mm_nodes[] = {
	[MAS_JPEG] = &mas_jpeg,
	[MAS_OXILI] = &mas_oxili,
	[MAS_MDP0] = &mas_mdp0,
	[MAS_MDP1] = &mas_mdp1,
	[MAS_VENUS_0] = &mas_venus_0,
	[MAS_VENUS_1] = &mas_venus_1,
	[MAS_VFE_0] = &mas_vfe_0,
	[MAS_VFE_1] = &mas_vfe_1,
	[MAS_CPP] = &mas_cpp,
	[MM_INT_0] = &mm_int_0,
	[SLV_SMMNOC_BIMC] = &slv_smmnoc_bimc,
};

static const struct qcom_icc_desc msm8976_snoc_mm = {
	.type = QCOM_ICC_NOC,
	.nodes = msm8976_snoc_mm_nodes,
	.num_nodes = ARRAY_SIZE(msm8976_snoc_mm_nodes),
	.bus_clk_desc = &bus_2_clk,
	.regmap_cfg = &msm8976_snoc_regmap_config,
	.qos_offset = 0x7000,
	.ab_coeff = 154,
};

static const struct of_device_id msm8976_noc_of_match[] = {
	{ .compatible = "qcom,msm8976-bimc", .data = &msm8976_bimc },
	{ .compatible = "qcom,msm8976-pcnoc", .data = &msm8976_pcnoc },
	{ .compatible = "qcom,msm8976-snoc", .data = &msm8976_snoc },
	{ .compatible = "qcom,msm8976-snoc-mm", .data = &msm8976_snoc_mm },
	{ }
};
MODULE_DEVICE_TABLE(of, msm8976_noc_of_match);

static struct platform_driver msm8976_noc_driver = {
	.probe = qnoc_probe,
	.remove_new = qnoc_remove,
	.driver = {
		.name = "qnoc-msm8976",
		.of_match_table = msm8976_noc_of_match,
		.sync_state = icc_sync_state,
	},
};
module_platform_driver(msm8976_noc_driver);

MODULE_DESCRIPTION("Qualcomm MSM8976 NoC driver");
MODULE_LICENSE("GPL");
-- 
2.45.1

[PATCH 3/7] dt-bindings: interconnect: Add Qualcomm MSM8937 DT bindings Export this patch

Add bindings for Qualcomm MSM8937 Network-On-Chip interconnect devices.

Signed-off-by: Adam Skladowski <a39.skl@gmail.com>
---
 .../bindings/interconnect/qcom,msm8937.yaml   | 81 ++++++++++++++++
 .../dt-bindings/interconnect/qcom,msm8937.h   | 93 +++++++++++++++++++
 2 files changed, 174 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/interconnect/qcom,msm8937.yaml
 create mode 100644 include/dt-bindings/interconnect/qcom,msm8937.h

diff --git a/Documentation/devicetree/bindings/interconnect/qcom,msm8937.yaml b/Documentation/devicetree/bindings/interconnect/qcom,msm8937.yaml
new file mode 100644
index 000000000000..39a1ca441bb2
--- /dev/null
+++ b/Documentation/devicetree/bindings/interconnect/qcom,msm8937.yaml
@@ -0,0 +1,81 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/interconnect/qcom,msm8937.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm MSM8937 Network-On-Chip interconnect

maintainers:
  - Konrad Dybcio <konradybcio@kernel.org>

description: |
  The Qualcomm MSM8937 interconnect providers support adjusting the
  bandwidth requirements between the various NoC fabrics.

allOf:
  - $ref: qcom,rpm-common.yaml#

properties:
  compatible:
    enum:
      - qcom,msm8937-bimc
      - qcom,msm8937-pcnoc
      - qcom,msm8937-snoc

  reg:
    maxItems: 1

patternProperties:
  '^interconnect-[a-z0-9\-]+$':
    type: object
    $ref: qcom,rpm-common.yaml#
    description:
      The interconnect providers do not have a separate QoS register space,
      but share parent's space.

    allOf:
      - $ref: qcom,rpm-common.yaml#

    properties:
      compatible:
        const: qcom,msm8937-snoc-mm

    required:
      - compatible

    unevaluatedProperties: false

required:
  - compatible
  - reg

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/clock/qcom,rpmcc.h>
    #include <dt-bindings/interconnect/qcom,rpm-icc.h>

    bimc: interconnect@400000 {
        compatible = "qcom,msm8937-bimc";
        reg = <0x00400000 0x5a000>;
        #interconnect-cells = <2>;
    };

    pcnoc: interconnect@500000 {
        compatible = "qcom,msm8937-pcnoc";
        reg = <0x00500000 0x13080>;
        #interconnect-cells = <2>;
    };

    snoc: interconnect@580000 {
        compatible = "qcom,msm8937-bimc";
        reg = <0x00580000 0x16080>;
        #interconnect-cells = <2>;

          snoc_mm: interconnect-snoc {
              compatible = "qcom,msm8937-snoc-mm";
              #interconnect-cells = <2>;
          };
    };
diff --git a/include/dt-bindings/interconnect/qcom,msm8937.h b/include/dt-bindings/interconnect/qcom,msm8937.h
new file mode 100644
index 000000000000..98b8a4637aab
--- /dev/null
+++ b/include/dt-bindings/interconnect/qcom,msm8937.h
@@ -0,0 +1,93 @@
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
/*
 * Qualcomm MSM8937 interconnect IDs
 */

#ifndef __DT_BINDINGS_INTERCONNECT_QCOM_MSM8937_H
#define __DT_BINDINGS_INTERCONNECT_QCOM_MSM8937_H

/* BIMC fabric */
#define MAS_APPS_PROC		0
#define MAS_OXILI		1
#define MAS_SNOC_BIMC_0		2
#define MAS_SNOC_BIMC_2		3
#define MAS_SNOC_BIMC_1		4
#define MAS_TCU_0		5
#define SLV_EBI			6
#define SLV_BIMC_SNOC		7

/* PCNOC fabric */
#define MAS_SPDM		0
#define MAS_BLSP_1		1
#define MAS_BLSP_2		2
#define MAS_USB_HS1		3
#define MAS_XI_USB_HS1		4
#define MAS_CRYPTO		5
#define MAS_SDCC_1		6
#define MAS_SDCC_2		7
#define MAS_SNOC_PCNOC		8
#define PCNOC_M_0		9
#define PCNOC_M_1		10
#define PCNOC_INT_0		11
#define PCNOC_INT_1		12
#define PCNOC_INT_2		13
#define PCNOC_INT_3		14
#define PCNOC_S_0		15
#define PCNOC_S_1		16
#define PCNOC_S_2		17
#define PCNOC_S_3		18
#define PCNOC_S_4		19
#define PCNOC_S_6		20
#define PCNOC_S_7		21
#define PCNOC_S_8		22
#define SLV_SDCC_2		23
#define SLV_SPDM		24
#define SLV_PDM			25
#define SLV_PRNG		26
#define SLV_TCSR		27
#define SLV_SNOC_CFG		28
#define SLV_MESSAGE_RAM		29
#define SLV_CAMERA_SS_CFG	30
#define SLV_DISP_SS_CFG		31
#define SLV_VENUS_CFG		32
#define SLV_GPU_CFG		33
#define SLV_TLMM		34
#define SLV_BLSP_1		35
#define SLV_BLSP_2		36
#define SLV_PMIC_ARB		37
#define SLV_SDCC_1		38
#define SLV_CRYPTO_0_CFG	39
#define SLV_USB_HS		40
#define SLV_TCU			41
#define SLV_PCNOC_SNOC		42

/* SNOC fabric */
#define MAS_QDSS_BAM		0
#define MAS_BIMC_SNOC		1
#define MAS_PCNOC_SNOC		2
#define MAS_QDSS_ETR		3
#define QDSS_INT		4
#define SNOC_INT_0		5
#define SNOC_INT_1		6
#define SNOC_INT_2		7
#define SLV_KPSS_AHB		8
#define SLV_WCSS		9
#define SLV_SNOC_BIMC_1		10
#define SLV_IMEM		11
#define SLV_SNOC_PCNOC		12
#define SLV_QDSS_STM		13
#define SLV_CATS_1		14
#define SLV_LPASS		15

/* SNOC-MM fabric */
#define MAS_JPEG		0
#define MAS_MDP			1
#define MAS_VENUS		2
#define MAS_VFE0		3
#define MAS_VFE1		4
#define MAS_CPP			5
#define SLV_SNOC_BIMC_0		6
#define SLV_SNOC_BIMC_2		7
#define SLV_CATS_0		8

#endif /* __DT_BINDINGS_INTERCONNECT_QCOM_MSM8937_H */
-- 
2.45.1

[PATCH 4/7] interconnect: qcom: Add MSM8937 interconnect provider driver Export this patch

Add driver for interconnect busses found in MSM8937 based platforms.
The topology consists of four NoCs that are partially controlled
by a RPM processor.

Signed-off-by: Adam Skladowski <a39.skl@gmail.com>
---
 drivers/interconnect/qcom/Kconfig   |    9 +
 drivers/interconnect/qcom/Makefile  |    2 +
 drivers/interconnect/qcom/msm8937.c | 1374 +++++++++++++++++++++++++++
 3 files changed, 1385 insertions(+)
 create mode 100644 drivers/interconnect/qcom/msm8937.c

diff --git a/drivers/interconnect/qcom/Kconfig b/drivers/interconnect/qcom/Kconfig
index a0e9c09954ed..c3c534e7dad6 100644
--- a/drivers/interconnect/qcom/Kconfig
+++ b/drivers/interconnect/qcom/Kconfig
@@ -26,6 +26,15 @@ config INTERCONNECT_QCOM_MSM8916
	  This is a driver for the Qualcomm Network-on-Chip on msm8916-based
	  platforms.

config INTERCONNECT_QCOM_MSM8937
	tristate "Qualcomm MSM8937 interconnect driver"
	depends on INTERCONNECT_QCOM
	depends on QCOM_SMD_RPM
	select INTERCONNECT_QCOM_SMD_RPM
	help
	  This is a driver for the Qualcomm Network-on-Chip on msm8937-based
	  platforms.

config INTERCONNECT_QCOM_MSM8939
	tristate "Qualcomm MSM8939 interconnect driver"
	depends on INTERCONNECT_QCOM
diff --git a/drivers/interconnect/qcom/Makefile b/drivers/interconnect/qcom/Makefile
index 21ce45438258..a27dcb474df5 100644
--- a/drivers/interconnect/qcom/Makefile
+++ b/drivers/interconnect/qcom/Makefile
@@ -6,6 +6,7 @@ interconnect_qcom-y			:= icc-common.o
icc-bcm-voter-objs			:= bcm-voter.o
qnoc-msm8909-objs			:= msm8909.o
qnoc-msm8916-objs			:= msm8916.o
qnoc-msm8937-objs			:= msm8937.o
qnoc-msm8939-objs			:= msm8939.o
qnoc-msm8974-objs			:= msm8974.o
qnoc-msm8976-objs			:= msm8976.o
@@ -41,6 +42,7 @@ icc-smd-rpm-objs			:= smd-rpm.o icc-rpm.o icc-rpm-clocks.o
obj-$(CONFIG_INTERCONNECT_QCOM_BCM_VOTER) += icc-bcm-voter.o
obj-$(CONFIG_INTERCONNECT_QCOM_MSM8909) += qnoc-msm8909.o
obj-$(CONFIG_INTERCONNECT_QCOM_MSM8916) += qnoc-msm8916.o
obj-$(CONFIG_INTERCONNECT_QCOM_MSM8937) += qnoc-msm8937.o
obj-$(CONFIG_INTERCONNECT_QCOM_MSM8939) += qnoc-msm8939.o
obj-$(CONFIG_INTERCONNECT_QCOM_MSM8974) += qnoc-msm8974.o
obj-$(CONFIG_INTERCONNECT_QCOM_MSM8976) += qnoc-msm8976.o
diff --git a/drivers/interconnect/qcom/msm8937.c b/drivers/interconnect/qcom/msm8937.c
new file mode 100644
index 000000000000..470175c1c38b
--- /dev/null
+++ b/drivers/interconnect/qcom/msm8937.c
@@ -0,0 +1,1374 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Based on data from msm8937-bus.dtsi in Qualcomm's msm-3.18 release:
 *   Copyright (c) 2014-2016, The Linux Foundation. All rights reserved.
 */


#include <linux/device.h>
#include <linux/interconnect-provider.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>


#include <dt-bindings/interconnect/qcom,msm8937.h>

#include "icc-rpm.h"

enum {
	QNOC_MASTER_AMPSS_M0 = 1,
	QNOC_MASTER_GRAPHICS_3D,
	QNOC_SNOC_BIMC_0_MAS,
	QNOC_SNOC_BIMC_2_MAS,
	QNOC_SNOC_BIMC_1_MAS,
	QNOC_MASTER_TCU_0,
	QNOC_MASTER_SPDM,
	QNOC_MASTER_BLSP_1,
	QNOC_MASTER_BLSP_2,
	QNOC_MASTER_USB_HS,
	QNOC_MASTER_XM_USB_HS1,
	QNOC_MASTER_CRYPTO_CORE0,
	QNOC_MASTER_SDCC_1,
	QNOC_MASTER_SDCC_2,
	QNOC_SNOC_PNOC_MAS,
	QNOC_MASTER_QDSS_BAM,
	QNOC_BIMC_SNOC_MAS,
	QNOC_MASTER_JPEG,
	QNOC_MASTER_MDP_PORT0,
	QNOC_PNOC_SNOC_MAS,
	QNOC_MASTER_VIDEO_P0,
	QNOC_MASTER_VFE,
	QNOC_MASTER_VFE1,
	QNOC_MASTER_CPP,
	QNOC_MASTER_QDSS_ETR,
	QNOC_PNOC_M_0,
	QNOC_PNOC_M_1,
	QNOC_PNOC_INT_0,
	QNOC_PNOC_INT_1,
	QNOC_PNOC_INT_2,
	QNOC_PNOC_INT_3,
	QNOC_PNOC_SLV_0,
	QNOC_PNOC_SLV_1,
	QNOC_PNOC_SLV_2,
	QNOC_PNOC_SLV_3,
	QNOC_PNOC_SLV_4,
	QNOC_PNOC_SLV_6,
	QNOC_PNOC_SLV_7,
	QNOC_PNOC_SLV_8,
	QNOC_SNOC_QDSS_INT,
	QNOC_SNOC_INT_0,
	QNOC_SNOC_INT_1,
	QNOC_SNOC_INT_2,
	QNOC_SLAVE_EBI_CH0,
	QNOC_BIMC_SNOC_SLV,
	QNOC_SLAVE_SDCC_2,
	QNOC_SLAVE_SPDM_WRAPPER,
	QNOC_SLAVE_PDM,
	QNOC_SLAVE_PRNG,
	QNOC_SLAVE_TCSR,
	QNOC_SLAVE_SNOC_CFG,
	QNOC_SLAVE_MESSAGE_RAM,
	QNOC_SLAVE_CAMERA_CFG,
	QNOC_SLAVE_DISPLAY_CFG,
	QNOC_SLAVE_VENUS_CFG,
	QNOC_SLAVE_GRAPHICS_3D_CFG,
	QNOC_SLAVE_TLMM,
	QNOC_SLAVE_BLSP_1,
	QNOC_SLAVE_BLSP_2,
	QNOC_SLAVE_PMIC_ARB,
	QNOC_SLAVE_SDCC_1,
	QNOC_SLAVE_CRYPTO_0_CFG,
	QNOC_SLAVE_USB_HS,
	QNOC_SLAVE_TCU,
	QNOC_PNOC_SNOC_SLV,
	QNOC_SLAVE_APPSS,
	QNOC_SLAVE_WCSS,
	QNOC_SNOC_BIMC_0_SLV,
	QNOC_SNOC_BIMC_1_SLV,
	QNOC_SNOC_BIMC_2_SLV,
	QNOC_SLAVE_OCIMEM,
	QNOC_SNOC_PNOC_SLV,
	QNOC_SLAVE_QDSS_STM,
	QNOC_SLAVE_CATS_128,
	QNOC_SLAVE_OCMEM_64,
	QNOC_SLAVE_LPASS,
};

static const u16 mas_apps_proc_links[] = {
	QNOC_SLAVE_EBI_CH0,
	QNOC_BIMC_SNOC_SLV
};

static struct qcom_icc_node mas_apps_proc = {
	.name = "mas_apps_proc",
	.id = QNOC_MASTER_AMPSS_M0,
	.buswidth = 8,
	.mas_rpm_id = 0,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 0,
	.num_links = ARRAY_SIZE(mas_apps_proc_links),
	.links = mas_apps_proc_links,
};

static const u16 mas_oxili_links[] = {
	QNOC_SLAVE_EBI_CH0,
	QNOC_BIMC_SNOC_SLV
};

static struct qcom_icc_node mas_oxili = {
	.name = "mas_oxili",
	.id = QNOC_MASTER_GRAPHICS_3D,
	.buswidth = 8,
	.mas_rpm_id = 6,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 2,
	.num_links = ARRAY_SIZE(mas_oxili_links),
	.links = mas_oxili_links,
};

static const u16 mas_snoc_bimc_0_links[] = {
	QNOC_SLAVE_EBI_CH0,
	QNOC_BIMC_SNOC_SLV
};

static struct qcom_icc_node mas_snoc_bimc_0 = {
	.name = "mas_snoc_bimc_0",
	.id = QNOC_SNOC_BIMC_0_MAS,
	.buswidth = 8,
	.mas_rpm_id = 3,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 3,
	.num_links = ARRAY_SIZE(mas_snoc_bimc_0_links),
	.links = mas_snoc_bimc_0_links,
};

static const u16 mas_snoc_bimc_2_links[] = {
	QNOC_SLAVE_EBI_CH0,
	QNOC_BIMC_SNOC_SLV
};

static struct qcom_icc_node mas_snoc_bimc_2 = {
	.name = "mas_snoc_bimc_2",
	.id = QNOC_SNOC_BIMC_2_MAS,
	.buswidth = 8,
	.mas_rpm_id = 108,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 4,
	.num_links = ARRAY_SIZE(mas_snoc_bimc_2_links),
	.links = mas_snoc_bimc_2_links,
};

static const u16 mas_snoc_bimc_1_links[] = {
	QNOC_SLAVE_EBI_CH0
};

static struct qcom_icc_node mas_snoc_bimc_1 = {
	.name = "mas_snoc_bimc_1",
	.id = QNOC_SNOC_BIMC_1_MAS,
	.buswidth = 8,
	.mas_rpm_id = 76,
	.slv_rpm_id = -1,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 5,
	.num_links = ARRAY_SIZE(mas_snoc_bimc_1_links),
	.links = mas_snoc_bimc_1_links,
};

static const u16 mas_tcu_0_links[] = {
	QNOC_SLAVE_EBI_CH0,
	QNOC_BIMC_SNOC_SLV
};

static struct qcom_icc_node mas_tcu_0 = {
	.name = "mas_tcu_0",
	.id = QNOC_MASTER_TCU_0,
	.buswidth = 8,
	.mas_rpm_id = 102,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 2,
	.qos.qos_port = 6,
	.num_links = ARRAY_SIZE(mas_tcu_0_links),
	.links = mas_tcu_0_links,
};

static const u16 mas_spdm_links[] = {
	QNOC_PNOC_M_0
};

static struct qcom_icc_node mas_spdm = {
	.name = "mas_spdm",
	.id = QNOC_MASTER_SPDM,
	.buswidth = 4,
	.mas_rpm_id = 50,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
	.num_links = ARRAY_SIZE(mas_spdm_links),
	.links = mas_spdm_links,
};

static const u16 mas_blsp_1_links[] = {
	QNOC_PNOC_M_1
};

static struct qcom_icc_node mas_blsp_1 = {
	.name = "mas_blsp_1",
	.id = QNOC_MASTER_BLSP_1,
	.buswidth = 4,
	.mas_rpm_id = 41,
	.slv_rpm_id = -1,
	.num_links = ARRAY_SIZE(mas_blsp_1_links),
	.links = mas_blsp_1_links,
};

static const u16 mas_blsp_2_links[] = {
	QNOC_PNOC_M_1
};

static struct qcom_icc_node mas_blsp_2 = {
	.name = "mas_blsp_2",
	.id = QNOC_MASTER_BLSP_2,
	.buswidth = 4,
	.mas_rpm_id = 39,
	.slv_rpm_id = -1,
	.num_links = ARRAY_SIZE(mas_blsp_2_links),
	.links = mas_blsp_2_links,
};

static const u16 mas_usb_hs1_links[] = {
	QNOC_PNOC_INT_0
};

static struct qcom_icc_node mas_usb_hs1 = {
	.name = "mas_usb_hs1",
	.id = QNOC_MASTER_USB_HS,
	.buswidth = 4,
	.mas_rpm_id = 42,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 1,
	.qos.prio_level = 1,
	.qos.qos_port = 12,
	.num_links = ARRAY_SIZE(mas_usb_hs1_links),
	.links = mas_usb_hs1_links,
};

static const u16 mas_xi_usb_hs1_links[] = {
	QNOC_PNOC_INT_0
};

static struct qcom_icc_node mas_xi_usb_hs1 = {
	.name = "mas_xi_usb_hs1",
	.id = QNOC_MASTER_XM_USB_HS1,
	.buswidth = 8,
	.mas_rpm_id = 138,
	.slv_rpm_id = -1,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 11,
	.num_links = ARRAY_SIZE(mas_xi_usb_hs1_links),
	.links = mas_xi_usb_hs1_links,
};

static const u16 mas_crypto_links[] = {
	QNOC_PNOC_INT_0
};

static struct qcom_icc_node mas_crypto = {
	.name = "mas_crypto",
	.id = QNOC_MASTER_CRYPTO_CORE0,
	.buswidth = 8,
	.mas_rpm_id = 23,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 1,
	.qos.prio_level = 1,
	.qos.qos_port = 0,
	.num_links = ARRAY_SIZE(mas_crypto_links),
	.links = mas_crypto_links,
};

static const u16 mas_sdcc_1_links[] = {
	QNOC_PNOC_INT_0
};

static struct qcom_icc_node mas_sdcc_1 = {
	.name = "mas_sdcc_1",
	.id = QNOC_MASTER_SDCC_1,
	.buswidth = 8,
	.mas_rpm_id = 33,
	.slv_rpm_id = -1,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 7,
	.num_links = ARRAY_SIZE(mas_sdcc_1_links),
	.links = mas_sdcc_1_links,
};

static const u16 mas_sdcc_2_links[] = {
	QNOC_PNOC_INT_0
};

static struct qcom_icc_node mas_sdcc_2 = {
	.name = "mas_sdcc_2",
	.id = QNOC_MASTER_SDCC_2,
	.buswidth = 8,
	.mas_rpm_id = 35,
	.slv_rpm_id = -1,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 8,
	.num_links = ARRAY_SIZE(mas_sdcc_2_links),
	.links = mas_sdcc_2_links,
};

static const u16 mas_snoc_pcnoc_links[] = {
	QNOC_PNOC_SLV_7,
	QNOC_PNOC_INT_2,
	QNOC_PNOC_INT_3
};

static struct qcom_icc_node mas_snoc_pcnoc = {
	.name = "mas_snoc_pcnoc",
	.id = QNOC_SNOC_PNOC_MAS,
	.buswidth = 8,
	.mas_rpm_id = 77,
	.slv_rpm_id = -1,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 9,
	.num_links = ARRAY_SIZE(mas_snoc_pcnoc_links),
	.links = mas_snoc_pcnoc_links,
};

static const u16 mas_qdss_bam_links[] = {
	QNOC_SNOC_QDSS_INT
};

static struct qcom_icc_node mas_qdss_bam = {
	.name = "mas_qdss_bam",
	.id = QNOC_MASTER_QDSS_BAM,
	.buswidth = 4,
	.mas_rpm_id = 19,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 1,
	.qos.prio_level = 1,
	.qos.qos_port = 11,
	.num_links = ARRAY_SIZE(mas_qdss_bam_links),
	.links = mas_qdss_bam_links,
};

static const u16 mas_bimc_snoc_links[] = {
	QNOC_SNOC_INT_0,
	QNOC_SNOC_INT_1,
	QNOC_SNOC_INT_2
};

static struct qcom_icc_node mas_bimc_snoc = {
	.name = "mas_bimc_snoc",
	.id = QNOC_BIMC_SNOC_MAS,
	.buswidth = 8,
	.mas_rpm_id = 21,
	.slv_rpm_id = -1,
	.num_links = ARRAY_SIZE(mas_bimc_snoc_links),
	.links = mas_bimc_snoc_links,
};

static const u16 mas_jpeg_links[] = {
	QNOC_SNOC_BIMC_2_SLV
};

static struct qcom_icc_node mas_jpeg = {
	.name = "mas_jpeg",
	.id = QNOC_MASTER_JPEG,
	.buswidth = 16,
	.mas_rpm_id = 7,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 6,
	.num_links = ARRAY_SIZE(mas_jpeg_links),
	.links = mas_jpeg_links,
};

static const u16 mas_mdp_links[] = {
	QNOC_SNOC_BIMC_0_SLV
};

static struct qcom_icc_node mas_mdp = {
	.name = "mas_mdp",
	.id = QNOC_MASTER_MDP_PORT0,
	.buswidth = 16,
	.mas_rpm_id = 8,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 7,
	.num_links = ARRAY_SIZE(mas_mdp_links),
	.links = mas_mdp_links,
};

static const u16 mas_pcnoc_snoc_links[] = {
	QNOC_SNOC_INT_0,
	QNOC_SNOC_INT_1,
	QNOC_SNOC_BIMC_1_SLV
};

static struct qcom_icc_node mas_pcnoc_snoc = {
	.name = "mas_pcnoc_snoc",
	.id = QNOC_PNOC_SNOC_MAS,
	.buswidth = 8,
	.mas_rpm_id = 29,
	.slv_rpm_id = -1,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 5,
	.num_links = ARRAY_SIZE(mas_pcnoc_snoc_links),
	.links = mas_pcnoc_snoc_links,
};

static const u16 mas_venus_links[] = {
	QNOC_SNOC_BIMC_2_SLV
};

static struct qcom_icc_node mas_venus = {
	.name = "mas_venus",
	.id = QNOC_MASTER_VIDEO_P0,
	.buswidth = 16,
	.mas_rpm_id = 9,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 8,
	.num_links = ARRAY_SIZE(mas_venus_links),
	.links = mas_venus_links,
};

static const u16 mas_vfe0_links[] = {
	QNOC_SNOC_BIMC_0_SLV
};

static struct qcom_icc_node mas_vfe0 = {
	.name = "mas_vfe0",
	.id = QNOC_MASTER_VFE,
	.buswidth = 16,
	.mas_rpm_id = 11,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 9,
	.num_links = ARRAY_SIZE(mas_vfe0_links),
	.links = mas_vfe0_links,
};

static const u16 mas_vfe1_links[] = {
	QNOC_SNOC_BIMC_0_SLV
};

static struct qcom_icc_node mas_vfe1 = {
	.name = "mas_vfe1",
	.id = QNOC_MASTER_VFE1,
	.buswidth = 16,
	.mas_rpm_id = 133,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 13,
	.num_links = ARRAY_SIZE(mas_vfe1_links),
	.links = mas_vfe1_links,
};

static const u16 mas_cpp_links[] = {
	QNOC_SNOC_BIMC_2_SLV
};

static struct qcom_icc_node mas_cpp = {
	.name = "mas_cpp",
	.id = QNOC_MASTER_CPP,
	.buswidth = 16,
	.mas_rpm_id = 115,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 12,
	.num_links = ARRAY_SIZE(mas_cpp_links),
	.links = mas_cpp_links,
};

static const u16 mas_qdss_etr_links[] = {
	QNOC_SNOC_QDSS_INT
};

static struct qcom_icc_node mas_qdss_etr = {
	.name = "mas_qdss_etr",
	.id = QNOC_MASTER_QDSS_ETR,
	.buswidth = 8,
	.mas_rpm_id = 31,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 1,
	.qos.prio_level = 1,
	.qos.qos_port = 10,
	.num_links = ARRAY_SIZE(mas_qdss_etr_links),
	.links = mas_qdss_etr_links,
};

static const u16 pcnoc_m_0_links[] = {
	QNOC_PNOC_INT_0
};

static struct qcom_icc_node pcnoc_m_0 = {
	.name = "pcnoc_m_0",
	.id = QNOC_PNOC_M_0,
	.buswidth = 4,
	.mas_rpm_id = 87,
	.slv_rpm_id = 116,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 1,
	.qos.prio_level = 1,
	.qos.qos_port = 5,
	.num_links = ARRAY_SIZE(pcnoc_m_0_links),
	.links = pcnoc_m_0_links,
};

static const u16 pcnoc_m_1_links[] = {
	QNOC_PNOC_INT_0
};

static struct qcom_icc_node pcnoc_m_1 = {
	.name = "pcnoc_m_1",
	.id = QNOC_PNOC_M_1,
	.buswidth = 4,
	.mas_rpm_id = 88,
	.slv_rpm_id = 117,
	.num_links = ARRAY_SIZE(pcnoc_m_1_links),
	.links = pcnoc_m_1_links,
};

static const u16 pcnoc_int_0_links[] = {
	QNOC_PNOC_SNOC_SLV,
	QNOC_PNOC_SLV_7,
	QNOC_PNOC_INT_3,
	QNOC_PNOC_INT_2
};

static struct qcom_icc_node pcnoc_int_0 = {
	.name = "pcnoc_int_0",
	.id = QNOC_PNOC_INT_0,
	.buswidth = 8,
	.mas_rpm_id = 85,
	.slv_rpm_id = 114,
	.num_links = ARRAY_SIZE(pcnoc_int_0_links),
	.links = pcnoc_int_0_links,
};

static const u16 pcnoc_int_1_links[] = {
	QNOC_PNOC_SNOC_SLV,
	QNOC_PNOC_SLV_7,
	QNOC_PNOC_INT_3,
	QNOC_PNOC_INT_2
};

static struct qcom_icc_node pcnoc_int_1 = {
	.name = "pcnoc_int_1",
	.id = QNOC_PNOC_INT_1,
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.num_links = ARRAY_SIZE(pcnoc_int_1_links),
	.links = pcnoc_int_1_links,
};

static const u16 pcnoc_int_2_links[] = {
	QNOC_PNOC_SLV_2,
	QNOC_PNOC_SLV_3,
	QNOC_PNOC_SLV_6,
	QNOC_PNOC_SLV_8
};

static struct qcom_icc_node pcnoc_int_2 = {
	.name = "pcnoc_int_2",
	.id = QNOC_PNOC_INT_2,
	.buswidth = 8,
	.mas_rpm_id = 124,
	.slv_rpm_id = 184,
	.num_links = ARRAY_SIZE(pcnoc_int_2_links),
	.links = pcnoc_int_2_links,
};

static const u16 pcnoc_int_3_links[] = {
	QNOC_PNOC_SLV_1,
	QNOC_PNOC_SLV_0,
	QNOC_PNOC_SLV_4,
	QNOC_SLAVE_GRAPHICS_3D_CFG,
	QNOC_SLAVE_TCU
};

static struct qcom_icc_node pcnoc_int_3 = {
	.name = "pcnoc_int_3",
	.id = QNOC_PNOC_INT_3,
	.buswidth = 8,
	.mas_rpm_id = 125,
	.slv_rpm_id = 185,
	.num_links = ARRAY_SIZE(pcnoc_int_3_links),
	.links = pcnoc_int_3_links,
};

static const u16 pcnoc_s_0_links[] = {
	QNOC_SLAVE_SPDM_WRAPPER,
	QNOC_SLAVE_PDM,
	QNOC_SLAVE_PRNG,
	QNOC_SLAVE_SDCC_2
};

static struct qcom_icc_node pcnoc_s_0 = {
	.name = "pcnoc_s_0",
	.id = QNOC_PNOC_SLV_0,
	.buswidth = 4,
	.mas_rpm_id = 89,
	.slv_rpm_id = 118,
	.num_links = ARRAY_SIZE(pcnoc_s_0_links),
	.links = pcnoc_s_0_links,
};

static const u16 pcnoc_s_1_links[] = {
	QNOC_SLAVE_TCSR
};

static struct qcom_icc_node pcnoc_s_1 = {
	.name = "pcnoc_s_1",
	.id = QNOC_PNOC_SLV_1,
	.buswidth = 4,
	.mas_rpm_id = 90,
	.slv_rpm_id = 119,
	.num_links = ARRAY_SIZE(pcnoc_s_1_links),
	.links = pcnoc_s_1_links,
};

static const u16 pcnoc_s_2_links[] = {
	QNOC_SLAVE_SNOC_CFG
};

static struct qcom_icc_node pcnoc_s_2 = {
	.name = "pcnoc_s_2",
	.id = QNOC_PNOC_SLV_2,
	.buswidth = 4,
	.mas_rpm_id = 91,
	.slv_rpm_id = 120,
	.num_links = ARRAY_SIZE(pcnoc_s_2_links),
	.links = pcnoc_s_2_links,
};

static const u16 pcnoc_s_3_links[] = {
	QNOC_SLAVE_MESSAGE_RAM
};

static struct qcom_icc_node pcnoc_s_3 = {
	.name = "pcnoc_s_3",
	.id = QNOC_PNOC_SLV_3,
	.buswidth = 4,
	.mas_rpm_id = 92,
	.slv_rpm_id = 121,
	.num_links = ARRAY_SIZE(pcnoc_s_3_links),
	.links = pcnoc_s_3_links,
};

static const u16 pcnoc_s_4_links[] = {
	QNOC_SLAVE_CAMERA_CFG,
	QNOC_SLAVE_DISPLAY_CFG,
	QNOC_SLAVE_VENUS_CFG
};

static struct qcom_icc_node pcnoc_s_4 = {
	.name = "pcnoc_s_4",
	.id = QNOC_PNOC_SLV_4,
	.buswidth = 4,
	.mas_rpm_id = 93,
	.slv_rpm_id = 122,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
	.num_links = ARRAY_SIZE(pcnoc_s_4_links),
	.links = pcnoc_s_4_links,
};

static const u16 pcnoc_s_6_links[] = {
	QNOC_SLAVE_TLMM,
	QNOC_SLAVE_BLSP_1,
	QNOC_SLAVE_BLSP_2
};

static struct qcom_icc_node pcnoc_s_6 = {
	.name = "pcnoc_s_6",
	.id = QNOC_PNOC_SLV_6,
	.buswidth = 4,
	.mas_rpm_id = 94,
	.slv_rpm_id = 123,
	.num_links = ARRAY_SIZE(pcnoc_s_6_links),
	.links = pcnoc_s_6_links,
};

static const u16 pcnoc_s_7_links[] = {
	QNOC_SLAVE_SDCC_1,
	QNOC_SLAVE_PMIC_ARB
};

static struct qcom_icc_node pcnoc_s_7 = {
	.name = "pcnoc_s_7",
	.id = QNOC_PNOC_SLV_7,
	.buswidth = 4,
	.mas_rpm_id = 95,
	.slv_rpm_id = 124,
	.num_links = ARRAY_SIZE(pcnoc_s_7_links),
	.links = pcnoc_s_7_links,
};

static const u16 pcnoc_s_8_links[] = {
	QNOC_SLAVE_USB_HS,
	QNOC_SLAVE_CRYPTO_0_CFG
};

static struct qcom_icc_node pcnoc_s_8 = {
	.name = "pcnoc_s_8",
	.id = QNOC_PNOC_SLV_8,
	.buswidth = 4,
	.mas_rpm_id = 96,
	.slv_rpm_id = 125,
	.num_links = ARRAY_SIZE(pcnoc_s_8_links),
	.links = pcnoc_s_8_links,
};

static const u16 qdss_int_links[] = {
	QNOC_SNOC_INT_1,
	QNOC_SNOC_BIMC_1_SLV
};

static struct qcom_icc_node qdss_int = {
	.name = "qdss_int",
	.id = QNOC_SNOC_QDSS_INT,
	.buswidth = 8,
	.mas_rpm_id = 98,
	.slv_rpm_id = 128,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
	.num_links = ARRAY_SIZE(qdss_int_links),
	.links = qdss_int_links,
};

static const u16 snoc_int_0_links[] = {
	QNOC_SLAVE_LPASS,
	QNOC_SLAVE_WCSS,
	QNOC_SLAVE_APPSS
};

static struct qcom_icc_node snoc_int_0 = {
	.name = "snoc_int_0",
	.id = QNOC_SNOC_INT_0,
	.buswidth = 8,
	.mas_rpm_id = 99,
	.slv_rpm_id = 130,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
	.num_links = ARRAY_SIZE(snoc_int_0_links),
	.links = snoc_int_0_links,
};

static const u16 snoc_int_1_links[] = {
	QNOC_SLAVE_QDSS_STM,
	QNOC_SLAVE_OCIMEM,
	QNOC_SNOC_PNOC_SLV
};

static struct qcom_icc_node snoc_int_1 = {
	.name = "snoc_int_1",
	.id = QNOC_SNOC_INT_1,
	.buswidth = 8,
	.mas_rpm_id = 100,
	.slv_rpm_id = 131,
	.num_links = ARRAY_SIZE(snoc_int_1_links),
	.links = snoc_int_1_links,
};

static const u16 snoc_int_2_links[] = {
	QNOC_SLAVE_CATS_128,
	QNOC_SLAVE_OCMEM_64
};

static struct qcom_icc_node snoc_int_2 = {
	.name = "snoc_int_2",
	.id = QNOC_SNOC_INT_2,
	.buswidth = 8,
	.mas_rpm_id = 134,
	.slv_rpm_id = 197,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
	.num_links = ARRAY_SIZE(snoc_int_2_links),
	.links = snoc_int_2_links,
};


static struct qcom_icc_node slv_ebi = {
	.name = "slv_ebi",
	.id = QNOC_SLAVE_EBI_CH0,
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = 0,
};

static const u16 slv_bimc_snoc_links[] = {
	QNOC_BIMC_SNOC_MAS
};

static struct qcom_icc_node slv_bimc_snoc = {
	.name = "slv_bimc_snoc",
	.id = QNOC_BIMC_SNOC_SLV,
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = 2,
	.num_links = ARRAY_SIZE(slv_bimc_snoc_links),
	.links = slv_bimc_snoc_links,
};


static struct qcom_icc_node slv_sdcc_2 = {
	.name = "slv_sdcc_2",
	.id = QNOC_SLAVE_SDCC_2,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 33,
};


static struct qcom_icc_node slv_spdm = {
	.name = "slv_spdm",
	.id = QNOC_SLAVE_SPDM_WRAPPER,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 60,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};


static struct qcom_icc_node slv_pdm = {
	.name = "slv_pdm",
	.id = QNOC_SLAVE_PDM,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 41,
};


static struct qcom_icc_node slv_prng = {
	.name = "slv_prng",
	.id = QNOC_SLAVE_PRNG,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 44,
};


static struct qcom_icc_node slv_tcsr = {
	.name = "slv_tcsr",
	.id = QNOC_SLAVE_TCSR,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 50,
};


static struct qcom_icc_node slv_snoc_cfg = {
	.name = "slv_snoc_cfg",
	.id = QNOC_SLAVE_SNOC_CFG,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 70,
};


static struct qcom_icc_node slv_message_ram = {
	.name = "slv_message_ram",
	.id = QNOC_SLAVE_MESSAGE_RAM,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 55,
};


static struct qcom_icc_node slv_camera_ss_cfg = {
	.name = "slv_camera_ss_cfg",
	.id = QNOC_SLAVE_CAMERA_CFG,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 3,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};


static struct qcom_icc_node slv_disp_ss_cfg = {
	.name = "slv_disp_ss_cfg",
	.id = QNOC_SLAVE_DISPLAY_CFG,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 4,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};


static struct qcom_icc_node slv_venus_cfg = {
	.name = "slv_venus_cfg",
	.id = QNOC_SLAVE_VENUS_CFG,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 10,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};


static struct qcom_icc_node slv_gpu_cfg = {
	.name = "slv_gpu_cfg",
	.id = QNOC_SLAVE_GRAPHICS_3D_CFG,
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = 11,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};


static struct qcom_icc_node slv_tlmm = {
	.name = "slv_tlmm",
	.id = QNOC_SLAVE_TLMM,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 51,
};


static struct qcom_icc_node slv_blsp_1 = {
	.name = "slv_blsp_1",
	.id = QNOC_SLAVE_BLSP_1,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 39,
};


static struct qcom_icc_node slv_blsp_2 = {
	.name = "slv_blsp_2",
	.id = QNOC_SLAVE_BLSP_2,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 37,
};


static struct qcom_icc_node slv_pmic_arb = {
	.name = "slv_pmic_arb",
	.id = QNOC_SLAVE_PMIC_ARB,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 59,
};


static struct qcom_icc_node slv_sdcc_1 = {
	.name = "slv_sdcc_1",
	.id = QNOC_SLAVE_SDCC_1,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 31,
};


static struct qcom_icc_node slv_crypto_0_cfg = {
	.name = "slv_crypto_0_cfg",
	.id = QNOC_SLAVE_CRYPTO_0_CFG,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 52,
};


static struct qcom_icc_node slv_usb_hs = {
	.name = "slv_usb_hs",
	.id = QNOC_SLAVE_USB_HS,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 40,
};


static struct qcom_icc_node slv_tcu = {
	.name = "slv_tcu",
	.id = QNOC_SLAVE_TCU,
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = 133,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static const u16 slv_pcnoc_snoc_links[] = {
	QNOC_PNOC_SNOC_MAS
};

static struct qcom_icc_node slv_pcnoc_snoc = {
	.name = "slv_pcnoc_snoc",
	.id = QNOC_PNOC_SNOC_SLV,
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = 45,
	.num_links = ARRAY_SIZE(slv_pcnoc_snoc_links),
	.links = slv_pcnoc_snoc_links,
};


static struct qcom_icc_node slv_kpss_ahb = {
	.name = "slv_kpss_ahb",
	.id = QNOC_SLAVE_APPSS,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 20,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};


static struct qcom_icc_node slv_wcss = {
	.name = "slv_wcss",
	.id = QNOC_SLAVE_WCSS,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 23,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static const u16 slv_snoc_bimc_0_links[] = {
	QNOC_SNOC_BIMC_0_MAS
};

static struct qcom_icc_node slv_snoc_bimc_0 = {
	.name = "slv_snoc_bimc_0",
	.id = QNOC_SNOC_BIMC_0_SLV,
	.buswidth = 16,
	.mas_rpm_id = -1,
	.slv_rpm_id = 24,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
	.num_links = ARRAY_SIZE(slv_snoc_bimc_0_links),
	.links = slv_snoc_bimc_0_links,
};

static const u16 slv_snoc_bimc_1_links[] = {
	QNOC_SNOC_BIMC_1_MAS
};

static struct qcom_icc_node slv_snoc_bimc_1 = {
	.name = "slv_snoc_bimc_1",
	.id = QNOC_SNOC_BIMC_1_SLV,
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = 104,
	.num_links = ARRAY_SIZE(slv_snoc_bimc_1_links),
	.links = slv_snoc_bimc_1_links,
};

static const u16 slv_snoc_bimc_2_links[] = {
	QNOC_SNOC_BIMC_2_MAS
};

static struct qcom_icc_node slv_snoc_bimc_2 = {
	.name = "slv_snoc_bimc_2",
	.id = QNOC_SNOC_BIMC_2_SLV,
	.buswidth = 16,
	.mas_rpm_id = -1,
	.slv_rpm_id = 137,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
	.num_links = ARRAY_SIZE(slv_snoc_bimc_2_links),
	.links = slv_snoc_bimc_2_links,
};

static struct qcom_icc_node slv_imem = {
	.name = "slv_imem",
	.id = QNOC_SLAVE_OCIMEM,
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = 26,
};

static const u16 slv_snoc_pcnoc_links[] = {
	QNOC_SNOC_PNOC_MAS
};

static struct qcom_icc_node slv_snoc_pcnoc = {
	.name = "slv_snoc_pcnoc",
	.id = QNOC_SNOC_PNOC_SLV,
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = 28,
	.num_links = ARRAY_SIZE(slv_snoc_pcnoc_links),
	.links = slv_snoc_pcnoc_links,
};

static struct qcom_icc_node slv_qdss_stm = {
	.name = "slv_qdss_stm",
	.id = QNOC_SLAVE_QDSS_STM,
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = 30,
};

static struct qcom_icc_node slv_cats_0 = {
	.name = "slv_cats_0",
	.id = QNOC_SLAVE_CATS_128,
	.buswidth = 16,
	.mas_rpm_id = -1,
	.slv_rpm_id = 106,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_cats_1 = {
	.name = "slv_cats_1",
	.id = QNOC_SLAVE_OCMEM_64,
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = 107,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_lpass = {
	.name = "slv_lpass",
	.id = QNOC_SLAVE_LPASS,
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = 21,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node *msm8937_bimc_nodes[] = {
	[MAS_APPS_PROC] = &mas_apps_proc,
	[MAS_OXILI] = &mas_oxili,
	[MAS_SNOC_BIMC_0] = &mas_snoc_bimc_0,
	[MAS_SNOC_BIMC_2] = &mas_snoc_bimc_2,
	[MAS_SNOC_BIMC_1] = &mas_snoc_bimc_1,
	[MAS_TCU_0] = &mas_tcu_0,
	[SLV_EBI] = &slv_ebi,
	[SLV_BIMC_SNOC] = &slv_bimc_snoc,
};

static const struct regmap_config msm8937_bimc_regmap_config = {
	.reg_bits = 32,
	.reg_stride = 4,
	.val_bits = 32,
	.max_register = 0x5A000,
	.fast_io = true,
};

static const struct qcom_icc_desc msm8937_bimc = {
	.type = QCOM_ICC_BIMC,
	.nodes = msm8937_bimc_nodes,
	.num_nodes = ARRAY_SIZE(msm8937_bimc_nodes),
	.bus_clk_desc = &bimc_clk,
	.regmap_cfg = &msm8937_bimc_regmap_config,
	.qos_offset = 0x8000,
	.ab_coeff = 154,
};

static struct qcom_icc_node *msm8937_pcnoc_nodes[] = {
	[MAS_SPDM] = &mas_spdm,
	[MAS_BLSP_1] = &mas_blsp_1,
	[MAS_BLSP_2] = &mas_blsp_2,
	[MAS_USB_HS1] = &mas_usb_hs1,
	[MAS_XI_USB_HS1] = &mas_xi_usb_hs1,
	[MAS_CRYPTO] = &mas_crypto,
	[MAS_SDCC_1] = &mas_sdcc_1,
	[MAS_SDCC_2] = &mas_sdcc_2,
	[MAS_SNOC_PCNOC] = &mas_snoc_pcnoc,
	[PCNOC_M_0] = &pcnoc_m_0,
	[PCNOC_M_1] = &pcnoc_m_1,
	[PCNOC_INT_0] = &pcnoc_int_0,
	[PCNOC_INT_1] = &pcnoc_int_1,
	[PCNOC_INT_2] = &pcnoc_int_2,
	[PCNOC_INT_3] = &pcnoc_int_3,
	[PCNOC_S_0] = &pcnoc_s_0,
	[PCNOC_S_1] = &pcnoc_s_1,
	[PCNOC_S_2] = &pcnoc_s_2,
	[PCNOC_S_3] = &pcnoc_s_3,
	[PCNOC_S_4] = &pcnoc_s_4,
	[PCNOC_S_6] = &pcnoc_s_6,
	[PCNOC_S_7] = &pcnoc_s_7,
	[PCNOC_S_8] = &pcnoc_s_8,
	[SLV_SDCC_2] = &slv_sdcc_2,
	[SLV_SPDM] = &slv_spdm,
	[SLV_PDM] = &slv_pdm,
	[SLV_PRNG] = &slv_prng,
	[SLV_TCSR] = &slv_tcsr,
	[SLV_SNOC_CFG] = &slv_snoc_cfg,
	[SLV_MESSAGE_RAM] = &slv_message_ram,
	[SLV_CAMERA_SS_CFG] = &slv_camera_ss_cfg,
	[SLV_DISP_SS_CFG] = &slv_disp_ss_cfg,
	[SLV_VENUS_CFG] = &slv_venus_cfg,
	[SLV_GPU_CFG] = &slv_gpu_cfg,
	[SLV_TLMM] = &slv_tlmm,
	[SLV_BLSP_1] = &slv_blsp_1,
	[SLV_BLSP_2] = &slv_blsp_2,
	[SLV_PMIC_ARB] = &slv_pmic_arb,
	[SLV_SDCC_1] = &slv_sdcc_1,
	[SLV_CRYPTO_0_CFG] = &slv_crypto_0_cfg,
	[SLV_USB_HS] = &slv_usb_hs,
	[SLV_TCU] = &slv_tcu,
	[SLV_PCNOC_SNOC] = &slv_pcnoc_snoc,
};

static const struct regmap_config msm8937_pcnoc_regmap_config = {
	.reg_bits = 32,
	.reg_stride = 4,
	.val_bits = 32,
	.max_register = 0x13080,
	.fast_io = true,
};

static const struct qcom_icc_desc msm8937_pcnoc = {
	.type = QCOM_ICC_NOC,
	.nodes = msm8937_pcnoc_nodes,
	.num_nodes = ARRAY_SIZE(msm8937_pcnoc_nodes),
	.bus_clk_desc = &bus_0_clk,
	.qos_offset = 0x7000,
	.keep_alive = true,
	.regmap_cfg = &msm8937_pcnoc_regmap_config,
};

static struct qcom_icc_node *msm8937_snoc_nodes[] = {
	[MAS_QDSS_BAM] = &mas_qdss_bam,
	[MAS_BIMC_SNOC] = &mas_bimc_snoc,
	[MAS_PCNOC_SNOC] = &mas_pcnoc_snoc,
	[MAS_QDSS_ETR] = &mas_qdss_etr,
	[QDSS_INT] = &qdss_int,
	[SNOC_INT_0] = &snoc_int_0,
	[SNOC_INT_1] = &snoc_int_1,
	[SNOC_INT_2] = &snoc_int_2,
	[SLV_KPSS_AHB] = &slv_kpss_ahb,
	[SLV_WCSS] = &slv_wcss,
	[SLV_SNOC_BIMC_1] = &slv_snoc_bimc_1,
	[SLV_IMEM] = &slv_imem,
	[SLV_SNOC_PCNOC] = &slv_snoc_pcnoc,
	[SLV_QDSS_STM] = &slv_qdss_stm,
	[SLV_CATS_1] = &slv_cats_1,
	[SLV_LPASS] = &slv_lpass,
};

static const struct regmap_config msm8937_snoc_regmap_config = {
	.reg_bits = 32,
	.reg_stride = 4,
	.val_bits = 32,
	.max_register = 0x16080,
	.fast_io = true,
};

static const struct qcom_icc_desc msm8937_snoc = {
	.type = QCOM_ICC_NOC,
	.nodes = msm8937_snoc_nodes,
	.num_nodes = ARRAY_SIZE(msm8937_snoc_nodes),
	.bus_clk_desc = &bus_1_clk,
	.regmap_cfg = &msm8937_snoc_regmap_config,
	.qos_offset = 0x7000,
};

static struct qcom_icc_node *msm8937_snoc_mm_nodes[] = {
	[MAS_JPEG] = &mas_jpeg,
	[MAS_MDP] = &mas_mdp,
	[MAS_VENUS] = &mas_venus,
	[MAS_VFE0] = &mas_vfe0,
	[MAS_VFE1] = &mas_vfe1,
	[MAS_CPP] = &mas_cpp,
	[SLV_SNOC_BIMC_0] = &slv_snoc_bimc_0,
	[SLV_SNOC_BIMC_2] = &slv_snoc_bimc_2,
	[SLV_CATS_0] = &slv_cats_0,
};

static const struct qcom_icc_desc msm8937_snoc_mm = {
	.type = QCOM_ICC_NOC,
	.nodes = msm8937_snoc_mm_nodes,
	.num_nodes = ARRAY_SIZE(msm8937_snoc_mm_nodes),
	.bus_clk_desc = &bus_2_clk,
	.regmap_cfg = &msm8937_snoc_regmap_config,
	.qos_offset = 0x7000,
	.ab_coeff = 154,
};

static const struct of_device_id msm8937_noc_of_match[] = {
	{ .compatible = "qcom,msm8937-bimc", .data = &msm8937_bimc },
	{ .compatible = "qcom,msm8937-pcnoc", .data = &msm8937_pcnoc },
	{ .compatible = "qcom,msm8937-snoc", .data = &msm8937_snoc },
	{ .compatible = "qcom,msm8937-snoc-mm", .data = &msm8937_snoc_mm },
	{ }
};
MODULE_DEVICE_TABLE(of, msm8937_noc_of_match);

static struct platform_driver msm8937_noc_driver = {
	.probe = qnoc_probe,
	.remove_new = qnoc_remove,
	.driver = {
		.name = "qnoc-msm8937",
		.of_match_table = msm8937_noc_of_match,
		.sync_state = icc_sync_state,
	},
};
module_platform_driver(msm8937_noc_driver);

MODULE_DESCRIPTION("Qualcomm MSM8937 NoC driver");
MODULE_LICENSE("GPL");
-- 
2.45.1

[PATCH 5/7] interconnect: qcom: qcs404: Introduce AP-owned nodes Export this patch

When driver was first sent it seems ap_owned nodes were not available,
bring them now.

Signed-off-by: Adam Skladowski <a39.skl@gmail.com>
---
 drivers/interconnect/qcom/qcs404.c | 85 ++++++++++++++++++++++++++++++
 1 file changed, 85 insertions(+)

diff --git a/drivers/interconnect/qcom/qcs404.c b/drivers/interconnect/qcom/qcs404.c
index 11b49a89c03d..91b2ccc56a33 100644
--- a/drivers/interconnect/qcom/qcs404.c
+++ b/drivers/interconnect/qcom/qcs404.c
@@ -101,6 +101,11 @@ static struct qcom_icc_node mas_apps_proc = {
	.buswidth = 8,
	.mas_rpm_id = 0,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 0,
	.num_links = ARRAY_SIZE(mas_apps_proc_links),
	.links = mas_apps_proc_links,
};
@@ -116,6 +121,11 @@ static struct qcom_icc_node mas_oxili = {
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 2,
	.num_links = ARRAY_SIZE(mas_oxili_links),
	.links = mas_oxili_links,
};
@@ -131,6 +141,11 @@ static struct qcom_icc_node mas_mdp = {
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 1,
	.qos.qos_port = 4,
	.num_links = ARRAY_SIZE(mas_mdp_links),
	.links = mas_mdp_links,
};
@@ -145,6 +160,10 @@ static struct qcom_icc_node mas_snoc_bimc_1 = {
	.buswidth = 8,
	.mas_rpm_id = 76,
	.slv_rpm_id = -1,
	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
	.qos.areq_prio = 0,
	.qos.prio_level = 0,
	.qos.qos_port = 5,
	.num_links = ARRAY_SIZE(mas_snoc_bimc_1_links),
	.links = mas_snoc_bimc_1_links,
};
@@ -160,6 +179,11 @@ static struct qcom_icc_node mas_tcu_0 = {
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 0,
	.qos.prio_level = 2,
	.qos.qos_port = 6,
	.num_links = ARRAY_SIZE(mas_tcu_0_links),
	.links = mas_tcu_0_links,
};
@@ -174,6 +198,8 @@ static struct qcom_icc_node mas_spdm = {
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
	.num_links = ARRAY_SIZE(mas_spdm_links),
	.links = mas_spdm_links,
};
@@ -231,6 +257,11 @@ static struct qcom_icc_node mas_crypto = {
	.buswidth = 8,
	.mas_rpm_id = 23,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 1,
	.qos.prio_level = 1,
	.qos.qos_port = 0,
	.num_links = ARRAY_SIZE(mas_crypto_links),
	.links = mas_crypto_links,
};
@@ -287,6 +318,11 @@ static struct qcom_icc_node mas_qpic = {
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 1,
	.qos.prio_level = 1,
	.qos.qos_port = 14,
	.num_links = ARRAY_SIZE(mas_qpic_links),
	.links = mas_qpic_links,
};
@@ -301,6 +337,11 @@ static struct qcom_icc_node mas_qdss_bam = {
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 1,
	.qos.prio_level = 1,
	.qos.qos_port = 1,
	.num_links = ARRAY_SIZE(mas_qdss_bam_links),
	.links = mas_qdss_bam_links,
};
@@ -348,6 +389,11 @@ static struct qcom_icc_node mas_qdss_etr = {
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 1,
	.qos.prio_level = 1,
	.qos.qos_port = 0,
	.num_links = ARRAY_SIZE(mas_qdss_etr_links),
	.links = mas_qdss_etr_links,
};
@@ -363,6 +409,11 @@ static struct qcom_icc_node mas_emac = {
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 1,
	.qos.prio_level = 1,
	.qos.qos_port = 17,
	.num_links = ARRAY_SIZE(mas_emac_links),
	.links = mas_emac_links,
};
@@ -378,6 +429,11 @@ static struct qcom_icc_node mas_pcie = {
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 1,
	.qos.prio_level = 1,
	.qos.qos_port = 8,
	.num_links = ARRAY_SIZE(mas_pcie_links),
	.links = mas_pcie_links,
};
@@ -393,6 +449,11 @@ static struct qcom_icc_node mas_usb3 = {
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_FIXED,
	.qos.areq_prio = 1,
	.qos.prio_level = 1,
	.qos.qos_port = 16,
	.num_links = ARRAY_SIZE(mas_usb3_links),
	.links = mas_usb3_links,
};
@@ -491,6 +552,8 @@ static struct qcom_icc_node pcnoc_s_2 = {
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
	.num_links = ARRAY_SIZE(pcnoc_s_2_links),
	.links = pcnoc_s_2_links,
};
@@ -626,6 +689,8 @@ static struct qcom_icc_node qdss_int = {
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
	.num_links = ARRAY_SIZE(qdss_int_links),
	.links = qdss_int_links,
};
@@ -704,6 +769,8 @@ static struct qcom_icc_node slv_spdm = {
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_pdm = {
@@ -752,6 +819,8 @@ static struct qcom_icc_node slv_disp_ss_cfg = {
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_gpu_cfg = {
@@ -760,6 +829,8 @@ static struct qcom_icc_node slv_gpu_cfg = {
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_blsp_1 = {
@@ -784,6 +855,8 @@ static struct qcom_icc_node slv_pcie = {
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_ethernet = {
@@ -792,6 +865,8 @@ static struct qcom_icc_node slv_ethernet = {
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_blsp_2 = {
@@ -816,6 +891,8 @@ static struct qcom_icc_node slv_tcu = {
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_pmic_arb = {
@@ -894,6 +971,8 @@ static struct qcom_icc_node slv_kpss_ahb = {
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_wcss = {
@@ -954,6 +1033,8 @@ static struct qcom_icc_node slv_cats_0 = {
	.buswidth = 16,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_cats_1 = {
@@ -962,6 +1043,8 @@ static struct qcom_icc_node slv_cats_1 = {
	.buswidth = 8,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node slv_lpass = {
@@ -970,6 +1053,8 @@ static struct qcom_icc_node slv_lpass = {
	.buswidth = 4,
	.mas_rpm_id = -1,
	.slv_rpm_id = -1,
	.qos.ap_owned = true,
	.qos.qos_mode = NOC_QOS_MODE_INVALID,
};

static struct qcom_icc_node * const qcs404_bimc_nodes[] = {
-- 
2.45.1

[PATCH 6/7] interconnect: qcom: qcs404: Add regmaps and more bus descriptions Export this patch

Currently we are lacking descriptions of regmaps and buses,
provide them.

Signed-off-by: Adam Skladowski <a39.skl@gmail.com>
---
 drivers/interconnect/qcom/qcs404.c | 41 +++++++++++++++++++++++++++---
 1 file changed, 38 insertions(+), 3 deletions(-)

diff --git a/drivers/interconnect/qcom/qcs404.c b/drivers/interconnect/qcom/qcs404.c
index 91b2ccc56a33..f9b508a56588 100644
--- a/drivers/interconnect/qcom/qcs404.c
+++ b/drivers/interconnect/qcom/qcs404.c
@@ -1067,10 +1067,22 @@ static struct qcom_icc_node * const qcs404_bimc_nodes[] = {
	[SLAVE_BIMC_SNOC] = &slv_bimc_snoc,
};

static const struct regmap_config qcs404_bimc_regmap_config = {
	.reg_bits = 32,
	.reg_stride = 4,
	.val_bits = 32,
	.max_register = 0x80000,
	.fast_io = true,
};

static const struct qcom_icc_desc qcs404_bimc = {
	.bus_clk_desc = &bimc_clk,
	.type = QCOM_ICC_BIMC,
	.nodes = qcs404_bimc_nodes,
	.num_nodes = ARRAY_SIZE(qcs404_bimc_nodes),
	.bus_clk_desc = &bimc_clk,
	.regmap_cfg = &qcs404_bimc_regmap_config,
	.qos_offset = 0x8000,
	.ab_coeff = 153,
};

static struct qcom_icc_node * const qcs404_pcnoc_nodes[] = {
@@ -1122,10 +1134,22 @@ static struct qcom_icc_node * const qcs404_pcnoc_nodes[] = {
	[SLAVE_PCNOC_SNOC] = &slv_pcnoc_snoc,
};

static const struct regmap_config qcs404_pcnoc_regmap_config = {
	.reg_bits = 32,
	.reg_stride = 4,
	.val_bits = 32,
	.max_register = 0x15080,
	.fast_io = true,
};

static const struct qcom_icc_desc qcs404_pcnoc = {
	.bus_clk_desc = &bus_0_clk,
	.type = QCOM_ICC_NOC,
	.nodes = qcs404_pcnoc_nodes,
	.num_nodes = ARRAY_SIZE(qcs404_pcnoc_nodes),
	.bus_clk_desc = &bus_0_clk,
	.qos_offset = 0x7000,
	.keep_alive = true,
	.regmap_cfg = &qcs404_pcnoc_regmap_config,
};

static struct qcom_icc_node * const qcs404_snoc_nodes[] = {
@@ -1151,10 +1175,21 @@ static struct qcom_icc_node * const qcs404_snoc_nodes[] = {
	[SLAVE_LPASS] = &slv_lpass,
};

static const struct regmap_config qcs404_snoc_regmap_config = {
	.reg_bits = 32,
	.reg_stride = 4,
	.val_bits = 32,
	.max_register = 0x23080,
	.fast_io = true,
};

static const struct qcom_icc_desc qcs404_snoc = {
	.bus_clk_desc = &bus_1_clk,
	.type = QCOM_ICC_NOC,
	.nodes = qcs404_snoc_nodes,
	.num_nodes = ARRAY_SIZE(qcs404_snoc_nodes),
	.bus_clk_desc = &bus_1_clk,
	.qos_offset = 0x11000,
	.regmap_cfg = &qcs404_snoc_regmap_config,
};


-- 
2.45.1
Hi Adam,

kernel test robot noticed the following build errors:

[auto build test ERROR on robh/for-next]
[also build test ERROR on linus/master v6.10-rc3 next-20240607]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Adam-Skladowski/dt-bindings-interconnect-Add-Qualcomm-MSM8976-DT-bindings/20240610-022416
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
patch link:    https://lore.kernel.org/r/20240609182112.13032-7-a39.skl%40gmail.com
patch subject: [PATCH 6/7] interconnect: qcom: qcs404: Add regmaps and more bus descriptions
config: arm64-defconfig (https://download.01.org/0day-ci/archive/20240610/202406101715.AMP9VWkx-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240610/202406101715.AMP9VWkx-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202406101715.AMP9VWkx-lkp@intel.com/

All error/warnings (new ones prefixed by >>):
1070 | static const struct regmap_config qcs404_bimc_regmap_config = {
         |                     ^~~~~~~~~~~~~
1071 |         .reg_bits = 32,
         |          ^~~~~~~~
1071 |         .reg_bits = 32,
         |                     ^~
   drivers/interconnect/qcom/qcs404.c:1071:21: note: (near initialization for 'qcs404_bimc_regmap_config')
1072 |         .reg_stride = 4,
         |          ^~~~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1072:23: warning: excess elements in struct initializer
    1072 |         .reg_stride = 4,
         |                       ^
   drivers/interconnect/qcom/qcs404.c:1072:23: note: (near initialization for 'qcs404_bimc_regmap_config')
1073 |         .val_bits = 32,
         |          ^~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1073:21: warning: excess elements in struct initializer
    1073 |         .val_bits = 32,
         |                     ^~
   drivers/interconnect/qcom/qcs404.c:1073:21: note: (near initialization for 'qcs404_bimc_regmap_config')
1074 |         .max_register = 0x80000,
         |          ^~~~~~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1074:25: warning: excess elements in struct initializer
    1074 |         .max_register = 0x80000,
         |                         ^~~~~~~
   drivers/interconnect/qcom/qcs404.c:1074:25: note: (near initialization for 'qcs404_bimc_regmap_config')
1075 |         .fast_io = true,
         |          ^~~~~~~
   drivers/interconnect/qcom/qcs404.c:1075:20: warning: excess elements in struct initializer
    1075 |         .fast_io = true,
         |                    ^~~~
   drivers/interconnect/qcom/qcs404.c:1075:20: note: (near initialization for 'qcs404_bimc_regmap_config')
1137 | static const struct regmap_config qcs404_pcnoc_regmap_config = {
         |                     ^~~~~~~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1138:10: error: 'const struct regmap_config' has no member named 'reg_bits'
    1138 |         .reg_bits = 32,
         |          ^~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1138:21: warning: excess elements in struct initializer
    1138 |         .reg_bits = 32,
         |                     ^~
   drivers/interconnect/qcom/qcs404.c:1138:21: note: (near initialization for 'qcs404_pcnoc_regmap_config')
   drivers/interconnect/qcom/qcs404.c:1139:10: error: 'const struct regmap_config' has no member named 'reg_stride'
    1139 |         .reg_stride = 4,
         |          ^~~~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1139:23: warning: excess elements in struct initializer
    1139 |         .reg_stride = 4,
         |                       ^
   drivers/interconnect/qcom/qcs404.c:1139:23: note: (near initialization for 'qcs404_pcnoc_regmap_config')
   drivers/interconnect/qcom/qcs404.c:1140:10: error: 'const struct regmap_config' has no member named 'val_bits'
    1140 |         .val_bits = 32,
         |          ^~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1140:21: warning: excess elements in struct initializer
    1140 |         .val_bits = 32,
         |                     ^~
   drivers/interconnect/qcom/qcs404.c:1140:21: note: (near initialization for 'qcs404_pcnoc_regmap_config')
   drivers/interconnect/qcom/qcs404.c:1141:10: error: 'const struct regmap_config' has no member named 'max_register'
    1141 |         .max_register = 0x15080,
         |          ^~~~~~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1141:25: warning: excess elements in struct initializer
    1141 |         .max_register = 0x15080,
         |                         ^~~~~~~
   drivers/interconnect/qcom/qcs404.c:1141:25: note: (near initialization for 'qcs404_pcnoc_regmap_config')
   drivers/interconnect/qcom/qcs404.c:1142:10: error: 'const struct regmap_config' has no member named 'fast_io'
    1142 |         .fast_io = true,
         |          ^~~~~~~
   drivers/interconnect/qcom/qcs404.c:1142:20: warning: excess elements in struct initializer
    1142 |         .fast_io = true,
         |                    ^~~~
   drivers/interconnect/qcom/qcs404.c:1142:20: note: (near initialization for 'qcs404_pcnoc_regmap_config')
1178 | static const struct regmap_config qcs404_snoc_regmap_config = {
         |                     ^~~~~~~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1179:10: error: 'const struct regmap_config' has no member named 'reg_bits'
    1179 |         .reg_bits = 32,
         |          ^~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1179:21: warning: excess elements in struct initializer
    1179 |         .reg_bits = 32,
         |                     ^~
   drivers/interconnect/qcom/qcs404.c:1179:21: note: (near initialization for 'qcs404_snoc_regmap_config')
   drivers/interconnect/qcom/qcs404.c:1180:10: error: 'const struct regmap_config' has no member named 'reg_stride'
    1180 |         .reg_stride = 4,
         |          ^~~~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1180:23: warning: excess elements in struct initializer
    1180 |         .reg_stride = 4,
         |                       ^
   drivers/interconnect/qcom/qcs404.c:1180:23: note: (near initialization for 'qcs404_snoc_regmap_config')
   drivers/interconnect/qcom/qcs404.c:1181:10: error: 'const struct regmap_config' has no member named 'val_bits'
    1181 |         .val_bits = 32,
         |          ^~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1181:21: warning: excess elements in struct initializer
    1181 |         .val_bits = 32,
         |                     ^~
   drivers/interconnect/qcom/qcs404.c:1181:21: note: (near initialization for 'qcs404_snoc_regmap_config')
   drivers/interconnect/qcom/qcs404.c:1182:10: error: 'const struct regmap_config' has no member named 'max_register'
    1182 |         .max_register = 0x23080,
         |          ^~~~~~~~~~~~
   drivers/interconnect/qcom/qcs404.c:1182:25: warning: excess elements in struct initializer
    1182 |         .max_register = 0x23080,
         |                         ^~~~~~~
   drivers/interconnect/qcom/qcs404.c:1182:25: note: (near initialization for 'qcs404_snoc_regmap_config')
   drivers/interconnect/qcom/qcs404.c:1183:10: error: 'const struct regmap_config' has no member named 'fast_io'
    1183 |         .fast_io = true,
         |          ^~~~~~~
   drivers/interconnect/qcom/qcs404.c:1183:20: warning: excess elements in struct initializer
    1183 |         .fast_io = true,
         |                    ^~~~
   drivers/interconnect/qcom/qcs404.c:1183:20: note: (near initialization for 'qcs404_snoc_regmap_config')
1070 | static const struct regmap_config qcs404_bimc_regmap_config = {
         |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~
1137 | static const struct regmap_config qcs404_pcnoc_regmap_config = {
         |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~
1178 | static const struct regmap_config qcs404_snoc_regmap_config = {
         |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~


vim +/qcs404_bimc_regmap_config +1070 drivers/interconnect/qcom/qcs404.c

  1069
1076	};
  1077	
  1078	static const struct qcom_icc_desc qcs404_bimc = {
  1079		.type = QCOM_ICC_BIMC,
  1080		.nodes = qcs404_bimc_nodes,
  1081		.num_nodes = ARRAY_SIZE(qcs404_bimc_nodes),
  1082		.bus_clk_desc = &bimc_clk,
  1083		.regmap_cfg = &qcs404_bimc_regmap_config,
  1084		.qos_offset = 0x8000,
  1085		.ab_coeff = 153,
  1086	};
  1087	
  1088	static struct qcom_icc_node * const qcs404_pcnoc_nodes[] = {
  1089		[MASTER_SPDM] = &mas_spdm,
  1090		[MASTER_BLSP_1] = &mas_blsp_1,
  1091		[MASTER_BLSP_2] = &mas_blsp_2,
  1092		[MASTER_XI_USB_HS1] = &mas_xi_usb_hs1,
  1093		[MASTER_CRYPT0] = &mas_crypto,
  1094		[MASTER_SDCC_1] = &mas_sdcc_1,
  1095		[MASTER_SDCC_2] = &mas_sdcc_2,
  1096		[MASTER_SNOC_PCNOC] = &mas_snoc_pcnoc,
  1097		[MASTER_QPIC] = &mas_qpic,
  1098		[PCNOC_INT_0] = &pcnoc_int_0,
  1099		[PCNOC_INT_2] = &pcnoc_int_2,
  1100		[PCNOC_INT_3] = &pcnoc_int_3,
  1101		[PCNOC_S_0] = &pcnoc_s_0,
  1102		[PCNOC_S_1] = &pcnoc_s_1,
  1103		[PCNOC_S_2] = &pcnoc_s_2,
  1104		[PCNOC_S_3] = &pcnoc_s_3,
  1105		[PCNOC_S_4] = &pcnoc_s_4,
  1106		[PCNOC_S_6] = &pcnoc_s_6,
  1107		[PCNOC_S_7] = &pcnoc_s_7,
  1108		[PCNOC_S_8] = &pcnoc_s_8,
  1109		[PCNOC_S_9] = &pcnoc_s_9,
  1110		[PCNOC_S_10] = &pcnoc_s_10,
  1111		[PCNOC_S_11] = &pcnoc_s_11,
  1112		[SLAVE_SPDM] = &slv_spdm,
  1113		[SLAVE_PDM] = &slv_pdm,
  1114		[SLAVE_PRNG] = &slv_prng,
  1115		[SLAVE_TCSR] = &slv_tcsr,
  1116		[SLAVE_SNOC_CFG] = &slv_snoc_cfg,
  1117		[SLAVE_MESSAGE_RAM] = &slv_message_ram,
  1118		[SLAVE_DISP_SS_CFG] = &slv_disp_ss_cfg,
  1119		[SLAVE_GPU_CFG] = &slv_gpu_cfg,
  1120		[SLAVE_BLSP_1] = &slv_blsp_1,
  1121		[SLAVE_BLSP_2] = &slv_blsp_2,
  1122		[SLAVE_TLMM_NORTH] = &slv_tlmm_north,
  1123		[SLAVE_PCIE] = &slv_pcie,
  1124		[SLAVE_ETHERNET] = &slv_ethernet,
  1125		[SLAVE_TLMM_EAST] = &slv_tlmm_east,
  1126		[SLAVE_TCU] = &slv_tcu,
  1127		[SLAVE_PMIC_ARB] = &slv_pmic_arb,
  1128		[SLAVE_SDCC_1] = &slv_sdcc_1,
  1129		[SLAVE_SDCC_2] = &slv_sdcc_2,
  1130		[SLAVE_TLMM_SOUTH] = &slv_tlmm_south,
  1131		[SLAVE_USB_HS] = &slv_usb_hs,
  1132		[SLAVE_USB3] = &slv_usb3,
  1133		[SLAVE_CRYPTO_0_CFG] = &slv_crypto_0_cfg,
  1134		[SLAVE_PCNOC_SNOC] = &slv_pcnoc_snoc,
  1135	};
  1136
1138		.reg_bits = 32,
  1139		.reg_stride = 4,
  1140		.val_bits = 32,
  1141		.max_register = 0x15080,
  1142		.fast_io = true,
  1143	};
  1144	
  1145	static const struct qcom_icc_desc qcs404_pcnoc = {
  1146		.type = QCOM_ICC_NOC,
  1147		.nodes = qcs404_pcnoc_nodes,
  1148		.num_nodes = ARRAY_SIZE(qcs404_pcnoc_nodes),
  1149		.bus_clk_desc = &bus_0_clk,
  1150		.qos_offset = 0x7000,
  1151		.keep_alive = true,
  1152		.regmap_cfg = &qcs404_pcnoc_regmap_config,
  1153	};
  1154	
  1155	static struct qcom_icc_node * const qcs404_snoc_nodes[] = {
  1156		[MASTER_QDSS_BAM] = &mas_qdss_bam,
  1157		[MASTER_BIMC_SNOC] = &mas_bimc_snoc,
  1158		[MASTER_PCNOC_SNOC] = &mas_pcnoc_snoc,
  1159		[MASTER_QDSS_ETR] = &mas_qdss_etr,
  1160		[MASTER_EMAC] = &mas_emac,
  1161		[MASTER_PCIE] = &mas_pcie,
  1162		[MASTER_USB3] = &mas_usb3,
  1163		[QDSS_INT] = &qdss_int,
  1164		[SNOC_INT_0] = &snoc_int_0,
  1165		[SNOC_INT_1] = &snoc_int_1,
  1166		[SNOC_INT_2] = &snoc_int_2,
  1167		[SLAVE_KPSS_AHB] = &slv_kpss_ahb,
  1168		[SLAVE_WCSS] = &slv_wcss,
  1169		[SLAVE_SNOC_BIMC_1] = &slv_snoc_bimc_1,
  1170		[SLAVE_IMEM] = &slv_imem,
  1171		[SLAVE_SNOC_PCNOC] = &slv_snoc_pcnoc,
  1172		[SLAVE_QDSS_STM] = &slv_qdss_stm,
  1173		[SLAVE_CATS_0] = &slv_cats_0,
  1174		[SLAVE_CATS_1] = &slv_cats_1,
  1175		[SLAVE_LPASS] = &slv_lpass,
  1176	};
  1177
1179		.reg_bits = 32,
  1180		.reg_stride = 4,
  1181		.val_bits = 32,
  1182		.max_register = 0x23080,
  1183		.fast_io = true,
  1184	};
  1185
Hi Adam,

kernel test robot noticed the following build errors:

[auto build test ERROR on robh/for-next]
[also build test ERROR on linus/master v6.10-rc3 next-20240607]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Adam-Skladowski/dt-bindings-interconnect-Add-Qualcomm-MSM8976-DT-bindings/20240610-022416
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
patch link:    https://lore.kernel.org/r/20240609182112.13032-7-a39.skl%40gmail.com
patch subject: [PATCH 6/7] interconnect: qcom: qcs404: Add regmaps and more bus descriptions
config: arm64-allmodconfig (https://download.01.org/0day-ci/archive/20240610/202406102141.1kH3LXFy-lkp@intel.com/config)
compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project 4403cdbaf01379de96f8d0d6ea4f51a085e37766)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240610/202406102141.1kH3LXFy-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202406102141.1kH3LXFy-lkp@intel.com/

All errors (new ones prefixed by >>):
1070 | static const struct regmap_config qcs404_bimc_regmap_config = {
         |                                   ^
   drivers/interconnect/qcom/icc-rpm.h:136:15: note: forward declaration of 'struct regmap_config'
     136 |         const struct regmap_config *regmap_cfg;
         |                      ^
   drivers/interconnect/qcom/qcs404.c:1137:35: error: variable has incomplete type 'const struct regmap_config'
    1137 | static const struct regmap_config qcs404_pcnoc_regmap_config = {
         |                                   ^
   drivers/interconnect/qcom/icc-rpm.h:136:15: note: forward declaration of 'struct regmap_config'
     136 |         const struct regmap_config *regmap_cfg;
         |                      ^
   drivers/interconnect/qcom/qcs404.c:1178:35: error: variable has incomplete type 'const struct regmap_config'
    1178 | static const struct regmap_config qcs404_snoc_regmap_config = {
         |                                   ^
   drivers/interconnect/qcom/icc-rpm.h:136:15: note: forward declaration of 'struct regmap_config'
     136 |         const struct regmap_config *regmap_cfg;
         |                      ^
   3 errors generated.


vim +1070 drivers/interconnect/qcom/qcs404.c

  1069
1071		.reg_bits = 32,
  1072		.reg_stride = 4,
  1073		.val_bits = 32,
  1074		.max_register = 0x80000,
  1075		.fast_io = true,
  1076	};
  1077

[PATCH 7/7] dt-bindings: interconnect: qcom: msm8939: Fix example Export this patch

For now example list snoc_mm as children of bimc which is obviously
not valid, change example and include rest of nocs in it.

Fixes: 462baaf4c628 ("dt-bindings: interconnect: qcom: Fix and separate out MSM8939")
Signed-off-by: Adam Skladowski <a39.skl@gmail.com>
---
 .../bindings/interconnect/qcom,msm8939.yaml   | 22 ++++++++++++-------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/Documentation/devicetree/bindings/interconnect/qcom,msm8939.yaml b/Documentation/devicetree/bindings/interconnect/qcom,msm8939.yaml
index fd15ab5014fb..a77e6aa2fbee 100644
--- a/Documentation/devicetree/bindings/interconnect/qcom,msm8939.yaml
+++ b/Documentation/devicetree/bindings/interconnect/qcom,msm8939.yaml
@@ -56,19 +56,25 @@ examples:
  - |
    #include <dt-bindings/clock/qcom,rpmcc.h>

    snoc: interconnect@580000 {
        compatible = "qcom,msm8939-snoc";
        reg = <0x00580000 0x14000>;
        #interconnect-cells = <1>;
    };

    bimc: interconnect@400000 {
        compatible = "qcom,msm8939-bimc";
        reg = <0x00400000 0x62000>;
        #interconnect-cells = <1>;
        #interconnect-cells = <2>;
    };

    pcnoc: interconnect@500000 {
        compatible = "qcom,msm8939-pcnoc";
        reg = <0x00500000 0x11000>;
        #interconnect-cells = <2>;
    };

    snoc: interconnect@580000 {
        compatible = "qcom,msm8939-snoc";
        reg = <0x00580000 0x14080>;
        #interconnect-cells = <2>;

          snoc_mm: interconnect-snoc {
              compatible = "qcom,msm8939-snoc-mm";
              #interconnect-cells = <1>;
              #interconnect-cells = <2>;
          };
    };
-- 
2.45.1