From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH 6/6] drm/bridge: adv7511: Re-write the i2c address before EDID probing Date: Thu, 19 Jan 2017 01:06:46 +0200 Message-ID: <1768397.9668hMXhne@avalon> References: <1484614372-15342-1-git-send-email-john.stultz@linaro.org> <1484614372-15342-7-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 [185.26.127.97]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3A3C66E926 for ; Wed, 18 Jan 2017 23:06:28 +0000 (UTC) In-Reply-To: <1484614372-15342-7-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 SGkgSm9obiwKClRoYW5rIHlvdSBmb3IgdGhlIHBhdGNoLgoKT24gTW9uZGF5IDE2IEphbiAyMDE3 IDE2OjUyOjUyIEpvaG4gU3R1bHR6IHdyb3RlOgo+IEkndmUgZm91bmQgdGhhdCBieSBqdXN0IHR1 cm5pbmcgdGhlIGNoaXAgb24gYW5kIG9mZiB2aWEgdGhlCj4gUE9XRVJfRE9XTiByZWdpc3Rlciwg SSBlbmQgdXAgZ2V0dGluZyBpMmNfdHJhbnNmZXIgZXJyb3JzIG9uCj4gSGlLZXkuCj4gCj4gSW52 ZXN0aWdhdGluZyBmdXJ0aGVyLCBpdCBzZWVtcyBzb21lIG9mIHRoZSByZWdpc3RlciBzdGF0ZSBp bgo+IHRoZSByZWdtYXAgY2FjaGUgaXMgZ2V0dGluZyBsb3N0LCBsaWtlbHkgYXMgdGhlIGRldmlj ZSByZWdpc3RlcnMKPiB3ZXJlIHJlc2V0IGR1cmluZyBwb3dlciBvZmYuCgpJdCdzIG5vdCB0aGUg c3RhdGUgaW4gdGhlIHJlZ21hcCBjYWNoZSB0aGF0IGlzIGxvc3QsIGJ1dCB0aGUgc3RhdGUgaW4g dGhlIApoYXJkd2FyZSwgaW5kZWVkIGJlY2F1c2UgdGhlIHJlZ2lzdGVycyBjb250ZW50cyBhcmUg bG9zdCB3aGVuIHRoZSBjaGlwIGlzIApwb3dlcmVkIGRvd24uCgpSZXZpZXdlZC1ieTogTGF1cmVu dCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgoKPiBUaHVzIHRo aXMgcGF0Y2ggc2ltcGx5IHJlLXdyaXRlcyB0aGUgaTJjIGFkZHJlc3MgdG8gdGhlCj4gQURWNzUx MV9SRUdfRURJRF9JMkNfQUREUiByZWdpc3RlciB0byBlbnN1cmUgaXRzIHByb3Blcmx5IHNldAo+ IGJlZm9yZSB3ZSB0cnkgdG8gcmVhZCB0aGUgRURJRCBkYXRhLgo+IAo+IENjOiBEYXZpZCBBaXJs aWUgPGFpcmxpZWRAbGludXguaWU+Cj4gQ2M6IEFyY2hpdCBUYW5lamEgPGFyY2hpdHRAY29kZWF1 cm9yYS5vcmc+Cj4gQ2M6IFdvbGZyYW0gU2FuZyA8d3NhK3JlbmVzYXNAc2FuZy1lbmdpbmVlcmlu Zy5jb20+Cj4gQ2M6IExhcnMtUGV0ZXIgQ2xhdXNlbiA8bGFyc0BtZXRhZm9vLmRlPgo+IENjOiBM YXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+Cj4gQ2M6 IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBTaWduZWQtb2ZmLWJ5OiBKb2huIFN0 dWx0eiA8am9obi5zdHVsdHpAbGluYXJvLm9yZz4KPiAtLS0KPiB2NDogTmV3IGFwcHJvYWNoIHRv IG1ha2UgdGhlIEVESURfSTJDX0FERFIgcmVnaXN0ZXIKPiAgICAgc2FuZSwgYXMgc3VnZ2VzdGVk IGJ5IExhdXJlbnQKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1 MTFfZHJ2LmMgfCAxMCArKysrKysrKystCj4gIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRn ZS9hZHY3NTExL2Fkdjc1MTFfZHJ2LmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUx MS9hZHY3NTExX2Rydi5jIGluZGV4IGQyMTZmNjEuLjBlZDg5ZWEKPiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fkdjc1MTEvYWR2NzUxMV9kcnYuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9hZHY3NTExX2Rydi5jCj4gQEAgLTU3Myw5ICs1NzMs MTcgQEAgc3RhdGljIGludCBhZHY3NTExX2dldF9tb2RlcyhzdHJ1Y3QgYWR2NzUxMSAqYWR2NzUx MSwKPiAgCXVuc2lnbmVkIGludCBjb3VudDsKPiAKPiAgCS8qIFJlYWRpbmcgdGhlIEVESUQgb25s eSB3b3JrcyBpZiB0aGUgZGV2aWNlIGlzIHBvd2VyZWQgKi8KPiAtCWlmICghYWR2NzUxMS0+cG93 ZXJlZCkKPiArCWlmICghYWR2NzUxMS0+cG93ZXJlZCkgewo+ICsJCXVuc2lnbmVkIGludCBlZGlk X2kyY19hZGRyID0KPiArCQkJCQkoYWR2NzUxMS0+aTJjX21haW4tPmFkZHIgPDwgMSkgKyA0Owo+ ICsKPiAgCQlfX2Fkdjc1MTFfcG93ZXJfb24oYWR2NzUxMSk7Cj4gCj4gKwkJLyogUmVzZXQgdGhl IEVESURfSTJDX0FERFIgcmVnaXN0ZXIgYXMgaXQgbWlnaHQgYmUgY2xlYXJlZCAqLwo+ICsJCXJl Z21hcF93cml0ZShhZHY3NTExLT5yZWdtYXAsIEFEVjc1MTFfUkVHX0VESURfSTJDX0FERFIsCj4g KwkJCSAgICAgZWRpZF9pMmNfYWRkcik7Cj4gKwl9Cj4gKwo+ICAJZWRpZCA9IGRybV9kb19nZXRf ZWRpZChjb25uZWN0b3IsIGFkdjc1MTFfZ2V0X2VkaWRfYmxvY2ssIGFkdjc1MTEpOwo+IAo+ICAJ aWYgKCFhZHY3NTExLT5wb3dlcmVkKQoKLS0gClJlZ2FyZHMsCgpMYXVyZW50IFBpbmNoYXJ0Cgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751523AbdARXHF (ORCPT ); Wed, 18 Jan 2017 18:07:05 -0500 Received: from galahad.ideasonboard.com ([185.26.127.97]:45618 "EHLO galahad.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751447AbdARXGc (ORCPT ); Wed, 18 Jan 2017 18:06:32 -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: [PATCH 6/6] drm/bridge: adv7511: Re-write the i2c address before EDID probing Date: Thu, 19 Jan 2017 01:06:46 +0200 Message-ID: <1768397.9668hMXhne@avalon> User-Agent: KMail/4.14.10 (Linux/4.8.6-gentoo; KDE/4.14.24; x86_64; ; ) In-Reply-To: <1484614372-15342-7-git-send-email-john.stultz@linaro.org> References: <1484614372-15342-1-git-send-email-john.stultz@linaro.org> <1484614372-15342-7-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 16 Jan 2017 16:52:52 John Stultz wrote: > I've found that by just turning the chip on and off via the > POWER_DOWN register, I end up getting i2c_transfer errors on > HiKey. > > Investigating further, it seems some of the register state in > the regmap cache is getting lost, likely as the device registers > were reset during power off. It's not the state in the regmap cache that is lost, but the state in the hardware, indeed because the registers contents are lost when the chip is powered down. Reviewed-by: Laurent Pinchart > Thus this patch simply re-writes the i2c address to the > ADV7511_REG_EDID_I2C_ADDR register to ensure its properly set > before we try to read the EDID data. > > 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 > --- > v4: New approach to make the EDID_I2C_ADDR register > sane, as suggested by Laurent > --- > drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c index d216f61..0ed89ea > 100644 > --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > @@ -573,9 +573,17 @@ static int adv7511_get_modes(struct adv7511 *adv7511, > unsigned int count; > > /* Reading the EDID only works if the device is powered */ > - if (!adv7511->powered) > + if (!adv7511->powered) { > + unsigned int edid_i2c_addr = > + (adv7511->i2c_main->addr << 1) + 4; > + > __adv7511_power_on(adv7511); > > + /* Reset the EDID_I2C_ADDR register as it might be cleared */ > + regmap_write(adv7511->regmap, ADV7511_REG_EDID_I2C_ADDR, > + edid_i2c_addr); > + } > + > edid = drm_do_get_edid(connector, adv7511_get_edid_block, adv7511); > > if (!adv7511->powered) -- Regards, Laurent Pinchart