Received: by 2002:ac0:950c:0:0:0:0:0 with SMTP id f12csp1337754imc; Mon, 11 Mar 2019 11:27:10 -0700 (PDT) X-Google-Smtp-Source: APXvYqx8aBdb3i8ElzYsfxIg5EsCiOvzh0e6o8a0WBUrQrix3U0Eb/ejY+pAv3qN1AXlNufTaZyx X-Received: by 2002:a62:4254:: with SMTP id p81mr34266456pfa.185.1552328830444; Mon, 11 Mar 2019 11:27:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552328830; cv=none; d=google.com; s=arc-20160816; b=Kl0jNjYH8mQKDP6+l0XQczCvZfo3WRL3N34/DVuuVkV/ngTeYIh7p4o7Z4p6F3SGhU Y4wXPZDyWhBXW6HgjoVCLN0S27urwkeKVDTd9aWgvzrxLVR8GQrL/rrqABaQGO1dB5Xy I+O4yEVBpWU+QYiKSjvtVQEg/zXHZLYoMNqRfnYyjzPz0sG/i/ymJ9l5lj5SjInRPLVb D3QX9domQhi4TFomBzkEwTP+7OU/wUv6ZogROed56PskmyfxM8f8o+oto0Z6I1mbHvrp yf3RUzKovX+DOJsgNWjne//ejCFI43rVmd2wUrGKNkyRpl+RHDQbaGtEaRp7ojF3h1oO 8rtA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=7CPSEe7aSVAQIPM7Ck55H1c557lLNPU0/InxpZhrbR8=; b=EcD1PV9w7CqnQtDOS986hF95adl/hREPPhP0IM2dkktKpfSz1G+ovno8TMyGiaEHuL kwd98loJYy5C2hYRxNQggJ+RGgRSKdzmx6Ahi5EZ6G6zGBHqx9WO3vcfue28Ih7psP5T LGOy5ZFBuvjIDOSYoI2ak20D4rpJtqCa6IKX3/1lNQ716Aj8sZEr8FTt8J41cNXwpljT r4btC4jk+cRnHvhXgiYQDJde40IM1awLGbxRRMcxyEKwbZespd1L4WLr+jPT6oqFW3/q 3okPPRC9i/IaeKUQqKXuRCZW0hPY/XtrFlZBg/EppiwKzsIfVjJsfaDZ88ZzxLgf4Lyp r6sw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=V3o981yR; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t11si5279200pgp.229.2019.03.11.11.26.54; Mon, 11 Mar 2019 11:27:10 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=V3o981yR; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727598AbfCKS0e (ORCPT + 99 others); Mon, 11 Mar 2019 14:26:34 -0400 Received: from mail-wm1-f68.google.com ([209.85.128.68]:39134 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726977AbfCKS0d (ORCPT ); Mon, 11 Mar 2019 14:26:33 -0400 Received: by mail-wm1-f68.google.com with SMTP id t124so118330wma.4 for ; Mon, 11 Mar 2019 11:26:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=7CPSEe7aSVAQIPM7Ck55H1c557lLNPU0/InxpZhrbR8=; b=V3o981yRhlkGcB6H4L19WwSQEItKytJUEXmIHsAWU4tSywJL/QbWuUtsCvg3wm8Svx YmH2Pj1nI+f2cUZwpRhgKAJnEDKh5ML8VLi8x1O86R3C5WwG0DlxsgpYrCTIqTk24kye BgmFaBIUWrNba4YhNVsowZ+RE8mp0gss46bVMny4kXSaKw4nGRUN7ov+QLlSILsGc1gY uuQaUrO8vPr/jUqCR/XaKP+ZABaRZbZ7846G6ETtXGZghwjsBo3PVmxAtni5PXvfLQM8 H2cu1kFNRa00qKCpJHT/+WLpmIIOBS0zAVWa91DlJBo+BbqwNfkoMVlKth6P0rW5WVmd epaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=7CPSEe7aSVAQIPM7Ck55H1c557lLNPU0/InxpZhrbR8=; b=ja4jiAxXFQZzoqT4jKfjK6JDgNJPf/bePe3ClXmP61SBdpV29AzlmTiIyfiMNM4840 BxAEjDSC/H/D+nTpEjMwmx5Go1+QuHt3mSWJyyzCumyNI6zzSV1dryAIBknDKVT22TLQ EaxZbxoCQreFUq3VKsZ9vffP1fw5y/gI9bb6oMa4evUzTEHAy7LytPudTCmttwO2PkmU 5Ekosbks8E8hYykh7GTp2UilvXNUOH0KkqjOUXETKDj6tioxe64EffJPwBENdy1y8w9p eieAJXGS57uHuvuG3zjS+RFiWhlJaIlJTB4LPgwsAuhJ8Cs129Ie57W3YL8t62nqS/As 3NJg== X-Gm-Message-State: APjAAAVE8MN4zesHO2f8UWUKMypoGXDhepFaCZjA/s8FlXXl/yjicB+y qMOSw3N11rCZI/hl3ZRAzlI8o2r3pPJC6I8eLCE= X-Received: by 2002:a1c:1a08:: with SMTP id a8mr10378wma.37.1552328791247; Mon, 11 Mar 2019 11:26:31 -0700 (PDT) MIME-Version: 1.0 References: <20190226193609.9862-1-andrew.smirnov@gmail.com> <20190226193609.9862-6-andrew.smirnov@gmail.com> <20190304123052.GG6325@pendragon.ideasonboard.com> In-Reply-To: <20190304123052.GG6325@pendragon.ideasonboard.com> From: Andrey Smirnov Date: Mon, 11 Mar 2019 11:26:20 -0700 Message-ID: Subject: Re: [PATCH 5/9] drm/bridge: tc358767: Simplify polling in tc_link_training() To: Laurent Pinchart Cc: dri-devel@lists.freedesktop.org, Archit Taneja , Andrzej Hajda , Chris Healy , Lucas Stach , linux-kernel Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Mar 4, 2019 at 4:30 AM Laurent Pinchart wrote: > > 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 > > Cc: Archit Taneja > > Cc: Andrzej Hajda > > Cc: Laurent Pinchart > > Cc: Chris Healy > > Cc: Lucas Stach > > 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. I don't disagree, but bear in mind that the way time is measured in original loop assumes that tc_read, an I2C transaction over 100KHz bus, takes insignificant amount of time compared to 1 uS delay. I think original debug statement does a bit of a false advertising when it presents a number of polling loop iterations as if it is time it took to establish a link in microseconds. > Any hope to enhance regmap_read_poll_timeout() to return either the elapsed time or the > remaining timeout instead of 0 on success ? > I'd rather not go there. That'll take convincing Mark Brown to accept that semantics change, then fixing all of the callers across the tree via a separate patch series. What if instead we just add an extra debug statement before link training starts, so that duration of the process can be discerned from logging timestamps? This does require user doing a bit of math by hand, but it's actually more accurate timing info compared to original and it doesn't require any API modification. Thanks, Andrey Smirnov