Loading drivers/platform/msm/ipa/ipa_api.c +43 −2 Original line number Diff line number Diff line Loading @@ -1188,13 +1188,13 @@ int ipa_teardown_sys_pipe(u32 clnt_hdl) EXPORT_SYMBOL(ipa_teardown_sys_pipe); int ipa_sys_setup(struct ipa_sys_connect_params *sys_in, unsigned long *ipa_bam_hdl, unsigned long *ipa_bam_or_gsi_hdl, u32 *ipa_pipe_num, u32 *clnt_hdl, bool en_status) { int ret; IPA_API_DISPATCH_RETURN(ipa_sys_setup, sys_in, ipa_bam_hdl, IPA_API_DISPATCH_RETURN(ipa_sys_setup, sys_in, ipa_bam_or_gsi_hdl, ipa_pipe_num, clnt_hdl, en_status); return ret; Loading @@ -1211,6 +1211,18 @@ int ipa_sys_teardown(u32 clnt_hdl) } EXPORT_SYMBOL(ipa_sys_teardown); int ipa_sys_update_gsi_hdls(u32 clnt_hdl, unsigned long gsi_ch_hdl, unsigned long gsi_ev_hdl) { int ret; IPA_API_DISPATCH_RETURN(ipa_sys_update_gsi_hdls, clnt_hdl, gsi_ch_hdl, gsi_ev_hdl); return ret; } EXPORT_SYMBOL(ipa_sys_update_gsi_hdls); /** * ipa_connect_wdi_pipe() - WDI client connect * @in: [in] input parameters from client Loading Loading @@ -2496,6 +2508,35 @@ int ipa_create_wdi_mapping(u32 num_buffers, struct ipa_wdi_buffer_info *info) } EXPORT_SYMBOL(ipa_create_wdi_mapping); /** * ipa_get_gsi_ep_info() - provide gsi ep information * @ipa_ep_idx: IPA endpoint index * * Return value: pointer to ipa_gsi_ep_info */ struct ipa_gsi_ep_config *ipa_get_gsi_ep_info(int ipa_ep_idx) { if (!ipa_api_ctrl || !ipa_api_ctrl->ipa_get_gsi_ep_info) return NULL; return ipa_api_ctrl->ipa_get_gsi_ep_info(ipa_ep_idx); } EXPORT_SYMBOL(ipa_get_gsi_ep_info); /** * ipa_stop_gsi_channel()- Stops a GSI channel in IPA * * Return value: 0 on success, negative otherwise */ int ipa_stop_gsi_channel(u32 clnt_hdl) { int ret; IPA_API_DISPATCH_RETURN(ipa_stop_gsi_channel, clnt_hdl); return ret; } EXPORT_SYMBOL(ipa_stop_gsi_channel); static struct of_device_id ipa_plat_drv_match[] = { { .compatible = "qcom,ipa", }, { .compatible = "qcom,ipa-smmu-ap-cb", }, Loading drivers/platform/msm/ipa/ipa_api.h +7 −0 Original line number Diff line number Diff line Loading @@ -155,6 +155,9 @@ struct ipa_api_controller { int (*ipa_sys_teardown)(u32 clnt_hdl); int (*ipa_sys_update_gsi_hdls)(u32 clnt_hdl, unsigned long gsi_ch_hdl, unsigned long gsi_ev_hdl); int (*ipa_connect_wdi_pipe)(struct ipa_wdi_in_params *in, struct ipa_wdi_out_params *out); Loading Loading @@ -296,6 +299,8 @@ struct ipa_api_controller { int (*ipa_ap_resume)(struct device *dev); int (*ipa_stop_gsi_channel)(u32 clnt_hdl); struct iommu_domain *(*ipa_get_smmu_domain)(void); int (*ipa_disable_apps_wan_cons_deaggr)(uint32_t agg_size, Loading @@ -313,6 +318,8 @@ struct ipa_api_controller { int (*ipa_create_wdi_mapping)(u32 num_buffers, struct ipa_wdi_buffer_info *info); struct ipa_gsi_ep_config *(*ipa_get_gsi_ep_info)(int ipa_ep_idx); }; #ifdef CONFIG_IPA Loading drivers/platform/msm/ipa/ipa_v2/ipa_dp.c +7 −0 Original line number Diff line number Diff line Loading @@ -3129,6 +3129,13 @@ int ipa2_sys_teardown(u32 clnt_hdl) return 0; } int ipa2_sys_update_gsi_hdls(u32 clnt_hdl, unsigned long gsi_ch_hdl, unsigned long gsi_ev_hdl) { IPAERR("GSI not supported in IPAv2"); return -EFAULT; } /** * ipa_adjust_ra_buff_base_sz() Loading drivers/platform/msm/ipa/ipa_v2/ipa_i.h +3 −0 Original line number Diff line number Diff line Loading @@ -1569,6 +1569,9 @@ int ipa2_sys_setup(struct ipa_sys_connect_params *sys_in, int ipa2_sys_teardown(u32 clnt_hdl); int ipa2_sys_update_gsi_hdls(u32 clnt_hdl, unsigned long gsi_ch_hdl, unsigned long gsi_ev_hdl); int ipa2_connect_wdi_pipe(struct ipa_wdi_in_params *in, struct ipa_wdi_out_params *out); int ipa2_disconnect_wdi_pipe(u32 clnt_hdl); Loading drivers/platform/msm/ipa/ipa_v2/ipa_utils.c +16 −0 Original line number Diff line number Diff line Loading @@ -4861,6 +4861,19 @@ int ipa2_disable_apps_wan_cons_deaggr(uint32_t agg_size, uint32_t agg_count) return res; } static struct ipa_gsi_ep_config *ipa2_get_gsi_ep_info(int ipa_ep_idx) { IPAERR("Not supported for IPA 2.x\n"); return NULL; } static int ipa2_stop_gsi_channel(u32 clnt_hdl) { IPAERR("Not supported for IPA 2.x\n"); return -EFAULT; } int ipa2_bind_api_controller(enum ipa_hw_type ipa_hw_type, struct ipa_api_controller *api_ctrl) { Loading Loading @@ -4926,6 +4939,7 @@ int ipa2_bind_api_controller(enum ipa_hw_type ipa_hw_type, api_ctrl->ipa_free_skb = ipa2_free_skb; api_ctrl->ipa_setup_sys_pipe = ipa2_setup_sys_pipe; api_ctrl->ipa_teardown_sys_pipe = ipa2_teardown_sys_pipe; api_ctrl->ipa_sys_update_gsi_hdls = ipa2_sys_update_gsi_hdls; api_ctrl->ipa_sys_setup = ipa2_sys_setup; api_ctrl->ipa_sys_teardown = ipa2_sys_teardown; api_ctrl->ipa_connect_wdi_pipe = ipa2_connect_wdi_pipe; Loading Loading @@ -5001,6 +5015,8 @@ int ipa2_bind_api_controller(enum ipa_hw_type ipa_hw_type, ipa2_disable_apps_wan_cons_deaggr; api_ctrl->ipa_rm_add_dependency_sync = ipa2_rm_add_dependency_sync; api_ctrl->ipa_get_dma_dev = ipa2_get_dma_dev; api_ctrl->ipa_get_gsi_ep_info = ipa2_get_gsi_ep_info; api_ctrl->ipa_stop_gsi_channel = ipa2_stop_gsi_channel; return 0; } Loading Loading
drivers/platform/msm/ipa/ipa_api.c +43 −2 Original line number Diff line number Diff line Loading @@ -1188,13 +1188,13 @@ int ipa_teardown_sys_pipe(u32 clnt_hdl) EXPORT_SYMBOL(ipa_teardown_sys_pipe); int ipa_sys_setup(struct ipa_sys_connect_params *sys_in, unsigned long *ipa_bam_hdl, unsigned long *ipa_bam_or_gsi_hdl, u32 *ipa_pipe_num, u32 *clnt_hdl, bool en_status) { int ret; IPA_API_DISPATCH_RETURN(ipa_sys_setup, sys_in, ipa_bam_hdl, IPA_API_DISPATCH_RETURN(ipa_sys_setup, sys_in, ipa_bam_or_gsi_hdl, ipa_pipe_num, clnt_hdl, en_status); return ret; Loading @@ -1211,6 +1211,18 @@ int ipa_sys_teardown(u32 clnt_hdl) } EXPORT_SYMBOL(ipa_sys_teardown); int ipa_sys_update_gsi_hdls(u32 clnt_hdl, unsigned long gsi_ch_hdl, unsigned long gsi_ev_hdl) { int ret; IPA_API_DISPATCH_RETURN(ipa_sys_update_gsi_hdls, clnt_hdl, gsi_ch_hdl, gsi_ev_hdl); return ret; } EXPORT_SYMBOL(ipa_sys_update_gsi_hdls); /** * ipa_connect_wdi_pipe() - WDI client connect * @in: [in] input parameters from client Loading Loading @@ -2496,6 +2508,35 @@ int ipa_create_wdi_mapping(u32 num_buffers, struct ipa_wdi_buffer_info *info) } EXPORT_SYMBOL(ipa_create_wdi_mapping); /** * ipa_get_gsi_ep_info() - provide gsi ep information * @ipa_ep_idx: IPA endpoint index * * Return value: pointer to ipa_gsi_ep_info */ struct ipa_gsi_ep_config *ipa_get_gsi_ep_info(int ipa_ep_idx) { if (!ipa_api_ctrl || !ipa_api_ctrl->ipa_get_gsi_ep_info) return NULL; return ipa_api_ctrl->ipa_get_gsi_ep_info(ipa_ep_idx); } EXPORT_SYMBOL(ipa_get_gsi_ep_info); /** * ipa_stop_gsi_channel()- Stops a GSI channel in IPA * * Return value: 0 on success, negative otherwise */ int ipa_stop_gsi_channel(u32 clnt_hdl) { int ret; IPA_API_DISPATCH_RETURN(ipa_stop_gsi_channel, clnt_hdl); return ret; } EXPORT_SYMBOL(ipa_stop_gsi_channel); static struct of_device_id ipa_plat_drv_match[] = { { .compatible = "qcom,ipa", }, { .compatible = "qcom,ipa-smmu-ap-cb", }, Loading
drivers/platform/msm/ipa/ipa_api.h +7 −0 Original line number Diff line number Diff line Loading @@ -155,6 +155,9 @@ struct ipa_api_controller { int (*ipa_sys_teardown)(u32 clnt_hdl); int (*ipa_sys_update_gsi_hdls)(u32 clnt_hdl, unsigned long gsi_ch_hdl, unsigned long gsi_ev_hdl); int (*ipa_connect_wdi_pipe)(struct ipa_wdi_in_params *in, struct ipa_wdi_out_params *out); Loading Loading @@ -296,6 +299,8 @@ struct ipa_api_controller { int (*ipa_ap_resume)(struct device *dev); int (*ipa_stop_gsi_channel)(u32 clnt_hdl); struct iommu_domain *(*ipa_get_smmu_domain)(void); int (*ipa_disable_apps_wan_cons_deaggr)(uint32_t agg_size, Loading @@ -313,6 +318,8 @@ struct ipa_api_controller { int (*ipa_create_wdi_mapping)(u32 num_buffers, struct ipa_wdi_buffer_info *info); struct ipa_gsi_ep_config *(*ipa_get_gsi_ep_info)(int ipa_ep_idx); }; #ifdef CONFIG_IPA Loading
drivers/platform/msm/ipa/ipa_v2/ipa_dp.c +7 −0 Original line number Diff line number Diff line Loading @@ -3129,6 +3129,13 @@ int ipa2_sys_teardown(u32 clnt_hdl) return 0; } int ipa2_sys_update_gsi_hdls(u32 clnt_hdl, unsigned long gsi_ch_hdl, unsigned long gsi_ev_hdl) { IPAERR("GSI not supported in IPAv2"); return -EFAULT; } /** * ipa_adjust_ra_buff_base_sz() Loading
drivers/platform/msm/ipa/ipa_v2/ipa_i.h +3 −0 Original line number Diff line number Diff line Loading @@ -1569,6 +1569,9 @@ int ipa2_sys_setup(struct ipa_sys_connect_params *sys_in, int ipa2_sys_teardown(u32 clnt_hdl); int ipa2_sys_update_gsi_hdls(u32 clnt_hdl, unsigned long gsi_ch_hdl, unsigned long gsi_ev_hdl); int ipa2_connect_wdi_pipe(struct ipa_wdi_in_params *in, struct ipa_wdi_out_params *out); int ipa2_disconnect_wdi_pipe(u32 clnt_hdl); Loading
drivers/platform/msm/ipa/ipa_v2/ipa_utils.c +16 −0 Original line number Diff line number Diff line Loading @@ -4861,6 +4861,19 @@ int ipa2_disable_apps_wan_cons_deaggr(uint32_t agg_size, uint32_t agg_count) return res; } static struct ipa_gsi_ep_config *ipa2_get_gsi_ep_info(int ipa_ep_idx) { IPAERR("Not supported for IPA 2.x\n"); return NULL; } static int ipa2_stop_gsi_channel(u32 clnt_hdl) { IPAERR("Not supported for IPA 2.x\n"); return -EFAULT; } int ipa2_bind_api_controller(enum ipa_hw_type ipa_hw_type, struct ipa_api_controller *api_ctrl) { Loading Loading @@ -4926,6 +4939,7 @@ int ipa2_bind_api_controller(enum ipa_hw_type ipa_hw_type, api_ctrl->ipa_free_skb = ipa2_free_skb; api_ctrl->ipa_setup_sys_pipe = ipa2_setup_sys_pipe; api_ctrl->ipa_teardown_sys_pipe = ipa2_teardown_sys_pipe; api_ctrl->ipa_sys_update_gsi_hdls = ipa2_sys_update_gsi_hdls; api_ctrl->ipa_sys_setup = ipa2_sys_setup; api_ctrl->ipa_sys_teardown = ipa2_sys_teardown; api_ctrl->ipa_connect_wdi_pipe = ipa2_connect_wdi_pipe; Loading Loading @@ -5001,6 +5015,8 @@ int ipa2_bind_api_controller(enum ipa_hw_type ipa_hw_type, ipa2_disable_apps_wan_cons_deaggr; api_ctrl->ipa_rm_add_dependency_sync = ipa2_rm_add_dependency_sync; api_ctrl->ipa_get_dma_dev = ipa2_get_dma_dev; api_ctrl->ipa_get_gsi_ep_info = ipa2_get_gsi_ep_info; api_ctrl->ipa_stop_gsi_channel = ipa2_stop_gsi_channel; return 0; } Loading