2023-09-21 17:13:35

by Xin Ji

[permalink] [raw]
Subject: [PATCH] drm/bridge: Add 200ms delay to wait FW HPD status stable

For the none-interrupt design(sink device is panel, polling HPD
status when chip power on), anx7625 FW has more than 200ms HPD
de-bounce time in FW, for the safety to get HPD status, driver
better to wait 200ms before HPD detection after OS resume back.

Signed-off-by: Xin Ji <[email protected]>
---
drivers/gpu/drm/bridge/analogix/anx7625.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
index 51abe42c639e..833d6d50a03d 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.c
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
@@ -1464,6 +1464,9 @@ static int _anx7625_hpd_polling(struct anx7625_data *ctx,
if (ctx->pdata.intp_irq)
return 0;

+ /* Delay 200ms for FW HPD de-bounce */
+ usleep_range(200000, 201000);
+
ret = readx_poll_timeout(anx7625_read_hpd_status_p0,
ctx, val,
((val & HPD_STATUS) || (val < 0)),
--
2.25.1


2023-09-21 18:44:03

by Laurent Pinchart

[permalink] [raw]
Subject: Re: [PATCH] drm/bridge: Add 200ms delay to wait FW HPD status stable

The subject line is missing the driver name.

On Thu, Sep 21, 2023 at 03:09:10PM +0300, Jani Nikula wrote:
> On Thu, 21 Sep 2023, Xin Ji <[email protected]> wrote:
> > For the none-interrupt design(sink device is panel, polling HPD

s/none-interrupt/no-interrupt/ ?

s/design/design /

> > status when chip power on), anx7625 FW has more than 200ms HPD
> > de-bounce time in FW, for the safety to get HPD status, driver
> > better to wait 200ms before HPD detection after OS resume back.
> >
> > Signed-off-by: Xin Ji <[email protected]>
> > ---
> > drivers/gpu/drm/bridge/analogix/anx7625.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
> > index 51abe42c639e..833d6d50a03d 100644
> > --- a/drivers/gpu/drm/bridge/analogix/anx7625.c
> > +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
> > @@ -1464,6 +1464,9 @@ static int _anx7625_hpd_polling(struct anx7625_data *ctx,
> > if (ctx->pdata.intp_irq)
> > return 0;
> >
> > + /* Delay 200ms for FW HPD de-bounce */
> > + usleep_range(200000, 201000);
>
> If you need to sleep for 200 ms, maybe use msleep instead?

fsleep() could be a nice replacement.

> > +
> > ret = readx_poll_timeout(anx7625_read_hpd_status_p0,
> > ctx, val,
> > ((val & HPD_STATUS) || (val < 0)),

--
Regards,

Laurent Pinchart

2023-09-21 19:17:32

by Jani Nikula

[permalink] [raw]
Subject: Re: [PATCH] drm/bridge: Add 200ms delay to wait FW HPD status stable

On Thu, 21 Sep 2023, Xin Ji <[email protected]> wrote:
> For the none-interrupt design(sink device is panel, polling HPD
> status when chip power on), anx7625 FW has more than 200ms HPD
> de-bounce time in FW, for the safety to get HPD status, driver
> better to wait 200ms before HPD detection after OS resume back.
>
> Signed-off-by: Xin Ji <[email protected]>
> ---
> drivers/gpu/drm/bridge/analogix/anx7625.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
> index 51abe42c639e..833d6d50a03d 100644
> --- a/drivers/gpu/drm/bridge/analogix/anx7625.c
> +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
> @@ -1464,6 +1464,9 @@ static int _anx7625_hpd_polling(struct anx7625_data *ctx,
> if (ctx->pdata.intp_irq)
> return 0;
>
> + /* Delay 200ms for FW HPD de-bounce */
> + usleep_range(200000, 201000);

If you need to sleep for 200 ms, maybe use msleep instead?

BR,
Jani.

> +
> ret = readx_poll_timeout(anx7625_read_hpd_status_p0,
> ctx, val,
> ((val & HPD_STATUS) || (val < 0)),

--
Jani Nikula, Intel

2023-09-22 08:23:48

by Xin Ji

[permalink] [raw]
Subject: RE: [PATCH] drm/bridge: Add 200ms delay to wait FW HPD status stable

Hi Laurent Pinchart, thanks for reviewing, I'll update the new patch, thanks!
Xin

> -----Original Message-----
> From: Laurent Pinchart <[email protected]>
> Sent: Thursday, September 21, 2023 8:13 PM
> To: Jani Nikula <[email protected]>
> Cc: Xin Ji <[email protected]>; Andrzej Hajda <[email protected]>;
> Neil Armstrong <[email protected]>; Robert Foss <[email protected]>;
> Jonas Karlman <[email protected]>; Jernej Skrabec <[email protected]>;
> David Airlie <[email protected]>; Daniel Vetter <[email protected]>; Qilin Wen
> <[email protected]>; [email protected]; dri-
> [email protected]; [email protected]; Bernie Liang
> <[email protected]>
> Subject: Re: [PATCH] drm/bridge: Add 200ms delay to wait FW HPD status stable
>
> CAUTION: This email originated from outside of the organization. Please do not
> click links or open attachments unless you recognize the sender, and know the
> content is safe.
>
>
> The subject line is missing the driver name.
>
> On Thu, Sep 21, 2023 at 03:09:10PM +0300, Jani Nikula wrote:
> > On Thu, 21 Sep 2023, Xin Ji <[email protected]> wrote:
> > > For the none-interrupt design(sink device is panel, polling HPD
>
> s/none-interrupt/no-interrupt/ ?
OK
>
> s/design/design /
OK
>
> > > status when chip power on), anx7625 FW has more than 200ms HPD
> > > de-bounce time in FW, for the safety to get HPD status, driver
> > > better to wait 200ms before HPD detection after OS resume back.
> > >
> > > Signed-off-by: Xin Ji <[email protected]>
> > > ---
> > > drivers/gpu/drm/bridge/analogix/anx7625.c | 3 +++
> > > 1 file changed, 3 insertions(+)
> > >
> > > diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c
> > > b/drivers/gpu/drm/bridge/analogix/anx7625.c
> > > index 51abe42c639e..833d6d50a03d 100644
> > > --- a/drivers/gpu/drm/bridge/analogix/anx7625.c
> > > +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
> > > @@ -1464,6 +1464,9 @@ static int _anx7625_hpd_polling(struct
> anx7625_data *ctx,
> > > if (ctx->pdata.intp_irq)
> > > return 0;
> > >
> > > + /* Delay 200ms for FW HPD de-bounce */
> > > + usleep_range(200000, 201000);
> >
> > If you need to sleep for 200 ms, maybe use msleep instead?
>
> fsleep() could be a nice replacement.
OK
>
> > > +
> > > ret = readx_poll_timeout(anx7625_read_hpd_status_p0,
> > > ctx, val,
> > > ((val & HPD_STATUS) || (val < 0)),
>
> --
> Regards,
>
> Laurent Pinchart

2023-09-22 12:47:57

by Xin Ji

[permalink] [raw]
Subject: RE: [PATCH] drm/bridge: Add 200ms delay to wait FW HPD status stable

Hi Jani Nikula, thanks for reviewing, I'll use msleep instead, thanks!
Xin

> -----Original Message-----
> From: Jani Nikula <[email protected]>
> Sent: Thursday, September 21, 2023 8:09 PM
> To: Xin Ji <[email protected]>; Andrzej Hajda <[email protected]>;
> Neil Armstrong <[email protected]>; Robert Foss <[email protected]>;
> Laurent Pinchart <[email protected]>; Jonas Karlman
> <[email protected]>; Jernej Skrabec <[email protected]>; David Airlie
> <[email protected]>; Daniel Vetter <[email protected]>
> Cc: Qilin Wen <[email protected]>; [email protected]; dri-
> [email protected]; [email protected]; Bernie Liang
> <[email protected]>; Xin Ji <[email protected]>
> Subject: Re: [PATCH] drm/bridge: Add 200ms delay to wait FW HPD status stable
>
> On Thu, 21 Sep 2023, Xin Ji <[email protected]> wrote:
> > For the none-interrupt design(sink device is panel, polling HPD status
> > when chip power on), anx7625 FW has more than 200ms HPD de-bounce time
> > in FW, for the safety to get HPD status, driver better to wait 200ms
> > before HPD detection after OS resume back.
> >
> > Signed-off-by: Xin Ji <[email protected]>
> > ---
> > drivers/gpu/drm/bridge/analogix/anx7625.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c
> > b/drivers/gpu/drm/bridge/analogix/anx7625.c
> > index 51abe42c639e..833d6d50a03d 100644
> > --- a/drivers/gpu/drm/bridge/analogix/anx7625.c
> > +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
> > @@ -1464,6 +1464,9 @@ static int _anx7625_hpd_polling(struct
> anx7625_data *ctx,
> > if (ctx->pdata.intp_irq)
> > return 0;
> >
> > + /* Delay 200ms for FW HPD de-bounce */
> > + usleep_range(200000, 201000);
>
> If you need to sleep for 200 ms, maybe use msleep instead?
OK
>
> BR,
> Jani.
>
> > +
> > ret = readx_poll_timeout(anx7625_read_hpd_status_p0,
> > ctx, val,
> > ((val & HPD_STATUS) || (val < 0)),
>
> --
> Jani Nikula, Intel