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

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

Merge "msm: ipa: Move q6 pipe reset to AFTER_SHUTDOWN"

parents 6b15c71b 8aff456a
Loading
Loading
Loading
Loading
+21 −9
Original line number Original line Diff line number Diff line
@@ -1774,9 +1774,6 @@ static int ipa3_q6_set_ex_path_dis_agg(void)
*/
*/
int ipa3_q6_cleanup(void)
int ipa3_q6_cleanup(void)
{
{
	int client_idx;
	int res;

	/* If uC has notified the APPS upon a ZIP engine error,
	/* If uC has notified the APPS upon a ZIP engine error,
	 * APPS need to assert (This is a non recoverable error).
	 * APPS need to assert (This is a non recoverable error).
	 */
	 */
@@ -1802,10 +1799,28 @@ int ipa3_q6_cleanup(void)
		BUG();
		BUG();
	}
	}


	ipa3_ctx->q6_proxy_clk_vote_valid = true;

	return 0;
}

/**
* ipa3_q6_pipe_reset() - A cleanup for the Q6 pipes
*                    in IPA HW. This is performed in case of SSR.
*
* Return codes:
* 0: success
* This is a mandatory procedure, in case one of the steps fails, the
* AP needs to restart.
*/
int ipa3_q6_pipe_reset(void)
{
	int client_idx;
	int res;
	/*
	/*
	 * Q6 relies on the AP to reset all Q6 IPA pipes.
	 * Q6 relies on the AP to reset all Q6 IPA pipes.
	 * In case the uC is not loaded, or upon any failure in the pipe reset
	 * In case the uC is not loaded, or upon any failure in the
	 * sequence, we have to assert.
	 * pipe reset sequence, we have to assert.
	 */
	 */
	if (!ipa3_ctx->uc_ctx.uc_loaded) {
	if (!ipa3_ctx->uc_ctx.uc_loaded) {
		IPAERR("uC is not loaded, can't reset Q6 pipes\n");
		IPAERR("uC is not loaded, can't reset Q6 pipes\n");
@@ -1819,9 +1834,6 @@ int ipa3_q6_cleanup(void)
			if (res)
			if (res)
				BUG();
				BUG();
		}
		}

	ipa3_ctx->q6_proxy_clk_vote_valid = true;

	return 0;
	return 0;
}
}


+1 −0
Original line number Original line Diff line number Diff line
@@ -2118,6 +2118,7 @@ int ipa3_tag_process(struct ipa3_desc *desc, int num_descs,
		    unsigned long timeout);
		    unsigned long timeout);


int ipa3_q6_cleanup(void);
int ipa3_q6_cleanup(void);
int ipa3_q6_pipe_reset(void);
int ipa3_init_q6_smem(void);
int ipa3_init_q6_smem(void);


int ipa3_sps_connect_safe(struct sps_pipe *h, struct sps_connect *connect,
int ipa3_sps_connect_safe(struct sps_pipe *h, struct sps_connect *connect,
+7 −0
Original line number Original line Diff line number Diff line
@@ -2155,6 +2155,13 @@ static int ipa3_ssr_notifier_cb(struct notifier_block *this,
			pr_info("IPA BEFORE_SHUTDOWN handling is complete\n");
			pr_info("IPA BEFORE_SHUTDOWN handling is complete\n");
			return NOTIFY_DONE;
			return NOTIFY_DONE;
		}
		}
		if (SUBSYS_AFTER_SHUTDOWN == code) {
			pr_info("IPA received MPSS AFTER_SHUTDOWN\n");
			if (atomic_read(&is_ssr))
				ipa3_q6_pipe_reset();
			pr_info("IPA AFTER_SHUTDOWN handling is complete\n");
			return NOTIFY_DONE;
		}
		if (SUBSYS_AFTER_POWERUP == code) {
		if (SUBSYS_AFTER_POWERUP == code) {
			pr_info("IPA received MPSS AFTER_POWERUP\n");
			pr_info("IPA received MPSS AFTER_POWERUP\n");
			if (!atomic_read(&is_initialized)
			if (!atomic_read(&is_initialized)