162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#include <linux/device.h>
762306a36Sopenharmony_ci#include <linux/interconnect.h>
862306a36Sopenharmony_ci#include <linux/interconnect-provider.h>
962306a36Sopenharmony_ci#include <linux/mod_devicetable.h>
1062306a36Sopenharmony_ci#include <linux/module.h>
1162306a36Sopenharmony_ci#include <linux/platform_device.h>
1262306a36Sopenharmony_ci#include <dt-bindings/interconnect/qcom,sdx65.h>
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#include "bcm-voter.h"
1562306a36Sopenharmony_ci#include "icc-rpmh.h"
1662306a36Sopenharmony_ci#include "sdx65.h"
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_cistatic struct qcom_icc_node llcc_mc = {
1962306a36Sopenharmony_ci	.name = "llcc_mc",
2062306a36Sopenharmony_ci	.id = SDX65_MASTER_LLCC,
2162306a36Sopenharmony_ci	.channels = 1,
2262306a36Sopenharmony_ci	.buswidth = 4,
2362306a36Sopenharmony_ci	.num_links = 1,
2462306a36Sopenharmony_ci	.links = { SDX65_SLAVE_EBI1 },
2562306a36Sopenharmony_ci};
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_cistatic struct qcom_icc_node acm_tcu = {
2862306a36Sopenharmony_ci	.name = "acm_tcu",
2962306a36Sopenharmony_ci	.id = SDX65_MASTER_TCU_0,
3062306a36Sopenharmony_ci	.channels = 1,
3162306a36Sopenharmony_ci	.buswidth = 8,
3262306a36Sopenharmony_ci	.num_links = 3,
3362306a36Sopenharmony_ci	.links = { SDX65_SLAVE_LLCC,
3462306a36Sopenharmony_ci		   SDX65_SLAVE_MEM_NOC_SNOC,
3562306a36Sopenharmony_ci		   SDX65_SLAVE_MEM_NOC_PCIE_SNOC
3662306a36Sopenharmony_ci	},
3762306a36Sopenharmony_ci};
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_cistatic struct qcom_icc_node qnm_snoc_gc = {
4062306a36Sopenharmony_ci	.name = "qnm_snoc_gc",
4162306a36Sopenharmony_ci	.id = SDX65_MASTER_SNOC_GC_MEM_NOC,
4262306a36Sopenharmony_ci	.channels = 1,
4362306a36Sopenharmony_ci	.buswidth = 16,
4462306a36Sopenharmony_ci	.num_links = 1,
4562306a36Sopenharmony_ci	.links = { SDX65_SLAVE_LLCC },
4662306a36Sopenharmony_ci};
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_cistatic struct qcom_icc_node xm_apps_rdwr = {
4962306a36Sopenharmony_ci	.name = "xm_apps_rdwr",
5062306a36Sopenharmony_ci	.id = SDX65_MASTER_APPSS_PROC,
5162306a36Sopenharmony_ci	.channels = 1,
5262306a36Sopenharmony_ci	.buswidth = 16,
5362306a36Sopenharmony_ci	.num_links = 3,
5462306a36Sopenharmony_ci	.links = { SDX65_SLAVE_LLCC,
5562306a36Sopenharmony_ci		   SDX65_SLAVE_MEM_NOC_SNOC,
5662306a36Sopenharmony_ci		   SDX65_SLAVE_MEM_NOC_PCIE_SNOC
5762306a36Sopenharmony_ci	},
5862306a36Sopenharmony_ci};
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_cistatic struct qcom_icc_node qhm_audio = {
6162306a36Sopenharmony_ci	.name = "qhm_audio",
6262306a36Sopenharmony_ci	.id = SDX65_MASTER_AUDIO,
6362306a36Sopenharmony_ci	.channels = 1,
6462306a36Sopenharmony_ci	.buswidth = 4,
6562306a36Sopenharmony_ci	.num_links = 1,
6662306a36Sopenharmony_ci	.links = { SDX65_SLAVE_ANOC_SNOC },
6762306a36Sopenharmony_ci};
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_cistatic struct qcom_icc_node qhm_blsp1 = {
7062306a36Sopenharmony_ci	.name = "qhm_blsp1",
7162306a36Sopenharmony_ci	.id = SDX65_MASTER_BLSP_1,
7262306a36Sopenharmony_ci	.channels = 1,
7362306a36Sopenharmony_ci	.buswidth = 4,
7462306a36Sopenharmony_ci	.num_links = 1,
7562306a36Sopenharmony_ci	.links = { SDX65_SLAVE_ANOC_SNOC },
7662306a36Sopenharmony_ci};
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_cistatic struct qcom_icc_node qhm_qdss_bam = {
7962306a36Sopenharmony_ci	.name = "qhm_qdss_bam",
8062306a36Sopenharmony_ci	.id = SDX65_MASTER_QDSS_BAM,
8162306a36Sopenharmony_ci	.channels = 1,
8262306a36Sopenharmony_ci	.buswidth = 4,
8362306a36Sopenharmony_ci	.num_links = 26,
8462306a36Sopenharmony_ci	.links = { SDX65_SLAVE_AOSS,
8562306a36Sopenharmony_ci		   SDX65_SLAVE_AUDIO,
8662306a36Sopenharmony_ci		   SDX65_SLAVE_BLSP_1,
8762306a36Sopenharmony_ci		   SDX65_SLAVE_CLK_CTL,
8862306a36Sopenharmony_ci		   SDX65_SLAVE_CRYPTO_0_CFG,
8962306a36Sopenharmony_ci		   SDX65_SLAVE_CNOC_DDRSS,
9062306a36Sopenharmony_ci		   SDX65_SLAVE_ECC_CFG,
9162306a36Sopenharmony_ci		   SDX65_SLAVE_IMEM_CFG,
9262306a36Sopenharmony_ci		   SDX65_SLAVE_IPA_CFG,
9362306a36Sopenharmony_ci		   SDX65_SLAVE_CNOC_MSS,
9462306a36Sopenharmony_ci		   SDX65_SLAVE_PCIE_PARF,
9562306a36Sopenharmony_ci		   SDX65_SLAVE_PDM,
9662306a36Sopenharmony_ci		   SDX65_SLAVE_PRNG,
9762306a36Sopenharmony_ci		   SDX65_SLAVE_QDSS_CFG,
9862306a36Sopenharmony_ci		   SDX65_SLAVE_QPIC,
9962306a36Sopenharmony_ci		   SDX65_SLAVE_SDCC_1,
10062306a36Sopenharmony_ci		   SDX65_SLAVE_SNOC_CFG,
10162306a36Sopenharmony_ci		   SDX65_SLAVE_SPMI_FETCHER,
10262306a36Sopenharmony_ci		   SDX65_SLAVE_SPMI_VGI_COEX,
10362306a36Sopenharmony_ci		   SDX65_SLAVE_TCSR,
10462306a36Sopenharmony_ci		   SDX65_SLAVE_TLMM,
10562306a36Sopenharmony_ci		   SDX65_SLAVE_USB3,
10662306a36Sopenharmony_ci		   SDX65_SLAVE_USB3_PHY_CFG,
10762306a36Sopenharmony_ci		   SDX65_SLAVE_SNOC_MEM_NOC_GC,
10862306a36Sopenharmony_ci		   SDX65_SLAVE_IMEM,
10962306a36Sopenharmony_ci		   SDX65_SLAVE_TCU
11062306a36Sopenharmony_ci	},
11162306a36Sopenharmony_ci};
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_cistatic struct qcom_icc_node qhm_qpic = {
11462306a36Sopenharmony_ci	.name = "qhm_qpic",
11562306a36Sopenharmony_ci	.id = SDX65_MASTER_QPIC,
11662306a36Sopenharmony_ci	.channels = 1,
11762306a36Sopenharmony_ci	.buswidth = 4,
11862306a36Sopenharmony_ci	.num_links = 4,
11962306a36Sopenharmony_ci	.links = { SDX65_SLAVE_AOSS,
12062306a36Sopenharmony_ci		   SDX65_SLAVE_AUDIO,
12162306a36Sopenharmony_ci		   SDX65_SLAVE_IPA_CFG,
12262306a36Sopenharmony_ci		   SDX65_SLAVE_ANOC_SNOC
12362306a36Sopenharmony_ci	},
12462306a36Sopenharmony_ci};
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_cistatic struct qcom_icc_node qhm_snoc_cfg = {
12762306a36Sopenharmony_ci	.name = "qhm_snoc_cfg",
12862306a36Sopenharmony_ci	.id = SDX65_MASTER_SNOC_CFG,
12962306a36Sopenharmony_ci	.channels = 1,
13062306a36Sopenharmony_ci	.buswidth = 4,
13162306a36Sopenharmony_ci	.num_links = 1,
13262306a36Sopenharmony_ci	.links = { SDX65_SLAVE_SERVICE_SNOC },
13362306a36Sopenharmony_ci};
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_cistatic struct qcom_icc_node qhm_spmi_fetcher1 = {
13662306a36Sopenharmony_ci	.name = "qhm_spmi_fetcher1",
13762306a36Sopenharmony_ci	.id = SDX65_MASTER_SPMI_FETCHER,
13862306a36Sopenharmony_ci	.channels = 1,
13962306a36Sopenharmony_ci	.buswidth = 4,
14062306a36Sopenharmony_ci	.num_links = 2,
14162306a36Sopenharmony_ci	.links = { SDX65_SLAVE_AOSS,
14262306a36Sopenharmony_ci		   SDX65_SLAVE_ANOC_SNOC
14362306a36Sopenharmony_ci	},
14462306a36Sopenharmony_ci};
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_cistatic struct qcom_icc_node qnm_aggre_noc = {
14762306a36Sopenharmony_ci	.name = "qnm_aggre_noc",
14862306a36Sopenharmony_ci	.id = SDX65_MASTER_ANOC_SNOC,
14962306a36Sopenharmony_ci	.channels = 1,
15062306a36Sopenharmony_ci	.buswidth = 8,
15162306a36Sopenharmony_ci	.num_links = 29,
15262306a36Sopenharmony_ci	.links = { SDX65_SLAVE_AOSS,
15362306a36Sopenharmony_ci		   SDX65_SLAVE_APPSS,
15462306a36Sopenharmony_ci		   SDX65_SLAVE_AUDIO,
15562306a36Sopenharmony_ci		   SDX65_SLAVE_BLSP_1,
15662306a36Sopenharmony_ci		   SDX65_SLAVE_CLK_CTL,
15762306a36Sopenharmony_ci		   SDX65_SLAVE_CRYPTO_0_CFG,
15862306a36Sopenharmony_ci		   SDX65_SLAVE_CNOC_DDRSS,
15962306a36Sopenharmony_ci		   SDX65_SLAVE_ECC_CFG,
16062306a36Sopenharmony_ci		   SDX65_SLAVE_IMEM_CFG,
16162306a36Sopenharmony_ci		   SDX65_SLAVE_IPA_CFG,
16262306a36Sopenharmony_ci		   SDX65_SLAVE_CNOC_MSS,
16362306a36Sopenharmony_ci		   SDX65_SLAVE_PCIE_PARF,
16462306a36Sopenharmony_ci		   SDX65_SLAVE_PDM,
16562306a36Sopenharmony_ci		   SDX65_SLAVE_PRNG,
16662306a36Sopenharmony_ci		   SDX65_SLAVE_QDSS_CFG,
16762306a36Sopenharmony_ci		   SDX65_SLAVE_QPIC,
16862306a36Sopenharmony_ci		   SDX65_SLAVE_SDCC_1,
16962306a36Sopenharmony_ci		   SDX65_SLAVE_SNOC_CFG,
17062306a36Sopenharmony_ci		   SDX65_SLAVE_SPMI_FETCHER,
17162306a36Sopenharmony_ci		   SDX65_SLAVE_SPMI_VGI_COEX,
17262306a36Sopenharmony_ci		   SDX65_SLAVE_TCSR,
17362306a36Sopenharmony_ci		   SDX65_SLAVE_TLMM,
17462306a36Sopenharmony_ci		   SDX65_SLAVE_USB3,
17562306a36Sopenharmony_ci		   SDX65_SLAVE_USB3_PHY_CFG,
17662306a36Sopenharmony_ci		   SDX65_SLAVE_SNOC_MEM_NOC_GC,
17762306a36Sopenharmony_ci		   SDX65_SLAVE_IMEM,
17862306a36Sopenharmony_ci		   SDX65_SLAVE_PCIE_0,
17962306a36Sopenharmony_ci		   SDX65_SLAVE_QDSS_STM,
18062306a36Sopenharmony_ci		   SDX65_SLAVE_TCU
18162306a36Sopenharmony_ci	},
18262306a36Sopenharmony_ci};
18362306a36Sopenharmony_ci
18462306a36Sopenharmony_cistatic struct qcom_icc_node qnm_ipa = {
18562306a36Sopenharmony_ci	.name = "qnm_ipa",
18662306a36Sopenharmony_ci	.id = SDX65_MASTER_IPA,
18762306a36Sopenharmony_ci	.channels = 1,
18862306a36Sopenharmony_ci	.buswidth = 8,
18962306a36Sopenharmony_ci	.num_links = 26,
19062306a36Sopenharmony_ci	.links = { SDX65_SLAVE_AOSS,
19162306a36Sopenharmony_ci		   SDX65_SLAVE_AUDIO,
19262306a36Sopenharmony_ci		   SDX65_SLAVE_BLSP_1,
19362306a36Sopenharmony_ci		   SDX65_SLAVE_CLK_CTL,
19462306a36Sopenharmony_ci		   SDX65_SLAVE_CRYPTO_0_CFG,
19562306a36Sopenharmony_ci		   SDX65_SLAVE_CNOC_DDRSS,
19662306a36Sopenharmony_ci		   SDX65_SLAVE_ECC_CFG,
19762306a36Sopenharmony_ci		   SDX65_SLAVE_IMEM_CFG,
19862306a36Sopenharmony_ci		   SDX65_SLAVE_IPA_CFG,
19962306a36Sopenharmony_ci		   SDX65_SLAVE_CNOC_MSS,
20062306a36Sopenharmony_ci		   SDX65_SLAVE_PCIE_PARF,
20162306a36Sopenharmony_ci		   SDX65_SLAVE_PDM,
20262306a36Sopenharmony_ci		   SDX65_SLAVE_PRNG,
20362306a36Sopenharmony_ci		   SDX65_SLAVE_QDSS_CFG,
20462306a36Sopenharmony_ci		   SDX65_SLAVE_QPIC,
20562306a36Sopenharmony_ci		   SDX65_SLAVE_SDCC_1,
20662306a36Sopenharmony_ci		   SDX65_SLAVE_SNOC_CFG,
20762306a36Sopenharmony_ci		   SDX65_SLAVE_SPMI_FETCHER,
20862306a36Sopenharmony_ci		   SDX65_SLAVE_TCSR,
20962306a36Sopenharmony_ci		   SDX65_SLAVE_TLMM,
21062306a36Sopenharmony_ci		   SDX65_SLAVE_USB3,
21162306a36Sopenharmony_ci		   SDX65_SLAVE_USB3_PHY_CFG,
21262306a36Sopenharmony_ci		   SDX65_SLAVE_SNOC_MEM_NOC_GC,
21362306a36Sopenharmony_ci		   SDX65_SLAVE_IMEM,
21462306a36Sopenharmony_ci		   SDX65_SLAVE_PCIE_0,
21562306a36Sopenharmony_ci		   SDX65_SLAVE_QDSS_STM
21662306a36Sopenharmony_ci	},
21762306a36Sopenharmony_ci};
21862306a36Sopenharmony_ci
21962306a36Sopenharmony_cistatic struct qcom_icc_node qnm_memnoc = {
22062306a36Sopenharmony_ci	.name = "qnm_memnoc",
22162306a36Sopenharmony_ci	.id = SDX65_MASTER_MEM_NOC_SNOC,
22262306a36Sopenharmony_ci	.channels = 1,
22362306a36Sopenharmony_ci	.buswidth = 8,
22462306a36Sopenharmony_ci	.num_links = 27,
22562306a36Sopenharmony_ci	.links = { SDX65_SLAVE_AOSS,
22662306a36Sopenharmony_ci		   SDX65_SLAVE_APPSS,
22762306a36Sopenharmony_ci		   SDX65_SLAVE_AUDIO,
22862306a36Sopenharmony_ci		   SDX65_SLAVE_BLSP_1,
22962306a36Sopenharmony_ci		   SDX65_SLAVE_CLK_CTL,
23062306a36Sopenharmony_ci		   SDX65_SLAVE_CRYPTO_0_CFG,
23162306a36Sopenharmony_ci		   SDX65_SLAVE_CNOC_DDRSS,
23262306a36Sopenharmony_ci		   SDX65_SLAVE_ECC_CFG,
23362306a36Sopenharmony_ci		   SDX65_SLAVE_IMEM_CFG,
23462306a36Sopenharmony_ci		   SDX65_SLAVE_IPA_CFG,
23562306a36Sopenharmony_ci		   SDX65_SLAVE_CNOC_MSS,
23662306a36Sopenharmony_ci		   SDX65_SLAVE_PCIE_PARF,
23762306a36Sopenharmony_ci		   SDX65_SLAVE_PDM,
23862306a36Sopenharmony_ci		   SDX65_SLAVE_PRNG,
23962306a36Sopenharmony_ci		   SDX65_SLAVE_QDSS_CFG,
24062306a36Sopenharmony_ci		   SDX65_SLAVE_QPIC,
24162306a36Sopenharmony_ci		   SDX65_SLAVE_SDCC_1,
24262306a36Sopenharmony_ci		   SDX65_SLAVE_SNOC_CFG,
24362306a36Sopenharmony_ci		   SDX65_SLAVE_SPMI_FETCHER,
24462306a36Sopenharmony_ci		   SDX65_SLAVE_SPMI_VGI_COEX,
24562306a36Sopenharmony_ci		   SDX65_SLAVE_TCSR,
24662306a36Sopenharmony_ci		   SDX65_SLAVE_TLMM,
24762306a36Sopenharmony_ci		   SDX65_SLAVE_USB3,
24862306a36Sopenharmony_ci		   SDX65_SLAVE_USB3_PHY_CFG,
24962306a36Sopenharmony_ci		   SDX65_SLAVE_IMEM,
25062306a36Sopenharmony_ci		   SDX65_SLAVE_QDSS_STM,
25162306a36Sopenharmony_ci		   SDX65_SLAVE_TCU
25262306a36Sopenharmony_ci	},
25362306a36Sopenharmony_ci};
25462306a36Sopenharmony_ci
25562306a36Sopenharmony_cistatic struct qcom_icc_node qnm_memnoc_pcie = {
25662306a36Sopenharmony_ci	.name = "qnm_memnoc_pcie",
25762306a36Sopenharmony_ci	.id = SDX65_MASTER_MEM_NOC_PCIE_SNOC,
25862306a36Sopenharmony_ci	.channels = 1,
25962306a36Sopenharmony_ci	.buswidth = 8,
26062306a36Sopenharmony_ci	.num_links = 1,
26162306a36Sopenharmony_ci	.links = { SDX65_SLAVE_PCIE_0 },
26262306a36Sopenharmony_ci};
26362306a36Sopenharmony_ci
26462306a36Sopenharmony_cistatic struct qcom_icc_node qxm_crypto = {
26562306a36Sopenharmony_ci	.name = "qxm_crypto",
26662306a36Sopenharmony_ci	.id = SDX65_MASTER_CRYPTO,
26762306a36Sopenharmony_ci	.channels = 1,
26862306a36Sopenharmony_ci	.buswidth = 8,
26962306a36Sopenharmony_ci	.num_links = 2,
27062306a36Sopenharmony_ci	.links = { SDX65_SLAVE_AOSS,
27162306a36Sopenharmony_ci		   SDX65_SLAVE_ANOC_SNOC
27262306a36Sopenharmony_ci	},
27362306a36Sopenharmony_ci};
27462306a36Sopenharmony_ci
27562306a36Sopenharmony_cistatic struct qcom_icc_node xm_ipa2pcie_slv = {
27662306a36Sopenharmony_ci	.name = "xm_ipa2pcie_slv",
27762306a36Sopenharmony_ci	.id = SDX65_MASTER_IPA_PCIE,
27862306a36Sopenharmony_ci	.channels = 1,
27962306a36Sopenharmony_ci	.buswidth = 8,
28062306a36Sopenharmony_ci	.num_links = 1,
28162306a36Sopenharmony_ci	.links = { SDX65_SLAVE_PCIE_0 },
28262306a36Sopenharmony_ci};
28362306a36Sopenharmony_ci
28462306a36Sopenharmony_cistatic struct qcom_icc_node xm_pcie = {
28562306a36Sopenharmony_ci	.name = "xm_pcie",
28662306a36Sopenharmony_ci	.id = SDX65_MASTER_PCIE_0,
28762306a36Sopenharmony_ci	.channels = 1,
28862306a36Sopenharmony_ci	.buswidth = 8,
28962306a36Sopenharmony_ci	.num_links = 1,
29062306a36Sopenharmony_ci	.links = { SDX65_SLAVE_ANOC_SNOC },
29162306a36Sopenharmony_ci};
29262306a36Sopenharmony_ci
29362306a36Sopenharmony_cistatic struct qcom_icc_node xm_qdss_etr = {
29462306a36Sopenharmony_ci	.name = "xm_qdss_etr",
29562306a36Sopenharmony_ci	.id = SDX65_MASTER_QDSS_ETR,
29662306a36Sopenharmony_ci	.channels = 1,
29762306a36Sopenharmony_ci	.buswidth = 8,
29862306a36Sopenharmony_ci	.num_links = 26,
29962306a36Sopenharmony_ci	.links = { SDX65_SLAVE_AOSS,
30062306a36Sopenharmony_ci		   SDX65_SLAVE_AUDIO,
30162306a36Sopenharmony_ci		   SDX65_SLAVE_BLSP_1,
30262306a36Sopenharmony_ci		   SDX65_SLAVE_CLK_CTL,
30362306a36Sopenharmony_ci		   SDX65_SLAVE_CRYPTO_0_CFG,
30462306a36Sopenharmony_ci		   SDX65_SLAVE_CNOC_DDRSS,
30562306a36Sopenharmony_ci		   SDX65_SLAVE_ECC_CFG,
30662306a36Sopenharmony_ci		   SDX65_SLAVE_IMEM_CFG,
30762306a36Sopenharmony_ci		   SDX65_SLAVE_IPA_CFG,
30862306a36Sopenharmony_ci		   SDX65_SLAVE_CNOC_MSS,
30962306a36Sopenharmony_ci		   SDX65_SLAVE_PCIE_PARF,
31062306a36Sopenharmony_ci		   SDX65_SLAVE_PDM,
31162306a36Sopenharmony_ci		   SDX65_SLAVE_PRNG,
31262306a36Sopenharmony_ci		   SDX65_SLAVE_QDSS_CFG,
31362306a36Sopenharmony_ci		   SDX65_SLAVE_QPIC,
31462306a36Sopenharmony_ci		   SDX65_SLAVE_SDCC_1,
31562306a36Sopenharmony_ci		   SDX65_SLAVE_SNOC_CFG,
31662306a36Sopenharmony_ci		   SDX65_SLAVE_SPMI_FETCHER,
31762306a36Sopenharmony_ci		   SDX65_SLAVE_SPMI_VGI_COEX,
31862306a36Sopenharmony_ci		   SDX65_SLAVE_TCSR,
31962306a36Sopenharmony_ci		   SDX65_SLAVE_TLMM,
32062306a36Sopenharmony_ci		   SDX65_SLAVE_USB3,
32162306a36Sopenharmony_ci		   SDX65_SLAVE_USB3_PHY_CFG,
32262306a36Sopenharmony_ci		   SDX65_SLAVE_SNOC_MEM_NOC_GC,
32362306a36Sopenharmony_ci		   SDX65_SLAVE_IMEM,
32462306a36Sopenharmony_ci		   SDX65_SLAVE_TCU
32562306a36Sopenharmony_ci	},
32662306a36Sopenharmony_ci};
32762306a36Sopenharmony_ci
32862306a36Sopenharmony_cistatic struct qcom_icc_node xm_sdc1 = {
32962306a36Sopenharmony_ci	.name = "xm_sdc1",
33062306a36Sopenharmony_ci	.id = SDX65_MASTER_SDCC_1,
33162306a36Sopenharmony_ci	.channels = 1,
33262306a36Sopenharmony_ci	.buswidth = 8,
33362306a36Sopenharmony_ci	.num_links = 4,
33462306a36Sopenharmony_ci	.links = { SDX65_SLAVE_AOSS,
33562306a36Sopenharmony_ci		   SDX65_SLAVE_AUDIO,
33662306a36Sopenharmony_ci		   SDX65_SLAVE_IPA_CFG,
33762306a36Sopenharmony_ci		   SDX65_SLAVE_ANOC_SNOC
33862306a36Sopenharmony_ci	},
33962306a36Sopenharmony_ci};
34062306a36Sopenharmony_ci
34162306a36Sopenharmony_cistatic struct qcom_icc_node xm_usb3 = {
34262306a36Sopenharmony_ci	.name = "xm_usb3",
34362306a36Sopenharmony_ci	.id = SDX65_MASTER_USB3,
34462306a36Sopenharmony_ci	.channels = 1,
34562306a36Sopenharmony_ci	.buswidth = 8,
34662306a36Sopenharmony_ci	.num_links = 1,
34762306a36Sopenharmony_ci	.links = { SDX65_SLAVE_ANOC_SNOC },
34862306a36Sopenharmony_ci};
34962306a36Sopenharmony_ci
35062306a36Sopenharmony_cistatic struct qcom_icc_node ebi = {
35162306a36Sopenharmony_ci	.name = "ebi",
35262306a36Sopenharmony_ci	.id = SDX65_SLAVE_EBI1,
35362306a36Sopenharmony_ci	.channels = 1,
35462306a36Sopenharmony_ci	.buswidth = 4,
35562306a36Sopenharmony_ci};
35662306a36Sopenharmony_ci
35762306a36Sopenharmony_cistatic struct qcom_icc_node qns_llcc = {
35862306a36Sopenharmony_ci	.name = "qns_llcc",
35962306a36Sopenharmony_ci	.id = SDX65_SLAVE_LLCC,
36062306a36Sopenharmony_ci	.channels = 1,
36162306a36Sopenharmony_ci	.buswidth = 16,
36262306a36Sopenharmony_ci	.num_links = 1,
36362306a36Sopenharmony_ci	.links = { SDX65_MASTER_LLCC },
36462306a36Sopenharmony_ci};
36562306a36Sopenharmony_ci
36662306a36Sopenharmony_cistatic struct qcom_icc_node qns_memnoc_snoc = {
36762306a36Sopenharmony_ci	.name = "qns_memnoc_snoc",
36862306a36Sopenharmony_ci	.id = SDX65_SLAVE_MEM_NOC_SNOC,
36962306a36Sopenharmony_ci	.channels = 1,
37062306a36Sopenharmony_ci	.buswidth = 8,
37162306a36Sopenharmony_ci	.num_links = 1,
37262306a36Sopenharmony_ci	.links = { SDX65_MASTER_MEM_NOC_SNOC },
37362306a36Sopenharmony_ci};
37462306a36Sopenharmony_ci
37562306a36Sopenharmony_cistatic struct qcom_icc_node qns_sys_pcie = {
37662306a36Sopenharmony_ci	.name = "qns_sys_pcie",
37762306a36Sopenharmony_ci	.id = SDX65_SLAVE_MEM_NOC_PCIE_SNOC,
37862306a36Sopenharmony_ci	.channels = 1,
37962306a36Sopenharmony_ci	.buswidth = 8,
38062306a36Sopenharmony_ci	.num_links = 1,
38162306a36Sopenharmony_ci	.links = { SDX65_MASTER_MEM_NOC_PCIE_SNOC },
38262306a36Sopenharmony_ci};
38362306a36Sopenharmony_ci
38462306a36Sopenharmony_cistatic struct qcom_icc_node qhs_aoss = {
38562306a36Sopenharmony_ci	.name = "qhs_aoss",
38662306a36Sopenharmony_ci	.id = SDX65_SLAVE_AOSS,
38762306a36Sopenharmony_ci	.channels = 1,
38862306a36Sopenharmony_ci	.buswidth = 4,
38962306a36Sopenharmony_ci};
39062306a36Sopenharmony_ci
39162306a36Sopenharmony_cistatic struct qcom_icc_node qhs_apss = {
39262306a36Sopenharmony_ci	.name = "qhs_apss",
39362306a36Sopenharmony_ci	.id = SDX65_SLAVE_APPSS,
39462306a36Sopenharmony_ci	.channels = 1,
39562306a36Sopenharmony_ci	.buswidth = 4,
39662306a36Sopenharmony_ci};
39762306a36Sopenharmony_ci
39862306a36Sopenharmony_cistatic struct qcom_icc_node qhs_audio = {
39962306a36Sopenharmony_ci	.name = "qhs_audio",
40062306a36Sopenharmony_ci	.id = SDX65_SLAVE_AUDIO,
40162306a36Sopenharmony_ci	.channels = 1,
40262306a36Sopenharmony_ci	.buswidth = 4,
40362306a36Sopenharmony_ci};
40462306a36Sopenharmony_ci
40562306a36Sopenharmony_cistatic struct qcom_icc_node qhs_blsp1 = {
40662306a36Sopenharmony_ci	.name = "qhs_blsp1",
40762306a36Sopenharmony_ci	.id = SDX65_SLAVE_BLSP_1,
40862306a36Sopenharmony_ci	.channels = 1,
40962306a36Sopenharmony_ci	.buswidth = 4,
41062306a36Sopenharmony_ci};
41162306a36Sopenharmony_ci
41262306a36Sopenharmony_cistatic struct qcom_icc_node qhs_clk_ctl = {
41362306a36Sopenharmony_ci	.name = "qhs_clk_ctl",
41462306a36Sopenharmony_ci	.id = SDX65_SLAVE_CLK_CTL,
41562306a36Sopenharmony_ci	.channels = 1,
41662306a36Sopenharmony_ci	.buswidth = 4,
41762306a36Sopenharmony_ci};
41862306a36Sopenharmony_ci
41962306a36Sopenharmony_cistatic struct qcom_icc_node qhs_crypto0_cfg = {
42062306a36Sopenharmony_ci	.name = "qhs_crypto0_cfg",
42162306a36Sopenharmony_ci	.id = SDX65_SLAVE_CRYPTO_0_CFG,
42262306a36Sopenharmony_ci	.channels = 1,
42362306a36Sopenharmony_ci	.buswidth = 4,
42462306a36Sopenharmony_ci};
42562306a36Sopenharmony_ci
42662306a36Sopenharmony_cistatic struct qcom_icc_node qhs_ddrss_cfg = {
42762306a36Sopenharmony_ci	.name = "qhs_ddrss_cfg",
42862306a36Sopenharmony_ci	.id = SDX65_SLAVE_CNOC_DDRSS,
42962306a36Sopenharmony_ci	.channels = 1,
43062306a36Sopenharmony_ci	.buswidth = 4,
43162306a36Sopenharmony_ci};
43262306a36Sopenharmony_ci
43362306a36Sopenharmony_cistatic struct qcom_icc_node qhs_ecc_cfg = {
43462306a36Sopenharmony_ci	.name = "qhs_ecc_cfg",
43562306a36Sopenharmony_ci	.id = SDX65_SLAVE_ECC_CFG,
43662306a36Sopenharmony_ci	.channels = 1,
43762306a36Sopenharmony_ci	.buswidth = 4,
43862306a36Sopenharmony_ci};
43962306a36Sopenharmony_ci
44062306a36Sopenharmony_cistatic struct qcom_icc_node qhs_imem_cfg = {
44162306a36Sopenharmony_ci	.name = "qhs_imem_cfg",
44262306a36Sopenharmony_ci	.id = SDX65_SLAVE_IMEM_CFG,
44362306a36Sopenharmony_ci	.channels = 1,
44462306a36Sopenharmony_ci	.buswidth = 4,
44562306a36Sopenharmony_ci};
44662306a36Sopenharmony_ci
44762306a36Sopenharmony_cistatic struct qcom_icc_node qhs_ipa = {
44862306a36Sopenharmony_ci	.name = "qhs_ipa",
44962306a36Sopenharmony_ci	.id = SDX65_SLAVE_IPA_CFG,
45062306a36Sopenharmony_ci	.channels = 1,
45162306a36Sopenharmony_ci	.buswidth = 4,
45262306a36Sopenharmony_ci};
45362306a36Sopenharmony_ci
45462306a36Sopenharmony_cistatic struct qcom_icc_node qhs_mss_cfg = {
45562306a36Sopenharmony_ci	.name = "qhs_mss_cfg",
45662306a36Sopenharmony_ci	.id = SDX65_SLAVE_CNOC_MSS,
45762306a36Sopenharmony_ci	.channels = 1,
45862306a36Sopenharmony_ci	.buswidth = 4,
45962306a36Sopenharmony_ci};
46062306a36Sopenharmony_ci
46162306a36Sopenharmony_cistatic struct qcom_icc_node qhs_pcie_parf = {
46262306a36Sopenharmony_ci	.name = "qhs_pcie_parf",
46362306a36Sopenharmony_ci	.id = SDX65_SLAVE_PCIE_PARF,
46462306a36Sopenharmony_ci	.channels = 1,
46562306a36Sopenharmony_ci	.buswidth = 4,
46662306a36Sopenharmony_ci};
46762306a36Sopenharmony_ci
46862306a36Sopenharmony_cistatic struct qcom_icc_node qhs_pdm = {
46962306a36Sopenharmony_ci	.name = "qhs_pdm",
47062306a36Sopenharmony_ci	.id = SDX65_SLAVE_PDM,
47162306a36Sopenharmony_ci	.channels = 1,
47262306a36Sopenharmony_ci	.buswidth = 4,
47362306a36Sopenharmony_ci};
47462306a36Sopenharmony_ci
47562306a36Sopenharmony_cistatic struct qcom_icc_node qhs_prng = {
47662306a36Sopenharmony_ci	.name = "qhs_prng",
47762306a36Sopenharmony_ci	.id = SDX65_SLAVE_PRNG,
47862306a36Sopenharmony_ci	.channels = 1,
47962306a36Sopenharmony_ci	.buswidth = 4,
48062306a36Sopenharmony_ci};
48162306a36Sopenharmony_ci
48262306a36Sopenharmony_cistatic struct qcom_icc_node qhs_qdss_cfg = {
48362306a36Sopenharmony_ci	.name = "qhs_qdss_cfg",
48462306a36Sopenharmony_ci	.id = SDX65_SLAVE_QDSS_CFG,
48562306a36Sopenharmony_ci	.channels = 1,
48662306a36Sopenharmony_ci	.buswidth = 4,
48762306a36Sopenharmony_ci};
48862306a36Sopenharmony_ci
48962306a36Sopenharmony_cistatic struct qcom_icc_node qhs_qpic = {
49062306a36Sopenharmony_ci	.name = "qhs_qpic",
49162306a36Sopenharmony_ci	.id = SDX65_SLAVE_QPIC,
49262306a36Sopenharmony_ci	.channels = 1,
49362306a36Sopenharmony_ci	.buswidth = 4,
49462306a36Sopenharmony_ci};
49562306a36Sopenharmony_ci
49662306a36Sopenharmony_cistatic struct qcom_icc_node qhs_sdc1 = {
49762306a36Sopenharmony_ci	.name = "qhs_sdc1",
49862306a36Sopenharmony_ci	.id = SDX65_SLAVE_SDCC_1,
49962306a36Sopenharmony_ci	.channels = 1,
50062306a36Sopenharmony_ci	.buswidth = 4,
50162306a36Sopenharmony_ci};
50262306a36Sopenharmony_ci
50362306a36Sopenharmony_cistatic struct qcom_icc_node qhs_snoc_cfg = {
50462306a36Sopenharmony_ci	.name = "qhs_snoc_cfg",
50562306a36Sopenharmony_ci	.id = SDX65_SLAVE_SNOC_CFG,
50662306a36Sopenharmony_ci	.channels = 1,
50762306a36Sopenharmony_ci	.buswidth = 4,
50862306a36Sopenharmony_ci	.num_links = 1,
50962306a36Sopenharmony_ci	.links = { SDX65_MASTER_SNOC_CFG },
51062306a36Sopenharmony_ci};
51162306a36Sopenharmony_ci
51262306a36Sopenharmony_cistatic struct qcom_icc_node qhs_spmi_fetcher = {
51362306a36Sopenharmony_ci	.name = "qhs_spmi_fetcher",
51462306a36Sopenharmony_ci	.id = SDX65_SLAVE_SPMI_FETCHER,
51562306a36Sopenharmony_ci	.channels = 1,
51662306a36Sopenharmony_ci	.buswidth = 4,
51762306a36Sopenharmony_ci};
51862306a36Sopenharmony_ci
51962306a36Sopenharmony_cistatic struct qcom_icc_node qhs_spmi_vgi_coex = {
52062306a36Sopenharmony_ci	.name = "qhs_spmi_vgi_coex",
52162306a36Sopenharmony_ci	.id = SDX65_SLAVE_SPMI_VGI_COEX,
52262306a36Sopenharmony_ci	.channels = 1,
52362306a36Sopenharmony_ci	.buswidth = 4,
52462306a36Sopenharmony_ci};
52562306a36Sopenharmony_ci
52662306a36Sopenharmony_cistatic struct qcom_icc_node qhs_tcsr = {
52762306a36Sopenharmony_ci	.name = "qhs_tcsr",
52862306a36Sopenharmony_ci	.id = SDX65_SLAVE_TCSR,
52962306a36Sopenharmony_ci	.channels = 1,
53062306a36Sopenharmony_ci	.buswidth = 4,
53162306a36Sopenharmony_ci};
53262306a36Sopenharmony_ci
53362306a36Sopenharmony_cistatic struct qcom_icc_node qhs_tlmm = {
53462306a36Sopenharmony_ci	.name = "qhs_tlmm",
53562306a36Sopenharmony_ci	.id = SDX65_SLAVE_TLMM,
53662306a36Sopenharmony_ci	.channels = 1,
53762306a36Sopenharmony_ci	.buswidth = 4,
53862306a36Sopenharmony_ci};
53962306a36Sopenharmony_ci
54062306a36Sopenharmony_cistatic struct qcom_icc_node qhs_usb3 = {
54162306a36Sopenharmony_ci	.name = "qhs_usb3",
54262306a36Sopenharmony_ci	.id = SDX65_SLAVE_USB3,
54362306a36Sopenharmony_ci	.channels = 1,
54462306a36Sopenharmony_ci	.buswidth = 4,
54562306a36Sopenharmony_ci};
54662306a36Sopenharmony_ci
54762306a36Sopenharmony_cistatic struct qcom_icc_node qhs_usb3_phy = {
54862306a36Sopenharmony_ci	.name = "qhs_usb3_phy",
54962306a36Sopenharmony_ci	.id = SDX65_SLAVE_USB3_PHY_CFG,
55062306a36Sopenharmony_ci	.channels = 1,
55162306a36Sopenharmony_ci	.buswidth = 4,
55262306a36Sopenharmony_ci};
55362306a36Sopenharmony_ci
55462306a36Sopenharmony_cistatic struct qcom_icc_node qns_aggre_noc = {
55562306a36Sopenharmony_ci	.name = "qns_aggre_noc",
55662306a36Sopenharmony_ci	.id = SDX65_SLAVE_ANOC_SNOC,
55762306a36Sopenharmony_ci	.channels = 1,
55862306a36Sopenharmony_ci	.buswidth = 8,
55962306a36Sopenharmony_ci	.num_links = 1,
56062306a36Sopenharmony_ci	.links = { SDX65_MASTER_ANOC_SNOC },
56162306a36Sopenharmony_ci};
56262306a36Sopenharmony_ci
56362306a36Sopenharmony_cistatic struct qcom_icc_node qns_snoc_memnoc = {
56462306a36Sopenharmony_ci	.name = "qns_snoc_memnoc",
56562306a36Sopenharmony_ci	.id = SDX65_SLAVE_SNOC_MEM_NOC_GC,
56662306a36Sopenharmony_ci	.channels = 1,
56762306a36Sopenharmony_ci	.buswidth = 16,
56862306a36Sopenharmony_ci	.num_links = 1,
56962306a36Sopenharmony_ci	.links = { SDX65_MASTER_SNOC_GC_MEM_NOC },
57062306a36Sopenharmony_ci};
57162306a36Sopenharmony_ci
57262306a36Sopenharmony_cistatic struct qcom_icc_node qxs_imem = {
57362306a36Sopenharmony_ci	.name = "qxs_imem",
57462306a36Sopenharmony_ci	.id = SDX65_SLAVE_IMEM,
57562306a36Sopenharmony_ci	.channels = 1,
57662306a36Sopenharmony_ci	.buswidth = 8,
57762306a36Sopenharmony_ci};
57862306a36Sopenharmony_ci
57962306a36Sopenharmony_cistatic struct qcom_icc_node srvc_snoc = {
58062306a36Sopenharmony_ci	.name = "srvc_snoc",
58162306a36Sopenharmony_ci	.id = SDX65_SLAVE_SERVICE_SNOC,
58262306a36Sopenharmony_ci	.channels = 1,
58362306a36Sopenharmony_ci	.buswidth = 4,
58462306a36Sopenharmony_ci};
58562306a36Sopenharmony_ci
58662306a36Sopenharmony_cistatic struct qcom_icc_node xs_pcie = {
58762306a36Sopenharmony_ci	.name = "xs_pcie",
58862306a36Sopenharmony_ci	.id = SDX65_SLAVE_PCIE_0,
58962306a36Sopenharmony_ci	.channels = 1,
59062306a36Sopenharmony_ci	.buswidth = 8,
59162306a36Sopenharmony_ci};
59262306a36Sopenharmony_ci
59362306a36Sopenharmony_cistatic struct qcom_icc_node xs_qdss_stm = {
59462306a36Sopenharmony_ci	.name = "xs_qdss_stm",
59562306a36Sopenharmony_ci	.id = SDX65_SLAVE_QDSS_STM,
59662306a36Sopenharmony_ci	.channels = 1,
59762306a36Sopenharmony_ci	.buswidth = 4,
59862306a36Sopenharmony_ci};
59962306a36Sopenharmony_ci
60062306a36Sopenharmony_cistatic struct qcom_icc_node xs_sys_tcu_cfg = {
60162306a36Sopenharmony_ci	.name = "xs_sys_tcu_cfg",
60262306a36Sopenharmony_ci	.id = SDX65_SLAVE_TCU,
60362306a36Sopenharmony_ci	.channels = 1,
60462306a36Sopenharmony_ci	.buswidth = 8,
60562306a36Sopenharmony_ci};
60662306a36Sopenharmony_ci
60762306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_ce0 = {
60862306a36Sopenharmony_ci	.name = "CE0",
60962306a36Sopenharmony_ci	.keepalive = false,
61062306a36Sopenharmony_ci	.num_nodes = 1,
61162306a36Sopenharmony_ci	.nodes = { &qxm_crypto },
61262306a36Sopenharmony_ci};
61362306a36Sopenharmony_ci
61462306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_mc0 = {
61562306a36Sopenharmony_ci	.name = "MC0",
61662306a36Sopenharmony_ci	.keepalive = true,
61762306a36Sopenharmony_ci	.num_nodes = 1,
61862306a36Sopenharmony_ci	.nodes = { &ebi },
61962306a36Sopenharmony_ci};
62062306a36Sopenharmony_ci
62162306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_pn0 = {
62262306a36Sopenharmony_ci	.name = "PN0",
62362306a36Sopenharmony_ci	.keepalive = true,
62462306a36Sopenharmony_ci	.num_nodes = 26,
62562306a36Sopenharmony_ci	.nodes = { &qhm_snoc_cfg,
62662306a36Sopenharmony_ci		   &qhs_aoss,
62762306a36Sopenharmony_ci		   &qhs_apss,
62862306a36Sopenharmony_ci		   &qhs_audio,
62962306a36Sopenharmony_ci		   &qhs_blsp1,
63062306a36Sopenharmony_ci		   &qhs_clk_ctl,
63162306a36Sopenharmony_ci		   &qhs_crypto0_cfg,
63262306a36Sopenharmony_ci		   &qhs_ddrss_cfg,
63362306a36Sopenharmony_ci		   &qhs_ecc_cfg,
63462306a36Sopenharmony_ci		   &qhs_imem_cfg,
63562306a36Sopenharmony_ci		   &qhs_ipa,
63662306a36Sopenharmony_ci		   &qhs_mss_cfg,
63762306a36Sopenharmony_ci		   &qhs_pcie_parf,
63862306a36Sopenharmony_ci		   &qhs_pdm,
63962306a36Sopenharmony_ci		   &qhs_prng,
64062306a36Sopenharmony_ci		   &qhs_qdss_cfg,
64162306a36Sopenharmony_ci		   &qhs_qpic,
64262306a36Sopenharmony_ci		   &qhs_sdc1,
64362306a36Sopenharmony_ci		   &qhs_snoc_cfg,
64462306a36Sopenharmony_ci		   &qhs_spmi_fetcher,
64562306a36Sopenharmony_ci		   &qhs_spmi_vgi_coex,
64662306a36Sopenharmony_ci		   &qhs_tcsr,
64762306a36Sopenharmony_ci		   &qhs_tlmm,
64862306a36Sopenharmony_ci		   &qhs_usb3,
64962306a36Sopenharmony_ci		   &qhs_usb3_phy,
65062306a36Sopenharmony_ci		   &srvc_snoc
65162306a36Sopenharmony_ci	},
65262306a36Sopenharmony_ci};
65362306a36Sopenharmony_ci
65462306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_pn1 = {
65562306a36Sopenharmony_ci	.name = "PN1",
65662306a36Sopenharmony_ci	.keepalive = false,
65762306a36Sopenharmony_ci	.num_nodes = 1,
65862306a36Sopenharmony_ci	.nodes = { &xm_sdc1 },
65962306a36Sopenharmony_ci};
66062306a36Sopenharmony_ci
66162306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_pn2 = {
66262306a36Sopenharmony_ci	.name = "PN2",
66362306a36Sopenharmony_ci	.keepalive = false,
66462306a36Sopenharmony_ci	.num_nodes = 2,
66562306a36Sopenharmony_ci	.nodes = { &qhm_audio, &qhm_spmi_fetcher1 },
66662306a36Sopenharmony_ci};
66762306a36Sopenharmony_ci
66862306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_pn3 = {
66962306a36Sopenharmony_ci	.name = "PN3",
67062306a36Sopenharmony_ci	.keepalive = false,
67162306a36Sopenharmony_ci	.num_nodes = 2,
67262306a36Sopenharmony_ci	.nodes = { &qhm_blsp1, &qhm_qpic },
67362306a36Sopenharmony_ci};
67462306a36Sopenharmony_ci
67562306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_pn4 = {
67662306a36Sopenharmony_ci	.name = "PN4",
67762306a36Sopenharmony_ci	.keepalive = false,
67862306a36Sopenharmony_ci	.num_nodes = 1,
67962306a36Sopenharmony_ci	.nodes = { &qxm_crypto },
68062306a36Sopenharmony_ci};
68162306a36Sopenharmony_ci
68262306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_sh0 = {
68362306a36Sopenharmony_ci	.name = "SH0",
68462306a36Sopenharmony_ci	.keepalive = true,
68562306a36Sopenharmony_ci	.num_nodes = 1,
68662306a36Sopenharmony_ci	.nodes = { &qns_llcc },
68762306a36Sopenharmony_ci};
68862306a36Sopenharmony_ci
68962306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_sh1 = {
69062306a36Sopenharmony_ci	.name = "SH1",
69162306a36Sopenharmony_ci	.keepalive = false,
69262306a36Sopenharmony_ci	.num_nodes = 1,
69362306a36Sopenharmony_ci	.nodes = { &qns_memnoc_snoc },
69462306a36Sopenharmony_ci};
69562306a36Sopenharmony_ci
69662306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_sh3 = {
69762306a36Sopenharmony_ci	.name = "SH3",
69862306a36Sopenharmony_ci	.keepalive = false,
69962306a36Sopenharmony_ci	.num_nodes = 1,
70062306a36Sopenharmony_ci	.nodes = { &xm_apps_rdwr },
70162306a36Sopenharmony_ci};
70262306a36Sopenharmony_ci
70362306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_sn0 = {
70462306a36Sopenharmony_ci	.name = "SN0",
70562306a36Sopenharmony_ci	.keepalive = true,
70662306a36Sopenharmony_ci	.num_nodes = 1,
70762306a36Sopenharmony_ci	.nodes = { &qns_snoc_memnoc },
70862306a36Sopenharmony_ci};
70962306a36Sopenharmony_ci
71062306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_sn1 = {
71162306a36Sopenharmony_ci	.name = "SN1",
71262306a36Sopenharmony_ci	.keepalive = false,
71362306a36Sopenharmony_ci	.num_nodes = 1,
71462306a36Sopenharmony_ci	.nodes = { &qxs_imem },
71562306a36Sopenharmony_ci};
71662306a36Sopenharmony_ci
71762306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_sn2 = {
71862306a36Sopenharmony_ci	.name = "SN2",
71962306a36Sopenharmony_ci	.keepalive = false,
72062306a36Sopenharmony_ci	.num_nodes = 1,
72162306a36Sopenharmony_ci	.nodes = { &xs_qdss_stm },
72262306a36Sopenharmony_ci};
72362306a36Sopenharmony_ci
72462306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_sn3 = {
72562306a36Sopenharmony_ci	.name = "SN3",
72662306a36Sopenharmony_ci	.keepalive = false,
72762306a36Sopenharmony_ci	.num_nodes = 1,
72862306a36Sopenharmony_ci	.nodes = { &xs_sys_tcu_cfg },
72962306a36Sopenharmony_ci};
73062306a36Sopenharmony_ci
73162306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_sn5 = {
73262306a36Sopenharmony_ci	.name = "SN5",
73362306a36Sopenharmony_ci	.keepalive = false,
73462306a36Sopenharmony_ci	.num_nodes = 1,
73562306a36Sopenharmony_ci	.nodes = { &xs_pcie },
73662306a36Sopenharmony_ci};
73762306a36Sopenharmony_ci
73862306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_sn6 = {
73962306a36Sopenharmony_ci	.name = "SN6",
74062306a36Sopenharmony_ci	.keepalive = false,
74162306a36Sopenharmony_ci	.num_nodes = 2,
74262306a36Sopenharmony_ci	.nodes = { &qhm_qdss_bam, &xm_qdss_etr },
74362306a36Sopenharmony_ci};
74462306a36Sopenharmony_ci
74562306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_sn7 = {
74662306a36Sopenharmony_ci	.name = "SN7",
74762306a36Sopenharmony_ci	.keepalive = false,
74862306a36Sopenharmony_ci	.num_nodes = 4,
74962306a36Sopenharmony_ci	.nodes = { &qnm_aggre_noc, &xm_pcie, &xm_usb3, &qns_aggre_noc },
75062306a36Sopenharmony_ci};
75162306a36Sopenharmony_ci
75262306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_sn8 = {
75362306a36Sopenharmony_ci	.name = "SN8",
75462306a36Sopenharmony_ci	.keepalive = false,
75562306a36Sopenharmony_ci	.num_nodes = 1,
75662306a36Sopenharmony_ci	.nodes = { &qnm_memnoc },
75762306a36Sopenharmony_ci};
75862306a36Sopenharmony_ci
75962306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_sn9 = {
76062306a36Sopenharmony_ci	.name = "SN9",
76162306a36Sopenharmony_ci	.keepalive = false,
76262306a36Sopenharmony_ci	.num_nodes = 1,
76362306a36Sopenharmony_ci	.nodes = { &qnm_memnoc_pcie },
76462306a36Sopenharmony_ci};
76562306a36Sopenharmony_ci
76662306a36Sopenharmony_cistatic struct qcom_icc_bcm bcm_sn10 = {
76762306a36Sopenharmony_ci	.name = "SN10",
76862306a36Sopenharmony_ci	.keepalive = false,
76962306a36Sopenharmony_ci	.num_nodes = 2,
77062306a36Sopenharmony_ci	.nodes = { &qnm_ipa, &xm_ipa2pcie_slv },
77162306a36Sopenharmony_ci};
77262306a36Sopenharmony_ci
77362306a36Sopenharmony_cistatic struct qcom_icc_bcm * const mc_virt_bcms[] = {
77462306a36Sopenharmony_ci	&bcm_mc0,
77562306a36Sopenharmony_ci};
77662306a36Sopenharmony_ci
77762306a36Sopenharmony_cistatic struct qcom_icc_node * const mc_virt_nodes[] = {
77862306a36Sopenharmony_ci	[MASTER_LLCC] = &llcc_mc,
77962306a36Sopenharmony_ci	[SLAVE_EBI1] = &ebi,
78062306a36Sopenharmony_ci};
78162306a36Sopenharmony_ci
78262306a36Sopenharmony_cistatic const struct qcom_icc_desc sdx65_mc_virt = {
78362306a36Sopenharmony_ci	.nodes = mc_virt_nodes,
78462306a36Sopenharmony_ci	.num_nodes = ARRAY_SIZE(mc_virt_nodes),
78562306a36Sopenharmony_ci	.bcms = mc_virt_bcms,
78662306a36Sopenharmony_ci	.num_bcms = ARRAY_SIZE(mc_virt_bcms),
78762306a36Sopenharmony_ci};
78862306a36Sopenharmony_ci
78962306a36Sopenharmony_cistatic struct qcom_icc_bcm * const mem_noc_bcms[] = {
79062306a36Sopenharmony_ci	&bcm_sh0,
79162306a36Sopenharmony_ci	&bcm_sh1,
79262306a36Sopenharmony_ci	&bcm_sh3,
79362306a36Sopenharmony_ci};
79462306a36Sopenharmony_ci
79562306a36Sopenharmony_cistatic struct qcom_icc_node * const mem_noc_nodes[] = {
79662306a36Sopenharmony_ci	[MASTER_TCU_0] = &acm_tcu,
79762306a36Sopenharmony_ci	[MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc,
79862306a36Sopenharmony_ci	[MASTER_APPSS_PROC] = &xm_apps_rdwr,
79962306a36Sopenharmony_ci	[SLAVE_LLCC] = &qns_llcc,
80062306a36Sopenharmony_ci	[SLAVE_MEM_NOC_SNOC] = &qns_memnoc_snoc,
80162306a36Sopenharmony_ci	[SLAVE_MEM_NOC_PCIE_SNOC] = &qns_sys_pcie,
80262306a36Sopenharmony_ci};
80362306a36Sopenharmony_ci
80462306a36Sopenharmony_cistatic const struct qcom_icc_desc sdx65_mem_noc = {
80562306a36Sopenharmony_ci	.nodes = mem_noc_nodes,
80662306a36Sopenharmony_ci	.num_nodes = ARRAY_SIZE(mem_noc_nodes),
80762306a36Sopenharmony_ci	.bcms = mem_noc_bcms,
80862306a36Sopenharmony_ci	.num_bcms = ARRAY_SIZE(mem_noc_bcms),
80962306a36Sopenharmony_ci};
81062306a36Sopenharmony_ci
81162306a36Sopenharmony_cistatic struct qcom_icc_bcm * const system_noc_bcms[] = {
81262306a36Sopenharmony_ci	&bcm_ce0,
81362306a36Sopenharmony_ci	&bcm_pn0,
81462306a36Sopenharmony_ci	&bcm_pn1,
81562306a36Sopenharmony_ci	&bcm_pn2,
81662306a36Sopenharmony_ci	&bcm_pn3,
81762306a36Sopenharmony_ci	&bcm_pn4,
81862306a36Sopenharmony_ci	&bcm_sn0,
81962306a36Sopenharmony_ci	&bcm_sn1,
82062306a36Sopenharmony_ci	&bcm_sn2,
82162306a36Sopenharmony_ci	&bcm_sn3,
82262306a36Sopenharmony_ci	&bcm_sn5,
82362306a36Sopenharmony_ci	&bcm_sn6,
82462306a36Sopenharmony_ci	&bcm_sn7,
82562306a36Sopenharmony_ci	&bcm_sn8,
82662306a36Sopenharmony_ci	&bcm_sn9,
82762306a36Sopenharmony_ci	&bcm_sn10,
82862306a36Sopenharmony_ci};
82962306a36Sopenharmony_ci
83062306a36Sopenharmony_cistatic struct qcom_icc_node * const system_noc_nodes[] = {
83162306a36Sopenharmony_ci	[MASTER_AUDIO] = &qhm_audio,
83262306a36Sopenharmony_ci	[MASTER_BLSP_1] = &qhm_blsp1,
83362306a36Sopenharmony_ci	[MASTER_QDSS_BAM] = &qhm_qdss_bam,
83462306a36Sopenharmony_ci	[MASTER_QPIC] = &qhm_qpic,
83562306a36Sopenharmony_ci	[MASTER_SNOC_CFG] = &qhm_snoc_cfg,
83662306a36Sopenharmony_ci	[MASTER_SPMI_FETCHER] = &qhm_spmi_fetcher1,
83762306a36Sopenharmony_ci	[MASTER_ANOC_SNOC] = &qnm_aggre_noc,
83862306a36Sopenharmony_ci	[MASTER_IPA] = &qnm_ipa,
83962306a36Sopenharmony_ci	[MASTER_MEM_NOC_SNOC] = &qnm_memnoc,
84062306a36Sopenharmony_ci	[MASTER_MEM_NOC_PCIE_SNOC] = &qnm_memnoc_pcie,
84162306a36Sopenharmony_ci	[MASTER_CRYPTO] = &qxm_crypto,
84262306a36Sopenharmony_ci	[MASTER_IPA_PCIE] = &xm_ipa2pcie_slv,
84362306a36Sopenharmony_ci	[MASTER_PCIE_0] = &xm_pcie,
84462306a36Sopenharmony_ci	[MASTER_QDSS_ETR] = &xm_qdss_etr,
84562306a36Sopenharmony_ci	[MASTER_SDCC_1] = &xm_sdc1,
84662306a36Sopenharmony_ci	[MASTER_USB3] = &xm_usb3,
84762306a36Sopenharmony_ci	[SLAVE_AOSS] = &qhs_aoss,
84862306a36Sopenharmony_ci	[SLAVE_APPSS] = &qhs_apss,
84962306a36Sopenharmony_ci	[SLAVE_AUDIO] = &qhs_audio,
85062306a36Sopenharmony_ci	[SLAVE_BLSP_1] = &qhs_blsp1,
85162306a36Sopenharmony_ci	[SLAVE_CLK_CTL] = &qhs_clk_ctl,
85262306a36Sopenharmony_ci	[SLAVE_CRYPTO_0_CFG] = &qhs_crypto0_cfg,
85362306a36Sopenharmony_ci	[SLAVE_CNOC_DDRSS] = &qhs_ddrss_cfg,
85462306a36Sopenharmony_ci	[SLAVE_ECC_CFG] = &qhs_ecc_cfg,
85562306a36Sopenharmony_ci	[SLAVE_IMEM_CFG] = &qhs_imem_cfg,
85662306a36Sopenharmony_ci	[SLAVE_IPA_CFG] = &qhs_ipa,
85762306a36Sopenharmony_ci	[SLAVE_CNOC_MSS] = &qhs_mss_cfg,
85862306a36Sopenharmony_ci	[SLAVE_PCIE_PARF] = &qhs_pcie_parf,
85962306a36Sopenharmony_ci	[SLAVE_PDM] = &qhs_pdm,
86062306a36Sopenharmony_ci	[SLAVE_PRNG] = &qhs_prng,
86162306a36Sopenharmony_ci	[SLAVE_QDSS_CFG] = &qhs_qdss_cfg,
86262306a36Sopenharmony_ci	[SLAVE_QPIC] = &qhs_qpic,
86362306a36Sopenharmony_ci	[SLAVE_SDCC_1] = &qhs_sdc1,
86462306a36Sopenharmony_ci	[SLAVE_SNOC_CFG] = &qhs_snoc_cfg,
86562306a36Sopenharmony_ci	[SLAVE_SPMI_FETCHER] = &qhs_spmi_fetcher,
86662306a36Sopenharmony_ci	[SLAVE_SPMI_VGI_COEX] = &qhs_spmi_vgi_coex,
86762306a36Sopenharmony_ci	[SLAVE_TCSR] = &qhs_tcsr,
86862306a36Sopenharmony_ci	[SLAVE_TLMM] = &qhs_tlmm,
86962306a36Sopenharmony_ci	[SLAVE_USB3] = &qhs_usb3,
87062306a36Sopenharmony_ci	[SLAVE_USB3_PHY_CFG] = &qhs_usb3_phy,
87162306a36Sopenharmony_ci	[SLAVE_ANOC_SNOC] = &qns_aggre_noc,
87262306a36Sopenharmony_ci	[SLAVE_SNOC_MEM_NOC_GC] = &qns_snoc_memnoc,
87362306a36Sopenharmony_ci	[SLAVE_IMEM] = &qxs_imem,
87462306a36Sopenharmony_ci	[SLAVE_SERVICE_SNOC] = &srvc_snoc,
87562306a36Sopenharmony_ci	[SLAVE_PCIE_0] = &xs_pcie,
87662306a36Sopenharmony_ci	[SLAVE_QDSS_STM] = &xs_qdss_stm,
87762306a36Sopenharmony_ci	[SLAVE_TCU] = &xs_sys_tcu_cfg,
87862306a36Sopenharmony_ci};
87962306a36Sopenharmony_ci
88062306a36Sopenharmony_cistatic const struct qcom_icc_desc sdx65_system_noc = {
88162306a36Sopenharmony_ci	.nodes = system_noc_nodes,
88262306a36Sopenharmony_ci	.num_nodes = ARRAY_SIZE(system_noc_nodes),
88362306a36Sopenharmony_ci	.bcms = system_noc_bcms,
88462306a36Sopenharmony_ci	.num_bcms = ARRAY_SIZE(system_noc_bcms),
88562306a36Sopenharmony_ci};
88662306a36Sopenharmony_ci
88762306a36Sopenharmony_cistatic const struct of_device_id qnoc_of_match[] = {
88862306a36Sopenharmony_ci	{ .compatible = "qcom,sdx65-mc-virt",
88962306a36Sopenharmony_ci	  .data = &sdx65_mc_virt},
89062306a36Sopenharmony_ci	{ .compatible = "qcom,sdx65-mem-noc",
89162306a36Sopenharmony_ci	  .data = &sdx65_mem_noc},
89262306a36Sopenharmony_ci	{ .compatible = "qcom,sdx65-system-noc",
89362306a36Sopenharmony_ci	  .data = &sdx65_system_noc},
89462306a36Sopenharmony_ci	{ }
89562306a36Sopenharmony_ci};
89662306a36Sopenharmony_ciMODULE_DEVICE_TABLE(of, qnoc_of_match);
89762306a36Sopenharmony_ci
89862306a36Sopenharmony_cistatic struct platform_driver qnoc_driver = {
89962306a36Sopenharmony_ci	.probe = qcom_icc_rpmh_probe,
90062306a36Sopenharmony_ci	.remove = qcom_icc_rpmh_remove,
90162306a36Sopenharmony_ci	.driver = {
90262306a36Sopenharmony_ci		.name = "qnoc-sdx65",
90362306a36Sopenharmony_ci		.of_match_table = qnoc_of_match,
90462306a36Sopenharmony_ci		.sync_state = icc_sync_state,
90562306a36Sopenharmony_ci	},
90662306a36Sopenharmony_ci};
90762306a36Sopenharmony_cimodule_platform_driver(qnoc_driver);
90862306a36Sopenharmony_ci
90962306a36Sopenharmony_ciMODULE_DESCRIPTION("Qualcomm SDX65 NoC driver");
91062306a36Sopenharmony_ciMODULE_LICENSE("GPL v2");
911