139a53928SRohit Agarwal // SPDX-License-Identifier: GPL-2.0-only 239a53928SRohit Agarwal /* 339a53928SRohit Agarwal * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. 439a53928SRohit Agarwal */ 539a53928SRohit Agarwal 639a53928SRohit Agarwal #include <linux/device.h> 739a53928SRohit Agarwal #include <linux/interconnect.h> 839a53928SRohit Agarwal #include <linux/interconnect-provider.h> 9cff66aceSRob Herring #include <linux/mod_devicetable.h> 1039a53928SRohit Agarwal #include <linux/module.h> 11cff66aceSRob Herring #include <linux/platform_device.h> 1239a53928SRohit Agarwal #include <dt-bindings/interconnect/qcom,sdx65.h> 1339a53928SRohit Agarwal 1439a53928SRohit Agarwal #include "bcm-voter.h" 1539a53928SRohit Agarwal #include "icc-rpmh.h" 1639a53928SRohit Agarwal #include "sdx65.h" 1739a53928SRohit Agarwal 18a5403ec6SKonrad Dybcio static struct qcom_icc_node llcc_mc = { 19a5403ec6SKonrad Dybcio .name = "llcc_mc", 20a5403ec6SKonrad Dybcio .id = SDX65_MASTER_LLCC, 21a5403ec6SKonrad Dybcio .channels = 1, 22a5403ec6SKonrad Dybcio .buswidth = 4, 23a5403ec6SKonrad Dybcio .num_links = 1, 24a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_EBI1 }, 25a5403ec6SKonrad Dybcio }; 26a5403ec6SKonrad Dybcio 27a5403ec6SKonrad Dybcio static struct qcom_icc_node acm_tcu = { 28a5403ec6SKonrad Dybcio .name = "acm_tcu", 29a5403ec6SKonrad Dybcio .id = SDX65_MASTER_TCU_0, 30a5403ec6SKonrad Dybcio .channels = 1, 31a5403ec6SKonrad Dybcio .buswidth = 8, 32a5403ec6SKonrad Dybcio .num_links = 3, 33a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_LLCC, 34a5403ec6SKonrad Dybcio SDX65_SLAVE_MEM_NOC_SNOC, 35a5403ec6SKonrad Dybcio SDX65_SLAVE_MEM_NOC_PCIE_SNOC 36a5403ec6SKonrad Dybcio }, 37a5403ec6SKonrad Dybcio }; 38a5403ec6SKonrad Dybcio 39a5403ec6SKonrad Dybcio static struct qcom_icc_node qnm_snoc_gc = { 40a5403ec6SKonrad Dybcio .name = "qnm_snoc_gc", 41a5403ec6SKonrad Dybcio .id = SDX65_MASTER_SNOC_GC_MEM_NOC, 42a5403ec6SKonrad Dybcio .channels = 1, 43a5403ec6SKonrad Dybcio .buswidth = 16, 44a5403ec6SKonrad Dybcio .num_links = 1, 45a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_LLCC }, 46a5403ec6SKonrad Dybcio }; 47a5403ec6SKonrad Dybcio 48a5403ec6SKonrad Dybcio static struct qcom_icc_node xm_apps_rdwr = { 49a5403ec6SKonrad Dybcio .name = "xm_apps_rdwr", 50a5403ec6SKonrad Dybcio .id = SDX65_MASTER_APPSS_PROC, 51a5403ec6SKonrad Dybcio .channels = 1, 52a5403ec6SKonrad Dybcio .buswidth = 16, 53a5403ec6SKonrad Dybcio .num_links = 3, 54a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_LLCC, 55a5403ec6SKonrad Dybcio SDX65_SLAVE_MEM_NOC_SNOC, 56a5403ec6SKonrad Dybcio SDX65_SLAVE_MEM_NOC_PCIE_SNOC 57a5403ec6SKonrad Dybcio }, 58a5403ec6SKonrad Dybcio }; 59a5403ec6SKonrad Dybcio 60a5403ec6SKonrad Dybcio static struct qcom_icc_node qhm_audio = { 61a5403ec6SKonrad Dybcio .name = "qhm_audio", 62a5403ec6SKonrad Dybcio .id = SDX65_MASTER_AUDIO, 63a5403ec6SKonrad Dybcio .channels = 1, 64a5403ec6SKonrad Dybcio .buswidth = 4, 65a5403ec6SKonrad Dybcio .num_links = 1, 66a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_ANOC_SNOC }, 67a5403ec6SKonrad Dybcio }; 68a5403ec6SKonrad Dybcio 69a5403ec6SKonrad Dybcio static struct qcom_icc_node qhm_blsp1 = { 70a5403ec6SKonrad Dybcio .name = "qhm_blsp1", 71a5403ec6SKonrad Dybcio .id = SDX65_MASTER_BLSP_1, 72a5403ec6SKonrad Dybcio .channels = 1, 73a5403ec6SKonrad Dybcio .buswidth = 4, 74a5403ec6SKonrad Dybcio .num_links = 1, 75a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_ANOC_SNOC }, 76a5403ec6SKonrad Dybcio }; 77a5403ec6SKonrad Dybcio 78a5403ec6SKonrad Dybcio static struct qcom_icc_node qhm_qdss_bam = { 79a5403ec6SKonrad Dybcio .name = "qhm_qdss_bam", 80a5403ec6SKonrad Dybcio .id = SDX65_MASTER_QDSS_BAM, 81a5403ec6SKonrad Dybcio .channels = 1, 82a5403ec6SKonrad Dybcio .buswidth = 4, 83a5403ec6SKonrad Dybcio .num_links = 26, 84a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_AOSS, 85a5403ec6SKonrad Dybcio SDX65_SLAVE_AUDIO, 86a5403ec6SKonrad Dybcio SDX65_SLAVE_BLSP_1, 87a5403ec6SKonrad Dybcio SDX65_SLAVE_CLK_CTL, 88a5403ec6SKonrad Dybcio SDX65_SLAVE_CRYPTO_0_CFG, 89a5403ec6SKonrad Dybcio SDX65_SLAVE_CNOC_DDRSS, 90a5403ec6SKonrad Dybcio SDX65_SLAVE_ECC_CFG, 91a5403ec6SKonrad Dybcio SDX65_SLAVE_IMEM_CFG, 92a5403ec6SKonrad Dybcio SDX65_SLAVE_IPA_CFG, 93a5403ec6SKonrad Dybcio SDX65_SLAVE_CNOC_MSS, 94a5403ec6SKonrad Dybcio SDX65_SLAVE_PCIE_PARF, 95a5403ec6SKonrad Dybcio SDX65_SLAVE_PDM, 96a5403ec6SKonrad Dybcio SDX65_SLAVE_PRNG, 97a5403ec6SKonrad Dybcio SDX65_SLAVE_QDSS_CFG, 98a5403ec6SKonrad Dybcio SDX65_SLAVE_QPIC, 99a5403ec6SKonrad Dybcio SDX65_SLAVE_SDCC_1, 100a5403ec6SKonrad Dybcio SDX65_SLAVE_SNOC_CFG, 101a5403ec6SKonrad Dybcio SDX65_SLAVE_SPMI_FETCHER, 102a5403ec6SKonrad Dybcio SDX65_SLAVE_SPMI_VGI_COEX, 103a5403ec6SKonrad Dybcio SDX65_SLAVE_TCSR, 104a5403ec6SKonrad Dybcio SDX65_SLAVE_TLMM, 105a5403ec6SKonrad Dybcio SDX65_SLAVE_USB3, 106a5403ec6SKonrad Dybcio SDX65_SLAVE_USB3_PHY_CFG, 107a5403ec6SKonrad Dybcio SDX65_SLAVE_SNOC_MEM_NOC_GC, 108a5403ec6SKonrad Dybcio SDX65_SLAVE_IMEM, 109a5403ec6SKonrad Dybcio SDX65_SLAVE_TCU 110a5403ec6SKonrad Dybcio }, 111a5403ec6SKonrad Dybcio }; 112a5403ec6SKonrad Dybcio 113a5403ec6SKonrad Dybcio static struct qcom_icc_node qhm_qpic = { 114a5403ec6SKonrad Dybcio .name = "qhm_qpic", 115a5403ec6SKonrad Dybcio .id = SDX65_MASTER_QPIC, 116a5403ec6SKonrad Dybcio .channels = 1, 117a5403ec6SKonrad Dybcio .buswidth = 4, 118a5403ec6SKonrad Dybcio .num_links = 4, 119a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_AOSS, 120a5403ec6SKonrad Dybcio SDX65_SLAVE_AUDIO, 121a5403ec6SKonrad Dybcio SDX65_SLAVE_IPA_CFG, 122a5403ec6SKonrad Dybcio SDX65_SLAVE_ANOC_SNOC 123a5403ec6SKonrad Dybcio }, 124a5403ec6SKonrad Dybcio }; 125a5403ec6SKonrad Dybcio 126a5403ec6SKonrad Dybcio static struct qcom_icc_node qhm_snoc_cfg = { 127a5403ec6SKonrad Dybcio .name = "qhm_snoc_cfg", 128a5403ec6SKonrad Dybcio .id = SDX65_MASTER_SNOC_CFG, 129a5403ec6SKonrad Dybcio .channels = 1, 130a5403ec6SKonrad Dybcio .buswidth = 4, 131a5403ec6SKonrad Dybcio .num_links = 1, 132a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_SERVICE_SNOC }, 133a5403ec6SKonrad Dybcio }; 134a5403ec6SKonrad Dybcio 135a5403ec6SKonrad Dybcio static struct qcom_icc_node qhm_spmi_fetcher1 = { 136a5403ec6SKonrad Dybcio .name = "qhm_spmi_fetcher1", 137a5403ec6SKonrad Dybcio .id = SDX65_MASTER_SPMI_FETCHER, 138a5403ec6SKonrad Dybcio .channels = 1, 139a5403ec6SKonrad Dybcio .buswidth = 4, 140a5403ec6SKonrad Dybcio .num_links = 2, 141a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_AOSS, 142a5403ec6SKonrad Dybcio SDX65_SLAVE_ANOC_SNOC 143a5403ec6SKonrad Dybcio }, 144a5403ec6SKonrad Dybcio }; 145a5403ec6SKonrad Dybcio 146a5403ec6SKonrad Dybcio static struct qcom_icc_node qnm_aggre_noc = { 147a5403ec6SKonrad Dybcio .name = "qnm_aggre_noc", 148a5403ec6SKonrad Dybcio .id = SDX65_MASTER_ANOC_SNOC, 149a5403ec6SKonrad Dybcio .channels = 1, 150a5403ec6SKonrad Dybcio .buswidth = 8, 151a5403ec6SKonrad Dybcio .num_links = 29, 152a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_AOSS, 153a5403ec6SKonrad Dybcio SDX65_SLAVE_APPSS, 154a5403ec6SKonrad Dybcio SDX65_SLAVE_AUDIO, 155a5403ec6SKonrad Dybcio SDX65_SLAVE_BLSP_1, 156a5403ec6SKonrad Dybcio SDX65_SLAVE_CLK_CTL, 157a5403ec6SKonrad Dybcio SDX65_SLAVE_CRYPTO_0_CFG, 158a5403ec6SKonrad Dybcio SDX65_SLAVE_CNOC_DDRSS, 159a5403ec6SKonrad Dybcio SDX65_SLAVE_ECC_CFG, 160a5403ec6SKonrad Dybcio SDX65_SLAVE_IMEM_CFG, 161a5403ec6SKonrad Dybcio SDX65_SLAVE_IPA_CFG, 162a5403ec6SKonrad Dybcio SDX65_SLAVE_CNOC_MSS, 163a5403ec6SKonrad Dybcio SDX65_SLAVE_PCIE_PARF, 164a5403ec6SKonrad Dybcio SDX65_SLAVE_PDM, 165a5403ec6SKonrad Dybcio SDX65_SLAVE_PRNG, 166a5403ec6SKonrad Dybcio SDX65_SLAVE_QDSS_CFG, 167a5403ec6SKonrad Dybcio SDX65_SLAVE_QPIC, 168a5403ec6SKonrad Dybcio SDX65_SLAVE_SDCC_1, 169a5403ec6SKonrad Dybcio SDX65_SLAVE_SNOC_CFG, 170a5403ec6SKonrad Dybcio SDX65_SLAVE_SPMI_FETCHER, 171a5403ec6SKonrad Dybcio SDX65_SLAVE_SPMI_VGI_COEX, 172a5403ec6SKonrad Dybcio SDX65_SLAVE_TCSR, 173a5403ec6SKonrad Dybcio SDX65_SLAVE_TLMM, 174a5403ec6SKonrad Dybcio SDX65_SLAVE_USB3, 175a5403ec6SKonrad Dybcio SDX65_SLAVE_USB3_PHY_CFG, 176a5403ec6SKonrad Dybcio SDX65_SLAVE_SNOC_MEM_NOC_GC, 177a5403ec6SKonrad Dybcio SDX65_SLAVE_IMEM, 178a5403ec6SKonrad Dybcio SDX65_SLAVE_PCIE_0, 179a5403ec6SKonrad Dybcio SDX65_SLAVE_QDSS_STM, 180a5403ec6SKonrad Dybcio SDX65_SLAVE_TCU 181a5403ec6SKonrad Dybcio }, 182a5403ec6SKonrad Dybcio }; 183a5403ec6SKonrad Dybcio 184a5403ec6SKonrad Dybcio static struct qcom_icc_node qnm_ipa = { 185a5403ec6SKonrad Dybcio .name = "qnm_ipa", 186a5403ec6SKonrad Dybcio .id = SDX65_MASTER_IPA, 187a5403ec6SKonrad Dybcio .channels = 1, 188a5403ec6SKonrad Dybcio .buswidth = 8, 189a5403ec6SKonrad Dybcio .num_links = 26, 190a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_AOSS, 191a5403ec6SKonrad Dybcio SDX65_SLAVE_AUDIO, 192a5403ec6SKonrad Dybcio SDX65_SLAVE_BLSP_1, 193a5403ec6SKonrad Dybcio SDX65_SLAVE_CLK_CTL, 194a5403ec6SKonrad Dybcio SDX65_SLAVE_CRYPTO_0_CFG, 195a5403ec6SKonrad Dybcio SDX65_SLAVE_CNOC_DDRSS, 196a5403ec6SKonrad Dybcio SDX65_SLAVE_ECC_CFG, 197a5403ec6SKonrad Dybcio SDX65_SLAVE_IMEM_CFG, 198a5403ec6SKonrad Dybcio SDX65_SLAVE_IPA_CFG, 199a5403ec6SKonrad Dybcio SDX65_SLAVE_CNOC_MSS, 200a5403ec6SKonrad Dybcio SDX65_SLAVE_PCIE_PARF, 201a5403ec6SKonrad Dybcio SDX65_SLAVE_PDM, 202a5403ec6SKonrad Dybcio SDX65_SLAVE_PRNG, 203a5403ec6SKonrad Dybcio SDX65_SLAVE_QDSS_CFG, 204a5403ec6SKonrad Dybcio SDX65_SLAVE_QPIC, 205a5403ec6SKonrad Dybcio SDX65_SLAVE_SDCC_1, 206a5403ec6SKonrad Dybcio SDX65_SLAVE_SNOC_CFG, 207a5403ec6SKonrad Dybcio SDX65_SLAVE_SPMI_FETCHER, 208a5403ec6SKonrad Dybcio SDX65_SLAVE_TCSR, 209a5403ec6SKonrad Dybcio SDX65_SLAVE_TLMM, 210a5403ec6SKonrad Dybcio SDX65_SLAVE_USB3, 211a5403ec6SKonrad Dybcio SDX65_SLAVE_USB3_PHY_CFG, 212a5403ec6SKonrad Dybcio SDX65_SLAVE_SNOC_MEM_NOC_GC, 213a5403ec6SKonrad Dybcio SDX65_SLAVE_IMEM, 214a5403ec6SKonrad Dybcio SDX65_SLAVE_PCIE_0, 215a5403ec6SKonrad Dybcio SDX65_SLAVE_QDSS_STM 216a5403ec6SKonrad Dybcio }, 217a5403ec6SKonrad Dybcio }; 218a5403ec6SKonrad Dybcio 219a5403ec6SKonrad Dybcio static struct qcom_icc_node qnm_memnoc = { 220a5403ec6SKonrad Dybcio .name = "qnm_memnoc", 221a5403ec6SKonrad Dybcio .id = SDX65_MASTER_MEM_NOC_SNOC, 222a5403ec6SKonrad Dybcio .channels = 1, 223a5403ec6SKonrad Dybcio .buswidth = 8, 224a5403ec6SKonrad Dybcio .num_links = 27, 225a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_AOSS, 226a5403ec6SKonrad Dybcio SDX65_SLAVE_APPSS, 227a5403ec6SKonrad Dybcio SDX65_SLAVE_AUDIO, 228a5403ec6SKonrad Dybcio SDX65_SLAVE_BLSP_1, 229a5403ec6SKonrad Dybcio SDX65_SLAVE_CLK_CTL, 230a5403ec6SKonrad Dybcio SDX65_SLAVE_CRYPTO_0_CFG, 231a5403ec6SKonrad Dybcio SDX65_SLAVE_CNOC_DDRSS, 232a5403ec6SKonrad Dybcio SDX65_SLAVE_ECC_CFG, 233a5403ec6SKonrad Dybcio SDX65_SLAVE_IMEM_CFG, 234a5403ec6SKonrad Dybcio SDX65_SLAVE_IPA_CFG, 235a5403ec6SKonrad Dybcio SDX65_SLAVE_CNOC_MSS, 236a5403ec6SKonrad Dybcio SDX65_SLAVE_PCIE_PARF, 237a5403ec6SKonrad Dybcio SDX65_SLAVE_PDM, 238a5403ec6SKonrad Dybcio SDX65_SLAVE_PRNG, 239a5403ec6SKonrad Dybcio SDX65_SLAVE_QDSS_CFG, 240a5403ec6SKonrad Dybcio SDX65_SLAVE_QPIC, 241a5403ec6SKonrad Dybcio SDX65_SLAVE_SDCC_1, 242a5403ec6SKonrad Dybcio SDX65_SLAVE_SNOC_CFG, 243a5403ec6SKonrad Dybcio SDX65_SLAVE_SPMI_FETCHER, 244a5403ec6SKonrad Dybcio SDX65_SLAVE_SPMI_VGI_COEX, 245a5403ec6SKonrad Dybcio SDX65_SLAVE_TCSR, 246a5403ec6SKonrad Dybcio SDX65_SLAVE_TLMM, 247a5403ec6SKonrad Dybcio SDX65_SLAVE_USB3, 248a5403ec6SKonrad Dybcio SDX65_SLAVE_USB3_PHY_CFG, 249a5403ec6SKonrad Dybcio SDX65_SLAVE_IMEM, 250a5403ec6SKonrad Dybcio SDX65_SLAVE_QDSS_STM, 251a5403ec6SKonrad Dybcio SDX65_SLAVE_TCU 252a5403ec6SKonrad Dybcio }, 253a5403ec6SKonrad Dybcio }; 254a5403ec6SKonrad Dybcio 255a5403ec6SKonrad Dybcio static struct qcom_icc_node qnm_memnoc_pcie = { 256a5403ec6SKonrad Dybcio .name = "qnm_memnoc_pcie", 257a5403ec6SKonrad Dybcio .id = SDX65_MASTER_MEM_NOC_PCIE_SNOC, 258a5403ec6SKonrad Dybcio .channels = 1, 259a5403ec6SKonrad Dybcio .buswidth = 8, 260a5403ec6SKonrad Dybcio .num_links = 1, 261a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_PCIE_0 }, 262a5403ec6SKonrad Dybcio }; 263a5403ec6SKonrad Dybcio 264a5403ec6SKonrad Dybcio static struct qcom_icc_node qxm_crypto = { 265a5403ec6SKonrad Dybcio .name = "qxm_crypto", 266a5403ec6SKonrad Dybcio .id = SDX65_MASTER_CRYPTO, 267a5403ec6SKonrad Dybcio .channels = 1, 268a5403ec6SKonrad Dybcio .buswidth = 8, 269a5403ec6SKonrad Dybcio .num_links = 2, 270a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_AOSS, 271a5403ec6SKonrad Dybcio SDX65_SLAVE_ANOC_SNOC 272a5403ec6SKonrad Dybcio }, 273a5403ec6SKonrad Dybcio }; 274a5403ec6SKonrad Dybcio 275a5403ec6SKonrad Dybcio static struct qcom_icc_node xm_ipa2pcie_slv = { 276a5403ec6SKonrad Dybcio .name = "xm_ipa2pcie_slv", 277a5403ec6SKonrad Dybcio .id = SDX65_MASTER_IPA_PCIE, 278a5403ec6SKonrad Dybcio .channels = 1, 279a5403ec6SKonrad Dybcio .buswidth = 8, 280a5403ec6SKonrad Dybcio .num_links = 1, 281a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_PCIE_0 }, 282a5403ec6SKonrad Dybcio }; 283a5403ec6SKonrad Dybcio 284a5403ec6SKonrad Dybcio static struct qcom_icc_node xm_pcie = { 285a5403ec6SKonrad Dybcio .name = "xm_pcie", 286a5403ec6SKonrad Dybcio .id = SDX65_MASTER_PCIE_0, 287a5403ec6SKonrad Dybcio .channels = 1, 288a5403ec6SKonrad Dybcio .buswidth = 8, 289a5403ec6SKonrad Dybcio .num_links = 1, 290a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_ANOC_SNOC }, 291a5403ec6SKonrad Dybcio }; 292a5403ec6SKonrad Dybcio 293a5403ec6SKonrad Dybcio static struct qcom_icc_node xm_qdss_etr = { 294a5403ec6SKonrad Dybcio .name = "xm_qdss_etr", 295a5403ec6SKonrad Dybcio .id = SDX65_MASTER_QDSS_ETR, 296a5403ec6SKonrad Dybcio .channels = 1, 297a5403ec6SKonrad Dybcio .buswidth = 8, 298a5403ec6SKonrad Dybcio .num_links = 26, 299a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_AOSS, 300a5403ec6SKonrad Dybcio SDX65_SLAVE_AUDIO, 301a5403ec6SKonrad Dybcio SDX65_SLAVE_BLSP_1, 302a5403ec6SKonrad Dybcio SDX65_SLAVE_CLK_CTL, 303a5403ec6SKonrad Dybcio SDX65_SLAVE_CRYPTO_0_CFG, 304a5403ec6SKonrad Dybcio SDX65_SLAVE_CNOC_DDRSS, 305a5403ec6SKonrad Dybcio SDX65_SLAVE_ECC_CFG, 306a5403ec6SKonrad Dybcio SDX65_SLAVE_IMEM_CFG, 307a5403ec6SKonrad Dybcio SDX65_SLAVE_IPA_CFG, 308a5403ec6SKonrad Dybcio SDX65_SLAVE_CNOC_MSS, 309a5403ec6SKonrad Dybcio SDX65_SLAVE_PCIE_PARF, 310a5403ec6SKonrad Dybcio SDX65_SLAVE_PDM, 311a5403ec6SKonrad Dybcio SDX65_SLAVE_PRNG, 312a5403ec6SKonrad Dybcio SDX65_SLAVE_QDSS_CFG, 313a5403ec6SKonrad Dybcio SDX65_SLAVE_QPIC, 314a5403ec6SKonrad Dybcio SDX65_SLAVE_SDCC_1, 315a5403ec6SKonrad Dybcio SDX65_SLAVE_SNOC_CFG, 316a5403ec6SKonrad Dybcio SDX65_SLAVE_SPMI_FETCHER, 317a5403ec6SKonrad Dybcio SDX65_SLAVE_SPMI_VGI_COEX, 318a5403ec6SKonrad Dybcio SDX65_SLAVE_TCSR, 319a5403ec6SKonrad Dybcio SDX65_SLAVE_TLMM, 320a5403ec6SKonrad Dybcio SDX65_SLAVE_USB3, 321a5403ec6SKonrad Dybcio SDX65_SLAVE_USB3_PHY_CFG, 322a5403ec6SKonrad Dybcio SDX65_SLAVE_SNOC_MEM_NOC_GC, 323a5403ec6SKonrad Dybcio SDX65_SLAVE_IMEM, 324a5403ec6SKonrad Dybcio SDX65_SLAVE_TCU 325a5403ec6SKonrad Dybcio }, 326a5403ec6SKonrad Dybcio }; 327a5403ec6SKonrad Dybcio 328a5403ec6SKonrad Dybcio static struct qcom_icc_node xm_sdc1 = { 329a5403ec6SKonrad Dybcio .name = "xm_sdc1", 330a5403ec6SKonrad Dybcio .id = SDX65_MASTER_SDCC_1, 331a5403ec6SKonrad Dybcio .channels = 1, 332a5403ec6SKonrad Dybcio .buswidth = 8, 333a5403ec6SKonrad Dybcio .num_links = 4, 334a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_AOSS, 335a5403ec6SKonrad Dybcio SDX65_SLAVE_AUDIO, 336a5403ec6SKonrad Dybcio SDX65_SLAVE_IPA_CFG, 337a5403ec6SKonrad Dybcio SDX65_SLAVE_ANOC_SNOC 338a5403ec6SKonrad Dybcio }, 339a5403ec6SKonrad Dybcio }; 340a5403ec6SKonrad Dybcio 341a5403ec6SKonrad Dybcio static struct qcom_icc_node xm_usb3 = { 342a5403ec6SKonrad Dybcio .name = "xm_usb3", 343a5403ec6SKonrad Dybcio .id = SDX65_MASTER_USB3, 344a5403ec6SKonrad Dybcio .channels = 1, 345a5403ec6SKonrad Dybcio .buswidth = 8, 346a5403ec6SKonrad Dybcio .num_links = 1, 347a5403ec6SKonrad Dybcio .links = { SDX65_SLAVE_ANOC_SNOC }, 348a5403ec6SKonrad Dybcio }; 349a5403ec6SKonrad Dybcio 350a5403ec6SKonrad Dybcio static struct qcom_icc_node ebi = { 351a5403ec6SKonrad Dybcio .name = "ebi", 352a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_EBI1, 353a5403ec6SKonrad Dybcio .channels = 1, 354a5403ec6SKonrad Dybcio .buswidth = 4, 355a5403ec6SKonrad Dybcio }; 356a5403ec6SKonrad Dybcio 357a5403ec6SKonrad Dybcio static struct qcom_icc_node qns_llcc = { 358a5403ec6SKonrad Dybcio .name = "qns_llcc", 359a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_LLCC, 360a5403ec6SKonrad Dybcio .channels = 1, 361a5403ec6SKonrad Dybcio .buswidth = 16, 362a5403ec6SKonrad Dybcio .num_links = 1, 363a5403ec6SKonrad Dybcio .links = { SDX65_MASTER_LLCC }, 364a5403ec6SKonrad Dybcio }; 365a5403ec6SKonrad Dybcio 366a5403ec6SKonrad Dybcio static struct qcom_icc_node qns_memnoc_snoc = { 367a5403ec6SKonrad Dybcio .name = "qns_memnoc_snoc", 368a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_MEM_NOC_SNOC, 369a5403ec6SKonrad Dybcio .channels = 1, 370a5403ec6SKonrad Dybcio .buswidth = 8, 371a5403ec6SKonrad Dybcio .num_links = 1, 372a5403ec6SKonrad Dybcio .links = { SDX65_MASTER_MEM_NOC_SNOC }, 373a5403ec6SKonrad Dybcio }; 374a5403ec6SKonrad Dybcio 375a5403ec6SKonrad Dybcio static struct qcom_icc_node qns_sys_pcie = { 376a5403ec6SKonrad Dybcio .name = "qns_sys_pcie", 377a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_MEM_NOC_PCIE_SNOC, 378a5403ec6SKonrad Dybcio .channels = 1, 379a5403ec6SKonrad Dybcio .buswidth = 8, 380a5403ec6SKonrad Dybcio .num_links = 1, 381a5403ec6SKonrad Dybcio .links = { SDX65_MASTER_MEM_NOC_PCIE_SNOC }, 382a5403ec6SKonrad Dybcio }; 383a5403ec6SKonrad Dybcio 384a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_aoss = { 385a5403ec6SKonrad Dybcio .name = "qhs_aoss", 386a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_AOSS, 387a5403ec6SKonrad Dybcio .channels = 1, 388a5403ec6SKonrad Dybcio .buswidth = 4, 389a5403ec6SKonrad Dybcio }; 390a5403ec6SKonrad Dybcio 391a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_apss = { 392a5403ec6SKonrad Dybcio .name = "qhs_apss", 393a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_APPSS, 394a5403ec6SKonrad Dybcio .channels = 1, 395a5403ec6SKonrad Dybcio .buswidth = 4, 396a5403ec6SKonrad Dybcio }; 397a5403ec6SKonrad Dybcio 398a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_audio = { 399a5403ec6SKonrad Dybcio .name = "qhs_audio", 400a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_AUDIO, 401a5403ec6SKonrad Dybcio .channels = 1, 402a5403ec6SKonrad Dybcio .buswidth = 4, 403a5403ec6SKonrad Dybcio }; 404a5403ec6SKonrad Dybcio 405a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_blsp1 = { 406a5403ec6SKonrad Dybcio .name = "qhs_blsp1", 407a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_BLSP_1, 408a5403ec6SKonrad Dybcio .channels = 1, 409a5403ec6SKonrad Dybcio .buswidth = 4, 410a5403ec6SKonrad Dybcio }; 411a5403ec6SKonrad Dybcio 412a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_clk_ctl = { 413a5403ec6SKonrad Dybcio .name = "qhs_clk_ctl", 414a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_CLK_CTL, 415a5403ec6SKonrad Dybcio .channels = 1, 416a5403ec6SKonrad Dybcio .buswidth = 4, 417a5403ec6SKonrad Dybcio }; 418a5403ec6SKonrad Dybcio 419a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_crypto0_cfg = { 420a5403ec6SKonrad Dybcio .name = "qhs_crypto0_cfg", 421a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_CRYPTO_0_CFG, 422a5403ec6SKonrad Dybcio .channels = 1, 423a5403ec6SKonrad Dybcio .buswidth = 4, 424a5403ec6SKonrad Dybcio }; 425a5403ec6SKonrad Dybcio 426a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_ddrss_cfg = { 427a5403ec6SKonrad Dybcio .name = "qhs_ddrss_cfg", 428a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_CNOC_DDRSS, 429a5403ec6SKonrad Dybcio .channels = 1, 430a5403ec6SKonrad Dybcio .buswidth = 4, 431a5403ec6SKonrad Dybcio }; 432a5403ec6SKonrad Dybcio 433a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_ecc_cfg = { 434a5403ec6SKonrad Dybcio .name = "qhs_ecc_cfg", 435a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_ECC_CFG, 436a5403ec6SKonrad Dybcio .channels = 1, 437a5403ec6SKonrad Dybcio .buswidth = 4, 438a5403ec6SKonrad Dybcio }; 439a5403ec6SKonrad Dybcio 440a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_imem_cfg = { 441a5403ec6SKonrad Dybcio .name = "qhs_imem_cfg", 442a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_IMEM_CFG, 443a5403ec6SKonrad Dybcio .channels = 1, 444a5403ec6SKonrad Dybcio .buswidth = 4, 445a5403ec6SKonrad Dybcio }; 446a5403ec6SKonrad Dybcio 447a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_ipa = { 448a5403ec6SKonrad Dybcio .name = "qhs_ipa", 449a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_IPA_CFG, 450a5403ec6SKonrad Dybcio .channels = 1, 451a5403ec6SKonrad Dybcio .buswidth = 4, 452a5403ec6SKonrad Dybcio }; 453a5403ec6SKonrad Dybcio 454a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_mss_cfg = { 455a5403ec6SKonrad Dybcio .name = "qhs_mss_cfg", 456a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_CNOC_MSS, 457a5403ec6SKonrad Dybcio .channels = 1, 458a5403ec6SKonrad Dybcio .buswidth = 4, 459a5403ec6SKonrad Dybcio }; 460a5403ec6SKonrad Dybcio 461a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_pcie_parf = { 462a5403ec6SKonrad Dybcio .name = "qhs_pcie_parf", 463a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_PCIE_PARF, 464a5403ec6SKonrad Dybcio .channels = 1, 465a5403ec6SKonrad Dybcio .buswidth = 4, 466a5403ec6SKonrad Dybcio }; 467a5403ec6SKonrad Dybcio 468a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_pdm = { 469a5403ec6SKonrad Dybcio .name = "qhs_pdm", 470a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_PDM, 471a5403ec6SKonrad Dybcio .channels = 1, 472a5403ec6SKonrad Dybcio .buswidth = 4, 473a5403ec6SKonrad Dybcio }; 474a5403ec6SKonrad Dybcio 475a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_prng = { 476a5403ec6SKonrad Dybcio .name = "qhs_prng", 477a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_PRNG, 478a5403ec6SKonrad Dybcio .channels = 1, 479a5403ec6SKonrad Dybcio .buswidth = 4, 480a5403ec6SKonrad Dybcio }; 481a5403ec6SKonrad Dybcio 482a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_qdss_cfg = { 483a5403ec6SKonrad Dybcio .name = "qhs_qdss_cfg", 484a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_QDSS_CFG, 485a5403ec6SKonrad Dybcio .channels = 1, 486a5403ec6SKonrad Dybcio .buswidth = 4, 487a5403ec6SKonrad Dybcio }; 488a5403ec6SKonrad Dybcio 489a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_qpic = { 490a5403ec6SKonrad Dybcio .name = "qhs_qpic", 491a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_QPIC, 492a5403ec6SKonrad Dybcio .channels = 1, 493a5403ec6SKonrad Dybcio .buswidth = 4, 494a5403ec6SKonrad Dybcio }; 495a5403ec6SKonrad Dybcio 496a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_sdc1 = { 497a5403ec6SKonrad Dybcio .name = "qhs_sdc1", 498a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_SDCC_1, 499a5403ec6SKonrad Dybcio .channels = 1, 500a5403ec6SKonrad Dybcio .buswidth = 4, 501a5403ec6SKonrad Dybcio }; 502a5403ec6SKonrad Dybcio 503a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_snoc_cfg = { 504a5403ec6SKonrad Dybcio .name = "qhs_snoc_cfg", 505a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_SNOC_CFG, 506a5403ec6SKonrad Dybcio .channels = 1, 507a5403ec6SKonrad Dybcio .buswidth = 4, 508a5403ec6SKonrad Dybcio .num_links = 1, 509a5403ec6SKonrad Dybcio .links = { SDX65_MASTER_SNOC_CFG }, 510a5403ec6SKonrad Dybcio }; 511a5403ec6SKonrad Dybcio 512a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_spmi_fetcher = { 513a5403ec6SKonrad Dybcio .name = "qhs_spmi_fetcher", 514a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_SPMI_FETCHER, 515a5403ec6SKonrad Dybcio .channels = 1, 516a5403ec6SKonrad Dybcio .buswidth = 4, 517a5403ec6SKonrad Dybcio }; 518a5403ec6SKonrad Dybcio 519a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_spmi_vgi_coex = { 520a5403ec6SKonrad Dybcio .name = "qhs_spmi_vgi_coex", 521a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_SPMI_VGI_COEX, 522a5403ec6SKonrad Dybcio .channels = 1, 523a5403ec6SKonrad Dybcio .buswidth = 4, 524a5403ec6SKonrad Dybcio }; 525a5403ec6SKonrad Dybcio 526a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_tcsr = { 527a5403ec6SKonrad Dybcio .name = "qhs_tcsr", 528a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_TCSR, 529a5403ec6SKonrad Dybcio .channels = 1, 530a5403ec6SKonrad Dybcio .buswidth = 4, 531a5403ec6SKonrad Dybcio }; 532a5403ec6SKonrad Dybcio 533a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_tlmm = { 534a5403ec6SKonrad Dybcio .name = "qhs_tlmm", 535a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_TLMM, 536a5403ec6SKonrad Dybcio .channels = 1, 537a5403ec6SKonrad Dybcio .buswidth = 4, 538a5403ec6SKonrad Dybcio }; 539a5403ec6SKonrad Dybcio 540a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_usb3 = { 541a5403ec6SKonrad Dybcio .name = "qhs_usb3", 542a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_USB3, 543a5403ec6SKonrad Dybcio .channels = 1, 544a5403ec6SKonrad Dybcio .buswidth = 4, 545a5403ec6SKonrad Dybcio }; 546a5403ec6SKonrad Dybcio 547a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_usb3_phy = { 548a5403ec6SKonrad Dybcio .name = "qhs_usb3_phy", 549a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_USB3_PHY_CFG, 550a5403ec6SKonrad Dybcio .channels = 1, 551a5403ec6SKonrad Dybcio .buswidth = 4, 552a5403ec6SKonrad Dybcio }; 553a5403ec6SKonrad Dybcio 554a5403ec6SKonrad Dybcio static struct qcom_icc_node qns_aggre_noc = { 555a5403ec6SKonrad Dybcio .name = "qns_aggre_noc", 556a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_ANOC_SNOC, 557a5403ec6SKonrad Dybcio .channels = 1, 558a5403ec6SKonrad Dybcio .buswidth = 8, 559a5403ec6SKonrad Dybcio .num_links = 1, 560a5403ec6SKonrad Dybcio .links = { SDX65_MASTER_ANOC_SNOC }, 561a5403ec6SKonrad Dybcio }; 562a5403ec6SKonrad Dybcio 563a5403ec6SKonrad Dybcio static struct qcom_icc_node qns_snoc_memnoc = { 564a5403ec6SKonrad Dybcio .name = "qns_snoc_memnoc", 565a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_SNOC_MEM_NOC_GC, 566a5403ec6SKonrad Dybcio .channels = 1, 567a5403ec6SKonrad Dybcio .buswidth = 16, 568a5403ec6SKonrad Dybcio .num_links = 1, 569a5403ec6SKonrad Dybcio .links = { SDX65_MASTER_SNOC_GC_MEM_NOC }, 570a5403ec6SKonrad Dybcio }; 571a5403ec6SKonrad Dybcio 572a5403ec6SKonrad Dybcio static struct qcom_icc_node qxs_imem = { 573a5403ec6SKonrad Dybcio .name = "qxs_imem", 574a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_IMEM, 575a5403ec6SKonrad Dybcio .channels = 1, 576a5403ec6SKonrad Dybcio .buswidth = 8, 577a5403ec6SKonrad Dybcio }; 578a5403ec6SKonrad Dybcio 579a5403ec6SKonrad Dybcio static struct qcom_icc_node srvc_snoc = { 580a5403ec6SKonrad Dybcio .name = "srvc_snoc", 581a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_SERVICE_SNOC, 582a5403ec6SKonrad Dybcio .channels = 1, 583a5403ec6SKonrad Dybcio .buswidth = 4, 584a5403ec6SKonrad Dybcio }; 585a5403ec6SKonrad Dybcio 586a5403ec6SKonrad Dybcio static struct qcom_icc_node xs_pcie = { 587a5403ec6SKonrad Dybcio .name = "xs_pcie", 588a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_PCIE_0, 589a5403ec6SKonrad Dybcio .channels = 1, 590a5403ec6SKonrad Dybcio .buswidth = 8, 591a5403ec6SKonrad Dybcio }; 592a5403ec6SKonrad Dybcio 593a5403ec6SKonrad Dybcio static struct qcom_icc_node xs_qdss_stm = { 594a5403ec6SKonrad Dybcio .name = "xs_qdss_stm", 595a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_QDSS_STM, 596a5403ec6SKonrad Dybcio .channels = 1, 597a5403ec6SKonrad Dybcio .buswidth = 4, 598a5403ec6SKonrad Dybcio }; 599a5403ec6SKonrad Dybcio 600a5403ec6SKonrad Dybcio static struct qcom_icc_node xs_sys_tcu_cfg = { 601a5403ec6SKonrad Dybcio .name = "xs_sys_tcu_cfg", 602a5403ec6SKonrad Dybcio .id = SDX65_SLAVE_TCU, 603a5403ec6SKonrad Dybcio .channels = 1, 604a5403ec6SKonrad Dybcio .buswidth = 8, 605a5403ec6SKonrad Dybcio }; 60639a53928SRohit Agarwal 607*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_ce0 = { 608*de2ae887SKonrad Dybcio .name = "CE0", 609*de2ae887SKonrad Dybcio .keepalive = false, 610*de2ae887SKonrad Dybcio .num_nodes = 1, 611*de2ae887SKonrad Dybcio .nodes = { &qxm_crypto }, 612*de2ae887SKonrad Dybcio }; 613*de2ae887SKonrad Dybcio 614*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_mc0 = { 615*de2ae887SKonrad Dybcio .name = "MC0", 616*de2ae887SKonrad Dybcio .keepalive = true, 617*de2ae887SKonrad Dybcio .num_nodes = 1, 618*de2ae887SKonrad Dybcio .nodes = { &ebi }, 619*de2ae887SKonrad Dybcio }; 620*de2ae887SKonrad Dybcio 621*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_pn0 = { 622*de2ae887SKonrad Dybcio .name = "PN0", 623*de2ae887SKonrad Dybcio .keepalive = true, 624*de2ae887SKonrad Dybcio .num_nodes = 26, 625*de2ae887SKonrad Dybcio .nodes = { &qhm_snoc_cfg, 626*de2ae887SKonrad Dybcio &qhs_aoss, 627*de2ae887SKonrad Dybcio &qhs_apss, 628*de2ae887SKonrad Dybcio &qhs_audio, 629*de2ae887SKonrad Dybcio &qhs_blsp1, 630*de2ae887SKonrad Dybcio &qhs_clk_ctl, 631*de2ae887SKonrad Dybcio &qhs_crypto0_cfg, 632*de2ae887SKonrad Dybcio &qhs_ddrss_cfg, 633*de2ae887SKonrad Dybcio &qhs_ecc_cfg, 634*de2ae887SKonrad Dybcio &qhs_imem_cfg, 635*de2ae887SKonrad Dybcio &qhs_ipa, 636*de2ae887SKonrad Dybcio &qhs_mss_cfg, 637*de2ae887SKonrad Dybcio &qhs_pcie_parf, 638*de2ae887SKonrad Dybcio &qhs_pdm, 639*de2ae887SKonrad Dybcio &qhs_prng, 640*de2ae887SKonrad Dybcio &qhs_qdss_cfg, 641*de2ae887SKonrad Dybcio &qhs_qpic, 642*de2ae887SKonrad Dybcio &qhs_sdc1, 643*de2ae887SKonrad Dybcio &qhs_snoc_cfg, 644*de2ae887SKonrad Dybcio &qhs_spmi_fetcher, 645*de2ae887SKonrad Dybcio &qhs_spmi_vgi_coex, 646*de2ae887SKonrad Dybcio &qhs_tcsr, 647*de2ae887SKonrad Dybcio &qhs_tlmm, 648*de2ae887SKonrad Dybcio &qhs_usb3, 649*de2ae887SKonrad Dybcio &qhs_usb3_phy, 650*de2ae887SKonrad Dybcio &srvc_snoc 651*de2ae887SKonrad Dybcio }, 652*de2ae887SKonrad Dybcio }; 653*de2ae887SKonrad Dybcio 654*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_pn1 = { 655*de2ae887SKonrad Dybcio .name = "PN1", 656*de2ae887SKonrad Dybcio .keepalive = false, 657*de2ae887SKonrad Dybcio .num_nodes = 1, 658*de2ae887SKonrad Dybcio .nodes = { &xm_sdc1 }, 659*de2ae887SKonrad Dybcio }; 660*de2ae887SKonrad Dybcio 661*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_pn2 = { 662*de2ae887SKonrad Dybcio .name = "PN2", 663*de2ae887SKonrad Dybcio .keepalive = false, 664*de2ae887SKonrad Dybcio .num_nodes = 2, 665*de2ae887SKonrad Dybcio .nodes = { &qhm_audio, &qhm_spmi_fetcher1 }, 666*de2ae887SKonrad Dybcio }; 667*de2ae887SKonrad Dybcio 668*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_pn3 = { 669*de2ae887SKonrad Dybcio .name = "PN3", 670*de2ae887SKonrad Dybcio .keepalive = false, 671*de2ae887SKonrad Dybcio .num_nodes = 2, 672*de2ae887SKonrad Dybcio .nodes = { &qhm_blsp1, &qhm_qpic }, 673*de2ae887SKonrad Dybcio }; 674*de2ae887SKonrad Dybcio 675*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_pn4 = { 676*de2ae887SKonrad Dybcio .name = "PN4", 677*de2ae887SKonrad Dybcio .keepalive = false, 678*de2ae887SKonrad Dybcio .num_nodes = 1, 679*de2ae887SKonrad Dybcio .nodes = { &qxm_crypto }, 680*de2ae887SKonrad Dybcio }; 681*de2ae887SKonrad Dybcio 682*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sh0 = { 683*de2ae887SKonrad Dybcio .name = "SH0", 684*de2ae887SKonrad Dybcio .keepalive = true, 685*de2ae887SKonrad Dybcio .num_nodes = 1, 686*de2ae887SKonrad Dybcio .nodes = { &qns_llcc }, 687*de2ae887SKonrad Dybcio }; 688*de2ae887SKonrad Dybcio 689*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sh1 = { 690*de2ae887SKonrad Dybcio .name = "SH1", 691*de2ae887SKonrad Dybcio .keepalive = false, 692*de2ae887SKonrad Dybcio .num_nodes = 1, 693*de2ae887SKonrad Dybcio .nodes = { &qns_memnoc_snoc }, 694*de2ae887SKonrad Dybcio }; 695*de2ae887SKonrad Dybcio 696*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sh3 = { 697*de2ae887SKonrad Dybcio .name = "SH3", 698*de2ae887SKonrad Dybcio .keepalive = false, 699*de2ae887SKonrad Dybcio .num_nodes = 1, 700*de2ae887SKonrad Dybcio .nodes = { &xm_apps_rdwr }, 701*de2ae887SKonrad Dybcio }; 702*de2ae887SKonrad Dybcio 703*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn0 = { 704*de2ae887SKonrad Dybcio .name = "SN0", 705*de2ae887SKonrad Dybcio .keepalive = true, 706*de2ae887SKonrad Dybcio .num_nodes = 1, 707*de2ae887SKonrad Dybcio .nodes = { &qns_snoc_memnoc }, 708*de2ae887SKonrad Dybcio }; 709*de2ae887SKonrad Dybcio 710*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn1 = { 711*de2ae887SKonrad Dybcio .name = "SN1", 712*de2ae887SKonrad Dybcio .keepalive = false, 713*de2ae887SKonrad Dybcio .num_nodes = 1, 714*de2ae887SKonrad Dybcio .nodes = { &qxs_imem }, 715*de2ae887SKonrad Dybcio }; 716*de2ae887SKonrad Dybcio 717*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn2 = { 718*de2ae887SKonrad Dybcio .name = "SN2", 719*de2ae887SKonrad Dybcio .keepalive = false, 720*de2ae887SKonrad Dybcio .num_nodes = 1, 721*de2ae887SKonrad Dybcio .nodes = { &xs_qdss_stm }, 722*de2ae887SKonrad Dybcio }; 723*de2ae887SKonrad Dybcio 724*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn3 = { 725*de2ae887SKonrad Dybcio .name = "SN3", 726*de2ae887SKonrad Dybcio .keepalive = false, 727*de2ae887SKonrad Dybcio .num_nodes = 1, 728*de2ae887SKonrad Dybcio .nodes = { &xs_sys_tcu_cfg }, 729*de2ae887SKonrad Dybcio }; 730*de2ae887SKonrad Dybcio 731*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn5 = { 732*de2ae887SKonrad Dybcio .name = "SN5", 733*de2ae887SKonrad Dybcio .keepalive = false, 734*de2ae887SKonrad Dybcio .num_nodes = 1, 735*de2ae887SKonrad Dybcio .nodes = { &xs_pcie }, 736*de2ae887SKonrad Dybcio }; 737*de2ae887SKonrad Dybcio 738*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn6 = { 739*de2ae887SKonrad Dybcio .name = "SN6", 740*de2ae887SKonrad Dybcio .keepalive = false, 741*de2ae887SKonrad Dybcio .num_nodes = 2, 742*de2ae887SKonrad Dybcio .nodes = { &qhm_qdss_bam, &xm_qdss_etr }, 743*de2ae887SKonrad Dybcio }; 744*de2ae887SKonrad Dybcio 745*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn7 = { 746*de2ae887SKonrad Dybcio .name = "SN7", 747*de2ae887SKonrad Dybcio .keepalive = false, 748*de2ae887SKonrad Dybcio .num_nodes = 4, 749*de2ae887SKonrad Dybcio .nodes = { &qnm_aggre_noc, &xm_pcie, &xm_usb3, &qns_aggre_noc }, 750*de2ae887SKonrad Dybcio }; 751*de2ae887SKonrad Dybcio 752*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn8 = { 753*de2ae887SKonrad Dybcio .name = "SN8", 754*de2ae887SKonrad Dybcio .keepalive = false, 755*de2ae887SKonrad Dybcio .num_nodes = 1, 756*de2ae887SKonrad Dybcio .nodes = { &qnm_memnoc }, 757*de2ae887SKonrad Dybcio }; 758*de2ae887SKonrad Dybcio 759*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn9 = { 760*de2ae887SKonrad Dybcio .name = "SN9", 761*de2ae887SKonrad Dybcio .keepalive = false, 762*de2ae887SKonrad Dybcio .num_nodes = 1, 763*de2ae887SKonrad Dybcio .nodes = { &qnm_memnoc_pcie }, 764*de2ae887SKonrad Dybcio }; 765*de2ae887SKonrad Dybcio 766*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn10 = { 767*de2ae887SKonrad Dybcio .name = "SN10", 768*de2ae887SKonrad Dybcio .keepalive = false, 769*de2ae887SKonrad Dybcio .num_nodes = 2, 770*de2ae887SKonrad Dybcio .nodes = { &qnm_ipa, &xm_ipa2pcie_slv }, 771*de2ae887SKonrad Dybcio }; 77239a53928SRohit Agarwal 77339a53928SRohit Agarwal static struct qcom_icc_bcm * const mc_virt_bcms[] = { 77439a53928SRohit Agarwal &bcm_mc0, 77539a53928SRohit Agarwal }; 77639a53928SRohit Agarwal 77739a53928SRohit Agarwal static struct qcom_icc_node * const mc_virt_nodes[] = { 77839a53928SRohit Agarwal [MASTER_LLCC] = &llcc_mc, 77939a53928SRohit Agarwal [SLAVE_EBI1] = &ebi, 78039a53928SRohit Agarwal }; 78139a53928SRohit Agarwal 78239a53928SRohit Agarwal static const struct qcom_icc_desc sdx65_mc_virt = { 78339a53928SRohit Agarwal .nodes = mc_virt_nodes, 78439a53928SRohit Agarwal .num_nodes = ARRAY_SIZE(mc_virt_nodes), 78539a53928SRohit Agarwal .bcms = mc_virt_bcms, 78639a53928SRohit Agarwal .num_bcms = ARRAY_SIZE(mc_virt_bcms), 78739a53928SRohit Agarwal }; 78839a53928SRohit Agarwal 78939a53928SRohit Agarwal static struct qcom_icc_bcm * const mem_noc_bcms[] = { 79039a53928SRohit Agarwal &bcm_sh0, 79139a53928SRohit Agarwal &bcm_sh1, 79239a53928SRohit Agarwal &bcm_sh3, 79339a53928SRohit Agarwal }; 79439a53928SRohit Agarwal 79539a53928SRohit Agarwal static struct qcom_icc_node * const mem_noc_nodes[] = { 79639a53928SRohit Agarwal [MASTER_TCU_0] = &acm_tcu, 79739a53928SRohit Agarwal [MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc, 79839a53928SRohit Agarwal [MASTER_APPSS_PROC] = &xm_apps_rdwr, 79939a53928SRohit Agarwal [SLAVE_LLCC] = &qns_llcc, 80039a53928SRohit Agarwal [SLAVE_MEM_NOC_SNOC] = &qns_memnoc_snoc, 80139a53928SRohit Agarwal [SLAVE_MEM_NOC_PCIE_SNOC] = &qns_sys_pcie, 80239a53928SRohit Agarwal }; 80339a53928SRohit Agarwal 80439a53928SRohit Agarwal static const struct qcom_icc_desc sdx65_mem_noc = { 80539a53928SRohit Agarwal .nodes = mem_noc_nodes, 80639a53928SRohit Agarwal .num_nodes = ARRAY_SIZE(mem_noc_nodes), 80739a53928SRohit Agarwal .bcms = mem_noc_bcms, 80839a53928SRohit Agarwal .num_bcms = ARRAY_SIZE(mem_noc_bcms), 80939a53928SRohit Agarwal }; 81039a53928SRohit Agarwal 81139a53928SRohit Agarwal static struct qcom_icc_bcm * const system_noc_bcms[] = { 81239a53928SRohit Agarwal &bcm_ce0, 81339a53928SRohit Agarwal &bcm_pn0, 81439a53928SRohit Agarwal &bcm_pn1, 81539a53928SRohit Agarwal &bcm_pn2, 81639a53928SRohit Agarwal &bcm_pn3, 81739a53928SRohit Agarwal &bcm_pn4, 81839a53928SRohit Agarwal &bcm_sn0, 81939a53928SRohit Agarwal &bcm_sn1, 82039a53928SRohit Agarwal &bcm_sn2, 82139a53928SRohit Agarwal &bcm_sn3, 82239a53928SRohit Agarwal &bcm_sn5, 82339a53928SRohit Agarwal &bcm_sn6, 82439a53928SRohit Agarwal &bcm_sn7, 82539a53928SRohit Agarwal &bcm_sn8, 82639a53928SRohit Agarwal &bcm_sn9, 82739a53928SRohit Agarwal &bcm_sn10, 82839a53928SRohit Agarwal }; 82939a53928SRohit Agarwal 83039a53928SRohit Agarwal static struct qcom_icc_node * const system_noc_nodes[] = { 83139a53928SRohit Agarwal [MASTER_AUDIO] = &qhm_audio, 83239a53928SRohit Agarwal [MASTER_BLSP_1] = &qhm_blsp1, 83339a53928SRohit Agarwal [MASTER_QDSS_BAM] = &qhm_qdss_bam, 83439a53928SRohit Agarwal [MASTER_QPIC] = &qhm_qpic, 83539a53928SRohit Agarwal [MASTER_SNOC_CFG] = &qhm_snoc_cfg, 83639a53928SRohit Agarwal [MASTER_SPMI_FETCHER] = &qhm_spmi_fetcher1, 83739a53928SRohit Agarwal [MASTER_ANOC_SNOC] = &qnm_aggre_noc, 83839a53928SRohit Agarwal [MASTER_IPA] = &qnm_ipa, 83939a53928SRohit Agarwal [MASTER_MEM_NOC_SNOC] = &qnm_memnoc, 84039a53928SRohit Agarwal [MASTER_MEM_NOC_PCIE_SNOC] = &qnm_memnoc_pcie, 84139a53928SRohit Agarwal [MASTER_CRYPTO] = &qxm_crypto, 84239a53928SRohit Agarwal [MASTER_IPA_PCIE] = &xm_ipa2pcie_slv, 84339a53928SRohit Agarwal [MASTER_PCIE_0] = &xm_pcie, 84439a53928SRohit Agarwal [MASTER_QDSS_ETR] = &xm_qdss_etr, 84539a53928SRohit Agarwal [MASTER_SDCC_1] = &xm_sdc1, 84639a53928SRohit Agarwal [MASTER_USB3] = &xm_usb3, 84739a53928SRohit Agarwal [SLAVE_AOSS] = &qhs_aoss, 84839a53928SRohit Agarwal [SLAVE_APPSS] = &qhs_apss, 84939a53928SRohit Agarwal [SLAVE_AUDIO] = &qhs_audio, 85039a53928SRohit Agarwal [SLAVE_BLSP_1] = &qhs_blsp1, 85139a53928SRohit Agarwal [SLAVE_CLK_CTL] = &qhs_clk_ctl, 85239a53928SRohit Agarwal [SLAVE_CRYPTO_0_CFG] = &qhs_crypto0_cfg, 85339a53928SRohit Agarwal [SLAVE_CNOC_DDRSS] = &qhs_ddrss_cfg, 85439a53928SRohit Agarwal [SLAVE_ECC_CFG] = &qhs_ecc_cfg, 85539a53928SRohit Agarwal [SLAVE_IMEM_CFG] = &qhs_imem_cfg, 85639a53928SRohit Agarwal [SLAVE_IPA_CFG] = &qhs_ipa, 85739a53928SRohit Agarwal [SLAVE_CNOC_MSS] = &qhs_mss_cfg, 85839a53928SRohit Agarwal [SLAVE_PCIE_PARF] = &qhs_pcie_parf, 85939a53928SRohit Agarwal [SLAVE_PDM] = &qhs_pdm, 86039a53928SRohit Agarwal [SLAVE_PRNG] = &qhs_prng, 86139a53928SRohit Agarwal [SLAVE_QDSS_CFG] = &qhs_qdss_cfg, 86239a53928SRohit Agarwal [SLAVE_QPIC] = &qhs_qpic, 86339a53928SRohit Agarwal [SLAVE_SDCC_1] = &qhs_sdc1, 86439a53928SRohit Agarwal [SLAVE_SNOC_CFG] = &qhs_snoc_cfg, 86539a53928SRohit Agarwal [SLAVE_SPMI_FETCHER] = &qhs_spmi_fetcher, 86639a53928SRohit Agarwal [SLAVE_SPMI_VGI_COEX] = &qhs_spmi_vgi_coex, 86739a53928SRohit Agarwal [SLAVE_TCSR] = &qhs_tcsr, 86839a53928SRohit Agarwal [SLAVE_TLMM] = &qhs_tlmm, 86939a53928SRohit Agarwal [SLAVE_USB3] = &qhs_usb3, 87039a53928SRohit Agarwal [SLAVE_USB3_PHY_CFG] = &qhs_usb3_phy, 87139a53928SRohit Agarwal [SLAVE_ANOC_SNOC] = &qns_aggre_noc, 87239a53928SRohit Agarwal [SLAVE_SNOC_MEM_NOC_GC] = &qns_snoc_memnoc, 87339a53928SRohit Agarwal [SLAVE_IMEM] = &qxs_imem, 87439a53928SRohit Agarwal [SLAVE_SERVICE_SNOC] = &srvc_snoc, 87539a53928SRohit Agarwal [SLAVE_PCIE_0] = &xs_pcie, 87639a53928SRohit Agarwal [SLAVE_QDSS_STM] = &xs_qdss_stm, 87739a53928SRohit Agarwal [SLAVE_TCU] = &xs_sys_tcu_cfg, 87839a53928SRohit Agarwal }; 87939a53928SRohit Agarwal 88039a53928SRohit Agarwal static const struct qcom_icc_desc sdx65_system_noc = { 88139a53928SRohit Agarwal .nodes = system_noc_nodes, 88239a53928SRohit Agarwal .num_nodes = ARRAY_SIZE(system_noc_nodes), 88339a53928SRohit Agarwal .bcms = system_noc_bcms, 88439a53928SRohit Agarwal .num_bcms = ARRAY_SIZE(system_noc_bcms), 88539a53928SRohit Agarwal }; 88639a53928SRohit Agarwal 88739a53928SRohit Agarwal static const struct of_device_id qnoc_of_match[] = { 88839a53928SRohit Agarwal { .compatible = "qcom,sdx65-mc-virt", 88939a53928SRohit Agarwal .data = &sdx65_mc_virt}, 89039a53928SRohit Agarwal { .compatible = "qcom,sdx65-mem-noc", 89139a53928SRohit Agarwal .data = &sdx65_mem_noc}, 89239a53928SRohit Agarwal { .compatible = "qcom,sdx65-system-noc", 89339a53928SRohit Agarwal .data = &sdx65_system_noc}, 89439a53928SRohit Agarwal { } 89539a53928SRohit Agarwal }; 89639a53928SRohit Agarwal MODULE_DEVICE_TABLE(of, qnoc_of_match); 89739a53928SRohit Agarwal 89839a53928SRohit Agarwal static struct platform_driver qnoc_driver = { 89939a53928SRohit Agarwal .probe = qcom_icc_rpmh_probe, 90039a53928SRohit Agarwal .remove = qcom_icc_rpmh_remove, 90139a53928SRohit Agarwal .driver = { 90239a53928SRohit Agarwal .name = "qnoc-sdx65", 90339a53928SRohit Agarwal .of_match_table = qnoc_of_match, 90439a53928SRohit Agarwal .sync_state = icc_sync_state, 90539a53928SRohit Agarwal }, 90639a53928SRohit Agarwal }; 90739a53928SRohit Agarwal module_platform_driver(qnoc_driver); 90839a53928SRohit Agarwal 90939a53928SRohit Agarwal MODULE_DESCRIPTION("Qualcomm SDX65 NoC driver"); 91039a53928SRohit Agarwal MODULE_LICENSE("GPL v2"); 911