diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_mpm.c b/drivers/platform/msm/ipa/ipa_v3/ipa_mpm.c index aa5903857cf6..b3d4bb41536a 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_mpm.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_mpm.c @@ -2393,16 +2393,24 @@ static int ipa_mpm_mhi_probe_cb(struct mhi_device *mhi_dev, } if (ul_prod != IPA_CLIENT_MAX) { /* No teth started yet, disable UL channel */ + ipa_ep_idx = ipa3_get_ep_mapping(ul_prod); + if (ipa_ep_idx == IPA_EP_NOT_ALLOCATED) { + IPA_MPM_ERR("fail to alloc EP.\n"); + goto fail_stop_channel; + } ret = ipa3_stop_gsi_channel(ipa_ep_idx); if (ret) { IPA_MPM_ERR("MHIP Stop channel err = %d\n", ret); goto fail_stop_channel; } + ipa_mpm_change_gsi_state(probe_id, + IPA_MPM_MHIP_CHAN_UL, + GSI_STOPPED); } if (is_acted) - ipa_mpm_vote_unvote_pcie_clk(CLK_OFF, probe_id, true, - &is_acted); + ipa_mpm_vote_unvote_pcie_clk(CLK_OFF, probe_id, + true, &is_acted); break; case IPA_MPM_TETH_INPROGRESS: case IPA_MPM_TETH_CONNECTED: