xref: /linux/drivers/interconnect/qcom/qcs404.c (revision c771600c6af14749609b49565ffb4cac2959710d)
15e4e6c4dSBjorn Andersson // SPDX-License-Identifier: GPL-2.0
25e4e6c4dSBjorn Andersson /*
35e4e6c4dSBjorn Andersson  * Copyright (C) 2019 Linaro Ltd
45e4e6c4dSBjorn Andersson  */
55e4e6c4dSBjorn Andersson 
65e4e6c4dSBjorn Andersson #include <dt-bindings/interconnect/qcom,qcs404.h>
75e4e6c4dSBjorn Andersson #include <linux/device.h>
85e4e6c4dSBjorn Andersson #include <linux/interconnect-provider.h>
95e4e6c4dSBjorn Andersson #include <linux/io.h>
105e4e6c4dSBjorn Andersson #include <linux/module.h>
11cff66aceSRob Herring #include <linux/mod_devicetable.h>
125e4e6c4dSBjorn Andersson #include <linux/platform_device.h>
137f3ea8a9SAdam Skladowski #include <linux/regmap.h>
14dfbd988fSJun Nie 
155e4e6c4dSBjorn Andersson 
16dfbd988fSJun Nie #include "icc-rpm.h"
175e4e6c4dSBjorn Andersson 
185e4e6c4dSBjorn Andersson enum {
195e4e6c4dSBjorn Andersson 	QCS404_MASTER_AMPSS_M0 = 1,
205e4e6c4dSBjorn Andersson 	QCS404_MASTER_GRAPHICS_3D,
215e4e6c4dSBjorn Andersson 	QCS404_MASTER_MDP_PORT0,
225e4e6c4dSBjorn Andersson 	QCS404_SNOC_BIMC_1_MAS,
235e4e6c4dSBjorn Andersson 	QCS404_MASTER_TCU_0,
245e4e6c4dSBjorn Andersson 	QCS404_MASTER_SPDM,
255e4e6c4dSBjorn Andersson 	QCS404_MASTER_BLSP_1,
265e4e6c4dSBjorn Andersson 	QCS404_MASTER_BLSP_2,
275e4e6c4dSBjorn Andersson 	QCS404_MASTER_XM_USB_HS1,
285e4e6c4dSBjorn Andersson 	QCS404_MASTER_CRYPTO_CORE0,
295e4e6c4dSBjorn Andersson 	QCS404_MASTER_SDCC_1,
305e4e6c4dSBjorn Andersson 	QCS404_MASTER_SDCC_2,
315e4e6c4dSBjorn Andersson 	QCS404_SNOC_PNOC_MAS,
325e4e6c4dSBjorn Andersson 	QCS404_MASTER_QPIC,
335e4e6c4dSBjorn Andersson 	QCS404_MASTER_QDSS_BAM,
345e4e6c4dSBjorn Andersson 	QCS404_BIMC_SNOC_MAS,
355e4e6c4dSBjorn Andersson 	QCS404_PNOC_SNOC_MAS,
365e4e6c4dSBjorn Andersson 	QCS404_MASTER_QDSS_ETR,
375e4e6c4dSBjorn Andersson 	QCS404_MASTER_EMAC,
385e4e6c4dSBjorn Andersson 	QCS404_MASTER_PCIE,
395e4e6c4dSBjorn Andersson 	QCS404_MASTER_USB3,
405e4e6c4dSBjorn Andersson 	QCS404_PNOC_INT_0,
415e4e6c4dSBjorn Andersson 	QCS404_PNOC_INT_2,
425e4e6c4dSBjorn Andersson 	QCS404_PNOC_INT_3,
435e4e6c4dSBjorn Andersson 	QCS404_PNOC_SLV_0,
445e4e6c4dSBjorn Andersson 	QCS404_PNOC_SLV_1,
455e4e6c4dSBjorn Andersson 	QCS404_PNOC_SLV_2,
465e4e6c4dSBjorn Andersson 	QCS404_PNOC_SLV_3,
475e4e6c4dSBjorn Andersson 	QCS404_PNOC_SLV_4,
485e4e6c4dSBjorn Andersson 	QCS404_PNOC_SLV_6,
495e4e6c4dSBjorn Andersson 	QCS404_PNOC_SLV_7,
505e4e6c4dSBjorn Andersson 	QCS404_PNOC_SLV_8,
515e4e6c4dSBjorn Andersson 	QCS404_PNOC_SLV_9,
525e4e6c4dSBjorn Andersson 	QCS404_PNOC_SLV_10,
535e4e6c4dSBjorn Andersson 	QCS404_PNOC_SLV_11,
545e4e6c4dSBjorn Andersson 	QCS404_SNOC_QDSS_INT,
555e4e6c4dSBjorn Andersson 	QCS404_SNOC_INT_0,
565e4e6c4dSBjorn Andersson 	QCS404_SNOC_INT_1,
575e4e6c4dSBjorn Andersson 	QCS404_SNOC_INT_2,
585e4e6c4dSBjorn Andersson 	QCS404_SLAVE_EBI_CH0,
595e4e6c4dSBjorn Andersson 	QCS404_BIMC_SNOC_SLV,
605e4e6c4dSBjorn Andersson 	QCS404_SLAVE_SPDM_WRAPPER,
615e4e6c4dSBjorn Andersson 	QCS404_SLAVE_PDM,
625e4e6c4dSBjorn Andersson 	QCS404_SLAVE_PRNG,
635e4e6c4dSBjorn Andersson 	QCS404_SLAVE_TCSR,
645e4e6c4dSBjorn Andersson 	QCS404_SLAVE_SNOC_CFG,
655e4e6c4dSBjorn Andersson 	QCS404_SLAVE_MESSAGE_RAM,
665e4e6c4dSBjorn Andersson 	QCS404_SLAVE_DISPLAY_CFG,
675e4e6c4dSBjorn Andersson 	QCS404_SLAVE_GRAPHICS_3D_CFG,
685e4e6c4dSBjorn Andersson 	QCS404_SLAVE_BLSP_1,
695e4e6c4dSBjorn Andersson 	QCS404_SLAVE_TLMM_NORTH,
705e4e6c4dSBjorn Andersson 	QCS404_SLAVE_PCIE_1,
715e4e6c4dSBjorn Andersson 	QCS404_SLAVE_EMAC_CFG,
725e4e6c4dSBjorn Andersson 	QCS404_SLAVE_BLSP_2,
735e4e6c4dSBjorn Andersson 	QCS404_SLAVE_TLMM_EAST,
745e4e6c4dSBjorn Andersson 	QCS404_SLAVE_TCU,
755e4e6c4dSBjorn Andersson 	QCS404_SLAVE_PMIC_ARB,
765e4e6c4dSBjorn Andersson 	QCS404_SLAVE_SDCC_1,
775e4e6c4dSBjorn Andersson 	QCS404_SLAVE_SDCC_2,
785e4e6c4dSBjorn Andersson 	QCS404_SLAVE_TLMM_SOUTH,
795e4e6c4dSBjorn Andersson 	QCS404_SLAVE_USB_HS,
805e4e6c4dSBjorn Andersson 	QCS404_SLAVE_USB3,
815e4e6c4dSBjorn Andersson 	QCS404_SLAVE_CRYPTO_0_CFG,
825e4e6c4dSBjorn Andersson 	QCS404_PNOC_SNOC_SLV,
835e4e6c4dSBjorn Andersson 	QCS404_SLAVE_APPSS,
845e4e6c4dSBjorn Andersson 	QCS404_SLAVE_WCSS,
855e4e6c4dSBjorn Andersson 	QCS404_SNOC_BIMC_1_SLV,
865e4e6c4dSBjorn Andersson 	QCS404_SLAVE_OCIMEM,
875e4e6c4dSBjorn Andersson 	QCS404_SNOC_PNOC_SLV,
885e4e6c4dSBjorn Andersson 	QCS404_SLAVE_QDSS_STM,
895e4e6c4dSBjorn Andersson 	QCS404_SLAVE_CATS_128,
905e4e6c4dSBjorn Andersson 	QCS404_SLAVE_OCMEM_64,
915e4e6c4dSBjorn Andersson 	QCS404_SLAVE_LPASS,
925e4e6c4dSBjorn Andersson };
935e4e6c4dSBjorn Andersson 
9442f236e2SDmitry Baryshkov static const u16 mas_apps_proc_links[] = {
9542f236e2SDmitry Baryshkov 	QCS404_SLAVE_EBI_CH0,
9642f236e2SDmitry Baryshkov 	QCS404_BIMC_SNOC_SLV
9742f236e2SDmitry Baryshkov };
9842f236e2SDmitry Baryshkov 
9942f236e2SDmitry Baryshkov static struct qcom_icc_node mas_apps_proc = {
10042f236e2SDmitry Baryshkov 	.name = "mas_apps_proc",
10142f236e2SDmitry Baryshkov 	.id = QCS404_MASTER_AMPSS_M0,
10242f236e2SDmitry Baryshkov 	.buswidth = 8,
10342f236e2SDmitry Baryshkov 	.mas_rpm_id = 0,
10442f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
10516e5d505SAdam Skladowski 	.qos.ap_owned = true,
10616e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
10716e5d505SAdam Skladowski 	.qos.areq_prio = 0,
10816e5d505SAdam Skladowski 	.qos.prio_level = 0,
10916e5d505SAdam Skladowski 	.qos.qos_port = 0,
11042f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_apps_proc_links),
11142f236e2SDmitry Baryshkov 	.links = mas_apps_proc_links,
11242f236e2SDmitry Baryshkov };
11342f236e2SDmitry Baryshkov 
11442f236e2SDmitry Baryshkov static const u16 mas_oxili_links[] = {
11542f236e2SDmitry Baryshkov 	QCS404_SLAVE_EBI_CH0,
11642f236e2SDmitry Baryshkov 	QCS404_BIMC_SNOC_SLV
11742f236e2SDmitry Baryshkov };
11842f236e2SDmitry Baryshkov 
11942f236e2SDmitry Baryshkov static struct qcom_icc_node mas_oxili = {
12042f236e2SDmitry Baryshkov 	.name = "mas_oxili",
12142f236e2SDmitry Baryshkov 	.id = QCS404_MASTER_GRAPHICS_3D,
12242f236e2SDmitry Baryshkov 	.buswidth = 8,
12342f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
12442f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
12516e5d505SAdam Skladowski 	.qos.ap_owned = true,
12616e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
12716e5d505SAdam Skladowski 	.qos.areq_prio = 0,
12816e5d505SAdam Skladowski 	.qos.prio_level = 0,
12916e5d505SAdam Skladowski 	.qos.qos_port = 2,
13042f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_oxili_links),
13142f236e2SDmitry Baryshkov 	.links = mas_oxili_links,
13242f236e2SDmitry Baryshkov };
13342f236e2SDmitry Baryshkov 
13442f236e2SDmitry Baryshkov static const u16 mas_mdp_links[] = {
13542f236e2SDmitry Baryshkov 	QCS404_SLAVE_EBI_CH0,
13642f236e2SDmitry Baryshkov 	QCS404_BIMC_SNOC_SLV
13742f236e2SDmitry Baryshkov };
13842f236e2SDmitry Baryshkov 
13942f236e2SDmitry Baryshkov static struct qcom_icc_node mas_mdp = {
14042f236e2SDmitry Baryshkov 	.name = "mas_mdp",
14142f236e2SDmitry Baryshkov 	.id = QCS404_MASTER_MDP_PORT0,
14242f236e2SDmitry Baryshkov 	.buswidth = 8,
14342f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
14442f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
14516e5d505SAdam Skladowski 	.qos.ap_owned = true,
14616e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
14716e5d505SAdam Skladowski 	.qos.areq_prio = 0,
14816e5d505SAdam Skladowski 	.qos.prio_level = 1,
14916e5d505SAdam Skladowski 	.qos.qos_port = 4,
15042f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_mdp_links),
15142f236e2SDmitry Baryshkov 	.links = mas_mdp_links,
15242f236e2SDmitry Baryshkov };
15342f236e2SDmitry Baryshkov 
15442f236e2SDmitry Baryshkov static const u16 mas_snoc_bimc_1_links[] = {
15542f236e2SDmitry Baryshkov 	QCS404_SLAVE_EBI_CH0
15642f236e2SDmitry Baryshkov };
15742f236e2SDmitry Baryshkov 
15842f236e2SDmitry Baryshkov static struct qcom_icc_node mas_snoc_bimc_1 = {
15942f236e2SDmitry Baryshkov 	.name = "mas_snoc_bimc_1",
16042f236e2SDmitry Baryshkov 	.id = QCS404_SNOC_BIMC_1_MAS,
16142f236e2SDmitry Baryshkov 	.buswidth = 8,
16242f236e2SDmitry Baryshkov 	.mas_rpm_id = 76,
16342f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
16416e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
16516e5d505SAdam Skladowski 	.qos.areq_prio = 0,
16616e5d505SAdam Skladowski 	.qos.prio_level = 0,
16716e5d505SAdam Skladowski 	.qos.qos_port = 5,
16842f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_snoc_bimc_1_links),
16942f236e2SDmitry Baryshkov 	.links = mas_snoc_bimc_1_links,
17042f236e2SDmitry Baryshkov };
17142f236e2SDmitry Baryshkov 
17242f236e2SDmitry Baryshkov static const u16 mas_tcu_0_links[] = {
17342f236e2SDmitry Baryshkov 	QCS404_SLAVE_EBI_CH0,
17442f236e2SDmitry Baryshkov 	QCS404_BIMC_SNOC_SLV
17542f236e2SDmitry Baryshkov };
17642f236e2SDmitry Baryshkov 
17742f236e2SDmitry Baryshkov static struct qcom_icc_node mas_tcu_0 = {
17842f236e2SDmitry Baryshkov 	.name = "mas_tcu_0",
17942f236e2SDmitry Baryshkov 	.id = QCS404_MASTER_TCU_0,
18042f236e2SDmitry Baryshkov 	.buswidth = 8,
18142f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
18242f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
18316e5d505SAdam Skladowski 	.qos.ap_owned = true,
18416e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
18516e5d505SAdam Skladowski 	.qos.areq_prio = 0,
18616e5d505SAdam Skladowski 	.qos.prio_level = 2,
18716e5d505SAdam Skladowski 	.qos.qos_port = 6,
18842f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_tcu_0_links),
18942f236e2SDmitry Baryshkov 	.links = mas_tcu_0_links,
19042f236e2SDmitry Baryshkov };
19142f236e2SDmitry Baryshkov 
19242f236e2SDmitry Baryshkov static const u16 mas_spdm_links[] = {
19342f236e2SDmitry Baryshkov 	QCS404_PNOC_INT_3
19442f236e2SDmitry Baryshkov };
19542f236e2SDmitry Baryshkov 
19642f236e2SDmitry Baryshkov static struct qcom_icc_node mas_spdm = {
19742f236e2SDmitry Baryshkov 	.name = "mas_spdm",
19842f236e2SDmitry Baryshkov 	.id = QCS404_MASTER_SPDM,
19942f236e2SDmitry Baryshkov 	.buswidth = 4,
20042f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
20142f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
20216e5d505SAdam Skladowski 	.qos.ap_owned = true,
20316e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
20442f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_spdm_links),
20542f236e2SDmitry Baryshkov 	.links = mas_spdm_links,
20642f236e2SDmitry Baryshkov };
20742f236e2SDmitry Baryshkov 
20842f236e2SDmitry Baryshkov static const u16 mas_blsp_1_links[] = {
20942f236e2SDmitry Baryshkov 	QCS404_PNOC_INT_3
21042f236e2SDmitry Baryshkov };
21142f236e2SDmitry Baryshkov 
21242f236e2SDmitry Baryshkov static struct qcom_icc_node mas_blsp_1 = {
21342f236e2SDmitry Baryshkov 	.name = "mas_blsp_1",
21442f236e2SDmitry Baryshkov 	.id = QCS404_MASTER_BLSP_1,
21542f236e2SDmitry Baryshkov 	.buswidth = 4,
21642f236e2SDmitry Baryshkov 	.mas_rpm_id = 41,
21742f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
21842f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_blsp_1_links),
21942f236e2SDmitry Baryshkov 	.links = mas_blsp_1_links,
22042f236e2SDmitry Baryshkov };
22142f236e2SDmitry Baryshkov 
22242f236e2SDmitry Baryshkov static const u16 mas_blsp_2_links[] = {
22342f236e2SDmitry Baryshkov 	QCS404_PNOC_INT_3
22442f236e2SDmitry Baryshkov };
22542f236e2SDmitry Baryshkov 
22642f236e2SDmitry Baryshkov static struct qcom_icc_node mas_blsp_2 = {
22742f236e2SDmitry Baryshkov 	.name = "mas_blsp_2",
22842f236e2SDmitry Baryshkov 	.id = QCS404_MASTER_BLSP_2,
22942f236e2SDmitry Baryshkov 	.buswidth = 4,
23042f236e2SDmitry Baryshkov 	.mas_rpm_id = 39,
23142f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
23242f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_blsp_2_links),
23342f236e2SDmitry Baryshkov 	.links = mas_blsp_2_links,
23442f236e2SDmitry Baryshkov };
23542f236e2SDmitry Baryshkov 
23642f236e2SDmitry Baryshkov static const u16 mas_xi_usb_hs1_links[] = {
23742f236e2SDmitry Baryshkov 	QCS404_PNOC_INT_0
23842f236e2SDmitry Baryshkov };
23942f236e2SDmitry Baryshkov 
24042f236e2SDmitry Baryshkov static struct qcom_icc_node mas_xi_usb_hs1 = {
24142f236e2SDmitry Baryshkov 	.name = "mas_xi_usb_hs1",
24242f236e2SDmitry Baryshkov 	.id = QCS404_MASTER_XM_USB_HS1,
24342f236e2SDmitry Baryshkov 	.buswidth = 8,
24442f236e2SDmitry Baryshkov 	.mas_rpm_id = 138,
24542f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
24642f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_xi_usb_hs1_links),
24742f236e2SDmitry Baryshkov 	.links = mas_xi_usb_hs1_links,
24842f236e2SDmitry Baryshkov };
24942f236e2SDmitry Baryshkov 
25042f236e2SDmitry Baryshkov static const u16 mas_crypto_links[] = {
25142f236e2SDmitry Baryshkov 	QCS404_PNOC_SNOC_SLV,
25242f236e2SDmitry Baryshkov 	QCS404_PNOC_INT_2
25342f236e2SDmitry Baryshkov };
25442f236e2SDmitry Baryshkov 
25542f236e2SDmitry Baryshkov static struct qcom_icc_node mas_crypto = {
25642f236e2SDmitry Baryshkov 	.name = "mas_crypto",
25742f236e2SDmitry Baryshkov 	.id = QCS404_MASTER_CRYPTO_CORE0,
25842f236e2SDmitry Baryshkov 	.buswidth = 8,
25942f236e2SDmitry Baryshkov 	.mas_rpm_id = 23,
26042f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
26116e5d505SAdam Skladowski 	.qos.ap_owned = true,
26216e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
26316e5d505SAdam Skladowski 	.qos.areq_prio = 1,
26416e5d505SAdam Skladowski 	.qos.prio_level = 1,
26516e5d505SAdam Skladowski 	.qos.qos_port = 0,
26642f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_crypto_links),
26742f236e2SDmitry Baryshkov 	.links = mas_crypto_links,
26842f236e2SDmitry Baryshkov };
26942f236e2SDmitry Baryshkov 
27042f236e2SDmitry Baryshkov static const u16 mas_sdcc_1_links[] = {
27142f236e2SDmitry Baryshkov 	QCS404_PNOC_INT_0
27242f236e2SDmitry Baryshkov };
27342f236e2SDmitry Baryshkov 
27442f236e2SDmitry Baryshkov static struct qcom_icc_node mas_sdcc_1 = {
27542f236e2SDmitry Baryshkov 	.name = "mas_sdcc_1",
27642f236e2SDmitry Baryshkov 	.id = QCS404_MASTER_SDCC_1,
27742f236e2SDmitry Baryshkov 	.buswidth = 8,
27842f236e2SDmitry Baryshkov 	.mas_rpm_id = 33,
27942f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
28042f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_sdcc_1_links),
28142f236e2SDmitry Baryshkov 	.links = mas_sdcc_1_links,
28242f236e2SDmitry Baryshkov };
28342f236e2SDmitry Baryshkov 
28442f236e2SDmitry Baryshkov static const u16 mas_sdcc_2_links[] = {
28542f236e2SDmitry Baryshkov 	QCS404_PNOC_INT_0
28642f236e2SDmitry Baryshkov };
28742f236e2SDmitry Baryshkov 
28842f236e2SDmitry Baryshkov static struct qcom_icc_node mas_sdcc_2 = {
28942f236e2SDmitry Baryshkov 	.name = "mas_sdcc_2",
29042f236e2SDmitry Baryshkov 	.id = QCS404_MASTER_SDCC_2,
29142f236e2SDmitry Baryshkov 	.buswidth = 8,
29242f236e2SDmitry Baryshkov 	.mas_rpm_id = 35,
29342f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
29442f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_sdcc_2_links),
29542f236e2SDmitry Baryshkov 	.links = mas_sdcc_2_links,
29642f236e2SDmitry Baryshkov };
29742f236e2SDmitry Baryshkov 
29842f236e2SDmitry Baryshkov static const u16 mas_snoc_pcnoc_links[] = {
29942f236e2SDmitry Baryshkov 	QCS404_PNOC_INT_2
30042f236e2SDmitry Baryshkov };
30142f236e2SDmitry Baryshkov 
30242f236e2SDmitry Baryshkov static struct qcom_icc_node mas_snoc_pcnoc = {
30342f236e2SDmitry Baryshkov 	.name = "mas_snoc_pcnoc",
30442f236e2SDmitry Baryshkov 	.id = QCS404_SNOC_PNOC_MAS,
30542f236e2SDmitry Baryshkov 	.buswidth = 8,
30642f236e2SDmitry Baryshkov 	.mas_rpm_id = 77,
30742f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
30842f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_snoc_pcnoc_links),
30942f236e2SDmitry Baryshkov 	.links = mas_snoc_pcnoc_links,
31042f236e2SDmitry Baryshkov };
31142f236e2SDmitry Baryshkov 
31242f236e2SDmitry Baryshkov static const u16 mas_qpic_links[] = {
31342f236e2SDmitry Baryshkov 	QCS404_PNOC_INT_0
31442f236e2SDmitry Baryshkov };
31542f236e2SDmitry Baryshkov 
31642f236e2SDmitry Baryshkov static struct qcom_icc_node mas_qpic = {
31742f236e2SDmitry Baryshkov 	.name = "mas_qpic",
31842f236e2SDmitry Baryshkov 	.id = QCS404_MASTER_QPIC,
31942f236e2SDmitry Baryshkov 	.buswidth = 4,
32042f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
32142f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
32216e5d505SAdam Skladowski 	.qos.ap_owned = true,
32316e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
32416e5d505SAdam Skladowski 	.qos.areq_prio = 1,
32516e5d505SAdam Skladowski 	.qos.prio_level = 1,
32616e5d505SAdam Skladowski 	.qos.qos_port = 14,
32742f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_qpic_links),
32842f236e2SDmitry Baryshkov 	.links = mas_qpic_links,
32942f236e2SDmitry Baryshkov };
33042f236e2SDmitry Baryshkov 
33142f236e2SDmitry Baryshkov static const u16 mas_qdss_bam_links[] = {
33242f236e2SDmitry Baryshkov 	QCS404_SNOC_QDSS_INT
33342f236e2SDmitry Baryshkov };
33442f236e2SDmitry Baryshkov 
33542f236e2SDmitry Baryshkov static struct qcom_icc_node mas_qdss_bam = {
33642f236e2SDmitry Baryshkov 	.name = "mas_qdss_bam",
33742f236e2SDmitry Baryshkov 	.id = QCS404_MASTER_QDSS_BAM,
33842f236e2SDmitry Baryshkov 	.buswidth = 4,
33942f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
34042f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
34116e5d505SAdam Skladowski 	.qos.ap_owned = true,
34216e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
34316e5d505SAdam Skladowski 	.qos.areq_prio = 1,
34416e5d505SAdam Skladowski 	.qos.prio_level = 1,
34516e5d505SAdam Skladowski 	.qos.qos_port = 1,
34642f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_qdss_bam_links),
34742f236e2SDmitry Baryshkov 	.links = mas_qdss_bam_links,
34842f236e2SDmitry Baryshkov };
34942f236e2SDmitry Baryshkov 
35042f236e2SDmitry Baryshkov static const u16 mas_bimc_snoc_links[] = {
35142f236e2SDmitry Baryshkov 	QCS404_SLAVE_OCMEM_64,
35242f236e2SDmitry Baryshkov 	QCS404_SLAVE_CATS_128,
35342f236e2SDmitry Baryshkov 	QCS404_SNOC_INT_0,
35442f236e2SDmitry Baryshkov 	QCS404_SNOC_INT_1
35542f236e2SDmitry Baryshkov };
35642f236e2SDmitry Baryshkov 
35742f236e2SDmitry Baryshkov static struct qcom_icc_node mas_bimc_snoc = {
35842f236e2SDmitry Baryshkov 	.name = "mas_bimc_snoc",
35942f236e2SDmitry Baryshkov 	.id = QCS404_BIMC_SNOC_MAS,
36042f236e2SDmitry Baryshkov 	.buswidth = 8,
36142f236e2SDmitry Baryshkov 	.mas_rpm_id = 21,
36242f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
36342f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_bimc_snoc_links),
36442f236e2SDmitry Baryshkov 	.links = mas_bimc_snoc_links,
36542f236e2SDmitry Baryshkov };
36642f236e2SDmitry Baryshkov 
36742f236e2SDmitry Baryshkov static const u16 mas_pcnoc_snoc_links[] = {
36842f236e2SDmitry Baryshkov 	QCS404_SNOC_BIMC_1_SLV,
36942f236e2SDmitry Baryshkov 	QCS404_SNOC_INT_2,
37042f236e2SDmitry Baryshkov 	QCS404_SNOC_INT_0
37142f236e2SDmitry Baryshkov };
37242f236e2SDmitry Baryshkov 
37342f236e2SDmitry Baryshkov static struct qcom_icc_node mas_pcnoc_snoc = {
37442f236e2SDmitry Baryshkov 	.name = "mas_pcnoc_snoc",
37542f236e2SDmitry Baryshkov 	.id = QCS404_PNOC_SNOC_MAS,
37642f236e2SDmitry Baryshkov 	.buswidth = 8,
37742f236e2SDmitry Baryshkov 	.mas_rpm_id = 29,
37842f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
37942f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_pcnoc_snoc_links),
38042f236e2SDmitry Baryshkov 	.links = mas_pcnoc_snoc_links,
38142f236e2SDmitry Baryshkov };
38242f236e2SDmitry Baryshkov 
38342f236e2SDmitry Baryshkov static const u16 mas_qdss_etr_links[] = {
38442f236e2SDmitry Baryshkov 	QCS404_SNOC_QDSS_INT
38542f236e2SDmitry Baryshkov };
38642f236e2SDmitry Baryshkov 
38742f236e2SDmitry Baryshkov static struct qcom_icc_node mas_qdss_etr = {
38842f236e2SDmitry Baryshkov 	.name = "mas_qdss_etr",
38942f236e2SDmitry Baryshkov 	.id = QCS404_MASTER_QDSS_ETR,
39042f236e2SDmitry Baryshkov 	.buswidth = 8,
39142f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
39242f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
39316e5d505SAdam Skladowski 	.qos.ap_owned = true,
39416e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
39516e5d505SAdam Skladowski 	.qos.areq_prio = 1,
39616e5d505SAdam Skladowski 	.qos.prio_level = 1,
39716e5d505SAdam Skladowski 	.qos.qos_port = 0,
39842f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_qdss_etr_links),
39942f236e2SDmitry Baryshkov 	.links = mas_qdss_etr_links,
40042f236e2SDmitry Baryshkov };
40142f236e2SDmitry Baryshkov 
40242f236e2SDmitry Baryshkov static const u16 mas_emac_links[] = {
40342f236e2SDmitry Baryshkov 	QCS404_SNOC_BIMC_1_SLV,
40442f236e2SDmitry Baryshkov 	QCS404_SNOC_INT_1
40542f236e2SDmitry Baryshkov };
40642f236e2SDmitry Baryshkov 
40742f236e2SDmitry Baryshkov static struct qcom_icc_node mas_emac = {
40842f236e2SDmitry Baryshkov 	.name = "mas_emac",
40942f236e2SDmitry Baryshkov 	.id = QCS404_MASTER_EMAC,
41042f236e2SDmitry Baryshkov 	.buswidth = 8,
41142f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
41242f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
41316e5d505SAdam Skladowski 	.qos.ap_owned = true,
41416e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
41516e5d505SAdam Skladowski 	.qos.areq_prio = 1,
41616e5d505SAdam Skladowski 	.qos.prio_level = 1,
41716e5d505SAdam Skladowski 	.qos.qos_port = 17,
41842f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_emac_links),
41942f236e2SDmitry Baryshkov 	.links = mas_emac_links,
42042f236e2SDmitry Baryshkov };
42142f236e2SDmitry Baryshkov 
42242f236e2SDmitry Baryshkov static const u16 mas_pcie_links[] = {
42342f236e2SDmitry Baryshkov 	QCS404_SNOC_BIMC_1_SLV,
42442f236e2SDmitry Baryshkov 	QCS404_SNOC_INT_1
42542f236e2SDmitry Baryshkov };
42642f236e2SDmitry Baryshkov 
42742f236e2SDmitry Baryshkov static struct qcom_icc_node mas_pcie = {
42842f236e2SDmitry Baryshkov 	.name = "mas_pcie",
42942f236e2SDmitry Baryshkov 	.id = QCS404_MASTER_PCIE,
43042f236e2SDmitry Baryshkov 	.buswidth = 8,
43142f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
43242f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
43316e5d505SAdam Skladowski 	.qos.ap_owned = true,
43416e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
43516e5d505SAdam Skladowski 	.qos.areq_prio = 1,
43616e5d505SAdam Skladowski 	.qos.prio_level = 1,
43716e5d505SAdam Skladowski 	.qos.qos_port = 8,
43842f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_pcie_links),
43942f236e2SDmitry Baryshkov 	.links = mas_pcie_links,
44042f236e2SDmitry Baryshkov };
44142f236e2SDmitry Baryshkov 
44242f236e2SDmitry Baryshkov static const u16 mas_usb3_links[] = {
44342f236e2SDmitry Baryshkov 	QCS404_SNOC_BIMC_1_SLV,
44442f236e2SDmitry Baryshkov 	QCS404_SNOC_INT_1
44542f236e2SDmitry Baryshkov };
44642f236e2SDmitry Baryshkov 
44742f236e2SDmitry Baryshkov static struct qcom_icc_node mas_usb3 = {
44842f236e2SDmitry Baryshkov 	.name = "mas_usb3",
44942f236e2SDmitry Baryshkov 	.id = QCS404_MASTER_USB3,
45042f236e2SDmitry Baryshkov 	.buswidth = 8,
45142f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
45242f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
45316e5d505SAdam Skladowski 	.qos.ap_owned = true,
45416e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
45516e5d505SAdam Skladowski 	.qos.areq_prio = 1,
45616e5d505SAdam Skladowski 	.qos.prio_level = 1,
45716e5d505SAdam Skladowski 	.qos.qos_port = 16,
45842f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(mas_usb3_links),
45942f236e2SDmitry Baryshkov 	.links = mas_usb3_links,
46042f236e2SDmitry Baryshkov };
46142f236e2SDmitry Baryshkov 
46242f236e2SDmitry Baryshkov static const u16 pcnoc_int_0_links[] = {
46342f236e2SDmitry Baryshkov 	QCS404_PNOC_SNOC_SLV,
46442f236e2SDmitry Baryshkov 	QCS404_PNOC_INT_2
46542f236e2SDmitry Baryshkov };
46642f236e2SDmitry Baryshkov 
46742f236e2SDmitry Baryshkov static struct qcom_icc_node pcnoc_int_0 = {
46842f236e2SDmitry Baryshkov 	.name = "pcnoc_int_0",
46942f236e2SDmitry Baryshkov 	.id = QCS404_PNOC_INT_0,
47042f236e2SDmitry Baryshkov 	.buswidth = 8,
47142f236e2SDmitry Baryshkov 	.mas_rpm_id = 85,
47242f236e2SDmitry Baryshkov 	.slv_rpm_id = 114,
47342f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(pcnoc_int_0_links),
47442f236e2SDmitry Baryshkov 	.links = pcnoc_int_0_links,
47542f236e2SDmitry Baryshkov };
47642f236e2SDmitry Baryshkov 
47742f236e2SDmitry Baryshkov static const u16 pcnoc_int_2_links[] = {
47842f236e2SDmitry Baryshkov 	QCS404_PNOC_SLV_10,
47942f236e2SDmitry Baryshkov 	QCS404_SLAVE_TCU,
48042f236e2SDmitry Baryshkov 	QCS404_PNOC_SLV_11,
48142f236e2SDmitry Baryshkov 	QCS404_PNOC_SLV_2,
48242f236e2SDmitry Baryshkov 	QCS404_PNOC_SLV_3,
48342f236e2SDmitry Baryshkov 	QCS404_PNOC_SLV_0,
48442f236e2SDmitry Baryshkov 	QCS404_PNOC_SLV_1,
48542f236e2SDmitry Baryshkov 	QCS404_PNOC_SLV_6,
48642f236e2SDmitry Baryshkov 	QCS404_PNOC_SLV_7,
48742f236e2SDmitry Baryshkov 	QCS404_PNOC_SLV_4,
48842f236e2SDmitry Baryshkov 	QCS404_PNOC_SLV_8,
48942f236e2SDmitry Baryshkov 	QCS404_PNOC_SLV_9
49042f236e2SDmitry Baryshkov };
49142f236e2SDmitry Baryshkov 
49242f236e2SDmitry Baryshkov static struct qcom_icc_node pcnoc_int_2 = {
49342f236e2SDmitry Baryshkov 	.name = "pcnoc_int_2",
49442f236e2SDmitry Baryshkov 	.id = QCS404_PNOC_INT_2,
49542f236e2SDmitry Baryshkov 	.buswidth = 8,
49642f236e2SDmitry Baryshkov 	.mas_rpm_id = 124,
49742f236e2SDmitry Baryshkov 	.slv_rpm_id = 184,
49842f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(pcnoc_int_2_links),
49942f236e2SDmitry Baryshkov 	.links = pcnoc_int_2_links,
50042f236e2SDmitry Baryshkov };
50142f236e2SDmitry Baryshkov 
50242f236e2SDmitry Baryshkov static const u16 pcnoc_int_3_links[] = {
50342f236e2SDmitry Baryshkov 	QCS404_PNOC_SNOC_SLV
50442f236e2SDmitry Baryshkov };
50542f236e2SDmitry Baryshkov 
50642f236e2SDmitry Baryshkov static struct qcom_icc_node pcnoc_int_3 = {
50742f236e2SDmitry Baryshkov 	.name = "pcnoc_int_3",
50842f236e2SDmitry Baryshkov 	.id = QCS404_PNOC_INT_3,
50942f236e2SDmitry Baryshkov 	.buswidth = 8,
51042f236e2SDmitry Baryshkov 	.mas_rpm_id = 125,
51142f236e2SDmitry Baryshkov 	.slv_rpm_id = 185,
51242f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(pcnoc_int_3_links),
51342f236e2SDmitry Baryshkov 	.links = pcnoc_int_3_links,
51442f236e2SDmitry Baryshkov };
51542f236e2SDmitry Baryshkov 
51642f236e2SDmitry Baryshkov static const u16 pcnoc_s_0_links[] = {
51742f236e2SDmitry Baryshkov 	QCS404_SLAVE_PRNG,
51842f236e2SDmitry Baryshkov 	QCS404_SLAVE_SPDM_WRAPPER,
51942f236e2SDmitry Baryshkov 	QCS404_SLAVE_PDM
52042f236e2SDmitry Baryshkov };
52142f236e2SDmitry Baryshkov 
52242f236e2SDmitry Baryshkov static struct qcom_icc_node pcnoc_s_0 = {
52342f236e2SDmitry Baryshkov 	.name = "pcnoc_s_0",
52442f236e2SDmitry Baryshkov 	.id = QCS404_PNOC_SLV_0,
52542f236e2SDmitry Baryshkov 	.buswidth = 4,
52642f236e2SDmitry Baryshkov 	.mas_rpm_id = 89,
52742f236e2SDmitry Baryshkov 	.slv_rpm_id = 118,
52842f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(pcnoc_s_0_links),
52942f236e2SDmitry Baryshkov 	.links = pcnoc_s_0_links,
53042f236e2SDmitry Baryshkov };
53142f236e2SDmitry Baryshkov 
53242f236e2SDmitry Baryshkov static const u16 pcnoc_s_1_links[] = {
53342f236e2SDmitry Baryshkov 	QCS404_SLAVE_TCSR
53442f236e2SDmitry Baryshkov };
53542f236e2SDmitry Baryshkov 
53642f236e2SDmitry Baryshkov static struct qcom_icc_node pcnoc_s_1 = {
53742f236e2SDmitry Baryshkov 	.name = "pcnoc_s_1",
53842f236e2SDmitry Baryshkov 	.id = QCS404_PNOC_SLV_1,
53942f236e2SDmitry Baryshkov 	.buswidth = 4,
54042f236e2SDmitry Baryshkov 	.mas_rpm_id = 90,
54142f236e2SDmitry Baryshkov 	.slv_rpm_id = 119,
54242f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(pcnoc_s_1_links),
54342f236e2SDmitry Baryshkov 	.links = pcnoc_s_1_links,
54442f236e2SDmitry Baryshkov };
54542f236e2SDmitry Baryshkov 
54642f236e2SDmitry Baryshkov static const u16 pcnoc_s_2_links[] = {
54742f236e2SDmitry Baryshkov 	QCS404_SLAVE_GRAPHICS_3D_CFG
54842f236e2SDmitry Baryshkov };
54942f236e2SDmitry Baryshkov 
55042f236e2SDmitry Baryshkov static struct qcom_icc_node pcnoc_s_2 = {
55142f236e2SDmitry Baryshkov 	.name = "pcnoc_s_2",
55242f236e2SDmitry Baryshkov 	.id = QCS404_PNOC_SLV_2,
55342f236e2SDmitry Baryshkov 	.buswidth = 4,
55442f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
55542f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
55616e5d505SAdam Skladowski 	.qos.ap_owned = true,
55716e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
55842f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(pcnoc_s_2_links),
55942f236e2SDmitry Baryshkov 	.links = pcnoc_s_2_links,
56042f236e2SDmitry Baryshkov };
56142f236e2SDmitry Baryshkov 
56242f236e2SDmitry Baryshkov static const u16 pcnoc_s_3_links[] = {
56342f236e2SDmitry Baryshkov 	QCS404_SLAVE_MESSAGE_RAM
56442f236e2SDmitry Baryshkov };
56542f236e2SDmitry Baryshkov 
56642f236e2SDmitry Baryshkov static struct qcom_icc_node pcnoc_s_3 = {
56742f236e2SDmitry Baryshkov 	.name = "pcnoc_s_3",
56842f236e2SDmitry Baryshkov 	.id = QCS404_PNOC_SLV_3,
56942f236e2SDmitry Baryshkov 	.buswidth = 4,
57042f236e2SDmitry Baryshkov 	.mas_rpm_id = 92,
57142f236e2SDmitry Baryshkov 	.slv_rpm_id = 121,
57242f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(pcnoc_s_3_links),
57342f236e2SDmitry Baryshkov 	.links = pcnoc_s_3_links,
57442f236e2SDmitry Baryshkov };
57542f236e2SDmitry Baryshkov 
57642f236e2SDmitry Baryshkov static const u16 pcnoc_s_4_links[] = {
57742f236e2SDmitry Baryshkov 	QCS404_SLAVE_SNOC_CFG
57842f236e2SDmitry Baryshkov };
57942f236e2SDmitry Baryshkov 
58042f236e2SDmitry Baryshkov static struct qcom_icc_node pcnoc_s_4 = {
58142f236e2SDmitry Baryshkov 	.name = "pcnoc_s_4",
58242f236e2SDmitry Baryshkov 	.id = QCS404_PNOC_SLV_4,
58342f236e2SDmitry Baryshkov 	.buswidth = 4,
58442f236e2SDmitry Baryshkov 	.mas_rpm_id = 93,
58542f236e2SDmitry Baryshkov 	.slv_rpm_id = 122,
58642f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(pcnoc_s_4_links),
58742f236e2SDmitry Baryshkov 	.links = pcnoc_s_4_links,
58842f236e2SDmitry Baryshkov };
58942f236e2SDmitry Baryshkov 
59042f236e2SDmitry Baryshkov static const u16 pcnoc_s_6_links[] = {
59142f236e2SDmitry Baryshkov 	QCS404_SLAVE_BLSP_1,
59242f236e2SDmitry Baryshkov 	QCS404_SLAVE_TLMM_NORTH,
59342f236e2SDmitry Baryshkov 	QCS404_SLAVE_EMAC_CFG
59442f236e2SDmitry Baryshkov };
59542f236e2SDmitry Baryshkov 
59642f236e2SDmitry Baryshkov static struct qcom_icc_node pcnoc_s_6 = {
59742f236e2SDmitry Baryshkov 	.name = "pcnoc_s_6",
59842f236e2SDmitry Baryshkov 	.id = QCS404_PNOC_SLV_6,
59942f236e2SDmitry Baryshkov 	.buswidth = 4,
60042f236e2SDmitry Baryshkov 	.mas_rpm_id = 94,
60142f236e2SDmitry Baryshkov 	.slv_rpm_id = 123,
60242f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(pcnoc_s_6_links),
60342f236e2SDmitry Baryshkov 	.links = pcnoc_s_6_links,
60442f236e2SDmitry Baryshkov };
60542f236e2SDmitry Baryshkov 
60642f236e2SDmitry Baryshkov static const u16 pcnoc_s_7_links[] = {
60742f236e2SDmitry Baryshkov 	QCS404_SLAVE_TLMM_SOUTH,
60842f236e2SDmitry Baryshkov 	QCS404_SLAVE_DISPLAY_CFG,
60942f236e2SDmitry Baryshkov 	QCS404_SLAVE_SDCC_1,
61042f236e2SDmitry Baryshkov 	QCS404_SLAVE_PCIE_1,
61142f236e2SDmitry Baryshkov 	QCS404_SLAVE_SDCC_2
61242f236e2SDmitry Baryshkov };
61342f236e2SDmitry Baryshkov 
61442f236e2SDmitry Baryshkov static struct qcom_icc_node pcnoc_s_7 = {
61542f236e2SDmitry Baryshkov 	.name = "pcnoc_s_7",
61642f236e2SDmitry Baryshkov 	.id = QCS404_PNOC_SLV_7,
61742f236e2SDmitry Baryshkov 	.buswidth = 4,
61842f236e2SDmitry Baryshkov 	.mas_rpm_id = 95,
61942f236e2SDmitry Baryshkov 	.slv_rpm_id = 124,
62042f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(pcnoc_s_7_links),
62142f236e2SDmitry Baryshkov 	.links = pcnoc_s_7_links,
62242f236e2SDmitry Baryshkov };
62342f236e2SDmitry Baryshkov 
62442f236e2SDmitry Baryshkov static const u16 pcnoc_s_8_links[] = {
62542f236e2SDmitry Baryshkov 	QCS404_SLAVE_CRYPTO_0_CFG
62642f236e2SDmitry Baryshkov };
62742f236e2SDmitry Baryshkov 
62842f236e2SDmitry Baryshkov static struct qcom_icc_node pcnoc_s_8 = {
62942f236e2SDmitry Baryshkov 	.name = "pcnoc_s_8",
63042f236e2SDmitry Baryshkov 	.id = QCS404_PNOC_SLV_8,
63142f236e2SDmitry Baryshkov 	.buswidth = 4,
63242f236e2SDmitry Baryshkov 	.mas_rpm_id = 96,
63342f236e2SDmitry Baryshkov 	.slv_rpm_id = 125,
63442f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(pcnoc_s_8_links),
63542f236e2SDmitry Baryshkov 	.links = pcnoc_s_8_links,
63642f236e2SDmitry Baryshkov };
63742f236e2SDmitry Baryshkov 
63842f236e2SDmitry Baryshkov static const u16 pcnoc_s_9_links[] = {
63942f236e2SDmitry Baryshkov 	QCS404_SLAVE_BLSP_2,
64042f236e2SDmitry Baryshkov 	QCS404_SLAVE_TLMM_EAST,
64142f236e2SDmitry Baryshkov 	QCS404_SLAVE_PMIC_ARB
64242f236e2SDmitry Baryshkov };
64342f236e2SDmitry Baryshkov 
64442f236e2SDmitry Baryshkov static struct qcom_icc_node pcnoc_s_9 = {
64542f236e2SDmitry Baryshkov 	.name = "pcnoc_s_9",
64642f236e2SDmitry Baryshkov 	.id = QCS404_PNOC_SLV_9,
64742f236e2SDmitry Baryshkov 	.buswidth = 4,
64842f236e2SDmitry Baryshkov 	.mas_rpm_id = 97,
64942f236e2SDmitry Baryshkov 	.slv_rpm_id = 126,
65042f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(pcnoc_s_9_links),
65142f236e2SDmitry Baryshkov 	.links = pcnoc_s_9_links,
65242f236e2SDmitry Baryshkov };
65342f236e2SDmitry Baryshkov 
65442f236e2SDmitry Baryshkov static const u16 pcnoc_s_10_links[] = {
65542f236e2SDmitry Baryshkov 	QCS404_SLAVE_USB_HS
65642f236e2SDmitry Baryshkov };
65742f236e2SDmitry Baryshkov 
65842f236e2SDmitry Baryshkov static struct qcom_icc_node pcnoc_s_10 = {
65942f236e2SDmitry Baryshkov 	.name = "pcnoc_s_10",
66042f236e2SDmitry Baryshkov 	.id = QCS404_PNOC_SLV_10,
66142f236e2SDmitry Baryshkov 	.buswidth = 4,
66242f236e2SDmitry Baryshkov 	.mas_rpm_id = 157,
66342f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
66442f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(pcnoc_s_10_links),
66542f236e2SDmitry Baryshkov 	.links = pcnoc_s_10_links,
66642f236e2SDmitry Baryshkov };
66742f236e2SDmitry Baryshkov 
66842f236e2SDmitry Baryshkov static const u16 pcnoc_s_11_links[] = {
66942f236e2SDmitry Baryshkov 	QCS404_SLAVE_USB3
67042f236e2SDmitry Baryshkov };
67142f236e2SDmitry Baryshkov 
67242f236e2SDmitry Baryshkov static struct qcom_icc_node pcnoc_s_11 = {
67342f236e2SDmitry Baryshkov 	.name = "pcnoc_s_11",
67442f236e2SDmitry Baryshkov 	.id = QCS404_PNOC_SLV_11,
67542f236e2SDmitry Baryshkov 	.buswidth = 4,
67642f236e2SDmitry Baryshkov 	.mas_rpm_id = 158,
67742f236e2SDmitry Baryshkov 	.slv_rpm_id = 246,
67842f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(pcnoc_s_11_links),
67942f236e2SDmitry Baryshkov 	.links = pcnoc_s_11_links,
68042f236e2SDmitry Baryshkov };
68142f236e2SDmitry Baryshkov 
68242f236e2SDmitry Baryshkov static const u16 qdss_int_links[] = {
68342f236e2SDmitry Baryshkov 	QCS404_SNOC_BIMC_1_SLV,
68442f236e2SDmitry Baryshkov 	QCS404_SNOC_INT_1
68542f236e2SDmitry Baryshkov };
68642f236e2SDmitry Baryshkov 
68742f236e2SDmitry Baryshkov static struct qcom_icc_node qdss_int = {
68842f236e2SDmitry Baryshkov 	.name = "qdss_int",
68942f236e2SDmitry Baryshkov 	.id = QCS404_SNOC_QDSS_INT,
69042f236e2SDmitry Baryshkov 	.buswidth = 8,
69142f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
69242f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
69316e5d505SAdam Skladowski 	.qos.ap_owned = true,
69416e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
69542f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(qdss_int_links),
69642f236e2SDmitry Baryshkov 	.links = qdss_int_links,
69742f236e2SDmitry Baryshkov };
69842f236e2SDmitry Baryshkov 
69942f236e2SDmitry Baryshkov static const u16 snoc_int_0_links[] = {
70042f236e2SDmitry Baryshkov 	QCS404_SLAVE_LPASS,
70142f236e2SDmitry Baryshkov 	QCS404_SLAVE_APPSS,
70242f236e2SDmitry Baryshkov 	QCS404_SLAVE_WCSS
70342f236e2SDmitry Baryshkov };
70442f236e2SDmitry Baryshkov 
70542f236e2SDmitry Baryshkov static struct qcom_icc_node snoc_int_0 = {
70642f236e2SDmitry Baryshkov 	.name = "snoc_int_0",
70742f236e2SDmitry Baryshkov 	.id = QCS404_SNOC_INT_0,
70842f236e2SDmitry Baryshkov 	.buswidth = 8,
70942f236e2SDmitry Baryshkov 	.mas_rpm_id = 99,
71042f236e2SDmitry Baryshkov 	.slv_rpm_id = 130,
71142f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(snoc_int_0_links),
71242f236e2SDmitry Baryshkov 	.links = snoc_int_0_links,
71342f236e2SDmitry Baryshkov };
71442f236e2SDmitry Baryshkov 
71542f236e2SDmitry Baryshkov static const u16 snoc_int_1_links[] = {
71642f236e2SDmitry Baryshkov 	QCS404_SNOC_PNOC_SLV,
71742f236e2SDmitry Baryshkov 	QCS404_SNOC_INT_2
71842f236e2SDmitry Baryshkov };
71942f236e2SDmitry Baryshkov 
72042f236e2SDmitry Baryshkov static struct qcom_icc_node snoc_int_1 = {
72142f236e2SDmitry Baryshkov 	.name = "snoc_int_1",
72242f236e2SDmitry Baryshkov 	.id = QCS404_SNOC_INT_1,
72342f236e2SDmitry Baryshkov 	.buswidth = 8,
72442f236e2SDmitry Baryshkov 	.mas_rpm_id = 100,
72542f236e2SDmitry Baryshkov 	.slv_rpm_id = 131,
72642f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(snoc_int_1_links),
72742f236e2SDmitry Baryshkov 	.links = snoc_int_1_links,
72842f236e2SDmitry Baryshkov };
72942f236e2SDmitry Baryshkov 
73042f236e2SDmitry Baryshkov static const u16 snoc_int_2_links[] = {
73142f236e2SDmitry Baryshkov 	QCS404_SLAVE_QDSS_STM,
73242f236e2SDmitry Baryshkov 	QCS404_SLAVE_OCIMEM
73342f236e2SDmitry Baryshkov };
73442f236e2SDmitry Baryshkov 
73542f236e2SDmitry Baryshkov static struct qcom_icc_node snoc_int_2 = {
73642f236e2SDmitry Baryshkov 	.name = "snoc_int_2",
73742f236e2SDmitry Baryshkov 	.id = QCS404_SNOC_INT_2,
73842f236e2SDmitry Baryshkov 	.buswidth = 8,
73942f236e2SDmitry Baryshkov 	.mas_rpm_id = 134,
74042f236e2SDmitry Baryshkov 	.slv_rpm_id = 197,
74142f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(snoc_int_2_links),
74242f236e2SDmitry Baryshkov 	.links = snoc_int_2_links,
74342f236e2SDmitry Baryshkov };
74442f236e2SDmitry Baryshkov 
74542f236e2SDmitry Baryshkov static struct qcom_icc_node slv_ebi = {
74642f236e2SDmitry Baryshkov 	.name = "slv_ebi",
74742f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_EBI_CH0,
74842f236e2SDmitry Baryshkov 	.buswidth = 8,
74942f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
75042f236e2SDmitry Baryshkov 	.slv_rpm_id = 0,
75142f236e2SDmitry Baryshkov };
75242f236e2SDmitry Baryshkov 
75342f236e2SDmitry Baryshkov static const u16 slv_bimc_snoc_links[] = {
75442f236e2SDmitry Baryshkov 	QCS404_BIMC_SNOC_MAS
75542f236e2SDmitry Baryshkov };
75642f236e2SDmitry Baryshkov 
75742f236e2SDmitry Baryshkov static struct qcom_icc_node slv_bimc_snoc = {
75842f236e2SDmitry Baryshkov 	.name = "slv_bimc_snoc",
75942f236e2SDmitry Baryshkov 	.id = QCS404_BIMC_SNOC_SLV,
76042f236e2SDmitry Baryshkov 	.buswidth = 8,
76142f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
76242f236e2SDmitry Baryshkov 	.slv_rpm_id = 2,
76342f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(slv_bimc_snoc_links),
76442f236e2SDmitry Baryshkov 	.links = slv_bimc_snoc_links,
76542f236e2SDmitry Baryshkov };
76642f236e2SDmitry Baryshkov 
76742f236e2SDmitry Baryshkov static struct qcom_icc_node slv_spdm = {
76842f236e2SDmitry Baryshkov 	.name = "slv_spdm",
76942f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_SPDM_WRAPPER,
77042f236e2SDmitry Baryshkov 	.buswidth = 4,
77142f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
77242f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
77316e5d505SAdam Skladowski 	.qos.ap_owned = true,
77416e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
77542f236e2SDmitry Baryshkov };
77642f236e2SDmitry Baryshkov 
77742f236e2SDmitry Baryshkov static struct qcom_icc_node slv_pdm = {
77842f236e2SDmitry Baryshkov 	.name = "slv_pdm",
77942f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_PDM,
78042f236e2SDmitry Baryshkov 	.buswidth = 4,
78142f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
78242f236e2SDmitry Baryshkov 	.slv_rpm_id = 41,
78342f236e2SDmitry Baryshkov };
78442f236e2SDmitry Baryshkov 
78542f236e2SDmitry Baryshkov static struct qcom_icc_node slv_prng = {
78642f236e2SDmitry Baryshkov 	.name = "slv_prng",
78742f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_PRNG,
78842f236e2SDmitry Baryshkov 	.buswidth = 4,
78942f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
79042f236e2SDmitry Baryshkov 	.slv_rpm_id = 44,
79142f236e2SDmitry Baryshkov };
79242f236e2SDmitry Baryshkov 
79342f236e2SDmitry Baryshkov static struct qcom_icc_node slv_tcsr = {
79442f236e2SDmitry Baryshkov 	.name = "slv_tcsr",
79542f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_TCSR,
79642f236e2SDmitry Baryshkov 	.buswidth = 4,
79742f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
79842f236e2SDmitry Baryshkov 	.slv_rpm_id = 50,
79942f236e2SDmitry Baryshkov };
80042f236e2SDmitry Baryshkov 
80142f236e2SDmitry Baryshkov static struct qcom_icc_node slv_snoc_cfg = {
80242f236e2SDmitry Baryshkov 	.name = "slv_snoc_cfg",
80342f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_SNOC_CFG,
80442f236e2SDmitry Baryshkov 	.buswidth = 4,
80542f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
80642f236e2SDmitry Baryshkov 	.slv_rpm_id = 70,
80742f236e2SDmitry Baryshkov };
80842f236e2SDmitry Baryshkov 
80942f236e2SDmitry Baryshkov static struct qcom_icc_node slv_message_ram = {
81042f236e2SDmitry Baryshkov 	.name = "slv_message_ram",
81142f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_MESSAGE_RAM,
81242f236e2SDmitry Baryshkov 	.buswidth = 4,
81342f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
81442f236e2SDmitry Baryshkov 	.slv_rpm_id = 55,
81542f236e2SDmitry Baryshkov };
81642f236e2SDmitry Baryshkov 
81742f236e2SDmitry Baryshkov static struct qcom_icc_node slv_disp_ss_cfg = {
81842f236e2SDmitry Baryshkov 	.name = "slv_disp_ss_cfg",
81942f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_DISPLAY_CFG,
82042f236e2SDmitry Baryshkov 	.buswidth = 4,
82142f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
82242f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
82316e5d505SAdam Skladowski 	.qos.ap_owned = true,
82416e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
82542f236e2SDmitry Baryshkov };
82642f236e2SDmitry Baryshkov 
82742f236e2SDmitry Baryshkov static struct qcom_icc_node slv_gpu_cfg = {
82842f236e2SDmitry Baryshkov 	.name = "slv_gpu_cfg",
82942f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_GRAPHICS_3D_CFG,
83042f236e2SDmitry Baryshkov 	.buswidth = 4,
83142f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
83242f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
83316e5d505SAdam Skladowski 	.qos.ap_owned = true,
83416e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
83542f236e2SDmitry Baryshkov };
83642f236e2SDmitry Baryshkov 
83742f236e2SDmitry Baryshkov static struct qcom_icc_node slv_blsp_1 = {
83842f236e2SDmitry Baryshkov 	.name = "slv_blsp_1",
83942f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_BLSP_1,
84042f236e2SDmitry Baryshkov 	.buswidth = 4,
84142f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
84242f236e2SDmitry Baryshkov 	.slv_rpm_id = 39,
84342f236e2SDmitry Baryshkov };
84442f236e2SDmitry Baryshkov 
84542f236e2SDmitry Baryshkov static struct qcom_icc_node slv_tlmm_north = {
84642f236e2SDmitry Baryshkov 	.name = "slv_tlmm_north",
84742f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_TLMM_NORTH,
84842f236e2SDmitry Baryshkov 	.buswidth = 4,
84942f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
85042f236e2SDmitry Baryshkov 	.slv_rpm_id = 214,
85142f236e2SDmitry Baryshkov };
85242f236e2SDmitry Baryshkov 
85342f236e2SDmitry Baryshkov static struct qcom_icc_node slv_pcie = {
85442f236e2SDmitry Baryshkov 	.name = "slv_pcie",
85542f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_PCIE_1,
85642f236e2SDmitry Baryshkov 	.buswidth = 4,
85742f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
85842f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
85916e5d505SAdam Skladowski 	.qos.ap_owned = true,
86016e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
86142f236e2SDmitry Baryshkov };
86242f236e2SDmitry Baryshkov 
86342f236e2SDmitry Baryshkov static struct qcom_icc_node slv_ethernet = {
86442f236e2SDmitry Baryshkov 	.name = "slv_ethernet",
86542f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_EMAC_CFG,
86642f236e2SDmitry Baryshkov 	.buswidth = 4,
86742f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
86842f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
86916e5d505SAdam Skladowski 	.qos.ap_owned = true,
87016e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
87142f236e2SDmitry Baryshkov };
87242f236e2SDmitry Baryshkov 
87342f236e2SDmitry Baryshkov static struct qcom_icc_node slv_blsp_2 = {
87442f236e2SDmitry Baryshkov 	.name = "slv_blsp_2",
87542f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_BLSP_2,
87642f236e2SDmitry Baryshkov 	.buswidth = 4,
87742f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
87842f236e2SDmitry Baryshkov 	.slv_rpm_id = 37,
87942f236e2SDmitry Baryshkov };
88042f236e2SDmitry Baryshkov 
88142f236e2SDmitry Baryshkov static struct qcom_icc_node slv_tlmm_east = {
88242f236e2SDmitry Baryshkov 	.name = "slv_tlmm_east",
88342f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_TLMM_EAST,
88442f236e2SDmitry Baryshkov 	.buswidth = 4,
88542f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
88642f236e2SDmitry Baryshkov 	.slv_rpm_id = 213,
88742f236e2SDmitry Baryshkov };
88842f236e2SDmitry Baryshkov 
88942f236e2SDmitry Baryshkov static struct qcom_icc_node slv_tcu = {
89042f236e2SDmitry Baryshkov 	.name = "slv_tcu",
89142f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_TCU,
89242f236e2SDmitry Baryshkov 	.buswidth = 8,
89342f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
89442f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
89516e5d505SAdam Skladowski 	.qos.ap_owned = true,
89616e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
89742f236e2SDmitry Baryshkov };
89842f236e2SDmitry Baryshkov 
89942f236e2SDmitry Baryshkov static struct qcom_icc_node slv_pmic_arb = {
90042f236e2SDmitry Baryshkov 	.name = "slv_pmic_arb",
90142f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_PMIC_ARB,
90242f236e2SDmitry Baryshkov 	.buswidth = 4,
90342f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
90442f236e2SDmitry Baryshkov 	.slv_rpm_id = 59,
90542f236e2SDmitry Baryshkov };
90642f236e2SDmitry Baryshkov 
90742f236e2SDmitry Baryshkov static struct qcom_icc_node slv_sdcc_1 = {
90842f236e2SDmitry Baryshkov 	.name = "slv_sdcc_1",
90942f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_SDCC_1,
91042f236e2SDmitry Baryshkov 	.buswidth = 4,
91142f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
91242f236e2SDmitry Baryshkov 	.slv_rpm_id = 31,
91342f236e2SDmitry Baryshkov };
91442f236e2SDmitry Baryshkov 
91542f236e2SDmitry Baryshkov static struct qcom_icc_node slv_sdcc_2 = {
91642f236e2SDmitry Baryshkov 	.name = "slv_sdcc_2",
91742f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_SDCC_2,
91842f236e2SDmitry Baryshkov 	.buswidth = 4,
91942f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
92042f236e2SDmitry Baryshkov 	.slv_rpm_id = 33,
92142f236e2SDmitry Baryshkov };
92242f236e2SDmitry Baryshkov 
92342f236e2SDmitry Baryshkov static struct qcom_icc_node slv_tlmm_south = {
92442f236e2SDmitry Baryshkov 	.name = "slv_tlmm_south",
92542f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_TLMM_SOUTH,
92642f236e2SDmitry Baryshkov 	.buswidth = 4,
92742f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
92842f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
92942f236e2SDmitry Baryshkov };
93042f236e2SDmitry Baryshkov 
93142f236e2SDmitry Baryshkov static struct qcom_icc_node slv_usb_hs = {
93242f236e2SDmitry Baryshkov 	.name = "slv_usb_hs",
93342f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_USB_HS,
93442f236e2SDmitry Baryshkov 	.buswidth = 4,
93542f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
93642f236e2SDmitry Baryshkov 	.slv_rpm_id = 40,
93742f236e2SDmitry Baryshkov };
93842f236e2SDmitry Baryshkov 
93942f236e2SDmitry Baryshkov static struct qcom_icc_node slv_usb3 = {
94042f236e2SDmitry Baryshkov 	.name = "slv_usb3",
94142f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_USB3,
94242f236e2SDmitry Baryshkov 	.buswidth = 4,
94342f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
94442f236e2SDmitry Baryshkov 	.slv_rpm_id = 22,
94542f236e2SDmitry Baryshkov };
94642f236e2SDmitry Baryshkov 
94742f236e2SDmitry Baryshkov static struct qcom_icc_node slv_crypto_0_cfg = {
94842f236e2SDmitry Baryshkov 	.name = "slv_crypto_0_cfg",
94942f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_CRYPTO_0_CFG,
95042f236e2SDmitry Baryshkov 	.buswidth = 4,
95142f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
95242f236e2SDmitry Baryshkov 	.slv_rpm_id = 52,
95342f236e2SDmitry Baryshkov };
95442f236e2SDmitry Baryshkov 
95542f236e2SDmitry Baryshkov static const u16 slv_pcnoc_snoc_links[] = {
95642f236e2SDmitry Baryshkov 	QCS404_PNOC_SNOC_MAS
95742f236e2SDmitry Baryshkov };
95842f236e2SDmitry Baryshkov 
95942f236e2SDmitry Baryshkov static struct qcom_icc_node slv_pcnoc_snoc = {
96042f236e2SDmitry Baryshkov 	.name = "slv_pcnoc_snoc",
96142f236e2SDmitry Baryshkov 	.id = QCS404_PNOC_SNOC_SLV,
96242f236e2SDmitry Baryshkov 	.buswidth = 8,
96342f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
96442f236e2SDmitry Baryshkov 	.slv_rpm_id = 45,
96542f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(slv_pcnoc_snoc_links),
96642f236e2SDmitry Baryshkov 	.links = slv_pcnoc_snoc_links,
96742f236e2SDmitry Baryshkov };
96842f236e2SDmitry Baryshkov 
96942f236e2SDmitry Baryshkov static struct qcom_icc_node slv_kpss_ahb = {
97042f236e2SDmitry Baryshkov 	.name = "slv_kpss_ahb",
97142f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_APPSS,
97242f236e2SDmitry Baryshkov 	.buswidth = 4,
97342f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
97442f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
97516e5d505SAdam Skladowski 	.qos.ap_owned = true,
97616e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
97742f236e2SDmitry Baryshkov };
97842f236e2SDmitry Baryshkov 
97942f236e2SDmitry Baryshkov static struct qcom_icc_node slv_wcss = {
98042f236e2SDmitry Baryshkov 	.name = "slv_wcss",
98142f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_WCSS,
98242f236e2SDmitry Baryshkov 	.buswidth = 4,
98342f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
98442f236e2SDmitry Baryshkov 	.slv_rpm_id = 23,
98542f236e2SDmitry Baryshkov };
98642f236e2SDmitry Baryshkov 
98742f236e2SDmitry Baryshkov static const u16 slv_snoc_bimc_1_links[] = {
98842f236e2SDmitry Baryshkov 	QCS404_SNOC_BIMC_1_MAS
98942f236e2SDmitry Baryshkov };
99042f236e2SDmitry Baryshkov 
99142f236e2SDmitry Baryshkov static struct qcom_icc_node slv_snoc_bimc_1 = {
99242f236e2SDmitry Baryshkov 	.name = "slv_snoc_bimc_1",
99342f236e2SDmitry Baryshkov 	.id = QCS404_SNOC_BIMC_1_SLV,
99442f236e2SDmitry Baryshkov 	.buswidth = 8,
99542f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
99642f236e2SDmitry Baryshkov 	.slv_rpm_id = 104,
99742f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(slv_snoc_bimc_1_links),
99842f236e2SDmitry Baryshkov 	.links = slv_snoc_bimc_1_links,
99942f236e2SDmitry Baryshkov };
100042f236e2SDmitry Baryshkov 
100142f236e2SDmitry Baryshkov static struct qcom_icc_node slv_imem = {
100242f236e2SDmitry Baryshkov 	.name = "slv_imem",
100342f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_OCIMEM,
100442f236e2SDmitry Baryshkov 	.buswidth = 8,
100542f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
100642f236e2SDmitry Baryshkov 	.slv_rpm_id = 26,
100742f236e2SDmitry Baryshkov };
100842f236e2SDmitry Baryshkov 
100942f236e2SDmitry Baryshkov static const u16 slv_snoc_pcnoc_links[] = {
101042f236e2SDmitry Baryshkov 	QCS404_SNOC_PNOC_MAS
101142f236e2SDmitry Baryshkov };
101242f236e2SDmitry Baryshkov 
101342f236e2SDmitry Baryshkov static struct qcom_icc_node slv_snoc_pcnoc = {
101442f236e2SDmitry Baryshkov 	.name = "slv_snoc_pcnoc",
101542f236e2SDmitry Baryshkov 	.id = QCS404_SNOC_PNOC_SLV,
101642f236e2SDmitry Baryshkov 	.buswidth = 8,
101742f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
101842f236e2SDmitry Baryshkov 	.slv_rpm_id = 28,
101942f236e2SDmitry Baryshkov 	.num_links = ARRAY_SIZE(slv_snoc_pcnoc_links),
102042f236e2SDmitry Baryshkov 	.links = slv_snoc_pcnoc_links,
102142f236e2SDmitry Baryshkov };
102242f236e2SDmitry Baryshkov 
102342f236e2SDmitry Baryshkov static struct qcom_icc_node slv_qdss_stm = {
102442f236e2SDmitry Baryshkov 	.name = "slv_qdss_stm",
102542f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_QDSS_STM,
102642f236e2SDmitry Baryshkov 	.buswidth = 4,
102742f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
102842f236e2SDmitry Baryshkov 	.slv_rpm_id = 30,
102942f236e2SDmitry Baryshkov };
103042f236e2SDmitry Baryshkov 
103142f236e2SDmitry Baryshkov static struct qcom_icc_node slv_cats_0 = {
103242f236e2SDmitry Baryshkov 	.name = "slv_cats_0",
103342f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_CATS_128,
103442f236e2SDmitry Baryshkov 	.buswidth = 16,
103542f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
103642f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
103716e5d505SAdam Skladowski 	.qos.ap_owned = true,
103816e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
103942f236e2SDmitry Baryshkov };
104042f236e2SDmitry Baryshkov 
104142f236e2SDmitry Baryshkov static struct qcom_icc_node slv_cats_1 = {
104242f236e2SDmitry Baryshkov 	.name = "slv_cats_1",
104342f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_OCMEM_64,
104442f236e2SDmitry Baryshkov 	.buswidth = 8,
104542f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
104642f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
104716e5d505SAdam Skladowski 	.qos.ap_owned = true,
104816e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
104942f236e2SDmitry Baryshkov };
105042f236e2SDmitry Baryshkov 
105142f236e2SDmitry Baryshkov static struct qcom_icc_node slv_lpass = {
105242f236e2SDmitry Baryshkov 	.name = "slv_lpass",
105342f236e2SDmitry Baryshkov 	.id = QCS404_SLAVE_LPASS,
105442f236e2SDmitry Baryshkov 	.buswidth = 4,
105542f236e2SDmitry Baryshkov 	.mas_rpm_id = -1,
105642f236e2SDmitry Baryshkov 	.slv_rpm_id = -1,
105716e5d505SAdam Skladowski 	.qos.ap_owned = true,
105816e5d505SAdam Skladowski 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
105942f236e2SDmitry Baryshkov };
10605e4e6c4dSBjorn Andersson 
10612ccf33c0SKrzysztof Kozlowski static struct qcom_icc_node * const qcs404_bimc_nodes[] = {
10625e4e6c4dSBjorn Andersson 	[MASTER_AMPSS_M0] = &mas_apps_proc,
10635e4e6c4dSBjorn Andersson 	[MASTER_OXILI] = &mas_oxili,
10645e4e6c4dSBjorn Andersson 	[MASTER_MDP_PORT0] = &mas_mdp,
10655e4e6c4dSBjorn Andersson 	[MASTER_SNOC_BIMC_1] = &mas_snoc_bimc_1,
10665e4e6c4dSBjorn Andersson 	[MASTER_TCU_0] = &mas_tcu_0,
10675e4e6c4dSBjorn Andersson 	[SLAVE_EBI_CH0] = &slv_ebi,
10685e4e6c4dSBjorn Andersson 	[SLAVE_BIMC_SNOC] = &slv_bimc_snoc,
10695e4e6c4dSBjorn Andersson };
10705e4e6c4dSBjorn Andersson 
10717f3ea8a9SAdam Skladowski static const struct regmap_config qcs404_bimc_regmap_config = {
10727f3ea8a9SAdam Skladowski 	.reg_bits = 32,
10737f3ea8a9SAdam Skladowski 	.reg_stride = 4,
10747f3ea8a9SAdam Skladowski 	.val_bits = 32,
10757f3ea8a9SAdam Skladowski 	.max_register = 0x80000,
10767f3ea8a9SAdam Skladowski 	.fast_io = true,
10777f3ea8a9SAdam Skladowski };
10787f3ea8a9SAdam Skladowski 
10791625aaa3SKrzysztof Kozlowski static const struct qcom_icc_desc qcs404_bimc = {
10807f3ea8a9SAdam Skladowski 	.type = QCOM_ICC_BIMC,
10815e4e6c4dSBjorn Andersson 	.nodes = qcs404_bimc_nodes,
10825e4e6c4dSBjorn Andersson 	.num_nodes = ARRAY_SIZE(qcs404_bimc_nodes),
10837f3ea8a9SAdam Skladowski 	.bus_clk_desc = &bimc_clk,
10847f3ea8a9SAdam Skladowski 	.regmap_cfg = &qcs404_bimc_regmap_config,
10857f3ea8a9SAdam Skladowski 	.qos_offset = 0x8000,
10867f3ea8a9SAdam Skladowski 	.ab_coeff = 153,
10875e4e6c4dSBjorn Andersson };
10885e4e6c4dSBjorn Andersson 
10892ccf33c0SKrzysztof Kozlowski static struct qcom_icc_node * const qcs404_pcnoc_nodes[] = {
10905e4e6c4dSBjorn Andersson 	[MASTER_SPDM] = &mas_spdm,
10915e4e6c4dSBjorn Andersson 	[MASTER_BLSP_1] = &mas_blsp_1,
10925e4e6c4dSBjorn Andersson 	[MASTER_BLSP_2] = &mas_blsp_2,
10935e4e6c4dSBjorn Andersson 	[MASTER_XI_USB_HS1] = &mas_xi_usb_hs1,
10945e4e6c4dSBjorn Andersson 	[MASTER_CRYPT0] = &mas_crypto,
10955e4e6c4dSBjorn Andersson 	[MASTER_SDCC_1] = &mas_sdcc_1,
10965e4e6c4dSBjorn Andersson 	[MASTER_SDCC_2] = &mas_sdcc_2,
10975e4e6c4dSBjorn Andersson 	[MASTER_SNOC_PCNOC] = &mas_snoc_pcnoc,
10985e4e6c4dSBjorn Andersson 	[MASTER_QPIC] = &mas_qpic,
10995e4e6c4dSBjorn Andersson 	[PCNOC_INT_0] = &pcnoc_int_0,
11005e4e6c4dSBjorn Andersson 	[PCNOC_INT_2] = &pcnoc_int_2,
11015e4e6c4dSBjorn Andersson 	[PCNOC_INT_3] = &pcnoc_int_3,
11025e4e6c4dSBjorn Andersson 	[PCNOC_S_0] = &pcnoc_s_0,
11035e4e6c4dSBjorn Andersson 	[PCNOC_S_1] = &pcnoc_s_1,
11045e4e6c4dSBjorn Andersson 	[PCNOC_S_2] = &pcnoc_s_2,
11055e4e6c4dSBjorn Andersson 	[PCNOC_S_3] = &pcnoc_s_3,
11065e4e6c4dSBjorn Andersson 	[PCNOC_S_4] = &pcnoc_s_4,
11075e4e6c4dSBjorn Andersson 	[PCNOC_S_6] = &pcnoc_s_6,
11085e4e6c4dSBjorn Andersson 	[PCNOC_S_7] = &pcnoc_s_7,
11095e4e6c4dSBjorn Andersson 	[PCNOC_S_8] = &pcnoc_s_8,
11105e4e6c4dSBjorn Andersson 	[PCNOC_S_9] = &pcnoc_s_9,
11115e4e6c4dSBjorn Andersson 	[PCNOC_S_10] = &pcnoc_s_10,
11125e4e6c4dSBjorn Andersson 	[PCNOC_S_11] = &pcnoc_s_11,
11135e4e6c4dSBjorn Andersson 	[SLAVE_SPDM] = &slv_spdm,
11145e4e6c4dSBjorn Andersson 	[SLAVE_PDM] = &slv_pdm,
11155e4e6c4dSBjorn Andersson 	[SLAVE_PRNG] = &slv_prng,
11165e4e6c4dSBjorn Andersson 	[SLAVE_TCSR] = &slv_tcsr,
11175e4e6c4dSBjorn Andersson 	[SLAVE_SNOC_CFG] = &slv_snoc_cfg,
11185e4e6c4dSBjorn Andersson 	[SLAVE_MESSAGE_RAM] = &slv_message_ram,
11195e4e6c4dSBjorn Andersson 	[SLAVE_DISP_SS_CFG] = &slv_disp_ss_cfg,
11205e4e6c4dSBjorn Andersson 	[SLAVE_GPU_CFG] = &slv_gpu_cfg,
11215e4e6c4dSBjorn Andersson 	[SLAVE_BLSP_1] = &slv_blsp_1,
11225e4e6c4dSBjorn Andersson 	[SLAVE_BLSP_2] = &slv_blsp_2,
11235e4e6c4dSBjorn Andersson 	[SLAVE_TLMM_NORTH] = &slv_tlmm_north,
11245e4e6c4dSBjorn Andersson 	[SLAVE_PCIE] = &slv_pcie,
11255e4e6c4dSBjorn Andersson 	[SLAVE_ETHERNET] = &slv_ethernet,
11265e4e6c4dSBjorn Andersson 	[SLAVE_TLMM_EAST] = &slv_tlmm_east,
11275e4e6c4dSBjorn Andersson 	[SLAVE_TCU] = &slv_tcu,
11285e4e6c4dSBjorn Andersson 	[SLAVE_PMIC_ARB] = &slv_pmic_arb,
11295e4e6c4dSBjorn Andersson 	[SLAVE_SDCC_1] = &slv_sdcc_1,
11305e4e6c4dSBjorn Andersson 	[SLAVE_SDCC_2] = &slv_sdcc_2,
11315e4e6c4dSBjorn Andersson 	[SLAVE_TLMM_SOUTH] = &slv_tlmm_south,
11325e4e6c4dSBjorn Andersson 	[SLAVE_USB_HS] = &slv_usb_hs,
11335e4e6c4dSBjorn Andersson 	[SLAVE_USB3] = &slv_usb3,
11345e4e6c4dSBjorn Andersson 	[SLAVE_CRYPTO_0_CFG] = &slv_crypto_0_cfg,
11355e4e6c4dSBjorn Andersson 	[SLAVE_PCNOC_SNOC] = &slv_pcnoc_snoc,
11365e4e6c4dSBjorn Andersson };
11375e4e6c4dSBjorn Andersson 
11387f3ea8a9SAdam Skladowski static const struct regmap_config qcs404_pcnoc_regmap_config = {
11397f3ea8a9SAdam Skladowski 	.reg_bits = 32,
11407f3ea8a9SAdam Skladowski 	.reg_stride = 4,
11417f3ea8a9SAdam Skladowski 	.val_bits = 32,
11427f3ea8a9SAdam Skladowski 	.max_register = 0x15080,
11437f3ea8a9SAdam Skladowski 	.fast_io = true,
11447f3ea8a9SAdam Skladowski };
11457f3ea8a9SAdam Skladowski 
11461625aaa3SKrzysztof Kozlowski static const struct qcom_icc_desc qcs404_pcnoc = {
11477f3ea8a9SAdam Skladowski 	.type = QCOM_ICC_NOC,
11485e4e6c4dSBjorn Andersson 	.nodes = qcs404_pcnoc_nodes,
11495e4e6c4dSBjorn Andersson 	.num_nodes = ARRAY_SIZE(qcs404_pcnoc_nodes),
11507f3ea8a9SAdam Skladowski 	.bus_clk_desc = &bus_0_clk,
11517f3ea8a9SAdam Skladowski 	.qos_offset = 0x7000,
11527f3ea8a9SAdam Skladowski 	.keep_alive = true,
11537f3ea8a9SAdam Skladowski 	.regmap_cfg = &qcs404_pcnoc_regmap_config,
11545e4e6c4dSBjorn Andersson };
11555e4e6c4dSBjorn Andersson 
11562ccf33c0SKrzysztof Kozlowski static struct qcom_icc_node * const qcs404_snoc_nodes[] = {
11575e4e6c4dSBjorn Andersson 	[MASTER_QDSS_BAM] = &mas_qdss_bam,
11585e4e6c4dSBjorn Andersson 	[MASTER_BIMC_SNOC] = &mas_bimc_snoc,
11595e4e6c4dSBjorn Andersson 	[MASTER_PCNOC_SNOC] = &mas_pcnoc_snoc,
11605e4e6c4dSBjorn Andersson 	[MASTER_QDSS_ETR] = &mas_qdss_etr,
11615e4e6c4dSBjorn Andersson 	[MASTER_EMAC] = &mas_emac,
11625e4e6c4dSBjorn Andersson 	[MASTER_PCIE] = &mas_pcie,
11635e4e6c4dSBjorn Andersson 	[MASTER_USB3] = &mas_usb3,
11645e4e6c4dSBjorn Andersson 	[QDSS_INT] = &qdss_int,
11655e4e6c4dSBjorn Andersson 	[SNOC_INT_0] = &snoc_int_0,
11665e4e6c4dSBjorn Andersson 	[SNOC_INT_1] = &snoc_int_1,
11675e4e6c4dSBjorn Andersson 	[SNOC_INT_2] = &snoc_int_2,
11685e4e6c4dSBjorn Andersson 	[SLAVE_KPSS_AHB] = &slv_kpss_ahb,
11695e4e6c4dSBjorn Andersson 	[SLAVE_WCSS] = &slv_wcss,
11705e4e6c4dSBjorn Andersson 	[SLAVE_SNOC_BIMC_1] = &slv_snoc_bimc_1,
11715e4e6c4dSBjorn Andersson 	[SLAVE_IMEM] = &slv_imem,
11725e4e6c4dSBjorn Andersson 	[SLAVE_SNOC_PCNOC] = &slv_snoc_pcnoc,
11735e4e6c4dSBjorn Andersson 	[SLAVE_QDSS_STM] = &slv_qdss_stm,
11745e4e6c4dSBjorn Andersson 	[SLAVE_CATS_0] = &slv_cats_0,
11755e4e6c4dSBjorn Andersson 	[SLAVE_CATS_1] = &slv_cats_1,
11765e4e6c4dSBjorn Andersson 	[SLAVE_LPASS] = &slv_lpass,
11775e4e6c4dSBjorn Andersson };
11785e4e6c4dSBjorn Andersson 
11797f3ea8a9SAdam Skladowski static const struct regmap_config qcs404_snoc_regmap_config = {
11807f3ea8a9SAdam Skladowski 	.reg_bits = 32,
11817f3ea8a9SAdam Skladowski 	.reg_stride = 4,
11827f3ea8a9SAdam Skladowski 	.val_bits = 32,
11837f3ea8a9SAdam Skladowski 	.max_register = 0x23080,
11847f3ea8a9SAdam Skladowski 	.fast_io = true,
11857f3ea8a9SAdam Skladowski };
11867f3ea8a9SAdam Skladowski 
11871625aaa3SKrzysztof Kozlowski static const struct qcom_icc_desc qcs404_snoc = {
11887f3ea8a9SAdam Skladowski 	.type = QCOM_ICC_NOC,
11895e4e6c4dSBjorn Andersson 	.nodes = qcs404_snoc_nodes,
11905e4e6c4dSBjorn Andersson 	.num_nodes = ARRAY_SIZE(qcs404_snoc_nodes),
11917f3ea8a9SAdam Skladowski 	.bus_clk_desc = &bus_1_clk,
11927f3ea8a9SAdam Skladowski 	.qos_offset = 0x11000,
11937f3ea8a9SAdam Skladowski 	.regmap_cfg = &qcs404_snoc_regmap_config,
11945e4e6c4dSBjorn Andersson };
11955e4e6c4dSBjorn Andersson 
1196dfbd988fSJun Nie 
11975e4e6c4dSBjorn Andersson static const struct of_device_id qcs404_noc_of_match[] = {
11985e4e6c4dSBjorn Andersson 	{ .compatible = "qcom,qcs404-bimc", .data = &qcs404_bimc },
11995e4e6c4dSBjorn Andersson 	{ .compatible = "qcom,qcs404-pcnoc", .data = &qcs404_pcnoc },
12005e4e6c4dSBjorn Andersson 	{ .compatible = "qcom,qcs404-snoc", .data = &qcs404_snoc },
12015e4e6c4dSBjorn Andersson 	{ },
12025e4e6c4dSBjorn Andersson };
12035e4e6c4dSBjorn Andersson MODULE_DEVICE_TABLE(of, qcs404_noc_of_match);
12045e4e6c4dSBjorn Andersson 
12055e4e6c4dSBjorn Andersson static struct platform_driver qcs404_noc_driver = {
120663e8ab61SDmitry Baryshkov 	.probe = qnoc_probe,
1207*31f1b03fSUwe Kleine-König 	.remove = qnoc_remove,
12085e4e6c4dSBjorn Andersson 	.driver = {
12095e4e6c4dSBjorn Andersson 		.name = "qnoc-qcs404",
12105e4e6c4dSBjorn Andersson 		.of_match_table = qcs404_noc_of_match,
12115e4e6c4dSBjorn Andersson 	},
12125e4e6c4dSBjorn Andersson };
12135e4e6c4dSBjorn Andersson module_platform_driver(qcs404_noc_driver);
12145e4e6c4dSBjorn Andersson MODULE_DESCRIPTION("Qualcomm QCS404 NoC driver");
12155e4e6c4dSBjorn Andersson MODULE_LICENSE("GPL v2");
1216