Loading drivers/platform/msm/ipa/ipa_v3/ipa.c +52 −53 Original line number Diff line number Diff line Loading @@ -629,75 +629,74 @@ static void ipa3_get_usb_ep_info( ) { int ep_index = -1, i; int pair_id = 0; ep_info->num_ep_pairs = 0; for (i = 0; i < ep_info->max_ep_pairs; i++) { pair_info[i].consumer_pipe_num = -1; pair_info[i].producer_pipe_num = -1; pair_info[i].ep_id = -1; } if ((!ep_info->teth_prot_valid) || (ep_info->teth_prot_valid && ep_info->teth_prot == IPA_PROT_RMNET_CV2X)) { ep_index = ipa3_get_ep_mapping(IPA_CLIENT_USB2_PROD); if ((ep_index != -1) && ipa3_ctx->ep[ep_index].valid) { pair_info[ep_info->num_ep_pairs].consumer_pipe_num = ep_index; pair_info[pair_id].consumer_pipe_num = ep_index; ep_index = ipa3_get_ep_mapping(IPA_CLIENT_USB2_CONS); if ((ep_index != -1) && (ipa3_ctx->ep[ep_index].valid)) { pair_info[ep_info->num_ep_pairs].producer_pipe_num = ep_index; pair_info[ep_info->num_ep_pairs].ep_id = IPA_USB1_EP_ID; if ((ep_index != -1) && (ipa3_ctx->ep[ep_index].valid)) { pair_info[pair_id].producer_pipe_num = ep_index; pair_info[pair_id].ep_id = IPA_USB1_EP_ID; IPADBG("ep_pair_info consumer_pipe_num %d", pair_info[ep_info->num_ep_pairs]. consumer_pipe_num); pair_info[pair_id].consumer_pipe_num); IPADBG(" producer_pipe_num %d ep_id %d\n", pair_info[ep_info->num_ep_pairs]. producer_pipe_num, pair_info[ep_info->num_ep_pairs].ep_id); ep_info->num_ep_pairs++; pair_info[pair_id].producer_pipe_num, pair_info[pair_id].ep_id); pair_id++; } else { pair_info[ep_info->num_ep_pairs].consumer_pipe_num = -1; pair_info[pair_id].consumer_pipe_num = -1; IPADBG("ep_pair_info consumer_pipe_num %d", pair_info[ep_info->num_ep_pairs]. consumer_pipe_num); pair_info[pair_id].consumer_pipe_num); IPADBG(" producer_pipe_num %d ep_id %d\n", pair_info[ep_info->num_ep_pairs]. producer_pipe_num, pair_info[ep_info->num_ep_pairs].ep_id); pair_info[pair_id].producer_pipe_num, pair_info[pair_id].ep_id); } } } if ((!ep_info->teth_prot_valid) || (ep_info->teth_prot_valid && ep_info->teth_prot == IPA_PROT_RMNET)) { ep_index = ipa3_get_ep_mapping(IPA_CLIENT_USB_PROD); if ((ep_index != -1) && ipa3_ctx->ep[ep_index].valid) { pair_info[ep_info->num_ep_pairs].consumer_pipe_num = ep_index; pair_info[pair_id].consumer_pipe_num = ep_index; ep_index = ipa3_get_ep_mapping(IPA_CLIENT_USB_CONS); if ((ep_index != -1) && (ipa3_ctx->ep[ep_index].valid)) { pair_info[ep_info->num_ep_pairs].producer_pipe_num = ep_index; pair_info[ep_info->num_ep_pairs].ep_id = IPA_USB0_EP_ID; if ((ep_index != -1) && (ipa3_ctx->ep[ep_index].valid)) { pair_info[pair_id].producer_pipe_num = ep_index; pair_info[pair_id].ep_id = IPA_USB0_EP_ID; IPADBG("ep_pair_info consumer_pipe_num %d", pair_info[ep_info->num_ep_pairs]. consumer_pipe_num); pair_info[pair_id].consumer_pipe_num); IPADBG(" producer_pipe_num %d ep_id %d\n", pair_info[ep_info->num_ep_pairs]. producer_pipe_num, pair_info[ep_info->num_ep_pairs].ep_id); ep_info->num_ep_pairs++; pair_info[pair_id].producer_pipe_num, pair_info[pair_id].ep_id); pair_id++; } else { pair_info[ep_info->num_ep_pairs].consumer_pipe_num = -1; pair_info[pair_id].consumer_pipe_num = -1; IPADBG("ep_pair_info consumer_pipe_num %d", pair_info[ep_info->num_ep_pairs]. consumer_pipe_num); pair_info[pair_id].consumer_pipe_num); IPADBG(" producer_pipe_num %d ep_id %d\n", pair_info[ep_info->num_ep_pairs]. producer_pipe_num, pair_info[ep_info->num_ep_pairs].ep_id); pair_info[pair_id].producer_pipe_num, pair_info[pair_id].ep_id); } } } ep_info->num_ep_pairs = pair_id; } Loading include/uapi/linux/msm_ipa.h +10 −0 Original line number Diff line number Diff line Loading @@ -1838,6 +1838,12 @@ enum ipa_peripheral_ep_type { IPA_DATA_EP_TYP_BAM_DMUX, }; enum ipa_data_ep_prot_type { IPA_PROT_RMNET = 0, IPA_PROT_RMNET_CV2X = 1, IPA_PROT_MAX }; struct ipa_ep_pair_info { uint32_t consumer_pipe_num; uint32_t producer_pipe_num; Loading @@ -1852,6 +1858,8 @@ struct ipa_ep_pair_info { * @num_ep_pairs: number of ep_pairs - o/p param * @ep_pair_size: sizeof(ipa_ep_pair_info) * max_ep_pairs * @info: structure contains ep pair info * @teth_prot : RMNET/CV2X --i/p param * @teth_prot_valid - validity of i/p param protocol */ struct ipa_ioc_get_ep_info { enum ipa_peripheral_ep_type ep_type; Loading @@ -1859,6 +1867,8 @@ struct ipa_ioc_get_ep_info { uint8_t num_ep_pairs; uint32_t ep_pair_size; uintptr_t info; enum ipa_data_ep_prot_type teth_prot; uint8_t teth_prot_valid; }; /** Loading Loading
drivers/platform/msm/ipa/ipa_v3/ipa.c +52 −53 Original line number Diff line number Diff line Loading @@ -629,75 +629,74 @@ static void ipa3_get_usb_ep_info( ) { int ep_index = -1, i; int pair_id = 0; ep_info->num_ep_pairs = 0; for (i = 0; i < ep_info->max_ep_pairs; i++) { pair_info[i].consumer_pipe_num = -1; pair_info[i].producer_pipe_num = -1; pair_info[i].ep_id = -1; } if ((!ep_info->teth_prot_valid) || (ep_info->teth_prot_valid && ep_info->teth_prot == IPA_PROT_RMNET_CV2X)) { ep_index = ipa3_get_ep_mapping(IPA_CLIENT_USB2_PROD); if ((ep_index != -1) && ipa3_ctx->ep[ep_index].valid) { pair_info[ep_info->num_ep_pairs].consumer_pipe_num = ep_index; pair_info[pair_id].consumer_pipe_num = ep_index; ep_index = ipa3_get_ep_mapping(IPA_CLIENT_USB2_CONS); if ((ep_index != -1) && (ipa3_ctx->ep[ep_index].valid)) { pair_info[ep_info->num_ep_pairs].producer_pipe_num = ep_index; pair_info[ep_info->num_ep_pairs].ep_id = IPA_USB1_EP_ID; if ((ep_index != -1) && (ipa3_ctx->ep[ep_index].valid)) { pair_info[pair_id].producer_pipe_num = ep_index; pair_info[pair_id].ep_id = IPA_USB1_EP_ID; IPADBG("ep_pair_info consumer_pipe_num %d", pair_info[ep_info->num_ep_pairs]. consumer_pipe_num); pair_info[pair_id].consumer_pipe_num); IPADBG(" producer_pipe_num %d ep_id %d\n", pair_info[ep_info->num_ep_pairs]. producer_pipe_num, pair_info[ep_info->num_ep_pairs].ep_id); ep_info->num_ep_pairs++; pair_info[pair_id].producer_pipe_num, pair_info[pair_id].ep_id); pair_id++; } else { pair_info[ep_info->num_ep_pairs].consumer_pipe_num = -1; pair_info[pair_id].consumer_pipe_num = -1; IPADBG("ep_pair_info consumer_pipe_num %d", pair_info[ep_info->num_ep_pairs]. consumer_pipe_num); pair_info[pair_id].consumer_pipe_num); IPADBG(" producer_pipe_num %d ep_id %d\n", pair_info[ep_info->num_ep_pairs]. producer_pipe_num, pair_info[ep_info->num_ep_pairs].ep_id); pair_info[pair_id].producer_pipe_num, pair_info[pair_id].ep_id); } } } if ((!ep_info->teth_prot_valid) || (ep_info->teth_prot_valid && ep_info->teth_prot == IPA_PROT_RMNET)) { ep_index = ipa3_get_ep_mapping(IPA_CLIENT_USB_PROD); if ((ep_index != -1) && ipa3_ctx->ep[ep_index].valid) { pair_info[ep_info->num_ep_pairs].consumer_pipe_num = ep_index; pair_info[pair_id].consumer_pipe_num = ep_index; ep_index = ipa3_get_ep_mapping(IPA_CLIENT_USB_CONS); if ((ep_index != -1) && (ipa3_ctx->ep[ep_index].valid)) { pair_info[ep_info->num_ep_pairs].producer_pipe_num = ep_index; pair_info[ep_info->num_ep_pairs].ep_id = IPA_USB0_EP_ID; if ((ep_index != -1) && (ipa3_ctx->ep[ep_index].valid)) { pair_info[pair_id].producer_pipe_num = ep_index; pair_info[pair_id].ep_id = IPA_USB0_EP_ID; IPADBG("ep_pair_info consumer_pipe_num %d", pair_info[ep_info->num_ep_pairs]. consumer_pipe_num); pair_info[pair_id].consumer_pipe_num); IPADBG(" producer_pipe_num %d ep_id %d\n", pair_info[ep_info->num_ep_pairs]. producer_pipe_num, pair_info[ep_info->num_ep_pairs].ep_id); ep_info->num_ep_pairs++; pair_info[pair_id].producer_pipe_num, pair_info[pair_id].ep_id); pair_id++; } else { pair_info[ep_info->num_ep_pairs].consumer_pipe_num = -1; pair_info[pair_id].consumer_pipe_num = -1; IPADBG("ep_pair_info consumer_pipe_num %d", pair_info[ep_info->num_ep_pairs]. consumer_pipe_num); pair_info[pair_id].consumer_pipe_num); IPADBG(" producer_pipe_num %d ep_id %d\n", pair_info[ep_info->num_ep_pairs]. producer_pipe_num, pair_info[ep_info->num_ep_pairs].ep_id); pair_info[pair_id].producer_pipe_num, pair_info[pair_id].ep_id); } } } ep_info->num_ep_pairs = pair_id; } Loading
include/uapi/linux/msm_ipa.h +10 −0 Original line number Diff line number Diff line Loading @@ -1838,6 +1838,12 @@ enum ipa_peripheral_ep_type { IPA_DATA_EP_TYP_BAM_DMUX, }; enum ipa_data_ep_prot_type { IPA_PROT_RMNET = 0, IPA_PROT_RMNET_CV2X = 1, IPA_PROT_MAX }; struct ipa_ep_pair_info { uint32_t consumer_pipe_num; uint32_t producer_pipe_num; Loading @@ -1852,6 +1858,8 @@ struct ipa_ep_pair_info { * @num_ep_pairs: number of ep_pairs - o/p param * @ep_pair_size: sizeof(ipa_ep_pair_info) * max_ep_pairs * @info: structure contains ep pair info * @teth_prot : RMNET/CV2X --i/p param * @teth_prot_valid - validity of i/p param protocol */ struct ipa_ioc_get_ep_info { enum ipa_peripheral_ep_type ep_type; Loading @@ -1859,6 +1867,8 @@ struct ipa_ioc_get_ep_info { uint8_t num_ep_pairs; uint32_t ep_pair_size; uintptr_t info; enum ipa_data_ep_prot_type teth_prot; uint8_t teth_prot_valid; }; /** Loading