Thread (19 messages) 19 messages, 5 authors, 2025-09-16

Re: [EXT] Re: [PATCH v5 3/4] media: imx8mq-mipi-csi2: Explicitly release reset

From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Date: 2025-09-02 08:40:14
Also in: imx, linux-arm-kernel, linux-media, lkml

On Tue, Sep 02, 2025 at 02:21:58AM +0000, G.N. Zhou wrote:
On Monday, September 1, 2025 11:37 PM, Laurent Pinchart wrote:
quoted
On Mon, Sep 01, 2025 at 02:25:31PM +0800, Guoniu Zhou wrote:
quoted
Call reset_control_deassert() to explicitly release reset to make sure
reset bits are cleared since platform like i.MX8ULP can't clear reset
bits automatically.

Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Guoniu Zhou <redacted>
---
 drivers/media/platform/nxp/imx8mq-mipi-csi2.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/drivers/media/platform/nxp/imx8mq-mipi-csi2.c b/drivers/media/platform/nxp/imx8mq-mipi-csi2.c
index 2bf11984690af2e687a3217e465697333d9d995d..6b83aa85af42e1dac25cf29056863680c1f89402
100644
--- a/drivers/media/platform/nxp/imx8mq-mipi-csi2.c
+++ b/drivers/media/platform/nxp/imx8mq-mipi-csi2.c
@@ -337,18 +337,14 @@ static int imx8mq_mipi_csi_sw_reset(struct csi_state *state)  {
      int ret;

-     /*
-      * these are most likely self-clearing reset bits. to make it
-      * more clear, the reset-imx7 driver should implement the
-      * .reset() operation.
What happened to this plan, would it be feasible to implement the
Since reset in ULP isn't self-clearing, so need to release the reset before return.
And I think it's no side effect to call reset_control_deassert() here since it makes
more clear and readable about software reset implementation.
quoted
.reset() operation in the relevant drivers to be able to use
reset_control_reset() here ?
Implement the .reset() operation in in the relevant drivers should have same effect
like here. If you agree, I prefer to use the patch here since less changes usually mean
low risk.
I'm OK with that.
quoted
quoted
-      */
      ret = reset_control_assert(state->rst);
      if (ret < 0) {
              dev_err(state->dev, "Failed to assert resets: %d\n", ret);
              return ret;
      }

-     return 0;
+     /* Explicitly release reset to make sure reset bits are cleared. */
+     return reset_control_deassert(state->rst);
 }

 static void imx8mq_mipi_csi_set_params(struct csi_state *state)
-- 
Regards,

Laurent Pinchart
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help