From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: PROBLEM: Asus C201 video mode problems on HDMI hotplug (regression) Date: Mon, 27 Nov 2017 11:00:28 +0200 Message-ID: <13872912.d01MB1IQ9u@avalon> References: <20171116062811.g27zgeejizfxu6oc@aura.draconx.ca> <269ce21a-3685-30e8-fcc8-65070bc59eea@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from galahad.ideasonboard.com (galahad.ideasonboard.com [IPv6:2001:4b98:dc2:45:216:3eff:febb:480d]) by gabe.freedesktop.org (Postfix) with ESMTPS id C98F36E200 for ; Mon, 27 Nov 2017 09:00:25 +0000 (UTC) In-Reply-To: <269ce21a-3685-30e8-fcc8-65070bc59eea@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Archit Taneja Cc: Laurent Pinchart , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Nick Bowler , Dave Airlie , Linus Torvalds List-Id: dri-devel@lists.freedesktop.org SGkgQXJjaGl0LAoKVGhhbmsgeW91IGZvciBoYW5kbGluZyB0aGlzLCBhbmQgc29ycnkgZm9yIG1p c3NpbmcgdGhlIG9yaWdpbmFsIGJ1ZyByZXBvcnQgCihhbmQgZm9yIGJyZWFraW5nIHRoaXMgaW4g dGhlIGZpcnN0IHBsYWNlKS4KCk9uIE1vbmRheSwgMjcgTm92ZW1iZXIgMjAxNyAwNjowNTowMyBF RVQgQXJjaGl0IFRhbmVqYSB3cm90ZToKPiBPbiAxMS8xNi8yMDE3IDExOjU4IEFNLCBOaWNrIEJv d2xlciB3cm90ZToKPiA+IE9uIDIwMTctMTEtMDUgMTE6NDEgLTA1MDAsIE5pY2sgQm93bGVyIHdy b3RlOgo+ID4+IE9uIDIwMTctMTEtMDIsIE5pY2sgQm93bGVyIDxuYm93bGVyQGRyYWNvbnguY2E+ IHdyb3RlOgo+ID4+PiB+NTAlIG9mIHRoZSB0aW1lIGFmdGVyIGEgaG90cGx1ZywgdGhlcmUgaXMg YSB2ZXJ0aWNhbCBwaW5rIGJhciBvbiB0aGUKPiA+Pj4gbGVmdCBvZiB0aGUgZGlzcGxheSBhcmVh IGFuZCBhdWRpbyBpcyBub3Qgd29ya2luZyBhdCBhbGwuICBBY2NvcmRpbmcgdG8KPiA+Pj4gdGhl IHNpbmsgZGV2aWNlIHRoZSBkaXNwbGF5IHNpemUgaXMgMTI4Mng3MjAgd2hpY2ggc2VlbXMgcHJl dHR5IHdyb25nCj4gPj4+IChub3JtYWwgYW5kIHdvcmtpbmcgc2l0dWF0aW9uIGlzIDEyODB4NzIw KS4KPiA+Pj4gCj4gPj4+IEkgcG9zdGVkIHBob3RvcyBvZiBub24td29ya2luZyB2ZXJzdXMgd29y a2luZyBzdGF0ZXMgaGVyZToKPiA+Pj4gICAgaHR0cHM6Ly9pbWd1ci5jb20vYS9xaEFaRwo+ID4+ PiAKPiA+Pj4gVW5wbHVnZ2luZyBhbmQgcGx1Z2dpbmcgdGhlIGNhYmxlIGFnYWluIHdpbGwgY29y cmVjdCB0aGUgaXNzdWUgKGl0IHNlZW1zCj4gPj4+IHRvLCBmb3IgdGhlIG1vc3QgcGFydCwgYWx0 ZXJuYXRlIGJldHdlZW4gd29ya2luZyBhbmQgbm90LXdvcmtpbmcgc3RhdGVzLAo+ID4+PiBhbHRo b3VnaCBub3QgYWx3YXlzKS4gIEl0IGFsd2F5cyB3b3JrcyBvbiBwb3dlciB1cCB3aXRoIHRoZSBj YWJsZQo+ID4+PiBpbml0aWFsbHkgY29ubmVjdGVkLgo+ID4+PiAKPiA+Pj4gVGhpcyBpcyBhIHJl Z3Jlc3Npb24gZnJvbSA0LjExLCB3aGVyZSBob3RwbHVnIHdvcmtzIHBlcmZlY3RseSBldmVyeQo+ ID4+PiB0aW1lLgo+ID4+IAo+ID4+IEJpc2VjdGlvbiBpbXBsaWNhdGVzIHRoZSBmb2xsb3dpbmcg Y29tbWl0Ogo+ID4+IAo+ID4+IDE4MWUwZWYwOTJhNDk1MmFhNTIzYzViOWNiMjEzOTRjZjQzYmNk NDYgaXMgdGhlIGZpcnN0IGJhZCBjb21taXQKPiA+PiBjb21taXQgMTgxZTBlZjA5MmE0OTUyYWE1 MjNjNWI5Y2IyMTM5NGNmNDNiY2Q0Ngo+ID4+IEF1dGhvcjogTGF1cmVudCBQaW5jaGFydCA8bGF1 cmVudC5waW5jaGFydCtyZW5lc2FzQGlkZWFzb25ib2FyZC5jb20+Cj4gPj4gRGF0ZTogICBNb24g TWFyIDYgMDE6MzU6NTcgMjAxNyArMDIwMAo+ID4+IAo+ID4+ICAgICAgZHJtOiBicmlkZ2U6IGR3 LWhkbWk6IEZpeCB0aGUgUEhZIHBvd2VyIHVwIHNlcXVlbmNlCj4gPj4gICAgICAKPiA+PiAgICAg IFdoZW4gcG93ZXJpbmcgdGhlIFBIWSB1cCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBQTEwgdG8g bG9jay4gVGhpcwo+ID4+ICAgICAgaXMgZG9uZSBieSBwb2xsaW5nIHRoZSBUWF9QSFlfTE9DSyBi aXQgaW4gdGhlIEhETUlfUEhZX1NUQVQwCj4gPj4gICAgICByZWdpc3RlciAoaW50ZXJydXB0LWJh c2VkIHdhaXQgY291bGQgYmUgaW1wbGVtZW50ZWQgYXMgd2VsbCBidXQgaXMKPiA+PiAgICAgIGxp a2VseSBvdmVya2lsbCkuIFRoZSBiaXQgaXMgYXNzZXJ0ZWQgd2hlbiB0aGUgUExMIGxvY2tzLCBi dXQgdGhlCj4gPj4gICAgICBjdXJyZW50IGNvZGUgaW5jb3JyZWN0bHkgd2FpdHMgZm9yIHRoZSBi aXQgdG8gYmUgZGVhc3NlcnRlZC4gRml4IGl0LAo+ID4+ICAgICAgYW5kIHdoaWxlIGF0IGl0LCBy ZXBsYWNlIHRoZSB1ZGVsYXkoKSB3aXRoIGEgc2xlZXAgYXMgdGhlIGNvZGUgbmV2ZXIKPiA+PiAg ICAgIHJ1bnMgaW4gbm9uLXNsZWVwYWJsZSBjb250ZXh0Lgo+ID4+ICAgICAgCj4gPj4gICAgICBU byBiZSBjb25zaXN0ZW50IHdpdGggdGhlIHBvd2VyIGRvd24gaW1wbGVtZW50YXRpb24gbW92ZSB0 aGUgcG9sbAo+ID4+ICAgICAgbG9vcCB0byB0aGUgcG93ZXIgb2ZmIGZ1bmN0aW9uLgo+IAo+IFRo ZSB0d28gbWFpbiB0aGluZ3MgdGhlIGNvbW1pdCBiZWxvdyBkb2VzIGl0IHRvIGEpIGNvcnJlY3Rs eSB3YWl0IG9uIHRoZQo+IFRYX1BIWV9MT0NLIGJpdCB0byBiZSBhc3NlcnRlZCBhbmQgYikgdXNl IHVzbGVlcF9yYW5nZSgpIGluc3RlYWQgb2YKPiB1ZGVsYXkoKS4KCkFub3RoZXIgZGlmZmVyZW5j ZSBpcyB0aGF0IHRoZSBQV0ROIGFuZCBUTURTIHNpZ25hbHMsIGluIHRoZW9yeSBuZWVkZWQgZm9y IApHZW4xIFBIWXMgb25seSwgYXJlIG5vdCBzZXQgYW55bW9yZSBmb3IgR2VuMiBQSFlzLiBOaWNr LCBjb3VsZCB5b3UgdGVzdCB0aGUgCmZvbGxvd2luZyBjaGFuZ2UgdG8gc2VlIGlmIGl0IG1ha2Vz IGEgZGlmZmVyZW5jZSA/CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5v cHN5cy9kdy1oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vCmJyaWRnZS9zeW5vcHN5cy9kdy1oZG1p LmMKaW5kZXggYjE3MjEzOTUwMmQ2Li4xYzE4ZmYxYmYyNGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvZHctaGRtaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9i cmlkZ2Uvc3lub3BzeXMvZHctaGRtaS5jCkBAIC0xMTA0LDE0ICsxMTA0LDE0IEBAIHN0YXRpYyBp bnQgZHdfaGRtaV9waHlfcG93ZXJfb24oc3RydWN0IGR3X2hkbWkgKmhkbWkpCiAJdW5zaWduZWQg aW50IGk7CiAJdTggdmFsOwogCi0JaWYgKHBoeS0+Z2VuID09IDEpIHsKLQkJZHdfaGRtaV9waHlf ZW5hYmxlX3Bvd2VyZG93bihoZG1pLCBmYWxzZSk7CisJZHdfaGRtaV9waHlfZW5hYmxlX3Bvd2Vy ZG93bihoZG1pLCBmYWxzZSk7CiAKLQkJLyogVG9nZ2xlIFRNRFMgZW5hYmxlLiAqLwotCQlkd19o ZG1pX3BoeV9lbmFibGVfdG1kcyhoZG1pLCAwKTsKLQkJZHdfaGRtaV9waHlfZW5hYmxlX3RtZHMo aGRtaSwgMSk7CisJLyogVG9nZ2xlIFRNRFMgZW5hYmxlLiAqLworCWR3X2hkbWlfcGh5X2VuYWJs ZV90bWRzKGhkbWksIDApOworCWR3X2hkbWlfcGh5X2VuYWJsZV90bWRzKGhkbWksIDEpOworCisJ aWYgKHBoeS0+Z2VuID09IDEpCiAJCXJldHVybiAwOwotCX0KIAogCWR3X2hkbWlfcGh5X2dlbjJf dHhwd3JvbihoZG1pLCAxKTsKIAlkd19oZG1pX3BoeV9nZW4yX3BkZHEoaGRtaSwgMCk7Cgo+IEkg ZG9uJ3Qgc2VlIChiKSBiZWluZyBhIHByb2JsZW0uIEFib3V0IChhKSwgaXQncyBwb3NzaWJsZSB0 aGF0IHRoZSBiaXQgYWJvdmUKPiBpcyBpbnRlcnByZXRlZCBkaWZmZXJlbnRseSBvbiBhIHJvY2tj aGlwIFNvQyB2ZXJzdXMgYSByZW5lc2FzIGNoaXAuIENvdWxkCj4geW91IHByaW50IHRoZSB2YWx1 ZSBvZiBIRE1JX1BIWV9TVEFUMCB0aGF0J3MgcmVhZCBiYWNrPwoKVGhlIGRyaXZlciBzaG91bGQg cHJpbnQgYSAiUEhZIFBMTCBmYWlsZWQgdG8gbG9jayIgZXJyb3IgbWVzc2FnZSB0byB0aGUga2Vy bmVsIApsb2cgaW4gdGhhdCBjYXNlLiBOaWNrLCBkb2VzIHRoYXQgaGFwcGVuIG9uIHlvdXIgc3lz dGVtID8KCj4gSWYgdGhlIGNvZGUgcmV0dXJucyBhbiAtRVRJTUVET1VULCBoZG1pLT5waHkub3Bz LT5pbml0KCkgd2lsbCByZXR1cm4gYW4KPiAtRVRJTUVET1VULiBUaGlzIHdpbGwgY2F1c2UgZHdf aGRtaV9zZXR1cCgpIHRvIGJhaWwgb3V0IGVhcmx5LCBiZWZvcmUgd2UKPiBnZXQgYSBjaGFuY2Ug dG8gY29uZmlndXJlIHRoZSBBVkkgaW5mb2ZyYW1lIGFuZCBvdGhlciBzdHVmZi4gSSd2ZSBzZWVu Cj4gb3RoZXIgSERNSSBIVyB0aHJvd2luZyB1cCBwaW5rIHN0cmlwcyBpZiB0aGUgQVZJIGluZm9m cmFtZSBzdHVmZiBpc24ndAo+IGNvbmZpZ3VyZWQgcHJvcGVybHkuCj4gCj4gQXMgYW4gZXhwZXJp bWVudCwgY291bGQgeW91IGZvcmNlZnVsbHkgcmV0dXJuIDAgaW5zdGVhZCBvZiAtRVRJTUVET1VU IGFuZAo+IHNlZSBpZiB0aGluZ3MgcmV0dXJuIGJhY2sgdG8gbm9ybWFsPwoKLS0gClJlZ2FyZHMs CgpMYXVyZW50IFBpbmNoYXJ0CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751449AbdK0JA1 (ORCPT ); Mon, 27 Nov 2017 04:00:27 -0500 Received: from galahad.ideasonboard.com ([185.26.127.97]:41057 "EHLO galahad.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751252AbdK0JAZ (ORCPT ); Mon, 27 Nov 2017 04:00:25 -0500 From: Laurent Pinchart To: Archit Taneja Cc: Nick Bowler , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Laurent Pinchart , Linus Torvalds , Dave Airlie , Andrzej Hajda Subject: Re: PROBLEM: Asus C201 video mode problems on HDMI hotplug (regression) Date: Mon, 27 Nov 2017 11:00:28 +0200 Message-ID: <13872912.d01MB1IQ9u@avalon> Organization: Ideas on Board Oy In-Reply-To: <269ce21a-3685-30e8-fcc8-65070bc59eea@codeaurora.org> References: <20171116062811.g27zgeejizfxu6oc@aura.draconx.ca> <269ce21a-3685-30e8-fcc8-65070bc59eea@codeaurora.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Archit, Thank you for handling this, and sorry for missing the original bug report (and for breaking this in the first place). On Monday, 27 November 2017 06:05:03 EET Archit Taneja wrote: > On 11/16/2017 11:58 AM, Nick Bowler wrote: > > On 2017-11-05 11:41 -0500, Nick Bowler wrote: > >> On 2017-11-02, Nick Bowler wrote: > >>> ~50% of the time after a hotplug, there is a vertical pink bar on the > >>> left of the display area and audio is not working at all. According to > >>> the sink device the display size is 1282x720 which seems pretty wrong > >>> (normal and working situation is 1280x720). > >>> > >>> I posted photos of non-working versus working states here: > >>> https://imgur.com/a/qhAZG > >>> > >>> Unplugging and plugging the cable again will correct the issue (it seems > >>> to, for the most part, alternate between working and not-working states, > >>> although not always). It always works on power up with the cable > >>> initially connected. > >>> > >>> This is a regression from 4.11, where hotplug works perfectly every > >>> time. > >> > >> Bisection implicates the following commit: > >> > >> 181e0ef092a4952aa523c5b9cb21394cf43bcd46 is the first bad commit > >> commit 181e0ef092a4952aa523c5b9cb21394cf43bcd46 > >> Author: Laurent Pinchart > >> Date: Mon Mar 6 01:35:57 2017 +0200 > >> > >> drm: bridge: dw-hdmi: Fix the PHY power up sequence > >> > >> When powering the PHY up we need to wait for the PLL to lock. This > >> is done by polling the TX_PHY_LOCK bit in the HDMI_PHY_STAT0 > >> register (interrupt-based wait could be implemented as well but is > >> likely overkill). The bit is asserted when the PLL locks, but the > >> current code incorrectly waits for the bit to be deasserted. Fix it, > >> and while at it, replace the udelay() with a sleep as the code never > >> runs in non-sleepable context. > >> > >> To be consistent with the power down implementation move the poll > >> loop to the power off function. > > The two main things the commit below does it to a) correctly wait on the > TX_PHY_LOCK bit to be asserted and b) use usleep_range() instead of > udelay(). Another difference is that the PWDN and TMDS signals, in theory needed for Gen1 PHYs only, are not set anymore for Gen2 PHYs. Nick, could you test the following change to see if it makes a difference ? diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/ bridge/synopsys/dw-hdmi.c index b172139502d6..1c18ff1bf24a 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -1104,14 +1104,14 @@ static int dw_hdmi_phy_power_on(struct dw_hdmi *hdmi) unsigned int i; u8 val; - if (phy->gen == 1) { - dw_hdmi_phy_enable_powerdown(hdmi, false); + dw_hdmi_phy_enable_powerdown(hdmi, false); - /* Toggle TMDS enable. */ - dw_hdmi_phy_enable_tmds(hdmi, 0); - dw_hdmi_phy_enable_tmds(hdmi, 1); + /* Toggle TMDS enable. */ + dw_hdmi_phy_enable_tmds(hdmi, 0); + dw_hdmi_phy_enable_tmds(hdmi, 1); + + if (phy->gen == 1) return 0; - } dw_hdmi_phy_gen2_txpwron(hdmi, 1); dw_hdmi_phy_gen2_pddq(hdmi, 0); > I don't see (b) being a problem. About (a), it's possible that the bit above > is interpreted differently on a rockchip SoC versus a renesas chip. Could > you print the value of HDMI_PHY_STAT0 that's read back? The driver should print a "PHY PLL failed to lock" error message to the kernel log in that case. Nick, does that happen on your system ? > If the code returns an -ETIMEDOUT, hdmi->phy.ops->init() will return an > -ETIMEDOUT. This will cause dw_hdmi_setup() to bail out early, before we > get a chance to configure the AVI infoframe and other stuff. I've seen > other HDMI HW throwing up pink strips if the AVI infoframe stuff isn't > configured properly. > > As an experiment, could you forcefully return 0 instead of -ETIMEDOUT and > see if things return back to normal? -- Regards, Laurent Pinchart