Linux-remoteproc Archive mirror
 help / color / mirror / Atom feed
From: Beleswar Padhi <b-padhi@ti.com>
To: <andersson@kernel.org>, <mathieu.poirier@linaro.org>
Cc: <afd@ti.com>, <hnagalla@ti.com>, <u-kumar1@ti.com>,
	<p.zabel@pengutronix.de>, <jan.kiszka@siemens.com>,
	<christophe.jaillet@wanadoo.fr>, <jkangas@redhat.com>,
	<eballetbo@redhat.com>, <b-padhi@ti.com>,
	<linux-remoteproc@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>
Subject: [PATCH v8 07/20] remoteproc: k3: Refactor rproc_release() implementation into common driver
Date: Fri, 3 Jan 2025 15:42:18 +0530	[thread overview]
Message-ID: <20250103101231.1508151-8-b-padhi@ti.com> (raw)
In-Reply-To: <20250103101231.1508151-1-b-padhi@ti.com>

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 the local
reset for devices that support it and only the global reset for those
that do not.

Further, refactor the above function into the ti_k3_common.c driver as
k3_rproc_release() and use it throughout DSP and M4 drivers for
releasing the reset from the remote processor.

Signed-off-by: Beleswar Padhi <b-padhi@ti.com>
---
 drivers/remoteproc/ti_k3_common.c         | 27 ++++++++++++++++++++
 drivers/remoteproc/ti_k3_common.h         |  1 +
 drivers/remoteproc/ti_k3_dsp_remoteproc.c | 30 +----------------------
 drivers/remoteproc/ti_k3_m4_remoteproc.c  |  8 +++---
 4 files changed, 32 insertions(+), 34 deletions(-)

diff --git a/drivers/remoteproc/ti_k3_common.c b/drivers/remoteproc/ti_k3_common.c
index 8f4cc52c1332..cec664819a1d 100644
--- a/drivers/remoteproc/ti_k3_common.c
+++ b/drivers/remoteproc/ti_k3_common.c
@@ -142,5 +142,32 @@ int k3_rproc_reset(struct k3_rproc *kproc)
 }
 EXPORT_SYMBOL_GPL(k3_rproc_reset);
 
