From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2] drm/i915: Try EDID bitbanging on HDMI after failed read Date: Tue, 9 Jan 2018 10:06:02 +0100 Message-ID: <20180109090602.GD26573@phenom.ffwll.local> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Stefan =?iso-8859-1?Q?Br=FCns?= Cc: David Airlie , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Rodrigo Vivi List-Id: dri-devel@lists.freedesktop.org T24gU3VuLCBEZWMgMzEsIDIwMTcgYXQgMTE6MzQ6NTRQTSArMDEwMCwgU3RlZmFuIEJyw7xucyB3 cm90ZToKPiBUaGUgQUNLL05BQ0sgaW1wbGVtZW50YXRpb24gYXMgZm91bmQgaW4gZS5nLiB0aGUg Rzk2NSBoYXMgdGhlIGZhbGxpbmcKPiBjbG9jayBlZGdlIGFuZCB0aGUgcmVsZWFzZSBvZiB0aGUg ZGF0YSBsaW5lIGFmdGVyIHRoZSBBQ0sgZm9yIHRoZSByZWNlaXZlZAo+IGJ5dGUgaGFwcGVuIGF0 IHRoZSBzYW1lIHRpbWUuCj4gCj4gVGhpcyBpcyBjb25mb3JtYW50IHdpdGggdGhlIEkyQyBzcGVj aWZpY2F0aW9uLCB3aGljaCBhbGxvd3MgYSB6ZXJvIGhvbGQKPiB0aW1lLCBzZWUgZm9vdG5vdGUg WzNdOiAiQSBkZXZpY2UgbXVzdCBpbnRlcm5hbGx5IHByb3ZpZGUgYSBob2xkIHRpbWUgb2YKPiBh dCBsZWFzdCAzMDAgbnMgZm9yIHRoZSBTREEgc2lnbmFsICh3aXRoIHJlc3BlY3QgdG8gdGhlIFYg SUgobWluKSBvZiB0aGUKPiBTQ0wgc2lnbmFsKSB0byBicmlkZ2UgdGhlIHVuZGVmaW5lZCByZWdp b24gb2YgdGhlIGZhbGxpbmcgZWRnZSBvZiBTQ0wuIgo+IAo+IFNvbWUgSERNSS10by1WR0EgY29u dmVydGVycyBhcHBhcmVudGx5IGZhaWwgdG8gYWRoZXJlIHRvIHRoaXMgcmVxdWlyZW1lbnQKPiBh bmQgbGF0Y2ggU0RBIGF0IHRoZSBmYWxsaW5nIGNsb2NrIGVkZ2UsIHNvIGluc3RlYWQgb2YgYW4g QUNLCj4gc29tZXRpbWVzIGEgTkFDSyBpcyByZWFkIGFuZCB0aGUgc2xhdmUgKGkuZS4gdGhlIEVE SUQgUk9NKSBlbmRzIHRoZQo+IHRyYW5zZmVyLgo+IAo+IFRoZSBiaXRiYW5naW5nIHJlbGVhc2Vz IHRoZSBkYXRhIGxpbmUgZm9yIHRoZSBBQ0sgb25seSAxLzQgYml0IHRpbWUgYWZ0ZXIKPiB0aGUg ZmFsbGluZyBjbG9jayBlZGdlLCBzbyBhIHNsYXZlIHdpbGwgc2VlIHRoZSBjb3JyZWN0IHZhbHVl IG5vIG1hdHRlcgo+IGlmIGl0IHNhbXBsZXMgYXQgdGhlIHJpc2luZyBvciB0aGUgZmFsbGluZyBj bG9jayBlZGdlIG9yIGluIHRoZSBjZW50ZXIuCj4gCj4gRmFsbGJhY2sgdG8gYml0YmFuZ2luZyBp cyBhbHJlYWR5IGRvbmUgZm9yIHRoZSBDUlQgY29ubmVjdG9yLgo+IAo+IEJ1ZzogaHR0cHM6Ly9i dWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI2ODUKPiAKPiBTaWduZWQtb2Zm LWJ5OiBTdGVmYW4gQnLDvG5zIDxzdGVmYW4uYnJ1ZW5zQHJ3dGgtYWFjaGVuLmRlPgo+IAo+IC0t LQo+IAo+IENoYW5nZXMgaW4gdjI6Cj4gLSBGaXgvZW5oYW5jZSBjb21taXQgbWVzc2FnZSwgbm8g Y29kZSBjaGFuZ2VzCgpPaywgZm91bmQgdjIsIG1lcmdlZCB0aGlzIG9uZSBpbnN0ZWFkLgotRGFu aWVsCgo+IAo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgfCAxNCArKysrKysr KysrKy0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMo LSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gaW5kZXggNGRlYTgzM2Y5ZDFiLi44 NDdjZGE0YzAxN2MgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRt aS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gQEAgLTE1NzMs MTIgKzE1NzMsMjAgQEAgaW50ZWxfaGRtaV9zZXRfZWRpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQo+ICAJc3RydWN0IGludGVsX2hkbWkgKmludGVsX2hkbWkgPSBpbnRlbF9hdHRh Y2hlZF9oZG1pKGNvbm5lY3Rvcik7Cj4gIAlzdHJ1Y3QgZWRpZCAqZWRpZDsKPiAgCWJvb2wgY29u bmVjdGVkID0gZmFsc2U7Cj4gKwlzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmkyYzsKPiAgCj4gIAlpbnRl bF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0dNQlVTKTsKPiAgCj4g LQllZGlkID0gZHJtX2dldF9lZGlkKGNvbm5lY3RvciwKPiAtCQkJICAgIGludGVsX2dtYnVzX2dl dF9hZGFwdGVyKGRldl9wcml2LAo+IC0JCQkgICAgaW50ZWxfaGRtaS0+ZGRjX2J1cykpOwo+ICsJ aTJjID0gaW50ZWxfZ21idXNfZ2V0X2FkYXB0ZXIoZGV2X3ByaXYsIGludGVsX2hkbWktPmRkY19i dXMpOwo+ICsKPiArCWVkaWQgPSBkcm1fZ2V0X2VkaWQoY29ubmVjdG9yLCBpMmMpOwo+ICsKPiAr CWlmICghZWRpZCAmJiAhaW50ZWxfZ21idXNfaXNfZm9yY2VkX2JpdChpMmMpKSB7Cj4gKwkJRFJN X0RFQlVHX0tNUygiSERNSSBHTUJVUyBFRElEIHJlYWQgZmFpbGVkLCByZXRyeSB1c2luZyBHUElP IGJpdC1iYW5naW5nXG4iKTsKPiArCQlpbnRlbF9nbWJ1c19mb3JjZV9iaXQoaTJjLCB0cnVlKTsK PiArCQllZGlkID0gZHJtX2dldF9lZGlkKGNvbm5lY3RvciwgaTJjKTsKPiArCQlpbnRlbF9nbWJ1 c19mb3JjZV9iaXQoaTJjLCBmYWxzZSk7Cj4gKwl9Cj4gIAo+ICAJaW50ZWxfaGRtaV9kcF9kdWFs X21vZGVfZGV0ZWN0KGNvbm5lY3RvciwgZWRpZCAhPSBOVUxMKTsKPiAgCj4gLS0gCj4gMi4xNS4x Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBk cmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24K aHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751502AbeAIJGQ (ORCPT + 1 other); Tue, 9 Jan 2018 04:06:16 -0500 Received: from mail-wm0-f66.google.com ([74.125.82.66]:41159 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750915AbeAIJGG (ORCPT ); Tue, 9 Jan 2018 04:06:06 -0500 X-Google-Smtp-Source: ACJfBosMmgFJxlzXYNl2KV3Ask8bvgamQacB1nY1XnFT40f3ITvRAqJhBhTt0uk6KTlMBnF1hhoYgA== Date: Tue, 9 Jan 2018 10:06:02 +0100 From: Daniel Vetter To: Stefan =?iso-8859-1?Q?Br=FCns?= Cc: dri-devel@lists.freedesktop.org, David Airlie , intel-gfx@lists.freedesktop.org, Joonas Lahtinen , linux-kernel@vger.kernel.org, Rodrigo Vivi Subject: Re: [PATCH v2] drm/i915: Try EDID bitbanging on HDMI after failed read Message-ID: <20180109090602.GD26573@phenom.ffwll.local> Mail-Followup-To: Stefan =?iso-8859-1?Q?Br=FCns?= , dri-devel@lists.freedesktop.org, David Airlie , intel-gfx@lists.freedesktop.org, Joonas Lahtinen , linux-kernel@vger.kernel.org, Rodrigo Vivi References: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Operating-System: Linux phenom 4.13.0-1-amd64 User-Agent: Mutt/1.9.1 (2017-09-22) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: On Sun, Dec 31, 2017 at 11:34:54PM +0100, Stefan Brüns wrote: > The ACK/NACK implementation as found in e.g. the G965 has the falling > clock edge and the release of the data line after the ACK for the received > byte happen at the same time. > > This is conformant with the I2C specification, which allows a zero hold > time, see footnote [3]: "A device must internally provide a hold time of > at least 300 ns for the SDA signal (with respect to the V IH(min) of the > SCL signal) to bridge the undefined region of the falling edge of SCL." > > Some HDMI-to-VGA converters apparently fail to adhere to this requirement > and latch SDA at the falling clock edge, so instead of an ACK > sometimes a NACK is read and the slave (i.e. the EDID ROM) ends the > transfer. > > The bitbanging releases the data line for the ACK only 1/4 bit time after > the falling clock edge, so a slave will see the correct value no matter > if it samples at the rising or the falling clock edge or in the center. > > Fallback to bitbanging is already done for the CRT connector. > > Bug: https://bugs.freedesktop.org/show_bug.cgi?id=92685 > > Signed-off-by: Stefan Brüns > > --- > > Changes in v2: > - Fix/enhance commit message, no code changes Ok, found v2, merged this one instead. -Daniel > > drivers/gpu/drm/i915/intel_hdmi.c | 14 +++++++++++--- > 1 file changed, 11 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c > index 4dea833f9d1b..847cda4c017c 100644 > --- a/drivers/gpu/drm/i915/intel_hdmi.c > +++ b/drivers/gpu/drm/i915/intel_hdmi.c > @@ -1573,12 +1573,20 @@ intel_hdmi_set_edid(struct drm_connector *connector) > struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); > struct edid *edid; > bool connected = false; > + struct i2c_adapter *i2c; > > intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS); > > - edid = drm_get_edid(connector, > - intel_gmbus_get_adapter(dev_priv, > - intel_hdmi->ddc_bus)); > + i2c = intel_gmbus_get_adapter(dev_priv, intel_hdmi->ddc_bus); > + > + edid = drm_get_edid(connector, i2c); > + > + if (!edid && !intel_gmbus_is_forced_bit(i2c)) { > + DRM_DEBUG_KMS("HDMI GMBUS EDID read failed, retry using GPIO bit-banging\n"); > + intel_gmbus_force_bit(i2c, true); > + edid = drm_get_edid(connector, i2c); > + intel_gmbus_force_bit(i2c, false); > + } > > intel_hdmi_dp_dual_mode_detect(connector, edid != NULL); > > -- > 2.15.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch