mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-02-17 16:00:38 -05:00
remoteproc: k3: Refactor .stop rproc ops into common driver
The .stop rproc ops implementations in TI K3 DSP and M4 remoteproc drivers put the remote processor into reset. Refactor the implementations into ti_k3_common.c driver as k3_rproc_stop() and register this common function as .stop ops in DSP and M4 drivers. 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-29-b-padhi@ti.com Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
This commit is contained in:
committed by
Mathieu Poirier
parent
f55ab2fa24
commit
bbd0f6490b
@@ -282,5 +282,19 @@ int k3_rproc_start(struct rproc *rproc)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(k3_rproc_start);
|
||||
|
||||
/*
|
||||
* Stop the remote processor.
|
||||
*
|
||||
* This function puts the remote processor into reset, and finishes processing
|
||||
* of any pending messages. This callback is invoked only in remoteproc mode.
|
||||
*/
|
||||
int k3_rproc_stop(struct rproc *rproc)
|
||||
{
|
||||
struct k3_rproc *kproc = rproc->priv;
|
||||
|
||||
return k3_rproc_reset(kproc);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(k3_rproc_stop);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_DESCRIPTION("TI K3 common Remoteproc code");
|
||||
|
||||
@@ -101,4 +101,5 @@ int k3_rproc_request_mbox(struct rproc *rproc);
|
||||
int k3_rproc_prepare(struct rproc *rproc);
|
||||
int k3_rproc_unprepare(struct rproc *rproc);
|
||||
int k3_rproc_start(struct rproc *rproc);
|
||||
int k3_rproc_stop(struct rproc *rproc);
|
||||
#endif /* REMOTEPROC_TI_K3_COMMON_H */
|
||||
|
||||
@@ -58,21 +58,6 @@ static int k3_dsp_rproc_start(struct rproc *rproc)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Stop the DSP remote processor.
|
||||
*
|
||||
* This function puts the DSP processor into reset, and finishes processing
|
||||
* of any pending messages. This callback is invoked only in remoteproc mode.
|
||||
*/
|
||||
static int k3_dsp_rproc_stop(struct rproc *rproc)
|
||||
{
|
||||
struct k3_rproc *kproc = rproc->priv;
|
||||
|
||||
k3_rproc_reset(kproc);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Attach to a running DSP remote processor (IPC-only mode)
|
||||
*
|
||||
@@ -186,7 +171,7 @@ static void *k3_dsp_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool
|
||||
|
||||
static const struct rproc_ops k3_dsp_rproc_ops = {
|
||||
.start = k3_dsp_rproc_start,
|
||||
.stop = k3_dsp_rproc_stop,
|
||||
.stop = k3_rproc_stop,
|
||||
.attach = k3_dsp_rproc_attach,
|
||||
.detach = k3_dsp_rproc_detach,
|
||||
.kick = k3_rproc_kick,
|
||||
|
||||
@@ -244,19 +244,6 @@ static void k3_m4_release_tsp(void *data)
|
||||
ti_sci_proc_release(tsp);
|
||||
}
|
||||
|
||||
/*
|
||||
* Stop the M4 remote processor.
|
||||
*
|
||||
* This function puts the M4 processor into reset, and finishes processing
|
||||
* of any pending messages. This callback is invoked only in remoteproc mode.
|
||||
*/
|
||||
static int k3_m4_rproc_stop(struct rproc *rproc)
|
||||
{
|
||||
struct k3_rproc *kproc = rproc->priv;
|
||||
|
||||
return k3_rproc_reset(kproc);
|
||||
}
|
||||
|
||||
/*
|
||||
* Attach to a running M4 remote processor (IPC-only mode)
|
||||
*
|
||||
@@ -285,7 +272,7 @@ static const struct rproc_ops k3_m4_rproc_ops = {
|
||||
.prepare = k3_rproc_prepare,
|
||||
.unprepare = k3_rproc_unprepare,
|
||||
.start = k3_rproc_start,
|
||||
.stop = k3_m4_rproc_stop,
|
||||
.stop = k3_rproc_stop,
|
||||
.attach = k3_m4_rproc_attach,
|
||||
.detach = k3_m4_rproc_detach,
|
||||
.kick = k3_rproc_kick,
|
||||
|
||||
Reference in New Issue
Block a user