+/* Release the remote processor from reset */
+int k3_rproc_release(struct k3_rproc *kproc)
+{
+	struct device *dev = kproc->dev;
+	int ret;
+
+	if (kproc->data->uses_lreset) {
+		ret = reset_control_deassert(kproc->reset);
+		if (ret) {
+			dev_err(dev, "local-reset deassert failed, (%pe)\n", ERR_PTR(ret));
+			if (kproc->ti_sci->ops.dev_ops.put_device(kproc->ti_sci,
+								  kproc->ti_sci_id))
+				dev_warn(dev, "module-reset assert back failed\n");
+		}
+
+		return ret;
+	}
+
+	ret = kproc->ti_sci->ops.dev_ops.get_device(kproc->ti_sci,
+						    kproc->ti_sci_id);
+	if (ret)
+		dev_err(dev, "module-reset deassert failed (%pe)\n", ERR_PTR(ret));
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(k3_rproc_release);
+
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("TI K3 common Remoteproc code");
diff --git a/drivers/remoteproc/ti_k3_common.h b/drivers/remoteproc/ti_k3_common.h
index 52f784ada496..37516765e505 100644
--- a/drivers/remoteproc/ti_k3_common.h
+++ b/drivers/remoteproc/ti_k3_common.h
@@ -91,4 +91,5 @@ struct k3_rproc {
 void k3_rproc_mbox_callback(struct mbox_client *client, void *data);
 void k3_rproc_kick(struct rproc *rproc, int vqid);
 int k3_rproc_reset(struct k3_rproc *kproc);
+int k3_rproc_release(struct k3_rproc *kproc);
 #endif /* REMOTEPROC_TI_K3_COMMON_H */
diff --git a/drivers/remoteproc/ti_k3_dsp_remoteproc.c b/drivers/remoteproc/ti_k3_dsp_remoteproc.c
index 045b1e81d06c..64affbe0ba29 100644
--- a/drivers/remoteproc/ti_k3_dsp_remoteproc.c
+++ b/drivers/remoteproc/ti_k3_dsp_remoteproc.c
@@ -24,34 +24,6 @@
 
 #define KEYSTONE_RPROC_LOCAL_ADDRESS_MASK	(SZ_16M - 1)
 
-/* Release the DSP processor from reset */
-static int k3_dsp_rproc_release(struct k3_rproc *kproc)
-{
-	struct device *dev = kproc->dev;
-	int ret;
-
-	if (kproc->data->uses_lreset)
-		goto lreset;
-
-	ret = kproc->ti_sci->ops.dev_ops.get_device(kproc->ti_sci,
-						    kproc->ti_sci_id);
-	if (ret) {
-		dev_err(dev, "module-reset deassert failed (%pe)\n", ERR_PTR(ret));
-		return ret;
-	}
-
-lreset:
-	ret = reset_control_deassert(kproc->reset);
-	if (ret) {
-		dev_err(dev, "local-reset deassert failed, (%pe)\n", ERR_PTR(ret));
-		if (kproc->ti_sci->ops.dev_ops.put_device(kproc->ti_sci,
-							  kproc->ti_sci_id))
-			dev_warn(dev, "module-reset assert back failed\n");
-	}
-
-	return ret;
-}
-
 static int k3_dsp_rproc_request_mbox(struct rproc *rproc)
 {
 	struct k3_rproc *kproc = rproc->priv;
@@ -160,7 +132,7 @@ static int k3_dsp_rproc_start(struct rproc *rproc)
 	if (ret)
 		return ret;
 
-	ret = k3_dsp_rproc_release(kproc);
+	ret = k3_rproc_release(kproc);
 	if (ret)
 		return ret;
 
diff --git a/drivers/remoteproc/ti_k3_m4_remoteproc.c b/drivers/remoteproc/ti_k3_m4_remoteproc.c
index d31cf9babf1d..c24085411e1c 100644
--- a/drivers/remoteproc/ti_k3_m4_remoteproc.c
+++ b/drivers/remoteproc/ti_k3_m4_remoteproc.c
@@ -354,13 +354,11 @@ static int k3_m4_rproc_start(struct rproc *rproc)
 	if (ret)
 		return ret;
 
-	ret = reset_control_deassert(kproc->reset);
-	if (ret) {
+	ret = k3_rproc_release(kproc);
+	if (ret)
 		dev_err(dev, "local-reset deassert failed, ret = %d\n", ret);
-		return ret;
-	}
 
-	return 0;
+	return ret;
 }
 
 /*
-- 
2.34.1


  parent reply	other threads:[~2025-01-03 10:13 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-03 10:12 [PATCH v8 00/20] Refactor TI K3 DSP and M4 Drivers Beleswar Padhi
2025-01-03 10:12 ` [PATCH v8 01/20] remoteproc: k3-m4: Prevent Mailbox level IPC with detached core Beleswar Padhi
2025-01-08  8:49   ` Beleswar Prasad Padhi
2025-01-03 10:12 ` [PATCH v8 02/20] remoteproc: k3: Refactor shared data structures Beleswar Padhi
2025-01-03 10:12 ` [PATCH v8 03/20] remoteproc: k3: Refactor mailbox rx_callback functions into common driver Beleswar Padhi
2025-01-03 10:12 ` [PATCH v8 04/20] remoteproc: k3: Refactor .kick rproc ops " Beleswar Padhi
2025-01-03 10:12 ` [PATCH v8 05/20] remoteproc: k3-m4: Use k3_rproc_mem_data structure for memory info Beleswar Padhi
2025-01-03 10:12 ` [PATCH v8 06/20] remoteproc: k3: Refactor rproc_reset() implementation into common driver Beleswar Padhi
2025-01-03 10:12 ` Beleswar Padhi [this message]
2025-01-03 10:12 ` [PATCH v8 08/20] remoteproc: k3: Refactor rproc_request_mbox() implementations " Beleswar Padhi
2025-01-03 10:12 ` [PATCH v8 09/20] remoteproc: k3: Refactor .prepare rproc ops " Beleswar Padhi
2025-01-03 10:12 ` [PATCH v8 10/20] remoteproc: k3: Refactor .unprepare " Beleswar Padhi
2025-01-03 10:12 ` [PATCH v8 11/20] remoteproc: k3: Refactor .start " Beleswar Padhi
2025-01-03 10:12 ` [PATCH v8 12/20] remoteproc: k3: Refactor .stop " Beleswar Padhi
2025-01-03 10:12 ` [PATCH v8 13/20] remoteproc: k3: Refactor .attach " Beleswar Padhi
2025-01-03 10:12 ` [PATCH v8 14/20] remoteproc: k3: Refactor .detach " Beleswar Padhi
2025-01-03 10:12 ` [PATCH v8 15/20] remoteproc: k3: Refactor .get_loaded_rsc_table " Beleswar Padhi
2025-01-03 10:12 ` [PATCH v8 16/20] remoteproc: k3: Refactor .da_to_va rproc " Beleswar Padhi
2025-01-03 10:12 ` [PATCH v8 17/20] remoteproc: k3: Refactor of_get_memories() functions " Beleswar Padhi
2025-01-03 10:12 ` [PATCH v8 18/20] remoteproc: k3: Refactor mem_release() " Beleswar Padhi
2025-01-03 10:12 ` [PATCH v8 19/20] remoteproc: k3: Refactor reserved_mem_init() " Beleswar Padhi
2025-01-03 10:12 ` [PATCH v8 20/20] remoteproc: k3: Refactor release_tsp() " Beleswar Padhi
2025-01-03 10:50 ` [PATCH v8 00/20] Refactor TI K3 DSP and M4 Drivers Beleswar Prasad Padhi
2025-01-08 15:03 ` Andrew Davis
2025-01-10 14:56   ` Beleswar Prasad Padhi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250103101231.1508151-8-b-padhi@ti.com \
    --to=b-padhi@ti.com \
    --cc=afd@ti.com \
    --cc=andersson@kernel.org \
    --cc=christophe.jaillet@wanadoo.fr \
    --cc=eballetbo@redhat.com \
    --cc=hnagalla@ti.com \
    --cc=jan.kiszka@siemens.com \
    --cc=jkangas@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-remoteproc@vger.kernel.org \
    --cc=mathieu.poirier@linaro.org \
    --cc=p.zabel@pengutronix.de \
    --cc=u-kumar1@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).