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

Commit 9f135fa1 authored by Sibi Sankar's avatar Sibi Sankar Committed by Bjorn Andersson
Browse files

remoteproc: q6v5: Introduce reset assert/deassert helper functions



Adding reset assert/deassert helper functions to handle SoC
specific reset sequences. This wil be used by SDM845 to assert and
deassert ALT_RESET and MSS_RESET signals.

Signed-off-by: default avatarSibi Sankar <sibis@codeaurora.org>
Signed-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
parent fb22022f
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -337,6 +337,16 @@ static int q6v5_load(struct rproc *rproc, const struct firmware *fw)
	return 0;
}

static int q6v5_reset_assert(struct q6v5 *qproc)
{
	return reset_control_assert(qproc->mss_restart);
}

static int q6v5_reset_deassert(struct q6v5 *qproc)
{
	return reset_control_deassert(qproc->mss_restart);
}

static int q6v5_rmb_pbl_wait(struct q6v5 *qproc, int ms)
{
	unsigned long timeout;
@@ -755,7 +765,7 @@ static int q6v5_start(struct rproc *rproc)
		dev_err(qproc->dev, "failed to enable supplies\n");
		goto disable_proxy_clk;
	}
	ret = reset_control_deassert(qproc->mss_restart);
	ret = q6v5_reset_deassert(qproc);
	if (ret) {
		dev_err(qproc->dev, "failed to deassert mss restart\n");
		goto disable_vdd;
@@ -843,7 +853,7 @@ static int q6v5_start(struct rproc *rproc)
			 qproc->active_clk_count);

assert_reset:
	reset_control_assert(qproc->mss_restart);
	q6v5_reset_assert(qproc);
disable_vdd:
	q6v5_regulator_disable(qproc, qproc->active_regs,
			       qproc->active_reg_count);
@@ -896,7 +906,7 @@ static int q6v5_stop(struct rproc *rproc)
				      qproc->mpss_phys, qproc->mpss_size);
	WARN_ON(ret);

	reset_control_assert(qproc->mss_restart);
	q6v5_reset_assert(qproc);

	disable_irq(qproc->handover_irq);