Skip to content

Commit 334a841

Browse files
3V3RYONEmathieupoirier
authored andcommitted
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 <[email protected]> Tested-by: Judith Mendez <[email protected]> Reviewed-by: Andrew Davis <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mathieu Poirier <[email protected]>
1 parent af5af3a commit 334a841

File tree

1 file changed

+13
-17
lines changed

1 file changed

+13
-17
lines changed

drivers/remoteproc/ti_k3_dsp_remoteproc.c

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,23 +30,19 @@ static int k3_dsp_rproc_release(struct k3_rproc *kproc)
3030
struct device *dev = kproc->dev;
3131
int ret;
3232

33-
if (kproc->data->uses_lreset)
34-
goto lreset;
35-
36-
ret = kproc->ti_sci->ops.dev_ops.get_device(kproc->ti_sci,
37-
kproc->ti_sci_id);
38-
if (ret) {
39-
dev_err(dev, "module-reset deassert failed (%pe)\n", ERR_PTR(ret));
40-
return ret;
41-
}
42-
43-
lreset:
44-
ret = reset_control_deassert(kproc->reset);
45-
if (ret) {
46-
dev_err(dev, "local-reset deassert failed, (%pe)\n", ERR_PTR(ret));
47-
if (kproc->ti_sci->ops.dev_ops.put_device(kproc->ti_sci,
48-
kproc->ti_sci_id))
49-
dev_warn(dev, "module-reset assert back failed\n");
33+
if (kproc->data->uses_lreset) {
34+
ret = reset_control_deassert(kproc->reset);
35+
if (ret) {
36+
dev_err(dev, "local-reset deassert failed, (%pe)\n", ERR_PTR(ret));
37+
if (kproc->ti_sci->ops.dev_ops.put_device(kproc->ti_sci,
38+
kproc->ti_sci_id))
39+
dev_warn(dev, "module-reset assert back failed\n");
40+
}
41+
} else {
42+
ret = kproc->ti_sci->ops.dev_ops.get_device(kproc->ti_sci,
43+
kproc->ti_sci_id);
44+
if (ret)
45+
dev_err(dev, "module-reset deassert failed (%pe)\n", ERR_PTR(ret));
5046
}
5147

5248
return ret;

0 commit comments

Comments
 (0)