Skip to content

Commit 754d13d

Browse files
3V3RYONEmathieupoirier
authored andcommitted
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 <[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 9352aad commit 754d13d

File tree

1 file changed

+9
-15
lines changed

1 file changed

+9
-15
lines changed

drivers/remoteproc/ti_k3_dsp_remoteproc.c

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,15 @@ static int k3_dsp_rproc_reset(struct k3_rproc *kproc)
3030
struct device *dev = kproc->dev;
3131
int ret;
3232

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

5044
return ret;

0 commit comments

Comments
 (0)