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