mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-11 12:44:49 -04:00
remoteproc: k3-dsp: Correct Reset deassert logic for devices w/o lresets
The k3_dsp_rproc_release() function erroneously deasserts the local reset even for devices which do not support it. Even though it results in a no-operation, Update the logic to explicitly deassert only the global reset for devices that do not have a local reset. 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-19-b-padhi@ti.com Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
This commit is contained in:
committed by
Mathieu Poirier
parent
af5af3a417
commit
334a841e33
@@ -30,23 +30,19 @@ static int k3_dsp_rproc_release(struct k3_rproc *kproc)
|
||||
struct device *dev = kproc->dev;
|
||||
int ret;
|
||||
|
||||
if (kproc->data->uses_lreset)
|
||||
goto lreset;
|
||||
|
||||
ret = kproc->ti_sci->ops.dev_ops.get_device(kproc->ti_sci,
|
||||
kproc->ti_sci_id);
|
||||
if (ret) {
|
||||
dev_err(dev, "module-reset deassert failed (%pe)\n", ERR_PTR(ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
lreset:
|
||||
ret = reset_control_deassert(kproc->reset);
|
||||
if (ret) {
|
||||
dev_err(dev, "local-reset deassert failed, (%pe)\n", ERR_PTR(ret));
|
||||
if (kproc->ti_sci->ops.dev_ops.put_device(kproc->ti_sci,
|
||||
kproc->ti_sci_id))
|
||||
dev_warn(dev, "module-reset assert back failed\n");
|
||||
if (kproc->data->uses_lreset) {
|
||||
ret = reset_control_deassert(kproc->reset);
|
||||
if (ret) {
|
||||
dev_err(dev, "local-reset deassert failed, (%pe)\n", ERR_PTR(ret));
|
||||
if (kproc->ti_sci->ops.dev_ops.put_device(kproc->ti_sci,
|
||||
kproc->ti_sci_id))
|
||||
dev_warn(dev, "module-reset assert back failed\n");
|
||||
}
|
||||
} else {
|
||||
ret = kproc->ti_sci->ops.dev_ops.get_device(kproc->ti_sci,
|
||||
kproc->ti_sci_id);
|
||||
if (ret)
|
||||
dev_err(dev, "module-reset deassert failed (%pe)\n", ERR_PTR(ret));
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user