From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philipp Zabel Subject: Re: [PATCH v10 2/2] drm/bridge: Add I2C based driver for ps8640 bridge Date: Fri, 19 Feb 2016 10:12:25 +0100 Message-ID: <1455873145.5745.10.camel@pengutronix.de> References: <1455870678-13959-1-git-send-email-jitao.shi@mediatek.com> <1455870678-13959-2-git-send-email-jitao.shi@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1455870678-13959-2-git-send-email-jitao.shi@mediatek.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jitao Shi Cc: Mark Rutland , stonea168@163.com, dri-devel@lists.freedesktop.org, Andy Yan , Ajay Kumar , Vincent Palatin , cawa.cheng@mediatek.com, yingjoe.chen@mediatek.com, Thierry Reding , devicetree@vger.kernel.org, Pawel Moll , Ian Campbell , Rob Herring , linux-mediatek@lists.infradead.org, Russell King , Matthias Brugger , eddie.huang@mediatek.com, linux-arm-kernel@lists.infradead.org, Rahul Sharma , srv_heupstream@mediatek.com, linux-kernel@vger.kernel.org, Sascha Hauer , Kumar Gala List-Id: devicetree@vger.kernel.org QW0gRnJlaXRhZywgZGVuIDE5LjAyLjIwMTYsIDE2OjMxICswODAwIHNjaHJpZWIgSml0YW8gU2hp Ogo+IFRoaXMgcGF0Y2ggYWRkcyBkcm1fYnJpZGdlIGRyaXZlciBmb3IgcGFyYWRlIERTSSB0byBl RFAgYnJpZGdlIGNoaXAuCj4gCj4gU2lnbmVkLW9mZi1ieTogSml0YW8gU2hpIDxqaXRhby5zaGlA bWVkaWF0ZWsuY29tPgo+IC0tLQo+IENoYW5nZXMgc2luY2Ugdjk6Cj4gIC0gcmVwbGFjZSBkZXZf a21hbGxvYyB3aXRoIGRldm1fa21hbGxvYyBpbiBwczg2NDBfZ2V0X21vZGVzCj4gIC0gcmVtb3Zl IHBzX2JyaWRnZS0+ZHNpID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKHN0cnVjdCBtaXBpX2Rz aV9kZXZpY2UpLAo+IAkJCQkJR0ZQX0tFUk5FTCk7Cj4gIC0gZml4IHdyb25nIGNvbmRpdGlvbiBp biBwczg2NDBfdmFsaWRhdGVfZmlybXdhcmUoKQo+IAo+IFRoZSBmb2xsb3dpbmcgcGF0Y2hlcyBh cmUgbmVlZGVkIHRvIHN1cHBvcnQgZHNpIGhvc3QgdGhyb3VnaCBub25lIGRzaSBidXM6Cj4gCj4g aHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC84Mjg5MTgxLyAoImRybS9kc2k6IGNo ZWNrIGZvciBDT05GSUdfT0Ygd2hlbiBkZWZpbmluZyIpCj4gaHR0cHM6Ly9wYXRjaHdvcmsua2Vy bmVsLm9yZy9wYXRjaC84Mjg5MDUxLyAoImRybS9kc2k6IFVzZSBtaXBpX2RzaV9kZXZpY2VfcmVn aXN0ZXJfZnVsbCBmb3IgRFNJIGRldmljZSIpCj4gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9y Zy9wYXRjaC84Mjg5MDgxLyAoImRybS9kc2k6IFRyeSB0byBtYXRjaCBub24tRFQgRFNJIGRldmlj ZXMiKQo+IGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvODI4OTEyMS8gKCJkcm0v ZHNpOiBBZGQgcm91dGluZSB0byB1bnJlZ2lzdGVyIGEgRFNJIGRldmljZSIpCj4gaHR0cHM6Ly9w YXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC84Mjg5MDkxLyAoImRybS9kc2k6IEdldCBEU0kgaG9z dCBieSBEVCBkZXZpY2Ugbm9kZSIpCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2Nv bmZpZyAgICAgICAgIHwgICAxMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUg ICAgICAgIHwgICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvcGFyYWRlLXBzODY0MC5j IHwgMTA1NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5n ZWQsIDEwNjkgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9wYXJhZGUtcHM4NjQwLmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnCj4gaW5k ZXggMjdlMjAyMi4uYjRlZGQ4YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdl L0tjb25maWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcKPiBAQCAtNDAs NCArNDAsMTUgQEAgY29uZmlnIERSTV9QQVJBREVfUFM4NjIyCj4gIAktLS1oZWxwLS0tCj4gIAkg IFBhcmFkZSBlRFAtTFZEUyBicmlkZ2UgY2hpcCBkcml2ZXIuCj4gIAo+ICtjb25maWcgRFJNX1BB UkFERV9QUzg2NDAKPiArCXRyaXN0YXRlICJQYXJhZGUgUFM4NjQwIE1JUEkgRFNJIHRvIGVEUCBD b252ZXJ0ZXIiCj4gKwlkZXBlbmRzIG9uIE9GICYmIEkyQwo+ICsJc2VsZWN0IERSTV9LTVNfSEVM UEVSCj4gKwlzZWxlY3QgRFJNX01JUElfRFNJCj4gKwlzZWxlY3QgRFJNX1BBTkVMCj4gKwktLS1o ZWxwLS0tCj4gKwkgIENob29zZSB0aGlzIG9wdGlvbiBpZiB5b3UgaGF2ZSBQUzg2NDAgZm9yIGRp c3BsYXkKPiArCSAgVGhlIFBTODY0MCBpcyBhIGhpZ2gtcGVyZm9ybWFuY2UgYW5kIGxvdy1wb3dl cgo+ICsJICBNSVBJIERTSSB0byBlRFAgY29udmVydGVyCj4gKwo+ICBlbmRtZW51Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v YnJpZGdlL01ha2VmaWxlCj4gaW5kZXggZjEzYzMzZC4uZmJlMzhkYyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Jy aWRnZS9NYWtlZmlsZQo+IEBAIC00LDMgKzQsNCBAQCBvYmotJChDT05GSUdfRFJNX0RXX0hETUkp ICs9IGR3LWhkbWkubwo+ICBvYmotJChDT05GSUdfRFJNX0RXX0hETUlfQUhCX0FVRElPKSArPSBk dy1oZG1pLWFoYi1hdWRpby5vCj4gIG9iai0kKENPTkZJR19EUk1fTlhQX1BUTjM0NjApICs9IG54 cC1wdG4zNDYwLm8KPiAgb2JqLSQoQ09ORklHX0RSTV9QQVJBREVfUFM4NjIyKSArPSBwYXJhZGUt cHM4NjIyLm8KPiArb2JqLSQoQ09ORklHX0RSTV9QQVJBREVfUFM4NjQwKSArPSBwYXJhZGUtcHM4 NjQwLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9wYXJhZGUtcHM4NjQw LmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3BhcmFkZS1wczg2NDAuYwo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNWYyNzU0OAo+IC0tLSAvZGV2L251bGwKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3BhcmFkZS1wczg2NDAuYwo+IEBAIC0wLDAgKzEsMTA1 NyBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTQgTWVkaWFUZWsgSW5jLgo+ICsgKgo+ ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwo+ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4g KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKPiArICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KPiArI2luY2x1ZGUgPGxp bnV4L2Vyci5oPgo+ICsjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KPiArI2luY2x1ZGUgPGxp bnV4L2dwaW8uaD4KPiArI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KPiArI2luY2x1 ZGUgPGxpbnV4L2kyYy5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9vZi5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2ZfZ3Bpby5oPgo+ICsjaW5jbHVkZSA8 bGludXgvb2ZfZ3JhcGguaD4KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5o Pgo+ICsjaW5jbHVkZSA8YXNtL3VuYWxpZ25lZC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9wYW5l bC5oPgo+ICsKPiArI2luY2x1ZGUgPGRybVAuaD4KPiArI2luY2x1ZGUgPGRybV9hdG9taWNfaGVs cGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm1fY3J0Y19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybV9j cnRjLmg+Cj4gKyNpbmNsdWRlIDxkcm1fZWRpZC5oPgo+ICsjaW5jbHVkZSA8ZHJtX21pcGlfZHNp Lmg+Cj4gKwo+ICsjZGVmaW5lIFBBR0UyX1NQSV9DRkczCQkweDgyCj4gKyNkZWZpbmUgSTJDX1RP X1NQSV9SRVNFVAkweDIwCj4gKyNkZWZpbmUgUEFHRTJfUk9NQUREX0JZVEUxCTB4OGUKPiArI2Rl ZmluZSBQQUdFMl9ST01BRERfQllURTIJMHg4Zgo+ICsjZGVmaW5lIFBBR0UyX1NXU1BJX1dEQVRB CTB4OTAKPiArI2RlZmluZSBQQUdFMl9TV1NQSV9SREFUQQkweDkxCj4gKyNkZWZpbmUgUEFHRTJf U1dTUElfTEVOCQkweDkyCj4gKyNkZWZpbmUgUEFHRTJfU1dTUElfQ1RMCQkweDkzCj4gKyNkZWZp bmUgVFJJR0dFUl9OT19SRUFEQkFDSwkweDA1Cj4gKyNkZWZpbmUgVFJJR0dFUl9SRUFEQkFDSwkw eDAxCj4gKyNkZWZpbmUgUEFHRTJfU1BJX1NUQVRVUwkweDllCj4gKyNkZWZpbmUgUEFHRTJfR1BJ T19MCQkweGE2Cj4gKyNkZWZpbmUgUEFHRTJfR1BJT19ICQkweGE3Cj4gKyNkZWZpbmUgUFNfR1BJ TzkJCUJJVCgxKQo+ICsjZGVmaW5lIFBBR0UyX0lST01fQ1RSTAkJMHhiMAo+ICsjZGVmaW5lIElS T01fRU5BQkxFCQkweGMwCj4gKyNkZWZpbmUgSVJPTV9ESVNBQkxFCQkweDgwCj4gKyNkZWZpbmUg UEFHRTJfU1dfUkVTVAkJMHhiYwo+ICsjZGVmaW5lIFNQSV9TV19SRVNFVAkJQklUKDcpCj4gKyNk ZWZpbmUgTVBVX1NXX1JFU0VUCQlCSVQoNikKPiArI2RlZmluZSBQQUdFMl9FTkNUTFNQSV9XUgkw eGRhCj4gKyNkZWZpbmUgUEFHRTJfSTJDX0JZUEFTUwkweGVhCj4gKyNkZWZpbmUgSTJDX0JZUEFT U19FTgkJMHhkMAo+ICsjZGVmaW5lIFBBR0UzX1NFVF9BREQJCTB4ZmUKPiArI2RlZmluZSBQQUdF M19TRVRfVkFMCQkweGZmCj4gKyNkZWZpbmUgVkRPX0NUTF9BREQJCTB4MTMKPiArI2RlZmluZSBW RE9fRElTCQkJMHgxOAo+ICsjZGVmaW5lIFZET19FTgkJCTB4MWMKPiArI2RlZmluZSBQQUdFNF9S RVZfTAkJMHhmMAo+ICsjZGVmaW5lIFBBR0U0X1JFVl9ICQkweGYxCj4gKyNkZWZpbmUgUEFHRTRf Q0hJUF9MCQkweGYyCj4gKyNkZWZpbmUgUEFHRTRfQ0hJUF9ICQkweGYzCj4gKwo+ICsvKiBGaXJt d2FyZSAqLwo+ICsjZGVmaW5lIFNQSV9NQVhfUkVUUllfQ05UCTgKPiArI2RlZmluZSBQU19GV19O QU1FCQkicHM4NjR4X2Z3LmJpbiIKPiArCj4gKyNkZWZpbmUgRldfQ0hJUF9JRF9PRkZTRVQJMAo+ ICsjZGVmaW5lIEZXX1ZFUlNJT05fT0ZGU0VUCTIKPiArI2RlZmluZSBFRElEX0kyQ19BRERSCQkw eDUwCj4gKwo+ICsjZGVmaW5lIFdSSVRFX1NUQVRVU19SRUdfQ01ECTB4MDEKPiArI2RlZmluZSBS RUFEX1NUQVRVU19SRUdfQ01ECTB4MDUKPiArI2RlZmluZSBDTEVBUl9BTExfUFJPVEVDVAkweDAw Cj4gKyNkZWZpbmUgQkxLX1BST1RFQ1RfQklUUwkweDBjCj4gKyNkZWZpbmUgU1RBVFVTX1JFR19Q Uk9URUNUCUJJVCg3KQo+ICsjZGVmaW5lIFdSSVRFX0VOQUJMRV9DTUQJMHgwNgo+ICsjZGVmaW5l IENISVBfRVJBU0VfQ01ECQkweGM3Cj4gKwo+ICsjZGVmaW5lIGJyaWRnZV90b19wczg2NDAoZSkJ Y29udGFpbmVyX29mKGUsIHN0cnVjdCBwczg2NDAsIGJyaWRnZSkKPiArI2RlZmluZSBjb25uZWN0 b3JfdG9fcHM4NjQwKGUpCWNvbnRhaW5lcl9vZihlLCBzdHJ1Y3QgcHM4NjQwLCBjb25uZWN0b3Ip Cj4gKwo+ICtzdHJ1Y3QgcHM4NjQwX2luZm8gewo+ICsJdTggZmFtaWx5X2lkOwo+ICsJdTggdmFy aWFudF9pZDsKPiArCXUxNiB2ZXJzaW9uOwo+ICt9Owo+ICsKPiArc3RydWN0IHBzODY0MCB7Cj4g KwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7Cj4gKwlzdHJ1Y3QgZHJtX2JyaWRnZSBi cmlkZ2U7Cj4gKwlzdHJ1Y3QgZWRpZCAqZWRpZDsKPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2Ug ZHNpOwo+ICsJc3RydWN0IGkyY19jbGllbnQgKnBhZ2VbOF07Cj4gKwlzdHJ1Y3QgaTJjX2NsaWVu dCAqZGRjX2kyYzsKPiArCXN0cnVjdCByZWd1bGF0b3JfYnVsa19kYXRhIHN1cHBsaWVzWzJdOwo+ ICsJc3RydWN0IGRybV9wYW5lbCAqcGFuZWw7Cj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvX3Jz dF9uOwo+ICsJc3RydWN0IGdwaW9fZGVzYyAqZ3Bpb19zbHBfbjsKPiArCXN0cnVjdCBncGlvX2Rl c2MgKmdwaW9fbW9kZV9zZWxfbjsKPiArCWJvb2wgZW5hYmxlZDsKPiArCj4gKwkvKiBmaXJtd2Fy ZSBmaWxlIGluZm8gKi8KPiArCWJvb2wgaW5fZndfdXBkYXRlOwo+ICsJc3RydWN0IHBzODY0MF9p bmZvIGluZm87Cj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3QgdTggZW5jX2N0cmxfY29kZVs2XSA9 IHsweGFhLCAweDU1LCAweDUwLCAweDQxLCAweDUyLCAweDQ0fTsKPiArCj4gK3N0YXRpYyBpbnQg cHM4NjQwX3JlYWQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggcmVnLCB1OCAqZGF0YSwK PiArCQkgICAgICAgdTE2IGRhdGFfbGVuKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsJc3RydWN0IGky Y19tc2cgbXNnc1tdID0gewo+ICsJCXsKPiArCQkgLmFkZHIgPSBjbGllbnQtPmFkZHIsCj4gKwkJ IC5mbGFncyA9IDAsCj4gKwkJIC5sZW4gPSAxLAo+ICsJCSAuYnVmID0gJnJlZywKPiArCQkgfSwK PiArCQl7Cj4gKwkJIC5hZGRyID0gY2xpZW50LT5hZGRyLAo+ICsJCSAuZmxhZ3MgPSBJMkNfTV9S RCwKPiArCQkgLmxlbiA9IGRhdGFfbGVuLAo+ICsJCSAuYnVmID0gZGF0YSwKPiArCQkgfQo+ICsJ fTsKPiArCj4gKwlyZXQgPSBpMmNfdHJhbnNmZXIoY2xpZW50LT5hZGFwdGVyLCBtc2dzLCAyKTsK PiArCj4gKwlpZiAocmV0ID09IDIpCj4gKwkJcmV0dXJuIDA7Cj4gKwlpZiAocmV0IDwgMCkKPiAr CQlyZXR1cm4gcmV0Owo+ICsJZWxzZQo+ICsJCXJldHVybiAtRUlPOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IHBzODY0MF93cml0ZV9ieXRlcyhzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCAq ZGF0YSwKPiArCQkJICAgICAgdTE2IGRhdGFfbGVuKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsJc3Ry dWN0IGkyY19tc2cgbXNnOwo+ICsKPiArCW1zZy5hZGRyID0gY2xpZW50LT5hZGRyOwo+ICsJbXNn LmZsYWdzID0gMDsKPiArCW1zZy5sZW4gPSBkYXRhX2xlbjsKPiArCW1zZy5idWYgPSBkYXRhOwo+ ICsKPiArCXJldCA9IGkyY190cmFuc2ZlcihjbGllbnQtPmFkYXB0ZXIsICZtc2csIDEpOwo+ICsJ aWYgKHJldCA9PSAxKQo+ICsJCXJldHVybiAwOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJu IHJldDsKPiArCWVsc2UKPiArCQlyZXR1cm4gLUVJTzsKPiArfQo+ICsKPiArc3RhdGljIGludCBw czg2NDBfd3JpdGVfYnl0ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCByZWcsICB1OCBk YXRhKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsJc3RydWN0IGkyY19tc2cgbXNnOwo+ICsJdTggYnVm W10gPSB7cmVnLCBkYXRhfTsKPiArCj4gKwltc2cuYWRkciA9IGNsaWVudC0+YWRkcjsKPiArCW1z Zy5mbGFncyA9IDA7Cj4gKwltc2cubGVuID0gc2l6ZW9mKGJ1Zik7Cj4gKwltc2cuYnVmID0gYnVm Owo+ICsKPiArCXJldCA9IGkyY190cmFuc2ZlcihjbGllbnQtPmFkYXB0ZXIsICZtc2csIDEpOwo+ ICsJaWYgKHJldCA9PSAxKQo+ICsJCXJldHVybiAwOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0 dXJuIHJldDsKPiArCWVsc2UKPiArCQlyZXR1cm4gLUVJTzsKPiArfQo+ICsKPiArc3RhdGljIHZv aWQgcHM4NjQwX2dldF9tY3VfZndfdmVyc2lvbihzdHJ1Y3QgcHM4NjQwICpwc19icmlkZ2UpCj4g K3sKPiArCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBwc19icmlkZ2UtPnBhZ2VbNV07Cj4g Kwl1OCBmd192ZXJbMl07Cj4gKwo+ICsJcHM4NjQwX3JlYWQoY2xpZW50LCAweDQsIGZ3X3Zlciwg Mik7Cj4gKwlwc19icmlkZ2UtPmluZm8udmVyc2lvbiA9IChmd192ZXJbMF0gPDwgOCkgfCBmd192 ZXJbMV07Cj4gKwo+ICsJRFJNX0lORk9fT05DRSgicHM4NjQwIHJvbSBmdyB2ZXJzaW9uICVkLiVk XG4iLCBmd192ZXJbMF0sIGZ3X3ZlclsxXSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgcHM4NjQw X2JyaWRnZV9lbmFibGUoc3RydWN0IHBzODY0MCAqcHNfYnJpZGdlKQo+ICt7Cj4gKwlzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50ID0gcHNfYnJpZGdlLT5wYWdlWzNdOwo+ICsJdTggdmRvX2N0cmxf YnVmWzNdID0ge1BBR0UzX1NFVF9BREQsIFZET19DVExfQURELCBWRE9fRU59Owo+ICsKPiArCXJl dHVybiBwczg2NDBfd3JpdGVfYnl0ZXMoY2xpZW50LCB2ZG9fY3RybF9idWYsIDMpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IHBzODY0MF9icmlkZ2VfZGlzYWJsZShzdHJ1Y3QgcHM4NjQwICpwc19i cmlkZ2UpCj4gK3sKPiArCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBwc19icmlkZ2UtPnBh Z2VbM107Cj4gKwl1OCB2ZG9fY3RybF9idWZbM10gPSB7UEFHRTNfU0VUX0FERCwgVkRPX0NUTF9B REQsIFZET19ESVN9Owo+ICsKPiArCXJldHVybiBwczg2NDBfd3JpdGVfYnl0ZXMoY2xpZW50LCB2 ZG9fY3RybF9idWYsIDMpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBwczg2NDBfcHJlX2VuYWJs ZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ICt7Cj4gKwlzdHJ1Y3QgcHM4NjQwICpwc19i cmlkZ2UgPSBicmlkZ2VfdG9fcHM4NjQwKGJyaWRnZSk7Cj4gKwlzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50ID0gcHNfYnJpZGdlLT5wYWdlWzJdOwo+ICsJaW50IGVyciwgcmV0cnlfY250ID0gMDsK PiArCXU4IHNldF92ZG9fZG9uZTsKPiArCj4gKwlpZiAocHNfYnJpZGdlLT5pbl9md191cGRhdGUp Cj4gKwkJcmV0dXJuOwo+ICsKPiArCWlmIChwc19icmlkZ2UtPmVuYWJsZWQpCj4gKwkJcmV0dXJu Owo+ICsKPiArCWVyciA9IGRybV9wYW5lbF9wcmVwYXJlKHBzX2JyaWRnZS0+cGFuZWwpOwo+ICsJ aWYgKGVyciA8IDApIHsKPiArCQlEUk1fRVJST1IoImZhaWxlZCB0byBwcmVwYXJlIHBhbmVsOiAl ZFxuIiwgZXJyKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJZ3Bpb2Rfc2V0X3ZhbHVlKHBz X2JyaWRnZS0+Z3Bpb19zbHBfbiwgMSk7CgpJcyB0aGlzIHBhcnQ6Cgo+ICsJZ3Bpb2Rfc2V0X3Zh bHVlKHBzX2JyaWRnZS0+Z3Bpb19yc3RfbiwgMCk7Cj4gKwo+ICsJZXJyID0gcmVndWxhdG9yX2J1 bGtfZW5hYmxlKEFSUkFZX1NJWkUocHNfYnJpZGdlLT5zdXBwbGllcyksCj4gKwkJCQkgICAgcHNf YnJpZGdlLT5zdXBwbGllcyk7Cj4gKwlpZiAoZXJyIDwgMCkgewo+ICsJCURSTV9FUlJPUigiY2Fu bm90IGVuYWJsZSByZWd1bGF0b3JzICVkXG4iLCBlcnIpOwo+ICsJCWdvdG8gZXJyX3BhbmVsX3Vu cHJlcGFyZTsKPiArCX0KPiArCj4gKwl1c2xlZXBfcmFuZ2UoNTAwLCA3MDApOwo+ICsJZ3Bpb2Rf c2V0X3ZhbHVlKHBzX2JyaWRnZS0+Z3Bpb19yc3RfbiwgMSk7CgouLiB1bnRpbCBoZXJlIGFuIGFz c2VydGlvbiBvZiB0aGUgcmVzZXQgZm9yIDUwMCDCtXMgcGx1cyB3aGF0ZXZlciB0aGUKcmVndWxh dG9yIGRlbGF5IGlzIChpZiBhbnkpPyBJdCBsb29rcyBsaWtlIHRoZSByZXNldCBhY3R1YWxseSBp cyBhY3RpdmUKbG93LiBJZiBzbywgSSB0aGluayB0aGlzIGNvZGUgc2hvdWxkIHJhdGhlciBiZToK CglncGlvZF9zZXRfdmFsdWUocHNfYnJpZGdlLT5ncGlvX3JzdF9uLCAxKTsKCXJlZ3VsYXRvcl9i dWxrX2VuYWJsZSgpOwoJdXNsZWVwX3JhbmdlKCk7CglncGlvZF9zZXRfdmFsdWUocHNfYnJpZGdl LT5ncGlvX3JzdF9uLCAwKTsKCkFuZCB0aGUgZGV2aWNlIHRyZWUgc2hvdWxkIGNvbnRhaW4gYSBy ZXNldC1ncGlvcyBwcm9wZXJ0eSB3aXRoIHRoZQpHUElPX0FDVElWRV9MT1cgZmxhZyBzZXQuCgpT YW1lIGdvZXMgZm9yIHNsZWVwIEdQSU8sIGlmIGl0IGlzIGFjdGl2ZSBsb3csIHRvby4KCmJlc3Qg cmVnYXJkcwpQaGlsaXBwCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwK