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..6b83aa85af42e1dac25cf29056863680c1f89402100644--- 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 theSince 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