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