From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [RFC][PATCH 2/3] drm/bridge: adv7511: Add 200ms delay on power-on Date: Tue, 22 Nov 2016 10:25:57 +0200 Message-ID: <38959305.ol4rppig8R@avalon> References: <1479775052-28194-1-git-send-email-john.stultz@linaro.org> <1479775052-28194-3-git-send-email-john.stultz@linaro.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 C2C756E1E6 for ; Tue, 22 Nov 2016 08:25:40 +0000 (UTC) In-Reply-To: <1479775052-28194-3-git-send-email-john.stultz@linaro.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: John Stultz Cc: lkml , dri-devel@lists.freedesktop.org, Wolfram Sang List-Id: dri-devel@lists.freedesktop.org SGkgSm9obiwKClRoYW5rIHlvdSBmb3IgdGhlIHBhdGNoLgoKT24gTW9uZGF5IDIxIE5vdiAyMDE2 IDE2OjM3OjMxIEpvaG4gU3R1bHR6IHdyb3RlOgo+IFNlY3RvbiA0LjEgb2YgdGhlIGFkdjc1MTEg cHJvZ3JhbW1pbmcgZ3VpZGUgYWR2aXNlcyBvbmUgd2FpdHMKPiAyMDBtcyBhZnRlciBwb3dlcmlu ZyBvbiB0aGUgY2hpcCBiZWZvcmUgdHJ5aW5nIHRvIGNvbW11bmljYXRlCj4gd2l0aCBpdCB2aWEg aTJjLiBOb3QgZG9pbmcgc28gY2FuIGNhdXNlIHJlbGlhYmlsaXR5IGlzc3VlcyB3aGVuCj4gcHJv YmluZyB0aGUgRURJRC4KPiAKPiBTZWU6Cj4gaHR0cDovL3d3dy5hbmFsb2cuY29tL21lZGlhL2Vu L3RlY2huaWNhbC1kb2N1bWVudGF0aW9uL3VzZXItZ3VpZGVzL0FEVjc1MTFfUAo+IHJvZ3JhbW1p bmdfR3VpZGUucGRmCj4gCj4gU28gdGhpcyBwYXRjaCBzaW1wbHkgYWRkcyBhIDIwMG1zIHNsZWVw IGF0IHRoZSBlbmQgb2YgdGhlCj4gcG93ZXJfb24gcGF0aC4gVGhpcyBncmVhdGx5IGltcHJvdmVz IEVESUQgcHJvYmluZyByZWxpYWJpbHR5Cj4gb24gaG90cGx1ZyB3aXRoIHRoZSBIaUtleSBkZXZp Y2UuCj4gCj4gQ2M6IERhdmlkIEFpcmxpZSA8YWlybGllZEBsaW51eC5pZT4KPiBDYzogQXJjaGl0 IFRhbmVqYSA8YXJjaGl0dEBjb2RlYXVyb3JhLm9yZz4KPiBDYzogV29sZnJhbSBTYW5nIDx3c2Er cmVuZXNhc0BzYW5nLWVuZ2luZWVyaW5nLmNvbT4KPiBDYzogTGFycy1QZXRlciBDbGF1c2VuIDxs YXJzQG1ldGFmb28uZGU+Cj4gQ2M6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRA aWRlYXNvbmJvYXJkLmNvbT4KPiBDYzogZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ IFNpZ25lZC1vZmYtYnk6IEpvaG4gU3R1bHR6IDxqb2huLnN0dWx0ekBsaW5hcm8ub3JnPgo+IC0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fkdjc1MTEvYWR2NzUxMV9kcnYuYyB8IDIgKysK PiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYnJpZGdlL2Fkdjc1MTEvYWR2NzUxMV9kcnYuYwo+IGIvZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1MTFfZHJ2LmMgaW5kZXggYjI0MGUwNS4uMjExNGE0Ywo+ IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9hZHY3NTExX2Ry di5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1MTFfZHJ2LmMK PiBAQCAtMzYxLDYgKzM2MSw4IEBAIHN0YXRpYyB2b2lkIF9fYWR2NzUxMV9wb3dlcl9vbihzdHJ1 Y3QgYWR2NzUxMSAqYWR2NzUxMSkKPiAgCSAqLwo+ICAJcmVnY2FjaGVfc3luYyhhZHY3NTExLT5y ZWdtYXApOwo+IAo+ICsJbXNsZWVwKDIwMCk7Cj4gKwoKVGhlIGRvY3VtZW50YXRpb24gc3RhdGVz IHRoYXQKCiJUaGUgdXNlciBzaG91bGQgd2FpdCAyMDBtcyBmb3IgdGhlIGFkZHJlc3MgdG8gYmUg ZGVjaWRlZCwgYWZ0ZXIgdGhlIHBvd2VyIApzdXBwbGllcyBhcmUgaGlnaCwgYmVmb3JlIGF0dGVt cHRpbmcgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgQURWNzUxMVcgdXNpbmcgCkkyQy4iCgpUaGUg aGFyZHdhcmUgdXNlcidzIGd1aWRlIGZ1cnRoZXIgc3RhdGVzIHRoYXQKCiJXaGVuIGluaXRpYWxs eSBwb3dlcmVkIHVwLCB0aGVyZSBpcyBhIDIwMG1zIHBlcmlvZCBiZWZvcmUgdGhlIGRldmljZSBp cyByZWFkeSAKdG8gYmUgYWRkcmVzc2VkLiIKCk5vdCBvbmx5IHRoZSBkZWxheSB5b3UgYWRkIGNv bWVzIGFmdGVyIGxvdHMgb2YgSTJDIGNvbW11bmljYXRpb24sIGJ1dCB0aGUgCmRyaXZlciBkb2Vz bid0IGhhbmRsZSByZWd1bGF0b3JzLCBhbmQgdGh1cyBkb2Vzbid0IHBvd2VyIGRvd24gdGhlIGRl dmljZSBhdCAKdGhlIGhhcmR3YXJlIGxldmVsLiBUaGUgaW5pdGlhbCBwb3dlciB1cCBzaG91bGQg dGh1cyBiZSBsb25nIGdvbmUgd2hlbiB0aGlzIApjb2RlIGlzIHJlYWNoZWQuCgpDb3VsZCBpdCBi ZSB0aGF0LCBvbiB0aGUgSGlLZXkgYm9hcmQsIHRoZSBwb3dlciBzdXBwbHkgaXMgY29udHJvbGxl ZCB0aHJvdWdoIAphbm90aGVyIG1lYW4gdGhhdCBkb2Vzbid0IGNvbXBseSB3aXRoIHRoZSAyMDBt cyBydWxlID8KCj4gIAlpZiAoYWR2NzUxMS0+dHlwZSA9PSBBRFY3NTMzKQo+ICAJCWFkdjc1MzNf ZHNpX3Bvd2VyX29uKGFkdjc1MTEpOwo+ICB9CgotLSAKUmVnYXJkcywKCkxhdXJlbnQgUGluY2hh cnQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755574AbcKVIZm (ORCPT ); Tue, 22 Nov 2016 03:25:42 -0500 Received: from galahad.ideasonboard.com ([185.26.127.97]:33621 "EHLO galahad.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755490AbcKVIZl (ORCPT ); Tue, 22 Nov 2016 03:25:41 -0500 From: Laurent Pinchart To: John Stultz Cc: lkml , David Airlie , Archit Taneja , Wolfram Sang , Lars-Peter Clausen , dri-devel@lists.freedesktop.org Subject: Re: [RFC][PATCH 2/3] drm/bridge: adv7511: Add 200ms delay on power-on Date: Tue, 22 Nov 2016 10:25:57 +0200 Message-ID: <38959305.ol4rppig8R@avalon> User-Agent: KMail/4.14.10 (Linux/4.8.6-gentoo; KDE/4.14.24; x86_64; ; ) In-Reply-To: <1479775052-28194-3-git-send-email-john.stultz@linaro.org> References: <1479775052-28194-1-git-send-email-john.stultz@linaro.org> <1479775052-28194-3-git-send-email-john.stultz@linaro.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 John, Thank you for the patch. On Monday 21 Nov 2016 16:37:31 John Stultz wrote: > Secton 4.1 of the adv7511 programming guide advises one waits > 200ms after powering on the chip before trying to communicate > with it via i2c. Not doing so can cause reliability issues when > probing the EDID. > > See: > http://www.analog.com/media/en/technical-documentation/user-guides/ADV7511_P > rogramming_Guide.pdf > > So this patch simply adds a 200ms sleep at the end of the > power_on path. This greatly improves EDID probing reliabilty > on hotplug with the HiKey device. > > Cc: David Airlie > Cc: Archit Taneja > Cc: Wolfram Sang > Cc: Lars-Peter Clausen > Cc: Laurent Pinchart > Cc: dri-devel@lists.freedesktop.org > Signed-off-by: John Stultz > --- > drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c index b240e05..2114a4c > 100644 > --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > @@ -361,6 +361,8 @@ static void __adv7511_power_on(struct adv7511 *adv7511) > */ > regcache_sync(adv7511->regmap); > > + msleep(200); > + The documentation states that "The user should wait 200ms for the address to be decided, after the power supplies are high, before attempting to communicate with the ADV7511W using I2C." The hardware user's guide further states that "When initially powered up, there is a 200ms period before the device is ready to be addressed." Not only the delay you add comes after lots of I2C communication, but the driver doesn't handle regulators, and thus doesn't power down the device at the hardware level. The initial power up should thus be long gone when this code is reached. Could it be that, on the HiKey board, the power supply is controlled through another mean that doesn't comply with the 200ms rule ? > if (adv7511->type == ADV7533) > adv7533_dsi_power_on(adv7511); > } -- Regards, Laurent Pinchart