All of lore.kernel.org
 help / color / mirror / Atom feed
From: Frank Li <Frank.li@oss.nxp.com>
To: sashiko-reviews@lists.linux.dev
Cc: Guoniu Zhou <guoniu.zhou@oss.nxp.com>,
	imx@lists.linux.dev, Frank.Li@kernel.org, media-ci@linuxtv.org
Subject: Re: [PATCH] media: synopsys: dw-mipi-csi2rx: Fix DPHY testclr reset sequence
Date: Tue, 20 Oct 2026 10:30:14 -0500	[thread overview]
Message-ID: <ateJBnbI91hvj2r6@SMW015318> (raw)
In-Reply-To: <sashiko-outbox-178465@kernel.org>

On Tue, Oct 20, 2026 at 08:01:00AM +0000, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [Medium] media: missing MMIO flush before ndelay() in imx93_csi2rx_dphy_assert_reset()
> --
>
> commit b3d3c4c8602e49d8fd933f7b1d722f45a1287b01
> Author: Guoniu Zhou <guoniu.zhou@oss.nxp.com>
>
> media: synopsys: dw-mipi-csi2rx: Fix DPHY testclr reset sequence
>
> This commit updates imx93_csi2rx_dphy_assert_reset() so that the DPHY test
> clear bit is asserted first, held for 15ns, and then deasserted.
>
> > diff --git a/drivers/media/platform/synopsys/dw-mipi-csi2rx.c b/drivers/media/platform/synopsys/dw-mipi-csi2rx.c
> > index b7247d597c9cc..b9f7ba25bd3ba 100644
> > --- a/drivers/media/platform/synopsys/dw-mipi-csi2rx.c
> > +++ b/drivers/media/platform/synopsys/dw-mipi-csi2rx.c
> > @@ -830,18 +830,23 @@ static void imx93_csi2rx_dphy_assert_reset(struct dw_mipi_csi2rx_device *csi2)
> >  {
> >  	u32 val;
> >
> > -	/* Release Synopsys DPHY test codes from reset */
> > +	/* Put PHY in shutdown mode for configuration */
> >  	dw_mipi_csi2rx_write(csi2, DW_MIPI_CSI2RX_DPHY_RSTZ, 0);
> >  	dw_mipi_csi2rx_write(csi2, DW_MIPI_CSI2RX_PHY_SHUTDOWNZ, 0);
> >
> > +	/*
> > +	 * Apply testclr pulse to load analog programmability defaults
> > +	 * and release the test interface for configuration.
> > +	 */
> >  	val = dw_mipi_csi2rx_read(csi2, DW_MIPI_CSI2RX_PHY_TST_CTRL0);
> > -	val &= ~DPHY_TEST_CTRL0_TEST_CLR;
> > +	val |= DPHY_TEST_CTRL0_TEST_CLR;
> >  	dw_mipi_csi2rx_write(csi2, DW_MIPI_CSI2RX_PHY_TST_CTRL0, val);
> >
> > -	val = dw_mipi_csi2rx_read(csi2, DW_MIPI_CSI2RX_PHY_TST_CTRL0);
> >  	/* Wait for at least 15ns */
> >  	ndelay(15);
> > -	val |= DPHY_TEST_CTRL0_TEST_CLR;
> > +
> > +	val = dw_mipi_csi2rx_read(csi2, DW_MIPI_CSI2RX_PHY_TST_CTRL0);
> > +	val &= ~DPHY_TEST_CTRL0_TEST_CLR;
> >  	dw_mipi_csi2rx_write(csi2, DW_MIPI_CSI2RX_PHY_TST_CTRL0, val);
> >  }
>
> [Severity: Medium]
> Should dw_mipi_csi2rx_read(csi2, DW_MIPI_CSI2RX_PHY_TST_CTRL0) remain before
> ndelay(15) in imx93_csi2rx_dphy_assert_reset()?

Yes, please fix it. ndelay() is not necessary have mmio. So it may not
delay 15ns after value reach hardware.

Frank

>
> When streaming is started via dw_mipi_csi2rx_start() ->
> imx93_csi2rx_dphy_assert_reset(), moving the read of
> DW_MIPI_CSI2RX_PHY_TST_CTRL0 to after ndelay(15) means the posted writel()
> asserting DPHY_TEST_CTRL0_TEST_CLR is no longer flushed to the target
> register before the 15ns CPU delay loop executes.
>
> If that write remains buffered in the interconnect while ndelay(15) runs, the
> subsequent read will flush the assertion and immediately clear and write
> DPHY_TEST_CTRL0_TEST_CLR back without waiting 15ns, which could violate the
> minimum pulse width.
>
> Note that imx93_csi2rx_dphy_deassert_reset() right below this function
> specifically performs a readback before ndelay() for this reason:
>
> 	dw_mipi_csi2rx_write(csi2, DW_MIPI_CSI2RX_PHY_SHUTDOWNZ, 0x1);
> 	/*
> 	 * ndelay() is not necessary have MMIO operation, need dummy read to
> 	 * ensure that the write operation above reaches its target.
> 	 */
> 	dw_mipi_csi2rx_read(csi2, DW_MIPI_CSI2RX_PHY_SHUTDOWNZ);
> 	ndelay(5);
>
> --
> Sashiko AI review · https://sashiko.dev/#/patchset/20261020-dw-csi2rx-v1-1-c58a2e5cd43d@oss.nxp.com?part=1

  reply	other threads:[~2026-10-20 15:30 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-20  3:04 [PATCH] media: synopsys: dw-mipi-csi2rx: Fix DPHY testclr reset sequence Guoniu Zhou
2026-10-20  8:01 ` sashiko-bot
2026-10-20 15:30   ` Frank Li [this message]
2026-10-20 11:56 ` Michael Riesch

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=ateJBnbI91hvj2r6@SMW015318 \
    --to=frank.li@oss.nxp.com \
    --cc=Frank.Li@kernel.org \
    --cc=guoniu.zhou@oss.nxp.com \
    --cc=imx@lists.linux.dev \
    --cc=media-ci@linuxtv.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.