Loading drivers/platform/msm/ipa/ipa_v3/ipa_utils.c +253 −8 Original line number Diff line number Diff line Loading @@ -113,6 +113,7 @@ #define IPA_v3_0_GROUP_MAX (6) #define IPA_v3_5_GROUP_LWA_DL (0) #define IPA_v3_5_GROUP_PCIE (0) #define IPA_v3_5_GROUP_UL_DL (1) #define IPA_v3_5_GROUP_DMA (2) #define IPA_v3_5_GROUP_UC_RX_Q (3) Loading Loading @@ -191,6 +192,19 @@ static const struct rsrc_min_max ipa3_rsrc_src_grp_config [IPA_v3_0_RSRC_GRP_TYPE_SRC_ACK_ENTRIES] = { {14, 14}, {16, 16}, {5, 5}, {5, 5}, {0, 0}, {8, 8} }, }, [IPA_3_5] = { /* LWA_DL UL_DL not used UC_RX_Q, other are invalid */ [IPA_v3_5_RSRC_GRP_TYPE_SRC_PKT_CONTEXTS] = { {4, 4}, {5, 5}, {1, 1}, {0, 0}, {0, 0}, {0, 0} }, [IPA_v3_5_RSRC_GRP_TYPE_SRS_DESCRIPTOR_LISTS] = { {10, 10}, {10, 10}, {8, 8}, {0, 0}, {0, 0}, {0, 0} }, [IPA_v3_5_RSRC_GRP_TYPE_SRC_DESCRIPTOR_BUFF] = { {12, 12}, {12, 12}, {8, 8}, {0, 0}, {0, 0}, {0, 0} }, [IPA_v3_5_RSRC_GRP_TYPE_SRC_HPS_DMARS] = { {0, 255}, {0, 255}, {0, 255}, {0, 255}, {0, 0}, {0, 0} }, [IPA_v3_5_RSRC_GRP_TYPE_SRC_ACK_ENTRIES] = { {14, 14}, {14, 14}, {14, 14}, {0, 0}, {0, 0}, {0, 0} }, }, [IPA_3_5_1] = { /* LWA_DL UL_DL not used UC_RX_Q, other are invalid */ [IPA_v3_5_RSRC_GRP_TYPE_SRC_PKT_CONTEXTS] = { Loading @@ -203,7 +217,7 @@ static const struct rsrc_min_max ipa3_rsrc_src_grp_config {0, 255}, {0, 255}, {0, 255}, {0, 255}, {0, 0}, {0, 0} }, [IPA_v3_5_RSRC_GRP_TYPE_SRC_ACK_ENTRIES] = { {14, 14}, {20, 20}, {0, 0}, {14, 14}, {0, 0}, {0, 0} }, } }, }; static const struct rsrc_min_max ipa3_rsrc_dst_grp_config Loading @@ -217,14 +231,22 @@ static const struct rsrc_min_max ipa3_rsrc_dst_grp_config [IPA_v3_0_RSRC_GRP_TYPE_DST_DPS_DMARS] = { {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {0, 0} }, }, [IPA_3_5] = { /*LWA_DL UL/DL/DPL not used, other are invalid */ [IPA_v3_5_RSRC_GRP_TYPE_DST_DATA_SECTORS] = { {4, 4}, {4, 4}, {3, 3}, {0, 0}, {0, 0}, {0, 0} }, [IPA_v3_5_RSRC_GRP_TYPE_DST_DPS_DMARS] = { {2, 255}, {1, 255}, {1, 2}, {0, 0}, {0, 0}, {0, 0} }, }, [IPA_3_5_1] = { /*LWA_DL UL/DL/DPL not used, other are invalid */ [IPA_v3_5_RSRC_GRP_TYPE_DST_DATA_SECTORS] = { {4, 4}, {4, 4}, {3, 3}, {0, 0}, {0, 0}, {0, 0} }, [IPA_v3_5_RSRC_GRP_TYPE_DST_DPS_DMARS] = { {2, 255}, {1, 255}, {1, 2}, {0, 0}, {0, 0}, {0, 0} }, } }, }; static const struct rsrc_min_max ipa3_rsrc_rx_grp_config [IPA_VER_MAX][IPA_RSRC_GRP_TYPE_RX_MAX][IPA_GROUP_MAX] = { [IPA_3_0] = { Loading @@ -232,6 +254,11 @@ static const struct rsrc_min_max ipa3_rsrc_rx_grp_config [IPA_RSRC_GRP_TYPE_RX_HPS_CMDQ] = { {16, 16}, {24, 24}, {8, 8}, {8, 8}, {0, 0}, {8, 8} }, }, [IPA_3_5] = { /* LWA_DL UL_DL not used UC_RX_Q, other are invalid */ [IPA_RSRC_GRP_TYPE_RX_HPS_CMDQ] = { {3, 3}, {7, 7}, {0, 0}, {2, 2}, {0, 0}, {0, 0} }, }, [IPA_3_5_1] = { /* LWA_DL UL_DL not used UC_RX_Q, other are invalid */ [IPA_RSRC_GRP_TYPE_RX_HPS_CMDQ] = { Loading Loading @@ -490,6 +517,222 @@ static const struct ipa_ep_configuration ipa3_ep_mapping { 29, 14, 8, 8, IPA_EE_AP } }, /* IPA_3_5 */ [IPA_3_5][IPA_CLIENT_HSIC1_PROD] = IPA_CLIENT_NOT_USED, /* * for WLAN1_PROD this configuration is temporal and needs to be updated * according to documentation. */ [IPA_3_5][IPA_CLIENT_WLAN1_PROD] = { 6, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 6, 1, 12, 30, IPA_EE_UC } }, [IPA_3_5][IPA_CLIENT_HSIC2_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_USB2_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_HSIC3_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_USB3_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_HSIC4_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_USB4_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_HSIC5_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_USB_PROD] = { 0, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 0, 7, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_UC_USB_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_A5_WLAN_AMPDU_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_A2_EMBEDDED_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_A2_TETHERED_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_APPS_LAN_PROD] = { 8, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 8, 9, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_APPS_WAN_PROD] = { 2, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 2, 3, 16, 32, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_APPS_CMD_PROD] = { 5, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_DMA_ONLY, QMB_MASTER_SELECT_DDR, { 5, 4, 20, 23, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_ODU_PROD] = { 1, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 1, 0, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_MHI_PROD] = { 1, IPA_v3_5_GROUP_PCIE, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_PCIE, { 1, 0, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_Q6_LAN_PROD] = { 3, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 3, 0, 16, 32, IPA_EE_Q6 } }, [IPA_3_5][IPA_CLIENT_Q6_WAN_PROD] = { 6, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_PKT_PROCESS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 6, 4, 10, 30, IPA_EE_Q6 } }, [IPA_3_5][IPA_CLIENT_Q6_CMD_PROD] = { 4, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_PKT_PROCESS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 4, 1, 20, 23, IPA_EE_Q6 } }, [IPA_3_5][IPA_CLIENT_Q6_DECOMP_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_Q6_DECOMP2_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_MEMCPY_DMA_SYNC_PROD] = { 7, IPA_v3_5_GROUP_DMA, false, IPA_DPS_HPS_SEQ_TYPE_DMA_ONLY, QMB_MASTER_SELECT_PCIE, { 7, 8, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_MEMCPY_DMA_ASYNC_PROD] = { 8, IPA_v3_5_GROUP_DMA, false, IPA_DPS_HPS_SEQ_TYPE_DMA_ONLY, QMB_MASTER_SELECT_PCIE, { 8, 9, 8, 16, IPA_EE_AP } }, /* Only for test purpose */ [IPA_3_5][IPA_CLIENT_TEST_PROD] = { 0, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, {0, 7, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_TEST1_PROD] = { 0, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, {0, 7, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_TEST2_PROD] = { 1, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 1, 0, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_TEST3_PROD] = { 7, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, {7, 8, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_TEST4_PROD] = { 8, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 8, 9, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_HSIC1_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_WLAN1_CONS] = { 16, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 16, 3, 8, 8, IPA_EE_UC } }, [IPA_3_5][IPA_CLIENT_HSIC2_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_USB2_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_WLAN2_CONS] = { 18, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 18, 12, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_HSIC3_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_USB3_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_WLAN3_CONS] = { 19, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 19, 13, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_HSIC4_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_USB4_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_WLAN4_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_HSIC5_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_USB_CONS] = { 17, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 17, 11, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_USB_DPL_CONS] = { 14, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 14, 10, 4, 6, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_A2_EMBEDDED_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_A2_TETHERED_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_A5_LAN_WAN_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_APPS_LAN_CONS] = { 9, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 9, 5, 8, 12, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_APPS_WAN_CONS] = { 10, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 10, 6, 8, 12, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_ODU_EMB_CONS] = { 15, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 15, 1, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_ODU_TETH_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_MHI_CONS] = { 15, IPA_v3_5_GROUP_PCIE, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_PCIE, { 15, 1, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_Q6_LAN_CONS] = { 13, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 13, 3, 8, 12, IPA_EE_Q6 } }, [IPA_3_5][IPA_CLIENT_Q6_WAN_CONS] = { 12, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 12, 2, 8, 12, IPA_EE_Q6 } }, [IPA_3_5][IPA_CLIENT_Q6_DUN_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_Q6_DECOMP_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_Q6_DECOMP2_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_MEMCPY_DMA_SYNC_CONS] = { 18, IPA_v3_5_GROUP_DMA, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_PCIE, { 18, 12, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_MEMCPY_DMA_ASYNC_CONS] = { 19, IPA_v3_5_GROUP_DMA, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_PCIE, { 19, 13, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_Q6_LTE_WIFI_AGGR_CONS] = IPA_CLIENT_NOT_USED, /* Only for test purpose */ [IPA_3_5][IPA_CLIENT_TEST_CONS] = { 15, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 15, 1, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_TEST1_CONS] = { 15, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 15, 1, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_TEST2_CONS] = { 17, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 17, 11, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_TEST3_CONS] = { 18, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 18, 12, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_TEST4_CONS] = { 19, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 19, 13, 8, 8, IPA_EE_AP } }, /* IPA_3_5_1 */ [IPA_3_5_1][IPA_CLIENT_HSIC1_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5_1][IPA_CLIENT_WLAN1_PROD] = { Loading Loading @@ -3485,6 +3728,7 @@ static void ipa3_write_rsrc_grp_type_reg(int group_index, } } break; case IPA_3_5: case IPA_3_5_1: if (src) { switch (group_index) { Loading Loading @@ -3593,6 +3837,7 @@ void ipa3_set_resorce_groups_min_max_limits(void) src_grp_idx_max = IPA_v3_0_GROUP_MAX; dst_grp_idx_max = IPA_v3_0_GROUP_MAX; break; case IPA_3_5: case IPA_3_5_1: src_rsrc_type_max = IPA_v3_5_RSRC_GRP_TYPE_SRC_MAX; dst_rsrc_type_max = IPA_v3_5_RSRC_GRP_TYPE_DST_MAX; Loading Loading
drivers/platform/msm/ipa/ipa_v3/ipa_utils.c +253 −8 Original line number Diff line number Diff line Loading @@ -113,6 +113,7 @@ #define IPA_v3_0_GROUP_MAX (6) #define IPA_v3_5_GROUP_LWA_DL (0) #define IPA_v3_5_GROUP_PCIE (0) #define IPA_v3_5_GROUP_UL_DL (1) #define IPA_v3_5_GROUP_DMA (2) #define IPA_v3_5_GROUP_UC_RX_Q (3) Loading Loading @@ -191,6 +192,19 @@ static const struct rsrc_min_max ipa3_rsrc_src_grp_config [IPA_v3_0_RSRC_GRP_TYPE_SRC_ACK_ENTRIES] = { {14, 14}, {16, 16}, {5, 5}, {5, 5}, {0, 0}, {8, 8} }, }, [IPA_3_5] = { /* LWA_DL UL_DL not used UC_RX_Q, other are invalid */ [IPA_v3_5_RSRC_GRP_TYPE_SRC_PKT_CONTEXTS] = { {4, 4}, {5, 5}, {1, 1}, {0, 0}, {0, 0}, {0, 0} }, [IPA_v3_5_RSRC_GRP_TYPE_SRS_DESCRIPTOR_LISTS] = { {10, 10}, {10, 10}, {8, 8}, {0, 0}, {0, 0}, {0, 0} }, [IPA_v3_5_RSRC_GRP_TYPE_SRC_DESCRIPTOR_BUFF] = { {12, 12}, {12, 12}, {8, 8}, {0, 0}, {0, 0}, {0, 0} }, [IPA_v3_5_RSRC_GRP_TYPE_SRC_HPS_DMARS] = { {0, 255}, {0, 255}, {0, 255}, {0, 255}, {0, 0}, {0, 0} }, [IPA_v3_5_RSRC_GRP_TYPE_SRC_ACK_ENTRIES] = { {14, 14}, {14, 14}, {14, 14}, {0, 0}, {0, 0}, {0, 0} }, }, [IPA_3_5_1] = { /* LWA_DL UL_DL not used UC_RX_Q, other are invalid */ [IPA_v3_5_RSRC_GRP_TYPE_SRC_PKT_CONTEXTS] = { Loading @@ -203,7 +217,7 @@ static const struct rsrc_min_max ipa3_rsrc_src_grp_config {0, 255}, {0, 255}, {0, 255}, {0, 255}, {0, 0}, {0, 0} }, [IPA_v3_5_RSRC_GRP_TYPE_SRC_ACK_ENTRIES] = { {14, 14}, {20, 20}, {0, 0}, {14, 14}, {0, 0}, {0, 0} }, } }, }; static const struct rsrc_min_max ipa3_rsrc_dst_grp_config Loading @@ -217,14 +231,22 @@ static const struct rsrc_min_max ipa3_rsrc_dst_grp_config [IPA_v3_0_RSRC_GRP_TYPE_DST_DPS_DMARS] = { {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {0, 0} }, }, [IPA_3_5] = { /*LWA_DL UL/DL/DPL not used, other are invalid */ [IPA_v3_5_RSRC_GRP_TYPE_DST_DATA_SECTORS] = { {4, 4}, {4, 4}, {3, 3}, {0, 0}, {0, 0}, {0, 0} }, [IPA_v3_5_RSRC_GRP_TYPE_DST_DPS_DMARS] = { {2, 255}, {1, 255}, {1, 2}, {0, 0}, {0, 0}, {0, 0} }, }, [IPA_3_5_1] = { /*LWA_DL UL/DL/DPL not used, other are invalid */ [IPA_v3_5_RSRC_GRP_TYPE_DST_DATA_SECTORS] = { {4, 4}, {4, 4}, {3, 3}, {0, 0}, {0, 0}, {0, 0} }, [IPA_v3_5_RSRC_GRP_TYPE_DST_DPS_DMARS] = { {2, 255}, {1, 255}, {1, 2}, {0, 0}, {0, 0}, {0, 0} }, } }, }; static const struct rsrc_min_max ipa3_rsrc_rx_grp_config [IPA_VER_MAX][IPA_RSRC_GRP_TYPE_RX_MAX][IPA_GROUP_MAX] = { [IPA_3_0] = { Loading @@ -232,6 +254,11 @@ static const struct rsrc_min_max ipa3_rsrc_rx_grp_config [IPA_RSRC_GRP_TYPE_RX_HPS_CMDQ] = { {16, 16}, {24, 24}, {8, 8}, {8, 8}, {0, 0}, {8, 8} }, }, [IPA_3_5] = { /* LWA_DL UL_DL not used UC_RX_Q, other are invalid */ [IPA_RSRC_GRP_TYPE_RX_HPS_CMDQ] = { {3, 3}, {7, 7}, {0, 0}, {2, 2}, {0, 0}, {0, 0} }, }, [IPA_3_5_1] = { /* LWA_DL UL_DL not used UC_RX_Q, other are invalid */ [IPA_RSRC_GRP_TYPE_RX_HPS_CMDQ] = { Loading Loading @@ -490,6 +517,222 @@ static const struct ipa_ep_configuration ipa3_ep_mapping { 29, 14, 8, 8, IPA_EE_AP } }, /* IPA_3_5 */ [IPA_3_5][IPA_CLIENT_HSIC1_PROD] = IPA_CLIENT_NOT_USED, /* * for WLAN1_PROD this configuration is temporal and needs to be updated * according to documentation. */ [IPA_3_5][IPA_CLIENT_WLAN1_PROD] = { 6, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 6, 1, 12, 30, IPA_EE_UC } }, [IPA_3_5][IPA_CLIENT_HSIC2_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_USB2_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_HSIC3_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_USB3_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_HSIC4_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_USB4_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_HSIC5_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_USB_PROD] = { 0, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 0, 7, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_UC_USB_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_A5_WLAN_AMPDU_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_A2_EMBEDDED_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_A2_TETHERED_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_APPS_LAN_PROD] = { 8, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 8, 9, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_APPS_WAN_PROD] = { 2, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 2, 3, 16, 32, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_APPS_CMD_PROD] = { 5, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_DMA_ONLY, QMB_MASTER_SELECT_DDR, { 5, 4, 20, 23, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_ODU_PROD] = { 1, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 1, 0, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_MHI_PROD] = { 1, IPA_v3_5_GROUP_PCIE, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_PCIE, { 1, 0, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_Q6_LAN_PROD] = { 3, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 3, 0, 16, 32, IPA_EE_Q6 } }, [IPA_3_5][IPA_CLIENT_Q6_WAN_PROD] = { 6, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_PKT_PROCESS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 6, 4, 10, 30, IPA_EE_Q6 } }, [IPA_3_5][IPA_CLIENT_Q6_CMD_PROD] = { 4, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_PKT_PROCESS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 4, 1, 20, 23, IPA_EE_Q6 } }, [IPA_3_5][IPA_CLIENT_Q6_DECOMP_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_Q6_DECOMP2_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_MEMCPY_DMA_SYNC_PROD] = { 7, IPA_v3_5_GROUP_DMA, false, IPA_DPS_HPS_SEQ_TYPE_DMA_ONLY, QMB_MASTER_SELECT_PCIE, { 7, 8, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_MEMCPY_DMA_ASYNC_PROD] = { 8, IPA_v3_5_GROUP_DMA, false, IPA_DPS_HPS_SEQ_TYPE_DMA_ONLY, QMB_MASTER_SELECT_PCIE, { 8, 9, 8, 16, IPA_EE_AP } }, /* Only for test purpose */ [IPA_3_5][IPA_CLIENT_TEST_PROD] = { 0, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, {0, 7, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_TEST1_PROD] = { 0, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, {0, 7, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_TEST2_PROD] = { 1, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 1, 0, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_TEST3_PROD] = { 7, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, {7, 8, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_TEST4_PROD] = { 8, IPA_v3_5_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 8, 9, 8, 16, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_HSIC1_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_WLAN1_CONS] = { 16, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 16, 3, 8, 8, IPA_EE_UC } }, [IPA_3_5][IPA_CLIENT_HSIC2_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_USB2_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_WLAN2_CONS] = { 18, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 18, 12, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_HSIC3_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_USB3_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_WLAN3_CONS] = { 19, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 19, 13, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_HSIC4_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_USB4_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_WLAN4_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_HSIC5_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_USB_CONS] = { 17, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 17, 11, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_USB_DPL_CONS] = { 14, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 14, 10, 4, 6, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_A2_EMBEDDED_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_A2_TETHERED_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_A5_LAN_WAN_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_APPS_LAN_CONS] = { 9, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 9, 5, 8, 12, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_APPS_WAN_CONS] = { 10, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 10, 6, 8, 12, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_ODU_EMB_CONS] = { 15, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 15, 1, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_ODU_TETH_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_MHI_CONS] = { 15, IPA_v3_5_GROUP_PCIE, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_PCIE, { 15, 1, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_Q6_LAN_CONS] = { 13, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 13, 3, 8, 12, IPA_EE_Q6 } }, [IPA_3_5][IPA_CLIENT_Q6_WAN_CONS] = { 12, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 12, 2, 8, 12, IPA_EE_Q6 } }, [IPA_3_5][IPA_CLIENT_Q6_DUN_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_Q6_DECOMP_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_Q6_DECOMP2_CONS] = IPA_CLIENT_NOT_USED, [IPA_3_5][IPA_CLIENT_MEMCPY_DMA_SYNC_CONS] = { 18, IPA_v3_5_GROUP_DMA, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_PCIE, { 18, 12, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_MEMCPY_DMA_ASYNC_CONS] = { 19, IPA_v3_5_GROUP_DMA, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_PCIE, { 19, 13, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_Q6_LTE_WIFI_AGGR_CONS] = IPA_CLIENT_NOT_USED, /* Only for test purpose */ [IPA_3_5][IPA_CLIENT_TEST_CONS] = { 15, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 15, 1, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_TEST1_CONS] = { 15, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 15, 1, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_TEST2_CONS] = { 17, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 17, 11, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_TEST3_CONS] = { 18, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 18, 12, 8, 8, IPA_EE_AP } }, [IPA_3_5][IPA_CLIENT_TEST4_CONS] = { 19, IPA_v3_5_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 19, 13, 8, 8, IPA_EE_AP } }, /* IPA_3_5_1 */ [IPA_3_5_1][IPA_CLIENT_HSIC1_PROD] = IPA_CLIENT_NOT_USED, [IPA_3_5_1][IPA_CLIENT_WLAN1_PROD] = { Loading Loading @@ -3485,6 +3728,7 @@ static void ipa3_write_rsrc_grp_type_reg(int group_index, } } break; case IPA_3_5: case IPA_3_5_1: if (src) { switch (group_index) { Loading Loading @@ -3593,6 +3837,7 @@ void ipa3_set_resorce_groups_min_max_limits(void) src_grp_idx_max = IPA_v3_0_GROUP_MAX; dst_grp_idx_max = IPA_v3_0_GROUP_MAX; break; case IPA_3_5: case IPA_3_5_1: src_rsrc_type_max = IPA_v3_5_RSRC_GRP_TYPE_SRC_MAX; dst_rsrc_type_max = IPA_v3_5_RSRC_GRP_TYPE_DST_MAX; Loading