diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_mhi_proxy.c b/drivers/platform/msm/ipa/ipa_v3/ipa_mhi_proxy.c index 6cd91a2c8c30..b768750ac515 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_mhi_proxy.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_mhi_proxy.c @@ -610,6 +610,17 @@ struct ipa_mhi_clk_vote_resp_msg_v01 resp->resp.error = IPA_QMI_ERR_INCOMPATIBLE_STATE_V01; mutex_lock(&imp_ctx->mutex); + + /* + * returning success for clock unvote request - since it could + * be 5G modem SSR scenario where clocks are already OFF. + */ + if (!vote && imp_ctx->state == IMP_INVALID) { + IMP_DBG("Unvote in Invalid state, no op for clock unvote\n"); + mutex_unlock(&imp_ctx->mutex); + return resp; + } + if (imp_ctx->state != IMP_STARTED) { IMP_ERR("unexpected vote when in state %d\n", imp_ctx->state); mutex_unlock(&imp_ctx->mutex); diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c b/drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c index 9617b6b369c5..bec091db12b5 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c @@ -388,7 +388,7 @@ static void ipa3_handle_mhi_vote_req(struct qmi_handle *qmi_handle, } else { resp = imp_handle_vote_req(vote_req->mhi_vote); if (!resp) { - IPAWANERR("imp handle allocate channel req fails"); + IPAWANERR("imp handle vote req fails\n"); return; } IPAWANDBG("start sending QMI_IPA_MHI_CLK_VOTE_RESP_V01\n");