soc: ti: omap-prm: poll for reset complete during de-assert
Poll for reset completion status during de-assertion of reset, otherwise the IP in question might be accessed before it has left reset properly. Signed-off-by: Tero Kristo <t-kristo@ti.com> Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de> Reviewed-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
This commit is contained in:
Родитель
3e99cb214f
Коммит
c5117a78dd
|
@ -152,6 +152,18 @@ static int omap_reset_deassert(struct reset_controller_dev *rcdev,
|
||||||
writel_relaxed(v, reset->prm->base + reset->prm->data->rstctrl);
|
writel_relaxed(v, reset->prm->base + reset->prm->data->rstctrl);
|
||||||
spin_unlock_irqrestore(&reset->lock, flags);
|
spin_unlock_irqrestore(&reset->lock, flags);
|
||||||
|
|
||||||
|
if (!has_rstst)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/* wait for the status to be set */
|
||||||
|
ret = readl_relaxed_poll_timeout(reset->prm->base +
|
||||||
|
reset->prm->data->rstst,
|
||||||
|
v, v & BIT(st_bit), 1,
|
||||||
|
OMAP_RESET_MAX_WAIT);
|
||||||
|
if (ret)
|
||||||
|
pr_err("%s: timedout waiting for %s:%lu\n", __func__,
|
||||||
|
reset->prm->data->name, id);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче