Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1d7ee306 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: ipa4: set_tag_process_before_gating fix"

parents cad4428e d2ca499c
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -241,6 +241,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;

}

@@ -425,6 +427,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:
+1 −5
Original line number Diff line number Diff line
/* Copyright (c) 2018, The Linux Foundation. All rights reserved.
/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -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);

@@ -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);

@@ -1078,7 +1076,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);
@@ -1131,7 +1128,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);

+1 −0
Original line number Diff line number Diff line
@@ -4200,6 +4200,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);