From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [PATCH 2nd RESEND v2 3/3] drm/bridge: add Silicon Image SiI8620 driver Date: Mon, 26 Sep 2016 17:01:56 +0530 Message-ID: <07fa4915-b771-2b5f-9dce-caa63a48b6f7@codeaurora.org> References: <1473842027-21670-1-git-send-email-a.hajda@samsung.com> <1473842027-21670-4-git-send-email-a.hajda@samsung.com> <57E802D6.8010900@codeaurora.org> <8f2adec2-87ea-2dec-14cf-6d9568be16dd@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from smtp.codeaurora.org (smtp.codeaurora.org [198.145.29.96]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2D72D6E0BF for ; Mon, 26 Sep 2016 11:32:03 +0000 (UTC) In-Reply-To: <8f2adec2-87ea-2dec-14cf-6d9568be16dd@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Andrzej Hajda , "open list:DRM DRIVERS" , Inki Dae , Daniel Vetter Cc: Bartlomiej Zolnierkiewicz , Marek Szyprowski List-Id: dri-devel@lists.freedesktop.org CgpPbiAwOS8yNi8yMDE2IDAzOjA2IFBNLCBBbmRyemVqIEhhamRhIHdyb3RlOgo+IEhpLAo+Cj4g VGhhbmtzIGZvciByZXZpZXcuCj4KPgo+IE9uIDI1LjA5LjIwMTYgMTk6MDEsIEFyY2hpdCBUYW5l amEgd3JvdGU6Cj4+IEhpLAo+Pgo+PiBPbiA5LzE0LzIwMTYgMjowMyBQTSwgQW5kcnplaiBIYWpk YSB3cm90ZToKPj4+IFNpSTg2MjAgdHJhbnNtaXR0ZXIgY29udmVydHMgZVRNRFMvSERNSSBzaWdu YWwgdG8gTUhMIDMuMC4KPj4+IEl0IGlzIGNvbnRyb2xsZWQgdmlhIEkyQyBidXMuIEl0cyBpbnRl cmFjdGlvbiB3aXRoIG90aGVyCj4+PiBkZXZpY2VzIGluIHZpZGVvIHBpcGVsaW5lIGlzIHBlcmZv cm1lZCBtYWlubHkgb24gSFcgbGV2ZWwuCj4+PiBUaGUgb25seSBpbnRlcmFjdGlvbiBpdCBkb2Vz IG9uIGRldmljZSBkcml2ZXIgbGV2ZWwgaXMKPj4+IGZpbHRlcmluZy1vdXQgdW5zdXBwb3J0ZWQg dmlkZW8gbW9kZXMsIGl0IGV4cG9zZXMgZHJtX2JyaWRnZQo+Pj4gaW50ZXJmYWNlIHRvIHBlcmZv cm0gdGhpcyBvcGVyYXRpb24uCj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogQW5kcnplaiBIYWpkYSA8 YS5oYWpkYUBzYW1zdW5nLmNvbT4KPj4+IC0tLQo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdl L0tjb25maWcgICAgICAgfCAgICA3ICsKPj4+ICAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtl ZmlsZSAgICAgIHwgICAgMSArCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lsLXNpaTg2 MjAuYyB8IDE1NjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4gICBkcml2 ZXJzL2dwdS9kcm0vYnJpZGdlL3NpbC1zaWk4NjIwLmggfCAxNTE3ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCj4+PiAgIDQgZmlsZXMgY2hhbmdlZCwgMzA5MyBpbnNlcnRpb25zKCsp Cj4+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpbC1zaWk4 NjIwLmMKPj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2ls LXNpaTg2MjAuaAo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tj b25maWcgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcKPj4+IGluZGV4IGI1OTBlNjcu LmU3ZmIxNzkgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcK Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZwo+Pj4gQEAgLTUwLDYgKzUw LDEzIEBAIGNvbmZpZyBEUk1fUEFSQURFX1BTODYyMgo+Pj4gICAJLS0taGVscC0tLQo+Pj4gICAJ ICBQYXJhZGUgZURQLUxWRFMgYnJpZGdlIGNoaXAgZHJpdmVyLgo+Pj4KPj4+ICtjb25maWcgRFJN X1NJTF9TSUk4NjIwCj4+PiArCXRyaXN0YXRlICJTaWxpY29uIEltYWdlIFNJSTg2MjAgSERNSS9N SEwgYnJpZGdlIgo+Pj4gKwlkZXBlbmRzIG9uIE9GCj4+PiArCXNlbGVjdCBEUk1fS01TX0hFTFBF Ugo+Pj4gKwloZWxwCj4+PiArCSAgU2lsaWNvbiBJbWFnZSBTSUk4NjIwIEhETUkvTUhMIGJyaWRn ZSBjaGlwIGRyaXZlci4KPj4+ICsKPj4+ICAgY29uZmlnIERSTV9TSUk5MDJYCj4+PiAgIAl0cmlz dGF0ZSAiU2lsaWNvbiBJbWFnZSBzaWk5MDJ4IFJHQi9IRE1JIGJyaWRnZSIKPj4+ICAgCWRlcGVu ZHMgb24gT0YKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxl IGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZQo+Pj4gaW5kZXggZWZkYjA3ZS4uMzA0 Y2Y5ZCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKPj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKPj4+IEBAIC01LDYgKzUsNyBA QCBvYmotJChDT05GSUdfRFJNX0RXX0hETUkpICs9IGR3LWhkbWkubwo+Pj4gICBvYmotJChDT05G SUdfRFJNX0RXX0hETUlfQUhCX0FVRElPKSArPSBkdy1oZG1pLWFoYi1hdWRpby5vCj4+PiAgIG9i ai0kKENPTkZJR19EUk1fTlhQX1BUTjM0NjApICs9IG54cC1wdG4zNDYwLm8KPj4+ICAgb2JqLSQo Q09ORklHX0RSTV9QQVJBREVfUFM4NjIyKSArPSBwYXJhZGUtcHM4NjIyLm8KPj4+ICtvYmotJChD T05GSUdfRFJNX1NJTF9TSUk4NjIwKSArPSBzaWwtc2lpODYyMC5vCj4+PiAgIG9iai0kKENPTkZJ R19EUk1fU0lJOTAyWCkgKz0gc2lpOTAyeC5vCj4+PiAgIG9iai0kKENPTkZJR19EUk1fVE9TSElC QV9UQzM1ODc2NykgKz0gdGMzNTg3Njcubwo+Pj4gICBvYmotJChDT05GSUdfRFJNX0FOQUxPR0lY X0RQKSArPSBhbmFsb2dpeC8KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdl L3NpbC1zaWk4NjIwLmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpbC1zaWk4NjIwLmMKPj4+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+PiBpbmRleCAwMDAwMDAwLi4zYjI3M2M3Cj4+PiAtLS0g L2Rldi9udWxsCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpbC1zaWk4NjIwLmMK Pj4+IEBAIC0wLDAgKzEsMTU2OCBAQAo+Pj4gKy8qCj4+PiArICogRHJpdmVyIGZvciBTaWxpY29u IEltYWdlIFNpSTg2MjAgTW9iaWxlIEhEIFRyYW5zbWl0dGVyCj4+IFdvdWxkIGJlIG5pY2UgdG8g bWVudGlvbiAiZVRNRFMvSERNSSBzaWduYWwgdG8gTUhMIDMuMC4iIGhlcmUsIHNvIHRoYXQKPj4g cGVvcGxlIGtub3cgd2hhdCBpdCdzIHVzZWQgZm9yIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGUg cmVzdCBvZiB0aGUKPj4gZHJpdmVyLgo+Cj4gT0sKPgo+Pgo+Pj4gKyAqCj4+PiArICogQ29weXJp Z2h0IChDKSAyMDE1LCBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgo+Pj4gKyAqIEFuZHJ6 ZWogSGFqZGEgPGEuaGFqZGFAc2Ftc3VuZy5jb20+Cj4+PiArICoKPj4+ICsgKiBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQo+Pj4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgdmVyc2lvbiAyIGFzCj4+PiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24uCj4+PiArICovCj4+PiArCj4+PiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5o Pgo+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4KPj4+ICsKPj4+ICsjaW5jbHVkZSA8bGlu dXgvY2xrLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4+PiArI2luY2x1ZGUgPGxp bnV4L2dwaW8vY29uc3VtZXIuaD4KPj4+ICsjaW5jbHVkZSA8bGludXgvaTJjLmg+Cj4+PiArI2lu Y2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9pcnEuaD4KPj4+ ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4K Pj4+ICsjaW5jbHVkZSA8bGludXgvbWhsLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5o Pgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9yZWd1 bGF0b3IvY29uc3VtZXIuaD4KPj4+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+Pj4gKwo+Pj4g KyNpbmNsdWRlICJzaWwtc2lpODYyMC5oIgo+Pj4gKwo+Pj4gKyNkZWZpbmUgVkFMX1JYX0hETUlf Q1RSTDJfREVGVkFMCVZBTF9SWF9IRE1JX0NUUkwyX0lETEVfQ05UKDMpCj4+PiArCj4+PiArZW51 bSBzaWk4NjIwX21vZGUgewo+Pj4gKwlDTV9ESVNDT05ORUNURUQsCj4+PiArCUNNX0RJU0NPVkVS WSwKPj4+ICsJQ01fTUhMMSwKPj4+ICsJQ01fTUhMMywKPj4+ICsJQ01fRUNCVVNfUwo+Pj4gK307 Cj4+PiArCj4+PiArZW51bSBzaWk4NjIwX3NpbmtfdHlwZSB7Cj4+PiArCVNJTktfTk9ORSwKPj4+ ICsJU0lOS19IRE1JLAo+Pj4gKwlTSU5LX0RWSQo+Pj4gK307Cj4+PiArCj4+PiArZW51bSBzaWk4 NjIwX210X3N0YXRlIHsKPj4+ICsJTVRfU1RBVEVfUkVBRFksCj4+PiArCU1UX1NUQVRFX0JVU1ks Cj4+PiArCU1UX1NUQVRFX0RPTkUKPj4+ICt9Owo+Pj4gKwo+Pj4gK3N0cnVjdCBzaWk4NjIwIHsK Pj4+ICsJc3RydWN0IGRybV9icmlkZ2UgYnJpZGdlOwo+Pj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7 Cj4+PiArCXN0cnVjdCBjbGsgKmNsa194dGFsOwo+Pj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpncGlv X3Jlc2V0Owo+Pj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvX2ludDsKPj4+ICsJc3RydWN0IHJl Z3VsYXRvcl9idWxrX2RhdGEgc3VwcGxpZXNbMl07Cj4+PiArCXN0cnVjdCBtdXRleCBsb2NrOyAv KiBjb250ZXh0IGxvY2ssIHByb3RlY3RzIGZpZWxkcyBiZWxvdyAqLwo+Pj4gKwlpbnQgZXJyb3I7 Cj4+PiArCWVudW0gc2lpODYyMF9tb2RlIG1vZGU7Cj4+PiArCWVudW0gc2lpODYyMF9zaW5rX3R5 cGUgc2lua190eXBlOwo+Pj4gKwl1OCBjYnVzX3N0YXR1czsKPj4+ICsJdTggc3RhdFtNSExfRFNU X1NJWkVdOwo+Pj4gKwl1OCB4c3RhdFtNSExfWERTX1NJWkVdOwo+Pj4gKwl1OCBkZXZjYXBbTUhM X0RDQVBfU0laRV07Cj4+PiArCXU4IHhkZXZjYXBbTUhMX1hEQ19TSVpFXTsKPj4+ICsJdTggYXZp ZlsxOV07Cj4+PiArCXN0cnVjdCBlZGlkICplZGlkOwo+Pj4gKwl1bnNpZ25lZCBpbnQgZ2VuMl93 cml0ZV9idXJzdDoxOwo+Pj4gKwllbnVtIHNpaTg2MjBfbXRfc3RhdGUgbXRfc3RhdGU7Cj4+PiAr CXN0cnVjdCBsaXN0X2hlYWQgbXRfcXVldWU7Cj4+PiArfTsKPj4+ICsKPj4+ICtzdHJ1Y3Qgc2lp ODYyMF9tdF9tc2c7Cj4+PiArCj4+PiArdHlwZWRlZiB2b2lkICgqc2lpODYyMF9tdF9tc2dfY2Ip KHN0cnVjdCBzaWk4NjIwICpjdHgsCj4+PiArCQkJCSAgc3RydWN0IHNpaTg2MjBfbXRfbXNnICpt c2cpOwo+Pj4gKwo+Pj4gK3N0cnVjdCBzaWk4NjIwX210X21zZyB7Cj4+PiArCXN0cnVjdCBsaXN0 X2hlYWQgbm9kZTsKPj4+ICsJdTggcmVnWzRdOwo+Pj4gKwl1OCByZXQ7Cj4+PiArCXNpaTg2MjBf bXRfbXNnX2NiIHNlbmQ7Cj4+PiArCXNpaTg2MjBfbXRfbXNnX2NiIHJlY3Y7Cj4+PiArfTsKPj4+ ICsKPj4+ICtzdGF0aWMgY29uc3QgdTggc2lpODYyMF9pMmNfcGFnZVtdID0gewo+Pj4gKwkweDM5 LCAvKiBNYWluIFN5c3RlbSAqLwo+Pj4gKwkweDNkLCAvKiBURE0gYW5kIEhTSUMgKi8KPj4+ICsJ MHg0OSwgLyogVE1EUyBSZWNlaXZlciwgTUhMIEVESUQgKi8KPj4+ICsJMHg0ZCwgLyogZU1TQywg SERDUCwgSFNJQyAqLwo+Pj4gKwkweDVkLCAvKiBNSEwgU3BlYyAqLwo+Pj4gKwkweDY0LCAvKiBN SEwgQ0JVUyAqLwo+Pj4gKwkweDU5LCAvKiBIYXJkd2FyZSBUUEkgKFRyYW5zbWl0dGVyIFByb2dy YW1taW5nIEludGVyZmFjZSkgKi8KPj4+ICsJMHg2MSwgLyogZUNCVVMtUywgZUNCVVMtRCAqLwo+ Pj4gK307Cj4+PiArCj4+PiArc3RhdGljIHZvaWQgc2lpODYyMF9mZXRjaF9lZGlkKHN0cnVjdCBz aWk4NjIwICpjdHgpOwo+Pj4gK3N0YXRpYyB2b2lkIHNpaTg2MjBfc2V0X3Vwc3RyZWFtX2VkaWQo c3RydWN0IHNpaTg2MjAgKmN0eCk7Cj4+PiArc3RhdGljIHZvaWQgc2lpODYyMF9lbmFibGVfaHBk KHN0cnVjdCBzaWk4NjIwICpjdHgpOwo+Pj4gK3N0YXRpYyB2b2lkIHNpaTg2MjBfbWhsX2Rpc2Nv bm5lY3RlZChzdHJ1Y3Qgc2lpODYyMCAqY3R4KTsKPj4+ICsKPj4+ICtzdGF0aWMgaW50IHNpaTg2 MjBfY2xlYXJfZXJyb3Ioc3RydWN0IHNpaTg2MjAgKmN0eCkKPj4+ICt7Cj4+PiArCWludCByZXQg PSBjdHgtPmVycm9yOwo+Pj4gKwo+Pj4gKwljdHgtPmVycm9yID0gMDsKPj4+ICsJcmV0dXJuIHJl dDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHZvaWQgc2lpODYyMF9yZWFkX2J1ZihzdHJ1Y3Qg c2lpODYyMCAqY3R4LCB1MTYgYWRkciwgdTggKmJ1ZiwgaW50IGxlbikKPj4+ICt7Cj4+PiArCXN0 cnVjdCBkZXZpY2UgKmRldiA9IGN0eC0+ZGV2Owo+Pj4gKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50ID0gdG9faTJjX2NsaWVudChkZXYpOwo+Pj4gKwl1OCBkYXRhID0gYWRkcjsKPj4+ICsJc3Ry dWN0IGkyY19tc2cgbXNnW10gPSB7Cj4+PiArCQl7Cj4+PiArCQkJLmFkZHIgPSBzaWk4NjIwX2ky Y19wYWdlW2FkZHIgPj4gOF0sCj4+PiArCQkJLmZsYWdzID0gY2xpZW50LT5mbGFncywKPj4+ICsJ CQkubGVuID0gMSwKPj4+ICsJCQkuYnVmID0gJmRhdGEKPj4+ICsJCX0sCj4+PiArCQl7Cj4+PiAr CQkJLmFkZHIgPSBzaWk4NjIwX2kyY19wYWdlW2FkZHIgPj4gOF0sCj4+PiArCQkJLmZsYWdzID0g Y2xpZW50LT5mbGFncyB8IEkyQ19NX1JELAo+Pj4gKwkJCS5sZW4gPSBsZW4sCj4+PiArCQkJLmJ1 ZiA9IGJ1Zgo+Pj4gKwkJfSwKPj4+ICsJfTsKPj4+ICsJaW50IHJldDsKPj4+ICsKPj4+ICsJaWYg KGN0eC0+ZXJyb3IpCj4+PiArCQlyZXR1cm47Cj4+PiArCj4+PiArCXJldCA9IGkyY190cmFuc2Zl cihjbGllbnQtPmFkYXB0ZXIsIG1zZywgMik7Cj4+PiArCWRldl9kYmcoZGV2LCAicmVhZCBhdCAl MDR4OiAlKnBoLCAlZFxuIiwgYWRkciwgbGVuLCBidWYsIHJldCk7Cj4+PiArCj4+PiArCWlmIChy ZXQgIT0gMikgewo+Pj4gKwkJZGV2X2VycihkZXYsICJSZWFkIGF0ICUjMDZ4IG9mICVkIGJ5dGVz IGZhaWxlZCB3aXRoIGNvZGUgJWQuXG4iLAo+Pj4gKwkJCWFkZHIsIGxlbiwgcmV0KTsKPj4+ICsJ CWN0eC0+ZXJyb3IgPSByZXQgPCAwID8gcmV0IDogLUVJTzsKPj4+ICsJfQo+Pj4gK30KPj4+ICsK Pj4+ICtzdGF0aWMgdTggc2lpODYyMF9yZWFkYihzdHJ1Y3Qgc2lpODYyMCAqY3R4LCB1MTYgYWRk cikKPj4+ICt7Cj4+PiArCXU4IHJldDsKPj4+ICsKPj4+ICsJc2lpODYyMF9yZWFkX2J1ZihjdHgs IGFkZHIsICZyZXQsIDEpOwo+Pj4gKwlyZXR1cm4gcmV0Owo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0 aWMgdm9pZCBzaWk4NjIwX3dyaXRlX2J1ZihzdHJ1Y3Qgc2lpODYyMCAqY3R4LCB1MTYgYWRkciwg Y29uc3QgdTggKmJ1ZiwKPj4+ICsJCQkgICAgICBpbnQgbGVuKQo+Pj4gK3sKPj4+ICsJc3RydWN0 IGRldmljZSAqZGV2ID0gY3R4LT5kZXY7Cj4+PiArCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQg PSB0b19pMmNfY2xpZW50KGRldik7Cj4+PiArCXU4IGRhdGFbMl07Cj4+PiArCXN0cnVjdCBpMmNf bXNnIG1zZyA9IHsKPj4+ICsJCS5hZGRyID0gc2lpODYyMF9pMmNfcGFnZVthZGRyID4+IDhdLAo+ Pj4gKwkJLmZsYWdzID0gY2xpZW50LT5mbGFncywKPj4+ICsJCS5sZW4gPSBsZW4gKyAxLAo+Pj4g Kwl9Owo+Pj4gKwlpbnQgcmV0Owo+Pj4gKwo+Pj4gKwlpZiAoY3R4LT5lcnJvcikKPj4+ICsJCXJl dHVybjsKPj4+ICsKPj4+ICsJaWYgKGxlbiA+IDEpIHsKPj4+ICsJCW1zZy5idWYgPSBrbWFsbG9j KGxlbiArIDEsIEdGUF9LRVJORUwpOwo+Pj4gKwkJaWYgKCFtc2cuYnVmKSB7Cj4+PiArCQkJY3R4 LT5lcnJvciA9IC1FTk9NRU07Cj4+PiArCQkJcmV0dXJuOwo+Pj4gKwkJfQo+Pj4gKwkJbWVtY3B5 KG1zZy5idWYgKyAxLCBidWYsIGxlbik7Cj4+PiArCX0gZWxzZSB7Cj4+PiArCQltc2cuYnVmID0g ZGF0YTsKPj4+ICsJCW1zZy5idWZbMV0gPSAqYnVmOwo+Pj4gKwl9Cj4+PiArCj4+PiArCW1zZy5i dWZbMF0gPSBhZGRyOwo+Pj4gKwo+Pj4gKwlyZXQgPSBpMmNfdHJhbnNmZXIoY2xpZW50LT5hZGFw dGVyLCAmbXNnLCAxKTsKPj4+ICsJZGV2X2RiZyhkZXYsICJ3cml0ZSBhdCAlMDR4OiAlKnBoLCAl ZFxuIiwgYWRkciwgbGVuLCBidWYsIHJldCk7Cj4+PiArCj4+PiArCWlmIChyZXQgIT0gMSkgewo+ Pj4gKwkJZGV2X2VycihkZXYsICJXcml0ZSBhdCAlIzA2eCBvZiAlKnBoIGZhaWxlZCB3aXRoIGNv ZGUgJWQuXG4iLAo+Pj4gKwkJCWFkZHIsIGxlbiwgYnVmLCByZXQpOwo+Pj4gKwkJY3R4LT5lcnJv ciA9IHJldCA/OiAtRUlPOwo+Pj4gKwl9Cj4+PiArCj4+PiArCWlmIChsZW4gPiAxKQo+Pj4gKwkJ a2ZyZWUobXNnLmJ1Zik7Cj4+PiArfQo+Pj4gKwo+Pj4gKyNkZWZpbmUgc2lpODYyMF93cml0ZShj dHgsIGFkZHIsIGFyci4uLikgXAo+Pj4gKyh7XAo+Pj4gKwl1OCBkW10gPSB7IGFyciB9OyBcCj4+ PiArCXNpaTg2MjBfd3JpdGVfYnVmKGN0eCwgYWRkciwgZCwgQVJSQVlfU0laRShkKSk7IFwKPj4+ ICt9KQo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkIF9fc2lpODYyMF93cml0ZV9zZXEoc3RydWN0IHNp aTg2MjAgKmN0eCwgdTE2ICpzZXEsIGludCBsZW4pCj4+PiArewo+Pj4gKwlpbnQgaTsKPj4+ICsK Pj4+ICsJZm9yIChpID0gMDsgaSA8IGxlbjsgaSArPSAyKQo+Pj4gKwkJc2lpODYyMF93cml0ZShj dHgsIHNlcVtpXSwgc2VxW2kgKyAxXSk7Cj4+PiArfQo+Pj4gKwo+Pj4gKyNkZWZpbmUgc2lpODYy MF93cml0ZV9zZXEoY3R4LCBzZXEuLi4pIFwKPj4+ICsoe1wKPj4+ICsJdTE2IGRbXSA9IHsgc2Vx IH07IFwKPj4+ICsJX19zaWk4NjIwX3dyaXRlX3NlcShjdHgsIGQsIEFSUkFZX1NJWkUoZCkpOyBc Cj4+PiArfSkKPj4+ICsKPj4gSXMgaXQgcG9zc2libGUgdG8gdXNlIHJlZ21hcF9idWxrX3JlYWQv d3JpdGUgYXBpIGhlcmUgaW5zdGVhZD8KPgo+IHNpaTg2MjAgYWRkcmVzcyBzcGFjZSBpcyBkaXZp ZGVkIGludG8gOCBwYWdlcyAoc2VlIHNpaTg2MjBfaTJjX3BhZ2UKPiB2YXJpYWJsZSksIGV2ZXJ5 IHBhZ2UgaXMgbWFwcGVkIHRvIHNlcGFyYXRlIGkyYyBzbGF2ZSBhZGRyZXNzLgo+IEkvTyBhY2Nl c3MgaGVscGVycyBkZWZpbmVkIGFib3ZlIHdvcmtzIHdpdGggdGhpcyBhZGRyZXNzIHNwYWNlLAo+ IGl0IGlzIGltcG9ydGFudCBlc3BlY2lhbGx5IGZvciBzaWk4NjIwX3dyaXRlX3NlcSwgd2hpY2gg YWxsb3cgdG8gc2V0Cj4gcmVnaXN0ZXJzIGxvY2F0ZWQgaW4gZGlmZmVyZW50IHBhZ2VzIHdpdGhp biBvbmUgY2FsbC4KPgo+IFRoZW9yZXRpY2FsbHkgaXQgY291bGQgYmUgcG9zc2libGUgdG8gcmVn aXN0ZXIgc2VwYXJhdGUgcmVnbWFwIGZvciBldmVyeQo+IHBhZ2UgYW5kIHJld3JpdGUgaGVscGVy cyBhYm92ZSB0byB1c2UgdGhlbSwgYnV0IHRoZSBidXJkZW4gc2VlbXMKPiB0byBiZSBzaW1pbGFy IG9yIGJpZ2dlciBhbmQgbm8gcmVhbCBiZW5lZml0LgoKT2theSwgdGhhbmtzIGZvciB0aGUgY2xh cmlmaWNhdGlvbi4gSSBndWVzcyBpdCBkb2Vzbid0IG1ha2UgbXVjaApzZW5zZSB0byB1c2UgcmVn bWFwIGhlcmUuCgo+Pgo+Pj4gK3N0YXRpYyB2b2lkIHNpaTg2MjBfc2V0Yml0cyhzdHJ1Y3Qgc2lp ODYyMCAqY3R4LCB1MTYgYWRkciwgdTggbWFzaywgdTggdmFsKQo+Pj4gK3sKPj4+ICsJdmFsID0g KHZhbCAmIG1hc2spIHwgKHNpaTg2MjBfcmVhZGIoY3R4LCBhZGRyKSAmIH5tYXNrKTsKPj4+ICsJ c2lpODYyMF93cml0ZShjdHgsIGFkZHIsIHZhbCk7Cj4+PiArfQo+Pj4gKwo+Cj4gKC4uLikKPgo+ Pj4gKwo+Pj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHNpaTg2MjAgKmJyaWRnZV90b19zaWk4NjIw KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4+PiArewo+Pj4gKwlyZXR1cm4gY29udGFpbmVy X29mKGJyaWRnZSwgc3RydWN0IHNpaTg2MjAsIGJyaWRnZSk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3Zv aWQgc2lpODYyMF9icmlkZ2VfZHVtbXkoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPj4+ICt7 Cj4+PiArCj4+PiArfQo+Pj4gKwo+PiBXZSBjYW4gbm93IGdldCByaWQgb2YgdGhlIGR1bW15IGJy aWRnZSBvcHMgYW5kIG5vdCBwb3B1bGF0ZSBhbnl0aGluZy4KPgo+IFllYWgsIHdvcmxkIGhhcyBj aGFuZ2VkIGJldHdlZW4gcmVzZW5kcywgSSB3aWxsIHJlbW92ZSBpdCBpbiBuZXh0IGl0ZXJhdGlv bi4KPgo+Pgo+Pj4gK2Jvb2wgc2lpODYyMF9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UsCj4+PiArCQkgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPj4+ ICsJCSAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQo+Pj4gK3sKPj4+ ICsJc3RydWN0IHNpaTg2MjAgKmN0eCA9IGJyaWRnZV90b19zaWk4NjIwKGJyaWRnZSk7Cj4+PiAr CWJvb2wgcmV0ID0gZmFsc2U7Cj4+PiArCWludCBtYXhfY2xvY2sgPSA3NDI1MDsKPj4+ICsKPj4+ ICsJbXV0ZXhfbG9jaygmY3R4LT5sb2NrKTsKPj4+ICsKPj4+ICsJaWYgKG1vZGUtPmZsYWdzICYg RFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCj4+PiArCQlnb3RvIG91dDsKPj4+ICsKPj4+ICsJaWYg KGN0eC0+ZGV2Y2FwW01ITF9EQ0FQX1ZJRF9MSU5LX01PREVdICYgTUhMX0RDQVBfVklEX0xJTktf UFBJWEVMKQo+Pj4gKwkJbWF4X2Nsb2NrID0gMzAwMDAwOwo+Pj4gKwo+Pj4gKwlyZXQgPSBtb2Rl LT5jbG9jayA8PSBtYXhfY2xvY2s7Cj4+PiArCj4+PiArb3V0Ogo+Pj4gKwltdXRleF91bmxvY2so JmN0eC0+bG9jayk7Cj4+PiArCj4+PiArCXJldHVybiByZXQ7Cj4+PiArfQo+Pj4gKwo+Pj4gKwo+ Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2JyaWRnZV9mdW5jcyBzaWk4NjIwX2JyaWRnZV9m dW5jcyA9IHsKPj4+ICsJLnByZV9lbmFibGUgPSBzaWk4NjIwX2JyaWRnZV9kdW1teSwKPj4+ICsJ LmVuYWJsZSA9IHNpaTg2MjBfYnJpZGdlX2R1bW15LAo+Pj4gKwkuZGlzYWJsZSA9IHNpaTg2MjBf YnJpZGdlX2R1bW15LAo+Pj4gKwkucG9zdF9kaXNhYmxlID0gc2lpODYyMF9icmlkZ2VfZHVtbXks Cj4+PiArCS5tb2RlX2ZpeHVwID0gc2lpODYyMF9tb2RlX2ZpeHVwLAo+Pj4gK307Cj4+PiArCj4+ PiArc3RhdGljIGludCBzaWk4NjIwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCj4+ PiArCQkJIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCkKPj4+ICt7Cj4+PiArCXN0cnVj dCBkZXZpY2UgKmRldiA9ICZjbGllbnQtPmRldjsKPj4+ICsJc3RydWN0IHNpaTg2MjAgKmN0eDsK Pj4+ICsJaW50IHJldDsKPj4+ICsKPj4+ICsJY3R4ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9m KCpjdHgpLCBHRlBfS0VSTkVMKTsKPj4+ICsJaWYgKCFjdHgpCj4+PiArCQlyZXR1cm4gLUVOT01F TTsKPj4+ICsKPj4+ICsJY3R4LT5kZXYgPSBkZXY7Cj4+PiArCW11dGV4X2luaXQoJmN0eC0+bG9j ayk7Cj4+PiArCUlOSVRfTElTVF9IRUFEKCZjdHgtPm10X3F1ZXVlKTsKPj4+ICsKPj4+ICsJY3R4 LT5jbGtfeHRhbCA9IGRldm1fY2xrX2dldChkZXYsICJ4dGFsIik7Cj4+PiArCWlmIChJU19FUlIo Y3R4LT5jbGtfeHRhbCkpIHsKPj4+ICsJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCB4dGFs IGNsb2NrIGZyb20gRFRcbiIpOwo+Pj4gKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5jbGtfeHRhbCk7 Cj4+PiArCX0KPj4+ICsKPj4+ICsJaWYgKCFjbGllbnQtPmlycSkgewo+Pj4gKwkJZGV2X2Vycihk ZXYsICJubyBpcnEgcHJvdmlkZWRcbiIpOwo+Pj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+PiArCX0K Pj4+ICsJaXJxX3NldF9zdGF0dXNfZmxhZ3MoY2xpZW50LT5pcnEsIElSUV9OT0FVVE9FTik7Cj4+ PiArCXJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoZGV2LCBjbGllbnQtPmlycSwgTlVM TCwKPj4+ICsJCQlzaWk4NjIwX2lycV90aHJlYWQsIElSUUZfVFJJR0dFUl9ISUdIIHwgSVJRRl9P TkVTSE9ULAo+Pj4gKwkJCSJzaWk4NjIwIiwgY3R4KTsKPj4+ICsKPj4+ICsJY3R4LT5ncGlvX3Jl c2V0ID0gZGV2bV9ncGlvZF9nZXQoZGV2LCAicmVzZXQiLCBHUElPRF9PVVRfSElHSCk7Cj4+PiAr CWlmIChJU19FUlIoY3R4LT5ncGlvX3Jlc2V0KSkgewo+Pj4gKwkJZGV2X2VycihkZXYsICJmYWls ZWQgdG8gZ2V0IHJlc2V0IGdwaW8gZnJvbSBEVFxuIik7Cj4+PiArCQlyZXR1cm4gUFRSX0VSUihj dHgtPmdwaW9fcmVzZXQpOwo+Pj4gKwl9Cj4+PiArCj4+PiArCWN0eC0+c3VwcGxpZXNbMF0uc3Vw cGx5ID0gImN2Y2MxMCI7Cj4+PiArCWN0eC0+c3VwcGxpZXNbMV0uc3VwcGx5ID0gImlvdmNjMTgi Owo+Pj4gKwlyZXQgPSBkZXZtX3JlZ3VsYXRvcl9idWxrX2dldChkZXYsIDIsIGN0eC0+c3VwcGxp ZXMpOwo+Pj4gKwlpZiAocmV0KQo+Pj4gKwkJcmV0dXJuIHJldDsKPj4+ICsKPj4+ICsJaTJjX3Nl dF9jbGllbnRkYXRhKGNsaWVudCwgY3R4KTsKPj4+ICsKPj4+ICsJY3R4LT5icmlkZ2UuZnVuY3Mg PSAmc2lpODYyMF9icmlkZ2VfZnVuY3M7Cj4+PiArCWN0eC0+YnJpZGdlLm9mX25vZGUgPSBkZXYt Pm9mX25vZGU7Cj4+PiArCWRybV9icmlkZ2VfYWRkKCZjdHgtPmJyaWRnZSk7Cj4+PiArCj4+PiAr CXNpaTg2MjBfY2FibGVfaW4oY3R4KTsKPj4+ICsKPj4+ICsJcmV0dXJuIDA7Cj4+PiArfQo+Pj4g Kwo+Pj4gK3N0YXRpYyBpbnQgc2lpODYyMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPj4+ICt7Cj4+PiArCXN0cnVjdCBzaWk4NjIwICpjdHggPSBpMmNfZ2V0X2NsaWVudGRhdGEo Y2xpZW50KTsKPj4+ICsKPj4+ICsJZGlzYWJsZV9pcnEodG9faTJjX2NsaWVudChjdHgtPmRldikt PmlycSk7Cj4+PiArCW11dGV4X2xvY2soJmN0eC0+bG9jayk7Cj4+PiArCWRybV9icmlkZ2VfcmVt b3ZlKCZjdHgtPmJyaWRnZSk7Cj4+IERvIHdlIG5lZWQgdG8gY2FsbCBkcm1fYnJpZGdlX3JlbW92 ZSB3aXRoIHRoZSBsb2NrIGhlbGQgdG9vPwo+Cj4gTm8sIGluIGZhY3QgYWZ0ZXIgZGlzYWJsaW5n IGlycSB0aGVyZSB3aWxsIGJlIG5vIGNvbmN1cnJlbnQgYWNjZXNzCj4gdG8gdGhlIGNvbnRleHQg c28gbG9ja2luZyBoZXJlIGNhbiBiZSByZW1vdmVkLgo+Cj4gT24gdGhlIG90aGVyIHNpZGUgZHJt X2JyaWRnZV9yZW1vdmUgZG9lcyBub3RoaW5nIGV4Y2VwdCByZW1vdmluZwo+IGZyb20gYnJpZGdl IGxpc3QsIHNvIGl0IGlzIHBvc3NpYmxlIHRoYXQgYnJpZGdlIGNhbiBiZSB1bmJvdW5kIHdoZW4g aXQgaXMKPiBhdHRhY2hlZCB0byB3b3JraW5nIGVuY29kZXIsIGluIHN1Y2ggc2l0dWF0aW9uIGVu Y29kZXIgd2lsbCBzdGF5IHdpdGgKPiBwb2ludGVyIHRvIG5vbi1leGlzdGluZyBicmlkZ2UgLSBp biBzdWNoIHNpdHVhdGlvbiBldmVyeXRoaW5nIGNhbiBoYXBwZW4uCj4gSSBzdXBwb3NlIHRoaXMg YnVnIGFmZmVjdHMgbW9zdCBicmlkZ2VzIGFuZCBwYW5lbHMgYW5kIGV2ZW4gaWYgaXQgY291bGQg YmUKPiBmaXhlZCBpbiBicmlkZ2UgZHJpdmVyIEkgZ3Vlc3MgZHJtX2NvcmUgc2hvdWxkIGJlIGJl dHRlciBwbGFjZSBmb3IgaXQuCgpSaWdodCwgSSB0aGluayBpZiB0aGUga21zIGRyaXZlciB1c2lu ZyB0aGUgYnJpZGdlIHRha2VzIGEgcmVmZXJlbmNlIG9mCnRoZSBicmlkZ2UgbW9kdWxlIGR1cmlu ZyBkcm1fYnJpZGdlX2F0dGFjaCwgaXQgd291bGQgcHJldmVudCByZW1vdmluZwp0aGUgbW9kdWxl IHVudGlsIHRoZSBrbXMgZHJpdmVyIGRvZXNuJ3QgY2FsbCBhIGRybV9icmlkZ2VfZGV0YWNoKCks IGJ1dApJJ20gbm90IHN1cmUgaWYgdGhhdCdzIHRoZSByaWdodCBhcHByb2FjaC4KCkFub3RoZXIg b3B0aW9uIGlzIHRvIGNvbXBvbmVudGl6ZSB0aGUgYnJpZGdlIGRyaXZlcnMgdG9vLCB3aGljaCB3 b3VsZAplbnN1cmUgdGhhdCBicmlkZ2UgY29tcG9uZW50cyBhcmUgYm91bmQgYmVmb3JlIHRoZSBt YXN0ZXIgaXMgYm91bmQsIGFuZAp1bmJvdW5kIG9ubHkgYWZ0ZXIgdGhlIG1hc3RlciBpcyB1bmJv dW5kLgoKV2lsbCB3b3JrIG9uIGFuIFJGQyBmb3IgdGhpcyBhbmQgZ2V0IHNvbWUgb3BpbmlvbnMu CgpUaGFua3MsCkFyY2hpdAoKPgo+IFJlZ2FyZHMKPiBBbmRyemVqCj4KPgoKLS0gClF1YWxjb21t IElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIENvZGUgQXVyb3JhIEZvcnVt LAphIExpbnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0Cl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=