Loading arch/arm64/boot/dts/qcom/kona.dtsi +7 −0 Original line number Diff line number Diff line Loading @@ -2234,6 +2234,13 @@ memory-region = <&pil_ipa_fw_mem>; }; qcom,ipa-mpm { compatible = "qcom,ipa-mpm"; qcom,mhi-chdb-base = <0x64300300>; qcom,mhi-erdb-base = <0x64300700>; qcom,iova-mapping = <0x10000000 0x1FFFFFFF>; }; ipa_hw: qcom,ipa@1e00000 { compatible = "qcom,ipa"; mboxes = <&qmp_aop 0>; Loading drivers/platform/msm/ipa/ipa_clients/ipa_usb.c +20 −0 Original line number Diff line number Diff line Loading @@ -2435,6 +2435,16 @@ int ipa_usb_xdci_disconnect(u32 ul_clnt_hdl, u32 dl_clnt_hdl, } else spin_unlock_irqrestore(&ipa3_usb_ctx->state_lock, flags); if (teth_prot == IPA_USB_RMNET) { IPA_USB_DBG("USB suspend resetting dma mode\n"); result = ipa_mpm_reset_dma_mode(IPA_CLIENT_USB_PROD, IPA_CLIENT_MHI_PRIME_RMNET_CONS); if (result) { IPA_USB_ERR("failed to reset dma mode\n"); goto bad_params; } } result = ipa_usb_xdci_dismiss_channels(ul_clnt_hdl, dl_clnt_hdl, teth_prot); if (result) Loading Loading @@ -2709,6 +2719,16 @@ int ipa_usb_xdci_suspend(u32 ul_clnt_hdl, u32 dl_clnt_hdl, goto bad_params; } if (teth_prot == IPA_USB_RMNET) { IPA_USB_DBG("USB suspend resetting dma mode\n"); result = ipa_mpm_reset_dma_mode(IPA_CLIENT_USB_PROD, IPA_CLIENT_MHI_PRIME_RMNET_CONS); if (result) { IPA_USB_ERR("failed to reset dma mode\n"); goto bad_params; } } /* Stop UL channel & suspend DL/DPL EP */ result = ipa3_xdci_suspend(ul_clnt_hdl, dl_clnt_hdl, true, Loading drivers/platform/msm/ipa/ipa_v3/ipa_i.h +8 −0 Original line number Diff line number Diff line Loading @@ -2751,6 +2751,8 @@ int ipa_mpm_mhip_xdci_pipe_disable(enum ipa_usb_teth_prot xdci_teth_prot); int ipa_mpm_notify_wan_state(void); int ipa_mpm_mhip_ul_data_stop(enum ipa_usb_teth_prot xdci_teth_prot); int ipa3_is_mhip_offload_enabled(void); int ipa_mpm_reset_dma_mode(enum ipa_client_type src_pipe, enum ipa_client_type dst_pipe); #else static inline int ipa_mpm_mhip_xdci_pipe_enable( enum ipa_usb_teth_prot prot) Loading @@ -2775,6 +2777,12 @@ static inline int ipa3_is_mhip_offload_enabled(void) { return 0; } static inline int ipa_mpm_reset_dma_mode(enum ipa_client_type src_pipe, enum ipa_client_type dst_pipe) { return 0; } #endif /* CONFIG_IPA3_MHI_PRIME_MANAGER */ #endif /* _IPA3_I_H_ */ drivers/platform/msm/ipa/ipa_v3/ipa_mpm.c +0 −3 Original line number Diff line number Diff line Loading @@ -2154,9 +2154,6 @@ int ipa_mpm_mhip_xdci_pipe_disable(enum ipa_usb_teth_prot xdci_teth_prot) switch (mhip_client) { case IPA_MPM_MHIP_USB_RMNET: ipa_mpm_reset_dma_mode(IPA_CLIENT_USB_PROD, IPA_CLIENT_MHI_PRIME_RMNET_CONS); break; case IPA_MPM_MHIP_TETH: case IPA_MPM_MHIP_USB_DPL: IPA_MPM_DBG("Teth Disconnecting for prot %d\n", mhip_client); Loading Loading
arch/arm64/boot/dts/qcom/kona.dtsi +7 −0 Original line number Diff line number Diff line Loading @@ -2234,6 +2234,13 @@ memory-region = <&pil_ipa_fw_mem>; }; qcom,ipa-mpm { compatible = "qcom,ipa-mpm"; qcom,mhi-chdb-base = <0x64300300>; qcom,mhi-erdb-base = <0x64300700>; qcom,iova-mapping = <0x10000000 0x1FFFFFFF>; }; ipa_hw: qcom,ipa@1e00000 { compatible = "qcom,ipa"; mboxes = <&qmp_aop 0>; Loading
drivers/platform/msm/ipa/ipa_clients/ipa_usb.c +20 −0 Original line number Diff line number Diff line Loading @@ -2435,6 +2435,16 @@ int ipa_usb_xdci_disconnect(u32 ul_clnt_hdl, u32 dl_clnt_hdl, } else spin_unlock_irqrestore(&ipa3_usb_ctx->state_lock, flags); if (teth_prot == IPA_USB_RMNET) { IPA_USB_DBG("USB suspend resetting dma mode\n"); result = ipa_mpm_reset_dma_mode(IPA_CLIENT_USB_PROD, IPA_CLIENT_MHI_PRIME_RMNET_CONS); if (result) { IPA_USB_ERR("failed to reset dma mode\n"); goto bad_params; } } result = ipa_usb_xdci_dismiss_channels(ul_clnt_hdl, dl_clnt_hdl, teth_prot); if (result) Loading Loading @@ -2709,6 +2719,16 @@ int ipa_usb_xdci_suspend(u32 ul_clnt_hdl, u32 dl_clnt_hdl, goto bad_params; } if (teth_prot == IPA_USB_RMNET) { IPA_USB_DBG("USB suspend resetting dma mode\n"); result = ipa_mpm_reset_dma_mode(IPA_CLIENT_USB_PROD, IPA_CLIENT_MHI_PRIME_RMNET_CONS); if (result) { IPA_USB_ERR("failed to reset dma mode\n"); goto bad_params; } } /* Stop UL channel & suspend DL/DPL EP */ result = ipa3_xdci_suspend(ul_clnt_hdl, dl_clnt_hdl, true, Loading
drivers/platform/msm/ipa/ipa_v3/ipa_i.h +8 −0 Original line number Diff line number Diff line Loading @@ -2751,6 +2751,8 @@ int ipa_mpm_mhip_xdci_pipe_disable(enum ipa_usb_teth_prot xdci_teth_prot); int ipa_mpm_notify_wan_state(void); int ipa_mpm_mhip_ul_data_stop(enum ipa_usb_teth_prot xdci_teth_prot); int ipa3_is_mhip_offload_enabled(void); int ipa_mpm_reset_dma_mode(enum ipa_client_type src_pipe, enum ipa_client_type dst_pipe); #else static inline int ipa_mpm_mhip_xdci_pipe_enable( enum ipa_usb_teth_prot prot) Loading @@ -2775,6 +2777,12 @@ static inline int ipa3_is_mhip_offload_enabled(void) { return 0; } static inline int ipa_mpm_reset_dma_mode(enum ipa_client_type src_pipe, enum ipa_client_type dst_pipe) { return 0; } #endif /* CONFIG_IPA3_MHI_PRIME_MANAGER */ #endif /* _IPA3_I_H_ */
drivers/platform/msm/ipa/ipa_v3/ipa_mpm.c +0 −3 Original line number Diff line number Diff line Loading @@ -2154,9 +2154,6 @@ int ipa_mpm_mhip_xdci_pipe_disable(enum ipa_usb_teth_prot xdci_teth_prot) switch (mhip_client) { case IPA_MPM_MHIP_USB_RMNET: ipa_mpm_reset_dma_mode(IPA_CLIENT_USB_PROD, IPA_CLIENT_MHI_PRIME_RMNET_CONS); break; case IPA_MPM_MHIP_TETH: case IPA_MPM_MHIP_USB_DPL: IPA_MPM_DBG("Teth Disconnecting for prot %d\n", mhip_client); Loading