Loading drivers/platform/msm/ipa/ipa_v3/ipa_dp.c +5 −0 Original line number Diff line number Diff line Loading @@ -236,6 +236,8 @@ static void ipa3_send_nop_desc(struct work_struct *work) return; } sys->len_pending_xfer = 0; /* make sure TAG process is sent before clocks are gated */ ipa3_ctx->tag_process_before_gating = true; } Loading Loading @@ -419,6 +421,9 @@ int ipa3_send(struct ipa3_sys_context *sys, hrtimer_start(&sys->db_timer, time, HRTIMER_MODE_REL); } /* make sure TAG process is sent before clocks are gated */ ipa3_ctx->tag_process_before_gating = true; return 0; failure_dma_map: Loading drivers/platform/msm/ipa/ipa_v3/ipa_pm.c +0 −4 Original line number Diff line number Diff line Loading @@ -414,7 +414,6 @@ static void activate_work_func(struct work_struct *work) complete_all(&client->complete); if (dec_clk) { ipa_set_tag_process_before_gating(true); if (!client->skip_clk_vote) IPA_ACTIVE_CLIENTS_DEC_SPECIAL(client->name); Loading Loading @@ -465,7 +464,6 @@ static void delayed_deferred_deactivate_work_func(struct work_struct *work) client->state = IPA_PM_DEACTIVATED; IPA_PM_DBG_STATE(client->hdl, client->name, client->state); spin_unlock_irqrestore(&client->state_lock, flags); ipa_set_tag_process_before_gating(true); if (!client->skip_clk_vote) IPA_ACTIVE_CLIENTS_DEC_SPECIAL(client->name); Loading Loading @@ -1074,7 +1072,6 @@ int ipa_pm_deactivate_all_deferred(void) IPA_PM_DBG_STATE(client->hdl, client->name, client->state); spin_unlock_irqrestore(&client->state_lock, flags); ipa_set_tag_process_before_gating(true); if (!client->skip_clk_vote) IPA_ACTIVE_CLIENTS_DEC_SPECIAL(client->name); deactivate_client(client->hdl); Loading Loading @@ -1127,7 +1124,6 @@ int ipa_pm_deactivate_sync(u32 hdl) spin_unlock_irqrestore(&client->state_lock, flags); /* else case (Deactivates all Activated cases)*/ ipa_set_tag_process_before_gating(true); if (!client->skip_clk_vote) IPA_ACTIVE_CLIENTS_DEC_SPECIAL(client->name); Loading drivers/platform/msm/ipa/ipa_v3/ipa_utils.c +1 −0 Original line number Diff line number Diff line Loading @@ -3993,6 +3993,7 @@ int ipa3_tag_process(struct ipa3_desc desc[], } kfree(tag_desc); tag_desc = NULL; ipa3_ctx->tag_process_before_gating = false; IPADBG("waiting for TAG response\n"); res = wait_for_completion_timeout(&comp->comp, timeout); Loading Loading
drivers/platform/msm/ipa/ipa_v3/ipa_dp.c +5 −0 Original line number Diff line number Diff line Loading @@ -236,6 +236,8 @@ static void ipa3_send_nop_desc(struct work_struct *work) return; } sys->len_pending_xfer = 0; /* make sure TAG process is sent before clocks are gated */ ipa3_ctx->tag_process_before_gating = true; } Loading Loading @@ -419,6 +421,9 @@ int ipa3_send(struct ipa3_sys_context *sys, hrtimer_start(&sys->db_timer, time, HRTIMER_MODE_REL); } /* make sure TAG process is sent before clocks are gated */ ipa3_ctx->tag_process_before_gating = true; return 0; failure_dma_map: Loading
drivers/platform/msm/ipa/ipa_v3/ipa_pm.c +0 −4 Original line number Diff line number Diff line Loading @@ -414,7 +414,6 @@ static void activate_work_func(struct work_struct *work) complete_all(&client->complete); if (dec_clk) { ipa_set_tag_process_before_gating(true); if (!client->skip_clk_vote) IPA_ACTIVE_CLIENTS_DEC_SPECIAL(client->name); Loading Loading @@ -465,7 +464,6 @@ static void delayed_deferred_deactivate_work_func(struct work_struct *work) client->state = IPA_PM_DEACTIVATED; IPA_PM_DBG_STATE(client->hdl, client->name, client->state); spin_unlock_irqrestore(&client->state_lock, flags); ipa_set_tag_process_before_gating(true); if (!client->skip_clk_vote) IPA_ACTIVE_CLIENTS_DEC_SPECIAL(client->name); Loading Loading @@ -1074,7 +1072,6 @@ int ipa_pm_deactivate_all_deferred(void) IPA_PM_DBG_STATE(client->hdl, client->name, client->state); spin_unlock_irqrestore(&client->state_lock, flags); ipa_set_tag_process_before_gating(true); if (!client->skip_clk_vote) IPA_ACTIVE_CLIENTS_DEC_SPECIAL(client->name); deactivate_client(client->hdl); Loading Loading @@ -1127,7 +1124,6 @@ int ipa_pm_deactivate_sync(u32 hdl) spin_unlock_irqrestore(&client->state_lock, flags); /* else case (Deactivates all Activated cases)*/ ipa_set_tag_process_before_gating(true); if (!client->skip_clk_vote) IPA_ACTIVE_CLIENTS_DEC_SPECIAL(client->name); Loading
drivers/platform/msm/ipa/ipa_v3/ipa_utils.c +1 −0 Original line number Diff line number Diff line Loading @@ -3993,6 +3993,7 @@ int ipa3_tag_process(struct ipa3_desc desc[], } kfree(tag_desc); tag_desc = NULL; ipa3_ctx->tag_process_before_gating = false; IPADBG("waiting for TAG response\n"); res = wait_for_completion_timeout(&comp->comp, timeout); Loading