1*755acd36SAdam Skladowski // SPDX-License-Identifier: GPL-2.0-only 2*755acd36SAdam Skladowski /* 3*755acd36SAdam Skladowski * Based on data from msm8937-bus.dtsi in Qualcomm's msm-3.18 release: 4*755acd36SAdam Skladowski * Copyright (c) 2014-2016, The Linux Foundation. All rights reserved. 5*755acd36SAdam Skladowski */ 6*755acd36SAdam Skladowski 7*755acd36SAdam Skladowski #include <linux/device.h> 8*755acd36SAdam Skladowski #include <linux/interconnect-provider.h> 9*755acd36SAdam Skladowski #include <linux/mod_devicetable.h> 10*755acd36SAdam Skladowski #include <linux/module.h> 11*755acd36SAdam Skladowski #include <linux/platform_device.h> 12*755acd36SAdam Skladowski #include <linux/regmap.h> 13*755acd36SAdam Skladowski 14*755acd36SAdam Skladowski #include <dt-bindings/interconnect/qcom,msm8937.h> 15*755acd36SAdam Skladowski 16*755acd36SAdam Skladowski #include "icc-rpm.h" 17*755acd36SAdam Skladowski 18*755acd36SAdam Skladowski enum { 19*755acd36SAdam Skladowski QNOC_MASTER_AMPSS_M0 = 1, 20*755acd36SAdam Skladowski QNOC_MASTER_GRAPHICS_3D, 21*755acd36SAdam Skladowski QNOC_SNOC_BIMC_0_MAS, 22*755acd36SAdam Skladowski QNOC_SNOC_BIMC_2_MAS, 23*755acd36SAdam Skladowski QNOC_SNOC_BIMC_1_MAS, 24*755acd36SAdam Skladowski QNOC_MASTER_TCU_0, 25*755acd36SAdam Skladowski QNOC_MASTER_SPDM, 26*755acd36SAdam Skladowski QNOC_MASTER_BLSP_1, 27*755acd36SAdam Skladowski QNOC_MASTER_BLSP_2, 28*755acd36SAdam Skladowski QNOC_MASTER_USB_HS, 29*755acd36SAdam Skladowski QNOC_MASTER_XM_USB_HS1, 30*755acd36SAdam Skladowski QNOC_MASTER_CRYPTO_CORE0, 31*755acd36SAdam Skladowski QNOC_MASTER_SDCC_1, 32*755acd36SAdam Skladowski QNOC_MASTER_SDCC_2, 33*755acd36SAdam Skladowski QNOC_SNOC_PNOC_MAS, 34*755acd36SAdam Skladowski QNOC_MASTER_QDSS_BAM, 35*755acd36SAdam Skladowski QNOC_BIMC_SNOC_MAS, 36*755acd36SAdam Skladowski QNOC_MASTER_JPEG, 37*755acd36SAdam Skladowski QNOC_MASTER_MDP_PORT0, 38*755acd36SAdam Skladowski QNOC_PNOC_SNOC_MAS, 39*755acd36SAdam Skladowski QNOC_MASTER_VIDEO_P0, 40*755acd36SAdam Skladowski QNOC_MASTER_VFE, 41*755acd36SAdam Skladowski QNOC_MASTER_VFE1, 42*755acd36SAdam Skladowski QNOC_MASTER_CPP, 43*755acd36SAdam Skladowski QNOC_MASTER_QDSS_ETR, 44*755acd36SAdam Skladowski QNOC_PNOC_M_0, 45*755acd36SAdam Skladowski QNOC_PNOC_M_1, 46*755acd36SAdam Skladowski QNOC_PNOC_INT_0, 47*755acd36SAdam Skladowski QNOC_PNOC_INT_1, 48*755acd36SAdam Skladowski QNOC_PNOC_INT_2, 49*755acd36SAdam Skladowski QNOC_PNOC_INT_3, 50*755acd36SAdam Skladowski QNOC_PNOC_SLV_0, 51*755acd36SAdam Skladowski QNOC_PNOC_SLV_1, 52*755acd36SAdam Skladowski QNOC_PNOC_SLV_2, 53*755acd36SAdam Skladowski QNOC_PNOC_SLV_3, 54*755acd36SAdam Skladowski QNOC_PNOC_SLV_4, 55*755acd36SAdam Skladowski QNOC_PNOC_SLV_6, 56*755acd36SAdam Skladowski QNOC_PNOC_SLV_7, 57*755acd36SAdam Skladowski QNOC_PNOC_SLV_8, 58*755acd36SAdam Skladowski QNOC_SNOC_QDSS_INT, 59*755acd36SAdam Skladowski QNOC_SNOC_INT_0, 60*755acd36SAdam Skladowski QNOC_SNOC_INT_1, 61*755acd36SAdam Skladowski QNOC_SNOC_INT_2, 62*755acd36SAdam Skladowski QNOC_SLAVE_EBI_CH0, 63*755acd36SAdam Skladowski QNOC_BIMC_SNOC_SLV, 64*755acd36SAdam Skladowski QNOC_SLAVE_SDCC_2, 65*755acd36SAdam Skladowski QNOC_SLAVE_SPDM_WRAPPER, 66*755acd36SAdam Skladowski QNOC_SLAVE_PDM, 67*755acd36SAdam Skladowski QNOC_SLAVE_PRNG, 68*755acd36SAdam Skladowski QNOC_SLAVE_TCSR, 69*755acd36SAdam Skladowski QNOC_SLAVE_SNOC_CFG, 70*755acd36SAdam Skladowski QNOC_SLAVE_MESSAGE_RAM, 71*755acd36SAdam Skladowski QNOC_SLAVE_CAMERA_CFG, 72*755acd36SAdam Skladowski QNOC_SLAVE_DISPLAY_CFG, 73*755acd36SAdam Skladowski QNOC_SLAVE_VENUS_CFG, 74*755acd36SAdam Skladowski QNOC_SLAVE_GRAPHICS_3D_CFG, 75*755acd36SAdam Skladowski QNOC_SLAVE_TLMM, 76*755acd36SAdam Skladowski QNOC_SLAVE_BLSP_1, 77*755acd36SAdam Skladowski QNOC_SLAVE_BLSP_2, 78*755acd36SAdam Skladowski QNOC_SLAVE_PMIC_ARB, 79*755acd36SAdam Skladowski QNOC_SLAVE_SDCC_1, 80*755acd36SAdam Skladowski QNOC_SLAVE_CRYPTO_0_CFG, 81*755acd36SAdam Skladowski QNOC_SLAVE_USB_HS, 82*755acd36SAdam Skladowski QNOC_SLAVE_TCU, 83*755acd36SAdam Skladowski QNOC_PNOC_SNOC_SLV, 84*755acd36SAdam Skladowski QNOC_SLAVE_APPSS, 85*755acd36SAdam Skladowski QNOC_SLAVE_WCSS, 86*755acd36SAdam Skladowski QNOC_SNOC_BIMC_0_SLV, 87*755acd36SAdam Skladowski QNOC_SNOC_BIMC_1_SLV, 88*755acd36SAdam Skladowski QNOC_SNOC_BIMC_2_SLV, 89*755acd36SAdam Skladowski QNOC_SLAVE_OCIMEM, 90*755acd36SAdam Skladowski QNOC_SNOC_PNOC_SLV, 91*755acd36SAdam Skladowski QNOC_SLAVE_QDSS_STM, 92*755acd36SAdam Skladowski QNOC_SLAVE_CATS_128, 93*755acd36SAdam Skladowski QNOC_SLAVE_OCMEM_64, 94*755acd36SAdam Skladowski QNOC_SLAVE_LPASS, 95*755acd36SAdam Skladowski }; 96*755acd36SAdam Skladowski 97*755acd36SAdam Skladowski static const u16 mas_apps_proc_links[] = { 98*755acd36SAdam Skladowski QNOC_SLAVE_EBI_CH0, 99*755acd36SAdam Skladowski QNOC_BIMC_SNOC_SLV 100*755acd36SAdam Skladowski }; 101*755acd36SAdam Skladowski 102*755acd36SAdam Skladowski static struct qcom_icc_node mas_apps_proc = { 103*755acd36SAdam Skladowski .name = "mas_apps_proc", 104*755acd36SAdam Skladowski .id = QNOC_MASTER_AMPSS_M0, 105*755acd36SAdam Skladowski .buswidth = 8, 106*755acd36SAdam Skladowski .mas_rpm_id = 0, 107*755acd36SAdam Skladowski .slv_rpm_id = -1, 108*755acd36SAdam Skladowski .qos.ap_owned = true, 109*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_FIXED, 110*755acd36SAdam Skladowski .qos.areq_prio = 0, 111*755acd36SAdam Skladowski .qos.prio_level = 0, 112*755acd36SAdam Skladowski .qos.qos_port = 0, 113*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_apps_proc_links), 114*755acd36SAdam Skladowski .links = mas_apps_proc_links, 115*755acd36SAdam Skladowski }; 116*755acd36SAdam Skladowski 117*755acd36SAdam Skladowski static const u16 mas_oxili_links[] = { 118*755acd36SAdam Skladowski QNOC_SLAVE_EBI_CH0, 119*755acd36SAdam Skladowski QNOC_BIMC_SNOC_SLV 120*755acd36SAdam Skladowski }; 121*755acd36SAdam Skladowski 122*755acd36SAdam Skladowski static struct qcom_icc_node mas_oxili = { 123*755acd36SAdam Skladowski .name = "mas_oxili", 124*755acd36SAdam Skladowski .id = QNOC_MASTER_GRAPHICS_3D, 125*755acd36SAdam Skladowski .buswidth = 8, 126*755acd36SAdam Skladowski .mas_rpm_id = 6, 127*755acd36SAdam Skladowski .slv_rpm_id = -1, 128*755acd36SAdam Skladowski .qos.ap_owned = true, 129*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_FIXED, 130*755acd36SAdam Skladowski .qos.areq_prio = 0, 131*755acd36SAdam Skladowski .qos.prio_level = 0, 132*755acd36SAdam Skladowski .qos.qos_port = 2, 133*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_oxili_links), 134*755acd36SAdam Skladowski .links = mas_oxili_links, 135*755acd36SAdam Skladowski }; 136*755acd36SAdam Skladowski 137*755acd36SAdam Skladowski static const u16 mas_snoc_bimc_0_links[] = { 138*755acd36SAdam Skladowski QNOC_SLAVE_EBI_CH0, 139*755acd36SAdam Skladowski QNOC_BIMC_SNOC_SLV 140*755acd36SAdam Skladowski }; 141*755acd36SAdam Skladowski 142*755acd36SAdam Skladowski static struct qcom_icc_node mas_snoc_bimc_0 = { 143*755acd36SAdam Skladowski .name = "mas_snoc_bimc_0", 144*755acd36SAdam Skladowski .id = QNOC_SNOC_BIMC_0_MAS, 145*755acd36SAdam Skladowski .buswidth = 8, 146*755acd36SAdam Skladowski .mas_rpm_id = 3, 147*755acd36SAdam Skladowski .slv_rpm_id = -1, 148*755acd36SAdam Skladowski .qos.ap_owned = true, 149*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_BYPASS, 150*755acd36SAdam Skladowski .qos.areq_prio = 0, 151*755acd36SAdam Skladowski .qos.prio_level = 0, 152*755acd36SAdam Skladowski .qos.qos_port = 3, 153*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_snoc_bimc_0_links), 154*755acd36SAdam Skladowski .links = mas_snoc_bimc_0_links, 155*755acd36SAdam Skladowski }; 156*755acd36SAdam Skladowski 157*755acd36SAdam Skladowski static const u16 mas_snoc_bimc_2_links[] = { 158*755acd36SAdam Skladowski QNOC_SLAVE_EBI_CH0, 159*755acd36SAdam Skladowski QNOC_BIMC_SNOC_SLV 160*755acd36SAdam Skladowski }; 161*755acd36SAdam Skladowski 162*755acd36SAdam Skladowski static struct qcom_icc_node mas_snoc_bimc_2 = { 163*755acd36SAdam Skladowski .name = "mas_snoc_bimc_2", 164*755acd36SAdam Skladowski .id = QNOC_SNOC_BIMC_2_MAS, 165*755acd36SAdam Skladowski .buswidth = 8, 166*755acd36SAdam Skladowski .mas_rpm_id = 108, 167*755acd36SAdam Skladowski .slv_rpm_id = -1, 168*755acd36SAdam Skladowski .qos.ap_owned = true, 169*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_BYPASS, 170*755acd36SAdam Skladowski .qos.areq_prio = 0, 171*755acd36SAdam Skladowski .qos.prio_level = 0, 172*755acd36SAdam Skladowski .qos.qos_port = 4, 173*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_snoc_bimc_2_links), 174*755acd36SAdam Skladowski .links = mas_snoc_bimc_2_links, 175*755acd36SAdam Skladowski }; 176*755acd36SAdam Skladowski 177*755acd36SAdam Skladowski static const u16 mas_snoc_bimc_1_links[] = { 178*755acd36SAdam Skladowski QNOC_SLAVE_EBI_CH0 179*755acd36SAdam Skladowski }; 180*755acd36SAdam Skladowski 181*755acd36SAdam Skladowski static struct qcom_icc_node mas_snoc_bimc_1 = { 182*755acd36SAdam Skladowski .name = "mas_snoc_bimc_1", 183*755acd36SAdam Skladowski .id = QNOC_SNOC_BIMC_1_MAS, 184*755acd36SAdam Skladowski .buswidth = 8, 185*755acd36SAdam Skladowski .mas_rpm_id = 76, 186*755acd36SAdam Skladowski .slv_rpm_id = -1, 187*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_BYPASS, 188*755acd36SAdam Skladowski .qos.areq_prio = 0, 189*755acd36SAdam Skladowski .qos.prio_level = 0, 190*755acd36SAdam Skladowski .qos.qos_port = 5, 191*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_snoc_bimc_1_links), 192*755acd36SAdam Skladowski .links = mas_snoc_bimc_1_links, 193*755acd36SAdam Skladowski }; 194*755acd36SAdam Skladowski 195*755acd36SAdam Skladowski static const u16 mas_tcu_0_links[] = { 196*755acd36SAdam Skladowski QNOC_SLAVE_EBI_CH0, 197*755acd36SAdam Skladowski QNOC_BIMC_SNOC_SLV 198*755acd36SAdam Skladowski }; 199*755acd36SAdam Skladowski 200*755acd36SAdam Skladowski static struct qcom_icc_node mas_tcu_0 = { 201*755acd36SAdam Skladowski .name = "mas_tcu_0", 202*755acd36SAdam Skladowski .id = QNOC_MASTER_TCU_0, 203*755acd36SAdam Skladowski .buswidth = 8, 204*755acd36SAdam Skladowski .mas_rpm_id = 102, 205*755acd36SAdam Skladowski .slv_rpm_id = -1, 206*755acd36SAdam Skladowski .qos.ap_owned = true, 207*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_FIXED, 208*755acd36SAdam Skladowski .qos.areq_prio = 0, 209*755acd36SAdam Skladowski .qos.prio_level = 2, 210*755acd36SAdam Skladowski .qos.qos_port = 6, 211*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_tcu_0_links), 212*755acd36SAdam Skladowski .links = mas_tcu_0_links, 213*755acd36SAdam Skladowski }; 214*755acd36SAdam Skladowski 215*755acd36SAdam Skladowski static const u16 mas_spdm_links[] = { 216*755acd36SAdam Skladowski QNOC_PNOC_M_0 217*755acd36SAdam Skladowski }; 218*755acd36SAdam Skladowski 219*755acd36SAdam Skladowski static struct qcom_icc_node mas_spdm = { 220*755acd36SAdam Skladowski .name = "mas_spdm", 221*755acd36SAdam Skladowski .id = QNOC_MASTER_SPDM, 222*755acd36SAdam Skladowski .buswidth = 4, 223*755acd36SAdam Skladowski .mas_rpm_id = 50, 224*755acd36SAdam Skladowski .slv_rpm_id = -1, 225*755acd36SAdam Skladowski .qos.ap_owned = true, 226*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_INVALID, 227*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_spdm_links), 228*755acd36SAdam Skladowski .links = mas_spdm_links, 229*755acd36SAdam Skladowski }; 230*755acd36SAdam Skladowski 231*755acd36SAdam Skladowski static const u16 mas_blsp_1_links[] = { 232*755acd36SAdam Skladowski QNOC_PNOC_M_1 233*755acd36SAdam Skladowski }; 234*755acd36SAdam Skladowski 235*755acd36SAdam Skladowski static struct qcom_icc_node mas_blsp_1 = { 236*755acd36SAdam Skladowski .name = "mas_blsp_1", 237*755acd36SAdam Skladowski .id = QNOC_MASTER_BLSP_1, 238*755acd36SAdam Skladowski .buswidth = 4, 239*755acd36SAdam Skladowski .mas_rpm_id = 41, 240*755acd36SAdam Skladowski .slv_rpm_id = -1, 241*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_blsp_1_links), 242*755acd36SAdam Skladowski .links = mas_blsp_1_links, 243*755acd36SAdam Skladowski }; 244*755acd36SAdam Skladowski 245*755acd36SAdam Skladowski static const u16 mas_blsp_2_links[] = { 246*755acd36SAdam Skladowski QNOC_PNOC_M_1 247*755acd36SAdam Skladowski }; 248*755acd36SAdam Skladowski 249*755acd36SAdam Skladowski static struct qcom_icc_node mas_blsp_2 = { 250*755acd36SAdam Skladowski .name = "mas_blsp_2", 251*755acd36SAdam Skladowski .id = QNOC_MASTER_BLSP_2, 252*755acd36SAdam Skladowski .buswidth = 4, 253*755acd36SAdam Skladowski .mas_rpm_id = 39, 254*755acd36SAdam Skladowski .slv_rpm_id = -1, 255*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_blsp_2_links), 256*755acd36SAdam Skladowski .links = mas_blsp_2_links, 257*755acd36SAdam Skladowski }; 258*755acd36SAdam Skladowski 259*755acd36SAdam Skladowski static const u16 mas_usb_hs1_links[] = { 260*755acd36SAdam Skladowski QNOC_PNOC_INT_0 261*755acd36SAdam Skladowski }; 262*755acd36SAdam Skladowski 263*755acd36SAdam Skladowski static struct qcom_icc_node mas_usb_hs1 = { 264*755acd36SAdam Skladowski .name = "mas_usb_hs1", 265*755acd36SAdam Skladowski .id = QNOC_MASTER_USB_HS, 266*755acd36SAdam Skladowski .buswidth = 4, 267*755acd36SAdam Skladowski .mas_rpm_id = 42, 268*755acd36SAdam Skladowski .slv_rpm_id = -1, 269*755acd36SAdam Skladowski .qos.ap_owned = true, 270*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_FIXED, 271*755acd36SAdam Skladowski .qos.areq_prio = 1, 272*755acd36SAdam Skladowski .qos.prio_level = 1, 273*755acd36SAdam Skladowski .qos.qos_port = 12, 274*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_usb_hs1_links), 275*755acd36SAdam Skladowski .links = mas_usb_hs1_links, 276*755acd36SAdam Skladowski }; 277*755acd36SAdam Skladowski 278*755acd36SAdam Skladowski static const u16 mas_xi_usb_hs1_links[] = { 279*755acd36SAdam Skladowski QNOC_PNOC_INT_0 280*755acd36SAdam Skladowski }; 281*755acd36SAdam Skladowski 282*755acd36SAdam Skladowski static struct qcom_icc_node mas_xi_usb_hs1 = { 283*755acd36SAdam Skladowski .name = "mas_xi_usb_hs1", 284*755acd36SAdam Skladowski .id = QNOC_MASTER_XM_USB_HS1, 285*755acd36SAdam Skladowski .buswidth = 8, 286*755acd36SAdam Skladowski .mas_rpm_id = 138, 287*755acd36SAdam Skladowski .slv_rpm_id = -1, 288*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_FIXED, 289*755acd36SAdam Skladowski .qos.areq_prio = 0, 290*755acd36SAdam Skladowski .qos.prio_level = 0, 291*755acd36SAdam Skladowski .qos.qos_port = 11, 292*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_xi_usb_hs1_links), 293*755acd36SAdam Skladowski .links = mas_xi_usb_hs1_links, 294*755acd36SAdam Skladowski }; 295*755acd36SAdam Skladowski 296*755acd36SAdam Skladowski static const u16 mas_crypto_links[] = { 297*755acd36SAdam Skladowski QNOC_PNOC_INT_0 298*755acd36SAdam Skladowski }; 299*755acd36SAdam Skladowski 300*755acd36SAdam Skladowski static struct qcom_icc_node mas_crypto = { 301*755acd36SAdam Skladowski .name = "mas_crypto", 302*755acd36SAdam Skladowski .id = QNOC_MASTER_CRYPTO_CORE0, 303*755acd36SAdam Skladowski .buswidth = 8, 304*755acd36SAdam Skladowski .mas_rpm_id = 23, 305*755acd36SAdam Skladowski .slv_rpm_id = -1, 306*755acd36SAdam Skladowski .qos.ap_owned = true, 307*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_FIXED, 308*755acd36SAdam Skladowski .qos.areq_prio = 1, 309*755acd36SAdam Skladowski .qos.prio_level = 1, 310*755acd36SAdam Skladowski .qos.qos_port = 0, 311*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_crypto_links), 312*755acd36SAdam Skladowski .links = mas_crypto_links, 313*755acd36SAdam Skladowski }; 314*755acd36SAdam Skladowski 315*755acd36SAdam Skladowski static const u16 mas_sdcc_1_links[] = { 316*755acd36SAdam Skladowski QNOC_PNOC_INT_0 317*755acd36SAdam Skladowski }; 318*755acd36SAdam Skladowski 319*755acd36SAdam Skladowski static struct qcom_icc_node mas_sdcc_1 = { 320*755acd36SAdam Skladowski .name = "mas_sdcc_1", 321*755acd36SAdam Skladowski .id = QNOC_MASTER_SDCC_1, 322*755acd36SAdam Skladowski .buswidth = 8, 323*755acd36SAdam Skladowski .mas_rpm_id = 33, 324*755acd36SAdam Skladowski .slv_rpm_id = -1, 325*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_FIXED, 326*755acd36SAdam Skladowski .qos.areq_prio = 0, 327*755acd36SAdam Skladowski .qos.prio_level = 0, 328*755acd36SAdam Skladowski .qos.qos_port = 7, 329*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_sdcc_1_links), 330*755acd36SAdam Skladowski .links = mas_sdcc_1_links, 331*755acd36SAdam Skladowski }; 332*755acd36SAdam Skladowski 333*755acd36SAdam Skladowski static const u16 mas_sdcc_2_links[] = { 334*755acd36SAdam Skladowski QNOC_PNOC_INT_0 335*755acd36SAdam Skladowski }; 336*755acd36SAdam Skladowski 337*755acd36SAdam Skladowski static struct qcom_icc_node mas_sdcc_2 = { 338*755acd36SAdam Skladowski .name = "mas_sdcc_2", 339*755acd36SAdam Skladowski .id = QNOC_MASTER_SDCC_2, 340*755acd36SAdam Skladowski .buswidth = 8, 341*755acd36SAdam Skladowski .mas_rpm_id = 35, 342*755acd36SAdam Skladowski .slv_rpm_id = -1, 343*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_FIXED, 344*755acd36SAdam Skladowski .qos.areq_prio = 0, 345*755acd36SAdam Skladowski .qos.prio_level = 0, 346*755acd36SAdam Skladowski .qos.qos_port = 8, 347*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_sdcc_2_links), 348*755acd36SAdam Skladowski .links = mas_sdcc_2_links, 349*755acd36SAdam Skladowski }; 350*755acd36SAdam Skladowski 351*755acd36SAdam Skladowski static const u16 mas_snoc_pcnoc_links[] = { 352*755acd36SAdam Skladowski QNOC_PNOC_SLV_7, 353*755acd36SAdam Skladowski QNOC_PNOC_INT_2, 354*755acd36SAdam Skladowski QNOC_PNOC_INT_3 355*755acd36SAdam Skladowski }; 356*755acd36SAdam Skladowski 357*755acd36SAdam Skladowski static struct qcom_icc_node mas_snoc_pcnoc = { 358*755acd36SAdam Skladowski .name = "mas_snoc_pcnoc", 359*755acd36SAdam Skladowski .id = QNOC_SNOC_PNOC_MAS, 360*755acd36SAdam Skladowski .buswidth = 8, 361*755acd36SAdam Skladowski .mas_rpm_id = 77, 362*755acd36SAdam Skladowski .slv_rpm_id = -1, 363*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_FIXED, 364*755acd36SAdam Skladowski .qos.areq_prio = 0, 365*755acd36SAdam Skladowski .qos.prio_level = 0, 366*755acd36SAdam Skladowski .qos.qos_port = 9, 367*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_snoc_pcnoc_links), 368*755acd36SAdam Skladowski .links = mas_snoc_pcnoc_links, 369*755acd36SAdam Skladowski }; 370*755acd36SAdam Skladowski 371*755acd36SAdam Skladowski static const u16 mas_qdss_bam_links[] = { 372*755acd36SAdam Skladowski QNOC_SNOC_QDSS_INT 373*755acd36SAdam Skladowski }; 374*755acd36SAdam Skladowski 375*755acd36SAdam Skladowski static struct qcom_icc_node mas_qdss_bam = { 376*755acd36SAdam Skladowski .name = "mas_qdss_bam", 377*755acd36SAdam Skladowski .id = QNOC_MASTER_QDSS_BAM, 378*755acd36SAdam Skladowski .buswidth = 4, 379*755acd36SAdam Skladowski .mas_rpm_id = 19, 380*755acd36SAdam Skladowski .slv_rpm_id = -1, 381*755acd36SAdam Skladowski .qos.ap_owned = true, 382*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_FIXED, 383*755acd36SAdam Skladowski .qos.areq_prio = 1, 384*755acd36SAdam Skladowski .qos.prio_level = 1, 385*755acd36SAdam Skladowski .qos.qos_port = 11, 386*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_qdss_bam_links), 387*755acd36SAdam Skladowski .links = mas_qdss_bam_links, 388*755acd36SAdam Skladowski }; 389*755acd36SAdam Skladowski 390*755acd36SAdam Skladowski static const u16 mas_bimc_snoc_links[] = { 391*755acd36SAdam Skladowski QNOC_SNOC_INT_0, 392*755acd36SAdam Skladowski QNOC_SNOC_INT_1, 393*755acd36SAdam Skladowski QNOC_SNOC_INT_2 394*755acd36SAdam Skladowski }; 395*755acd36SAdam Skladowski 396*755acd36SAdam Skladowski static struct qcom_icc_node mas_bimc_snoc = { 397*755acd36SAdam Skladowski .name = "mas_bimc_snoc", 398*755acd36SAdam Skladowski .id = QNOC_BIMC_SNOC_MAS, 399*755acd36SAdam Skladowski .buswidth = 8, 400*755acd36SAdam Skladowski .mas_rpm_id = 21, 401*755acd36SAdam Skladowski .slv_rpm_id = -1, 402*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_bimc_snoc_links), 403*755acd36SAdam Skladowski .links = mas_bimc_snoc_links, 404*755acd36SAdam Skladowski }; 405*755acd36SAdam Skladowski 406*755acd36SAdam Skladowski static const u16 mas_jpeg_links[] = { 407*755acd36SAdam Skladowski QNOC_SNOC_BIMC_2_SLV 408*755acd36SAdam Skladowski }; 409*755acd36SAdam Skladowski 410*755acd36SAdam Skladowski static struct qcom_icc_node mas_jpeg = { 411*755acd36SAdam Skladowski .name = "mas_jpeg", 412*755acd36SAdam Skladowski .id = QNOC_MASTER_JPEG, 413*755acd36SAdam Skladowski .buswidth = 16, 414*755acd36SAdam Skladowski .mas_rpm_id = 7, 415*755acd36SAdam Skladowski .slv_rpm_id = -1, 416*755acd36SAdam Skladowski .qos.ap_owned = true, 417*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_BYPASS, 418*755acd36SAdam Skladowski .qos.areq_prio = 0, 419*755acd36SAdam Skladowski .qos.prio_level = 0, 420*755acd36SAdam Skladowski .qos.qos_port = 6, 421*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_jpeg_links), 422*755acd36SAdam Skladowski .links = mas_jpeg_links, 423*755acd36SAdam Skladowski }; 424*755acd36SAdam Skladowski 425*755acd36SAdam Skladowski static const u16 mas_mdp_links[] = { 426*755acd36SAdam Skladowski QNOC_SNOC_BIMC_0_SLV 427*755acd36SAdam Skladowski }; 428*755acd36SAdam Skladowski 429*755acd36SAdam Skladowski static struct qcom_icc_node mas_mdp = { 430*755acd36SAdam Skladowski .name = "mas_mdp", 431*755acd36SAdam Skladowski .id = QNOC_MASTER_MDP_PORT0, 432*755acd36SAdam Skladowski .buswidth = 16, 433*755acd36SAdam Skladowski .mas_rpm_id = 8, 434*755acd36SAdam Skladowski .slv_rpm_id = -1, 435*755acd36SAdam Skladowski .qos.ap_owned = true, 436*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_BYPASS, 437*755acd36SAdam Skladowski .qos.areq_prio = 0, 438*755acd36SAdam Skladowski .qos.prio_level = 0, 439*755acd36SAdam Skladowski .qos.qos_port = 7, 440*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_mdp_links), 441*755acd36SAdam Skladowski .links = mas_mdp_links, 442*755acd36SAdam Skladowski }; 443*755acd36SAdam Skladowski 444*755acd36SAdam Skladowski static const u16 mas_pcnoc_snoc_links[] = { 445*755acd36SAdam Skladowski QNOC_SNOC_INT_0, 446*755acd36SAdam Skladowski QNOC_SNOC_INT_1, 447*755acd36SAdam Skladowski QNOC_SNOC_BIMC_1_SLV 448*755acd36SAdam Skladowski }; 449*755acd36SAdam Skladowski 450*755acd36SAdam Skladowski static struct qcom_icc_node mas_pcnoc_snoc = { 451*755acd36SAdam Skladowski .name = "mas_pcnoc_snoc", 452*755acd36SAdam Skladowski .id = QNOC_PNOC_SNOC_MAS, 453*755acd36SAdam Skladowski .buswidth = 8, 454*755acd36SAdam Skladowski .mas_rpm_id = 29, 455*755acd36SAdam Skladowski .slv_rpm_id = -1, 456*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_FIXED, 457*755acd36SAdam Skladowski .qos.areq_prio = 0, 458*755acd36SAdam Skladowski .qos.prio_level = 0, 459*755acd36SAdam Skladowski .qos.qos_port = 5, 460*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_pcnoc_snoc_links), 461*755acd36SAdam Skladowski .links = mas_pcnoc_snoc_links, 462*755acd36SAdam Skladowski }; 463*755acd36SAdam Skladowski 464*755acd36SAdam Skladowski static const u16 mas_venus_links[] = { 465*755acd36SAdam Skladowski QNOC_SNOC_BIMC_2_SLV 466*755acd36SAdam Skladowski }; 467*755acd36SAdam Skladowski 468*755acd36SAdam Skladowski static struct qcom_icc_node mas_venus = { 469*755acd36SAdam Skladowski .name = "mas_venus", 470*755acd36SAdam Skladowski .id = QNOC_MASTER_VIDEO_P0, 471*755acd36SAdam Skladowski .buswidth = 16, 472*755acd36SAdam Skladowski .mas_rpm_id = 9, 473*755acd36SAdam Skladowski .slv_rpm_id = -1, 474*755acd36SAdam Skladowski .qos.ap_owned = true, 475*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_BYPASS, 476*755acd36SAdam Skladowski .qos.areq_prio = 0, 477*755acd36SAdam Skladowski .qos.prio_level = 0, 478*755acd36SAdam Skladowski .qos.qos_port = 8, 479*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_venus_links), 480*755acd36SAdam Skladowski .links = mas_venus_links, 481*755acd36SAdam Skladowski }; 482*755acd36SAdam Skladowski 483*755acd36SAdam Skladowski static const u16 mas_vfe0_links[] = { 484*755acd36SAdam Skladowski QNOC_SNOC_BIMC_0_SLV 485*755acd36SAdam Skladowski }; 486*755acd36SAdam Skladowski 487*755acd36SAdam Skladowski static struct qcom_icc_node mas_vfe0 = { 488*755acd36SAdam Skladowski .name = "mas_vfe0", 489*755acd36SAdam Skladowski .id = QNOC_MASTER_VFE, 490*755acd36SAdam Skladowski .buswidth = 16, 491*755acd36SAdam Skladowski .mas_rpm_id = 11, 492*755acd36SAdam Skladowski .slv_rpm_id = -1, 493*755acd36SAdam Skladowski .qos.ap_owned = true, 494*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_BYPASS, 495*755acd36SAdam Skladowski .qos.areq_prio = 0, 496*755acd36SAdam Skladowski .qos.prio_level = 0, 497*755acd36SAdam Skladowski .qos.qos_port = 9, 498*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_vfe0_links), 499*755acd36SAdam Skladowski .links = mas_vfe0_links, 500*755acd36SAdam Skladowski }; 501*755acd36SAdam Skladowski 502*755acd36SAdam Skladowski static const u16 mas_vfe1_links[] = { 503*755acd36SAdam Skladowski QNOC_SNOC_BIMC_0_SLV 504*755acd36SAdam Skladowski }; 505*755acd36SAdam Skladowski 506*755acd36SAdam Skladowski static struct qcom_icc_node mas_vfe1 = { 507*755acd36SAdam Skladowski .name = "mas_vfe1", 508*755acd36SAdam Skladowski .id = QNOC_MASTER_VFE1, 509*755acd36SAdam Skladowski .buswidth = 16, 510*755acd36SAdam Skladowski .mas_rpm_id = 133, 511*755acd36SAdam Skladowski .slv_rpm_id = -1, 512*755acd36SAdam Skladowski .qos.ap_owned = true, 513*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_BYPASS, 514*755acd36SAdam Skladowski .qos.areq_prio = 0, 515*755acd36SAdam Skladowski .qos.prio_level = 0, 516*755acd36SAdam Skladowski .qos.qos_port = 13, 517*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_vfe1_links), 518*755acd36SAdam Skladowski .links = mas_vfe1_links, 519*755acd36SAdam Skladowski }; 520*755acd36SAdam Skladowski 521*755acd36SAdam Skladowski static const u16 mas_cpp_links[] = { 522*755acd36SAdam Skladowski QNOC_SNOC_BIMC_2_SLV 523*755acd36SAdam Skladowski }; 524*755acd36SAdam Skladowski 525*755acd36SAdam Skladowski static struct qcom_icc_node mas_cpp = { 526*755acd36SAdam Skladowski .name = "mas_cpp", 527*755acd36SAdam Skladowski .id = QNOC_MASTER_CPP, 528*755acd36SAdam Skladowski .buswidth = 16, 529*755acd36SAdam Skladowski .mas_rpm_id = 115, 530*755acd36SAdam Skladowski .slv_rpm_id = -1, 531*755acd36SAdam Skladowski .qos.ap_owned = true, 532*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_BYPASS, 533*755acd36SAdam Skladowski .qos.areq_prio = 0, 534*755acd36SAdam Skladowski .qos.prio_level = 0, 535*755acd36SAdam Skladowski .qos.qos_port = 12, 536*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_cpp_links), 537*755acd36SAdam Skladowski .links = mas_cpp_links, 538*755acd36SAdam Skladowski }; 539*755acd36SAdam Skladowski 540*755acd36SAdam Skladowski static const u16 mas_qdss_etr_links[] = { 541*755acd36SAdam Skladowski QNOC_SNOC_QDSS_INT 542*755acd36SAdam Skladowski }; 543*755acd36SAdam Skladowski 544*755acd36SAdam Skladowski static struct qcom_icc_node mas_qdss_etr = { 545*755acd36SAdam Skladowski .name = "mas_qdss_etr", 546*755acd36SAdam Skladowski .id = QNOC_MASTER_QDSS_ETR, 547*755acd36SAdam Skladowski .buswidth = 8, 548*755acd36SAdam Skladowski .mas_rpm_id = 31, 549*755acd36SAdam Skladowski .slv_rpm_id = -1, 550*755acd36SAdam Skladowski .qos.ap_owned = true, 551*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_FIXED, 552*755acd36SAdam Skladowski .qos.areq_prio = 1, 553*755acd36SAdam Skladowski .qos.prio_level = 1, 554*755acd36SAdam Skladowski .qos.qos_port = 10, 555*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(mas_qdss_etr_links), 556*755acd36SAdam Skladowski .links = mas_qdss_etr_links, 557*755acd36SAdam Skladowski }; 558*755acd36SAdam Skladowski 559*755acd36SAdam Skladowski static const u16 pcnoc_m_0_links[] = { 560*755acd36SAdam Skladowski QNOC_PNOC_INT_0 561*755acd36SAdam Skladowski }; 562*755acd36SAdam Skladowski 563*755acd36SAdam Skladowski static struct qcom_icc_node pcnoc_m_0 = { 564*755acd36SAdam Skladowski .name = "pcnoc_m_0", 565*755acd36SAdam Skladowski .id = QNOC_PNOC_M_0, 566*755acd36SAdam Skladowski .buswidth = 4, 567*755acd36SAdam Skladowski .mas_rpm_id = 87, 568*755acd36SAdam Skladowski .slv_rpm_id = 116, 569*755acd36SAdam Skladowski .qos.ap_owned = true, 570*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_FIXED, 571*755acd36SAdam Skladowski .qos.areq_prio = 1, 572*755acd36SAdam Skladowski .qos.prio_level = 1, 573*755acd36SAdam Skladowski .qos.qos_port = 5, 574*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(pcnoc_m_0_links), 575*755acd36SAdam Skladowski .links = pcnoc_m_0_links, 576*755acd36SAdam Skladowski }; 577*755acd36SAdam Skladowski 578*755acd36SAdam Skladowski static const u16 pcnoc_m_1_links[] = { 579*755acd36SAdam Skladowski QNOC_PNOC_INT_0 580*755acd36SAdam Skladowski }; 581*755acd36SAdam Skladowski 582*755acd36SAdam Skladowski static struct qcom_icc_node pcnoc_m_1 = { 583*755acd36SAdam Skladowski .name = "pcnoc_m_1", 584*755acd36SAdam Skladowski .id = QNOC_PNOC_M_1, 585*755acd36SAdam Skladowski .buswidth = 4, 586*755acd36SAdam Skladowski .mas_rpm_id = 88, 587*755acd36SAdam Skladowski .slv_rpm_id = 117, 588*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(pcnoc_m_1_links), 589*755acd36SAdam Skladowski .links = pcnoc_m_1_links, 590*755acd36SAdam Skladowski }; 591*755acd36SAdam Skladowski 592*755acd36SAdam Skladowski static const u16 pcnoc_int_0_links[] = { 593*755acd36SAdam Skladowski QNOC_PNOC_SNOC_SLV, 594*755acd36SAdam Skladowski QNOC_PNOC_SLV_7, 595*755acd36SAdam Skladowski QNOC_PNOC_INT_3, 596*755acd36SAdam Skladowski QNOC_PNOC_INT_2 597*755acd36SAdam Skladowski }; 598*755acd36SAdam Skladowski 599*755acd36SAdam Skladowski static struct qcom_icc_node pcnoc_int_0 = { 600*755acd36SAdam Skladowski .name = "pcnoc_int_0", 601*755acd36SAdam Skladowski .id = QNOC_PNOC_INT_0, 602*755acd36SAdam Skladowski .buswidth = 8, 603*755acd36SAdam Skladowski .mas_rpm_id = 85, 604*755acd36SAdam Skladowski .slv_rpm_id = 114, 605*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(pcnoc_int_0_links), 606*755acd36SAdam Skladowski .links = pcnoc_int_0_links, 607*755acd36SAdam Skladowski }; 608*755acd36SAdam Skladowski 609*755acd36SAdam Skladowski static const u16 pcnoc_int_1_links[] = { 610*755acd36SAdam Skladowski QNOC_PNOC_SNOC_SLV, 611*755acd36SAdam Skladowski QNOC_PNOC_SLV_7, 612*755acd36SAdam Skladowski QNOC_PNOC_INT_3, 613*755acd36SAdam Skladowski QNOC_PNOC_INT_2 614*755acd36SAdam Skladowski }; 615*755acd36SAdam Skladowski 616*755acd36SAdam Skladowski static struct qcom_icc_node pcnoc_int_1 = { 617*755acd36SAdam Skladowski .name = "pcnoc_int_1", 618*755acd36SAdam Skladowski .id = QNOC_PNOC_INT_1, 619*755acd36SAdam Skladowski .buswidth = 8, 620*755acd36SAdam Skladowski .mas_rpm_id = -1, 621*755acd36SAdam Skladowski .slv_rpm_id = -1, 622*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(pcnoc_int_1_links), 623*755acd36SAdam Skladowski .links = pcnoc_int_1_links, 624*755acd36SAdam Skladowski }; 625*755acd36SAdam Skladowski 626*755acd36SAdam Skladowski static const u16 pcnoc_int_2_links[] = { 627*755acd36SAdam Skladowski QNOC_PNOC_SLV_2, 628*755acd36SAdam Skladowski QNOC_PNOC_SLV_3, 629*755acd36SAdam Skladowski QNOC_PNOC_SLV_6, 630*755acd36SAdam Skladowski QNOC_PNOC_SLV_8 631*755acd36SAdam Skladowski }; 632*755acd36SAdam Skladowski 633*755acd36SAdam Skladowski static struct qcom_icc_node pcnoc_int_2 = { 634*755acd36SAdam Skladowski .name = "pcnoc_int_2", 635*755acd36SAdam Skladowski .id = QNOC_PNOC_INT_2, 636*755acd36SAdam Skladowski .buswidth = 8, 637*755acd36SAdam Skladowski .mas_rpm_id = 124, 638*755acd36SAdam Skladowski .slv_rpm_id = 184, 639*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(pcnoc_int_2_links), 640*755acd36SAdam Skladowski .links = pcnoc_int_2_links, 641*755acd36SAdam Skladowski }; 642*755acd36SAdam Skladowski 643*755acd36SAdam Skladowski static const u16 pcnoc_int_3_links[] = { 644*755acd36SAdam Skladowski QNOC_PNOC_SLV_1, 645*755acd36SAdam Skladowski QNOC_PNOC_SLV_0, 646*755acd36SAdam Skladowski QNOC_PNOC_SLV_4, 647*755acd36SAdam Skladowski QNOC_SLAVE_GRAPHICS_3D_CFG, 648*755acd36SAdam Skladowski QNOC_SLAVE_TCU 649*755acd36SAdam Skladowski }; 650*755acd36SAdam Skladowski 651*755acd36SAdam Skladowski static struct qcom_icc_node pcnoc_int_3 = { 652*755acd36SAdam Skladowski .name = "pcnoc_int_3", 653*755acd36SAdam Skladowski .id = QNOC_PNOC_INT_3, 654*755acd36SAdam Skladowski .buswidth = 8, 655*755acd36SAdam Skladowski .mas_rpm_id = 125, 656*755acd36SAdam Skladowski .slv_rpm_id = 185, 657*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(pcnoc_int_3_links), 658*755acd36SAdam Skladowski .links = pcnoc_int_3_links, 659*755acd36SAdam Skladowski }; 660*755acd36SAdam Skladowski 661*755acd36SAdam Skladowski static const u16 pcnoc_s_0_links[] = { 662*755acd36SAdam Skladowski QNOC_SLAVE_SPDM_WRAPPER, 663*755acd36SAdam Skladowski QNOC_SLAVE_PDM, 664*755acd36SAdam Skladowski QNOC_SLAVE_PRNG, 665*755acd36SAdam Skladowski QNOC_SLAVE_SDCC_2 666*755acd36SAdam Skladowski }; 667*755acd36SAdam Skladowski 668*755acd36SAdam Skladowski static struct qcom_icc_node pcnoc_s_0 = { 669*755acd36SAdam Skladowski .name = "pcnoc_s_0", 670*755acd36SAdam Skladowski .id = QNOC_PNOC_SLV_0, 671*755acd36SAdam Skladowski .buswidth = 4, 672*755acd36SAdam Skladowski .mas_rpm_id = 89, 673*755acd36SAdam Skladowski .slv_rpm_id = 118, 674*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(pcnoc_s_0_links), 675*755acd36SAdam Skladowski .links = pcnoc_s_0_links, 676*755acd36SAdam Skladowski }; 677*755acd36SAdam Skladowski 678*755acd36SAdam Skladowski static const u16 pcnoc_s_1_links[] = { 679*755acd36SAdam Skladowski QNOC_SLAVE_TCSR 680*755acd36SAdam Skladowski }; 681*755acd36SAdam Skladowski 682*755acd36SAdam Skladowski static struct qcom_icc_node pcnoc_s_1 = { 683*755acd36SAdam Skladowski .name = "pcnoc_s_1", 684*755acd36SAdam Skladowski .id = QNOC_PNOC_SLV_1, 685*755acd36SAdam Skladowski .buswidth = 4, 686*755acd36SAdam Skladowski .mas_rpm_id = 90, 687*755acd36SAdam Skladowski .slv_rpm_id = 119, 688*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(pcnoc_s_1_links), 689*755acd36SAdam Skladowski .links = pcnoc_s_1_links, 690*755acd36SAdam Skladowski }; 691*755acd36SAdam Skladowski 692*755acd36SAdam Skladowski static const u16 pcnoc_s_2_links[] = { 693*755acd36SAdam Skladowski QNOC_SLAVE_SNOC_CFG 694*755acd36SAdam Skladowski }; 695*755acd36SAdam Skladowski 696*755acd36SAdam Skladowski static struct qcom_icc_node pcnoc_s_2 = { 697*755acd36SAdam Skladowski .name = "pcnoc_s_2", 698*755acd36SAdam Skladowski .id = QNOC_PNOC_SLV_2, 699*755acd36SAdam Skladowski .buswidth = 4, 700*755acd36SAdam Skladowski .mas_rpm_id = 91, 701*755acd36SAdam Skladowski .slv_rpm_id = 120, 702*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(pcnoc_s_2_links), 703*755acd36SAdam Skladowski .links = pcnoc_s_2_links, 704*755acd36SAdam Skladowski }; 705*755acd36SAdam Skladowski 706*755acd36SAdam Skladowski static const u16 pcnoc_s_3_links[] = { 707*755acd36SAdam Skladowski QNOC_SLAVE_MESSAGE_RAM 708*755acd36SAdam Skladowski }; 709*755acd36SAdam Skladowski 710*755acd36SAdam Skladowski static struct qcom_icc_node pcnoc_s_3 = { 711*755acd36SAdam Skladowski .name = "pcnoc_s_3", 712*755acd36SAdam Skladowski .id = QNOC_PNOC_SLV_3, 713*755acd36SAdam Skladowski .buswidth = 4, 714*755acd36SAdam Skladowski .mas_rpm_id = 92, 715*755acd36SAdam Skladowski .slv_rpm_id = 121, 716*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(pcnoc_s_3_links), 717*755acd36SAdam Skladowski .links = pcnoc_s_3_links, 718*755acd36SAdam Skladowski }; 719*755acd36SAdam Skladowski 720*755acd36SAdam Skladowski static const u16 pcnoc_s_4_links[] = { 721*755acd36SAdam Skladowski QNOC_SLAVE_CAMERA_CFG, 722*755acd36SAdam Skladowski QNOC_SLAVE_DISPLAY_CFG, 723*755acd36SAdam Skladowski QNOC_SLAVE_VENUS_CFG 724*755acd36SAdam Skladowski }; 725*755acd36SAdam Skladowski 726*755acd36SAdam Skladowski static struct qcom_icc_node pcnoc_s_4 = { 727*755acd36SAdam Skladowski .name = "pcnoc_s_4", 728*755acd36SAdam Skladowski .id = QNOC_PNOC_SLV_4, 729*755acd36SAdam Skladowski .buswidth = 4, 730*755acd36SAdam Skladowski .mas_rpm_id = 93, 731*755acd36SAdam Skladowski .slv_rpm_id = 122, 732*755acd36SAdam Skladowski .qos.ap_owned = true, 733*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_INVALID, 734*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(pcnoc_s_4_links), 735*755acd36SAdam Skladowski .links = pcnoc_s_4_links, 736*755acd36SAdam Skladowski }; 737*755acd36SAdam Skladowski 738*755acd36SAdam Skladowski static const u16 pcnoc_s_6_links[] = { 739*755acd36SAdam Skladowski QNOC_SLAVE_TLMM, 740*755acd36SAdam Skladowski QNOC_SLAVE_BLSP_1, 741*755acd36SAdam Skladowski QNOC_SLAVE_BLSP_2 742*755acd36SAdam Skladowski }; 743*755acd36SAdam Skladowski 744*755acd36SAdam Skladowski static struct qcom_icc_node pcnoc_s_6 = { 745*755acd36SAdam Skladowski .name = "pcnoc_s_6", 746*755acd36SAdam Skladowski .id = QNOC_PNOC_SLV_6, 747*755acd36SAdam Skladowski .buswidth = 4, 748*755acd36SAdam Skladowski .mas_rpm_id = 94, 749*755acd36SAdam Skladowski .slv_rpm_id = 123, 750*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(pcnoc_s_6_links), 751*755acd36SAdam Skladowski .links = pcnoc_s_6_links, 752*755acd36SAdam Skladowski }; 753*755acd36SAdam Skladowski 754*755acd36SAdam Skladowski static const u16 pcnoc_s_7_links[] = { 755*755acd36SAdam Skladowski QNOC_SLAVE_SDCC_1, 756*755acd36SAdam Skladowski QNOC_SLAVE_PMIC_ARB 757*755acd36SAdam Skladowski }; 758*755acd36SAdam Skladowski 759*755acd36SAdam Skladowski static struct qcom_icc_node pcnoc_s_7 = { 760*755acd36SAdam Skladowski .name = "pcnoc_s_7", 761*755acd36SAdam Skladowski .id = QNOC_PNOC_SLV_7, 762*755acd36SAdam Skladowski .buswidth = 4, 763*755acd36SAdam Skladowski .mas_rpm_id = 95, 764*755acd36SAdam Skladowski .slv_rpm_id = 124, 765*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(pcnoc_s_7_links), 766*755acd36SAdam Skladowski .links = pcnoc_s_7_links, 767*755acd36SAdam Skladowski }; 768*755acd36SAdam Skladowski 769*755acd36SAdam Skladowski static const u16 pcnoc_s_8_links[] = { 770*755acd36SAdam Skladowski QNOC_SLAVE_USB_HS, 771*755acd36SAdam Skladowski QNOC_SLAVE_CRYPTO_0_CFG 772*755acd36SAdam Skladowski }; 773*755acd36SAdam Skladowski 774*755acd36SAdam Skladowski static struct qcom_icc_node pcnoc_s_8 = { 775*755acd36SAdam Skladowski .name = "pcnoc_s_8", 776*755acd36SAdam Skladowski .id = QNOC_PNOC_SLV_8, 777*755acd36SAdam Skladowski .buswidth = 4, 778*755acd36SAdam Skladowski .mas_rpm_id = 96, 779*755acd36SAdam Skladowski .slv_rpm_id = 125, 780*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(pcnoc_s_8_links), 781*755acd36SAdam Skladowski .links = pcnoc_s_8_links, 782*755acd36SAdam Skladowski }; 783*755acd36SAdam Skladowski 784*755acd36SAdam Skladowski static const u16 qdss_int_links[] = { 785*755acd36SAdam Skladowski QNOC_SNOC_INT_1, 786*755acd36SAdam Skladowski QNOC_SNOC_BIMC_1_SLV 787*755acd36SAdam Skladowski }; 788*755acd36SAdam Skladowski 789*755acd36SAdam Skladowski static struct qcom_icc_node qdss_int = { 790*755acd36SAdam Skladowski .name = "qdss_int", 791*755acd36SAdam Skladowski .id = QNOC_SNOC_QDSS_INT, 792*755acd36SAdam Skladowski .buswidth = 8, 793*755acd36SAdam Skladowski .mas_rpm_id = 98, 794*755acd36SAdam Skladowski .slv_rpm_id = 128, 795*755acd36SAdam Skladowski .qos.ap_owned = true, 796*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_INVALID, 797*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(qdss_int_links), 798*755acd36SAdam Skladowski .links = qdss_int_links, 799*755acd36SAdam Skladowski }; 800*755acd36SAdam Skladowski 801*755acd36SAdam Skladowski static const u16 snoc_int_0_links[] = { 802*755acd36SAdam Skladowski QNOC_SLAVE_LPASS, 803*755acd36SAdam Skladowski QNOC_SLAVE_WCSS, 804*755acd36SAdam Skladowski QNOC_SLAVE_APPSS 805*755acd36SAdam Skladowski }; 806*755acd36SAdam Skladowski 807*755acd36SAdam Skladowski static struct qcom_icc_node snoc_int_0 = { 808*755acd36SAdam Skladowski .name = "snoc_int_0", 809*755acd36SAdam Skladowski .id = QNOC_SNOC_INT_0, 810*755acd36SAdam Skladowski .buswidth = 8, 811*755acd36SAdam Skladowski .mas_rpm_id = 99, 812*755acd36SAdam Skladowski .slv_rpm_id = 130, 813*755acd36SAdam Skladowski .qos.ap_owned = true, 814*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_INVALID, 815*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(snoc_int_0_links), 816*755acd36SAdam Skladowski .links = snoc_int_0_links, 817*755acd36SAdam Skladowski }; 818*755acd36SAdam Skladowski 819*755acd36SAdam Skladowski static const u16 snoc_int_1_links[] = { 820*755acd36SAdam Skladowski QNOC_SLAVE_QDSS_STM, 821*755acd36SAdam Skladowski QNOC_SLAVE_OCIMEM, 822*755acd36SAdam Skladowski QNOC_SNOC_PNOC_SLV 823*755acd36SAdam Skladowski }; 824*755acd36SAdam Skladowski 825*755acd36SAdam Skladowski static struct qcom_icc_node snoc_int_1 = { 826*755acd36SAdam Skladowski .name = "snoc_int_1", 827*755acd36SAdam Skladowski .id = QNOC_SNOC_INT_1, 828*755acd36SAdam Skladowski .buswidth = 8, 829*755acd36SAdam Skladowski .mas_rpm_id = 100, 830*755acd36SAdam Skladowski .slv_rpm_id = 131, 831*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(snoc_int_1_links), 832*755acd36SAdam Skladowski .links = snoc_int_1_links, 833*755acd36SAdam Skladowski }; 834*755acd36SAdam Skladowski 835*755acd36SAdam Skladowski static const u16 snoc_int_2_links[] = { 836*755acd36SAdam Skladowski QNOC_SLAVE_CATS_128, 837*755acd36SAdam Skladowski QNOC_SLAVE_OCMEM_64 838*755acd36SAdam Skladowski }; 839*755acd36SAdam Skladowski 840*755acd36SAdam Skladowski static struct qcom_icc_node snoc_int_2 = { 841*755acd36SAdam Skladowski .name = "snoc_int_2", 842*755acd36SAdam Skladowski .id = QNOC_SNOC_INT_2, 843*755acd36SAdam Skladowski .buswidth = 8, 844*755acd36SAdam Skladowski .mas_rpm_id = 134, 845*755acd36SAdam Skladowski .slv_rpm_id = 197, 846*755acd36SAdam Skladowski .qos.ap_owned = true, 847*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_INVALID, 848*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(snoc_int_2_links), 849*755acd36SAdam Skladowski .links = snoc_int_2_links, 850*755acd36SAdam Skladowski }; 851*755acd36SAdam Skladowski 852*755acd36SAdam Skladowski static struct qcom_icc_node slv_ebi = { 853*755acd36SAdam Skladowski .name = "slv_ebi", 854*755acd36SAdam Skladowski .id = QNOC_SLAVE_EBI_CH0, 855*755acd36SAdam Skladowski .buswidth = 8, 856*755acd36SAdam Skladowski .mas_rpm_id = -1, 857*755acd36SAdam Skladowski .slv_rpm_id = 0, 858*755acd36SAdam Skladowski }; 859*755acd36SAdam Skladowski 860*755acd36SAdam Skladowski static const u16 slv_bimc_snoc_links[] = { 861*755acd36SAdam Skladowski QNOC_BIMC_SNOC_MAS 862*755acd36SAdam Skladowski }; 863*755acd36SAdam Skladowski 864*755acd36SAdam Skladowski static struct qcom_icc_node slv_bimc_snoc = { 865*755acd36SAdam Skladowski .name = "slv_bimc_snoc", 866*755acd36SAdam Skladowski .id = QNOC_BIMC_SNOC_SLV, 867*755acd36SAdam Skladowski .buswidth = 8, 868*755acd36SAdam Skladowski .mas_rpm_id = -1, 869*755acd36SAdam Skladowski .slv_rpm_id = 2, 870*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(slv_bimc_snoc_links), 871*755acd36SAdam Skladowski .links = slv_bimc_snoc_links, 872*755acd36SAdam Skladowski }; 873*755acd36SAdam Skladowski 874*755acd36SAdam Skladowski static struct qcom_icc_node slv_sdcc_2 = { 875*755acd36SAdam Skladowski .name = "slv_sdcc_2", 876*755acd36SAdam Skladowski .id = QNOC_SLAVE_SDCC_2, 877*755acd36SAdam Skladowski .buswidth = 4, 878*755acd36SAdam Skladowski .mas_rpm_id = -1, 879*755acd36SAdam Skladowski .slv_rpm_id = 33, 880*755acd36SAdam Skladowski }; 881*755acd36SAdam Skladowski 882*755acd36SAdam Skladowski static struct qcom_icc_node slv_spdm = { 883*755acd36SAdam Skladowski .name = "slv_spdm", 884*755acd36SAdam Skladowski .id = QNOC_SLAVE_SPDM_WRAPPER, 885*755acd36SAdam Skladowski .buswidth = 4, 886*755acd36SAdam Skladowski .mas_rpm_id = -1, 887*755acd36SAdam Skladowski .slv_rpm_id = 60, 888*755acd36SAdam Skladowski .qos.ap_owned = true, 889*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_INVALID, 890*755acd36SAdam Skladowski }; 891*755acd36SAdam Skladowski 892*755acd36SAdam Skladowski static struct qcom_icc_node slv_pdm = { 893*755acd36SAdam Skladowski .name = "slv_pdm", 894*755acd36SAdam Skladowski .id = QNOC_SLAVE_PDM, 895*755acd36SAdam Skladowski .buswidth = 4, 896*755acd36SAdam Skladowski .mas_rpm_id = -1, 897*755acd36SAdam Skladowski .slv_rpm_id = 41, 898*755acd36SAdam Skladowski }; 899*755acd36SAdam Skladowski 900*755acd36SAdam Skladowski static struct qcom_icc_node slv_prng = { 901*755acd36SAdam Skladowski .name = "slv_prng", 902*755acd36SAdam Skladowski .id = QNOC_SLAVE_PRNG, 903*755acd36SAdam Skladowski .buswidth = 4, 904*755acd36SAdam Skladowski .mas_rpm_id = -1, 905*755acd36SAdam Skladowski .slv_rpm_id = 44, 906*755acd36SAdam Skladowski }; 907*755acd36SAdam Skladowski 908*755acd36SAdam Skladowski static struct qcom_icc_node slv_tcsr = { 909*755acd36SAdam Skladowski .name = "slv_tcsr", 910*755acd36SAdam Skladowski .id = QNOC_SLAVE_TCSR, 911*755acd36SAdam Skladowski .buswidth = 4, 912*755acd36SAdam Skladowski .mas_rpm_id = -1, 913*755acd36SAdam Skladowski .slv_rpm_id = 50, 914*755acd36SAdam Skladowski }; 915*755acd36SAdam Skladowski 916*755acd36SAdam Skladowski static struct qcom_icc_node slv_snoc_cfg = { 917*755acd36SAdam Skladowski .name = "slv_snoc_cfg", 918*755acd36SAdam Skladowski .id = QNOC_SLAVE_SNOC_CFG, 919*755acd36SAdam Skladowski .buswidth = 4, 920*755acd36SAdam Skladowski .mas_rpm_id = -1, 921*755acd36SAdam Skladowski .slv_rpm_id = 70, 922*755acd36SAdam Skladowski }; 923*755acd36SAdam Skladowski 924*755acd36SAdam Skladowski static struct qcom_icc_node slv_message_ram = { 925*755acd36SAdam Skladowski .name = "slv_message_ram", 926*755acd36SAdam Skladowski .id = QNOC_SLAVE_MESSAGE_RAM, 927*755acd36SAdam Skladowski .buswidth = 4, 928*755acd36SAdam Skladowski .mas_rpm_id = -1, 929*755acd36SAdam Skladowski .slv_rpm_id = 55, 930*755acd36SAdam Skladowski }; 931*755acd36SAdam Skladowski 932*755acd36SAdam Skladowski static struct qcom_icc_node slv_camera_ss_cfg = { 933*755acd36SAdam Skladowski .name = "slv_camera_ss_cfg", 934*755acd36SAdam Skladowski .id = QNOC_SLAVE_CAMERA_CFG, 935*755acd36SAdam Skladowski .buswidth = 4, 936*755acd36SAdam Skladowski .mas_rpm_id = -1, 937*755acd36SAdam Skladowski .slv_rpm_id = 3, 938*755acd36SAdam Skladowski .qos.ap_owned = true, 939*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_INVALID, 940*755acd36SAdam Skladowski }; 941*755acd36SAdam Skladowski 942*755acd36SAdam Skladowski static struct qcom_icc_node slv_disp_ss_cfg = { 943*755acd36SAdam Skladowski .name = "slv_disp_ss_cfg", 944*755acd36SAdam Skladowski .id = QNOC_SLAVE_DISPLAY_CFG, 945*755acd36SAdam Skladowski .buswidth = 4, 946*755acd36SAdam Skladowski .mas_rpm_id = -1, 947*755acd36SAdam Skladowski .slv_rpm_id = 4, 948*755acd36SAdam Skladowski .qos.ap_owned = true, 949*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_INVALID, 950*755acd36SAdam Skladowski }; 951*755acd36SAdam Skladowski 952*755acd36SAdam Skladowski static struct qcom_icc_node slv_venus_cfg = { 953*755acd36SAdam Skladowski .name = "slv_venus_cfg", 954*755acd36SAdam Skladowski .id = QNOC_SLAVE_VENUS_CFG, 955*755acd36SAdam Skladowski .buswidth = 4, 956*755acd36SAdam Skladowski .mas_rpm_id = -1, 957*755acd36SAdam Skladowski .slv_rpm_id = 10, 958*755acd36SAdam Skladowski .qos.ap_owned = true, 959*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_INVALID, 960*755acd36SAdam Skladowski }; 961*755acd36SAdam Skladowski 962*755acd36SAdam Skladowski static struct qcom_icc_node slv_gpu_cfg = { 963*755acd36SAdam Skladowski .name = "slv_gpu_cfg", 964*755acd36SAdam Skladowski .id = QNOC_SLAVE_GRAPHICS_3D_CFG, 965*755acd36SAdam Skladowski .buswidth = 8, 966*755acd36SAdam Skladowski .mas_rpm_id = -1, 967*755acd36SAdam Skladowski .slv_rpm_id = 11, 968*755acd36SAdam Skladowski .qos.ap_owned = true, 969*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_INVALID, 970*755acd36SAdam Skladowski }; 971*755acd36SAdam Skladowski 972*755acd36SAdam Skladowski static struct qcom_icc_node slv_tlmm = { 973*755acd36SAdam Skladowski .name = "slv_tlmm", 974*755acd36SAdam Skladowski .id = QNOC_SLAVE_TLMM, 975*755acd36SAdam Skladowski .buswidth = 4, 976*755acd36SAdam Skladowski .mas_rpm_id = -1, 977*755acd36SAdam Skladowski .slv_rpm_id = 51, 978*755acd36SAdam Skladowski }; 979*755acd36SAdam Skladowski 980*755acd36SAdam Skladowski static struct qcom_icc_node slv_blsp_1 = { 981*755acd36SAdam Skladowski .name = "slv_blsp_1", 982*755acd36SAdam Skladowski .id = QNOC_SLAVE_BLSP_1, 983*755acd36SAdam Skladowski .buswidth = 4, 984*755acd36SAdam Skladowski .mas_rpm_id = -1, 985*755acd36SAdam Skladowski .slv_rpm_id = 39, 986*755acd36SAdam Skladowski }; 987*755acd36SAdam Skladowski 988*755acd36SAdam Skladowski static struct qcom_icc_node slv_blsp_2 = { 989*755acd36SAdam Skladowski .name = "slv_blsp_2", 990*755acd36SAdam Skladowski .id = QNOC_SLAVE_BLSP_2, 991*755acd36SAdam Skladowski .buswidth = 4, 992*755acd36SAdam Skladowski .mas_rpm_id = -1, 993*755acd36SAdam Skladowski .slv_rpm_id = 37, 994*755acd36SAdam Skladowski }; 995*755acd36SAdam Skladowski 996*755acd36SAdam Skladowski static struct qcom_icc_node slv_pmic_arb = { 997*755acd36SAdam Skladowski .name = "slv_pmic_arb", 998*755acd36SAdam Skladowski .id = QNOC_SLAVE_PMIC_ARB, 999*755acd36SAdam Skladowski .buswidth = 4, 1000*755acd36SAdam Skladowski .mas_rpm_id = -1, 1001*755acd36SAdam Skladowski .slv_rpm_id = 59, 1002*755acd36SAdam Skladowski }; 1003*755acd36SAdam Skladowski 1004*755acd36SAdam Skladowski static struct qcom_icc_node slv_sdcc_1 = { 1005*755acd36SAdam Skladowski .name = "slv_sdcc_1", 1006*755acd36SAdam Skladowski .id = QNOC_SLAVE_SDCC_1, 1007*755acd36SAdam Skladowski .buswidth = 4, 1008*755acd36SAdam Skladowski .mas_rpm_id = -1, 1009*755acd36SAdam Skladowski .slv_rpm_id = 31, 1010*755acd36SAdam Skladowski }; 1011*755acd36SAdam Skladowski 1012*755acd36SAdam Skladowski static struct qcom_icc_node slv_crypto_0_cfg = { 1013*755acd36SAdam Skladowski .name = "slv_crypto_0_cfg", 1014*755acd36SAdam Skladowski .id = QNOC_SLAVE_CRYPTO_0_CFG, 1015*755acd36SAdam Skladowski .buswidth = 4, 1016*755acd36SAdam Skladowski .mas_rpm_id = -1, 1017*755acd36SAdam Skladowski .slv_rpm_id = 52, 1018*755acd36SAdam Skladowski }; 1019*755acd36SAdam Skladowski 1020*755acd36SAdam Skladowski static struct qcom_icc_node slv_usb_hs = { 1021*755acd36SAdam Skladowski .name = "slv_usb_hs", 1022*755acd36SAdam Skladowski .id = QNOC_SLAVE_USB_HS, 1023*755acd36SAdam Skladowski .buswidth = 4, 1024*755acd36SAdam Skladowski .mas_rpm_id = -1, 1025*755acd36SAdam Skladowski .slv_rpm_id = 40, 1026*755acd36SAdam Skladowski }; 1027*755acd36SAdam Skladowski 1028*755acd36SAdam Skladowski static struct qcom_icc_node slv_tcu = { 1029*755acd36SAdam Skladowski .name = "slv_tcu", 1030*755acd36SAdam Skladowski .id = QNOC_SLAVE_TCU, 1031*755acd36SAdam Skladowski .buswidth = 8, 1032*755acd36SAdam Skladowski .mas_rpm_id = -1, 1033*755acd36SAdam Skladowski .slv_rpm_id = 133, 1034*755acd36SAdam Skladowski .qos.ap_owned = true, 1035*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_INVALID, 1036*755acd36SAdam Skladowski }; 1037*755acd36SAdam Skladowski 1038*755acd36SAdam Skladowski static const u16 slv_pcnoc_snoc_links[] = { 1039*755acd36SAdam Skladowski QNOC_PNOC_SNOC_MAS 1040*755acd36SAdam Skladowski }; 1041*755acd36SAdam Skladowski 1042*755acd36SAdam Skladowski static struct qcom_icc_node slv_pcnoc_snoc = { 1043*755acd36SAdam Skladowski .name = "slv_pcnoc_snoc", 1044*755acd36SAdam Skladowski .id = QNOC_PNOC_SNOC_SLV, 1045*755acd36SAdam Skladowski .buswidth = 8, 1046*755acd36SAdam Skladowski .mas_rpm_id = -1, 1047*755acd36SAdam Skladowski .slv_rpm_id = 45, 1048*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(slv_pcnoc_snoc_links), 1049*755acd36SAdam Skladowski .links = slv_pcnoc_snoc_links, 1050*755acd36SAdam Skladowski }; 1051*755acd36SAdam Skladowski 1052*755acd36SAdam Skladowski static struct qcom_icc_node slv_kpss_ahb = { 1053*755acd36SAdam Skladowski .name = "slv_kpss_ahb", 1054*755acd36SAdam Skladowski .id = QNOC_SLAVE_APPSS, 1055*755acd36SAdam Skladowski .buswidth = 4, 1056*755acd36SAdam Skladowski .mas_rpm_id = -1, 1057*755acd36SAdam Skladowski .slv_rpm_id = 20, 1058*755acd36SAdam Skladowski .qos.ap_owned = true, 1059*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_INVALID, 1060*755acd36SAdam Skladowski }; 1061*755acd36SAdam Skladowski 1062*755acd36SAdam Skladowski static struct qcom_icc_node slv_wcss = { 1063*755acd36SAdam Skladowski .name = "slv_wcss", 1064*755acd36SAdam Skladowski .id = QNOC_SLAVE_WCSS, 1065*755acd36SAdam Skladowski .buswidth = 4, 1066*755acd36SAdam Skladowski .mas_rpm_id = -1, 1067*755acd36SAdam Skladowski .slv_rpm_id = 23, 1068*755acd36SAdam Skladowski .qos.ap_owned = true, 1069*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_INVALID, 1070*755acd36SAdam Skladowski }; 1071*755acd36SAdam Skladowski 1072*755acd36SAdam Skladowski static const u16 slv_snoc_bimc_0_links[] = { 1073*755acd36SAdam Skladowski QNOC_SNOC_BIMC_0_MAS 1074*755acd36SAdam Skladowski }; 1075*755acd36SAdam Skladowski 1076*755acd36SAdam Skladowski static struct qcom_icc_node slv_snoc_bimc_0 = { 1077*755acd36SAdam Skladowski .name = "slv_snoc_bimc_0", 1078*755acd36SAdam Skladowski .id = QNOC_SNOC_BIMC_0_SLV, 1079*755acd36SAdam Skladowski .buswidth = 16, 1080*755acd36SAdam Skladowski .mas_rpm_id = -1, 1081*755acd36SAdam Skladowski .slv_rpm_id = 24, 1082*755acd36SAdam Skladowski .qos.ap_owned = true, 1083*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_INVALID, 1084*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(slv_snoc_bimc_0_links), 1085*755acd36SAdam Skladowski .links = slv_snoc_bimc_0_links, 1086*755acd36SAdam Skladowski }; 1087*755acd36SAdam Skladowski 1088*755acd36SAdam Skladowski static const u16 slv_snoc_bimc_1_links[] = { 1089*755acd36SAdam Skladowski QNOC_SNOC_BIMC_1_MAS 1090*755acd36SAdam Skladowski }; 1091*755acd36SAdam Skladowski 1092*755acd36SAdam Skladowski static struct qcom_icc_node slv_snoc_bimc_1 = { 1093*755acd36SAdam Skladowski .name = "slv_snoc_bimc_1", 1094*755acd36SAdam Skladowski .id = QNOC_SNOC_BIMC_1_SLV, 1095*755acd36SAdam Skladowski .buswidth = 8, 1096*755acd36SAdam Skladowski .mas_rpm_id = -1, 1097*755acd36SAdam Skladowski .slv_rpm_id = 104, 1098*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(slv_snoc_bimc_1_links), 1099*755acd36SAdam Skladowski .links = slv_snoc_bimc_1_links, 1100*755acd36SAdam Skladowski }; 1101*755acd36SAdam Skladowski 1102*755acd36SAdam Skladowski static const u16 slv_snoc_bimc_2_links[] = { 1103*755acd36SAdam Skladowski QNOC_SNOC_BIMC_2_MAS 1104*755acd36SAdam Skladowski }; 1105*755acd36SAdam Skladowski 1106*755acd36SAdam Skladowski static struct qcom_icc_node slv_snoc_bimc_2 = { 1107*755acd36SAdam Skladowski .name = "slv_snoc_bimc_2", 1108*755acd36SAdam Skladowski .id = QNOC_SNOC_BIMC_2_SLV, 1109*755acd36SAdam Skladowski .buswidth = 16, 1110*755acd36SAdam Skladowski .mas_rpm_id = -1, 1111*755acd36SAdam Skladowski .slv_rpm_id = 137, 1112*755acd36SAdam Skladowski .qos.ap_owned = true, 1113*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_INVALID, 1114*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(slv_snoc_bimc_2_links), 1115*755acd36SAdam Skladowski .links = slv_snoc_bimc_2_links, 1116*755acd36SAdam Skladowski }; 1117*755acd36SAdam Skladowski 1118*755acd36SAdam Skladowski static struct qcom_icc_node slv_imem = { 1119*755acd36SAdam Skladowski .name = "slv_imem", 1120*755acd36SAdam Skladowski .id = QNOC_SLAVE_OCIMEM, 1121*755acd36SAdam Skladowski .buswidth = 8, 1122*755acd36SAdam Skladowski .mas_rpm_id = -1, 1123*755acd36SAdam Skladowski .slv_rpm_id = 26, 1124*755acd36SAdam Skladowski }; 1125*755acd36SAdam Skladowski 1126*755acd36SAdam Skladowski static const u16 slv_snoc_pcnoc_links[] = { 1127*755acd36SAdam Skladowski QNOC_SNOC_PNOC_MAS 1128*755acd36SAdam Skladowski }; 1129*755acd36SAdam Skladowski 1130*755acd36SAdam Skladowski static struct qcom_icc_node slv_snoc_pcnoc = { 1131*755acd36SAdam Skladowski .name = "slv_snoc_pcnoc", 1132*755acd36SAdam Skladowski .id = QNOC_SNOC_PNOC_SLV, 1133*755acd36SAdam Skladowski .buswidth = 8, 1134*755acd36SAdam Skladowski .mas_rpm_id = -1, 1135*755acd36SAdam Skladowski .slv_rpm_id = 28, 1136*755acd36SAdam Skladowski .num_links = ARRAY_SIZE(slv_snoc_pcnoc_links), 1137*755acd36SAdam Skladowski .links = slv_snoc_pcnoc_links, 1138*755acd36SAdam Skladowski }; 1139*755acd36SAdam Skladowski 1140*755acd36SAdam Skladowski static struct qcom_icc_node slv_qdss_stm = { 1141*755acd36SAdam Skladowski .name = "slv_qdss_stm", 1142*755acd36SAdam Skladowski .id = QNOC_SLAVE_QDSS_STM, 1143*755acd36SAdam Skladowski .buswidth = 4, 1144*755acd36SAdam Skladowski .mas_rpm_id = -1, 1145*755acd36SAdam Skladowski .slv_rpm_id = 30, 1146*755acd36SAdam Skladowski }; 1147*755acd36SAdam Skladowski 1148*755acd36SAdam Skladowski static struct qcom_icc_node slv_cats_0 = { 1149*755acd36SAdam Skladowski .name = "slv_cats_0", 1150*755acd36SAdam Skladowski .id = QNOC_SLAVE_CATS_128, 1151*755acd36SAdam Skladowski .buswidth = 16, 1152*755acd36SAdam Skladowski .mas_rpm_id = -1, 1153*755acd36SAdam Skladowski .slv_rpm_id = 106, 1154*755acd36SAdam Skladowski .qos.ap_owned = true, 1155*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_INVALID, 1156*755acd36SAdam Skladowski }; 1157*755acd36SAdam Skladowski 1158*755acd36SAdam Skladowski static struct qcom_icc_node slv_cats_1 = { 1159*755acd36SAdam Skladowski .name = "slv_cats_1", 1160*755acd36SAdam Skladowski .id = QNOC_SLAVE_OCMEM_64, 1161*755acd36SAdam Skladowski .buswidth = 8, 1162*755acd36SAdam Skladowski .mas_rpm_id = -1, 1163*755acd36SAdam Skladowski .slv_rpm_id = 107, 1164*755acd36SAdam Skladowski .qos.ap_owned = true, 1165*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_INVALID, 1166*755acd36SAdam Skladowski }; 1167*755acd36SAdam Skladowski 1168*755acd36SAdam Skladowski static struct qcom_icc_node slv_lpass = { 1169*755acd36SAdam Skladowski .name = "slv_lpass", 1170*755acd36SAdam Skladowski .id = QNOC_SLAVE_LPASS, 1171*755acd36SAdam Skladowski .buswidth = 8, 1172*755acd36SAdam Skladowski .mas_rpm_id = -1, 1173*755acd36SAdam Skladowski .slv_rpm_id = 21, 1174*755acd36SAdam Skladowski .qos.ap_owned = true, 1175*755acd36SAdam Skladowski .qos.qos_mode = NOC_QOS_MODE_INVALID, 1176*755acd36SAdam Skladowski }; 1177*755acd36SAdam Skladowski 1178*755acd36SAdam Skladowski static struct qcom_icc_node *msm8937_bimc_nodes[] = { 1179*755acd36SAdam Skladowski [MAS_APPS_PROC] = &mas_apps_proc, 1180*755acd36SAdam Skladowski [MAS_OXILI] = &mas_oxili, 1181*755acd36SAdam Skladowski [MAS_SNOC_BIMC_0] = &mas_snoc_bimc_0, 1182*755acd36SAdam Skladowski [MAS_SNOC_BIMC_2] = &mas_snoc_bimc_2, 1183*755acd36SAdam Skladowski [MAS_SNOC_BIMC_1] = &mas_snoc_bimc_1, 1184*755acd36SAdam Skladowski [MAS_TCU_0] = &mas_tcu_0, 1185*755acd36SAdam Skladowski [SLV_EBI] = &slv_ebi, 1186*755acd36SAdam Skladowski [SLV_BIMC_SNOC] = &slv_bimc_snoc, 1187*755acd36SAdam Skladowski }; 1188*755acd36SAdam Skladowski 1189*755acd36SAdam Skladowski static const struct regmap_config msm8937_bimc_regmap_config = { 1190*755acd36SAdam Skladowski .reg_bits = 32, 1191*755acd36SAdam Skladowski .reg_stride = 4, 1192*755acd36SAdam Skladowski .val_bits = 32, 1193*755acd36SAdam Skladowski .max_register = 0x5A000, 1194*755acd36SAdam Skladowski .fast_io = true, 1195*755acd36SAdam Skladowski }; 1196*755acd36SAdam Skladowski 1197*755acd36SAdam Skladowski static const struct qcom_icc_desc msm8937_bimc = { 1198*755acd36SAdam Skladowski .type = QCOM_ICC_BIMC, 1199*755acd36SAdam Skladowski .nodes = msm8937_bimc_nodes, 1200*755acd36SAdam Skladowski .num_nodes = ARRAY_SIZE(msm8937_bimc_nodes), 1201*755acd36SAdam Skladowski .bus_clk_desc = &bimc_clk, 1202*755acd36SAdam Skladowski .regmap_cfg = &msm8937_bimc_regmap_config, 1203*755acd36SAdam Skladowski .qos_offset = 0x8000, 1204*755acd36SAdam Skladowski .ab_coeff = 154, 1205*755acd36SAdam Skladowski }; 1206*755acd36SAdam Skladowski 1207*755acd36SAdam Skladowski static struct qcom_icc_node *msm8937_pcnoc_nodes[] = { 1208*755acd36SAdam Skladowski [MAS_SPDM] = &mas_spdm, 1209*755acd36SAdam Skladowski [MAS_BLSP_1] = &mas_blsp_1, 1210*755acd36SAdam Skladowski [MAS_BLSP_2] = &mas_blsp_2, 1211*755acd36SAdam Skladowski [MAS_USB_HS1] = &mas_usb_hs1, 1212*755acd36SAdam Skladowski [MAS_XI_USB_HS1] = &mas_xi_usb_hs1, 1213*755acd36SAdam Skladowski [MAS_CRYPTO] = &mas_crypto, 1214*755acd36SAdam Skladowski [MAS_SDCC_1] = &mas_sdcc_1, 1215*755acd36SAdam Skladowski [MAS_SDCC_2] = &mas_sdcc_2, 1216*755acd36SAdam Skladowski [MAS_SNOC_PCNOC] = &mas_snoc_pcnoc, 1217*755acd36SAdam Skladowski [PCNOC_M_0] = &pcnoc_m_0, 1218*755acd36SAdam Skladowski [PCNOC_M_1] = &pcnoc_m_1, 1219*755acd36SAdam Skladowski [PCNOC_INT_0] = &pcnoc_int_0, 1220*755acd36SAdam Skladowski [PCNOC_INT_1] = &pcnoc_int_1, 1221*755acd36SAdam Skladowski [PCNOC_INT_2] = &pcnoc_int_2, 1222*755acd36SAdam Skladowski [PCNOC_INT_3] = &pcnoc_int_3, 1223*755acd36SAdam Skladowski [PCNOC_S_0] = &pcnoc_s_0, 1224*755acd36SAdam Skladowski [PCNOC_S_1] = &pcnoc_s_1, 1225*755acd36SAdam Skladowski [PCNOC_S_2] = &pcnoc_s_2, 1226*755acd36SAdam Skladowski [PCNOC_S_3] = &pcnoc_s_3, 1227*755acd36SAdam Skladowski [PCNOC_S_4] = &pcnoc_s_4, 1228*755acd36SAdam Skladowski [PCNOC_S_6] = &pcnoc_s_6, 1229*755acd36SAdam Skladowski [PCNOC_S_7] = &pcnoc_s_7, 1230*755acd36SAdam Skladowski [PCNOC_S_8] = &pcnoc_s_8, 1231*755acd36SAdam Skladowski [SLV_SDCC_2] = &slv_sdcc_2, 1232*755acd36SAdam Skladowski [SLV_SPDM] = &slv_spdm, 1233*755acd36SAdam Skladowski [SLV_PDM] = &slv_pdm, 1234*755acd36SAdam Skladowski [SLV_PRNG] = &slv_prng, 1235*755acd36SAdam Skladowski [SLV_TCSR] = &slv_tcsr, 1236*755acd36SAdam Skladowski [SLV_SNOC_CFG] = &slv_snoc_cfg, 1237*755acd36SAdam Skladowski [SLV_MESSAGE_RAM] = &slv_message_ram, 1238*755acd36SAdam Skladowski [SLV_CAMERA_SS_CFG] = &slv_camera_ss_cfg, 1239*755acd36SAdam Skladowski [SLV_DISP_SS_CFG] = &slv_disp_ss_cfg, 1240*755acd36SAdam Skladowski [SLV_VENUS_CFG] = &slv_venus_cfg, 1241*755acd36SAdam Skladowski [SLV_GPU_CFG] = &slv_gpu_cfg, 1242*755acd36SAdam Skladowski [SLV_TLMM] = &slv_tlmm, 1243*755acd36SAdam Skladowski [SLV_BLSP_1] = &slv_blsp_1, 1244*755acd36SAdam Skladowski [SLV_BLSP_2] = &slv_blsp_2, 1245*755acd36SAdam Skladowski [SLV_PMIC_ARB] = &slv_pmic_arb, 1246*755acd36SAdam Skladowski [SLV_SDCC_1] = &slv_sdcc_1, 1247*755acd36SAdam Skladowski [SLV_CRYPTO_0_CFG] = &slv_crypto_0_cfg, 1248*755acd36SAdam Skladowski [SLV_USB_HS] = &slv_usb_hs, 1249*755acd36SAdam Skladowski [SLV_TCU] = &slv_tcu, 1250*755acd36SAdam Skladowski [SLV_PCNOC_SNOC] = &slv_pcnoc_snoc, 1251*755acd36SAdam Skladowski }; 1252*755acd36SAdam Skladowski 1253*755acd36SAdam Skladowski static const struct regmap_config msm8937_pcnoc_regmap_config = { 1254*755acd36SAdam Skladowski .reg_bits = 32, 1255*755acd36SAdam Skladowski .reg_stride = 4, 1256*755acd36SAdam Skladowski .val_bits = 32, 1257*755acd36SAdam Skladowski .max_register = 0x13080, 1258*755acd36SAdam Skladowski .fast_io = true, 1259*755acd36SAdam Skladowski }; 1260*755acd36SAdam Skladowski 1261*755acd36SAdam Skladowski static const struct qcom_icc_desc msm8937_pcnoc = { 1262*755acd36SAdam Skladowski .type = QCOM_ICC_NOC, 1263*755acd36SAdam Skladowski .nodes = msm8937_pcnoc_nodes, 1264*755acd36SAdam Skladowski .num_nodes = ARRAY_SIZE(msm8937_pcnoc_nodes), 1265*755acd36SAdam Skladowski .bus_clk_desc = &bus_0_clk, 1266*755acd36SAdam Skladowski .qos_offset = 0x7000, 1267*755acd36SAdam Skladowski .keep_alive = true, 1268*755acd36SAdam Skladowski .regmap_cfg = &msm8937_pcnoc_regmap_config, 1269*755acd36SAdam Skladowski }; 1270*755acd36SAdam Skladowski 1271*755acd36SAdam Skladowski static struct qcom_icc_node *msm8937_snoc_nodes[] = { 1272*755acd36SAdam Skladowski [MAS_QDSS_BAM] = &mas_qdss_bam, 1273*755acd36SAdam Skladowski [MAS_BIMC_SNOC] = &mas_bimc_snoc, 1274*755acd36SAdam Skladowski [MAS_PCNOC_SNOC] = &mas_pcnoc_snoc, 1275*755acd36SAdam Skladowski [MAS_QDSS_ETR] = &mas_qdss_etr, 1276*755acd36SAdam Skladowski [QDSS_INT] = &qdss_int, 1277*755acd36SAdam Skladowski [SNOC_INT_0] = &snoc_int_0, 1278*755acd36SAdam Skladowski [SNOC_INT_1] = &snoc_int_1, 1279*755acd36SAdam Skladowski [SNOC_INT_2] = &snoc_int_2, 1280*755acd36SAdam Skladowski [SLV_KPSS_AHB] = &slv_kpss_ahb, 1281*755acd36SAdam Skladowski [SLV_WCSS] = &slv_wcss, 1282*755acd36SAdam Skladowski [SLV_SNOC_BIMC_1] = &slv_snoc_bimc_1, 1283*755acd36SAdam Skladowski [SLV_IMEM] = &slv_imem, 1284*755acd36SAdam Skladowski [SLV_SNOC_PCNOC] = &slv_snoc_pcnoc, 1285*755acd36SAdam Skladowski [SLV_QDSS_STM] = &slv_qdss_stm, 1286*755acd36SAdam Skladowski [SLV_CATS_1] = &slv_cats_1, 1287*755acd36SAdam Skladowski [SLV_LPASS] = &slv_lpass, 1288*755acd36SAdam Skladowski }; 1289*755acd36SAdam Skladowski 1290*755acd36SAdam Skladowski static const struct regmap_config msm8937_snoc_regmap_config = { 1291*755acd36SAdam Skladowski .reg_bits = 32, 1292*755acd36SAdam Skladowski .reg_stride = 4, 1293*755acd36SAdam Skladowski .val_bits = 32, 1294*755acd36SAdam Skladowski .max_register = 0x16080, 1295*755acd36SAdam Skladowski .fast_io = true, 1296*755acd36SAdam Skladowski }; 1297*755acd36SAdam Skladowski 1298*755acd36SAdam Skladowski static const struct qcom_icc_desc msm8937_snoc = { 1299*755acd36SAdam Skladowski .type = QCOM_ICC_NOC, 1300*755acd36SAdam Skladowski .nodes = msm8937_snoc_nodes, 1301*755acd36SAdam Skladowski .num_nodes = ARRAY_SIZE(msm8937_snoc_nodes), 1302*755acd36SAdam Skladowski .bus_clk_desc = &bus_1_clk, 1303*755acd36SAdam Skladowski .regmap_cfg = &msm8937_snoc_regmap_config, 1304*755acd36SAdam Skladowski .qos_offset = 0x7000, 1305*755acd36SAdam Skladowski }; 1306*755acd36SAdam Skladowski 1307*755acd36SAdam Skladowski static struct qcom_icc_node *msm8937_snoc_mm_nodes[] = { 1308*755acd36SAdam Skladowski [MAS_JPEG] = &mas_jpeg, 1309*755acd36SAdam Skladowski [MAS_MDP] = &mas_mdp, 1310*755acd36SAdam Skladowski [MAS_VENUS] = &mas_venus, 1311*755acd36SAdam Skladowski [MAS_VFE0] = &mas_vfe0, 1312*755acd36SAdam Skladowski [MAS_VFE1] = &mas_vfe1, 1313*755acd36SAdam Skladowski [MAS_CPP] = &mas_cpp, 1314*755acd36SAdam Skladowski [SLV_SNOC_BIMC_0] = &slv_snoc_bimc_0, 1315*755acd36SAdam Skladowski [SLV_SNOC_BIMC_2] = &slv_snoc_bimc_2, 1316*755acd36SAdam Skladowski [SLV_CATS_0] = &slv_cats_0, 1317*755acd36SAdam Skladowski }; 1318*755acd36SAdam Skladowski 1319*755acd36SAdam Skladowski static const struct qcom_icc_desc msm8937_snoc_mm = { 1320*755acd36SAdam Skladowski .type = QCOM_ICC_NOC, 1321*755acd36SAdam Skladowski .nodes = msm8937_snoc_mm_nodes, 1322*755acd36SAdam Skladowski .num_nodes = ARRAY_SIZE(msm8937_snoc_mm_nodes), 1323*755acd36SAdam Skladowski .bus_clk_desc = &bus_2_clk, 1324*755acd36SAdam Skladowski .regmap_cfg = &msm8937_snoc_regmap_config, 1325*755acd36SAdam Skladowski .qos_offset = 0x7000, 1326*755acd36SAdam Skladowski .ab_coeff = 154, 1327*755acd36SAdam Skladowski }; 1328*755acd36SAdam Skladowski 1329*755acd36SAdam Skladowski static const struct of_device_id msm8937_noc_of_match[] = { 1330*755acd36SAdam Skladowski { .compatible = "qcom,msm8937-bimc", .data = &msm8937_bimc }, 1331*755acd36SAdam Skladowski { .compatible = "qcom,msm8937-pcnoc", .data = &msm8937_pcnoc }, 1332*755acd36SAdam Skladowski { .compatible = "qcom,msm8937-snoc", .data = &msm8937_snoc }, 1333*755acd36SAdam Skladowski { .compatible = "qcom,msm8937-snoc-mm", .data = &msm8937_snoc_mm }, 1334*755acd36SAdam Skladowski { } 1335*755acd36SAdam Skladowski }; 1336*755acd36SAdam Skladowski MODULE_DEVICE_TABLE(of, msm8937_noc_of_match); 1337*755acd36SAdam Skladowski 1338*755acd36SAdam Skladowski static struct platform_driver msm8937_noc_driver = { 1339*755acd36SAdam Skladowski .probe = qnoc_probe, 1340*755acd36SAdam Skladowski .remove_new = qnoc_remove, 1341*755acd36SAdam Skladowski .driver = { 1342*755acd36SAdam Skladowski .name = "qnoc-msm8937", 1343*755acd36SAdam Skladowski .of_match_table = msm8937_noc_of_match, 1344*755acd36SAdam Skladowski .sync_state = icc_sync_state, 1345*755acd36SAdam Skladowski }, 1346*755acd36SAdam Skladowski }; 1347*755acd36SAdam Skladowski module_platform_driver(msm8937_noc_driver); 1348*755acd36SAdam Skladowski 1349*755acd36SAdam Skladowski MODULE_DESCRIPTION("Qualcomm MSM8937 NoC driver"); 1350*755acd36SAdam Skladowski MODULE_LICENSE("GPL"); 1351