|
21 | 21 | #include "ti_sci_proc.h"
|
22 | 22 | #include "ti_k3_common.h"
|
23 | 23 |
|
| 24 | +/* Put the M4 remote processor into reset */ |
| 25 | +static int k3_m4_rproc_reset(struct k3_rproc *kproc) |
| 26 | +{ |
| 27 | + struct device *dev = kproc->dev; |
| 28 | + int ret; |
| 29 | + |
| 30 | + if (kproc->data->uses_lreset) { |
| 31 | + ret = reset_control_assert(kproc->reset); |
| 32 | + if (ret) |
| 33 | + dev_err(dev, "local-reset assert failed, ret = %d\n", ret); |
| 34 | + } else { |
| 35 | + ret = kproc->ti_sci->ops.dev_ops.put_device(kproc->ti_sci, |
| 36 | + kproc->ti_sci_id); |
| 37 | + if (ret) |
| 38 | + dev_err(dev, "module-reset assert failed, ret = %d\n", ret); |
| 39 | + } |
| 40 | + |
| 41 | + return ret; |
| 42 | +} |
| 43 | + |
24 | 44 | static int k3_m4_rproc_ping_mbox(struct k3_rproc *kproc)
|
25 | 45 | {
|
26 | 46 | struct device *dev = kproc->dev;
|
@@ -65,11 +85,9 @@ static int k3_m4_rproc_prepare(struct rproc *rproc)
|
65 | 85 | * Ensure the local reset is asserted so the core doesn't
|
66 | 86 | * execute bogus code when the module reset is released.
|
67 | 87 | */
|
68 |
| - ret = reset_control_assert(kproc->reset); |
69 |
| - if (ret) { |
70 |
| - dev_err(dev, "could not assert local reset\n"); |
| 88 | + ret = k3_m4_rproc_reset(kproc); |
| 89 | + if (ret) |
71 | 90 | return ret;
|
72 |
| - } |
73 | 91 |
|
74 | 92 | ret = reset_control_status(kproc->reset);
|
75 | 93 | if (ret <= 0) {
|
@@ -374,16 +392,8 @@ static int k3_m4_rproc_start(struct rproc *rproc)
|
374 | 392 | static int k3_m4_rproc_stop(struct rproc *rproc)
|
375 | 393 | {
|
376 | 394 | struct k3_rproc *kproc = rproc->priv;
|
377 |
| - struct device *dev = kproc->dev; |
378 |
| - int ret; |
379 | 395 |
|
380 |
| - ret = reset_control_assert(kproc->reset); |
381 |
| - if (ret) { |
382 |
| - dev_err(dev, "local-reset assert failed, ret = %d\n", ret); |
383 |
| - return ret; |
384 |
| - } |
385 |
| - |
386 |
| - return 0; |
| 396 | + return k3_m4_rproc_reset(kproc); |
387 | 397 | }
|
388 | 398 |
|
389 | 399 | /*
|
|
0 commit comments