Loading drivers/platform/msm/ipa/ipa_api.c +3 −0 Original line number Diff line number Diff line Loading @@ -2604,6 +2604,8 @@ const char *ipa_get_version_string(enum ipa_hw_type ver) case IPA_HW_v4_0: str = "4.0"; break; case IPA_HW_v4_1: str = "4.1"; default: str = "Invalid version"; break; Loading Loading @@ -2665,6 +2667,7 @@ static int ipa_generic_plat_drv_probe(struct platform_device *pdev_p) case IPA_HW_v3_5: case IPA_HW_v3_5_1: case IPA_HW_v4_0: case IPA_HW_v4_1: result = ipa3_plat_drv_probe(pdev_p, ipa_api_ctrl, ipa_plat_drv_match); break; Loading drivers/platform/msm/ipa/ipa_v3/ipa.c +1 −0 Original line number Diff line number Diff line Loading @@ -4079,6 +4079,7 @@ static enum gsi_ver ipa3_get_gsi_ver(enum ipa_hw_type ipa_hw_type) gsi_ver = GSI_VER_1_3; break; case IPA_HW_v4_0: case IPA_HW_v4_1: gsi_ver = GSI_VER_2_0; break; default: Loading drivers/platform/msm/ipa/ipa_v3/ipa_flt.c +6 −1 Original line number Diff line number Diff line Loading @@ -427,6 +427,8 @@ static int ipa_flt_alloc_cmd_buffers(enum ipa_ip_type ip, */ static bool ipa_flt_skip_pipe_config(int pipe) { struct ipa3_ep_context *ep; if (ipa_is_modem_pipe(pipe)) { IPADBG_LOW("skip %d - modem owned pipe\n", pipe); return true; Loading @@ -437,8 +439,11 @@ static bool ipa_flt_skip_pipe_config(int pipe) return true; } ep = &ipa3_ctx->ep[pipe]; if ((ipa3_get_ep_mapping(IPA_CLIENT_APPS_WAN_PROD) == pipe && ipa3_ctx->modem_cfg_emb_pipe_flt)) { && ipa3_ctx->modem_cfg_emb_pipe_flt) && ep->client == IPA_CLIENT_APPS_WAN_PROD) { IPADBG_LOW("skip %d\n", pipe); return true; } Loading drivers/platform/msm/ipa/ipa_v3/ipa_utils.c +239 −0 Original line number Diff line number Diff line Loading @@ -204,6 +204,7 @@ enum ipa_ver { IPA_3_5_1, IPA_4_0, IPA_4_0_MHI, IPA_4_1, IPA_VER_MAX, }; Loading Loading @@ -293,6 +294,20 @@ static const struct rsrc_min_max ipa3_rsrc_src_grp_config [IPA_v4_0_RSRC_GRP_TYPE_SRC_ACK_ENTRIES] = { {14, 14}, {14, 14}, {14, 14}, {0, 0}, {0, 0}, {0, 0} }, }, [IPA_4_1] = { /* LWA_DL UL_DL not used UC_RX_Q, other are invalid */ [IPA_v4_0_RSRC_GRP_TYPE_SRC_PKT_CONTEXTS] = { {1, 63}, {1, 63}, {0, 0}, {1, 63}, {0, 0}, {0, 0} }, [IPA_v4_0_RSRC_GRP_TYPE_SRS_DESCRIPTOR_LISTS] = { {10, 10}, {10, 10}, {0, 0}, {8, 8}, {0, 0}, {0, 0} }, [IPA_v4_0_RSRC_GRP_TYPE_SRC_DESCRIPTOR_BUFF] = { {12, 12}, {14, 14}, {0, 0}, {8, 8}, {0, 0}, {0, 0} }, [IPA_v4_0_RSRC_GRP_TYPE_SRC_HPS_DMARS] = { {0, 63}, {0, 63}, {0, 63}, {0, 63}, {0, 0}, {0, 0} }, [IPA_v4_0_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 Loading @@ -341,6 +356,13 @@ static const struct rsrc_min_max ipa3_rsrc_dst_grp_config [IPA_v4_0_RSRC_GRP_TYPE_DST_DPS_DMARS] = { {2, 255}, {1, 255}, {1, 2}, {0, 2}, {0, 0}, {0, 0} }, }, [IPA_4_1] = { /*LWA_DL UL/DL/DPL uC, other are invalid */ [IPA_v4_0_RSRC_GRP_TYPE_DST_DATA_SECTORS] = { {4, 4}, {4, 4}, {3, 3}, {2, 2}, {0, 0}, {0, 0} }, [IPA_v4_0_RSRC_GRP_TYPE_DST_DPS_DMARS] = { {2, 63}, {1, 63}, {1, 2}, {0, 2}, {0, 0}, {0, 0} }, }, }; static const struct rsrc_min_max ipa3_rsrc_rx_grp_config Loading Loading @@ -375,6 +397,12 @@ static const struct rsrc_min_max ipa3_rsrc_rx_grp_config [IPA_RSRC_GRP_TYPE_RX_HPS_CMDQ] = { { 3, 3 }, { 7, 7 }, { 2, 2 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, }, [IPA_4_1] = { /* 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} }, }, }; static const u32 ipa3_rsrc_rx_grp_hps_weight_config Loading Loading @@ -403,6 +431,10 @@ static const u32 ipa3_rsrc_rx_grp_hps_weight_config /* PCIE DDR DMA unused N/A N/A */ [IPA_RSRC_GRP_TYPE_RX_HPS_WEIGHT_CONFIG] = { 3, 5, 1, 1, 0, 0 }, }, [IPA_4_1] = { /* LWA_DL UL_DL not used UC_RX_Q, other are invalid */ [IPA_RSRC_GRP_TYPE_RX_HPS_WEIGHT_CONFIG] = { 1, 1, 1, 1, 0, 0 }, }, }; enum ipa_ees { Loading Loading @@ -1499,6 +1531,206 @@ static const struct ipa_ep_configuration ipa3_ep_mapping IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 31, 31, 8, 8, IPA_EE_AP } }, /* IPA_4_1 */ [IPA_4_1][IPA_CLIENT_WLAN1_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 7, 0, 8, 16, IPA_EE_UC } }, [IPA_4_1][IPA_CLIENT_USB_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 0, 5, 8, 16, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_APPS_LAN_PROD] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 8, 7, 8, 16, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_APPS_WAN_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 2, 0, 16, 32, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_APPS_CMD_PROD] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_DMA_ONLY, QMB_MASTER_SELECT_DDR, { 5, 1, 20, 24, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_ODU_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 1, 6, 8, 16, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_ETHERNET_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 9, 1, 8, 16, IPA_EE_UC } }, [IPA_4_1][IPA_CLIENT_Q6_LAN_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_PKT_PROCESS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 6, 2, 12, 24, IPA_EE_Q6 } }, [IPA_4_1][IPA_CLIENT_Q6_WAN_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 3, 0, 16, 32, IPA_EE_Q6 } }, [IPA_4_1][IPA_CLIENT_Q6_CMD_PROD] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_PKT_PROCESS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 4, 1, 20, 24, IPA_EE_Q6 } }, /* Only for test purpose */ [IPA_4_1][IPA_CLIENT_TEST_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, {0, 5, 8, 16, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_TEST1_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 0, 5, 8, 16, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_TEST2_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 2, 0, 16, 32, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_TEST3_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, {1, 6, 8, 16, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_TEST4_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 9, 1, 8, 16, IPA_EE_UC } }, [IPA_4_1][IPA_CLIENT_WLAN1_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 18, 2, 9, 9, IPA_EE_UC } }, [IPA_4_1][IPA_CLIENT_WLAN2_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 20, 11, 9, 9, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_WLAN3_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 21, 12, 9, 9, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_USB_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_PCIE, { 19, 10, 9, 9, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_USB_DPL_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 15, 4, 5, 5, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_APPS_LAN_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 10, 2, 9, 9, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_APPS_WAN_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 11, 3, 9, 9, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_ETHERNET_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 22, 3, 9, 9, IPA_EE_UC } }, [IPA_4_1][IPA_CLIENT_Q6_LAN_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 14, 4, 9, 9, IPA_EE_Q6 } }, [IPA_4_1][IPA_CLIENT_Q6_WAN_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 13, 3, 9, 9, IPA_EE_Q6 } }, [IPA_4_1][IPA_CLIENT_Q6_LTE_WIFI_AGGR_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 16, 5, 9, 9, IPA_EE_Q6 } }, /* Only for test purpose */ /* MBIM aggregation test pipes should have the same QMB as USB_CONS */ [IPA_4_1][IPA_CLIENT_TEST_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_PCIE, { 11, 3, 9, 9, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_TEST1_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 11, 3, 9, 9, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_TEST2_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_PCIE, { 12, 8, 9, 9, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_TEST3_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 19, 10, 9, 9, IPA_EE_UC } }, [IPA_4_1][IPA_CLIENT_TEST4_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_PCIE, { 21, 12, 9, 9, IPA_EE_UC } }, /* Dummy consumer (pipe 31) is used in L2TP rt rule */ [IPA_4_1][IPA_CLIENT_DUMMY_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 31, 31, 8, 8, IPA_EE_AP } }, }; static struct msm_bus_vectors ipa_init_vectors_v3_0[] = { Loading Loading @@ -2044,6 +2276,7 @@ int ipa3_init_hw(void) val = IPA_BCR_REG_VAL_v3_5; break; case IPA_HW_v4_0: case IPA_HW_v4_1: val = IPA_BCR_REG_VAL_v4_0; break; default: Loading Loading @@ -2104,6 +2337,9 @@ u8 ipa3_get_hw_type_index(void) if (ipa3_ctx->ipa_config_is_mhi) hw_type_index = IPA_4_0_MHI; break; case IPA_HW_v4_1: hw_type_index = IPA_4_1; break; default: IPAERR("Incorrect IPA version %d\n", ipa3_ctx->ipa_hw_type); hw_type_index = IPA_3_0; Loading Loading @@ -4624,6 +4860,7 @@ static void ipa3_write_rsrc_grp_type_reg(int group_index, break; case IPA_4_0: case IPA_4_0_MHI: case IPA_4_1: if (src) { switch (group_index) { case IPA_v4_0_GROUP_LWA_DL: Loading Loading @@ -4768,6 +5005,7 @@ void ipa3_set_resorce_groups_min_max_limits(void) break; case IPA_4_0: case IPA_4_0_MHI: case IPA_4_1: src_rsrc_type_max = IPA_v4_0_RSRC_GRP_TYPE_SRC_MAX; dst_rsrc_type_max = IPA_v4_0_RSRC_GRP_TYPE_DST_MAX; src_grp_idx_max = IPA_v4_0_SRC_GROUP_MAX; Loading Loading @@ -5244,6 +5482,7 @@ bool ipa3_is_msm_device(void) return false; case IPA_HW_v3_1: case IPA_HW_v3_5_1: case IPA_HW_v4_1: return true; default: IPAERR("unknown HW type %d\n", ipa3_ctx->ipa_hw_type); Loading include/uapi/linux/msm_ipa.h +4 −1 Original line number Diff line number Diff line Loading @@ -527,6 +527,7 @@ enum ipa_rm_resource_name { * @IPA_HW_v3_5: IPA hardware version 3.5 * @IPA_HW_v3_5_1: IPA hardware version 3.5.1 * @IPA_HW_v4_0: IPA hardware version 4.0 * @IPA_HW_v4_1: IPA hardware version 4.1 */ enum ipa_hw_type { IPA_HW_None = 0, Loading @@ -542,10 +543,12 @@ enum ipa_hw_type { IPA_HW_v3_5 = 12, IPA_HW_v3_5_1 = 13, IPA_HW_v4_0 = 14, IPA_HW_v4_1 = 15, }; #define IPA_HW_MAX (IPA_HW_v4_0 + 1) #define IPA_HW_MAX (IPA_HW_v4_1 + 1) #define IPA_HW_v4_0 IPA_HW_v4_0 #define IPA_HW_v4_1 IPA_HW_v4_1 /** * struct ipa_rule_attrib - attributes of a routing/filtering Loading Loading
drivers/platform/msm/ipa/ipa_api.c +3 −0 Original line number Diff line number Diff line Loading @@ -2604,6 +2604,8 @@ const char *ipa_get_version_string(enum ipa_hw_type ver) case IPA_HW_v4_0: str = "4.0"; break; case IPA_HW_v4_1: str = "4.1"; default: str = "Invalid version"; break; Loading Loading @@ -2665,6 +2667,7 @@ static int ipa_generic_plat_drv_probe(struct platform_device *pdev_p) case IPA_HW_v3_5: case IPA_HW_v3_5_1: case IPA_HW_v4_0: case IPA_HW_v4_1: result = ipa3_plat_drv_probe(pdev_p, ipa_api_ctrl, ipa_plat_drv_match); break; Loading
drivers/platform/msm/ipa/ipa_v3/ipa.c +1 −0 Original line number Diff line number Diff line Loading @@ -4079,6 +4079,7 @@ static enum gsi_ver ipa3_get_gsi_ver(enum ipa_hw_type ipa_hw_type) gsi_ver = GSI_VER_1_3; break; case IPA_HW_v4_0: case IPA_HW_v4_1: gsi_ver = GSI_VER_2_0; break; default: Loading
drivers/platform/msm/ipa/ipa_v3/ipa_flt.c +6 −1 Original line number Diff line number Diff line Loading @@ -427,6 +427,8 @@ static int ipa_flt_alloc_cmd_buffers(enum ipa_ip_type ip, */ static bool ipa_flt_skip_pipe_config(int pipe) { struct ipa3_ep_context *ep; if (ipa_is_modem_pipe(pipe)) { IPADBG_LOW("skip %d - modem owned pipe\n", pipe); return true; Loading @@ -437,8 +439,11 @@ static bool ipa_flt_skip_pipe_config(int pipe) return true; } ep = &ipa3_ctx->ep[pipe]; if ((ipa3_get_ep_mapping(IPA_CLIENT_APPS_WAN_PROD) == pipe && ipa3_ctx->modem_cfg_emb_pipe_flt)) { && ipa3_ctx->modem_cfg_emb_pipe_flt) && ep->client == IPA_CLIENT_APPS_WAN_PROD) { IPADBG_LOW("skip %d\n", pipe); return true; } Loading
drivers/platform/msm/ipa/ipa_v3/ipa_utils.c +239 −0 Original line number Diff line number Diff line Loading @@ -204,6 +204,7 @@ enum ipa_ver { IPA_3_5_1, IPA_4_0, IPA_4_0_MHI, IPA_4_1, IPA_VER_MAX, }; Loading Loading @@ -293,6 +294,20 @@ static const struct rsrc_min_max ipa3_rsrc_src_grp_config [IPA_v4_0_RSRC_GRP_TYPE_SRC_ACK_ENTRIES] = { {14, 14}, {14, 14}, {14, 14}, {0, 0}, {0, 0}, {0, 0} }, }, [IPA_4_1] = { /* LWA_DL UL_DL not used UC_RX_Q, other are invalid */ [IPA_v4_0_RSRC_GRP_TYPE_SRC_PKT_CONTEXTS] = { {1, 63}, {1, 63}, {0, 0}, {1, 63}, {0, 0}, {0, 0} }, [IPA_v4_0_RSRC_GRP_TYPE_SRS_DESCRIPTOR_LISTS] = { {10, 10}, {10, 10}, {0, 0}, {8, 8}, {0, 0}, {0, 0} }, [IPA_v4_0_RSRC_GRP_TYPE_SRC_DESCRIPTOR_BUFF] = { {12, 12}, {14, 14}, {0, 0}, {8, 8}, {0, 0}, {0, 0} }, [IPA_v4_0_RSRC_GRP_TYPE_SRC_HPS_DMARS] = { {0, 63}, {0, 63}, {0, 63}, {0, 63}, {0, 0}, {0, 0} }, [IPA_v4_0_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 Loading @@ -341,6 +356,13 @@ static const struct rsrc_min_max ipa3_rsrc_dst_grp_config [IPA_v4_0_RSRC_GRP_TYPE_DST_DPS_DMARS] = { {2, 255}, {1, 255}, {1, 2}, {0, 2}, {0, 0}, {0, 0} }, }, [IPA_4_1] = { /*LWA_DL UL/DL/DPL uC, other are invalid */ [IPA_v4_0_RSRC_GRP_TYPE_DST_DATA_SECTORS] = { {4, 4}, {4, 4}, {3, 3}, {2, 2}, {0, 0}, {0, 0} }, [IPA_v4_0_RSRC_GRP_TYPE_DST_DPS_DMARS] = { {2, 63}, {1, 63}, {1, 2}, {0, 2}, {0, 0}, {0, 0} }, }, }; static const struct rsrc_min_max ipa3_rsrc_rx_grp_config Loading Loading @@ -375,6 +397,12 @@ static const struct rsrc_min_max ipa3_rsrc_rx_grp_config [IPA_RSRC_GRP_TYPE_RX_HPS_CMDQ] = { { 3, 3 }, { 7, 7 }, { 2, 2 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, }, [IPA_4_1] = { /* 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} }, }, }; static const u32 ipa3_rsrc_rx_grp_hps_weight_config Loading Loading @@ -403,6 +431,10 @@ static const u32 ipa3_rsrc_rx_grp_hps_weight_config /* PCIE DDR DMA unused N/A N/A */ [IPA_RSRC_GRP_TYPE_RX_HPS_WEIGHT_CONFIG] = { 3, 5, 1, 1, 0, 0 }, }, [IPA_4_1] = { /* LWA_DL UL_DL not used UC_RX_Q, other are invalid */ [IPA_RSRC_GRP_TYPE_RX_HPS_WEIGHT_CONFIG] = { 1, 1, 1, 1, 0, 0 }, }, }; enum ipa_ees { Loading Loading @@ -1499,6 +1531,206 @@ static const struct ipa_ep_configuration ipa3_ep_mapping IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 31, 31, 8, 8, IPA_EE_AP } }, /* IPA_4_1 */ [IPA_4_1][IPA_CLIENT_WLAN1_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 7, 0, 8, 16, IPA_EE_UC } }, [IPA_4_1][IPA_CLIENT_USB_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 0, 5, 8, 16, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_APPS_LAN_PROD] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 8, 7, 8, 16, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_APPS_WAN_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 2, 0, 16, 32, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_APPS_CMD_PROD] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_DMA_ONLY, QMB_MASTER_SELECT_DDR, { 5, 1, 20, 24, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_ODU_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 1, 6, 8, 16, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_ETHERNET_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 9, 1, 8, 16, IPA_EE_UC } }, [IPA_4_1][IPA_CLIENT_Q6_LAN_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_PKT_PROCESS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 6, 2, 12, 24, IPA_EE_Q6 } }, [IPA_4_1][IPA_CLIENT_Q6_WAN_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 3, 0, 16, 32, IPA_EE_Q6 } }, [IPA_4_1][IPA_CLIENT_Q6_CMD_PROD] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_PKT_PROCESS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 4, 1, 20, 24, IPA_EE_Q6 } }, /* Only for test purpose */ [IPA_4_1][IPA_CLIENT_TEST_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, {0, 5, 8, 16, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_TEST1_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 0, 5, 8, 16, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_TEST2_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 2, 0, 16, 32, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_TEST3_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, {1, 6, 8, 16, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_TEST4_PROD] = { true, IPA_v4_0_GROUP_UL_DL, true, IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 9, 1, 8, 16, IPA_EE_UC } }, [IPA_4_1][IPA_CLIENT_WLAN1_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 18, 2, 9, 9, IPA_EE_UC } }, [IPA_4_1][IPA_CLIENT_WLAN2_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 20, 11, 9, 9, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_WLAN3_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 21, 12, 9, 9, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_USB_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_PCIE, { 19, 10, 9, 9, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_USB_DPL_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 15, 4, 5, 5, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_APPS_LAN_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 10, 2, 9, 9, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_APPS_WAN_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 11, 3, 9, 9, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_ETHERNET_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 22, 3, 9, 9, IPA_EE_UC } }, [IPA_4_1][IPA_CLIENT_Q6_LAN_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 14, 4, 9, 9, IPA_EE_Q6 } }, [IPA_4_1][IPA_CLIENT_Q6_WAN_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 13, 3, 9, 9, IPA_EE_Q6 } }, [IPA_4_1][IPA_CLIENT_Q6_LTE_WIFI_AGGR_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 16, 5, 9, 9, IPA_EE_Q6 } }, /* Only for test purpose */ /* MBIM aggregation test pipes should have the same QMB as USB_CONS */ [IPA_4_1][IPA_CLIENT_TEST_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_PCIE, { 11, 3, 9, 9, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_TEST1_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 11, 3, 9, 9, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_TEST2_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_PCIE, { 12, 8, 9, 9, IPA_EE_AP } }, [IPA_4_1][IPA_CLIENT_TEST3_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 19, 10, 9, 9, IPA_EE_UC } }, [IPA_4_1][IPA_CLIENT_TEST4_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_PCIE, { 21, 12, 9, 9, IPA_EE_UC } }, /* Dummy consumer (pipe 31) is used in L2TP rt rule */ [IPA_4_1][IPA_CLIENT_DUMMY_CONS] = { true, IPA_v4_0_GROUP_UL_DL, false, IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_DDR, { 31, 31, 8, 8, IPA_EE_AP } }, }; static struct msm_bus_vectors ipa_init_vectors_v3_0[] = { Loading Loading @@ -2044,6 +2276,7 @@ int ipa3_init_hw(void) val = IPA_BCR_REG_VAL_v3_5; break; case IPA_HW_v4_0: case IPA_HW_v4_1: val = IPA_BCR_REG_VAL_v4_0; break; default: Loading Loading @@ -2104,6 +2337,9 @@ u8 ipa3_get_hw_type_index(void) if (ipa3_ctx->ipa_config_is_mhi) hw_type_index = IPA_4_0_MHI; break; case IPA_HW_v4_1: hw_type_index = IPA_4_1; break; default: IPAERR("Incorrect IPA version %d\n", ipa3_ctx->ipa_hw_type); hw_type_index = IPA_3_0; Loading Loading @@ -4624,6 +4860,7 @@ static void ipa3_write_rsrc_grp_type_reg(int group_index, break; case IPA_4_0: case IPA_4_0_MHI: case IPA_4_1: if (src) { switch (group_index) { case IPA_v4_0_GROUP_LWA_DL: Loading Loading @@ -4768,6 +5005,7 @@ void ipa3_set_resorce_groups_min_max_limits(void) break; case IPA_4_0: case IPA_4_0_MHI: case IPA_4_1: src_rsrc_type_max = IPA_v4_0_RSRC_GRP_TYPE_SRC_MAX; dst_rsrc_type_max = IPA_v4_0_RSRC_GRP_TYPE_DST_MAX; src_grp_idx_max = IPA_v4_0_SRC_GROUP_MAX; Loading Loading @@ -5244,6 +5482,7 @@ bool ipa3_is_msm_device(void) return false; case IPA_HW_v3_1: case IPA_HW_v3_5_1: case IPA_HW_v4_1: return true; default: IPAERR("unknown HW type %d\n", ipa3_ctx->ipa_hw_type); Loading
include/uapi/linux/msm_ipa.h +4 −1 Original line number Diff line number Diff line Loading @@ -527,6 +527,7 @@ enum ipa_rm_resource_name { * @IPA_HW_v3_5: IPA hardware version 3.5 * @IPA_HW_v3_5_1: IPA hardware version 3.5.1 * @IPA_HW_v4_0: IPA hardware version 4.0 * @IPA_HW_v4_1: IPA hardware version 4.1 */ enum ipa_hw_type { IPA_HW_None = 0, Loading @@ -542,10 +543,12 @@ enum ipa_hw_type { IPA_HW_v3_5 = 12, IPA_HW_v3_5_1 = 13, IPA_HW_v4_0 = 14, IPA_HW_v4_1 = 15, }; #define IPA_HW_MAX (IPA_HW_v4_0 + 1) #define IPA_HW_MAX (IPA_HW_v4_1 + 1) #define IPA_HW_v4_0 IPA_HW_v4_0 #define IPA_HW_v4_1 IPA_HW_v4_1 /** * struct ipa_rule_attrib - attributes of a routing/filtering Loading