All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Andrey Smirnov <andrew.smirnov@gmail.com>
Cc: dri-devel@lists.freedesktop.org,
	Archit Taneja <architt@codeaurora.org>,
	Andrzej Hajda <a.hajda@samsung.com>,
	Chris Healy <cphealy@gmail.com>,
	Lucas Stach <l.stach@pengutronix.de>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 5/9] drm/bridge: tc358767: Simplify polling in tc_link_training()
Date: Mon, 4 Mar 2019 14:30:52 +0200	[thread overview]
Message-ID: <20190304123052.GG6325@pendragon.ideasonboard.com> (raw)
In-Reply-To: <20190226193609.9862-6-andrew.smirnov@gmail.com>

Hi Andrey,

Thank you for the patch.

On Tue, Feb 26, 2019 at 11:36:05AM -0800, Andrey Smirnov wrote:
> Replace explicit polling in tc_link_training() with equivalent call to
> regmap_read_poll_timeout() for simplicity. No functional change
> intended (not including slightly altered debug output).
> 
> Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
> Cc: Archit Taneja <architt@codeaurora.org>
> Cc: Andrzej Hajda <a.hajda@samsung.com>
> Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
> Cc: Chris Healy <cphealy@gmail.com>
> Cc: Lucas Stach <l.stach@pengutronix.de>
> Cc: dri-devel@lists.freedesktop.org
> Cc: linux-kernel@vger.kernel.org
> ---
>  drivers/gpu/drm/bridge/tc358767.c | 14 +++++---------
>  1 file changed, 5 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c
> index 6455e6484722..ea30cec4a0c3 100644
> --- a/drivers/gpu/drm/bridge/tc358767.c
> +++ b/drivers/gpu/drm/bridge/tc358767.c
> @@ -735,7 +735,6 @@ static int tc_link_training(struct tc_data *tc, int pattern)
>  	const char * const *errors;
>  	u32 srcctrl = tc_srcctrl(tc) | DP0_SRCCTRL_SCRMBLDIS |
>  		      DP0_SRCCTRL_AUTOCORRECT;
> -	int timeout;
>  	int retry;
>  	u32 value;
>  	int ret;
> @@ -765,20 +764,17 @@ static int tc_link_training(struct tc_data *tc, int pattern)
>  		tc_write(DP0CTL, DP_EN);
>  
>  		/* wait */
> -		timeout = 1000;
> -		do {
> -			tc_read(DP0_LTSTAT, &value);
> -			udelay(1);
> -		} while ((!(value & LT_LOOPDONE)) && (--timeout));
> -		if (timeout == 0) {
> +		ret = regmap_read_poll_timeout(tc->regmap, DP0_LTSTAT, value,
> +					       value & LT_LOOPDONE, 1, 1000);
> +		if (ret) {
>  			dev_err(tc->dev, "Link training timeout!\n");
>  		} else {
>  			int pattern = (value >> 11) & 0x3;
>  			int error = (value >> 8) & 0x7;
>  
>  			dev_dbg(tc->dev,
> -				"Link training phase %d done after %d uS: %s\n",
> -				pattern, 1000 - timeout, errors[error]);
> +				"Link training phase %d done: %s\n",
> +				pattern, errors[error]);

It's probably not a big deal in this specific case, but in general it
can be useful to know how long the poll took. Any hope to enhance
regmap_read_poll_timeout() to return either the elapsed time or the
remaining timeout instead of 0 on success ?

>  			if (pattern == DP_TRAINING_PATTERN_1 && error == 0)
>  				break;
>  			if (pattern == DP_TRAINING_PATTERN_2) {

-- 
Regards,

Laurent Pinchart

  reply	other threads:[~2019-03-04 12:30 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-26 19:36 [PATCH 0/9] tc358767 driver improvements Andrey Smirnov
2019-02-26 19:36 ` [PATCH 1/9] drm/bridge: tc358767: Simplify tc_poll_timeout() Andrey Smirnov
2019-03-04  9:28   ` Andrzej Hajda
2019-03-04 12:17   ` Laurent Pinchart
2019-03-04 12:17     ` Laurent Pinchart
2019-02-26 19:36 ` [PATCH 2/9] drm/bridge: tc358767: Simplify tc_stream_clock_calc() Andrey Smirnov
2019-03-04  9:42   ` Andrzej Hajda
2019-03-04 12:20     ` Laurent Pinchart
2019-03-04 12:20       ` Laurent Pinchart
2019-03-11 17:51       ` Andrey Smirnov
2019-02-26 19:36 ` [PATCH 3/9] drm/bridge: tc358767: Simplify tc_set_video_mode() Andrey Smirnov
2019-03-04 12:25   ` Laurent Pinchart
2019-03-11 17:56     ` Andrey Smirnov
2019-02-26 19:36 ` [PATCH 4/9] drm/bridge: tc358767: Simplify polling in tc_main_link_setup() Andrey Smirnov
2019-03-04 12:28   ` Laurent Pinchart
2019-02-26 19:36 ` [PATCH 5/9] drm/bridge: tc358767: Simplify polling in tc_link_training() Andrey Smirnov
2019-03-04 12:30   ` Laurent Pinchart [this message]
2019-03-11 18:26     ` Andrey Smirnov
2019-03-12 15:15       ` Laurent Pinchart
2019-03-12 15:15         ` Laurent Pinchart
2019-02-26 19:36 ` [PATCH 6/9] drm/bridge: tc358767: Simplify error check in tc_aux_linx_setup() Andrey Smirnov
2019-03-04 12:33   ` Laurent Pinchart
2019-03-11 18:32     ` Andrey Smirnov
2019-02-26 19:36 ` [PATCH 7/9] drm/bridge: tc358767: Introduce tc_set_syspllparam() Andrey Smirnov
2019-03-04 12:34   ` Laurent Pinchart
2019-02-26 19:36 ` [PATCH 8/9] drm/bridge: tc358767: Introduce tc_pllupdate_pllen() Andrey Smirnov
2019-03-04 12:37   ` Laurent Pinchart
2019-02-26 19:36 ` [PATCH 9/9] drm/bridge: tc358767: Drop tc_read() macro Andrey Smirnov
2019-03-04 12:39   ` Laurent Pinchart

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=20190304123052.GG6325@pendragon.ideasonboard.com \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=a.hajda@samsung.com \
    --cc=andrew.smirnov@gmail.com \
    --cc=architt@codeaurora.org \
    --cc=cphealy@gmail.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=l.stach@pengutronix.de \
    --cc=linux-kernel@vger.kernel.org \
    /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.