mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-11 11:53:47 -04:00
remoteproc: k3-dsp: Correct Reset logic for devices without lresets
The k3_dsp_rproc_reset() function erroneously asserts the local reset even for devices which do not support it. Even though it results in a no-operation, Update the logic to explicitly assert the local reset for devices that support it and only the global reset for those that do not. Signed-off-by: Beleswar Padhi <b-padhi@ti.com> Tested-by: Judith Mendez <jm@ti.com> Reviewed-by: Andrew Davis <afd@ti.com> Link: https://lore.kernel.org/r/20250513054510.3439842-16-b-padhi@ti.com Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
This commit is contained in:
committed by
Mathieu Poirier
parent
9352aadafe
commit
754d13dfe2
@@ -30,21 +30,15 @@ static int k3_dsp_rproc_reset(struct k3_rproc *kproc)
|
||||
struct device *dev = kproc->dev;
|
||||
int ret;
|
||||
|
||||
ret = reset_control_assert(kproc->reset);
|
||||
if (ret) {
|
||||
dev_err(dev, "local-reset assert failed (%pe)\n", ERR_PTR(ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (kproc->data->uses_lreset)
|
||||
return ret;
|
||||
|
||||
ret = kproc->ti_sci->ops.dev_ops.put_device(kproc->ti_sci,
|
||||
kproc->ti_sci_id);
|
||||
if (ret) {
|
||||
dev_err(dev, "module-reset assert failed (%pe)\n", ERR_PTR(ret));
|
||||
if (reset_control_deassert(kproc->reset))
|
||||
dev_warn(dev, "local-reset deassert back failed\n");
|
||||
if (kproc->data->uses_lreset) {
|
||||
ret = reset_control_assert(kproc->reset);
|
||||
if (ret)
|
||||
dev_err(dev, "local-reset assert failed (%pe)\n", ERR_PTR(ret));
|
||||
} else {
|
||||
ret = kproc->ti_sci->ops.dev_ops.put_device(kproc->ti_sci,
|
||||
kproc->ti_sci_id);
|
||||
if (ret)
|
||||
dev_err(dev, "module-reset assert failed (%pe)\n", ERR_PTR(ret));
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user