From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mario Kleiner Subject: Re: [PATCH] drm/i915/dp: Try to find proper bpc for DP->legacy converters. (v2) Date: Wed, 18 May 2016 15:52:04 +0200 Message-ID: <573C7384.3050306@gmail.com> References: <1463071438-10786-1-git-send-email-mario.kleiner.de@gmail.com> <20160517065139.GH27098@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id C9EB388A3E for ; Wed, 18 May 2016 13:52:08 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id r12so13106949wme.0 for ; Wed, 18 May 2016 06:52:08 -0700 (PDT) In-Reply-To: <20160517065139.GH27098@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Daniel Vetter , stable@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gMDUvMTcvMjAxNiAwODo1MSBBTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBUaHUsIE1h eSAxMiwgMjAxNiBhdCAwNjo0Mzo1OFBNICswMjAwLCBNYXJpbyBLbGVpbmVyIHdyb3RlOgo+PiBU aGlzIGZpeGVzIGEgcmVncmVzc2lvbiBpbiBvdXRwdXQgcHJlY2lzaW9uIGZvciBEVkkgYW5kIFZH QQo+PiB2aWRlbyBzaW5rcyBjb25uZWN0ZWQgdG8gSW50ZWwgaHcgdmlhIGFjdGl2ZSBEaXNwbGF5 UG9ydC0+RFZJL1ZHQQo+PiBjb252ZXJ0ZXJzLgo+Pgo+PiBUaGUgcmVncmVzc2lvbiB3YXMgaW5k aXJlY3RseSBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCAwMTNkZDllMDM4NzIKPj4gKCJkcm0vaTkxNS9k cDogZmFsbCBiYWNrIHRvIDE4IGJwcCB3aGVuIHNpbmsgY2FwYWJpbGl0eSBpcyB1bmtub3duIiku Cj4+Cj4+IE91ciBjdXJyZW50IGRybSBlZGlkIDEuMyBoYW5kbGluZyBjYW4ndCByZWxpYWJseSBh c3NpZ24gYSBwcm9wZXIKPj4gbWluaW11bSBzdXBwb3J0ZWQgZGlzcGxheSBkZXB0aCBvZiA4IGJw YyB0byBhbGwgRFZJIHNpbmtzLCBhcwo+PiBtYW5kYXRlZCBieSBEVkkgMS4wIHNwZWMsIHNlY3Rp b24gMi4yLjExLjIgIk1vbml0b3IgZGF0YSBmb3JtYXQKPj4gc3VwcG9ydCIsIGJ1dCByZXR1cm5z IDAgYnBjID0gIkRvbid0IGtub3ciIGluc3RlYWQuIEZvciBhbmFsb2cgVkdBCj4+IHNpbmtzIGl0 IGFsc28gcmV0dXJucyAwIGJwYywgYWx0aG91Z2ggdGhvc2Ugc2lua3MgdGhlbXNlbHZlcyBoYXZl Cj4+IGluZmluaXRlIGNvbG9yIGRlcHRoLCBvbmx5IHJlc3RyaWN0ZWQgYnkgdGhlIERBQyByZXNv bHV0aW9uIG9mCj4+IHRoZSBlbmNvZGVyLgo+Pgo+PiBJZiBhIFZHQSBvciBkdWFsLWxpbmsgRFZJ IGRpc3BsYXkgaXMgY29ubmVjdGVkIHZpYSBEaXNwbGF5UG9ydAo+PiBjb25uZWN0b3IgdGhlbiBk dWUgdG8gYWJvdmUgY29tbWl0IHRoZSBkcml2ZXIgd291bGQgZmFsbCBiYWNrIHRvCj4+IG9ubHkg NiBicGMsIHdoaWNoIHdvdWxkIGNhdXNlIGRlZ3JhZGF0aW9uIGZvciBEVkkgYW5kIFZHQSBkaXNw bGF5cywKPj4gYW5ub3lpbmcgaW4gZ2VuZXJhbCwgYnV0IGVzcGVjaWFsbHkgaGFybWZ1bCBmb3Ig YXBwbGljYXRpb24gb2YgZGlzcGxheQo+PiBkZXZpY2VzIHVzZWQgaW4gbmV1cm9zY2llbmNlIHJl c2VhcmNoIGFuZCBmb3IgbWVkaWNhbCBkaWFnbm9zaWMKPj4gd2hpY2ggYWJzb2x1dGVseSBuZWVk IG5hdGl2ZSBub24tZGl0aGVyZWQgOCBicGMgYXQgYSBtaW5pbXVtIHRvCj4+IG9wZXJhdGUgY29y cmVjdGx5Lgo+Pgo+PiBGb3IgRFAgY29ubmVjdG9ycyB3aXRoIGJwYyA9PSAwIGFjY29yZGluZyB0 byBFRElELCBmaXggdGhpcyBwcm9ibGVtCj4+IGJ5IGNoZWNraW5nIHRoZSBkcGNkIGRhdGEgdG8g ZmluZCBvdXQgaWYgYSBEUC0+bGVnYWN5IGNvbnZlcnRlcgo+PiBpcyBjb25uZWN0ZWQuIElmIHRo ZSBjb252ZXJ0ZXIgaXMgRFAtPkRWSS9IRE1JIGFzc3VtZSA4IGJwYwo+PiBkZXB0aC4gSWYgdGhl IGNvbnZlcnRlciBpcyBEUC0+VkdBIGFzc3VtZSBhdCBsZWFzdCA4IGJwYywgYnV0Cj4+IHRyeSB0 byBnZXQgYSBtb3JlIGFjY3VyYXRlIHZhbHVlICg4LCAxMCwgMTIgb3IgMTYgYnBjKSBpZiB0aGUK Pj4gY29udmVydGVyIGV4cG9zZXMgdGhpcyBpbmZvLgo+Pgo+PiBPbmx5IGZvciBhIERQIHNpbmsg d2l0aG91dCBkb3duc3RyZWFtIHBvcnRzIHdlIGFzc3VtZSBpdCBpcyBhIG5hdGl2ZSBEUAo+PiBz aW5rIGFuZCBhcHBseSB0aGUgNiBicGMgLyAxOCBicHAgZmFsbGJhY2sgYXMgcmVxdWlyZWQgYnkg dGhlIERQIHNwZWMuCj4+Cj4+IEFzIHRoZSAiZmFsbCBiYWNrIHRvIDE4IGJwcCIgcGF0Y2ggd2Fz IGJhY2twb3J0ZWQgdG8gc3RhYmxlIHdlIHNob3VsZAo+PiBpbmNsdWRlIHRoaXMgb25lIGFsc28g aW50byBzdGFibGUgdG8gZml4IHRoZSByZWdyZXNzaW9uIGluIGNvbG9yCj4+IHByZWNpc2lvbi4K Pj4KPj4gVGVzdGVkIHdpdGggTWluaURQLT5EUCBhZGFwdGVyLCBNaW5pRFAtPkhETUkgYWRhcHRl ciwKPj4gTWluaURQLT5zaW5nbGUtbGluayBEVkkgYWRhcHRlciwgTWluaURQLT5kdWFsLWxpbmsg RFZJIGFjdGl2ZSBhZGFwdGVyLAo+PiBhbmQgQXBwbGUgTWluaURQLT5WR0EgYWN0aXZlIGFkYXB0 ZXIuCj4+Cj4+IHYyOiBUYWtlIFZpbGxlJ3MgZmVlZGJhY2sgaW50byBhY2NvdW50OiBGb2xkIHRo ZSAxOCBicHAgZmFsbGJhY2sgaW50bwo+PiAgICAgIHRoZSBkZXRlY3Rpb24gZnVuY3Rpb24sIHNv IGl0IG9ubHkgYXBwbGllcyB0byBuYXRpdmUgRFAgc2lua3MuCj4+ICAgICAgUmVuYW1lIGludGVs X2RwX2xlZ2FjeV9icGMoKSB0byBpbnRlbF9kcF9zaW5rX2JwYygpLgo+Pgo+PiBTaWduZWQtb2Zm LWJ5OiBNYXJpbyBLbGVpbmVyIDxtYXJpby5rbGVpbmVyLmRlQGdtYWlsLmNvbT4KPj4gQ2M6IFZp bGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4+IENjOiBEYW5p ZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+PiBDYzogc3RhYmxlQHZnZXIua2Vy bmVsLm9yZwo+PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMg fCAxMiArKysrKystLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICB8 IDU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAxICsKPj4gICAzIGZpbGVzIGNoYW5nZWQsIDY5 IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMKPj4gaW5kZXggYTI5N2UxZi4uN2VmNTJkYiAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+PiBAQCAtMTIwNzIsMTAgKzEyMDcyLDE2IEBAIGNvbm5l Y3RlZF9zaW5rX2NvbXB1dGVfYnBwKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwK Pj4gICAJCWludCB0eXBlID0gY29ubmVjdG9yLT5iYXNlLmNvbm5lY3Rvcl90eXBlOwo+PiAgIAkJ aW50IGNsYW1wX2JwcCA9IDI0Owo+Pgo+PiAtCQkvKiBGYWxsIGJhY2sgdG8gMTggYnBwIHdoZW4g RFAgc2luayBjYXBhYmlsaXR5IGlzIHVua25vd24uICovCj4+ICsJCS8qIE9uIERpc3BsYXlQb3J0 IHRyeSBoYXJkZXIgdG8gZmluZCBzaW5rIGJwYyAqLwo+PiAgIAkJaWYgKHR5cGUgPT0gRFJNX01P REVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0IHx8Cj4+IC0JCSAgICB0eXBlID09IERSTV9NT0RFX0NP Tk5FQ1RPUl9lRFApCj4+IC0JCQljbGFtcF9icHAgPSAxODsKPj4gKwkJICAgIHR5cGUgPT0gRFJN X01PREVfQ09OTkVDVE9SX2VEUCkgewo+PiArCQkJaW50IHNpbmtfYnBjID0gaW50ZWxfZHBfc2lu a19icGMoJmNvbm5lY3Rvci0+YmFzZSk7Cj4+ICsKPj4gKwkJCWlmIChzaW5rX2JwYykgewo+PiAr CQkJCURSTV9ERUJVR19LTVMoIkRQIHNpbmsgd2l0aCBicGMgJWRcbiIsIHNpbmtfYnBjKTsKPj4g KwkJCQljbGFtcF9icHAgPSAzICogc2lua19icGM7Cj4+ICsJCQl9Cj4+ICsJCX0KPj4KPj4gICAJ CWlmIChicHAgPiBjbGFtcF9icHApIHsKPj4gICAJCQlEUk1fREVCVUdfS01TKCJjbGFtcGluZyBk aXNwbGF5IGJwcCAod2FzICVkKSB0byBkZWZhdWx0IGxpbWl0IG9mICVkXG4iLAo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwLmMKPj4gaW5kZXggZjE5MmY1OC4uNGRiYjU1YiAxMDA2NDQKPj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcC5jCj4+IEBAIC02MDQ2LDMgKzYwNDYsNjIgQEAgdm9pZCBpbnRlbF9kcF9t c3RfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAgCQl9Cj4+ICAgCX0KPj4gICB9 Cj4+ICsKPj4gKy8qIFhYWCBOZWVkcyB3b3JrIGZvciBtb3JlIHRoYW4gMSBkb3duc3RyZWFtIHBv cnQgKi8KPj4gK2ludCBpbnRlbF9kcF9zaW5rX2JwYyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yKQo+Cj4gSSB0aGluayB0aGVzZSBraW5kIG9mIGZ1bmN0aW9ucyBhcmUgcHJldHR5IG11 Y2ggd2h5IHdlIGhhdmUgYSBkcCBoZWxlcHIuCj4gQ2FuIHlvdSBwbHMgbW92ZSBpdCB0aGVyZSAo YW5kIGFkZCBrZXJuZWxkb2MgYW5kIGFsbCB0aGUgdXN1YWwKPiBiaXRzJnBpZWNlcykuIFRoZXJl J3MgYWxzbyBvdGhlciBwYXRjaGVzIGluLWZsaWdodCB0byBhZGQgbW9yZSBkb3duc3RyZWFtCj4g cG9ydCBoYW5kbGluZyAuLi4KPiAtRGFuaWVsCgpJIGNhbiBmYWN0b3Igb3V0IHRoZSBwYXJzaW5n IGJpdCBpbnRvIGEgZHAgaGVscGVyIGZ1bmN0aW9uLiBHZXR0aW5nIHRoZSAKZHBjZCBibG9jayBz ZWVtcyB0byBiZSBkcml2ZXIgc3BlY2lmaWMsIHNvIGEgbGl0dGxlIGJpdCBvZiBzdHViIHdvdWxk IGJlIApsZWZ0IGluIHRoZSBrbXMgZHJpdmVyLgoKSG93ZXZlciwgaXMgdGhpcyB0aGVuIHN0aWxs IGZpdC9zbWFsbC9zaW1wbGUgZW5vdWdoIGZvciBiYWNrcG9ydGluZyB0byAKc3RhYmxlIGtlcm5l bHM/IEZpeGluZyB0aGUgZXhpc3RpbmcgcmVncmVzc2lvbiB3aGljaCByZWFjaGVkIHN0YWJsZSAK a2VybmVscyBpcyBpbXBvcnRhbnQuIEluIGNhc2Ugbm90LCB3ZSdkIG5lZWQgc29tZSBzbGlnaHQg ZXh0cmEgYml0cyBhIGxhCgoxLiBBIHBhdGNoIHdoaWNoIHJldmVydHMgSmFuaSdzIGNvbW1pdCB0 aGF0IGNhdXNlZCB0aGUgcmVncmVzc2lvbiAtPiBjYyAKc3RhYmxlLgoKMi4gTXkgcGF0Y2ggd2l0 aCB0aGUgcGFuZWwgcXVpcmsgaGFuZGxpbmcgZm9yIHJlLWZpeGluZyB0aGF0IEZETyBidWcgCnRo YXQgb3JpZ2luYWxseSB3YXMgZml4ZWQgYnkgdGhlIHJldmVydGVkIGNvbW1pdCAtPiBjYyBzdGFi bGUuCgozLiBUaGlzIHN0dWZmIHByb3Blcmx5IHNwbGl0IHVwIGludG8gZHAtaGVscGVyIGV0Yy4s IG5vdCBmb3Igc3RhYmxlLgoKMSsyIHdvdWxkIGJlIGNlcnRhaW5seSBzaW1wbGUgZW5vdWdoIGZv ciBzdGFibGUuCgotbWFyaW8KCj4KPj4gK3sKPj4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw ID0gaW50ZWxfYXR0YWNoZWRfZHAoY29ubmVjdG9yKTsKPj4gKwl1aW50OF90ICpkcGNkID0gaW50 ZWxfZHAtPmRwY2Q7Cj4+ICsJdWludDhfdCB0eXBlOwo+PiArCWludCBicGMgPSAwOwo+PiArCj4+ ICsJLyoKPj4gKwkgKiBJZiB0aGVyZSBpc24ndCBhbnkgZG93bnN0cmVhbSBwb3J0IHRoZW4gdGhp cyBpcyBhIG5hdGl2ZSBEUCBzaW5rLgo+PiArCSAqIFRoZSBzdGFuZGFyZCByZXF1aXJlcyB0byBm YWxsIGJhY2sgdG8gNiBicGMgLyAxOCBicHAgZm9yIG5hdGl2ZSBEUAo+PiArCSAqIHNpbmtzIHdo aWNoIGRvbid0IHByb3ZpZGUgYml0IGRlcHRoIHZpYSBFRElELgo+PiArCSAqLwo+PiArCWlmICgh KGRwY2RbRFBfRE9XTlNUUkVBTVBPUlRfUFJFU0VOVF0gJiBEUF9EV05fU1RSTV9QT1JUX1BSRVNF TlQpKQo+PiArCQlyZXR1cm4gNjsKPj4gKwo+PiArCS8qIEJhc2ljIHR5cGUgb2YgZG93bnN0cmVh bSBwb3J0cyAqLwo+PiArCXR5cGUgPSBkcGNkW0RQX0RPV05TVFJFQU1QT1JUX1BSRVNFTlRdICYg RFBfRFdOX1NUUk1fUE9SVF9UWVBFX01BU0s7Cj4+ICsKPj4gKwkvKgo+PiArCSAqIExhY2tpbmcg b3RoZXIgaW5mbywgOCBicGMgaXMgYSByZWFzb25hYmxlIHN0YXJ0IGZvciBhbmFsb2cgb3V0Lgo+ PiArCSAqIEUuZy4sIEFwcGxlIE1pbmlEUC0+VkdBIGFkYXB0b3JzIGRvbid0IHByb3ZpZGUgbW9y ZSBpbmZvIHRoYW4KPj4gKwkgKiB0aGF0LiBEZXNwaXRlIGhhdmluZyBEUF9EUENEX1JFViA9PSAw eDExIHRoZWlyIGRvd25zdHJlYW1fcG9ydHMKPj4gKwkgKiBkZXNjcmlwdG9yIGlzIGVtcHR5IC0g YWxsIHplcm9zLgo+PiArCSAqLwo+PiArCWlmICh0eXBlID09IERQX0RXTl9TVFJNX1BPUlRfVFlQ RV9BTkFMT0cpCj4+ICsJCWJwYyA9IDg7Cj4+ICsKPj4gKwlpZiAoZHBjZFtEUF9EUENEX1JFVl0g PCAweDExKQo+PiArCQlyZXR1cm4gYnBjOwo+PiArCj4+ICsJLyogUmV2IDEuMSsuIE1vcmUgc3Bl Y2lmaWMgZG93bnN0cmVhbSBwb3J0IHR5cGUgYXZhaWxhYmxlICovCj4+ICsJdHlwZSA9IGludGVs X2RwLT5kb3duc3RyZWFtX3BvcnRzWzBdICYgRFBfRFNfUE9SVF9UWVBFX01BU0s7Cj4+ICsKPj4g KwkvKiBWR0EsIERWSSBhbmQgSERNSSBzdXBwb3J0IGF0IGxlYXN0IDggYnBjICovCj4+ICsJaWYg KHR5cGUgPT0gRFBfRFNfUE9SVF9UWVBFX1ZHQSB8fCB0eXBlID09IERQX0RTX1BPUlRfVFlQRV9E VkkgfHwKPj4gKwkgICAgdHlwZSA9PSBEUF9EU19QT1JUX1RZUEVfSERNSSkKPj4gKwkJYnBjID0g ODsKPj4gKwo+PiArCS8qIEFzIG9mIERQIGludGVyb3AgdjEuMWEgb25seSBWR0EgZGVmaW5lcyBh ZGRpdGlvbmFsIGRldGFpbCAqLwo+PiArCWlmICh0eXBlICE9IERQX0RTX1BPUlRfVFlQRV9WR0Eg fHwKPj4gKwkgICAgIShkcGNkW0RQX0RPV05TVFJFQU1QT1JUX1BSRVNFTlRdICYgRFBfREVUQUlM RURfQ0FQX0lORk9fQVZBSUxBQkxFKSkKPj4gKwkJcmV0dXJuIGJwYzsKPj4gKwo+PiArCS8qIFZH QSB3aXRoIERQX0RFVEFJTEVEX0NBUF9JTkZPX0FWQUlMQUJMRSBwcm92aWRlcyBicGMgaW5mbyAq Lwo+PiArCXN3aXRjaCAoaW50ZWxfZHAtPmRvd25zdHJlYW1fcG9ydHNbMl0gJiBEUF9EU19WR0Ff TUFYX0JQQ19NQVNLKSB7Cj4+ICsJY2FzZSBEUF9EU19WR0FfOEJQQzoKPj4gKwkJcmV0dXJuIDg7 Cj4+ICsJY2FzZSBEUF9EU19WR0FfMTBCUEM6Cj4+ICsJCXJldHVybiAxMDsKPj4gKwljYXNlIERQ X0RTX1ZHQV8xMkJQQzoKPj4gKwkJcmV0dXJuIDEyOwo+PiArCWNhc2UgRFBfRFNfVkdBXzE2QlBD Ogo+PiArCQlyZXR1cm4gMTY7Cj4+ICsJfQo+PiArCj4+ICsJcmV0dXJuIGJwYzsKPj4gK30KPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gaW5kZXggMzE1Yzk3MS4uYmRjOTc3YyAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gQEAgLTEzMDYsNiArMTMwNiw3IEBAIHZvaWQg aW50ZWxfZWRwX3BhbmVsX29mZihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPj4gICB2b2lk IGludGVsX2RwX2FkZF9wcm9wZXJ0aWVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpOwo+PiAgIHZvaWQgaW50ZWxfZHBfbXN0X3N1c3Bl bmQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4+ICAgdm9pZCBpbnRlbF9kcF9tc3RfcmVzdW1l KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+PiAraW50IGludGVsX2RwX3NpbmtfYnBjKHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpOwo+PiAgIGludCBpbnRlbF9kcF9tYXhfbGlua19y YXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+PiAgIGludCBpbnRlbF9kcF9yYXRlX3Nl bGVjdChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgcmF0ZSk7Cj4+ICAgdm9pZCBpbnRl bF9kcF9ob3RfcGx1ZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2Rlcik7Cj4+IC0t Cj4+IDIuNy4wCj4+Cj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f66.google.com ([74.125.82.66]:35460 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932099AbcERNwJ (ORCPT ); Wed, 18 May 2016 09:52:09 -0400 Received: by mail-wm0-f66.google.com with SMTP id g17so6517343wme.2 for ; Wed, 18 May 2016 06:52:08 -0700 (PDT) Subject: Re: [PATCH] drm/i915/dp: Try to find proper bpc for DP->legacy converters. (v2) To: Daniel Vetter References: <1463071438-10786-1-git-send-email-mario.kleiner.de@gmail.com> <20160517065139.GH27098@phenom.ffwll.local> Cc: dri-devel@lists.freedesktop.org, =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= , Daniel Vetter , stable@vger.kernel.org From: Mario Kleiner Message-ID: <573C7384.3050306@gmail.com> Date: Wed, 18 May 2016 15:52:04 +0200 MIME-Version: 1.0 In-Reply-To: <20160517065139.GH27098@phenom.ffwll.local> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org List-ID: On 05/17/2016 08:51 AM, Daniel Vetter wrote: > On Thu, May 12, 2016 at 06:43:58PM +0200, Mario Kleiner wrote: >> This fixes a regression in output precision for DVI and VGA >> video sinks connected to Intel hw via active DisplayPort->DVI/VGA >> converters. >> >> The regression was indirectly introduced by commit 013dd9e03872 >> ("drm/i915/dp: fall back to 18 bpp when sink capability is unknown"). >> >> Our current drm edid 1.3 handling can't reliably assign a proper >> minimum supported display depth of 8 bpc to all DVI sinks, as >> mandated by DVI 1.0 spec, section 2.2.11.2 "Monitor data format >> support", but returns 0 bpc = "Don't know" instead. For analog VGA >> sinks it also returns 0 bpc, although those sinks themselves have >> infinite color depth, only restricted by the DAC resolution of >> the encoder. >> >> If a VGA or dual-link DVI display is connected via DisplayPort >> connector then due to above commit the driver would fall back to >> only 6 bpc, which would cause degradation for DVI and VGA displays, >> annoying in general, but especially harmful for application of display >> devices used in neuroscience research and for medical diagnosic >> which absolutely need native non-dithered 8 bpc at a minimum to >> operate correctly. >> >> For DP connectors with bpc == 0 according to EDID, fix this problem >> by checking the dpcd data to find out if a DP->legacy converter >> is connected. If the converter is DP->DVI/HDMI assume 8 bpc >> depth. If the converter is DP->VGA assume at least 8 bpc, but >> try to get a more accurate value (8, 10, 12 or 16 bpc) if the >> converter exposes this info. >> >> Only for a DP sink without downstream ports we assume it is a native DP >> sink and apply the 6 bpc / 18 bpp fallback as required by the DP spec. >> >> As the "fall back to 18 bpp" patch was backported to stable we should >> include this one also into stable to fix the regression in color >> precision. >> >> Tested with MiniDP->DP adapter, MiniDP->HDMI adapter, >> MiniDP->single-link DVI adapter, MiniDP->dual-link DVI active adapter, >> and Apple MiniDP->VGA active adapter. >> >> v2: Take Ville's feedback into account: Fold the 18 bpp fallback into >> the detection function, so it only applies to native DP sinks. >> Rename intel_dp_legacy_bpc() to intel_dp_sink_bpc(). >> >> Signed-off-by: Mario Kleiner >> Cc: Ville Syrj�l� >> Cc: Daniel Vetter >> Cc: stable@vger.kernel.org >> --- >> drivers/gpu/drm/i915/intel_display.c | 12 ++++++-- >> drivers/gpu/drm/i915/intel_dp.c | 59 ++++++++++++++++++++++++++++++++++++ >> drivers/gpu/drm/i915/intel_drv.h | 1 + >> 3 files changed, 69 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c >> index a297e1f..7ef52db 100644 >> --- a/drivers/gpu/drm/i915/intel_display.c >> +++ b/drivers/gpu/drm/i915/intel_display.c >> @@ -12072,10 +12072,16 @@ connected_sink_compute_bpp(struct intel_connector *connector, >> int type = connector->base.connector_type; >> int clamp_bpp = 24; >> >> - /* Fall back to 18 bpp when DP sink capability is unknown. */ >> + /* On DisplayPort try harder to find sink bpc */ >> if (type == DRM_MODE_CONNECTOR_DisplayPort || >> - type == DRM_MODE_CONNECTOR_eDP) >> - clamp_bpp = 18; >> + type == DRM_MODE_CONNECTOR_eDP) { >> + int sink_bpc = intel_dp_sink_bpc(&connector->base); >> + >> + if (sink_bpc) { >> + DRM_DEBUG_KMS("DP sink with bpc %d\n", sink_bpc); >> + clamp_bpp = 3 * sink_bpc; >> + } >> + } >> >> if (bpp > clamp_bpp) { >> DRM_DEBUG_KMS("clamping display bpp (was %d) to default limit of %d\n", >> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c >> index f192f58..4dbb55b 100644 >> --- a/drivers/gpu/drm/i915/intel_dp.c >> +++ b/drivers/gpu/drm/i915/intel_dp.c >> @@ -6046,3 +6046,62 @@ void intel_dp_mst_resume(struct drm_device *dev) >> } >> } >> } >> + >> +/* XXX Needs work for more than 1 downstream port */ >> +int intel_dp_sink_bpc(struct drm_connector *connector) > > I think these kind of functions are pretty much why we have a dp helepr. > Can you pls move it there (and add kerneldoc and all the usual > bits&pieces). There's also other patches in-flight to add more downstream > port handling ... > -Daniel I can factor out the parsing bit into a dp helper function. Getting the dpcd block seems to be driver specific, so a little bit of stub would be left in the kms driver. However, is this then still fit/small/simple enough for backporting to stable kernels? Fixing the existing regression which reached stable kernels is important. In case not, we'd need some slight extra bits a la 1. A patch which reverts Jani's commit that caused the regression -> cc stable. 2. My patch with the panel quirk handling for re-fixing that FDO bug that originally was fixed by the reverted commit -> cc stable. 3. This stuff properly split up into dp-helper etc., not for stable. 1+2 would be certainly simple enough for stable. -mario > >> +{ >> + struct intel_dp *intel_dp = intel_attached_dp(connector); >> + uint8_t *dpcd = intel_dp->dpcd; >> + uint8_t type; >> + int bpc = 0; >> + >> + /* >> + * If there isn't any downstream port then this is a native DP sink. >> + * The standard requires to fall back to 6 bpc / 18 bpp for native DP >> + * sinks which don't provide bit depth via EDID. >> + */ >> + if (!(dpcd[DP_DOWNSTREAMPORT_PRESENT] & DP_DWN_STRM_PORT_PRESENT)) >> + return 6; >> + >> + /* Basic type of downstream ports */ >> + type = dpcd[DP_DOWNSTREAMPORT_PRESENT] & DP_DWN_STRM_PORT_TYPE_MASK; >> + >> + /* >> + * Lacking other info, 8 bpc is a reasonable start for analog out. >> + * E.g., Apple MiniDP->VGA adaptors don't provide more info than >> + * that. Despite having DP_DPCD_REV == 0x11 their downstream_ports >> + * descriptor is empty - all zeros. >> + */ >> + if (type == DP_DWN_STRM_PORT_TYPE_ANALOG) >> + bpc = 8; >> + >> + if (dpcd[DP_DPCD_REV] < 0x11) >> + return bpc; >> + >> + /* Rev 1.1+. More specific downstream port type available */ >> + type = intel_dp->downstream_ports[0] & DP_DS_PORT_TYPE_MASK; >> + >> + /* VGA, DVI and HDMI support at least 8 bpc */ >> + if (type == DP_DS_PORT_TYPE_VGA || type == DP_DS_PORT_TYPE_DVI || >> + type == DP_DS_PORT_TYPE_HDMI) >> + bpc = 8; >> + >> + /* As of DP interop v1.1a only VGA defines additional detail */ >> + if (type != DP_DS_PORT_TYPE_VGA || >> + !(dpcd[DP_DOWNSTREAMPORT_PRESENT] & DP_DETAILED_CAP_INFO_AVAILABLE)) >> + return bpc; >> + >> + /* VGA with DP_DETAILED_CAP_INFO_AVAILABLE provides bpc info */ >> + switch (intel_dp->downstream_ports[2] & DP_DS_VGA_MAX_BPC_MASK) { >> + case DP_DS_VGA_8BPC: >> + return 8; >> + case DP_DS_VGA_10BPC: >> + return 10; >> + case DP_DS_VGA_12BPC: >> + return 12; >> + case DP_DS_VGA_16BPC: >> + return 16; >> + } >> + >> + return bpc; >> +} >> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h >> index 315c971..bdc977c 100644 >> --- a/drivers/gpu/drm/i915/intel_drv.h >> +++ b/drivers/gpu/drm/i915/intel_drv.h >> @@ -1306,6 +1306,7 @@ void intel_edp_panel_off(struct intel_dp *intel_dp); >> void intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connector); >> void intel_dp_mst_suspend(struct drm_device *dev); >> void intel_dp_mst_resume(struct drm_device *dev); >> +int intel_dp_sink_bpc(struct drm_connector *connector); >> int intel_dp_max_link_rate(struct intel_dp *intel_dp); >> int intel_dp_rate_select(struct intel_dp *intel_dp, int rate); >> void intel_dp_hot_plug(struct intel_encoder *intel_encoder); >> -- >> 2.7.0 >> >