162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) 2018-2020 Linaro Ltd 462306a36Sopenharmony_ci * Author: Georgi Djakov <georgi.djakov@linaro.org> 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#include <linux/device.h> 862306a36Sopenharmony_ci#include <linux/interconnect-provider.h> 962306a36Sopenharmony_ci#include <linux/io.h> 1062306a36Sopenharmony_ci#include <linux/module.h> 1162306a36Sopenharmony_ci#include <linux/of.h> 1262306a36Sopenharmony_ci#include <linux/platform_device.h> 1362306a36Sopenharmony_ci#include <linux/regmap.h> 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#include <dt-bindings/interconnect/qcom,msm8916.h> 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci#include "icc-rpm.h" 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_cienum { 2062306a36Sopenharmony_ci MSM8916_BIMC_SNOC_MAS = 1, 2162306a36Sopenharmony_ci MSM8916_BIMC_SNOC_SLV, 2262306a36Sopenharmony_ci MSM8916_MASTER_AMPSS_M0, 2362306a36Sopenharmony_ci MSM8916_MASTER_LPASS, 2462306a36Sopenharmony_ci MSM8916_MASTER_BLSP_1, 2562306a36Sopenharmony_ci MSM8916_MASTER_DEHR, 2662306a36Sopenharmony_ci MSM8916_MASTER_GRAPHICS_3D, 2762306a36Sopenharmony_ci MSM8916_MASTER_JPEG, 2862306a36Sopenharmony_ci MSM8916_MASTER_MDP_PORT0, 2962306a36Sopenharmony_ci MSM8916_MASTER_CRYPTO_CORE0, 3062306a36Sopenharmony_ci MSM8916_MASTER_SDCC_1, 3162306a36Sopenharmony_ci MSM8916_MASTER_SDCC_2, 3262306a36Sopenharmony_ci MSM8916_MASTER_QDSS_BAM, 3362306a36Sopenharmony_ci MSM8916_MASTER_QDSS_ETR, 3462306a36Sopenharmony_ci MSM8916_MASTER_SNOC_CFG, 3562306a36Sopenharmony_ci MSM8916_MASTER_SPDM, 3662306a36Sopenharmony_ci MSM8916_MASTER_TCU0, 3762306a36Sopenharmony_ci MSM8916_MASTER_TCU1, 3862306a36Sopenharmony_ci MSM8916_MASTER_USB_HS, 3962306a36Sopenharmony_ci MSM8916_MASTER_VFE, 4062306a36Sopenharmony_ci MSM8916_MASTER_VIDEO_P0, 4162306a36Sopenharmony_ci MSM8916_SNOC_MM_INT_0, 4262306a36Sopenharmony_ci MSM8916_SNOC_MM_INT_1, 4362306a36Sopenharmony_ci MSM8916_SNOC_MM_INT_2, 4462306a36Sopenharmony_ci MSM8916_SNOC_MM_INT_BIMC, 4562306a36Sopenharmony_ci MSM8916_PNOC_INT_0, 4662306a36Sopenharmony_ci MSM8916_PNOC_INT_1, 4762306a36Sopenharmony_ci MSM8916_PNOC_MAS_0, 4862306a36Sopenharmony_ci MSM8916_PNOC_MAS_1, 4962306a36Sopenharmony_ci MSM8916_PNOC_SLV_0, 5062306a36Sopenharmony_ci MSM8916_PNOC_SLV_1, 5162306a36Sopenharmony_ci MSM8916_PNOC_SLV_2, 5262306a36Sopenharmony_ci MSM8916_PNOC_SLV_3, 5362306a36Sopenharmony_ci MSM8916_PNOC_SLV_4, 5462306a36Sopenharmony_ci MSM8916_PNOC_SLV_8, 5562306a36Sopenharmony_ci MSM8916_PNOC_SLV_9, 5662306a36Sopenharmony_ci MSM8916_PNOC_SNOC_MAS, 5762306a36Sopenharmony_ci MSM8916_PNOC_SNOC_SLV, 5862306a36Sopenharmony_ci MSM8916_SNOC_QDSS_INT, 5962306a36Sopenharmony_ci MSM8916_SLAVE_AMPSS_L2, 6062306a36Sopenharmony_ci MSM8916_SLAVE_APSS, 6162306a36Sopenharmony_ci MSM8916_SLAVE_LPASS, 6262306a36Sopenharmony_ci MSM8916_SLAVE_BIMC_CFG, 6362306a36Sopenharmony_ci MSM8916_SLAVE_BLSP_1, 6462306a36Sopenharmony_ci MSM8916_SLAVE_BOOT_ROM, 6562306a36Sopenharmony_ci MSM8916_SLAVE_CAMERA_CFG, 6662306a36Sopenharmony_ci MSM8916_SLAVE_CATS_128, 6762306a36Sopenharmony_ci MSM8916_SLAVE_OCMEM_64, 6862306a36Sopenharmony_ci MSM8916_SLAVE_CLK_CTL, 6962306a36Sopenharmony_ci MSM8916_SLAVE_CRYPTO_0_CFG, 7062306a36Sopenharmony_ci MSM8916_SLAVE_DEHR_CFG, 7162306a36Sopenharmony_ci MSM8916_SLAVE_DISPLAY_CFG, 7262306a36Sopenharmony_ci MSM8916_SLAVE_EBI_CH0, 7362306a36Sopenharmony_ci MSM8916_SLAVE_GRAPHICS_3D_CFG, 7462306a36Sopenharmony_ci MSM8916_SLAVE_IMEM_CFG, 7562306a36Sopenharmony_ci MSM8916_SLAVE_IMEM, 7662306a36Sopenharmony_ci MSM8916_SLAVE_MPM, 7762306a36Sopenharmony_ci MSM8916_SLAVE_MSG_RAM, 7862306a36Sopenharmony_ci MSM8916_SLAVE_MSS, 7962306a36Sopenharmony_ci MSM8916_SLAVE_PDM, 8062306a36Sopenharmony_ci MSM8916_SLAVE_PMIC_ARB, 8162306a36Sopenharmony_ci MSM8916_SLAVE_PNOC_CFG, 8262306a36Sopenharmony_ci MSM8916_SLAVE_PRNG, 8362306a36Sopenharmony_ci MSM8916_SLAVE_QDSS_CFG, 8462306a36Sopenharmony_ci MSM8916_SLAVE_QDSS_STM, 8562306a36Sopenharmony_ci MSM8916_SLAVE_RBCPR_CFG, 8662306a36Sopenharmony_ci MSM8916_SLAVE_SDCC_1, 8762306a36Sopenharmony_ci MSM8916_SLAVE_SDCC_2, 8862306a36Sopenharmony_ci MSM8916_SLAVE_SECURITY, 8962306a36Sopenharmony_ci MSM8916_SLAVE_SNOC_CFG, 9062306a36Sopenharmony_ci MSM8916_SLAVE_SPDM, 9162306a36Sopenharmony_ci MSM8916_SLAVE_SRVC_SNOC, 9262306a36Sopenharmony_ci MSM8916_SLAVE_TCSR, 9362306a36Sopenharmony_ci MSM8916_SLAVE_TLMM, 9462306a36Sopenharmony_ci MSM8916_SLAVE_USB_HS, 9562306a36Sopenharmony_ci MSM8916_SLAVE_VENUS_CFG, 9662306a36Sopenharmony_ci MSM8916_SNOC_BIMC_0_MAS, 9762306a36Sopenharmony_ci MSM8916_SNOC_BIMC_0_SLV, 9862306a36Sopenharmony_ci MSM8916_SNOC_BIMC_1_MAS, 9962306a36Sopenharmony_ci MSM8916_SNOC_BIMC_1_SLV, 10062306a36Sopenharmony_ci MSM8916_SNOC_INT_0, 10162306a36Sopenharmony_ci MSM8916_SNOC_INT_1, 10262306a36Sopenharmony_ci MSM8916_SNOC_INT_BIMC, 10362306a36Sopenharmony_ci MSM8916_SNOC_PNOC_MAS, 10462306a36Sopenharmony_ci MSM8916_SNOC_PNOC_SLV, 10562306a36Sopenharmony_ci}; 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_cistatic const u16 bimc_snoc_mas_links[] = { 10862306a36Sopenharmony_ci MSM8916_BIMC_SNOC_SLV 10962306a36Sopenharmony_ci}; 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_cistatic struct qcom_icc_node bimc_snoc_mas = { 11262306a36Sopenharmony_ci .name = "bimc_snoc_mas", 11362306a36Sopenharmony_ci .id = MSM8916_BIMC_SNOC_MAS, 11462306a36Sopenharmony_ci .buswidth = 8, 11562306a36Sopenharmony_ci .mas_rpm_id = -1, 11662306a36Sopenharmony_ci .slv_rpm_id = -1, 11762306a36Sopenharmony_ci .qos.ap_owned = true, 11862306a36Sopenharmony_ci .qos.qos_mode = NOC_QOS_MODE_INVALID, 11962306a36Sopenharmony_ci .num_links = ARRAY_SIZE(bimc_snoc_mas_links), 12062306a36Sopenharmony_ci .links = bimc_snoc_mas_links, 12162306a36Sopenharmony_ci}; 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_cistatic const u16 bimc_snoc_slv_links[] = { 12462306a36Sopenharmony_ci MSM8916_SNOC_INT_0, 12562306a36Sopenharmony_ci MSM8916_SNOC_INT_1 12662306a36Sopenharmony_ci}; 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_cistatic struct qcom_icc_node bimc_snoc_slv = { 12962306a36Sopenharmony_ci .name = "bimc_snoc_slv", 13062306a36Sopenharmony_ci .id = MSM8916_BIMC_SNOC_SLV, 13162306a36Sopenharmony_ci .buswidth = 8, 13262306a36Sopenharmony_ci .mas_rpm_id = -1, 13362306a36Sopenharmony_ci .slv_rpm_id = -1, 13462306a36Sopenharmony_ci .qos.ap_owned = true, 13562306a36Sopenharmony_ci .qos.qos_mode = NOC_QOS_MODE_INVALID, 13662306a36Sopenharmony_ci .num_links = ARRAY_SIZE(bimc_snoc_slv_links), 13762306a36Sopenharmony_ci .links = bimc_snoc_slv_links, 13862306a36Sopenharmony_ci}; 13962306a36Sopenharmony_ci 14062306a36Sopenharmony_cistatic const u16 mas_apss_links[] = { 14162306a36Sopenharmony_ci MSM8916_SLAVE_EBI_CH0, 14262306a36Sopenharmony_ci MSM8916_BIMC_SNOC_MAS, 14362306a36Sopenharmony_ci MSM8916_SLAVE_AMPSS_L2 14462306a36Sopenharmony_ci}; 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_cistatic struct qcom_icc_node mas_apss = { 14762306a36Sopenharmony_ci .name = "mas_apss", 14862306a36Sopenharmony_ci .id = MSM8916_MASTER_AMPSS_M0, 14962306a36Sopenharmony_ci .buswidth = 8, 15062306a36Sopenharmony_ci .mas_rpm_id = -1, 15162306a36Sopenharmony_ci .slv_rpm_id = -1, 15262306a36Sopenharmony_ci .qos.ap_owned = true, 15362306a36Sopenharmony_ci .qos.qos_mode = NOC_QOS_MODE_FIXED, 15462306a36Sopenharmony_ci .qos.areq_prio = 0, 15562306a36Sopenharmony_ci .qos.prio_level = 0, 15662306a36Sopenharmony_ci .qos.qos_port = 0, 15762306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mas_apss_links), 15862306a36Sopenharmony_ci .links = mas_apss_links, 15962306a36Sopenharmony_ci}; 16062306a36Sopenharmony_ci 16162306a36Sopenharmony_cistatic const u16 mas_audio_links[] = { 16262306a36Sopenharmony_ci MSM8916_PNOC_MAS_0 16362306a36Sopenharmony_ci}; 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_cistatic struct qcom_icc_node mas_audio = { 16662306a36Sopenharmony_ci .name = "mas_audio", 16762306a36Sopenharmony_ci .id = MSM8916_MASTER_LPASS, 16862306a36Sopenharmony_ci .buswidth = 4, 16962306a36Sopenharmony_ci .mas_rpm_id = -1, 17062306a36Sopenharmony_ci .slv_rpm_id = -1, 17162306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mas_audio_links), 17262306a36Sopenharmony_ci .links = mas_audio_links, 17362306a36Sopenharmony_ci}; 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_cistatic const u16 mas_blsp_1_links[] = { 17662306a36Sopenharmony_ci MSM8916_PNOC_MAS_1 17762306a36Sopenharmony_ci}; 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_cistatic struct qcom_icc_node mas_blsp_1 = { 18062306a36Sopenharmony_ci .name = "mas_blsp_1", 18162306a36Sopenharmony_ci .id = MSM8916_MASTER_BLSP_1, 18262306a36Sopenharmony_ci .buswidth = 4, 18362306a36Sopenharmony_ci .mas_rpm_id = -1, 18462306a36Sopenharmony_ci .slv_rpm_id = -1, 18562306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mas_blsp_1_links), 18662306a36Sopenharmony_ci .links = mas_blsp_1_links, 18762306a36Sopenharmony_ci}; 18862306a36Sopenharmony_ci 18962306a36Sopenharmony_cistatic const u16 mas_dehr_links[] = { 19062306a36Sopenharmony_ci MSM8916_PNOC_MAS_0 19162306a36Sopenharmony_ci}; 19262306a36Sopenharmony_ci 19362306a36Sopenharmony_cistatic struct qcom_icc_node mas_dehr = { 19462306a36Sopenharmony_ci .name = "mas_dehr", 19562306a36Sopenharmony_ci .id = MSM8916_MASTER_DEHR, 19662306a36Sopenharmony_ci .buswidth = 4, 19762306a36Sopenharmony_ci .mas_rpm_id = -1, 19862306a36Sopenharmony_ci .slv_rpm_id = -1, 19962306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mas_dehr_links), 20062306a36Sopenharmony_ci .links = mas_dehr_links, 20162306a36Sopenharmony_ci}; 20262306a36Sopenharmony_ci 20362306a36Sopenharmony_cistatic const u16 mas_gfx_links[] = { 20462306a36Sopenharmony_ci MSM8916_SLAVE_EBI_CH0, 20562306a36Sopenharmony_ci MSM8916_BIMC_SNOC_MAS, 20662306a36Sopenharmony_ci MSM8916_SLAVE_AMPSS_L2 20762306a36Sopenharmony_ci}; 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_cistatic struct qcom_icc_node mas_gfx = { 21062306a36Sopenharmony_ci .name = "mas_gfx", 21162306a36Sopenharmony_ci .id = MSM8916_MASTER_GRAPHICS_3D, 21262306a36Sopenharmony_ci .buswidth = 8, 21362306a36Sopenharmony_ci .mas_rpm_id = -1, 21462306a36Sopenharmony_ci .slv_rpm_id = -1, 21562306a36Sopenharmony_ci .qos.ap_owned = true, 21662306a36Sopenharmony_ci .qos.qos_mode = NOC_QOS_MODE_FIXED, 21762306a36Sopenharmony_ci .qos.areq_prio = 0, 21862306a36Sopenharmony_ci .qos.prio_level = 0, 21962306a36Sopenharmony_ci .qos.qos_port = 2, 22062306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mas_gfx_links), 22162306a36Sopenharmony_ci .links = mas_gfx_links, 22262306a36Sopenharmony_ci}; 22362306a36Sopenharmony_ci 22462306a36Sopenharmony_cistatic const u16 mas_jpeg_links[] = { 22562306a36Sopenharmony_ci MSM8916_SNOC_MM_INT_0, 22662306a36Sopenharmony_ci MSM8916_SNOC_MM_INT_2 22762306a36Sopenharmony_ci}; 22862306a36Sopenharmony_ci 22962306a36Sopenharmony_cistatic struct qcom_icc_node mas_jpeg = { 23062306a36Sopenharmony_ci .name = "mas_jpeg", 23162306a36Sopenharmony_ci .id = MSM8916_MASTER_JPEG, 23262306a36Sopenharmony_ci .buswidth = 16, 23362306a36Sopenharmony_ci .mas_rpm_id = -1, 23462306a36Sopenharmony_ci .slv_rpm_id = -1, 23562306a36Sopenharmony_ci .qos.ap_owned = true, 23662306a36Sopenharmony_ci .qos.qos_mode = NOC_QOS_MODE_BYPASS, 23762306a36Sopenharmony_ci .qos.areq_prio = 0, 23862306a36Sopenharmony_ci .qos.prio_level = 0, 23962306a36Sopenharmony_ci .qos.qos_port = 6, 24062306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mas_jpeg_links), 24162306a36Sopenharmony_ci .links = mas_jpeg_links, 24262306a36Sopenharmony_ci}; 24362306a36Sopenharmony_ci 24462306a36Sopenharmony_cistatic const u16 mas_mdp_links[] = { 24562306a36Sopenharmony_ci MSM8916_SNOC_MM_INT_0, 24662306a36Sopenharmony_ci MSM8916_SNOC_MM_INT_2 24762306a36Sopenharmony_ci}; 24862306a36Sopenharmony_ci 24962306a36Sopenharmony_cistatic struct qcom_icc_node mas_mdp = { 25062306a36Sopenharmony_ci .name = "mas_mdp", 25162306a36Sopenharmony_ci .id = MSM8916_MASTER_MDP_PORT0, 25262306a36Sopenharmony_ci .buswidth = 16, 25362306a36Sopenharmony_ci .mas_rpm_id = -1, 25462306a36Sopenharmony_ci .slv_rpm_id = -1, 25562306a36Sopenharmony_ci .qos.ap_owned = true, 25662306a36Sopenharmony_ci .qos.qos_mode = NOC_QOS_MODE_BYPASS, 25762306a36Sopenharmony_ci .qos.areq_prio = 0, 25862306a36Sopenharmony_ci .qos.prio_level = 0, 25962306a36Sopenharmony_ci .qos.qos_port = 7, 26062306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mas_mdp_links), 26162306a36Sopenharmony_ci .links = mas_mdp_links, 26262306a36Sopenharmony_ci}; 26362306a36Sopenharmony_ci 26462306a36Sopenharmony_cistatic const u16 mas_pcnoc_crypto_0_links[] = { 26562306a36Sopenharmony_ci MSM8916_PNOC_INT_1 26662306a36Sopenharmony_ci}; 26762306a36Sopenharmony_ci 26862306a36Sopenharmony_cistatic struct qcom_icc_node mas_pcnoc_crypto_0 = { 26962306a36Sopenharmony_ci .name = "mas_pcnoc_crypto_0", 27062306a36Sopenharmony_ci .id = MSM8916_MASTER_CRYPTO_CORE0, 27162306a36Sopenharmony_ci .buswidth = 8, 27262306a36Sopenharmony_ci .mas_rpm_id = -1, 27362306a36Sopenharmony_ci .slv_rpm_id = -1, 27462306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mas_pcnoc_crypto_0_links), 27562306a36Sopenharmony_ci .links = mas_pcnoc_crypto_0_links, 27662306a36Sopenharmony_ci}; 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_cistatic const u16 mas_pcnoc_sdcc_1_links[] = { 27962306a36Sopenharmony_ci MSM8916_PNOC_INT_1 28062306a36Sopenharmony_ci}; 28162306a36Sopenharmony_ci 28262306a36Sopenharmony_cistatic struct qcom_icc_node mas_pcnoc_sdcc_1 = { 28362306a36Sopenharmony_ci .name = "mas_pcnoc_sdcc_1", 28462306a36Sopenharmony_ci .id = MSM8916_MASTER_SDCC_1, 28562306a36Sopenharmony_ci .buswidth = 8, 28662306a36Sopenharmony_ci .mas_rpm_id = -1, 28762306a36Sopenharmony_ci .slv_rpm_id = -1, 28862306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mas_pcnoc_sdcc_1_links), 28962306a36Sopenharmony_ci .links = mas_pcnoc_sdcc_1_links, 29062306a36Sopenharmony_ci}; 29162306a36Sopenharmony_ci 29262306a36Sopenharmony_cistatic const u16 mas_pcnoc_sdcc_2_links[] = { 29362306a36Sopenharmony_ci MSM8916_PNOC_INT_1 29462306a36Sopenharmony_ci}; 29562306a36Sopenharmony_ci 29662306a36Sopenharmony_cistatic struct qcom_icc_node mas_pcnoc_sdcc_2 = { 29762306a36Sopenharmony_ci .name = "mas_pcnoc_sdcc_2", 29862306a36Sopenharmony_ci .id = MSM8916_MASTER_SDCC_2, 29962306a36Sopenharmony_ci .buswidth = 8, 30062306a36Sopenharmony_ci .mas_rpm_id = -1, 30162306a36Sopenharmony_ci .slv_rpm_id = -1, 30262306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mas_pcnoc_sdcc_2_links), 30362306a36Sopenharmony_ci .links = mas_pcnoc_sdcc_2_links, 30462306a36Sopenharmony_ci}; 30562306a36Sopenharmony_ci 30662306a36Sopenharmony_cistatic const u16 mas_qdss_bam_links[] = { 30762306a36Sopenharmony_ci MSM8916_SNOC_QDSS_INT 30862306a36Sopenharmony_ci}; 30962306a36Sopenharmony_ci 31062306a36Sopenharmony_cistatic struct qcom_icc_node mas_qdss_bam = { 31162306a36Sopenharmony_ci .name = "mas_qdss_bam", 31262306a36Sopenharmony_ci .id = MSM8916_MASTER_QDSS_BAM, 31362306a36Sopenharmony_ci .buswidth = 8, 31462306a36Sopenharmony_ci .mas_rpm_id = -1, 31562306a36Sopenharmony_ci .slv_rpm_id = -1, 31662306a36Sopenharmony_ci .qos.ap_owned = true, 31762306a36Sopenharmony_ci .qos.qos_mode = NOC_QOS_MODE_FIXED, 31862306a36Sopenharmony_ci .qos.areq_prio = 1, 31962306a36Sopenharmony_ci .qos.prio_level = 1, 32062306a36Sopenharmony_ci .qos.qos_port = 11, 32162306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mas_qdss_bam_links), 32262306a36Sopenharmony_ci .links = mas_qdss_bam_links, 32362306a36Sopenharmony_ci}; 32462306a36Sopenharmony_ci 32562306a36Sopenharmony_cistatic const u16 mas_qdss_etr_links[] = { 32662306a36Sopenharmony_ci MSM8916_SNOC_QDSS_INT 32762306a36Sopenharmony_ci}; 32862306a36Sopenharmony_ci 32962306a36Sopenharmony_cistatic struct qcom_icc_node mas_qdss_etr = { 33062306a36Sopenharmony_ci .name = "mas_qdss_etr", 33162306a36Sopenharmony_ci .id = MSM8916_MASTER_QDSS_ETR, 33262306a36Sopenharmony_ci .buswidth = 8, 33362306a36Sopenharmony_ci .mas_rpm_id = -1, 33462306a36Sopenharmony_ci .slv_rpm_id = -1, 33562306a36Sopenharmony_ci .qos.ap_owned = true, 33662306a36Sopenharmony_ci .qos.qos_mode = NOC_QOS_MODE_FIXED, 33762306a36Sopenharmony_ci .qos.areq_prio = 1, 33862306a36Sopenharmony_ci .qos.prio_level = 1, 33962306a36Sopenharmony_ci .qos.qos_port = 10, 34062306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mas_qdss_etr_links), 34162306a36Sopenharmony_ci .links = mas_qdss_etr_links, 34262306a36Sopenharmony_ci}; 34362306a36Sopenharmony_ci 34462306a36Sopenharmony_cistatic const u16 mas_snoc_cfg_links[] = { 34562306a36Sopenharmony_ci MSM8916_SNOC_QDSS_INT 34662306a36Sopenharmony_ci}; 34762306a36Sopenharmony_ci 34862306a36Sopenharmony_cistatic struct qcom_icc_node mas_snoc_cfg = { 34962306a36Sopenharmony_ci .name = "mas_snoc_cfg", 35062306a36Sopenharmony_ci .id = MSM8916_MASTER_SNOC_CFG, 35162306a36Sopenharmony_ci .buswidth = 4, 35262306a36Sopenharmony_ci .mas_rpm_id = -1, 35362306a36Sopenharmony_ci .slv_rpm_id = -1, 35462306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mas_snoc_cfg_links), 35562306a36Sopenharmony_ci .links = mas_snoc_cfg_links, 35662306a36Sopenharmony_ci}; 35762306a36Sopenharmony_ci 35862306a36Sopenharmony_cistatic const u16 mas_spdm_links[] = { 35962306a36Sopenharmony_ci MSM8916_PNOC_MAS_0 36062306a36Sopenharmony_ci}; 36162306a36Sopenharmony_ci 36262306a36Sopenharmony_cistatic struct qcom_icc_node mas_spdm = { 36362306a36Sopenharmony_ci .name = "mas_spdm", 36462306a36Sopenharmony_ci .id = MSM8916_MASTER_SPDM, 36562306a36Sopenharmony_ci .buswidth = 4, 36662306a36Sopenharmony_ci .mas_rpm_id = -1, 36762306a36Sopenharmony_ci .slv_rpm_id = -1, 36862306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mas_spdm_links), 36962306a36Sopenharmony_ci .links = mas_spdm_links, 37062306a36Sopenharmony_ci}; 37162306a36Sopenharmony_ci 37262306a36Sopenharmony_cistatic const u16 mas_tcu0_links[] = { 37362306a36Sopenharmony_ci MSM8916_SLAVE_EBI_CH0, 37462306a36Sopenharmony_ci MSM8916_BIMC_SNOC_MAS, 37562306a36Sopenharmony_ci MSM8916_SLAVE_AMPSS_L2 37662306a36Sopenharmony_ci}; 37762306a36Sopenharmony_ci 37862306a36Sopenharmony_cistatic struct qcom_icc_node mas_tcu0 = { 37962306a36Sopenharmony_ci .name = "mas_tcu0", 38062306a36Sopenharmony_ci .id = MSM8916_MASTER_TCU0, 38162306a36Sopenharmony_ci .buswidth = 8, 38262306a36Sopenharmony_ci .mas_rpm_id = -1, 38362306a36Sopenharmony_ci .slv_rpm_id = -1, 38462306a36Sopenharmony_ci .qos.ap_owned = true, 38562306a36Sopenharmony_ci .qos.qos_mode = NOC_QOS_MODE_FIXED, 38662306a36Sopenharmony_ci .qos.areq_prio = 2, 38762306a36Sopenharmony_ci .qos.prio_level = 2, 38862306a36Sopenharmony_ci .qos.qos_port = 5, 38962306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mas_tcu0_links), 39062306a36Sopenharmony_ci .links = mas_tcu0_links, 39162306a36Sopenharmony_ci}; 39262306a36Sopenharmony_ci 39362306a36Sopenharmony_cistatic const u16 mas_tcu1_links[] = { 39462306a36Sopenharmony_ci MSM8916_SLAVE_EBI_CH0, 39562306a36Sopenharmony_ci MSM8916_BIMC_SNOC_MAS, 39662306a36Sopenharmony_ci MSM8916_SLAVE_AMPSS_L2 39762306a36Sopenharmony_ci}; 39862306a36Sopenharmony_ci 39962306a36Sopenharmony_cistatic struct qcom_icc_node mas_tcu1 = { 40062306a36Sopenharmony_ci .name = "mas_tcu1", 40162306a36Sopenharmony_ci .id = MSM8916_MASTER_TCU1, 40262306a36Sopenharmony_ci .buswidth = 8, 40362306a36Sopenharmony_ci .mas_rpm_id = -1, 40462306a36Sopenharmony_ci .slv_rpm_id = -1, 40562306a36Sopenharmony_ci .qos.ap_owned = true, 40662306a36Sopenharmony_ci .qos.qos_mode = NOC_QOS_MODE_FIXED, 40762306a36Sopenharmony_ci .qos.areq_prio = 2, 40862306a36Sopenharmony_ci .qos.prio_level = 2, 40962306a36Sopenharmony_ci .qos.qos_port = 6, 41062306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mas_tcu1_links), 41162306a36Sopenharmony_ci .links = mas_tcu1_links, 41262306a36Sopenharmony_ci}; 41362306a36Sopenharmony_ci 41462306a36Sopenharmony_cistatic const u16 mas_usb_hs_links[] = { 41562306a36Sopenharmony_ci MSM8916_PNOC_MAS_1 41662306a36Sopenharmony_ci}; 41762306a36Sopenharmony_ci 41862306a36Sopenharmony_cistatic struct qcom_icc_node mas_usb_hs = { 41962306a36Sopenharmony_ci .name = "mas_usb_hs", 42062306a36Sopenharmony_ci .id = MSM8916_MASTER_USB_HS, 42162306a36Sopenharmony_ci .buswidth = 4, 42262306a36Sopenharmony_ci .mas_rpm_id = -1, 42362306a36Sopenharmony_ci .slv_rpm_id = -1, 42462306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mas_usb_hs_links), 42562306a36Sopenharmony_ci .links = mas_usb_hs_links, 42662306a36Sopenharmony_ci}; 42762306a36Sopenharmony_ci 42862306a36Sopenharmony_cistatic const u16 mas_vfe_links[] = { 42962306a36Sopenharmony_ci MSM8916_SNOC_MM_INT_1, 43062306a36Sopenharmony_ci MSM8916_SNOC_MM_INT_2 43162306a36Sopenharmony_ci}; 43262306a36Sopenharmony_ci 43362306a36Sopenharmony_cistatic struct qcom_icc_node mas_vfe = { 43462306a36Sopenharmony_ci .name = "mas_vfe", 43562306a36Sopenharmony_ci .id = MSM8916_MASTER_VFE, 43662306a36Sopenharmony_ci .buswidth = 16, 43762306a36Sopenharmony_ci .mas_rpm_id = -1, 43862306a36Sopenharmony_ci .slv_rpm_id = -1, 43962306a36Sopenharmony_ci .qos.ap_owned = true, 44062306a36Sopenharmony_ci .qos.qos_mode = NOC_QOS_MODE_BYPASS, 44162306a36Sopenharmony_ci .qos.areq_prio = 0, 44262306a36Sopenharmony_ci .qos.prio_level = 0, 44362306a36Sopenharmony_ci .qos.qos_port = 9, 44462306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mas_vfe_links), 44562306a36Sopenharmony_ci .links = mas_vfe_links, 44662306a36Sopenharmony_ci}; 44762306a36Sopenharmony_ci 44862306a36Sopenharmony_cistatic const u16 mas_video_links[] = { 44962306a36Sopenharmony_ci MSM8916_SNOC_MM_INT_0, 45062306a36Sopenharmony_ci MSM8916_SNOC_MM_INT_2 45162306a36Sopenharmony_ci}; 45262306a36Sopenharmony_ci 45362306a36Sopenharmony_cistatic struct qcom_icc_node mas_video = { 45462306a36Sopenharmony_ci .name = "mas_video", 45562306a36Sopenharmony_ci .id = MSM8916_MASTER_VIDEO_P0, 45662306a36Sopenharmony_ci .buswidth = 16, 45762306a36Sopenharmony_ci .mas_rpm_id = -1, 45862306a36Sopenharmony_ci .slv_rpm_id = -1, 45962306a36Sopenharmony_ci .qos.ap_owned = true, 46062306a36Sopenharmony_ci .qos.qos_mode = NOC_QOS_MODE_BYPASS, 46162306a36Sopenharmony_ci .qos.areq_prio = 0, 46262306a36Sopenharmony_ci .qos.prio_level = 0, 46362306a36Sopenharmony_ci .qos.qos_port = 8, 46462306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mas_video_links), 46562306a36Sopenharmony_ci .links = mas_video_links, 46662306a36Sopenharmony_ci}; 46762306a36Sopenharmony_ci 46862306a36Sopenharmony_cistatic const u16 mm_int_0_links[] = { 46962306a36Sopenharmony_ci MSM8916_SNOC_MM_INT_BIMC 47062306a36Sopenharmony_ci}; 47162306a36Sopenharmony_ci 47262306a36Sopenharmony_cistatic struct qcom_icc_node mm_int_0 = { 47362306a36Sopenharmony_ci .name = "mm_int_0", 47462306a36Sopenharmony_ci .id = MSM8916_SNOC_MM_INT_0, 47562306a36Sopenharmony_ci .buswidth = 16, 47662306a36Sopenharmony_ci .mas_rpm_id = -1, 47762306a36Sopenharmony_ci .slv_rpm_id = -1, 47862306a36Sopenharmony_ci .qos.ap_owned = true, 47962306a36Sopenharmony_ci .qos.qos_mode = NOC_QOS_MODE_INVALID, 48062306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mm_int_0_links), 48162306a36Sopenharmony_ci .links = mm_int_0_links, 48262306a36Sopenharmony_ci}; 48362306a36Sopenharmony_ci 48462306a36Sopenharmony_cistatic const u16 mm_int_1_links[] = { 48562306a36Sopenharmony_ci MSM8916_SNOC_MM_INT_BIMC 48662306a36Sopenharmony_ci}; 48762306a36Sopenharmony_ci 48862306a36Sopenharmony_cistatic struct qcom_icc_node mm_int_1 = { 48962306a36Sopenharmony_ci .name = "mm_int_1", 49062306a36Sopenharmony_ci .id = MSM8916_SNOC_MM_INT_1, 49162306a36Sopenharmony_ci .buswidth = 16, 49262306a36Sopenharmony_ci .mas_rpm_id = -1, 49362306a36Sopenharmony_ci .slv_rpm_id = -1, 49462306a36Sopenharmony_ci .qos.ap_owned = true, 49562306a36Sopenharmony_ci .qos.qos_mode = NOC_QOS_MODE_INVALID, 49662306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mm_int_1_links), 49762306a36Sopenharmony_ci .links = mm_int_1_links, 49862306a36Sopenharmony_ci}; 49962306a36Sopenharmony_ci 50062306a36Sopenharmony_cistatic const u16 mm_int_2_links[] = { 50162306a36Sopenharmony_ci MSM8916_SNOC_INT_0 50262306a36Sopenharmony_ci}; 50362306a36Sopenharmony_ci 50462306a36Sopenharmony_cistatic struct qcom_icc_node mm_int_2 = { 50562306a36Sopenharmony_ci .name = "mm_int_2", 50662306a36Sopenharmony_ci .id = MSM8916_SNOC_MM_INT_2, 50762306a36Sopenharmony_ci .buswidth = 16, 50862306a36Sopenharmony_ci .mas_rpm_id = -1, 50962306a36Sopenharmony_ci .slv_rpm_id = -1, 51062306a36Sopenharmony_ci .qos.ap_owned = true, 51162306a36Sopenharmony_ci .qos.qos_mode = NOC_QOS_MODE_INVALID, 51262306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mm_int_2_links), 51362306a36Sopenharmony_ci .links = mm_int_2_links, 51462306a36Sopenharmony_ci}; 51562306a36Sopenharmony_ci 51662306a36Sopenharmony_cistatic const u16 mm_int_bimc_links[] = { 51762306a36Sopenharmony_ci MSM8916_SNOC_BIMC_1_MAS 51862306a36Sopenharmony_ci}; 51962306a36Sopenharmony_ci 52062306a36Sopenharmony_cistatic struct qcom_icc_node mm_int_bimc = { 52162306a36Sopenharmony_ci .name = "mm_int_bimc", 52262306a36Sopenharmony_ci .id = MSM8916_SNOC_MM_INT_BIMC, 52362306a36Sopenharmony_ci .buswidth = 16, 52462306a36Sopenharmony_ci .mas_rpm_id = -1, 52562306a36Sopenharmony_ci .slv_rpm_id = -1, 52662306a36Sopenharmony_ci .qos.ap_owned = true, 52762306a36Sopenharmony_ci .qos.qos_mode = NOC_QOS_MODE_INVALID, 52862306a36Sopenharmony_ci .num_links = ARRAY_SIZE(mm_int_bimc_links), 52962306a36Sopenharmony_ci .links = mm_int_bimc_links, 53062306a36Sopenharmony_ci}; 53162306a36Sopenharmony_ci 53262306a36Sopenharmony_cistatic const u16 pcnoc_int_0_links[] = { 53362306a36Sopenharmony_ci MSM8916_PNOC_SNOC_MAS, 53462306a36Sopenharmony_ci MSM8916_PNOC_SLV_0, 53562306a36Sopenharmony_ci MSM8916_PNOC_SLV_1, 53662306a36Sopenharmony_ci MSM8916_PNOC_SLV_2, 53762306a36Sopenharmony_ci MSM8916_PNOC_SLV_3, 53862306a36Sopenharmony_ci MSM8916_PNOC_SLV_4, 53962306a36Sopenharmony_ci MSM8916_PNOC_SLV_8, 54062306a36Sopenharmony_ci MSM8916_PNOC_SLV_9 54162306a36Sopenharmony_ci}; 54262306a36Sopenharmony_ci 54362306a36Sopenharmony_cistatic struct qcom_icc_node pcnoc_int_0 = { 54462306a36Sopenharmony_ci .name = "pcnoc_int_0", 54562306a36Sopenharmony_ci .id = MSM8916_PNOC_INT_0, 54662306a36Sopenharmony_ci .buswidth = 8, 54762306a36Sopenharmony_ci .mas_rpm_id = -1, 54862306a36Sopenharmony_ci .slv_rpm_id = -1, 54962306a36Sopenharmony_ci .num_links = ARRAY_SIZE(pcnoc_int_0_links), 55062306a36Sopenharmony_ci .links = pcnoc_int_0_links, 55162306a36Sopenharmony_ci}; 55262306a36Sopenharmony_ci 55362306a36Sopenharmony_cistatic const u16 pcnoc_int_1_links[] = { 55462306a36Sopenharmony_ci MSM8916_PNOC_SNOC_MAS 55562306a36Sopenharmony_ci}; 55662306a36Sopenharmony_ci 55762306a36Sopenharmony_cistatic struct qcom_icc_node pcnoc_int_1 = { 55862306a36Sopenharmony_ci .name = "pcnoc_int_1", 55962306a36Sopenharmony_ci .id = MSM8916_PNOC_INT_1, 56062306a36Sopenharmony_ci .buswidth = 8, 56162306a36Sopenharmony_ci .mas_rpm_id = -1, 56262306a36Sopenharmony_ci .slv_rpm_id = -1, 56362306a36Sopenharmony_ci .num_links = ARRAY_SIZE(pcnoc_int_1_links), 56462306a36Sopenharmony_ci .links = pcnoc_int_1_links, 56562306a36Sopenharmony_ci}; 56662306a36Sopenharmony_ci 56762306a36Sopenharmony_cistatic const u16 pcnoc_m_0_links[] = { 56862306a36Sopenharmony_ci MSM8916_PNOC_INT_0 56962306a36Sopenharmony_ci}; 57062306a36Sopenharmony_ci 57162306a36Sopenharmony_cistatic struct qcom_icc_node pcnoc_m_0 = { 57262306a36Sopenharmony_ci .name = "pcnoc_m_0", 57362306a36Sopenharmony_ci .id = MSM8916_PNOC_MAS_0, 57462306a36Sopenharmony_ci .buswidth = 8, 57562306a36Sopenharmony_ci .mas_rpm_id = -1, 57662306a36Sopenharmony_ci .slv_rpm_id = -1, 57762306a36Sopenharmony_ci .num_links = ARRAY_SIZE(pcnoc_m_0_links), 57862306a36Sopenharmony_ci .links = pcnoc_m_0_links, 57962306a36Sopenharmony_ci}; 58062306a36Sopenharmony_ci 58162306a36Sopenharmony_cistatic const u16 pcnoc_m_1_links[] = { 58262306a36Sopenharmony_ci MSM8916_PNOC_SNOC_MAS 58362306a36Sopenharmony_ci}; 58462306a36Sopenharmony_ci 58562306a36Sopenharmony_cistatic struct qcom_icc_node pcnoc_m_1 = { 58662306a36Sopenharmony_ci .name = "pcnoc_m_1", 58762306a36Sopenharmony_ci .id = MSM8916_PNOC_MAS_1, 58862306a36Sopenharmony_ci .buswidth = 8, 58962306a36Sopenharmony_ci .mas_rpm_id = -1, 59062306a36Sopenharmony_ci .slv_rpm_id = -1, 59162306a36Sopenharmony_ci .num_links = ARRAY_SIZE(pcnoc_m_1_links), 59262306a36Sopenharmony_ci .links = pcnoc_m_1_links, 59362306a36Sopenharmony_ci}; 59462306a36Sopenharmony_ci 59562306a36Sopenharmony_cistatic const u16 pcnoc_s_0_links[] = { 59662306a36Sopenharmony_ci MSM8916_SLAVE_CLK_CTL, 59762306a36Sopenharmony_ci MSM8916_SLAVE_TLMM, 59862306a36Sopenharmony_ci MSM8916_SLAVE_TCSR, 59962306a36Sopenharmony_ci MSM8916_SLAVE_SECURITY, 60062306a36Sopenharmony_ci MSM8916_SLAVE_MSS 60162306a36Sopenharmony_ci}; 60262306a36Sopenharmony_ci 60362306a36Sopenharmony_cistatic struct qcom_icc_node pcnoc_s_0 = { 60462306a36Sopenharmony_ci .name = "pcnoc_s_0", 60562306a36Sopenharmony_ci .id = MSM8916_PNOC_SLV_0, 60662306a36Sopenharmony_ci .buswidth = 4, 60762306a36Sopenharmony_ci .mas_rpm_id = -1, 60862306a36Sopenharmony_ci .slv_rpm_id = -1, 60962306a36Sopenharmony_ci .num_links = ARRAY_SIZE(pcnoc_s_0_links), 61062306a36Sopenharmony_ci .links = pcnoc_s_0_links, 61162306a36Sopenharmony_ci}; 61262306a36Sopenharmony_ci 61362306a36Sopenharmony_cistatic const u16 pcnoc_s_1_links[] = { 61462306a36Sopenharmony_ci MSM8916_SLAVE_IMEM_CFG, 61562306a36Sopenharmony_ci MSM8916_SLAVE_CRYPTO_0_CFG, 61662306a36Sopenharmony_ci MSM8916_SLAVE_MSG_RAM, 61762306a36Sopenharmony_ci MSM8916_SLAVE_PDM, 61862306a36Sopenharmony_ci MSM8916_SLAVE_PRNG 61962306a36Sopenharmony_ci}; 62062306a36Sopenharmony_ci 62162306a36Sopenharmony_cistatic struct qcom_icc_node pcnoc_s_1 = { 62262306a36Sopenharmony_ci .name = "pcnoc_s_1", 62362306a36Sopenharmony_ci .id = MSM8916_PNOC_SLV_1, 62462306a36Sopenharmony_ci .buswidth = 4, 62562306a36Sopenharmony_ci .mas_rpm_id = -1, 62662306a36Sopenharmony_ci .slv_rpm_id = -1, 62762306a36Sopenharmony_ci .num_links = ARRAY_SIZE(pcnoc_s_1_links), 62862306a36Sopenharmony_ci .links = pcnoc_s_1_links, 62962306a36Sopenharmony_ci}; 63062306a36Sopenharmony_ci 63162306a36Sopenharmony_cistatic const u16 pcnoc_s_2_links[] = { 63262306a36Sopenharmony_ci MSM8916_SLAVE_SPDM, 63362306a36Sopenharmony_ci MSM8916_SLAVE_BOOT_ROM, 63462306a36Sopenharmony_ci MSM8916_SLAVE_BIMC_CFG, 63562306a36Sopenharmony_ci MSM8916_SLAVE_PNOC_CFG, 63662306a36Sopenharmony_ci MSM8916_SLAVE_PMIC_ARB 63762306a36Sopenharmony_ci}; 63862306a36Sopenharmony_ci 63962306a36Sopenharmony_cistatic struct qcom_icc_node pcnoc_s_2 = { 64062306a36Sopenharmony_ci .name = "pcnoc_s_2", 64162306a36Sopenharmony_ci .id = MSM8916_PNOC_SLV_2, 64262306a36Sopenharmony_ci .buswidth = 4, 64362306a36Sopenharmony_ci .mas_rpm_id = -1, 64462306a36Sopenharmony_ci .slv_rpm_id = -1, 64562306a36Sopenharmony_ci .num_links = ARRAY_SIZE(pcnoc_s_2_links), 64662306a36Sopenharmony_ci .links = pcnoc_s_2_links, 64762306a36Sopenharmony_ci}; 64862306a36Sopenharmony_ci 64962306a36Sopenharmony_cistatic const u16 pcnoc_s_3_links[] = { 65062306a36Sopenharmony_ci MSM8916_SLAVE_MPM, 65162306a36Sopenharmony_ci MSM8916_SLAVE_SNOC_CFG, 65262306a36Sopenharmony_ci MSM8916_SLAVE_RBCPR_CFG, 65362306a36Sopenharmony_ci MSM8916_SLAVE_QDSS_CFG, 65462306a36Sopenharmony_ci MSM8916_SLAVE_DEHR_CFG 65562306a36Sopenharmony_ci}; 65662306a36Sopenharmony_ci 65762306a36Sopenharmony_cistatic struct qcom_icc_node pcnoc_s_3 = { 65862306a36Sopenharmony_ci .name = "pcnoc_s_3", 65962306a36Sopenharmony_ci .id = MSM8916_PNOC_SLV_3, 66062306a36Sopenharmony_ci .buswidth = 4, 66162306a36Sopenharmony_ci .mas_rpm_id = -1, 66262306a36Sopenharmony_ci .slv_rpm_id = -1, 66362306a36Sopenharmony_ci .num_links = ARRAY_SIZE(pcnoc_s_3_links), 66462306a36Sopenharmony_ci .links = pcnoc_s_3_links, 66562306a36Sopenharmony_ci}; 66662306a36Sopenharmony_ci 66762306a36Sopenharmony_cistatic const u16 pcnoc_s_4_links[] = { 66862306a36Sopenharmony_ci MSM8916_SLAVE_VENUS_CFG, 66962306a36Sopenharmony_ci MSM8916_SLAVE_CAMERA_CFG, 67062306a36Sopenharmony_ci MSM8916_SLAVE_DISPLAY_CFG 67162306a36Sopenharmony_ci}; 67262306a36Sopenharmony_ci 67362306a36Sopenharmony_cistatic struct qcom_icc_node pcnoc_s_4 = { 67462306a36Sopenharmony_ci .name = "pcnoc_s_4", 67562306a36Sopenharmony_ci .id = MSM8916_PNOC_SLV_4, 67662306a36Sopenharmony_ci .buswidth = 4, 67762306a36Sopenharmony_ci .mas_rpm_id = -1, 67862306a36Sopenharmony_ci .slv_rpm_id = -1, 67962306a36Sopenharmony_ci .num_links = ARRAY_SIZE(pcnoc_s_4_links), 68062306a36Sopenharmony_ci .links = pcnoc_s_4_links, 68162306a36Sopenharmony_ci}; 68262306a36Sopenharmony_ci 68362306a36Sopenharmony_cistatic const u16 pcnoc_s_8_links[] = { 68462306a36Sopenharmony_ci MSM8916_SLAVE_USB_HS, 68562306a36Sopenharmony_ci MSM8916_SLAVE_SDCC_1, 68662306a36Sopenharmony_ci MSM8916_SLAVE_BLSP_1 68762306a36Sopenharmony_ci}; 68862306a36Sopenharmony_ci 68962306a36Sopenharmony_cistatic struct qcom_icc_node pcnoc_s_8 = { 69062306a36Sopenharmony_ci .name = "pcnoc_s_8", 69162306a36Sopenharmony_ci .id = MSM8916_PNOC_SLV_8, 69262306a36Sopenharmony_ci .buswidth = 4, 69362306a36Sopenharmony_ci .mas_rpm_id = -1, 69462306a36Sopenharmony_ci .slv_rpm_id = -1, 69562306a36Sopenharmony_ci .num_links = ARRAY_SIZE(pcnoc_s_8_links), 69662306a36Sopenharmony_ci .links = pcnoc_s_8_links, 69762306a36Sopenharmony_ci}; 69862306a36Sopenharmony_ci 69962306a36Sopenharmony_cistatic const u16 pcnoc_s_9_links[] = { 70062306a36Sopenharmony_ci MSM8916_SLAVE_SDCC_2, 70162306a36Sopenharmony_ci MSM8916_SLAVE_LPASS, 70262306a36Sopenharmony_ci MSM8916_SLAVE_GRAPHICS_3D_CFG 70362306a36Sopenharmony_ci}; 70462306a36Sopenharmony_ci 70562306a36Sopenharmony_cistatic struct qcom_icc_node pcnoc_s_9 = { 70662306a36Sopenharmony_ci .name = "pcnoc_s_9", 70762306a36Sopenharmony_ci .id = MSM8916_PNOC_SLV_9, 70862306a36Sopenharmony_ci .buswidth = 4, 70962306a36Sopenharmony_ci .mas_rpm_id = -1, 71062306a36Sopenharmony_ci .slv_rpm_id = -1, 71162306a36Sopenharmony_ci .num_links = ARRAY_SIZE(pcnoc_s_9_links), 71262306a36Sopenharmony_ci .links = pcnoc_s_9_links, 71362306a36Sopenharmony_ci}; 71462306a36Sopenharmony_ci 71562306a36Sopenharmony_cistatic const u16 pcnoc_snoc_mas_links[] = { 71662306a36Sopenharmony_ci MSM8916_PNOC_SNOC_SLV 71762306a36Sopenharmony_ci}; 71862306a36Sopenharmony_ci 71962306a36Sopenharmony_cistatic struct qcom_icc_node pcnoc_snoc_mas = { 72062306a36Sopenharmony_ci .name = "pcnoc_snoc_mas", 72162306a36Sopenharmony_ci .id = MSM8916_PNOC_SNOC_MAS, 72262306a36Sopenharmony_ci .buswidth = 8, 72362306a36Sopenharmony_ci .mas_rpm_id = 29, 72462306a36Sopenharmony_ci .slv_rpm_id = -1, 72562306a36Sopenharmony_ci .num_links = ARRAY_SIZE(pcnoc_snoc_mas_links), 72662306a36Sopenharmony_ci .links = pcnoc_snoc_mas_links, 72762306a36Sopenharmony_ci}; 72862306a36Sopenharmony_ci 72962306a36Sopenharmony_cistatic const u16 pcnoc_snoc_slv_links[] = { 73062306a36Sopenharmony_ci MSM8916_SNOC_INT_0, 73162306a36Sopenharmony_ci MSM8916_SNOC_INT_BIMC, 73262306a36Sopenharmony_ci MSM8916_SNOC_INT_1 73362306a36Sopenharmony_ci}; 73462306a36Sopenharmony_ci 73562306a36Sopenharmony_cistatic struct qcom_icc_node pcnoc_snoc_slv = { 73662306a36Sopenharmony_ci .name = "pcnoc_snoc_slv", 73762306a36Sopenharmony_ci .id = MSM8916_PNOC_SNOC_SLV, 73862306a36Sopenharmony_ci .buswidth = 8, 73962306a36Sopenharmony_ci .mas_rpm_id = -1, 74062306a36Sopenharmony_ci .slv_rpm_id = 45, 74162306a36Sopenharmony_ci .num_links = ARRAY_SIZE(pcnoc_snoc_slv_links), 74262306a36Sopenharmony_ci .links = pcnoc_snoc_slv_links, 74362306a36Sopenharmony_ci}; 74462306a36Sopenharmony_ci 74562306a36Sopenharmony_cistatic const u16 qdss_int_links[] = { 74662306a36Sopenharmony_ci MSM8916_SNOC_INT_0, 74762306a36Sopenharmony_ci MSM8916_SNOC_INT_BIMC 74862306a36Sopenharmony_ci}; 74962306a36Sopenharmony_ci 75062306a36Sopenharmony_cistatic struct qcom_icc_node qdss_int = { 75162306a36Sopenharmony_ci .name = "qdss_int", 75262306a36Sopenharmony_ci .id = MSM8916_SNOC_QDSS_INT, 75362306a36Sopenharmony_ci .buswidth = 8, 75462306a36Sopenharmony_ci .mas_rpm_id = -1, 75562306a36Sopenharmony_ci .slv_rpm_id = -1, 75662306a36Sopenharmony_ci .qos.ap_owned = true, 75762306a36Sopenharmony_ci .qos.qos_mode = NOC_QOS_MODE_INVALID, 75862306a36Sopenharmony_ci .num_links = ARRAY_SIZE(qdss_int_links), 75962306a36Sopenharmony_ci .links = qdss_int_links, 76062306a36Sopenharmony_ci}; 76162306a36Sopenharmony_ci 76262306a36Sopenharmony_cistatic struct qcom_icc_node slv_apps_l2 = { 76362306a36Sopenharmony_ci .name = "slv_apps_l2", 76462306a36Sopenharmony_ci .id = MSM8916_SLAVE_AMPSS_L2, 76562306a36Sopenharmony_ci .buswidth = 8, 76662306a36Sopenharmony_ci .mas_rpm_id = -1, 76762306a36Sopenharmony_ci .slv_rpm_id = -1, 76862306a36Sopenharmony_ci}; 76962306a36Sopenharmony_ci 77062306a36Sopenharmony_cistatic struct qcom_icc_node slv_apss = { 77162306a36Sopenharmony_ci .name = "slv_apss", 77262306a36Sopenharmony_ci .id = MSM8916_SLAVE_APSS, 77362306a36Sopenharmony_ci .buswidth = 4, 77462306a36Sopenharmony_ci .mas_rpm_id = -1, 77562306a36Sopenharmony_ci .slv_rpm_id = -1, 77662306a36Sopenharmony_ci}; 77762306a36Sopenharmony_ci 77862306a36Sopenharmony_cistatic struct qcom_icc_node slv_audio = { 77962306a36Sopenharmony_ci .name = "slv_audio", 78062306a36Sopenharmony_ci .id = MSM8916_SLAVE_LPASS, 78162306a36Sopenharmony_ci .buswidth = 4, 78262306a36Sopenharmony_ci .mas_rpm_id = -1, 78362306a36Sopenharmony_ci .slv_rpm_id = -1, 78462306a36Sopenharmony_ci}; 78562306a36Sopenharmony_ci 78662306a36Sopenharmony_cistatic struct qcom_icc_node slv_bimc_cfg = { 78762306a36Sopenharmony_ci .name = "slv_bimc_cfg", 78862306a36Sopenharmony_ci .id = MSM8916_SLAVE_BIMC_CFG, 78962306a36Sopenharmony_ci .buswidth = 4, 79062306a36Sopenharmony_ci .mas_rpm_id = -1, 79162306a36Sopenharmony_ci .slv_rpm_id = -1, 79262306a36Sopenharmony_ci}; 79362306a36Sopenharmony_ci 79462306a36Sopenharmony_cistatic struct qcom_icc_node slv_blsp_1 = { 79562306a36Sopenharmony_ci .name = "slv_blsp_1", 79662306a36Sopenharmony_ci .id = MSM8916_SLAVE_BLSP_1, 79762306a36Sopenharmony_ci .buswidth = 4, 79862306a36Sopenharmony_ci .mas_rpm_id = -1, 79962306a36Sopenharmony_ci .slv_rpm_id = -1, 80062306a36Sopenharmony_ci}; 80162306a36Sopenharmony_ci 80262306a36Sopenharmony_cistatic struct qcom_icc_node slv_boot_rom = { 80362306a36Sopenharmony_ci .name = "slv_boot_rom", 80462306a36Sopenharmony_ci .id = MSM8916_SLAVE_BOOT_ROM, 80562306a36Sopenharmony_ci .buswidth = 4, 80662306a36Sopenharmony_ci .mas_rpm_id = -1, 80762306a36Sopenharmony_ci .slv_rpm_id = -1, 80862306a36Sopenharmony_ci}; 80962306a36Sopenharmony_ci 81062306a36Sopenharmony_cistatic struct qcom_icc_node slv_camera_cfg = { 81162306a36Sopenharmony_ci .name = "slv_camera_cfg", 81262306a36Sopenharmony_ci .id = MSM8916_SLAVE_CAMERA_CFG, 81362306a36Sopenharmony_ci .buswidth = 4, 81462306a36Sopenharmony_ci .mas_rpm_id = -1, 81562306a36Sopenharmony_ci .slv_rpm_id = -1, 81662306a36Sopenharmony_ci}; 81762306a36Sopenharmony_ci 81862306a36Sopenharmony_cistatic struct qcom_icc_node slv_cats_0 = { 81962306a36Sopenharmony_ci .name = "slv_cats_0", 82062306a36Sopenharmony_ci .id = MSM8916_SLAVE_CATS_128, 82162306a36Sopenharmony_ci .buswidth = 16, 82262306a36Sopenharmony_ci .mas_rpm_id = -1, 82362306a36Sopenharmony_ci .slv_rpm_id = -1, 82462306a36Sopenharmony_ci}; 82562306a36Sopenharmony_ci 82662306a36Sopenharmony_cistatic struct qcom_icc_node slv_cats_1 = { 82762306a36Sopenharmony_ci .name = "slv_cats_1", 82862306a36Sopenharmony_ci .id = MSM8916_SLAVE_OCMEM_64, 82962306a36Sopenharmony_ci .buswidth = 8, 83062306a36Sopenharmony_ci .mas_rpm_id = -1, 83162306a36Sopenharmony_ci .slv_rpm_id = -1, 83262306a36Sopenharmony_ci}; 83362306a36Sopenharmony_ci 83462306a36Sopenharmony_cistatic struct qcom_icc_node slv_clk_ctl = { 83562306a36Sopenharmony_ci .name = "slv_clk_ctl", 83662306a36Sopenharmony_ci .id = MSM8916_SLAVE_CLK_CTL, 83762306a36Sopenharmony_ci .buswidth = 4, 83862306a36Sopenharmony_ci .mas_rpm_id = -1, 83962306a36Sopenharmony_ci .slv_rpm_id = -1, 84062306a36Sopenharmony_ci}; 84162306a36Sopenharmony_ci 84262306a36Sopenharmony_cistatic struct qcom_icc_node slv_crypto_0_cfg = { 84362306a36Sopenharmony_ci .name = "slv_crypto_0_cfg", 84462306a36Sopenharmony_ci .id = MSM8916_SLAVE_CRYPTO_0_CFG, 84562306a36Sopenharmony_ci .buswidth = 4, 84662306a36Sopenharmony_ci .mas_rpm_id = -1, 84762306a36Sopenharmony_ci .slv_rpm_id = -1, 84862306a36Sopenharmony_ci}; 84962306a36Sopenharmony_ci 85062306a36Sopenharmony_cistatic struct qcom_icc_node slv_dehr_cfg = { 85162306a36Sopenharmony_ci .name = "slv_dehr_cfg", 85262306a36Sopenharmony_ci .id = MSM8916_SLAVE_DEHR_CFG, 85362306a36Sopenharmony_ci .buswidth = 4, 85462306a36Sopenharmony_ci .mas_rpm_id = -1, 85562306a36Sopenharmony_ci .slv_rpm_id = -1, 85662306a36Sopenharmony_ci}; 85762306a36Sopenharmony_ci 85862306a36Sopenharmony_cistatic struct qcom_icc_node slv_display_cfg = { 85962306a36Sopenharmony_ci .name = "slv_display_cfg", 86062306a36Sopenharmony_ci .id = MSM8916_SLAVE_DISPLAY_CFG, 86162306a36Sopenharmony_ci .buswidth = 4, 86262306a36Sopenharmony_ci .mas_rpm_id = -1, 86362306a36Sopenharmony_ci .slv_rpm_id = -1, 86462306a36Sopenharmony_ci}; 86562306a36Sopenharmony_ci 86662306a36Sopenharmony_cistatic struct qcom_icc_node slv_ebi_ch0 = { 86762306a36Sopenharmony_ci .name = "slv_ebi_ch0", 86862306a36Sopenharmony_ci .id = MSM8916_SLAVE_EBI_CH0, 86962306a36Sopenharmony_ci .buswidth = 8, 87062306a36Sopenharmony_ci .mas_rpm_id = -1, 87162306a36Sopenharmony_ci .slv_rpm_id = 0, 87262306a36Sopenharmony_ci}; 87362306a36Sopenharmony_ci 87462306a36Sopenharmony_cistatic struct qcom_icc_node slv_gfx_cfg = { 87562306a36Sopenharmony_ci .name = "slv_gfx_cfg", 87662306a36Sopenharmony_ci .id = MSM8916_SLAVE_GRAPHICS_3D_CFG, 87762306a36Sopenharmony_ci .buswidth = 4, 87862306a36Sopenharmony_ci .mas_rpm_id = -1, 87962306a36Sopenharmony_ci .slv_rpm_id = -1, 88062306a36Sopenharmony_ci}; 88162306a36Sopenharmony_ci 88262306a36Sopenharmony_cistatic struct qcom_icc_node slv_imem_cfg = { 88362306a36Sopenharmony_ci .name = "slv_imem_cfg", 88462306a36Sopenharmony_ci .id = MSM8916_SLAVE_IMEM_CFG, 88562306a36Sopenharmony_ci .buswidth = 4, 88662306a36Sopenharmony_ci .mas_rpm_id = -1, 88762306a36Sopenharmony_ci .slv_rpm_id = -1, 88862306a36Sopenharmony_ci}; 88962306a36Sopenharmony_ci 89062306a36Sopenharmony_cistatic struct qcom_icc_node slv_imem = { 89162306a36Sopenharmony_ci .name = "slv_imem", 89262306a36Sopenharmony_ci .id = MSM8916_SLAVE_IMEM, 89362306a36Sopenharmony_ci .buswidth = 8, 89462306a36Sopenharmony_ci .mas_rpm_id = -1, 89562306a36Sopenharmony_ci .slv_rpm_id = 26, 89662306a36Sopenharmony_ci}; 89762306a36Sopenharmony_ci 89862306a36Sopenharmony_cistatic struct qcom_icc_node slv_mpm = { 89962306a36Sopenharmony_ci .name = "slv_mpm", 90062306a36Sopenharmony_ci .id = MSM8916_SLAVE_MPM, 90162306a36Sopenharmony_ci .buswidth = 4, 90262306a36Sopenharmony_ci .mas_rpm_id = -1, 90362306a36Sopenharmony_ci .slv_rpm_id = -1, 90462306a36Sopenharmony_ci}; 90562306a36Sopenharmony_ci 90662306a36Sopenharmony_cistatic struct qcom_icc_node slv_msg_ram = { 90762306a36Sopenharmony_ci .name = "slv_msg_ram", 90862306a36Sopenharmony_ci .id = MSM8916_SLAVE_MSG_RAM, 90962306a36Sopenharmony_ci .buswidth = 4, 91062306a36Sopenharmony_ci .mas_rpm_id = -1, 91162306a36Sopenharmony_ci .slv_rpm_id = -1, 91262306a36Sopenharmony_ci}; 91362306a36Sopenharmony_ci 91462306a36Sopenharmony_cistatic struct qcom_icc_node slv_mss = { 91562306a36Sopenharmony_ci .name = "slv_mss", 91662306a36Sopenharmony_ci .id = MSM8916_SLAVE_MSS, 91762306a36Sopenharmony_ci .buswidth = 4, 91862306a36Sopenharmony_ci .mas_rpm_id = -1, 91962306a36Sopenharmony_ci .slv_rpm_id = -1, 92062306a36Sopenharmony_ci}; 92162306a36Sopenharmony_ci 92262306a36Sopenharmony_cistatic struct qcom_icc_node slv_pdm = { 92362306a36Sopenharmony_ci .name = "slv_pdm", 92462306a36Sopenharmony_ci .id = MSM8916_SLAVE_PDM, 92562306a36Sopenharmony_ci .buswidth = 4, 92662306a36Sopenharmony_ci .mas_rpm_id = -1, 92762306a36Sopenharmony_ci .slv_rpm_id = -1, 92862306a36Sopenharmony_ci}; 92962306a36Sopenharmony_ci 93062306a36Sopenharmony_cistatic struct qcom_icc_node slv_pmic_arb = { 93162306a36Sopenharmony_ci .name = "slv_pmic_arb", 93262306a36Sopenharmony_ci .id = MSM8916_SLAVE_PMIC_ARB, 93362306a36Sopenharmony_ci .buswidth = 4, 93462306a36Sopenharmony_ci .mas_rpm_id = -1, 93562306a36Sopenharmony_ci .slv_rpm_id = -1, 93662306a36Sopenharmony_ci}; 93762306a36Sopenharmony_ci 93862306a36Sopenharmony_cistatic struct qcom_icc_node slv_pcnoc_cfg = { 93962306a36Sopenharmony_ci .name = "slv_pcnoc_cfg", 94062306a36Sopenharmony_ci .id = MSM8916_SLAVE_PNOC_CFG, 94162306a36Sopenharmony_ci .buswidth = 4, 94262306a36Sopenharmony_ci .mas_rpm_id = -1, 94362306a36Sopenharmony_ci .slv_rpm_id = -1, 94462306a36Sopenharmony_ci}; 94562306a36Sopenharmony_ci 94662306a36Sopenharmony_cistatic struct qcom_icc_node slv_prng = { 94762306a36Sopenharmony_ci .name = "slv_prng", 94862306a36Sopenharmony_ci .id = MSM8916_SLAVE_PRNG, 94962306a36Sopenharmony_ci .buswidth = 4, 95062306a36Sopenharmony_ci .mas_rpm_id = -1, 95162306a36Sopenharmony_ci .slv_rpm_id = -1, 95262306a36Sopenharmony_ci}; 95362306a36Sopenharmony_ci 95462306a36Sopenharmony_cistatic struct qcom_icc_node slv_qdss_cfg = { 95562306a36Sopenharmony_ci .name = "slv_qdss_cfg", 95662306a36Sopenharmony_ci .id = MSM8916_SLAVE_QDSS_CFG, 95762306a36Sopenharmony_ci .buswidth = 4, 95862306a36Sopenharmony_ci .mas_rpm_id = -1, 95962306a36Sopenharmony_ci .slv_rpm_id = -1, 96062306a36Sopenharmony_ci}; 96162306a36Sopenharmony_ci 96262306a36Sopenharmony_cistatic struct qcom_icc_node slv_qdss_stm = { 96362306a36Sopenharmony_ci .name = "slv_qdss_stm", 96462306a36Sopenharmony_ci .id = MSM8916_SLAVE_QDSS_STM, 96562306a36Sopenharmony_ci .buswidth = 4, 96662306a36Sopenharmony_ci .mas_rpm_id = -1, 96762306a36Sopenharmony_ci .slv_rpm_id = 30, 96862306a36Sopenharmony_ci}; 96962306a36Sopenharmony_ci 97062306a36Sopenharmony_cistatic struct qcom_icc_node slv_rbcpr_cfg = { 97162306a36Sopenharmony_ci .name = "slv_rbcpr_cfg", 97262306a36Sopenharmony_ci .id = MSM8916_SLAVE_RBCPR_CFG, 97362306a36Sopenharmony_ci .buswidth = 4, 97462306a36Sopenharmony_ci .mas_rpm_id = -1, 97562306a36Sopenharmony_ci .slv_rpm_id = -1, 97662306a36Sopenharmony_ci}; 97762306a36Sopenharmony_ci 97862306a36Sopenharmony_cistatic struct qcom_icc_node slv_sdcc_1 = { 97962306a36Sopenharmony_ci .name = "slv_sdcc_1", 98062306a36Sopenharmony_ci .id = MSM8916_SLAVE_SDCC_1, 98162306a36Sopenharmony_ci .buswidth = 4, 98262306a36Sopenharmony_ci .mas_rpm_id = -1, 98362306a36Sopenharmony_ci .slv_rpm_id = -1, 98462306a36Sopenharmony_ci}; 98562306a36Sopenharmony_ci 98662306a36Sopenharmony_cistatic struct qcom_icc_node slv_sdcc_2 = { 98762306a36Sopenharmony_ci .name = "slv_sdcc_2", 98862306a36Sopenharmony_ci .id = MSM8916_SLAVE_SDCC_2, 98962306a36Sopenharmony_ci .buswidth = 4, 99062306a36Sopenharmony_ci .mas_rpm_id = -1, 99162306a36Sopenharmony_ci .slv_rpm_id = -1, 99262306a36Sopenharmony_ci}; 99362306a36Sopenharmony_ci 99462306a36Sopenharmony_cistatic struct qcom_icc_node slv_security = { 99562306a36Sopenharmony_ci .name = "slv_security", 99662306a36Sopenharmony_ci .id = MSM8916_SLAVE_SECURITY, 99762306a36Sopenharmony_ci .buswidth = 4, 99862306a36Sopenharmony_ci .mas_rpm_id = -1, 99962306a36Sopenharmony_ci .slv_rpm_id = -1, 100062306a36Sopenharmony_ci}; 100162306a36Sopenharmony_ci 100262306a36Sopenharmony_cistatic struct qcom_icc_node slv_snoc_cfg = { 100362306a36Sopenharmony_ci .name = "slv_snoc_cfg", 100462306a36Sopenharmony_ci .id = MSM8916_SLAVE_SNOC_CFG, 100562306a36Sopenharmony_ci .buswidth = 4, 100662306a36Sopenharmony_ci .mas_rpm_id = -1, 100762306a36Sopenharmony_ci .slv_rpm_id = -1, 100862306a36Sopenharmony_ci}; 100962306a36Sopenharmony_ci 101062306a36Sopenharmony_cistatic struct qcom_icc_node slv_spdm = { 101162306a36Sopenharmony_ci .name = "slv_spdm", 101262306a36Sopenharmony_ci .id = MSM8916_SLAVE_SPDM, 101362306a36Sopenharmony_ci .buswidth = 4, 101462306a36Sopenharmony_ci .mas_rpm_id = -1, 101562306a36Sopenharmony_ci .slv_rpm_id = -1, 101662306a36Sopenharmony_ci}; 101762306a36Sopenharmony_ci 101862306a36Sopenharmony_cistatic struct qcom_icc_node slv_srvc_snoc = { 101962306a36Sopenharmony_ci .name = "slv_srvc_snoc", 102062306a36Sopenharmony_ci .id = MSM8916_SLAVE_SRVC_SNOC, 102162306a36Sopenharmony_ci .buswidth = 8, 102262306a36Sopenharmony_ci .mas_rpm_id = -1, 102362306a36Sopenharmony_ci .slv_rpm_id = -1, 102462306a36Sopenharmony_ci}; 102562306a36Sopenharmony_ci 102662306a36Sopenharmony_cistatic struct qcom_icc_node slv_tcsr = { 102762306a36Sopenharmony_ci .name = "slv_tcsr", 102862306a36Sopenharmony_ci .id = MSM8916_SLAVE_TCSR, 102962306a36Sopenharmony_ci .buswidth = 4, 103062306a36Sopenharmony_ci .mas_rpm_id = -1, 103162306a36Sopenharmony_ci .slv_rpm_id = -1, 103262306a36Sopenharmony_ci}; 103362306a36Sopenharmony_ci 103462306a36Sopenharmony_cistatic struct qcom_icc_node slv_tlmm = { 103562306a36Sopenharmony_ci .name = "slv_tlmm", 103662306a36Sopenharmony_ci .id = MSM8916_SLAVE_TLMM, 103762306a36Sopenharmony_ci .buswidth = 4, 103862306a36Sopenharmony_ci .mas_rpm_id = -1, 103962306a36Sopenharmony_ci .slv_rpm_id = -1, 104062306a36Sopenharmony_ci}; 104162306a36Sopenharmony_ci 104262306a36Sopenharmony_cistatic struct qcom_icc_node slv_usb_hs = { 104362306a36Sopenharmony_ci .name = "slv_usb_hs", 104462306a36Sopenharmony_ci .id = MSM8916_SLAVE_USB_HS, 104562306a36Sopenharmony_ci .buswidth = 4, 104662306a36Sopenharmony_ci .mas_rpm_id = -1, 104762306a36Sopenharmony_ci .slv_rpm_id = -1, 104862306a36Sopenharmony_ci}; 104962306a36Sopenharmony_ci 105062306a36Sopenharmony_cistatic struct qcom_icc_node slv_venus_cfg = { 105162306a36Sopenharmony_ci .name = "slv_venus_cfg", 105262306a36Sopenharmony_ci .id = MSM8916_SLAVE_VENUS_CFG, 105362306a36Sopenharmony_ci .buswidth = 4, 105462306a36Sopenharmony_ci .mas_rpm_id = -1, 105562306a36Sopenharmony_ci .slv_rpm_id = -1, 105662306a36Sopenharmony_ci}; 105762306a36Sopenharmony_ci 105862306a36Sopenharmony_cistatic const u16 snoc_bimc_0_mas_links[] = { 105962306a36Sopenharmony_ci MSM8916_SNOC_BIMC_0_SLV 106062306a36Sopenharmony_ci}; 106162306a36Sopenharmony_ci 106262306a36Sopenharmony_cistatic struct qcom_icc_node snoc_bimc_0_mas = { 106362306a36Sopenharmony_ci .name = "snoc_bimc_0_mas", 106462306a36Sopenharmony_ci .id = MSM8916_SNOC_BIMC_0_MAS, 106562306a36Sopenharmony_ci .buswidth = 8, 106662306a36Sopenharmony_ci .mas_rpm_id = 3, 106762306a36Sopenharmony_ci .slv_rpm_id = -1, 106862306a36Sopenharmony_ci .num_links = ARRAY_SIZE(snoc_bimc_0_mas_links), 106962306a36Sopenharmony_ci .links = snoc_bimc_0_mas_links, 107062306a36Sopenharmony_ci}; 107162306a36Sopenharmony_ci 107262306a36Sopenharmony_cistatic const u16 snoc_bimc_0_slv_links[] = { 107362306a36Sopenharmony_ci MSM8916_SLAVE_EBI_CH0 107462306a36Sopenharmony_ci}; 107562306a36Sopenharmony_ci 107662306a36Sopenharmony_cistatic struct qcom_icc_node snoc_bimc_0_slv = { 107762306a36Sopenharmony_ci .name = "snoc_bimc_0_slv", 107862306a36Sopenharmony_ci .id = MSM8916_SNOC_BIMC_0_SLV, 107962306a36Sopenharmony_ci .buswidth = 8, 108062306a36Sopenharmony_ci .mas_rpm_id = -1, 108162306a36Sopenharmony_ci .slv_rpm_id = 24, 108262306a36Sopenharmony_ci .num_links = ARRAY_SIZE(snoc_bimc_0_slv_links), 108362306a36Sopenharmony_ci .links = snoc_bimc_0_slv_links, 108462306a36Sopenharmony_ci}; 108562306a36Sopenharmony_ci 108662306a36Sopenharmony_cistatic const u16 snoc_bimc_1_mas_links[] = { 108762306a36Sopenharmony_ci MSM8916_SNOC_BIMC_1_SLV 108862306a36Sopenharmony_ci}; 108962306a36Sopenharmony_ci 109062306a36Sopenharmony_cistatic struct qcom_icc_node snoc_bimc_1_mas = { 109162306a36Sopenharmony_ci .name = "snoc_bimc_1_mas", 109262306a36Sopenharmony_ci .id = MSM8916_SNOC_BIMC_1_MAS, 109362306a36Sopenharmony_ci .buswidth = 16, 109462306a36Sopenharmony_ci .mas_rpm_id = -1, 109562306a36Sopenharmony_ci .slv_rpm_id = -1, 109662306a36Sopenharmony_ci .qos.ap_owned = true, 109762306a36Sopenharmony_ci .qos.qos_mode = NOC_QOS_MODE_INVALID, 109862306a36Sopenharmony_ci .num_links = ARRAY_SIZE(snoc_bimc_1_mas_links), 109962306a36Sopenharmony_ci .links = snoc_bimc_1_mas_links, 110062306a36Sopenharmony_ci}; 110162306a36Sopenharmony_ci 110262306a36Sopenharmony_cistatic const u16 snoc_bimc_1_slv_links[] = { 110362306a36Sopenharmony_ci MSM8916_SLAVE_EBI_CH0 110462306a36Sopenharmony_ci}; 110562306a36Sopenharmony_ci 110662306a36Sopenharmony_cistatic struct qcom_icc_node snoc_bimc_1_slv = { 110762306a36Sopenharmony_ci .name = "snoc_bimc_1_slv", 110862306a36Sopenharmony_ci .id = MSM8916_SNOC_BIMC_1_SLV, 110962306a36Sopenharmony_ci .buswidth = 8, 111062306a36Sopenharmony_ci .mas_rpm_id = -1, 111162306a36Sopenharmony_ci .slv_rpm_id = -1, 111262306a36Sopenharmony_ci .qos.ap_owned = true, 111362306a36Sopenharmony_ci .qos.qos_mode = NOC_QOS_MODE_INVALID, 111462306a36Sopenharmony_ci .num_links = ARRAY_SIZE(snoc_bimc_1_slv_links), 111562306a36Sopenharmony_ci .links = snoc_bimc_1_slv_links, 111662306a36Sopenharmony_ci}; 111762306a36Sopenharmony_ci 111862306a36Sopenharmony_cistatic const u16 snoc_int_0_links[] = { 111962306a36Sopenharmony_ci MSM8916_SLAVE_QDSS_STM, 112062306a36Sopenharmony_ci MSM8916_SLAVE_IMEM, 112162306a36Sopenharmony_ci MSM8916_SNOC_PNOC_MAS 112262306a36Sopenharmony_ci}; 112362306a36Sopenharmony_ci 112462306a36Sopenharmony_cistatic struct qcom_icc_node snoc_int_0 = { 112562306a36Sopenharmony_ci .name = "snoc_int_0", 112662306a36Sopenharmony_ci .id = MSM8916_SNOC_INT_0, 112762306a36Sopenharmony_ci .buswidth = 8, 112862306a36Sopenharmony_ci .mas_rpm_id = 99, 112962306a36Sopenharmony_ci .slv_rpm_id = 130, 113062306a36Sopenharmony_ci .num_links = ARRAY_SIZE(snoc_int_0_links), 113162306a36Sopenharmony_ci .links = snoc_int_0_links, 113262306a36Sopenharmony_ci}; 113362306a36Sopenharmony_ci 113462306a36Sopenharmony_cistatic const u16 snoc_int_1_links[] = { 113562306a36Sopenharmony_ci MSM8916_SLAVE_APSS, 113662306a36Sopenharmony_ci MSM8916_SLAVE_CATS_128, 113762306a36Sopenharmony_ci MSM8916_SLAVE_OCMEM_64 113862306a36Sopenharmony_ci}; 113962306a36Sopenharmony_ci 114062306a36Sopenharmony_cistatic struct qcom_icc_node snoc_int_1 = { 114162306a36Sopenharmony_ci .name = "snoc_int_1", 114262306a36Sopenharmony_ci .id = MSM8916_SNOC_INT_1, 114362306a36Sopenharmony_ci .buswidth = 8, 114462306a36Sopenharmony_ci .mas_rpm_id = -1, 114562306a36Sopenharmony_ci .slv_rpm_id = -1, 114662306a36Sopenharmony_ci .num_links = ARRAY_SIZE(snoc_int_1_links), 114762306a36Sopenharmony_ci .links = snoc_int_1_links, 114862306a36Sopenharmony_ci}; 114962306a36Sopenharmony_ci 115062306a36Sopenharmony_cistatic const u16 snoc_int_bimc_links[] = { 115162306a36Sopenharmony_ci MSM8916_SNOC_BIMC_0_MAS 115262306a36Sopenharmony_ci}; 115362306a36Sopenharmony_ci 115462306a36Sopenharmony_cistatic struct qcom_icc_node snoc_int_bimc = { 115562306a36Sopenharmony_ci .name = "snoc_int_bimc", 115662306a36Sopenharmony_ci .id = MSM8916_SNOC_INT_BIMC, 115762306a36Sopenharmony_ci .buswidth = 8, 115862306a36Sopenharmony_ci .mas_rpm_id = 101, 115962306a36Sopenharmony_ci .slv_rpm_id = 132, 116062306a36Sopenharmony_ci .num_links = ARRAY_SIZE(snoc_int_bimc_links), 116162306a36Sopenharmony_ci .links = snoc_int_bimc_links, 116262306a36Sopenharmony_ci}; 116362306a36Sopenharmony_ci 116462306a36Sopenharmony_cistatic const u16 snoc_pcnoc_mas_links[] = { 116562306a36Sopenharmony_ci MSM8916_SNOC_PNOC_SLV 116662306a36Sopenharmony_ci}; 116762306a36Sopenharmony_ci 116862306a36Sopenharmony_cistatic struct qcom_icc_node snoc_pcnoc_mas = { 116962306a36Sopenharmony_ci .name = "snoc_pcnoc_mas", 117062306a36Sopenharmony_ci .id = MSM8916_SNOC_PNOC_MAS, 117162306a36Sopenharmony_ci .buswidth = 8, 117262306a36Sopenharmony_ci .mas_rpm_id = -1, 117362306a36Sopenharmony_ci .slv_rpm_id = -1, 117462306a36Sopenharmony_ci .num_links = ARRAY_SIZE(snoc_pcnoc_mas_links), 117562306a36Sopenharmony_ci .links = snoc_pcnoc_mas_links, 117662306a36Sopenharmony_ci}; 117762306a36Sopenharmony_ci 117862306a36Sopenharmony_cistatic const u16 snoc_pcnoc_slv_links[] = { 117962306a36Sopenharmony_ci MSM8916_PNOC_INT_0 118062306a36Sopenharmony_ci}; 118162306a36Sopenharmony_ci 118262306a36Sopenharmony_cistatic struct qcom_icc_node snoc_pcnoc_slv = { 118362306a36Sopenharmony_ci .name = "snoc_pcnoc_slv", 118462306a36Sopenharmony_ci .id = MSM8916_SNOC_PNOC_SLV, 118562306a36Sopenharmony_ci .buswidth = 8, 118662306a36Sopenharmony_ci .mas_rpm_id = -1, 118762306a36Sopenharmony_ci .slv_rpm_id = -1, 118862306a36Sopenharmony_ci .num_links = ARRAY_SIZE(snoc_pcnoc_slv_links), 118962306a36Sopenharmony_ci .links = snoc_pcnoc_slv_links, 119062306a36Sopenharmony_ci}; 119162306a36Sopenharmony_ci 119262306a36Sopenharmony_cistatic struct qcom_icc_node * const msm8916_snoc_nodes[] = { 119362306a36Sopenharmony_ci [BIMC_SNOC_SLV] = &bimc_snoc_slv, 119462306a36Sopenharmony_ci [MASTER_JPEG] = &mas_jpeg, 119562306a36Sopenharmony_ci [MASTER_MDP_PORT0] = &mas_mdp, 119662306a36Sopenharmony_ci [MASTER_QDSS_BAM] = &mas_qdss_bam, 119762306a36Sopenharmony_ci [MASTER_QDSS_ETR] = &mas_qdss_etr, 119862306a36Sopenharmony_ci [MASTER_SNOC_CFG] = &mas_snoc_cfg, 119962306a36Sopenharmony_ci [MASTER_VFE] = &mas_vfe, 120062306a36Sopenharmony_ci [MASTER_VIDEO_P0] = &mas_video, 120162306a36Sopenharmony_ci [SNOC_MM_INT_0] = &mm_int_0, 120262306a36Sopenharmony_ci [SNOC_MM_INT_1] = &mm_int_1, 120362306a36Sopenharmony_ci [SNOC_MM_INT_2] = &mm_int_2, 120462306a36Sopenharmony_ci [SNOC_MM_INT_BIMC] = &mm_int_bimc, 120562306a36Sopenharmony_ci [PCNOC_SNOC_SLV] = &pcnoc_snoc_slv, 120662306a36Sopenharmony_ci [SLAVE_APSS] = &slv_apss, 120762306a36Sopenharmony_ci [SLAVE_CATS_128] = &slv_cats_0, 120862306a36Sopenharmony_ci [SLAVE_OCMEM_64] = &slv_cats_1, 120962306a36Sopenharmony_ci [SLAVE_IMEM] = &slv_imem, 121062306a36Sopenharmony_ci [SLAVE_QDSS_STM] = &slv_qdss_stm, 121162306a36Sopenharmony_ci [SLAVE_SRVC_SNOC] = &slv_srvc_snoc, 121262306a36Sopenharmony_ci [SNOC_BIMC_0_MAS] = &snoc_bimc_0_mas, 121362306a36Sopenharmony_ci [SNOC_BIMC_1_MAS] = &snoc_bimc_1_mas, 121462306a36Sopenharmony_ci [SNOC_INT_0] = &snoc_int_0, 121562306a36Sopenharmony_ci [SNOC_INT_1] = &snoc_int_1, 121662306a36Sopenharmony_ci [SNOC_INT_BIMC] = &snoc_int_bimc, 121762306a36Sopenharmony_ci [SNOC_PCNOC_MAS] = &snoc_pcnoc_mas, 121862306a36Sopenharmony_ci [SNOC_QDSS_INT] = &qdss_int, 121962306a36Sopenharmony_ci}; 122062306a36Sopenharmony_ci 122162306a36Sopenharmony_cistatic const struct regmap_config msm8916_snoc_regmap_config = { 122262306a36Sopenharmony_ci .reg_bits = 32, 122362306a36Sopenharmony_ci .reg_stride = 4, 122462306a36Sopenharmony_ci .val_bits = 32, 122562306a36Sopenharmony_ci .max_register = 0x14000, 122662306a36Sopenharmony_ci .fast_io = true, 122762306a36Sopenharmony_ci}; 122862306a36Sopenharmony_ci 122962306a36Sopenharmony_cistatic const struct qcom_icc_desc msm8916_snoc = { 123062306a36Sopenharmony_ci .type = QCOM_ICC_NOC, 123162306a36Sopenharmony_ci .nodes = msm8916_snoc_nodes, 123262306a36Sopenharmony_ci .num_nodes = ARRAY_SIZE(msm8916_snoc_nodes), 123362306a36Sopenharmony_ci .bus_clk_desc = &bus_1_clk, 123462306a36Sopenharmony_ci .regmap_cfg = &msm8916_snoc_regmap_config, 123562306a36Sopenharmony_ci .qos_offset = 0x7000, 123662306a36Sopenharmony_ci}; 123762306a36Sopenharmony_ci 123862306a36Sopenharmony_cistatic struct qcom_icc_node * const msm8916_bimc_nodes[] = { 123962306a36Sopenharmony_ci [BIMC_SNOC_MAS] = &bimc_snoc_mas, 124062306a36Sopenharmony_ci [MASTER_AMPSS_M0] = &mas_apss, 124162306a36Sopenharmony_ci [MASTER_GRAPHICS_3D] = &mas_gfx, 124262306a36Sopenharmony_ci [MASTER_TCU0] = &mas_tcu0, 124362306a36Sopenharmony_ci [MASTER_TCU1] = &mas_tcu1, 124462306a36Sopenharmony_ci [SLAVE_AMPSS_L2] = &slv_apps_l2, 124562306a36Sopenharmony_ci [SLAVE_EBI_CH0] = &slv_ebi_ch0, 124662306a36Sopenharmony_ci [SNOC_BIMC_0_SLV] = &snoc_bimc_0_slv, 124762306a36Sopenharmony_ci [SNOC_BIMC_1_SLV] = &snoc_bimc_1_slv, 124862306a36Sopenharmony_ci}; 124962306a36Sopenharmony_ci 125062306a36Sopenharmony_cistatic const struct regmap_config msm8916_bimc_regmap_config = { 125162306a36Sopenharmony_ci .reg_bits = 32, 125262306a36Sopenharmony_ci .reg_stride = 4, 125362306a36Sopenharmony_ci .val_bits = 32, 125462306a36Sopenharmony_ci .max_register = 0x62000, 125562306a36Sopenharmony_ci .fast_io = true, 125662306a36Sopenharmony_ci}; 125762306a36Sopenharmony_ci 125862306a36Sopenharmony_cistatic const struct qcom_icc_desc msm8916_bimc = { 125962306a36Sopenharmony_ci .type = QCOM_ICC_BIMC, 126062306a36Sopenharmony_ci .nodes = msm8916_bimc_nodes, 126162306a36Sopenharmony_ci .num_nodes = ARRAY_SIZE(msm8916_bimc_nodes), 126262306a36Sopenharmony_ci .bus_clk_desc = &bimc_clk, 126362306a36Sopenharmony_ci .regmap_cfg = &msm8916_bimc_regmap_config, 126462306a36Sopenharmony_ci .qos_offset = 0x8000, 126562306a36Sopenharmony_ci}; 126662306a36Sopenharmony_ci 126762306a36Sopenharmony_cistatic struct qcom_icc_node * const msm8916_pcnoc_nodes[] = { 126862306a36Sopenharmony_ci [MASTER_BLSP_1] = &mas_blsp_1, 126962306a36Sopenharmony_ci [MASTER_DEHR] = &mas_dehr, 127062306a36Sopenharmony_ci [MASTER_LPASS] = &mas_audio, 127162306a36Sopenharmony_ci [MASTER_CRYPTO_CORE0] = &mas_pcnoc_crypto_0, 127262306a36Sopenharmony_ci [MASTER_SDCC_1] = &mas_pcnoc_sdcc_1, 127362306a36Sopenharmony_ci [MASTER_SDCC_2] = &mas_pcnoc_sdcc_2, 127462306a36Sopenharmony_ci [MASTER_SPDM] = &mas_spdm, 127562306a36Sopenharmony_ci [MASTER_USB_HS] = &mas_usb_hs, 127662306a36Sopenharmony_ci [PCNOC_INT_0] = &pcnoc_int_0, 127762306a36Sopenharmony_ci [PCNOC_INT_1] = &pcnoc_int_1, 127862306a36Sopenharmony_ci [PCNOC_MAS_0] = &pcnoc_m_0, 127962306a36Sopenharmony_ci [PCNOC_MAS_1] = &pcnoc_m_1, 128062306a36Sopenharmony_ci [PCNOC_SLV_0] = &pcnoc_s_0, 128162306a36Sopenharmony_ci [PCNOC_SLV_1] = &pcnoc_s_1, 128262306a36Sopenharmony_ci [PCNOC_SLV_2] = &pcnoc_s_2, 128362306a36Sopenharmony_ci [PCNOC_SLV_3] = &pcnoc_s_3, 128462306a36Sopenharmony_ci [PCNOC_SLV_4] = &pcnoc_s_4, 128562306a36Sopenharmony_ci [PCNOC_SLV_8] = &pcnoc_s_8, 128662306a36Sopenharmony_ci [PCNOC_SLV_9] = &pcnoc_s_9, 128762306a36Sopenharmony_ci [PCNOC_SNOC_MAS] = &pcnoc_snoc_mas, 128862306a36Sopenharmony_ci [SLAVE_BIMC_CFG] = &slv_bimc_cfg, 128962306a36Sopenharmony_ci [SLAVE_BLSP_1] = &slv_blsp_1, 129062306a36Sopenharmony_ci [SLAVE_BOOT_ROM] = &slv_boot_rom, 129162306a36Sopenharmony_ci [SLAVE_CAMERA_CFG] = &slv_camera_cfg, 129262306a36Sopenharmony_ci [SLAVE_CLK_CTL] = &slv_clk_ctl, 129362306a36Sopenharmony_ci [SLAVE_CRYPTO_0_CFG] = &slv_crypto_0_cfg, 129462306a36Sopenharmony_ci [SLAVE_DEHR_CFG] = &slv_dehr_cfg, 129562306a36Sopenharmony_ci [SLAVE_DISPLAY_CFG] = &slv_display_cfg, 129662306a36Sopenharmony_ci [SLAVE_GRAPHICS_3D_CFG] = &slv_gfx_cfg, 129762306a36Sopenharmony_ci [SLAVE_IMEM_CFG] = &slv_imem_cfg, 129862306a36Sopenharmony_ci [SLAVE_LPASS] = &slv_audio, 129962306a36Sopenharmony_ci [SLAVE_MPM] = &slv_mpm, 130062306a36Sopenharmony_ci [SLAVE_MSG_RAM] = &slv_msg_ram, 130162306a36Sopenharmony_ci [SLAVE_MSS] = &slv_mss, 130262306a36Sopenharmony_ci [SLAVE_PDM] = &slv_pdm, 130362306a36Sopenharmony_ci [SLAVE_PMIC_ARB] = &slv_pmic_arb, 130462306a36Sopenharmony_ci [SLAVE_PCNOC_CFG] = &slv_pcnoc_cfg, 130562306a36Sopenharmony_ci [SLAVE_PRNG] = &slv_prng, 130662306a36Sopenharmony_ci [SLAVE_QDSS_CFG] = &slv_qdss_cfg, 130762306a36Sopenharmony_ci [SLAVE_RBCPR_CFG] = &slv_rbcpr_cfg, 130862306a36Sopenharmony_ci [SLAVE_SDCC_1] = &slv_sdcc_1, 130962306a36Sopenharmony_ci [SLAVE_SDCC_2] = &slv_sdcc_2, 131062306a36Sopenharmony_ci [SLAVE_SECURITY] = &slv_security, 131162306a36Sopenharmony_ci [SLAVE_SNOC_CFG] = &slv_snoc_cfg, 131262306a36Sopenharmony_ci [SLAVE_SPDM] = &slv_spdm, 131362306a36Sopenharmony_ci [SLAVE_TCSR] = &slv_tcsr, 131462306a36Sopenharmony_ci [SLAVE_TLMM] = &slv_tlmm, 131562306a36Sopenharmony_ci [SLAVE_USB_HS] = &slv_usb_hs, 131662306a36Sopenharmony_ci [SLAVE_VENUS_CFG] = &slv_venus_cfg, 131762306a36Sopenharmony_ci [SNOC_PCNOC_SLV] = &snoc_pcnoc_slv, 131862306a36Sopenharmony_ci}; 131962306a36Sopenharmony_ci 132062306a36Sopenharmony_cistatic const struct regmap_config msm8916_pcnoc_regmap_config = { 132162306a36Sopenharmony_ci .reg_bits = 32, 132262306a36Sopenharmony_ci .reg_stride = 4, 132362306a36Sopenharmony_ci .val_bits = 32, 132462306a36Sopenharmony_ci .max_register = 0x11000, 132562306a36Sopenharmony_ci .fast_io = true, 132662306a36Sopenharmony_ci}; 132762306a36Sopenharmony_ci 132862306a36Sopenharmony_cistatic const struct qcom_icc_desc msm8916_pcnoc = { 132962306a36Sopenharmony_ci .type = QCOM_ICC_NOC, 133062306a36Sopenharmony_ci .nodes = msm8916_pcnoc_nodes, 133162306a36Sopenharmony_ci .num_nodes = ARRAY_SIZE(msm8916_pcnoc_nodes), 133262306a36Sopenharmony_ci .bus_clk_desc = &bus_0_clk, 133362306a36Sopenharmony_ci .regmap_cfg = &msm8916_pcnoc_regmap_config, 133462306a36Sopenharmony_ci .qos_offset = 0x7000, 133562306a36Sopenharmony_ci}; 133662306a36Sopenharmony_ci 133762306a36Sopenharmony_cistatic const struct of_device_id msm8916_noc_of_match[] = { 133862306a36Sopenharmony_ci { .compatible = "qcom,msm8916-bimc", .data = &msm8916_bimc }, 133962306a36Sopenharmony_ci { .compatible = "qcom,msm8916-pcnoc", .data = &msm8916_pcnoc }, 134062306a36Sopenharmony_ci { .compatible = "qcom,msm8916-snoc", .data = &msm8916_snoc }, 134162306a36Sopenharmony_ci { } 134262306a36Sopenharmony_ci}; 134362306a36Sopenharmony_ciMODULE_DEVICE_TABLE(of, msm8916_noc_of_match); 134462306a36Sopenharmony_ci 134562306a36Sopenharmony_cistatic struct platform_driver msm8916_noc_driver = { 134662306a36Sopenharmony_ci .probe = qnoc_probe, 134762306a36Sopenharmony_ci .remove = qnoc_remove, 134862306a36Sopenharmony_ci .driver = { 134962306a36Sopenharmony_ci .name = "qnoc-msm8916", 135062306a36Sopenharmony_ci .of_match_table = msm8916_noc_of_match, 135162306a36Sopenharmony_ci }, 135262306a36Sopenharmony_ci}; 135362306a36Sopenharmony_cimodule_platform_driver(msm8916_noc_driver); 135462306a36Sopenharmony_ciMODULE_AUTHOR("Georgi Djakov <georgi.djakov@linaro.org>"); 135562306a36Sopenharmony_ciMODULE_DESCRIPTION("Qualcomm MSM8916 NoC driver"); 135662306a36Sopenharmony_ciMODULE_LICENSE("GPL v2"); 1357