File Index
Files and directories
Sign in
FILE

sdm660.c

File preview with syntax highlighting.

linux-6.19.14/drivers/interconnect/qcom/sdm660.c C
   1// SPDX-License-Identifier: GPL-2.0
   2/*
   3 * Qualcomm SDM630/SDM636/SDM660 Network-on-Chip (NoC) QoS driver
   4 * Copyright (C) 2020, AngeloGioacchino Del Regno <kholk11@gmail.com>
   5 */
   6
   7#include <dt-bindings/interconnect/qcom,sdm660.h>
   8#include <linux/device.h>
   9#include <linux/interconnect-provider.h>
  10#include <linux/io.h>
  11#include <linux/mod_devicetable.h>
  12#include <linux/module.h>
  13#include <linux/platform_device.h>
  14#include <linux/regmap.h>
  15#include <linux/slab.h>
  16
  17#include "icc-rpm.h"
  18
  19enum {
  20	SDM660_MASTER_IPA = 1,
  21	SDM660_MASTER_CNOC_A2NOC,
  22	SDM660_MASTER_SDCC_1,
  23	SDM660_MASTER_SDCC_2,
  24	SDM660_MASTER_BLSP_1,
  25	SDM660_MASTER_BLSP_2,
  26	SDM660_MASTER_UFS,
  27	SDM660_MASTER_USB_HS,
  28	SDM660_MASTER_USB3,
  29	SDM660_MASTER_CRYPTO_C0,
  30	SDM660_MASTER_GNOC_BIMC,
  31	SDM660_MASTER_OXILI,
  32	SDM660_MASTER_MNOC_BIMC,
  33	SDM660_MASTER_SNOC_BIMC,
  34	SDM660_MASTER_PIMEM,
  35	SDM660_MASTER_SNOC_CNOC,
  36	SDM660_MASTER_QDSS_DAP,
  37	SDM660_MASTER_APPS_PROC,
  38	SDM660_MASTER_CNOC_MNOC_MMSS_CFG,
  39	SDM660_MASTER_CNOC_MNOC_CFG,
  40	SDM660_MASTER_CPP,
  41	SDM660_MASTER_JPEG,
  42	SDM660_MASTER_MDP_P0,
  43	SDM660_MASTER_MDP_P1,
  44	SDM660_MASTER_VENUS,
  45	SDM660_MASTER_VFE,
  46	SDM660_MASTER_QDSS_ETR,
  47	SDM660_MASTER_QDSS_BAM,
  48	SDM660_MASTER_SNOC_CFG,
  49	SDM660_MASTER_BIMC_SNOC,
  50	SDM660_MASTER_A2NOC_SNOC,
  51	SDM660_MASTER_GNOC_SNOC,
  52
  53	SDM660_SLAVE_A2NOC_SNOC,
  54	SDM660_SLAVE_EBI,
  55	SDM660_SLAVE_HMSS_L3,
  56	SDM660_SLAVE_BIMC_SNOC,
  57	SDM660_SLAVE_CNOC_A2NOC,
  58	SDM660_SLAVE_MPM,
  59	SDM660_SLAVE_PMIC_ARB,
  60	SDM660_SLAVE_TLMM_NORTH,
  61	SDM660_SLAVE_TCSR,
  62	SDM660_SLAVE_PIMEM_CFG,
  63	SDM660_SLAVE_IMEM_CFG,
  64	SDM660_SLAVE_MESSAGE_RAM,
  65	SDM660_SLAVE_GLM,
  66	SDM660_SLAVE_BIMC_CFG,
  67	SDM660_SLAVE_PRNG,
  68	SDM660_SLAVE_SPDM,
  69	SDM660_SLAVE_QDSS_CFG,
  70	SDM660_SLAVE_CNOC_MNOC_CFG,
  71	SDM660_SLAVE_SNOC_CFG,
  72	SDM660_SLAVE_QM_CFG,
  73	SDM660_SLAVE_CLK_CTL,
  74	SDM660_SLAVE_MSS_CFG,
  75	SDM660_SLAVE_TLMM_SOUTH,
  76	SDM660_SLAVE_UFS_CFG,
  77	SDM660_SLAVE_A2NOC_CFG,
  78	SDM660_SLAVE_A2NOC_SMMU_CFG,
  79	SDM660_SLAVE_GPUSS_CFG,
  80	SDM660_SLAVE_AHB2PHY,
  81	SDM660_SLAVE_BLSP_1,
  82	SDM660_SLAVE_SDCC_1,
  83	SDM660_SLAVE_SDCC_2,
  84	SDM660_SLAVE_TLMM_CENTER,
  85	SDM660_SLAVE_BLSP_2,
  86	SDM660_SLAVE_PDM,
  87	SDM660_SLAVE_CNOC_MNOC_MMSS_CFG,
  88	SDM660_SLAVE_USB_HS,
  89	SDM660_SLAVE_USB3_0,
  90	SDM660_SLAVE_SRVC_CNOC,
  91	SDM660_SLAVE_GNOC_BIMC,
  92	SDM660_SLAVE_GNOC_SNOC,
  93	SDM660_SLAVE_CAMERA_CFG,
  94	SDM660_SLAVE_CAMERA_THROTTLE_CFG,
  95	SDM660_SLAVE_MISC_CFG,
  96	SDM660_SLAVE_VENUS_THROTTLE_CFG,
  97	SDM660_SLAVE_VENUS_CFG,
  98	SDM660_SLAVE_MMSS_CLK_XPU_CFG,
  99	SDM660_SLAVE_MMSS_CLK_CFG,
 100	SDM660_SLAVE_MNOC_MPU_CFG,
 101	SDM660_SLAVE_DISPLAY_CFG,
 102	SDM660_SLAVE_CSI_PHY_CFG,
 103	SDM660_SLAVE_DISPLAY_THROTTLE_CFG,
 104	SDM660_SLAVE_SMMU_CFG,
 105	SDM660_SLAVE_MNOC_BIMC,
 106	SDM660_SLAVE_SRVC_MNOC,
 107	SDM660_SLAVE_HMSS,
 108	SDM660_SLAVE_LPASS,
 109	SDM660_SLAVE_WLAN,
 110	SDM660_SLAVE_CDSP,
 111	SDM660_SLAVE_IPA,
 112	SDM660_SLAVE_SNOC_BIMC,
 113	SDM660_SLAVE_SNOC_CNOC,
 114	SDM660_SLAVE_IMEM,
 115	SDM660_SLAVE_PIMEM,
 116	SDM660_SLAVE_QDSS_STM,
 117	SDM660_SLAVE_SRVC_SNOC,
 118
 119	SDM660_A2NOC,
 120	SDM660_BIMC,
 121	SDM660_CNOC,
 122	SDM660_GNOC,
 123	SDM660_MNOC,
 124	SDM660_SNOC,
 125};
 126
 127static const char * const mm_intf_clocks[] = {
 128	"iface",
 129};
 130
 131static const char * const a2noc_intf_clocks[] = {
 132	"ipa",
 133	"ufs_axi",
 134	"aggre2_ufs_axi",
 135	"aggre2_usb3_axi",
 136	"cfg_noc_usb2_axi",
 137};
 138
 139static const u16 mas_ipa_links[] = {
 140	SDM660_SLAVE_A2NOC_SNOC
 141};
 142
 143static struct qcom_icc_node mas_ipa = {
 144	.name = "mas_ipa",
 145	.id = SDM660_MASTER_IPA,
 146	.buswidth = 8,
 147	.mas_rpm_id = 59,
 148	.slv_rpm_id = -1,
 149	.qos.ap_owned = true,
 150	.qos.qos_mode = NOC_QOS_MODE_FIXED,
 151	.qos.areq_prio = 1,
 152	.qos.prio_level = 1,
 153	.qos.qos_port = 3,
 154	.num_links = ARRAY_SIZE(mas_ipa_links),
 155	.links = mas_ipa_links,
 156};
 157
 158static const u16 mas_cnoc_a2noc_links[] = {
 159	SDM660_SLAVE_A2NOC_SNOC
 160};
 161
 162static struct qcom_icc_node mas_cnoc_a2noc = {
 163	.name = "mas_cnoc_a2noc",
 164	.id = SDM660_MASTER_CNOC_A2NOC,
 165	.buswidth = 8,
 166	.mas_rpm_id = 146,
 167	.slv_rpm_id = -1,
 168	.qos.ap_owned = true,
 169	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 170	.num_links = ARRAY_SIZE(mas_cnoc_a2noc_links),
 171	.links = mas_cnoc_a2noc_links,
 172};
 173
 174static const u16 mas_sdcc_1_links[] = {
 175	SDM660_SLAVE_A2NOC_SNOC
 176};
 177
 178static struct qcom_icc_node mas_sdcc_1 = {
 179	.name = "mas_sdcc_1",
 180	.id = SDM660_MASTER_SDCC_1,
 181	.buswidth = 8,
 182	.mas_rpm_id = 33,
 183	.slv_rpm_id = -1,
 184	.num_links = ARRAY_SIZE(mas_sdcc_1_links),
 185	.links = mas_sdcc_1_links,
 186};
 187
 188static const u16 mas_sdcc_2_links[] = {
 189	SDM660_SLAVE_A2NOC_SNOC
 190};
 191
 192static struct qcom_icc_node mas_sdcc_2 = {
 193	.name = "mas_sdcc_2",
 194	.id = SDM660_MASTER_SDCC_2,
 195	.buswidth = 8,
 196	.mas_rpm_id = 35,
 197	.slv_rpm_id = -1,
 198	.num_links = ARRAY_SIZE(mas_sdcc_2_links),
 199	.links = mas_sdcc_2_links,
 200};
 201
 202static const u16 mas_blsp_1_links[] = {
 203	SDM660_SLAVE_A2NOC_SNOC
 204};
 205
 206static struct qcom_icc_node mas_blsp_1 = {
 207	.name = "mas_blsp_1",
 208	.id = SDM660_MASTER_BLSP_1,
 209	.buswidth = 4,
 210	.mas_rpm_id = 41,
 211	.slv_rpm_id = -1,
 212	.num_links = ARRAY_SIZE(mas_blsp_1_links),
 213	.links = mas_blsp_1_links,
 214};
 215
 216static const u16 mas_blsp_2_links[] = {
 217	SDM660_SLAVE_A2NOC_SNOC
 218};
 219
 220static struct qcom_icc_node mas_blsp_2 = {
 221	.name = "mas_blsp_2",
 222	.id = SDM660_MASTER_BLSP_2,
 223	.buswidth = 4,
 224	.mas_rpm_id = 39,
 225	.slv_rpm_id = -1,
 226	.num_links = ARRAY_SIZE(mas_blsp_2_links),
 227	.links = mas_blsp_2_links,
 228};
 229
 230static const u16 mas_ufs_links[] = {
 231	SDM660_SLAVE_A2NOC_SNOC
 232};
 233
 234static struct qcom_icc_node mas_ufs = {
 235	.name = "mas_ufs",
 236	.id = SDM660_MASTER_UFS,
 237	.buswidth = 8,
 238	.mas_rpm_id = 68,
 239	.slv_rpm_id = -1,
 240	.qos.ap_owned = true,
 241	.qos.qos_mode = NOC_QOS_MODE_FIXED,
 242	.qos.areq_prio = 1,
 243	.qos.prio_level = 1,
 244	.qos.qos_port = 4,
 245	.num_links = ARRAY_SIZE(mas_ufs_links),
 246	.links = mas_ufs_links,
 247};
 248
 249static const u16 mas_usb_hs_links[] = {
 250	SDM660_SLAVE_A2NOC_SNOC
 251};
 252
 253static struct qcom_icc_node mas_usb_hs = {
 254	.name = "mas_usb_hs",
 255	.id = SDM660_MASTER_USB_HS,
 256	.buswidth = 8,
 257	.mas_rpm_id = 42,
 258	.slv_rpm_id = -1,
 259	.qos.ap_owned = true,
 260	.qos.qos_mode = NOC_QOS_MODE_FIXED,
 261	.qos.areq_prio = 1,
 262	.qos.prio_level = 1,
 263	.qos.qos_port = 1,
 264	.num_links = ARRAY_SIZE(mas_usb_hs_links),
 265	.links = mas_usb_hs_links,
 266};
 267
 268static const u16 mas_usb3_links[] = {
 269	SDM660_SLAVE_A2NOC_SNOC
 270};
 271
 272static struct qcom_icc_node mas_usb3 = {
 273	.name = "mas_usb3",
 274	.id = SDM660_MASTER_USB3,
 275	.buswidth = 8,
 276	.mas_rpm_id = 32,
 277	.slv_rpm_id = -1,
 278	.qos.ap_owned = true,
 279	.qos.qos_mode = NOC_QOS_MODE_FIXED,
 280	.qos.areq_prio = 1,
 281	.qos.prio_level = 1,
 282	.qos.qos_port = 2,
 283	.num_links = ARRAY_SIZE(mas_usb3_links),
 284	.links = mas_usb3_links,
 285};
 286
 287static const u16 mas_crypto_links[] = {
 288	SDM660_SLAVE_A2NOC_SNOC
 289};
 290
 291static struct qcom_icc_node mas_crypto = {
 292	.name = "mas_crypto",
 293	.id = SDM660_MASTER_CRYPTO_C0,
 294	.buswidth = 8,
 295	.mas_rpm_id = 23,
 296	.slv_rpm_id = -1,
 297	.qos.ap_owned = true,
 298	.qos.qos_mode = NOC_QOS_MODE_FIXED,
 299	.qos.areq_prio = 1,
 300	.qos.prio_level = 1,
 301	.qos.qos_port = 11,
 302	.num_links = ARRAY_SIZE(mas_crypto_links),
 303	.links = mas_crypto_links,
 304};
 305
 306static const u16 mas_gnoc_bimc_links[] = {
 307	SDM660_SLAVE_EBI
 308};
 309
 310static struct qcom_icc_node mas_gnoc_bimc = {
 311	.name = "mas_gnoc_bimc",
 312	.id = SDM660_MASTER_GNOC_BIMC,
 313	.buswidth = 4,
 314	.mas_rpm_id = 144,
 315	.slv_rpm_id = -1,
 316	.qos.ap_owned = true,
 317	.qos.qos_mode = NOC_QOS_MODE_FIXED,
 318	.qos.areq_prio = 0,
 319	.qos.prio_level = 0,
 320	.qos.qos_port = 0,
 321	.num_links = ARRAY_SIZE(mas_gnoc_bimc_links),
 322	.links = mas_gnoc_bimc_links,
 323};
 324
 325static const u16 mas_oxili_links[] = {
 326	SDM660_SLAVE_HMSS_L3,
 327	SDM660_SLAVE_EBI,
 328	SDM660_SLAVE_BIMC_SNOC
 329};
 330
 331static struct qcom_icc_node mas_oxili = {
 332	.name = "mas_oxili",
 333	.id = SDM660_MASTER_OXILI,
 334	.buswidth = 4,
 335	.mas_rpm_id = 6,
 336	.slv_rpm_id = -1,
 337	.qos.ap_owned = true,
 338	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
 339	.qos.areq_prio = 0,
 340	.qos.prio_level = 0,
 341	.qos.qos_port = 1,
 342	.num_links = ARRAY_SIZE(mas_oxili_links),
 343	.links = mas_oxili_links,
 344};
 345
 346static const u16 mas_mnoc_bimc_links[] = {
 347	SDM660_SLAVE_HMSS_L3,
 348	SDM660_SLAVE_EBI,
 349	SDM660_SLAVE_BIMC_SNOC
 350};
 351
 352static struct qcom_icc_node mas_mnoc_bimc = {
 353	.name = "mas_mnoc_bimc",
 354	.id = SDM660_MASTER_MNOC_BIMC,
 355	.buswidth = 4,
 356	.mas_rpm_id = 2,
 357	.slv_rpm_id = -1,
 358	.qos.ap_owned = true,
 359	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
 360	.qos.areq_prio = 0,
 361	.qos.prio_level = 0,
 362	.qos.qos_port = 2,
 363	.num_links = ARRAY_SIZE(mas_mnoc_bimc_links),
 364	.links = mas_mnoc_bimc_links,
 365};
 366
 367static const u16 mas_snoc_bimc_links[] = {
 368	SDM660_SLAVE_HMSS_L3,
 369	SDM660_SLAVE_EBI
 370};
 371
 372static struct qcom_icc_node mas_snoc_bimc = {
 373	.name = "mas_snoc_bimc",
 374	.id = SDM660_MASTER_SNOC_BIMC,
 375	.buswidth = 4,
 376	.mas_rpm_id = 3,
 377	.slv_rpm_id = -1,
 378	.num_links = ARRAY_SIZE(mas_snoc_bimc_links),
 379	.links = mas_snoc_bimc_links,
 380};
 381
 382static const u16 mas_pimem_links[] = {
 383	SDM660_SLAVE_HMSS_L3,
 384	SDM660_SLAVE_EBI
 385};
 386
 387static struct qcom_icc_node mas_pimem = {
 388	.name = "mas_pimem",
 389	.id = SDM660_MASTER_PIMEM,
 390	.buswidth = 4,
 391	.mas_rpm_id = 113,
 392	.slv_rpm_id = -1,
 393	.qos.ap_owned = true,
 394	.qos.qos_mode = NOC_QOS_MODE_FIXED,
 395	.qos.areq_prio = 1,
 396	.qos.prio_level = 1,
 397	.qos.qos_port = 4,
 398	.num_links = ARRAY_SIZE(mas_pimem_links),
 399	.links = mas_pimem_links,
 400};
 401
 402static const u16 mas_snoc_cnoc_links[] = {
 403	SDM660_SLAVE_CLK_CTL,
 404	SDM660_SLAVE_QDSS_CFG,
 405	SDM660_SLAVE_QM_CFG,
 406	SDM660_SLAVE_SRVC_CNOC,
 407	SDM660_SLAVE_UFS_CFG,
 408	SDM660_SLAVE_TCSR,
 409	SDM660_SLAVE_A2NOC_SMMU_CFG,
 410	SDM660_SLAVE_SNOC_CFG,
 411	SDM660_SLAVE_TLMM_SOUTH,
 412	SDM660_SLAVE_MPM,
 413	SDM660_SLAVE_CNOC_MNOC_MMSS_CFG,
 414	SDM660_SLAVE_SDCC_2,
 415	SDM660_SLAVE_SDCC_1,
 416	SDM660_SLAVE_SPDM,
 417	SDM660_SLAVE_PMIC_ARB,
 418	SDM660_SLAVE_PRNG,
 419	SDM660_SLAVE_MSS_CFG,
 420	SDM660_SLAVE_GPUSS_CFG,
 421	SDM660_SLAVE_IMEM_CFG,
 422	SDM660_SLAVE_USB3_0,
 423	SDM660_SLAVE_A2NOC_CFG,
 424	SDM660_SLAVE_TLMM_NORTH,
 425	SDM660_SLAVE_USB_HS,
 426	SDM660_SLAVE_PDM,
 427	SDM660_SLAVE_TLMM_CENTER,
 428	SDM660_SLAVE_AHB2PHY,
 429	SDM660_SLAVE_BLSP_2,
 430	SDM660_SLAVE_BLSP_1,
 431	SDM660_SLAVE_PIMEM_CFG,
 432	SDM660_SLAVE_GLM,
 433	SDM660_SLAVE_MESSAGE_RAM,
 434	SDM660_SLAVE_BIMC_CFG,
 435	SDM660_SLAVE_CNOC_MNOC_CFG
 436};
 437
 438static struct qcom_icc_node mas_snoc_cnoc = {
 439	.name = "mas_snoc_cnoc",
 440	.id = SDM660_MASTER_SNOC_CNOC,
 441	.buswidth = 8,
 442	.mas_rpm_id = 52,
 443	.slv_rpm_id = -1,
 444	.qos.ap_owned = true,
 445	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 446	.num_links = ARRAY_SIZE(mas_snoc_cnoc_links),
 447	.links = mas_snoc_cnoc_links,
 448};
 449
 450static const u16 mas_qdss_dap_links[] = {
 451	SDM660_SLAVE_CLK_CTL,
 452	SDM660_SLAVE_QDSS_CFG,
 453	SDM660_SLAVE_QM_CFG,
 454	SDM660_SLAVE_SRVC_CNOC,
 455	SDM660_SLAVE_UFS_CFG,
 456	SDM660_SLAVE_TCSR,
 457	SDM660_SLAVE_A2NOC_SMMU_CFG,
 458	SDM660_SLAVE_SNOC_CFG,
 459	SDM660_SLAVE_TLMM_SOUTH,
 460	SDM660_SLAVE_MPM,
 461	SDM660_SLAVE_CNOC_MNOC_MMSS_CFG,
 462	SDM660_SLAVE_SDCC_2,
 463	SDM660_SLAVE_SDCC_1,
 464	SDM660_SLAVE_SPDM,
 465	SDM660_SLAVE_PMIC_ARB,
 466	SDM660_SLAVE_PRNG,
 467	SDM660_SLAVE_MSS_CFG,
 468	SDM660_SLAVE_GPUSS_CFG,
 469	SDM660_SLAVE_IMEM_CFG,
 470	SDM660_SLAVE_USB3_0,
 471	SDM660_SLAVE_A2NOC_CFG,
 472	SDM660_SLAVE_TLMM_NORTH,
 473	SDM660_SLAVE_USB_HS,
 474	SDM660_SLAVE_PDM,
 475	SDM660_SLAVE_TLMM_CENTER,
 476	SDM660_SLAVE_AHB2PHY,
 477	SDM660_SLAVE_BLSP_2,
 478	SDM660_SLAVE_BLSP_1,
 479	SDM660_SLAVE_PIMEM_CFG,
 480	SDM660_SLAVE_GLM,
 481	SDM660_SLAVE_MESSAGE_RAM,
 482	SDM660_SLAVE_CNOC_A2NOC,
 483	SDM660_SLAVE_BIMC_CFG,
 484	SDM660_SLAVE_CNOC_MNOC_CFG
 485};
 486
 487static struct qcom_icc_node mas_qdss_dap = {
 488	.name = "mas_qdss_dap",
 489	.id = SDM660_MASTER_QDSS_DAP,
 490	.buswidth = 8,
 491	.mas_rpm_id = 49,
 492	.slv_rpm_id = -1,
 493	.qos.ap_owned = true,
 494	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 495	.num_links = ARRAY_SIZE(mas_qdss_dap_links),
 496	.links = mas_qdss_dap_links,
 497};
 498
 499static const u16 mas_apss_proc_links[] = {
 500	SDM660_SLAVE_GNOC_SNOC,
 501	SDM660_SLAVE_GNOC_BIMC
 502};
 503
 504static struct qcom_icc_node mas_apss_proc = {
 505	.name = "mas_apss_proc",
 506	.id = SDM660_MASTER_APPS_PROC,
 507	.buswidth = 16,
 508	.mas_rpm_id = 0,
 509	.slv_rpm_id = -1,
 510	.qos.ap_owned = true,
 511	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 512	.num_links = ARRAY_SIZE(mas_apss_proc_links),
 513	.links = mas_apss_proc_links,
 514};
 515
 516static const u16 mas_cnoc_mnoc_mmss_cfg_links[] = {
 517	SDM660_SLAVE_VENUS_THROTTLE_CFG,
 518	SDM660_SLAVE_VENUS_CFG,
 519	SDM660_SLAVE_CAMERA_THROTTLE_CFG,
 520	SDM660_SLAVE_SMMU_CFG,
 521	SDM660_SLAVE_CAMERA_CFG,
 522	SDM660_SLAVE_CSI_PHY_CFG,
 523	SDM660_SLAVE_DISPLAY_THROTTLE_CFG,
 524	SDM660_SLAVE_DISPLAY_CFG,
 525	SDM660_SLAVE_MMSS_CLK_CFG,
 526	SDM660_SLAVE_MNOC_MPU_CFG,
 527	SDM660_SLAVE_MISC_CFG,
 528	SDM660_SLAVE_MMSS_CLK_XPU_CFG
 529};
 530
 531static struct qcom_icc_node mas_cnoc_mnoc_mmss_cfg = {
 532	.name = "mas_cnoc_mnoc_mmss_cfg",
 533	.id = SDM660_MASTER_CNOC_MNOC_MMSS_CFG,
 534	.buswidth = 8,
 535	.mas_rpm_id = 4,
 536	.slv_rpm_id = -1,
 537	.qos.ap_owned = true,
 538	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 539	.num_links = ARRAY_SIZE(mas_cnoc_mnoc_mmss_cfg_links),
 540	.links = mas_cnoc_mnoc_mmss_cfg_links,
 541};
 542
 543static const u16 mas_cnoc_mnoc_cfg_links[] = {
 544	SDM660_SLAVE_SRVC_MNOC
 545};
 546
 547static struct qcom_icc_node mas_cnoc_mnoc_cfg = {
 548	.name = "mas_cnoc_mnoc_cfg",
 549	.id = SDM660_MASTER_CNOC_MNOC_CFG,
 550	.buswidth = 4,
 551	.mas_rpm_id = 5,
 552	.slv_rpm_id = -1,
 553	.qos.ap_owned = true,
 554	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 555	.num_links = ARRAY_SIZE(mas_cnoc_mnoc_cfg_links),
 556	.links = mas_cnoc_mnoc_cfg_links,
 557};
 558
 559static const u16 mas_cpp_links[] = {
 560	SDM660_SLAVE_MNOC_BIMC
 561};
 562
 563static struct qcom_icc_node mas_cpp = {
 564	.name = "mas_cpp",
 565	.id = SDM660_MASTER_CPP,
 566	.buswidth = 16,
 567	.mas_rpm_id = 115,
 568	.slv_rpm_id = -1,
 569	.qos.ap_owned = true,
 570	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
 571	.qos.areq_prio = 0,
 572	.qos.prio_level = 0,
 573	.qos.qos_port = 4,
 574	.num_links = ARRAY_SIZE(mas_cpp_links),
 575	.links = mas_cpp_links,
 576};
 577
 578static const u16 mas_jpeg_links[] = {
 579	SDM660_SLAVE_MNOC_BIMC
 580};
 581
 582static struct qcom_icc_node mas_jpeg = {
 583	.name = "mas_jpeg",
 584	.id = SDM660_MASTER_JPEG,
 585	.buswidth = 16,
 586	.mas_rpm_id = 7,
 587	.slv_rpm_id = -1,
 588	.qos.ap_owned = true,
 589	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
 590	.qos.areq_prio = 0,
 591	.qos.prio_level = 0,
 592	.qos.qos_port = 6,
 593	.num_links = ARRAY_SIZE(mas_jpeg_links),
 594	.links = mas_jpeg_links,
 595};
 596
 597static const u16 mas_mdp_p0_links[] = {
 598	SDM660_SLAVE_MNOC_BIMC
 599};
 600
 601static struct qcom_icc_node mas_mdp_p0 = {
 602	.name = "mas_mdp_p0",
 603	.id = SDM660_MASTER_MDP_P0,
 604	.buswidth = 16,
 605	.ib_coeff = 50,
 606	.mas_rpm_id = 8,
 607	.slv_rpm_id = -1,
 608	.qos.ap_owned = true,
 609	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
 610	.qos.areq_prio = 0,
 611	.qos.prio_level = 0,
 612	.qos.qos_port = 0,
 613	.num_links = ARRAY_SIZE(mas_mdp_p0_links),
 614	.links = mas_mdp_p0_links,
 615};
 616
 617static const u16 mas_mdp_p1_links[] = {
 618	SDM660_SLAVE_MNOC_BIMC
 619};
 620
 621static struct qcom_icc_node mas_mdp_p1 = {
 622	.name = "mas_mdp_p1",
 623	.id = SDM660_MASTER_MDP_P1,
 624	.buswidth = 16,
 625	.ib_coeff = 50,
 626	.mas_rpm_id = 61,
 627	.slv_rpm_id = -1,
 628	.qos.ap_owned = true,
 629	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
 630	.qos.areq_prio = 0,
 631	.qos.prio_level = 0,
 632	.qos.qos_port = 1,
 633	.num_links = ARRAY_SIZE(mas_mdp_p1_links),
 634	.links = mas_mdp_p1_links,
 635};
 636
 637static const u16 mas_venus_links[] = {
 638	SDM660_SLAVE_MNOC_BIMC
 639};
 640
 641static struct qcom_icc_node mas_venus = {
 642	.name = "mas_venus",
 643	.id = SDM660_MASTER_VENUS,
 644	.buswidth = 16,
 645	.mas_rpm_id = 9,
 646	.slv_rpm_id = -1,
 647	.qos.ap_owned = true,
 648	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
 649	.qos.areq_prio = 0,
 650	.qos.prio_level = 0,
 651	.qos.qos_port = 1,
 652	.num_links = ARRAY_SIZE(mas_venus_links),
 653	.links = mas_venus_links,
 654};
 655
 656static const u16 mas_vfe_links[] = {
 657	SDM660_SLAVE_MNOC_BIMC
 658};
 659
 660static struct qcom_icc_node mas_vfe = {
 661	.name = "mas_vfe",
 662	.id = SDM660_MASTER_VFE,
 663	.buswidth = 16,
 664	.mas_rpm_id = 11,
 665	.slv_rpm_id = -1,
 666	.qos.ap_owned = true,
 667	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
 668	.qos.areq_prio = 0,
 669	.qos.prio_level = 0,
 670	.qos.qos_port = 5,
 671	.num_links = ARRAY_SIZE(mas_vfe_links),
 672	.links = mas_vfe_links,
 673};
 674
 675static const u16 mas_qdss_etr_links[] = {
 676	SDM660_SLAVE_PIMEM,
 677	SDM660_SLAVE_IMEM,
 678	SDM660_SLAVE_SNOC_CNOC,
 679	SDM660_SLAVE_SNOC_BIMC
 680};
 681
 682static struct qcom_icc_node mas_qdss_etr = {
 683	.name = "mas_qdss_etr",
 684	.id = SDM660_MASTER_QDSS_ETR,
 685	.buswidth = 8,
 686	.mas_rpm_id = 31,
 687	.slv_rpm_id = -1,
 688	.qos.ap_owned = true,
 689	.qos.qos_mode = NOC_QOS_MODE_FIXED,
 690	.qos.areq_prio = 1,
 691	.qos.prio_level = 1,
 692	.qos.qos_port = 1,
 693	.num_links = ARRAY_SIZE(mas_qdss_etr_links),
 694	.links = mas_qdss_etr_links,
 695};
 696
 697static const u16 mas_qdss_bam_links[] = {
 698	SDM660_SLAVE_PIMEM,
 699	SDM660_SLAVE_IMEM,
 700	SDM660_SLAVE_SNOC_CNOC,
 701	SDM660_SLAVE_SNOC_BIMC
 702};
 703
 704static struct qcom_icc_node mas_qdss_bam = {
 705	.name = "mas_qdss_bam",
 706	.id = SDM660_MASTER_QDSS_BAM,
 707	.buswidth = 4,
 708	.mas_rpm_id = 19,
 709	.slv_rpm_id = -1,
 710	.qos.ap_owned = true,
 711	.qos.qos_mode = NOC_QOS_MODE_FIXED,
 712	.qos.areq_prio = 1,
 713	.qos.prio_level = 1,
 714	.qos.qos_port = 0,
 715	.num_links = ARRAY_SIZE(mas_qdss_bam_links),
 716	.links = mas_qdss_bam_links,
 717};
 718
 719static const u16 mas_snoc_cfg_links[] = {
 720	SDM660_SLAVE_SRVC_SNOC
 721};
 722
 723static struct qcom_icc_node mas_snoc_cfg = {
 724	.name = "mas_snoc_cfg",
 725	.id = SDM660_MASTER_SNOC_CFG,
 726	.buswidth = 4,
 727	.mas_rpm_id = 20,
 728	.slv_rpm_id = -1,
 729	.num_links = ARRAY_SIZE(mas_snoc_cfg_links),
 730	.links = mas_snoc_cfg_links,
 731};
 732
 733static const u16 mas_bimc_snoc_links[] = {
 734	SDM660_SLAVE_PIMEM,
 735	SDM660_SLAVE_IPA,
 736	SDM660_SLAVE_QDSS_STM,
 737	SDM660_SLAVE_LPASS,
 738	SDM660_SLAVE_HMSS,
 739	SDM660_SLAVE_CDSP,
 740	SDM660_SLAVE_SNOC_CNOC,
 741	SDM660_SLAVE_WLAN,
 742	SDM660_SLAVE_IMEM
 743};
 744
 745static struct qcom_icc_node mas_bimc_snoc = {
 746	.name = "mas_bimc_snoc",
 747	.id = SDM660_MASTER_BIMC_SNOC,
 748	.buswidth = 8,
 749	.mas_rpm_id = 21,
 750	.slv_rpm_id = -1,
 751	.num_links = ARRAY_SIZE(mas_bimc_snoc_links),
 752	.links = mas_bimc_snoc_links,
 753};
 754
 755static const u16 mas_gnoc_snoc_links[] = {
 756	SDM660_SLAVE_PIMEM,
 757	SDM660_SLAVE_IPA,
 758	SDM660_SLAVE_QDSS_STM,
 759	SDM660_SLAVE_LPASS,
 760	SDM660_SLAVE_HMSS,
 761	SDM660_SLAVE_CDSP,
 762	SDM660_SLAVE_SNOC_CNOC,
 763	SDM660_SLAVE_WLAN,
 764	SDM660_SLAVE_IMEM
 765};
 766
 767static struct qcom_icc_node mas_gnoc_snoc = {
 768	.name = "mas_gnoc_snoc",
 769	.id = SDM660_MASTER_GNOC_SNOC,
 770	.buswidth = 8,
 771	.mas_rpm_id = 150,
 772	.slv_rpm_id = -1,
 773	.num_links = ARRAY_SIZE(mas_gnoc_snoc_links),
 774	.links = mas_gnoc_snoc_links,
 775};
 776
 777static const u16 mas_a2noc_snoc_links[] = {
 778	SDM660_SLAVE_PIMEM,
 779	SDM660_SLAVE_IPA,
 780	SDM660_SLAVE_QDSS_STM,
 781	SDM660_SLAVE_LPASS,
 782	SDM660_SLAVE_HMSS,
 783	SDM660_SLAVE_SNOC_BIMC,
 784	SDM660_SLAVE_CDSP,
 785	SDM660_SLAVE_SNOC_CNOC,
 786	SDM660_SLAVE_WLAN,
 787	SDM660_SLAVE_IMEM
 788};
 789
 790static struct qcom_icc_node mas_a2noc_snoc = {
 791	.name = "mas_a2noc_snoc",
 792	.id = SDM660_MASTER_A2NOC_SNOC,
 793	.buswidth = 16,
 794	.mas_rpm_id = 112,
 795	.slv_rpm_id = -1,
 796	.num_links = ARRAY_SIZE(mas_a2noc_snoc_links),
 797	.links = mas_a2noc_snoc_links,
 798};
 799
 800static const u16 slv_a2noc_snoc_links[] = {
 801	SDM660_MASTER_A2NOC_SNOC
 802};
 803
 804static struct qcom_icc_node slv_a2noc_snoc = {
 805	.name = "slv_a2noc_snoc",
 806	.id = SDM660_SLAVE_A2NOC_SNOC,
 807	.buswidth = 16,
 808	.mas_rpm_id = -1,
 809	.slv_rpm_id = 143,
 810	.num_links = ARRAY_SIZE(slv_a2noc_snoc_links),
 811	.links = slv_a2noc_snoc_links,
 812};
 813
 814static struct qcom_icc_node slv_ebi = {
 815	.name = "slv_ebi",
 816	.id = SDM660_SLAVE_EBI,
 817	.buswidth = 4,
 818	.mas_rpm_id = -1,
 819	.slv_rpm_id = 0,
 820};
 821
 822static struct qcom_icc_node slv_hmss_l3 = {
 823	.name = "slv_hmss_l3",
 824	.id = SDM660_SLAVE_HMSS_L3,
 825	.buswidth = 4,
 826	.mas_rpm_id = -1,
 827	.slv_rpm_id = 160,
 828};
 829
 830static const u16 slv_bimc_snoc_links[] = {
 831	SDM660_MASTER_BIMC_SNOC
 832};
 833
 834static struct qcom_icc_node slv_bimc_snoc = {
 835	.name = "slv_bimc_snoc",
 836	.id = SDM660_SLAVE_BIMC_SNOC,
 837	.buswidth = 4,
 838	.mas_rpm_id = -1,
 839	.slv_rpm_id = 2,
 840	.num_links = ARRAY_SIZE(slv_bimc_snoc_links),
 841	.links = slv_bimc_snoc_links,
 842};
 843
 844static const u16 slv_cnoc_a2noc_links[] = {
 845	SDM660_MASTER_CNOC_A2NOC
 846};
 847
 848static struct qcom_icc_node slv_cnoc_a2noc = {
 849	.name = "slv_cnoc_a2noc",
 850	.id = SDM660_SLAVE_CNOC_A2NOC,
 851	.buswidth = 8,
 852	.mas_rpm_id = -1,
 853	.slv_rpm_id = 208,
 854	.qos.ap_owned = true,
 855	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 856	.num_links = ARRAY_SIZE(slv_cnoc_a2noc_links),
 857	.links = slv_cnoc_a2noc_links,
 858};
 859
 860static struct qcom_icc_node slv_mpm = {
 861	.name = "slv_mpm",
 862	.id = SDM660_SLAVE_MPM,
 863	.buswidth = 4,
 864	.mas_rpm_id = -1,
 865	.slv_rpm_id = 62,
 866	.qos.ap_owned = true,
 867	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 868};
 869
 870static struct qcom_icc_node slv_pmic_arb = {
 871	.name = "slv_pmic_arb",
 872	.id = SDM660_SLAVE_PMIC_ARB,
 873	.buswidth = 4,
 874	.mas_rpm_id = -1,
 875	.slv_rpm_id = 59,
 876	.qos.ap_owned = true,
 877	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 878};
 879
 880static struct qcom_icc_node slv_tlmm_north = {
 881	.name = "slv_tlmm_north",
 882	.id = SDM660_SLAVE_TLMM_NORTH,
 883	.buswidth = 8,
 884	.mas_rpm_id = -1,
 885	.slv_rpm_id = 214,
 886	.qos.ap_owned = true,
 887	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 888};
 889
 890static struct qcom_icc_node slv_tcsr = {
 891	.name = "slv_tcsr",
 892	.id = SDM660_SLAVE_TCSR,
 893	.buswidth = 4,
 894	.mas_rpm_id = -1,
 895	.slv_rpm_id = 50,
 896	.qos.ap_owned = true,
 897	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 898};
 899
 900static struct qcom_icc_node slv_pimem_cfg = {
 901	.name = "slv_pimem_cfg",
 902	.id = SDM660_SLAVE_PIMEM_CFG,
 903	.buswidth = 4,
 904	.mas_rpm_id = -1,
 905	.slv_rpm_id = 167,
 906	.qos.ap_owned = true,
 907	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 908};
 909
 910static struct qcom_icc_node slv_imem_cfg = {
 911	.name = "slv_imem_cfg",
 912	.id = SDM660_SLAVE_IMEM_CFG,
 913	.buswidth = 4,
 914	.mas_rpm_id = -1,
 915	.slv_rpm_id = 54,
 916	.qos.ap_owned = true,
 917	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 918};
 919
 920static struct qcom_icc_node slv_message_ram = {
 921	.name = "slv_message_ram",
 922	.id = SDM660_SLAVE_MESSAGE_RAM,
 923	.buswidth = 4,
 924	.mas_rpm_id = -1,
 925	.slv_rpm_id = 55,
 926	.qos.ap_owned = true,
 927	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 928};
 929
 930static struct qcom_icc_node slv_glm = {
 931	.name = "slv_glm",
 932	.id = SDM660_SLAVE_GLM,
 933	.buswidth = 4,
 934	.mas_rpm_id = -1,
 935	.slv_rpm_id = 209,
 936	.qos.ap_owned = true,
 937	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 938};
 939
 940static struct qcom_icc_node slv_bimc_cfg = {
 941	.name = "slv_bimc_cfg",
 942	.id = SDM660_SLAVE_BIMC_CFG,
 943	.buswidth = 4,
 944	.mas_rpm_id = -1,
 945	.slv_rpm_id = 56,
 946	.qos.ap_owned = true,
 947	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 948};
 949
 950static struct qcom_icc_node slv_prng = {
 951	.name = "slv_prng",
 952	.id = SDM660_SLAVE_PRNG,
 953	.buswidth = 4,
 954	.mas_rpm_id = -1,
 955	.slv_rpm_id = 44,
 956	.qos.ap_owned = true,
 957	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 958};
 959
 960static struct qcom_icc_node slv_spdm = {
 961	.name = "slv_spdm",
 962	.id = SDM660_SLAVE_SPDM,
 963	.buswidth = 4,
 964	.mas_rpm_id = -1,
 965	.slv_rpm_id = 60,
 966	.qos.ap_owned = true,
 967	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 968};
 969
 970static struct qcom_icc_node slv_qdss_cfg = {
 971	.name = "slv_qdss_cfg",
 972	.id = SDM660_SLAVE_QDSS_CFG,
 973	.buswidth = 4,
 974	.mas_rpm_id = -1,
 975	.slv_rpm_id = 63,
 976	.qos.ap_owned = true,
 977	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 978};
 979
 980static const u16 slv_cnoc_mnoc_cfg_links[] = {
 981	SDM660_MASTER_CNOC_MNOC_CFG
 982};
 983
 984static struct qcom_icc_node slv_cnoc_mnoc_cfg = {
 985	.name = "slv_cnoc_mnoc_cfg",
 986	.id = SDM660_SLAVE_CNOC_MNOC_CFG,
 987	.buswidth = 4,
 988	.mas_rpm_id = -1,
 989	.slv_rpm_id = 66,
 990	.qos.ap_owned = true,
 991	.qos.qos_mode = NOC_QOS_MODE_INVALID,
 992	.num_links = ARRAY_SIZE(slv_cnoc_mnoc_cfg_links),
 993	.links = slv_cnoc_mnoc_cfg_links,
 994};
 995
 996static struct qcom_icc_node slv_snoc_cfg = {
 997	.name = "slv_snoc_cfg",
 998	.id = SDM660_SLAVE_SNOC_CFG,
 999	.buswidth = 4,
1000	.mas_rpm_id = -1,
1001	.slv_rpm_id = 70,
1002	.qos.ap_owned = true,
1003	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1004};
1005
1006static struct qcom_icc_node slv_qm_cfg = {
1007	.name = "slv_qm_cfg",
1008	.id = SDM660_SLAVE_QM_CFG,
1009	.buswidth = 4,
1010	.mas_rpm_id = -1,
1011	.slv_rpm_id = 212,
1012	.qos.ap_owned = true,
1013	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1014};
1015
1016static struct qcom_icc_node slv_clk_ctl = {
1017	.name = "slv_clk_ctl",
1018	.id = SDM660_SLAVE_CLK_CTL,
1019	.buswidth = 4,
1020	.mas_rpm_id = -1,
1021	.slv_rpm_id = 47,
1022	.qos.ap_owned = true,
1023	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1024};
1025
1026static struct qcom_icc_node slv_mss_cfg = {
1027	.name = "slv_mss_cfg",
1028	.id = SDM660_SLAVE_MSS_CFG,
1029	.buswidth = 4,
1030	.mas_rpm_id = -1,
1031	.slv_rpm_id = 48,
1032	.qos.ap_owned = true,
1033	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1034};
1035
1036static struct qcom_icc_node slv_tlmm_south = {
1037	.name = "slv_tlmm_south",
1038	.id = SDM660_SLAVE_TLMM_SOUTH,
1039	.buswidth = 4,
1040	.mas_rpm_id = -1,
1041	.slv_rpm_id = 217,
1042	.qos.ap_owned = true,
1043	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1044};
1045
1046static struct qcom_icc_node slv_ufs_cfg = {
1047	.name = "slv_ufs_cfg",
1048	.id = SDM660_SLAVE_UFS_CFG,
1049	.buswidth = 4,
1050	.mas_rpm_id = -1,
1051	.slv_rpm_id = 92,
1052	.qos.ap_owned = true,
1053	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1054};
1055
1056static struct qcom_icc_node slv_a2noc_cfg = {
1057	.name = "slv_a2noc_cfg",
1058	.id = SDM660_SLAVE_A2NOC_CFG,
1059	.buswidth = 4,
1060	.mas_rpm_id = -1,
1061	.slv_rpm_id = 150,
1062	.qos.ap_owned = true,
1063	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1064};
1065
1066static struct qcom_icc_node slv_a2noc_smmu_cfg = {
1067	.name = "slv_a2noc_smmu_cfg",
1068	.id = SDM660_SLAVE_A2NOC_SMMU_CFG,
1069	.buswidth = 8,
1070	.mas_rpm_id = -1,
1071	.slv_rpm_id = 152,
1072	.qos.ap_owned = true,
1073	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1074};
1075
1076static struct qcom_icc_node slv_gpuss_cfg = {
1077	.name = "slv_gpuss_cfg",
1078	.id = SDM660_SLAVE_GPUSS_CFG,
1079	.buswidth = 8,
1080	.mas_rpm_id = -1,
1081	.slv_rpm_id = 11,
1082	.qos.ap_owned = true,
1083	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1084};
1085
1086static struct qcom_icc_node slv_ahb2phy = {
1087	.name = "slv_ahb2phy",
1088	.id = SDM660_SLAVE_AHB2PHY,
1089	.buswidth = 4,
1090	.mas_rpm_id = -1,
1091	.slv_rpm_id = 163,
1092	.qos.ap_owned = true,
1093	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1094};
1095
1096static struct qcom_icc_node slv_blsp_1 = {
1097	.name = "slv_blsp_1",
1098	.id = SDM660_SLAVE_BLSP_1,
1099	.buswidth = 4,
1100	.mas_rpm_id = -1,
1101	.slv_rpm_id = 39,
1102	.qos.ap_owned = true,
1103	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1104};
1105
1106static struct qcom_icc_node slv_sdcc_1 = {
1107	.name = "slv_sdcc_1",
1108	.id = SDM660_SLAVE_SDCC_1,
1109	.buswidth = 4,
1110	.mas_rpm_id = -1,
1111	.slv_rpm_id = 31,
1112	.qos.ap_owned = true,
1113	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1114};
1115
1116static struct qcom_icc_node slv_sdcc_2 = {
1117	.name = "slv_sdcc_2",
1118	.id = SDM660_SLAVE_SDCC_2,
1119	.buswidth = 4,
1120	.mas_rpm_id = -1,
1121	.slv_rpm_id = 33,
1122	.qos.ap_owned = true,
1123	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1124};
1125
1126static struct qcom_icc_node slv_tlmm_center = {
1127	.name = "slv_tlmm_center",
1128	.id = SDM660_SLAVE_TLMM_CENTER,
1129	.buswidth = 4,
1130	.mas_rpm_id = -1,
1131	.slv_rpm_id = 218,
1132	.qos.ap_owned = true,
1133	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1134};
1135
1136static struct qcom_icc_node slv_blsp_2 = {
1137	.name = "slv_blsp_2",
1138	.id = SDM660_SLAVE_BLSP_2,
1139	.buswidth = 4,
1140	.mas_rpm_id = -1,
1141	.slv_rpm_id = 37,
1142	.qos.ap_owned = true,
1143	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1144};
1145
1146static struct qcom_icc_node slv_pdm = {
1147	.name = "slv_pdm",
1148	.id = SDM660_SLAVE_PDM,
1149	.buswidth = 4,
1150	.mas_rpm_id = -1,
1151	.slv_rpm_id = 41,
1152	.qos.ap_owned = true,
1153	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1154};
1155
1156static const u16 slv_cnoc_mnoc_mmss_cfg_links[] = {
1157	SDM660_MASTER_CNOC_MNOC_MMSS_CFG
1158};
1159
1160static struct qcom_icc_node slv_cnoc_mnoc_mmss_cfg = {
1161	.name = "slv_cnoc_mnoc_mmss_cfg",
1162	.id = SDM660_SLAVE_CNOC_MNOC_MMSS_CFG,
1163	.buswidth = 8,
1164	.mas_rpm_id = -1,
1165	.slv_rpm_id = 58,
1166	.qos.ap_owned = true,
1167	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1168	.num_links = ARRAY_SIZE(slv_cnoc_mnoc_mmss_cfg_links),
1169	.links = slv_cnoc_mnoc_mmss_cfg_links,
1170};
1171
1172static struct qcom_icc_node slv_usb_hs = {
1173	.name = "slv_usb_hs",
1174	.id = SDM660_SLAVE_USB_HS,
1175	.buswidth = 4,
1176	.mas_rpm_id = -1,
1177	.slv_rpm_id = 40,
1178	.qos.ap_owned = true,
1179	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1180};
1181
1182static struct qcom_icc_node slv_usb3_0 = {
1183	.name = "slv_usb3_0",
1184	.id = SDM660_SLAVE_USB3_0,
1185	.buswidth = 4,
1186	.mas_rpm_id = -1,
1187	.slv_rpm_id = 22,
1188	.qos.ap_owned = true,
1189	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1190};
1191
1192static struct qcom_icc_node slv_srvc_cnoc = {
1193	.name = "slv_srvc_cnoc",
1194	.id = SDM660_SLAVE_SRVC_CNOC,
1195	.buswidth = 4,
1196	.mas_rpm_id = -1,
1197	.slv_rpm_id = 76,
1198	.qos.ap_owned = true,
1199	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1200};
1201
1202static const u16 slv_gnoc_bimc_links[] = {
1203	SDM660_MASTER_GNOC_BIMC
1204};
1205
1206static struct qcom_icc_node slv_gnoc_bimc = {
1207	.name = "slv_gnoc_bimc",
1208	.id = SDM660_SLAVE_GNOC_BIMC,
1209	.buswidth = 16,
1210	.mas_rpm_id = -1,
1211	.slv_rpm_id = 210,
1212	.qos.ap_owned = true,
1213	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1214	.num_links = ARRAY_SIZE(slv_gnoc_bimc_links),
1215	.links = slv_gnoc_bimc_links,
1216};
1217
1218static const u16 slv_gnoc_snoc_links[] = {
1219	SDM660_MASTER_GNOC_SNOC
1220};
1221
1222static struct qcom_icc_node slv_gnoc_snoc = {
1223	.name = "slv_gnoc_snoc",
1224	.id = SDM660_SLAVE_GNOC_SNOC,
1225	.buswidth = 8,
1226	.mas_rpm_id = -1,
1227	.slv_rpm_id = 211,
1228	.qos.ap_owned = true,
1229	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1230	.num_links = ARRAY_SIZE(slv_gnoc_snoc_links),
1231	.links = slv_gnoc_snoc_links,
1232};
1233
1234static struct qcom_icc_node slv_camera_cfg = {
1235	.name = "slv_camera_cfg",
1236	.id = SDM660_SLAVE_CAMERA_CFG,
1237	.buswidth = 4,
1238	.mas_rpm_id = -1,
1239	.slv_rpm_id = 3,
1240	.qos.ap_owned = true,
1241	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1242};
1243
1244static struct qcom_icc_node slv_camera_throttle_cfg = {
1245	.name = "slv_camera_throttle_cfg",
1246	.id = SDM660_SLAVE_CAMERA_THROTTLE_CFG,
1247	.buswidth = 4,
1248	.mas_rpm_id = -1,
1249	.slv_rpm_id = 154,
1250	.qos.ap_owned = true,
1251	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1252};
1253
1254static struct qcom_icc_node slv_misc_cfg = {
1255	.name = "slv_misc_cfg",
1256	.id = SDM660_SLAVE_MISC_CFG,
1257	.buswidth = 4,
1258	.mas_rpm_id = -1,
1259	.slv_rpm_id = 8,
1260	.qos.ap_owned = true,
1261	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1262};
1263
1264static struct qcom_icc_node slv_venus_throttle_cfg = {
1265	.name = "slv_venus_throttle_cfg",
1266	.id = SDM660_SLAVE_VENUS_THROTTLE_CFG,
1267	.buswidth = 4,
1268	.mas_rpm_id = -1,
1269	.slv_rpm_id = 178,
1270	.qos.ap_owned = true,
1271	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1272};
1273
1274static struct qcom_icc_node slv_venus_cfg = {
1275	.name = "slv_venus_cfg",
1276	.id = SDM660_SLAVE_VENUS_CFG,
1277	.buswidth = 4,
1278	.mas_rpm_id = -1,
1279	.slv_rpm_id = 10,
1280	.qos.ap_owned = true,
1281	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1282};
1283
1284static struct qcom_icc_node slv_mmss_clk_xpu_cfg = {
1285	.name = "slv_mmss_clk_xpu_cfg",
1286	.id = SDM660_SLAVE_MMSS_CLK_XPU_CFG,
1287	.buswidth = 4,
1288	.mas_rpm_id = -1,
1289	.slv_rpm_id = 13,
1290	.qos.ap_owned = true,
1291	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1292};
1293
1294static struct qcom_icc_node slv_mmss_clk_cfg = {
1295	.name = "slv_mmss_clk_cfg",
1296	.id = SDM660_SLAVE_MMSS_CLK_CFG,
1297	.buswidth = 4,
1298	.mas_rpm_id = -1,
1299	.slv_rpm_id = 12,
1300	.qos.ap_owned = true,
1301	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1302};
1303
1304static struct qcom_icc_node slv_mnoc_mpu_cfg = {
1305	.name = "slv_mnoc_mpu_cfg",
1306	.id = SDM660_SLAVE_MNOC_MPU_CFG,
1307	.buswidth = 4,
1308	.mas_rpm_id = -1,
1309	.slv_rpm_id = 14,
1310	.qos.ap_owned = true,
1311	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1312};
1313
1314static struct qcom_icc_node slv_display_cfg = {
1315	.name = "slv_display_cfg",
1316	.id = SDM660_SLAVE_DISPLAY_CFG,
1317	.buswidth = 4,
1318	.mas_rpm_id = -1,
1319	.slv_rpm_id = 4,
1320	.qos.ap_owned = true,
1321	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1322};
1323
1324static struct qcom_icc_node slv_csi_phy_cfg = {
1325	.name = "slv_csi_phy_cfg",
1326	.id = SDM660_SLAVE_CSI_PHY_CFG,
1327	.buswidth = 4,
1328	.mas_rpm_id = -1,
1329	.slv_rpm_id = 224,
1330	.qos.ap_owned = true,
1331	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1332};
1333
1334static struct qcom_icc_node slv_display_throttle_cfg = {
1335	.name = "slv_display_throttle_cfg",
1336	.id = SDM660_SLAVE_DISPLAY_THROTTLE_CFG,
1337	.buswidth = 4,
1338	.mas_rpm_id = -1,
1339	.slv_rpm_id = 156,
1340	.qos.ap_owned = true,
1341	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1342};
1343
1344static struct qcom_icc_node slv_smmu_cfg = {
1345	.name = "slv_smmu_cfg",
1346	.id = SDM660_SLAVE_SMMU_CFG,
1347	.buswidth = 8,
1348	.mas_rpm_id = -1,
1349	.slv_rpm_id = 205,
1350	.qos.ap_owned = true,
1351	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1352};
1353
1354static const u16 slv_mnoc_bimc_links[] = {
1355	SDM660_MASTER_MNOC_BIMC
1356};
1357
1358static struct qcom_icc_node slv_mnoc_bimc = {
1359	.name = "slv_mnoc_bimc",
1360	.id = SDM660_SLAVE_MNOC_BIMC,
1361	.buswidth = 16,
1362	.mas_rpm_id = -1,
1363	.slv_rpm_id = 16,
1364	.qos.ap_owned = true,
1365	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1366	.num_links = ARRAY_SIZE(slv_mnoc_bimc_links),
1367	.links = slv_mnoc_bimc_links,
1368};
1369
1370static struct qcom_icc_node slv_srvc_mnoc = {
1371	.name = "slv_srvc_mnoc",
1372	.id = SDM660_SLAVE_SRVC_MNOC,
1373	.buswidth = 8,
1374	.mas_rpm_id = -1,
1375	.slv_rpm_id = 17,
1376	.qos.ap_owned = true,
1377	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1378};
1379
1380static struct qcom_icc_node slv_hmss = {
1381	.name = "slv_hmss",
1382	.id = SDM660_SLAVE_HMSS,
1383	.buswidth = 8,
1384	.mas_rpm_id = -1,
1385	.slv_rpm_id = 20,
1386	.qos.ap_owned = true,
1387	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1388};
1389
1390static struct qcom_icc_node slv_lpass = {
1391	.name = "slv_lpass",
1392	.id = SDM660_SLAVE_LPASS,
1393	.buswidth = 4,
1394	.mas_rpm_id = -1,
1395	.slv_rpm_id = 21,
1396	.qos.ap_owned = true,
1397	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1398};
1399
1400static struct qcom_icc_node slv_wlan = {
1401	.name = "slv_wlan",
1402	.id = SDM660_SLAVE_WLAN,
1403	.buswidth = 4,
1404	.mas_rpm_id = -1,
1405	.slv_rpm_id = 206,
1406};
1407
1408static struct qcom_icc_node slv_cdsp = {
1409	.name = "slv_cdsp",
1410	.id = SDM660_SLAVE_CDSP,
1411	.buswidth = 4,
1412	.mas_rpm_id = -1,
1413	.slv_rpm_id = 221,
1414	.qos.ap_owned = true,
1415	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1416};
1417
1418static struct qcom_icc_node slv_ipa = {
1419	.name = "slv_ipa",
1420	.id = SDM660_SLAVE_IPA,
1421	.buswidth = 4,
1422	.mas_rpm_id = -1,
1423	.slv_rpm_id = 183,
1424	.qos.ap_owned = true,
1425	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1426};
1427
1428static const u16 slv_snoc_bimc_links[] = {
1429	SDM660_MASTER_SNOC_BIMC
1430};
1431
1432static struct qcom_icc_node slv_snoc_bimc = {
1433	.name = "slv_snoc_bimc",
1434	.id = SDM660_SLAVE_SNOC_BIMC,
1435	.buswidth = 16,
1436	.mas_rpm_id = -1,
1437	.slv_rpm_id = 24,
1438	.num_links = ARRAY_SIZE(slv_snoc_bimc_links),
1439	.links = slv_snoc_bimc_links,
1440};
1441
1442static const u16 slv_snoc_cnoc_links[] = {
1443	SDM660_MASTER_SNOC_CNOC
1444};
1445
1446static struct qcom_icc_node slv_snoc_cnoc = {
1447	.name = "slv_snoc_cnoc",
1448	.id = SDM660_SLAVE_SNOC_CNOC,
1449	.buswidth = 8,
1450	.mas_rpm_id = -1,
1451	.slv_rpm_id = 25,
1452	.num_links = ARRAY_SIZE(slv_snoc_cnoc_links),
1453	.links = slv_snoc_cnoc_links,
1454};
1455
1456static struct qcom_icc_node slv_imem = {
1457	.name = "slv_imem",
1458	.id = SDM660_SLAVE_IMEM,
1459	.buswidth = 8,
1460	.mas_rpm_id = -1,
1461	.slv_rpm_id = 26,
1462};
1463
1464static struct qcom_icc_node slv_pimem = {
1465	.name = "slv_pimem",
1466	.id = SDM660_SLAVE_PIMEM,
1467	.buswidth = 8,
1468	.mas_rpm_id = -1,
1469	.slv_rpm_id = 166,
1470};
1471
1472static struct qcom_icc_node slv_qdss_stm = {
1473	.name = "slv_qdss_stm",
1474	.id = SDM660_SLAVE_QDSS_STM,
1475	.buswidth = 4,
1476	.mas_rpm_id = -1,
1477	.slv_rpm_id = 30,
1478};
1479
1480static struct qcom_icc_node slv_srvc_snoc = {
1481	.name = "slv_srvc_snoc",
1482	.id = SDM660_SLAVE_SRVC_SNOC,
1483	.buswidth = 16,
1484	.mas_rpm_id = -1,
1485	.slv_rpm_id = 29,
1486};
1487
1488static struct qcom_icc_node * const sdm660_a2noc_nodes[] = {
1489	[MASTER_IPA] = &mas_ipa,
1490	[MASTER_CNOC_A2NOC] = &mas_cnoc_a2noc,
1491	[MASTER_SDCC_1] = &mas_sdcc_1,
1492	[MASTER_SDCC_2] = &mas_sdcc_2,
1493	[MASTER_BLSP_1] = &mas_blsp_1,
1494	[MASTER_BLSP_2] = &mas_blsp_2,
1495	[MASTER_UFS] = &mas_ufs,
1496	[MASTER_USB_HS] = &mas_usb_hs,
1497	[MASTER_USB3] = &mas_usb3,
1498	[MASTER_CRYPTO_C0] = &mas_crypto,
1499	[SLAVE_A2NOC_SNOC] = &slv_a2noc_snoc,
1500};
1501
1502static const struct regmap_config sdm660_a2noc_regmap_config = {
1503	.reg_bits	= 32,
1504	.reg_stride	= 4,
1505	.val_bits	= 32,
1506	.max_register	= 0x20000,
1507	.fast_io	= true,
1508};
1509
1510static const struct qcom_icc_desc sdm660_a2noc = {
1511	.type = QCOM_ICC_NOC,
1512	.nodes = sdm660_a2noc_nodes,
1513	.num_nodes = ARRAY_SIZE(sdm660_a2noc_nodes),
1514	.bus_clk_desc = &aggre2_clk,
1515	.intf_clocks = a2noc_intf_clocks,
1516	.num_intf_clocks = ARRAY_SIZE(a2noc_intf_clocks),
1517	.regmap_cfg = &sdm660_a2noc_regmap_config,
1518};
1519
1520static struct qcom_icc_node * const sdm660_bimc_nodes[] = {
1521	[MASTER_GNOC_BIMC] = &mas_gnoc_bimc,
1522	[MASTER_OXILI] = &mas_oxili,
1523	[MASTER_MNOC_BIMC] = &mas_mnoc_bimc,
1524	[MASTER_SNOC_BIMC] = &mas_snoc_bimc,
1525	[MASTER_PIMEM] = &mas_pimem,
1526	[SLAVE_EBI] = &slv_ebi,
1527	[SLAVE_HMSS_L3] = &slv_hmss_l3,
1528	[SLAVE_BIMC_SNOC] = &slv_bimc_snoc,
1529};
1530
1531static const struct regmap_config sdm660_bimc_regmap_config = {
1532	.reg_bits	= 32,
1533	.reg_stride	= 4,
1534	.val_bits	= 32,
1535	.max_register	= 0x80000,
1536	.fast_io	= true,
1537};
1538
1539static const struct qcom_icc_desc sdm660_bimc = {
1540	.type = QCOM_ICC_BIMC,
1541	.nodes = sdm660_bimc_nodes,
1542	.num_nodes = ARRAY_SIZE(sdm660_bimc_nodes),
1543	.bus_clk_desc = &bimc_clk,
1544	.regmap_cfg = &sdm660_bimc_regmap_config,
1545	.ab_coeff = 153,
1546};
1547
1548static struct qcom_icc_node * const sdm660_cnoc_nodes[] = {
1549	[MASTER_SNOC_CNOC] = &mas_snoc_cnoc,
1550	[MASTER_QDSS_DAP] = &mas_qdss_dap,
1551	[SLAVE_CNOC_A2NOC] = &slv_cnoc_a2noc,
1552	[SLAVE_MPM] = &slv_mpm,
1553	[SLAVE_PMIC_ARB] = &slv_pmic_arb,
1554	[SLAVE_TLMM_NORTH] = &slv_tlmm_north,
1555	[SLAVE_TCSR] = &slv_tcsr,
1556	[SLAVE_PIMEM_CFG] = &slv_pimem_cfg,
1557	[SLAVE_IMEM_CFG] = &slv_imem_cfg,
1558	[SLAVE_MESSAGE_RAM] = &slv_message_ram,
1559	[SLAVE_GLM] = &slv_glm,
1560	[SLAVE_BIMC_CFG] = &slv_bimc_cfg,
1561	[SLAVE_PRNG] = &slv_prng,
1562	[SLAVE_SPDM] = &slv_spdm,
1563	[SLAVE_QDSS_CFG] = &slv_qdss_cfg,
1564	[SLAVE_CNOC_MNOC_CFG] = &slv_cnoc_mnoc_cfg,
1565	[SLAVE_SNOC_CFG] = &slv_snoc_cfg,
1566	[SLAVE_QM_CFG] = &slv_qm_cfg,
1567	[SLAVE_CLK_CTL] = &slv_clk_ctl,
1568	[SLAVE_MSS_CFG] = &slv_mss_cfg,
1569	[SLAVE_TLMM_SOUTH] = &slv_tlmm_south,
1570	[SLAVE_UFS_CFG] = &slv_ufs_cfg,
1571	[SLAVE_A2NOC_CFG] = &slv_a2noc_cfg,
1572	[SLAVE_A2NOC_SMMU_CFG] = &slv_a2noc_smmu_cfg,
1573	[SLAVE_GPUSS_CFG] = &slv_gpuss_cfg,
1574	[SLAVE_AHB2PHY] = &slv_ahb2phy,
1575	[SLAVE_BLSP_1] = &slv_blsp_1,
1576	[SLAVE_SDCC_1] = &slv_sdcc_1,
1577	[SLAVE_SDCC_2] = &slv_sdcc_2,
1578	[SLAVE_TLMM_CENTER] = &slv_tlmm_center,
1579	[SLAVE_BLSP_2] = &slv_blsp_2,
1580	[SLAVE_PDM] = &slv_pdm,
1581	[SLAVE_CNOC_MNOC_MMSS_CFG] = &slv_cnoc_mnoc_mmss_cfg,
1582	[SLAVE_USB_HS] = &slv_usb_hs,
1583	[SLAVE_USB3_0] = &slv_usb3_0,
1584	[SLAVE_SRVC_CNOC] = &slv_srvc_cnoc,
1585};
1586
1587static const struct regmap_config sdm660_cnoc_regmap_config = {
1588	.reg_bits	= 32,
1589	.reg_stride	= 4,
1590	.val_bits	= 32,
1591	.max_register	= 0x10000,
1592	.fast_io	= true,
1593};
1594
1595static const struct qcom_icc_desc sdm660_cnoc = {
1596	.type = QCOM_ICC_NOC,
1597	.nodes = sdm660_cnoc_nodes,
1598	.num_nodes = ARRAY_SIZE(sdm660_cnoc_nodes),
1599	.bus_clk_desc = &bus_2_clk,
1600	.regmap_cfg = &sdm660_cnoc_regmap_config,
1601};
1602
1603static struct qcom_icc_node * const sdm660_gnoc_nodes[] = {
1604	[MASTER_APSS_PROC] = &mas_apss_proc,
1605	[SLAVE_GNOC_BIMC] = &slv_gnoc_bimc,
1606	[SLAVE_GNOC_SNOC] = &slv_gnoc_snoc,
1607};
1608
1609static const struct regmap_config sdm660_gnoc_regmap_config = {
1610	.reg_bits	= 32,
1611	.reg_stride	= 4,
1612	.val_bits	= 32,
1613	.max_register	= 0xe000,
1614	.fast_io	= true,
1615};
1616
1617static const struct qcom_icc_desc sdm660_gnoc = {
1618	.type = QCOM_ICC_NOC,
1619	.nodes = sdm660_gnoc_nodes,
1620	.num_nodes = ARRAY_SIZE(sdm660_gnoc_nodes),
1621	.regmap_cfg = &sdm660_gnoc_regmap_config,
1622};
1623
1624static struct qcom_icc_node * const sdm660_mnoc_nodes[] = {
1625	[MASTER_CPP] = &mas_cpp,
1626	[MASTER_JPEG] = &mas_jpeg,
1627	[MASTER_MDP_P0] = &mas_mdp_p0,
1628	[MASTER_MDP_P1] = &mas_mdp_p1,
1629	[MASTER_VENUS] = &mas_venus,
1630	[MASTER_VFE] = &mas_vfe,
1631	[MASTER_CNOC_MNOC_MMSS_CFG] = &mas_cnoc_mnoc_mmss_cfg,
1632	[MASTER_CNOC_MNOC_CFG] = &mas_cnoc_mnoc_cfg,
1633	[SLAVE_CAMERA_CFG] = &slv_camera_cfg,
1634	[SLAVE_CAMERA_THROTTLE_CFG] = &slv_camera_throttle_cfg,
1635	[SLAVE_MISC_CFG] = &slv_misc_cfg,
1636	[SLAVE_VENUS_THROTTLE_CFG] = &slv_venus_throttle_cfg,
1637	[SLAVE_VENUS_CFG] = &slv_venus_cfg,
1638	[SLAVE_MMSS_CLK_XPU_CFG] = &slv_mmss_clk_xpu_cfg,
1639	[SLAVE_MMSS_CLK_CFG] = &slv_mmss_clk_cfg,
1640	[SLAVE_MNOC_MPU_CFG] = &slv_mnoc_mpu_cfg,
1641	[SLAVE_DISPLAY_CFG] = &slv_display_cfg,
1642	[SLAVE_CSI_PHY_CFG] = &slv_csi_phy_cfg,
1643	[SLAVE_DISPLAY_THROTTLE_CFG] = &slv_display_throttle_cfg,
1644	[SLAVE_SMMU_CFG] = &slv_smmu_cfg,
1645	[SLAVE_SRVC_MNOC] = &slv_srvc_mnoc,
1646	[SLAVE_MNOC_BIMC] = &slv_mnoc_bimc,
1647};
1648
1649static const struct regmap_config sdm660_mnoc_regmap_config = {
1650	.reg_bits	= 32,
1651	.reg_stride	= 4,
1652	.val_bits	= 32,
1653	.max_register	= 0x10000,
1654	.fast_io	= true,
1655};
1656
1657static const struct qcom_icc_desc sdm660_mnoc = {
1658	.type = QCOM_ICC_NOC,
1659	.nodes = sdm660_mnoc_nodes,
1660	.num_nodes = ARRAY_SIZE(sdm660_mnoc_nodes),
1661	.bus_clk_desc = &mmaxi_0_clk,
1662	.intf_clocks = mm_intf_clocks,
1663	.num_intf_clocks = ARRAY_SIZE(mm_intf_clocks),
1664	.regmap_cfg = &sdm660_mnoc_regmap_config,
1665	.ab_coeff = 153,
1666};
1667
1668static struct qcom_icc_node * const sdm660_snoc_nodes[] = {
1669	[MASTER_QDSS_ETR] = &mas_qdss_etr,
1670	[MASTER_QDSS_BAM] = &mas_qdss_bam,
1671	[MASTER_SNOC_CFG] = &mas_snoc_cfg,
1672	[MASTER_BIMC_SNOC] = &mas_bimc_snoc,
1673	[MASTER_A2NOC_SNOC] = &mas_a2noc_snoc,
1674	[MASTER_GNOC_SNOC] = &mas_gnoc_snoc,
1675	[SLAVE_HMSS] = &slv_hmss,
1676	[SLAVE_LPASS] = &slv_lpass,
1677	[SLAVE_WLAN] = &slv_wlan,
1678	[SLAVE_CDSP] = &slv_cdsp,
1679	[SLAVE_IPA] = &slv_ipa,
1680	[SLAVE_SNOC_BIMC] = &slv_snoc_bimc,
1681	[SLAVE_SNOC_CNOC] = &slv_snoc_cnoc,
1682	[SLAVE_IMEM] = &slv_imem,
1683	[SLAVE_PIMEM] = &slv_pimem,
1684	[SLAVE_QDSS_STM] = &slv_qdss_stm,
1685	[SLAVE_SRVC_SNOC] = &slv_srvc_snoc,
1686};
1687
1688static const struct regmap_config sdm660_snoc_regmap_config = {
1689	.reg_bits	= 32,
1690	.reg_stride	= 4,
1691	.val_bits	= 32,
1692	.max_register	= 0x20000,
1693	.fast_io	= true,
1694};
1695
1696static const struct qcom_icc_desc sdm660_snoc = {
1697	.type = QCOM_ICC_NOC,
1698	.nodes = sdm660_snoc_nodes,
1699	.num_nodes = ARRAY_SIZE(sdm660_snoc_nodes),
1700	.bus_clk_desc = &bus_1_clk,
1701	.regmap_cfg = &sdm660_snoc_regmap_config,
1702};
1703
1704static const struct of_device_id sdm660_noc_of_match[] = {
1705	{ .compatible = "qcom,sdm660-a2noc", .data = &sdm660_a2noc },
1706	{ .compatible = "qcom,sdm660-bimc", .data = &sdm660_bimc },
1707	{ .compatible = "qcom,sdm660-cnoc", .data = &sdm660_cnoc },
1708	{ .compatible = "qcom,sdm660-gnoc", .data = &sdm660_gnoc },
1709	{ .compatible = "qcom,sdm660-mnoc", .data = &sdm660_mnoc },
1710	{ .compatible = "qcom,sdm660-snoc", .data = &sdm660_snoc },
1711	{ },
1712};
1713MODULE_DEVICE_TABLE(of, sdm660_noc_of_match);
1714
1715static struct platform_driver sdm660_noc_driver = {
1716	.probe = qnoc_probe,
1717	.remove = qnoc_remove,
1718	.driver = {
1719		.name = "qnoc-sdm660",
1720		.of_match_table = sdm660_noc_of_match,
1721	},
1722};
1723module_platform_driver(sdm660_noc_driver);
1724MODULE_DESCRIPTION("Qualcomm sdm660 NoC driver");
1725MODULE_LICENSE("GPL v2");
~/ Read-only file preview.