summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSkylar Chang <chiaweic@codeaurora.org>2016-11-14 14:39:48 -0800
committerSkylar Chang <chiaweic@codeaurora.org>2016-11-14 14:53:08 -0800
commitdd650a2835441296e93eb08a3eb352ba985bf887 (patch)
treef40d45e25f9922a61fc333fa37253c29744c8894
parent24d0c1f91eb2850889cb27ef6fdcadc0c8ff2834 (diff)
msm: ipa3: retry on IPA_HW_CONS_DISABLE_CMD_GSI_STOP_FAILURE
When IPA uC fails to stop a GSI channel with GSI STOP_IN_PROG state, apps needs to sleep for 1ms and retry. Change-Id: I9e6022ab996861d3d78721aadea9e6116ded4e0f CRs-Fixed: 1087474 Acked-by: Ady Abraham <adya@qti.qualcomm.com> Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
-rw-r--r--drivers/platform/msm/ipa/ipa_v3/ipa_uc.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_uc.c b/drivers/platform/msm/ipa/ipa_v3/ipa_uc.c
index cb47773e8a39..21ce28204069 100644
--- a/drivers/platform/msm/ipa/ipa_v3/ipa_uc.c
+++ b/drivers/platform/msm/ipa/ipa_v3/ipa_uc.c
@@ -585,7 +585,9 @@ send_cmd:
if (ipa3_ctx->uc_ctx.uc_status != expected_status) {
if (ipa3_ctx->uc_ctx.uc_status ==
- IPA_HW_PROD_DISABLE_CMD_GSI_STOP_FAILURE) {
+ IPA_HW_PROD_DISABLE_CMD_GSI_STOP_FAILURE ||
+ ipa3_ctx->uc_ctx.uc_status ==
+ IPA_HW_CONS_DISABLE_CMD_GSI_STOP_FAILURE) {
retries++;
if (retries == IPA_GSI_CHANNEL_STOP_MAX_RETRY) {
IPAERR("Failed after %d tries\n", retries);
@@ -594,7 +596,9 @@ send_cmd:
return -EFAULT;
}
IPA3_UC_UNLOCK(flags);
- ipa3_inject_dma_task_for_gsi();
+ if (ipa3_ctx->uc_ctx.uc_status ==
+ IPA_HW_PROD_DISABLE_CMD_GSI_STOP_FAILURE)
+ ipa3_inject_dma_task_for_gsi();
/* sleep for short period to flush IPA */
usleep_range(IPA_GSI_CHANNEL_STOP_SLEEP_MIN_USEC,
IPA_GSI_CHANNEL_STOP_SLEEP_MAX_USEC);