From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [Intel-gfx] [PATCH 2/2] drm/i915: Get rid of intel_dp_dpcd_read_wake() Date: Fri, 18 Mar 2016 18:41:40 +0200 Message-ID: <20160318164140.GO4329@intel.com> References: <1458229245-8634-1-git-send-email-cpaul@redhat.com> <1458229245-8634-2-git-send-email-cpaul@redhat.com> <20160318141345.GG4329@intel.com> <20160318161235.GN4329@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20160318161235.GN4329@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Lyude Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, arthur.j.runyan@intel.com, open list , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBNYXIgMTgsIDIwMTYgYXQgMDY6MTI6MzVQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIEZyaSwgTWFyIDE4LCAyMDE2IGF0IDA0OjEzOjQ1UE0gKzAyMDAsIFZpbGxl IFN5cmrDpGzDpCB3cm90ZToKPiA+IE9uIFRodSwgTWFyIDE3LCAyMDE2IGF0IDExOjQwOjQ1QU0g LTA0MDAsIEx5dWRlIHdyb3RlOgo+ID4gPiBTaW5jZSB3ZSd2ZSBmaXhlZCB1cCBkcm1fZHBfZHBj ZF9yZWFkKCkgdG8gYWxsb3cgZm9yIHJldHJpZXMgd2hlbiB0aGluZ3MKPiA+ID4gdGltZW91dCwg dGhlcmUncyBubyB1c2UgZm9yIGhhdmluZyB0aGlzIGZ1bmN0aW9uIGFueW1vcmUuIEdvb2Qgcmlk ZGVucy4KPiA+ID4gCj4gPiA+IFNpZ25lZC1vZmYtYnk6IEx5dWRlIDxjcGF1bEByZWRoYXQuY29t Pgo+ID4gPiAtLS0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgfCA3OSAr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gPiAgMSBmaWxlIGNo YW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDU3IGRlbGV0aW9ucygtKQo+ID4gPiAKPiA+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcC5jCj4gPiA+IGluZGV4IGNkYzJjMTUuLmZiNGNiYmU1IDEwMDY0NAo+ ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+ID4gQEAgLTMxOTAsNDcgKzMxOTAsMTQg QEAgc3RhdGljIHZvaWQgY2h2X2RwX3Bvc3RfcGxsX2Rpc2FibGUoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIpCj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gIC8qCj4gPiA+IC0gKiBOYXRpdmUg cmVhZCB3aXRoIHJldHJ5IGZvciBsaW5rIHN0YXR1cyBhbmQgcmVjZWl2ZXIgY2FwYWJpbGl0eSBy ZWFkcyBmb3IKPiA+ID4gLSAqIGNhc2VzIHdoZXJlIHRoZSBzaW5rIG1heSBzdGlsbCBiZSBhc2xl ZXAuCj4gPiA+IC0gKgo+ID4gPiAtICogU2lua3MgYXJlICpzdXBwb3NlZCogdG8gY29tZSB1cCB3 aXRoaW4gMW1zIGZyb20gYW4gb2ZmIHN0YXRlLCBidXQgd2UncmUgYWxzbwo+ID4gPiAtICogc3Vw cG9zZWQgdG8gcmV0cnkgMyB0aW1lcyBwZXIgdGhlIHNwZWMuCj4gPiA+IC0gKi8KPiA+ID4gLXN0 YXRpYyBzc2l6ZV90Cj4gPiA+IC1pbnRlbF9kcF9kcGNkX3JlYWRfd2FrZShzdHJ1Y3QgZHJtX2Rw X2F1eCAqYXV4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAo+ID4gPiAtCQkJdm9pZCAqYnVmZmVyLCBz aXplX3Qgc2l6ZSkKPiA+ID4gLXsKPiA+ID4gLQlzc2l6ZV90IHJldDsKPiA+ID4gLQlpbnQgaTsK PiA+ID4gLQo+ID4gPiAtCS8qCj4gPiA+IC0JICogU29tZXRpbWUgd2UganVzdCBnZXQgdGhlIHNh bWUgaW5jb3JyZWN0IGJ5dGUgcmVwZWF0ZWQKPiA+ID4gLQkgKiBvdmVyIHRoZSBlbnRpcmUgYnVm ZmVyLiBEb2luZyBqdXN0IG9uZSB0aHJvdyBhd2F5IHJlYWQKPiA+ID4gLQkgKiBpbml0aWFsbHkg c2VlbXMgdG8gInNvbHZlIiBpdC4KPiA+ID4gLQkgKi8KPiA+ID4gLQlkcm1fZHBfZHBjZF9yZWFk KGF1eCwgRFBfRFBDRF9SRVYsIGJ1ZmZlciwgMSk7Cj4gPiAKPiA+IE5BSwo+ID4gCj4gPiBJZiBw ZW9wbGUga2VlcCBpbnRlbnRpb25hbGx5IGJyZWFraW5nIG15IHNoaXQgSSdtIGdvaW5nIHRvIGJl Y29tZQo+ID4gcmVhbGx5IGdydW1weSBzb29uLgo+IAo+IE9oLCBhbmQganVzdCBpbiBjYXNlIHNv bWVvbmUgd2FudHMgdG8gY29tZSB1cCB3aXRoIGEgYmV0dGVyIGtsdWRnZSwKPiBJIGp1c3Qgc3Bl bnQgYSBmZXcgbWludXRlcyBhbmFseXppbmcgdGhlIGJlaGF2aW9yIG9mIHRoaXMgY3JhcHB5Cj4g bW9uaXRvciBhLgo+IAo+IFdoYXQgaGFwcGVucyBpcyB0aGF0IHdoZW4gdGhlIG1vbml0b3IgaXMg ZnVsbHkgcG93ZXJlZCB1cCAoTEVEIGlzIGJsdWUpCj4gdGhpbmdzIGFyZSBmaW5lLiBBZnRlciB0 aGUgbW9uaXRvciBnb2VzIHRvIHNsZWVwIChMRUQgdHVybnMgb3JhbmdlKQo+IHRoZSBmaXJzdCBE UENEIHJlYWQgd2lsbCBwcm9kdWNlIGdhcmJhZ2UuIEZ1cnRoZXIgRFBDRCByZWFkcyBhcmUgZmlu ZSwKPiBldmVuIGlmIEkgd2FpdCBhIHNpZ25pZmljYW50IGFtb3VudCBvZiB0aW1lIGJldHdlZW4g dGhlIHJlYWRzLCBhcyBsb25nCj4gYXMgdGhlIG1vbml0b3IgZGlkbid0IGRvIGEgcG93ZXIgb24t Pm9mZiBjeWNsZSBpbiBiZXR3ZWVuLiBTbyBpdCBsb29rcwo+IGxpa2UgaXQncyBhbHdheXMganVz dCB0aGUgZmlyc3QgcmVhZCBhZnRlciBwb3dlciBkb3duIHRoYXQgZ2V0cwo+IGNvcnJ1cHRlZC4K PiAKPiBOb3cgSSB0aGluayBJJ2xsIGdvIGFuZCB0ZXN0IGhvdyB3cml0ZXMgYmVoYXZlLCBhc3N1 bWluZyBJIGNhbiBmaW5kIGEKPiBkZWNlbnRseSBzaXplZCBjaHVuayBvZiBEUENEIGFkZHJlc3Mg c3BhY2UgSSBjYW4gd3JpdGUuIEFuZCBtYXliZSBJCj4gc2hvdWxkIGFsc28gdHJ5IGkyYy1vdmVy LWF1eC4uLgoKVGhlIGZpcnN0IERQQ0Qgd3JpdGUgYWZ0ZXIgcG93ZXJkb3duIGFsc28gZ290IGNv cnJ1cHRlZC4gQnV0IGkyYy1vdmVyLWF1eApzZWVtcyB1bmFmZmVjdGVkIGZvciB3aGF0ZXZlciBy ZWFzb24uCgo+ICAKPiA+IAo+ID4gPiAtCj4gPiA+IC0JZm9yIChpID0gMDsgaSA8IDM7IGkrKykg ewo+ID4gPiAtCQlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkKGF1eCwgb2Zmc2V0LCBidWZmZXIsIHNp emUpOwo+ID4gPiAtCQlpZiAocmV0ID09IHNpemUpCj4gPiA+IC0JCQlyZXR1cm4gcmV0Owo+ID4g PiAtCQltc2xlZXAoMSk7Cj4gPiA+IC0JfQo+ID4gPiAtCj4gPiA+IC0JcmV0dXJuIHJldDsKPiA+ ID4gLX0KPiA+ID4gLQo+ID4gPiAtLyoKPiA+ID4gICAqIEZldGNoIEFVWCBDSCByZWdpc3RlcnMg MHgyMDIgLSAweDIwNyB3aGljaCBjb250YWluCj4gPiA+ICAgKiBsaW5rIHN0YXR1cyBpbmZvcm1h dGlvbgo+ID4gPiAgICovCj4gPiA+ICBib29sCj4gPiA+ICBpbnRlbF9kcF9nZXRfbGlua19zdGF0 dXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdWludDhfdCBsaW5rX3N0YXR1c1tEUF9MSU5L X1NUQVRVU19TSVpFXSkKPiA+ID4gIHsKPiA+ID4gLQlyZXR1cm4gaW50ZWxfZHBfZHBjZF9yZWFk X3dha2UoJmludGVsX2RwLT5hdXgsCj4gPiA+IC0JCQkJICAgICAgIERQX0xBTkUwXzFfU1RBVFVT LAo+ID4gPiAtCQkJCSAgICAgICBsaW5rX3N0YXR1cywKPiA+ID4gLQkJCQkgICAgICAgRFBfTElO S19TVEFUVVNfU0laRSkgPT0gRFBfTElOS19TVEFUVVNfU0laRTsKPiA+ID4gKwlyZXR1cm4gZHJt X2RwX2RwY2RfcmVhZCgmaW50ZWxfZHAtPmF1eCwgRFBfTEFORTBfMV9TVEFUVVMsIGxpbmtfc3Rh dHVzLAo+ID4gPiArCQkJCURQX0xJTktfU1RBVFVTX1NJWkUpID09IERQX0xJTktfU1RBVFVTX1NJ WkU7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gIC8qIFRoZXNlIGFyZSBzb3VyY2Utc3BlY2lmaWMg dmFsdWVzLiAqLwo+ID4gPiBAQCAtMzg2NSw4ICszODMyLDggQEAgaW50ZWxfZHBfZ2V0X2RwY2Qo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4gPiAgCXVpbnQ4X3QgcmV2Owo+ID4g PiAgCj4gPiA+IC0JaWYgKGludGVsX2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LCAw eDAwMCwgaW50ZWxfZHAtPmRwY2QsCj4gPiA+IC0JCQkJICAgIHNpemVvZihpbnRlbF9kcC0+ZHBj ZCkpIDwgMCkKPiA+ID4gKwlpZiAoZHJtX2RwX2RwY2RfcmVhZCgmaW50ZWxfZHAtPmF1eCwgMHgw MDAsIGludGVsX2RwLT5kcGNkLAo+ID4gPiArCQkJICAgICBzaXplb2YoaW50ZWxfZHAtPmRwY2Qp KSA8IDApCj4gPiA+ICAJCXJldHVybiBmYWxzZTsgLyogYXV4IHRyYW5zZmVyIGZhaWxlZCAqLwo+ ID4gPiAgCj4gPiA+ICAJRFJNX0RFQlVHX0tNUygiRFBDRDogJSpwaFxuIiwgKGludCkgc2l6ZW9m KGludGVsX2RwLT5kcGNkKSwgaW50ZWxfZHAtPmRwY2QpOwo+ID4gPiBAQCAtMzg3Nyw5ICszODQ0 LDkgQEAgaW50ZWxfZHBfZ2V0X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ID4g IAkvKiBDaGVjayBpZiB0aGUgcGFuZWwgc3VwcG9ydHMgUFNSICovCj4gPiA+ICAJbWVtc2V0KGlu dGVsX2RwLT5wc3JfZHBjZCwgMCwgc2l6ZW9mKGludGVsX2RwLT5wc3JfZHBjZCkpOwo+ID4gPiAg CWlmIChpc19lZHAoaW50ZWxfZHApKSB7Cj4gPiA+IC0JCWludGVsX2RwX2RwY2RfcmVhZF93YWtl KCZpbnRlbF9kcC0+YXV4LCBEUF9QU1JfU1VQUE9SVCwKPiA+ID4gLQkJCQkJaW50ZWxfZHAtPnBz cl9kcGNkLAo+ID4gPiAtCQkJCQlzaXplb2YoaW50ZWxfZHAtPnBzcl9kcGNkKSk7Cj4gPiA+ICsJ CWRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RwLT5hdXgsIERQX1BTUl9TVVBQT1JULAo+ID4gPiAr CQkJCSBpbnRlbF9kcC0+cHNyX2RwY2QsCj4gPiA+ICsJCQkJIHNpemVvZihpbnRlbF9kcC0+cHNy X2RwY2QpKTsKPiA+ID4gIAkJaWYgKGludGVsX2RwLT5wc3JfZHBjZFswXSAmIERQX1BTUl9JU19T VVBQT1JURUQpIHsKPiA+ID4gIAkJCWRldl9wcml2LT5wc3Iuc2lua19zdXBwb3J0ID0gdHJ1ZTsK PiA+ID4gIAkJCURSTV9ERUJVR19LTVMoIkRldGVjdGVkIEVEUCBQU1IgUGFuZWwuXG4iKTsKPiA+ ID4gQEAgLTM4OTAsOSArMzg1Nyw5IEBAIGludGVsX2RwX2dldF9kcGNkKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApCj4gPiA+ICAJCQl1aW50OF90IGZyYW1lX3N5bmNfY2FwOwo+ID4gPiAgCj4g PiA+ICAJCQlkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydCA9IHRydWU7Cj4gPiA+IC0JCQlpbnRl bF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwKPiA+ID4gLQkJCQkJRFBfU0lOS19E RVZJQ0VfQVVYX0ZSQU1FX1NZTkNfQ0FQLAo+ID4gPiAtCQkJCQkmZnJhbWVfc3luY19jYXAsIDEp Owo+ID4gPiArCQkJZHJtX2RwX2RwY2RfcmVhZCgmaW50ZWxfZHAtPmF1eCwKPiA+ID4gKwkJCQkJ IERQX1NJTktfREVWSUNFX0FVWF9GUkFNRV9TWU5DX0NBUCwKPiA+ID4gKwkJCQkJICZmcmFtZV9z eW5jX2NhcCwgMSk7Cj4gPiA+ICAJCQlkZXZfcHJpdi0+cHNyLmF1eF9mcmFtZV9zeW5jID0gZnJh bWVfc3luY19jYXAgPyB0cnVlIDogZmFsc2U7Cj4gPiA+ICAJCQkvKiBQU1IyIG5lZWRzIGZyYW1l IHN5bmMgYXMgd2VsbCAqLwo+ID4gPiAgCQkJZGV2X3ByaXYtPnBzci5wc3IyX3N1cHBvcnQgPSBk ZXZfcHJpdi0+cHNyLmF1eF9mcmFtZV9zeW5jOwo+ID4gPiBAQCAtMzkwOCwxNSArMzg3NSwxMyBA QCBpbnRlbF9kcF9nZXRfZHBjZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gPiAgCS8q IEludGVybWVkaWF0ZSBmcmVxdWVuY3kgc3VwcG9ydCAqLwo+ID4gPiAgCWlmIChpc19lZHAoaW50 ZWxfZHApICYmCj4gPiA+ICAJICAgIChpbnRlbF9kcC0+ZHBjZFtEUF9FRFBfQ09ORklHVVJBVElP Tl9DQVBdICYJRFBfRFBDRF9ESVNQTEFZX0NPTlRST0xfQ0FQQUJMRSkgJiYKPiA+ID4gLQkgICAg KGludGVsX2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LCBEUF9FRFBfRFBDRF9SRVYs ICZyZXYsIDEpID09IDEpICYmCj4gPiA+ICsJICAgIChkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9k cC0+YXV4LCBEUF9FRFBfRFBDRF9SRVYsICZyZXYsIDEpID09IDEpICYmCj4gPiA+ICAJICAgIChy ZXYgPj0gMHgwMykpIHsgLyogZURwIHYxLjQgb3IgaGlnaGVyICovCj4gPiA+ICAJCV9fbGUxNiBz aW5rX3JhdGVzW0RQX01BWF9TVVBQT1JURURfUkFURVNdOwo+ID4gPiAgCQlpbnQgaTsKPiA+ID4g IAo+ID4gPiAtCQlpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwKPiA+ID4g LQkJCQlEUF9TVVBQT1JURURfTElOS19SQVRFUywKPiA+ID4gLQkJCQlzaW5rX3JhdGVzLAo+ID4g PiAtCQkJCXNpemVvZihzaW5rX3JhdGVzKSk7Cj4gPiA+ICsJCWRybV9kcF9kcGNkX3JlYWQoJmlu dGVsX2RwLT5hdXgsIERQX1NVUFBPUlRFRF9MSU5LX1JBVEVTLAo+ID4gPiArCQkJCXNpbmtfcmF0 ZXMsIHNpemVvZihzaW5rX3JhdGVzKSk7Cj4gPiA+ICAKPiA+ID4gIAkJZm9yIChpID0gMDsgaSA8 IEFSUkFZX1NJWkUoc2lua19yYXRlcyk7IGkrKykgewo+ID4gPiAgCQkJaW50IHZhbCA9IGxlMTZf dG9fY3B1KHNpbmtfcmF0ZXNbaV0pOwo+ID4gPiBAQCAtMzkzOSw5ICszOTA0LDkgQEAgaW50ZWxf ZHBfZ2V0X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ID4gIAlpZiAoaW50ZWxf ZHAtPmRwY2RbRFBfRFBDRF9SRVZdID09IDB4MTApCj4gPiA+ICAJCXJldHVybiB0cnVlOyAvKiBu byBwZXItcG9ydCBkb3duc3RyZWFtIGluZm8gKi8KPiA+ID4gIAo+ID4gPiAtCWlmIChpbnRlbF9k cF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwgRFBfRE9XTlNUUkVBTV9QT1JUXzAsCj4g PiA+IC0JCQkJICAgIGludGVsX2RwLT5kb3duc3RyZWFtX3BvcnRzLAo+ID4gPiAtCQkJCSAgICBE UF9NQVhfRE9XTlNUUkVBTV9QT1JUUykgPCAwKQo+ID4gPiArCWlmIChkcm1fZHBfZHBjZF9yZWFk KCZpbnRlbF9kcC0+YXV4LCBEUF9ET1dOU1RSRUFNX1BPUlRfMCwKPiA+ID4gKwkJCSAgICAgaW50 ZWxfZHAtPmRvd25zdHJlYW1fcG9ydHMsCj4gPiA+ICsJCQkgICAgIERQX01BWF9ET1dOU1RSRUFN X1BPUlRTKSA8IDApCj4gPiA+ICAJCXJldHVybiBmYWxzZTsgLyogZG93bnN0cmVhbSBwb3J0IHN0 YXR1cyBmZXRjaCBmYWlsZWQgKi8KPiA+ID4gIAo+ID4gPiAgCXJldHVybiB0cnVlOwo+ID4gPiBA QCAtMzk1NSwxMSArMzkyMCwxMSBAQCBpbnRlbF9kcF9wcm9iZV9vdWkoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKPiA+ID4gIAlpZiAoIShpbnRlbF9kcC0+ZHBjZFtEUF9ET1dOX1NUUkVBTV9Q T1JUX0NPVU5UXSAmIERQX09VSV9TVVBQT1JUKSkKPiA+ID4gIAkJcmV0dXJuOwo+ID4gPiAgCj4g PiA+IC0JaWYgKGludGVsX2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LCBEUF9TSU5L X09VSSwgYnVmLCAzKSA9PSAzKQo+ID4gPiArCWlmIChkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9k cC0+YXV4LCBEUF9TSU5LX09VSSwgYnVmLCAzKSA9PSAzKQo+ID4gPiAgCQlEUk1fREVCVUdfS01T KCJTaW5rIE9VSTogJTAyaHglMDJoeCUwMmh4XG4iLAo+ID4gPiAgCQkJICAgICAgYnVmWzBdLCBi dWZbMV0sIGJ1ZlsyXSk7Cj4gPiA+ICAKPiA+ID4gLQlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dh a2UoJmludGVsX2RwLT5hdXgsIERQX0JSQU5DSF9PVUksIGJ1ZiwgMykgPT0gMykKPiA+ID4gKwlp ZiAoZHJtX2RwX2RwY2RfcmVhZCgmaW50ZWxfZHAtPmF1eCwgRFBfQlJBTkNIX09VSSwgYnVmLCAz KSA9PSAzKQo+ID4gPiAgCQlEUk1fREVCVUdfS01TKCJCcmFuY2ggT1VJOiAlMDJoeCUwMmh4JTAy aHhcbiIsCj4gPiA+ICAJCQkgICAgICBidWZbMF0sIGJ1ZlsxXSwgYnVmWzJdKTsKPiA+ID4gIH0K PiA+ID4gQEAgLTM5NzUsNyArMzk0MCw3IEBAIGludGVsX2RwX3Byb2JlX21zdChzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwKQo+ID4gPiAgCWlmIChpbnRlbF9kcC0+ZHBjZFtEUF9EUENEX1JFVl0g PCAweDEyKQo+ID4gPiAgCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICAKPiA+ID4gLQlpZiAoaW50ZWxf ZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsIERQX01TVE1fQ0FQLCBidWYsIDEpKSB7 Cj4gPiA+ICsJaWYgKGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RwLT5hdXgsIERQX01TVE1fQ0FQ LCBidWYsIDEpKSB7Cj4gPiA+ICAJCWlmIChidWZbMF0gJiBEUF9NU1RfQ0FQKSB7Cj4gPiA+ICAJ CQlEUk1fREVCVUdfS01TKCJTaW5rIGlzIE1TVCBjYXBhYmxlXG4iKTsKPiA+ID4gIAkJCWludGVs X2RwLT5pc19tc3QgPSB0cnVlOwo+ID4gPiBAQCAtNDExMiw3ICs0MDc3LDcgQEAgc3RvcDoKPiA+ ID4gIHN0YXRpYyBib29sCj4gPiA+ICBpbnRlbF9kcF9nZXRfc2lua19pcnEoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCwgdTggKnNpbmtfaXJxX3ZlY3RvcikKPiA+ID4gIHsKPiA+ID4gLQlyZXR1 cm4gaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsCj4gPiA+ICsJcmV0dXJu IGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RwLT5hdXgsCj4gPiA+ICAJCQkJICAgICAgIERQX0RF VklDRV9TRVJWSUNFX0lSUV9WRUNUT1IsCj4gPiA+ICAJCQkJICAgICAgIHNpbmtfaXJxX3ZlY3Rv ciwgMSkgPT0gMTsKPiA+ID4gIH0KPiA+ID4gQEAgLTQxMjIsNyArNDA4Nyw3IEBAIGludGVsX2Rw X2dldF9zaW5rX2lycV9lc2koc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdTggKnNpbmtfaXJx X3ZlY3RvcikKPiA+ID4gIHsKPiA+ID4gIAlpbnQgcmV0Owo+ID4gPiAgCj4gPiA+IC0JcmV0ID0g aW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsCj4gPiA+ICsJcmV0ID0gZHJt X2RwX2RwY2RfcmVhZCgmaW50ZWxfZHAtPmF1eCwKPiA+ID4gIAkJCQkJICAgICBEUF9TSU5LX0NP VU5UX0VTSSwKPiA+ID4gIAkJCQkJICAgICBzaW5rX2lycV92ZWN0b3IsIDE0KTsKPiA+ID4gIAlp ZiAocmV0ICE9IDE0KQo+ID4gPiBAQCAtNDM4Myw3ICs0MzQ4LDcgQEAgaW50ZWxfZHBfZGV0ZWN0 X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ID4gIAkgICAgaW50ZWxfZHAtPmRv d25zdHJlYW1fcG9ydHNbMF0gJiBEUF9EU19QT1JUX0hQRCkgewo+ID4gPiAgCQl1aW50OF90IHJl ZzsKPiA+ID4gIAo+ID4gPiAtCQlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2Rw LT5hdXgsIERQX1NJTktfQ09VTlQsCj4gPiA+ICsJCWlmIChkcm1fZHBfZHBjZF9yZWFkKCZpbnRl bF9kcC0+YXV4LCBEUF9TSU5LX0NPVU5ULAo+ID4gPiAgCQkJCQkgICAgJnJlZywgMSkgPCAwKQo+ ID4gPiAgCQkJcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfdW5rbm93bjsKPiA+ID4gIAo+ID4gPiAt LSAKPiA+ID4gMi41LjAKPiA+ID4gCj4gPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4gPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+ID4gSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+ID4gCj4gPiAtLSAKPiA+IFZpbGxl IFN5cmrDpGzDpAo+ID4gSW50ZWwgT1RDCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwo+ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4gSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiAKPiAtLSAKPiBWaWxsZSBTeXJqw6Rsw6QK PiBJbnRlbCBPVEMKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752301AbcCRQlr (ORCPT ); Fri, 18 Mar 2016 12:41:47 -0400 Received: from mga04.intel.com ([192.55.52.120]:63800 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750976AbcCRQlp (ORCPT ); Fri, 18 Mar 2016 12:41:45 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,355,1455004800"; d="scan'208";a="927134117" Date: Fri, 18 Mar 2016 18:41:40 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Lyude Cc: intel-gfx@lists.freedesktop.org, arthur.j.runyan@intel.com, open list , dri-devel@lists.freedesktop.org, Daniel Vetter Subject: Re: [Intel-gfx] [PATCH 2/2] drm/i915: Get rid of intel_dp_dpcd_read_wake() Message-ID: <20160318164140.GO4329@intel.com> References: <1458229245-8634-1-git-send-email-cpaul@redhat.com> <1458229245-8634-2-git-send-email-cpaul@redhat.com> <20160318141345.GG4329@intel.com> <20160318161235.GN4329@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20160318161235.GN4329@intel.com> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Mar 18, 2016 at 06:12:35PM +0200, Ville Syrjälä wrote: > On Fri, Mar 18, 2016 at 04:13:45PM +0200, Ville Syrjälä wrote: > > On Thu, Mar 17, 2016 at 11:40:45AM -0400, Lyude wrote: > > > Since we've fixed up drm_dp_dpcd_read() to allow for retries when things > > > timeout, there's no use for having this function anymore. Good riddens. > > > > > > Signed-off-by: Lyude > > > --- > > > drivers/gpu/drm/i915/intel_dp.c | 79 ++++++++++++----------------------------- > > > 1 file changed, 22 insertions(+), 57 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > > > index cdc2c15..fb4cbbe5 100644 > > > --- a/drivers/gpu/drm/i915/intel_dp.c > > > +++ b/drivers/gpu/drm/i915/intel_dp.c > > > @@ -3190,47 +3190,14 @@ static void chv_dp_post_pll_disable(struct intel_encoder *encoder) > > > } > > > > > > /* > > > - * Native read with retry for link status and receiver capability reads for > > > - * cases where the sink may still be asleep. > > > - * > > > - * Sinks are *supposed* to come up within 1ms from an off state, but we're also > > > - * supposed to retry 3 times per the spec. > > > - */ > > > -static ssize_t > > > -intel_dp_dpcd_read_wake(struct drm_dp_aux *aux, unsigned int offset, > > > - void *buffer, size_t size) > > > -{ > > > - ssize_t ret; > > > - int i; > > > - > > > - /* > > > - * Sometime we just get the same incorrect byte repeated > > > - * over the entire buffer. Doing just one throw away read > > > - * initially seems to "solve" it. > > > - */ > > > - drm_dp_dpcd_read(aux, DP_DPCD_REV, buffer, 1); > > > > NAK > > > > If people keep intentionally breaking my shit I'm going to become > > really grumpy soon. > > Oh, and just in case someone wants to come up with a better kludge, > I just spent a few minutes analyzing the behavior of this crappy > monitor a. > > What happens is that when the monitor is fully powered up (LED is blue) > things are fine. After the monitor goes to sleep (LED turns orange) > the first DPCD read will produce garbage. Further DPCD reads are fine, > even if I wait a significant amount of time between the reads, as long > as the monitor didn't do a power on->off cycle in between. So it looks > like it's always just the first read after power down that gets > corrupted. > > Now I think I'll go and test how writes behave, assuming I can find a > decently sized chunk of DPCD address space I can write. And maybe I > should also try i2c-over-aux... The first DPCD write after powerdown also got corrupted. But i2c-over-aux seems unaffected for whatever reason. > > > > > > - > > > - for (i = 0; i < 3; i++) { > > > - ret = drm_dp_dpcd_read(aux, offset, buffer, size); > > > - if (ret == size) > > > - return ret; > > > - msleep(1); > > > - } > > > - > > > - return ret; > > > -} > > > - > > > -/* > > > * Fetch AUX CH registers 0x202 - 0x207 which contain > > > * link status information > > > */ > > > bool > > > intel_dp_get_link_status(struct intel_dp *intel_dp, uint8_t link_status[DP_LINK_STATUS_SIZE]) > > > { > > > - return intel_dp_dpcd_read_wake(&intel_dp->aux, > > > - DP_LANE0_1_STATUS, > > > - link_status, > > > - DP_LINK_STATUS_SIZE) == DP_LINK_STATUS_SIZE; > > > + return drm_dp_dpcd_read(&intel_dp->aux, DP_LANE0_1_STATUS, link_status, > > > + DP_LINK_STATUS_SIZE) == DP_LINK_STATUS_SIZE; > > > } > > > > > > /* These are source-specific values. */ > > > @@ -3865,8 +3832,8 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp) > > > struct drm_i915_private *dev_priv = dev->dev_private; > > > uint8_t rev; > > > > > > - if (intel_dp_dpcd_read_wake(&intel_dp->aux, 0x000, intel_dp->dpcd, > > > - sizeof(intel_dp->dpcd)) < 0) > > > + if (drm_dp_dpcd_read(&intel_dp->aux, 0x000, intel_dp->dpcd, > > > + sizeof(intel_dp->dpcd)) < 0) > > > return false; /* aux transfer failed */ > > > > > > DRM_DEBUG_KMS("DPCD: %*ph\n", (int) sizeof(intel_dp->dpcd), intel_dp->dpcd); > > > @@ -3877,9 +3844,9 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp) > > > /* Check if the panel supports PSR */ > > > memset(intel_dp->psr_dpcd, 0, sizeof(intel_dp->psr_dpcd)); > > > if (is_edp(intel_dp)) { > > > - intel_dp_dpcd_read_wake(&intel_dp->aux, DP_PSR_SUPPORT, > > > - intel_dp->psr_dpcd, > > > - sizeof(intel_dp->psr_dpcd)); > > > + drm_dp_dpcd_read(&intel_dp->aux, DP_PSR_SUPPORT, > > > + intel_dp->psr_dpcd, > > > + sizeof(intel_dp->psr_dpcd)); > > > if (intel_dp->psr_dpcd[0] & DP_PSR_IS_SUPPORTED) { > > > dev_priv->psr.sink_support = true; > > > DRM_DEBUG_KMS("Detected EDP PSR Panel.\n"); > > > @@ -3890,9 +3857,9 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp) > > > uint8_t frame_sync_cap; > > > > > > dev_priv->psr.sink_support = true; > > > - intel_dp_dpcd_read_wake(&intel_dp->aux, > > > - DP_SINK_DEVICE_AUX_FRAME_SYNC_CAP, > > > - &frame_sync_cap, 1); > > > + drm_dp_dpcd_read(&intel_dp->aux, > > > + DP_SINK_DEVICE_AUX_FRAME_SYNC_CAP, > > > + &frame_sync_cap, 1); > > > dev_priv->psr.aux_frame_sync = frame_sync_cap ? true : false; > > > /* PSR2 needs frame sync as well */ > > > dev_priv->psr.psr2_support = dev_priv->psr.aux_frame_sync; > > > @@ -3908,15 +3875,13 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp) > > > /* Intermediate frequency support */ > > > if (is_edp(intel_dp) && > > > (intel_dp->dpcd[DP_EDP_CONFIGURATION_CAP] & DP_DPCD_DISPLAY_CONTROL_CAPABLE) && > > > - (intel_dp_dpcd_read_wake(&intel_dp->aux, DP_EDP_DPCD_REV, &rev, 1) == 1) && > > > + (drm_dp_dpcd_read(&intel_dp->aux, DP_EDP_DPCD_REV, &rev, 1) == 1) && > > > (rev >= 0x03)) { /* eDp v1.4 or higher */ > > > __le16 sink_rates[DP_MAX_SUPPORTED_RATES]; > > > int i; > > > > > > - intel_dp_dpcd_read_wake(&intel_dp->aux, > > > - DP_SUPPORTED_LINK_RATES, > > > - sink_rates, > > > - sizeof(sink_rates)); > > > + drm_dp_dpcd_read(&intel_dp->aux, DP_SUPPORTED_LINK_RATES, > > > + sink_rates, sizeof(sink_rates)); > > > > > > for (i = 0; i < ARRAY_SIZE(sink_rates); i++) { > > > int val = le16_to_cpu(sink_rates[i]); > > > @@ -3939,9 +3904,9 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp) > > > if (intel_dp->dpcd[DP_DPCD_REV] == 0x10) > > > return true; /* no per-port downstream info */ > > > > > > - if (intel_dp_dpcd_read_wake(&intel_dp->aux, DP_DOWNSTREAM_PORT_0, > > > - intel_dp->downstream_ports, > > > - DP_MAX_DOWNSTREAM_PORTS) < 0) > > > + if (drm_dp_dpcd_read(&intel_dp->aux, DP_DOWNSTREAM_PORT_0, > > > + intel_dp->downstream_ports, > > > + DP_MAX_DOWNSTREAM_PORTS) < 0) > > > return false; /* downstream port status fetch failed */ > > > > > > return true; > > > @@ -3955,11 +3920,11 @@ intel_dp_probe_oui(struct intel_dp *intel_dp) > > > if (!(intel_dp->dpcd[DP_DOWN_STREAM_PORT_COUNT] & DP_OUI_SUPPORT)) > > > return; > > > > > > - if (intel_dp_dpcd_read_wake(&intel_dp->aux, DP_SINK_OUI, buf, 3) == 3) > > > + if (drm_dp_dpcd_read(&intel_dp->aux, DP_SINK_OUI, buf, 3) == 3) > > > DRM_DEBUG_KMS("Sink OUI: %02hx%02hx%02hx\n", > > > buf[0], buf[1], buf[2]); > > > > > > - if (intel_dp_dpcd_read_wake(&intel_dp->aux, DP_BRANCH_OUI, buf, 3) == 3) > > > + if (drm_dp_dpcd_read(&intel_dp->aux, DP_BRANCH_OUI, buf, 3) == 3) > > > DRM_DEBUG_KMS("Branch OUI: %02hx%02hx%02hx\n", > > > buf[0], buf[1], buf[2]); > > > } > > > @@ -3975,7 +3940,7 @@ intel_dp_probe_mst(struct intel_dp *intel_dp) > > > if (intel_dp->dpcd[DP_DPCD_REV] < 0x12) > > > return false; > > > > > > - if (intel_dp_dpcd_read_wake(&intel_dp->aux, DP_MSTM_CAP, buf, 1)) { > > > + if (drm_dp_dpcd_read(&intel_dp->aux, DP_MSTM_CAP, buf, 1)) { > > > if (buf[0] & DP_MST_CAP) { > > > DRM_DEBUG_KMS("Sink is MST capable\n"); > > > intel_dp->is_mst = true; > > > @@ -4112,7 +4077,7 @@ stop: > > > static bool > > > intel_dp_get_sink_irq(struct intel_dp *intel_dp, u8 *sink_irq_vector) > > > { > > > - return intel_dp_dpcd_read_wake(&intel_dp->aux, > > > + return drm_dp_dpcd_read(&intel_dp->aux, > > > DP_DEVICE_SERVICE_IRQ_VECTOR, > > > sink_irq_vector, 1) == 1; > > > } > > > @@ -4122,7 +4087,7 @@ intel_dp_get_sink_irq_esi(struct intel_dp *intel_dp, u8 *sink_irq_vector) > > > { > > > int ret; > > > > > > - ret = intel_dp_dpcd_read_wake(&intel_dp->aux, > > > + ret = drm_dp_dpcd_read(&intel_dp->aux, > > > DP_SINK_COUNT_ESI, > > > sink_irq_vector, 14); > > > if (ret != 14) > > > @@ -4383,7 +4348,7 @@ intel_dp_detect_dpcd(struct intel_dp *intel_dp) > > > intel_dp->downstream_ports[0] & DP_DS_PORT_HPD) { > > > uint8_t reg; > > > > > > - if (intel_dp_dpcd_read_wake(&intel_dp->aux, DP_SINK_COUNT, > > > + if (drm_dp_dpcd_read(&intel_dp->aux, DP_SINK_COUNT, > > > ®, 1) < 0) > > > return connector_status_unknown; > > > > > > -- > > > 2.5.0 > > > > > > _______________________________________________ > > > Intel-gfx mailing list > > > Intel-gfx@lists.freedesktop.org > > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx > > > > -- > > Ville Syrjälä > > Intel OTC > > _______________________________________________ > > Intel-gfx mailing list > > Intel-gfx@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx > > -- > Ville Syrjälä > Intel OTC > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Ville Syrjälä Intel OTC