]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
remoteproc: k3: Refactor .start rproc ops into common driver
authorBeleswar Padhi <b-padhi@ti.com>
Tue, 13 May 2025 05:45:01 +0000 (11:15 +0530)
committerMathieu Poirier <mathieu.poirier@linaro.org>
Tue, 20 May 2025 17:19:11 +0000 (11:19 -0600)
The k3_dsp_rproc_start() function sets the boot vector and releases the
reset on the remote processor. Whereas, the k3_m4_rproc_start() function
only needs to release the reset.

Refactor the k3_m4_rproc_start() into ti_k3_common.c as k3_rproc_start()
and align the DSP and M4 drivers to invoke this common function when
releasing the reset on the remote processor.

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-28-b-padhi@ti.com
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
drivers/remoteproc/ti_k3_common.c
drivers/remoteproc/ti_k3_common.h
drivers/remoteproc/ti_k3_dsp_remoteproc.c
drivers/remoteproc/ti_k3_m4_remoteproc.c

index 235f6fca675a3f5039d0fbaf5607c360d7bb319b..32569c00cfc0c663b367e58f038897da7a94737c 100644 (file)
@@ -267,5 +267,20 @@ int k3_rproc_unprepare(struct rproc *rproc)
 }
 EXPORT_SYMBOL_GPL(k3_rproc_unprepare);
 
+/*
+ * Power up the remote processor.
+ *
+ * This function will be invoked only after the firmware for this rproc
+ * was loaded, parsed successfully, and all of its resource requirements
+ * were met. This callback is invoked only in remoteproc mode.
+ */
+int k3_rproc_start(struct rproc *rproc)
+{
+       struct k3_rproc *kproc = rproc->priv;
+
+       return k3_rproc_release(kproc);
+}
+EXPORT_SYMBOL_GPL(k3_rproc_start);
+
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("TI K3 common Remoteproc code");
index e0909fe0578e823054daeb0e6e77fcb7de4238d8..5237223f050287b2be0a506421ad6b85a90ced9d 100644 (file)
@@ -100,4 +100,5 @@ int k3_rproc_release(struct k3_rproc *kproc);
 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);
 #endif /* REMOTEPROC_TI_K3_COMMON_H */
index 5099d21ce066fb0285238c2437b1b8d971c3fe97..67d46c4a1ba61bd0192bf96bbb5c3037d35710a6 100644 (file)
@@ -50,7 +50,8 @@ static int k3_dsp_rproc_start(struct rproc *rproc)
        if (ret)
                return ret;
 
-       ret = k3_rproc_release(kproc);
+       /* Call the K3 common start function after doing DSP specific stuff */
+       ret = k3_rproc_start(rproc);
        if (ret)
                return ret;
 
index 6e7d78ff78941acfaf8370370119429a7ba62350..af206e2f50cf5154abd44798368c48bea57499a3 100644 (file)
@@ -244,20 +244,6 @@ static void k3_m4_release_tsp(void *data)
        ti_sci_proc_release(tsp);
 }
 
-/*
- * Power up the M4 remote processor.
- *
- * This function will be invoked only after the firmware for this rproc
- * was loaded, parsed successfully, and all of its resource requirements
- * were met. This callback is invoked only in remoteproc mode.
- */
-static int k3_m4_rproc_start(struct rproc *rproc)
-{
-       struct k3_rproc *kproc = rproc->priv;
-
-       return k3_rproc_release(kproc);
-}
-
 /*
  * Stop the M4 remote processor.
  *
@@ -298,7 +284,7 @@ static int k3_m4_rproc_detach(struct rproc *rproc)
 static const struct rproc_ops k3_m4_rproc_ops = {
        .prepare = k3_rproc_prepare,
        .unprepare = k3_rproc_unprepare,
-       .start = k3_m4_rproc_start,
+       .start = k3_rproc_start,
        .stop = k3_m4_rproc_stop,
        .attach = k3_m4_rproc_attach,
        .detach = k3_m4_rproc_detach,