From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrzej Hajda Subject: Re: [PATCH v4 2/3] drm: bridge: Add thc63lvd1024 LVDS decoder driver Date: Thu, 15 Mar 2018 14:37:00 +0100 Message-ID: <1d98d055-fb5b-3840-e9dd-6bb8f8251bb9@samsung.com> References: <1521111391-3515-1-git-send-email-jacopo+renesas@jmondi.org> <1521111391-3515-3-git-send-email-jacopo+renesas@jmondi.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1521111391-3515-3-git-send-email-jacopo+renesas@jmondi.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jacopo Mondi , architt@codeaurora.org, Laurent.pinchart@ideasonboard.com, airlied@linux.ie, horms@verge.net.au, magnus.damm@gmail.com, geert@linux-m68k.org, niklas.soderlund@ragnatech.se, sergei.shtylyov@cogentembedded.com, robh+dt@kernel.org, mark.rutland@arm.com Cc: linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: devicetree@vger.kernel.org T24gMTUuMDMuMjAxOCAxMTo1NiwgSmFjb3BvIE1vbmRpIHdyb3RlOgo+IEFkZCBEUk0gYnJpZGdl IGRyaXZlciBmb3IgVGhpbmUgVEhDNjNMVkQxMDI0IExWRFMgdG8gZGlnaXRhbCBwYXJhbGxlbAo+ IG91dHB1dCBjb252ZXJ0ZXIuCj4KPiBTaWduZWQtb2ZmLWJ5OiBKYWNvcG8gTW9uZGkgPGphY29w bytyZW5lc2FzQGptb25kaS5vcmc+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2Nv bmZpZyAgICAgICAgfCAgIDYgKwo+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlICAg ICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90aGM2M2x2ZDEwMjQuYyB8IDI1 NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDMgZmlsZXMgY2hhbmdlZCwg MjYyIGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9i cmlkZ2UvdGhjNjNsdmQxMDI0LmMKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJp ZGdlL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcKPiBpbmRleCAzYjk5 ZDVhLi41ODE1YTIwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZp Zwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZwo+IEBAIC05Miw2ICs5Miwx MiBAQCBjb25maWcgRFJNX1NJSTkyMzQKPiAgCSAgSXQgaXMgYW4gSTJDIGRyaXZlciwgdGhhdCBk ZXRlY3RzIGNvbm5lY3Rpb24gb2YgTUhMIGJyaWRnZQo+ICAJICBhbmQgc3RhcnRzIGVuY2Fwc3Vs YXRpb24gb2YgSERNSSBzaWduYWwuCj4gIAo+ICtjb25maWcgRFJNX1RISU5FX1RIQzYzTFZEMTAy NAo+ICsJdHJpc3RhdGUgIlRoaW5lIFRIQzYzTFZEMTAyNCBMVkRTIGRlY29kZXIgYnJpZGdlIgo+ ICsJZGVwZW5kcyBvbiBPRgo+ICsJLS0taGVscC0tLQo+ICsJICBUaGluZSBUSEM2M0xWRDEwMjQg TFZEUy9wYXJhbGxlbCBjb252ZXJ0ZXIgZHJpdmVyLgo+ICsKPiAgY29uZmlnIERSTV9UT1NISUJB X1RDMzU4NzY3Cj4gIAl0cmlzdGF0ZSAiVG9zaGliYSBUQzM1ODc2NyBlRFAgYnJpZGdlIgo+ICAJ ZGVwZW5kcyBvbiBPRgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2Vm aWxlIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZQo+IGluZGV4IDM3M2ViMjguLmZk OTBiMTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZQo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKPiBAQCAtOCw2ICs4LDcgQEAgb2Jq LSQoQ09ORklHX0RSTV9QQVJBREVfUFM4NjIyKSArPSBwYXJhZGUtcHM4NjIyLm8KPiAgb2JqLSQo Q09ORklHX0RSTV9TSUxfU0lJODYyMCkgKz0gc2lsLXNpaTg2MjAubwo+ICBvYmotJChDT05GSUdf RFJNX1NJSTkwMlgpICs9IHNpaTkwMngubwo+ICBvYmotJChDT05GSUdfRFJNX1NJSTkyMzQpICs9 IHNpaTkyMzQubwo+ICtvYmotJChDT05GSUdfRFJNX1RISU5FX1RIQzYzTFZEMTAyNCkgKz0gdGhj NjNsdmQxMDI0Lm8KPiAgb2JqLSQoQ09ORklHX0RSTV9UT1NISUJBX1RDMzU4NzY3KSArPSB0YzM1 ODc2Ny5vCj4gIG9iai0kKENPTkZJR19EUk1fQU5BTE9HSVhfRFApICs9IGFuYWxvZ2l4Lwo+ICBv YmotJChDT05GSUdfRFJNX0kyQ19BRFY3NTExKSArPSBhZHY3NTExLwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RoYzYzbHZkMTAyNC5jIGIvZHJpdmVycy9ncHUvZHJtL2Jy aWRnZS90aGM2M2x2ZDEwMjQuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw MC4uMDY3ZjIzMQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdl L3RoYzYzbHZkMTAyNC5jCj4gQEAgLTAsMCArMSwyNTUgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjAKPiArLyoKPiArICogVEhDNjNMVkQxMDI0IExWRFMgdG8gcGFyYWxs ZWwgZGF0YSBEUk0gYnJpZGdlIGRyaXZlci4KPiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDE4 IEphY29wbyBNb25kaSA8amFjb3BvK3JlbmVzYXNAam1vbmRpLm9yZz4KPiArICovCj4gKwo+ICsj aW5jbHVkZSA8ZHJtL2RybVAuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fYnJpZGdlLmg+Cj4gKyNp bmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+Cj4gKwo+ICsjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25z dW1lci5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2ZfZ3JhcGguaD4KPiArI2luY2x1ZGUgPGxpbnV4 L3JlZ3VsYXRvci9jb25zdW1lci5oPgo+ICsKPiArZW51bSB7Cj4gKwlUSEM2M19MVkRTX0lOMCwK PiArCVRIQzYzX0xWRFNfSU4xLAo+ICsJVEhDNjNfRElHSVRBTF9PVVQwLAo+ICsJVEhDNjNfRElH SVRBTF9PVVQxLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB0aGM2M19y ZWdfbmFtZXNbXSA9IHsKPiArCSJ2Y2MiLCAibHZjYyIsICJwdmNjIiwgImN2Y2MiLAo+ICt9Owo+ ICsKPiArc3RydWN0IHRoYzYzX2RldiB7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gKwo+ICsJ c3RydWN0IHJlZ3VsYXRvciAqdmNjc1tBUlJBWV9TSVpFKHRoYzYzX3JlZ19uYW1lcyldOwo+ICsK PiArCXN0cnVjdCBncGlvX2Rlc2MgKnBkd247Cj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpvZTsKPiAr Cj4gKwlzdHJ1Y3QgZHJtX2JyaWRnZSBicmlkZ2U7Cj4gKwlzdHJ1Y3QgZHJtX2JyaWRnZSAqbmV4 dDsKPiArfTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHRoYzYzX2RldiAqdG9fdGhjNjMo c3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiArewo+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihi cmlkZ2UsIHN0cnVjdCB0aGM2M19kZXYsIGJyaWRnZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg dGhjNjNfYXR0YWNoKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gK3sKPiArCXN0cnVjdCB0 aGM2M19kZXYgKnRoYzYzID0gdG9fdGhjNjMoYnJpZGdlKTsKPiArCj4gKwlyZXR1cm4gZHJtX2Jy aWRnZV9hdHRhY2goYnJpZGdlLT5lbmNvZGVyLCB0aGM2My0+bmV4dCwgYnJpZGdlKTsKPiArfQo+ ICsKPiArc3RhdGljIHZvaWQgdGhjNjNfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2Up Cj4gK3sKPiArCXN0cnVjdCB0aGM2M19kZXYgKnRoYzYzID0gdG9fdGhjNjMoYnJpZGdlKTsKPiAr CXN0cnVjdCByZWd1bGF0b3IgKnZjYzsKPiArCWludCBpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKHRoYzYzLT52Y2NzKTsgaSsrKSB7Cj4gKwkJdmNjID0gdGhjNjMtPnZjY3Nb aV07Cj4gKwkJaWYgKCF2Y2MpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlpZiAocmVndWxhdG9y X2VuYWJsZSh2Y2MpKQo+ICsJCQlnb3RvIGVycm9yX3ZjY19lbmFibGU7Cj4gKwl9Cj4gKwo+ICsJ aWYgKHRoYzYzLT5wZHduKQo+ICsJCWdwaW9kX3NldF92YWx1ZSh0aGM2My0+cGR3biwgMCk7Cj4g Kwo+ICsJaWYgKHRoYzYzLT5vZSkKPiArCQlncGlvZF9zZXRfdmFsdWUodGhjNjMtPm9lLCAxKTsK PiArCj4gKwlyZXR1cm47Cj4gKwo+ICtlcnJvcl92Y2NfZW5hYmxlOgo+ICsJZGV2X2Vycih0aGM2 My0+ZGV2LCAiRmFpbGVkIHRvIGVuYWJsZSByZWd1bGF0b3IgJXVcbiIsIGkpOwoKSXQgd291bGQg YmUgYmV0dGVyIHRvIHVzZSBzdXBwbHkgb3IgcmVndWxhdG9yIG5hbWUgaW5zdGVhZCBvZiBpbmRl eC4KCj4gKwo+ICsJZm9yIChpID0gaSAtIDE7IGkgPj0gMDsgaS0tKSB7Cj4gKwkJdmNjID0gdGhj NjMtPnZjY3NbaV07Cj4gKwkJaWYgKCF2Y2MpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlyZWd1 bGF0b3JfZGlzYWJsZSh2Y2MpOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB0aGM2M19k aXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gK3sKPiArCXN0cnVjdCB0aGM2M19k ZXYgKnRoYzYzID0gdG9fdGhjNjMoYnJpZGdlKTsKPiArCXN0cnVjdCByZWd1bGF0b3IgKnZjYzsK PiArCWludCBpOwo+ICsKPiArCWlmICh0aGM2My0+b2UpCj4gKwkJZ3Bpb2Rfc2V0X3ZhbHVlKHRo YzYzLT5vZSwgMCk7Cj4gKwo+ICsJaWYgKHRoYzYzLT5wZHduKQo+ICsJCWdwaW9kX3NldF92YWx1 ZSh0aGM2My0+cGR3biwgMSk7Cj4gKwo+ICsJZm9yIChpID0gQVJSQVlfU0laRSh0aGM2My0+dmNj cykgLSAxOyBpID49IDA7IGktLSkgewo+ICsJCXZjYyA9IHRoYzYzLT52Y2NzW2ldOwo+ICsJCWlm ICghdmNjKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJaWYgKHJlZ3VsYXRvcl9kaXNhYmxlKHZj YykpCj4gKwkJCWRldl9kYmcodGhjNjMtPmRldiwKPiArCQkJCSJGYWlsZWQgdG8gZGlzYWJsZSBy ZWd1bGF0b3IgJXVcbiIsIGkpOwoKZGl0dG8KCj4gKwl9Cj4gK30KPiArCj4gK3N0cnVjdCBkcm1f YnJpZGdlX2Z1bmNzIHRoYzYzX2JyaWRnZV9mdW5jID0gewo+ICsJLmF0dGFjaAk9IHRoYzYzX2F0 dGFjaCwKPiArCS5lbmFibGUgPSB0aGM2M19lbmFibGUsCj4gKwkuZGlzYWJsZSA9IHRoYzYzX2Rp c2FibGUsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IHRoYzYzX3BhcnNlX2R0KHN0cnVjdCB0aGM2 M19kZXYgKnRoYzYzKQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnRoYzYzX291dDsKPiAr CXN0cnVjdCBkZXZpY2Vfbm9kZSAqcmVtb3RlOwo+ICsJaW50IHJldCA9IDA7Cj4gKwo+ICsJdGhj NjNfb3V0ID0gb2ZfZ3JhcGhfZ2V0X2VuZHBvaW50X2J5X3JlZ3ModGhjNjMtPmRldi0+b2Zfbm9k ZSwKPiArCQkJCQkJICBUSEM2M19ESUdJVEFMX09VVDAsIC0xKTsKPiArCWlmICghdGhjNjNfb3V0 KSB7Cj4gKwkJZGV2X2Vycih0aGM2My0+ZGV2LCAiTWlzc2luZyBlbmRwb2ludCBpbiBQb3J0QCV1 XG4iLAo+ICsJCQlUSEM2M19ESUdJVEFMX09VVDApOwo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsJ fQo+ICsKPiArCXJlbW90ZSA9IG9mX2dyYXBoX2dldF9yZW1vdGVfcG9ydF9wYXJlbnQodGhjNjNf b3V0KTsKPiArCWlmICghcmVtb3RlKSB7Cj4gKwkJZGV2X2Vycih0aGM2My0+ZGV2LCAiRW5kcG9p bnQgaW4gUG9ydEAldSB1bmNvbm5lY3RlZFxuIiwKPiArCQkJVEhDNjNfRElHSVRBTF9PVVQwKTsK PiArCQlyZXQgPSAtRU5PREVWOwo+ICsJCWdvdG8gZXJyb3JfcHV0X291dF9ub2RlOwo+ICsJfQo+ ICsKPiArCWlmICghb2ZfZGV2aWNlX2lzX2F2YWlsYWJsZShyZW1vdGUpKSB7Cj4gKwkJZGV2X2Vy cih0aGM2My0+ZGV2LCAiUG9ydEAldSByZW1vdGUgZW5kcG9pbnQgaXMgZGlzYWJsZWRcbiIsCj4g KwkJCVRIQzYzX0RJR0lUQUxfT1VUMCk7Cj4gKwkJcmV0ID0gLUVOT0RFVjsKPiArCQlnb3RvIGVy cm9yX3B1dF9yZW1vdGVfbm9kZTsKPiArCX0KPiArCj4gKwl0aGM2My0+bmV4dCA9IG9mX2RybV9m aW5kX2JyaWRnZShyZW1vdGUpOwo+ICsJaWYgKCF0aGM2My0+bmV4dCkKPiArCQlyZXQgPSAtRVBS T0JFX0RFRkVSOwo+ICsKPiArZXJyb3JfcHV0X3JlbW90ZV9ub2RlOgo+ICsJb2Zfbm9kZV9wdXQo cmVtb3RlKTsKPiArZXJyb3JfcHV0X291dF9ub2RlOgo+ICsJb2Zfbm9kZV9wdXQodGhjNjNfb3V0 KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHRoYzYzX2dwaW9f aW5pdChzdHJ1Y3QgdGhjNjNfZGV2ICp0aGM2MykKPiArewo+ICsJdGhjNjMtPm9lID0gZGV2bV9n cGlvZF9nZXRfb3B0aW9uYWwodGhjNjMtPmRldiwgIm9lIiwgR1BJT0RfT1VUX0xPVyk7Cj4gKwlp ZiAoSVNfRVJSKHRoYzYzLT5vZSkpIHsKPiArCQlkZXZfZXJyKHRoYzYzLT5kZXYsICJVbmFibGUg dG8gZ2V0IFwib2UtZ3Bpb3NcIlxuIik7Cj4gKwkJcmV0dXJuIFBUUl9FUlIodGhjNjMtPm9lKTsK PiArCX0KPiArCj4gKwl0aGM2My0+cGR3biA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKHRoYzYz LT5kZXYsICJwZHduIiwKPiArCQkJCQkgICAgICBHUElPRF9PVVRfSElHSCk7Cj4gKwlpZiAoSVNf RVJSKHRoYzYzLT5wZHduKSkgewo+ICsJCWRldl9lcnIodGhjNjMtPmRldiwgIlVuYWJsZSB0byBn ZXQgXCJwZHduLWdwaW9zXCJcbiIpOwo+ICsJCXJldHVybiBQVFJfRVJSKHRoYzYzLT5wZHduKTsK PiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCB0aGM2M19yZWd1 bGF0b3JfaW5pdChzdHJ1Y3QgdGhjNjNfZGV2ICp0aGM2MykKPiArewo+ICsJc3RydWN0IHJlZ3Vs YXRvciAqKnJlZzsKPiArCWludCBpOwo+ICsKPiArCXJlZyA9ICZ0aGM2My0+dmNjc1swXTsKPiAr CWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHRoYzYzLT52Y2NzKTsgaSsrLCByZWcrKykgewo+ ICsJCSpyZWcgPSBkZXZtX3JlZ3VsYXRvcl9nZXRfb3B0aW9uYWwodGhjNjMtPmRldiwKPiArCQkJ CQkJICAgdGhjNjNfcmVnX25hbWVzW2ldKTsKPiArCQlpZiAoSVNfRVJSKCpyZWcpKSB7Cj4gKwkJ CWlmIChQVFJfRVJSKCpyZWcpID09IC1FUFJPQkVfREVGRVIpCj4gKwkJCQlyZXR1cm4gLUVQUk9C RV9ERUZFUjsKPiArCQkJKnJlZyA9IE5VTEw7Cj4gKwkJfQoKWW91IGNvdWxkIHVzZSAiaWYgKCEu Li4pIGNvbnRpbnVlIiwgdG8gYXZvaWQgbmVzdGluZy4KCldpdGggb3Igd2l0aG91dCBzdWdnZXN0 ZWQgY2hhbmdlczoKUmV2aWV3ZWQtYnk6IEFuZHJ6ZWogSGFqZGEgPGEuaGFqZGFAc2Ftc3VuZy5j b20+CgrCoC0tClJlZ2FyZHMKQW5kcnplagoKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ ICsKPiArc3RhdGljIGludCB0aGM2M19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQo+ICt7Cj4gKwlzdHJ1Y3QgdGhjNjNfZGV2ICp0aGM2MzsKPiArCWludCByZXQ7Cj4gKwo+ICsJ dGhjNjMgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCp0aGM2MyksIEdGUF9LRVJO RUwpOwo+ICsJaWYgKCF0aGM2MykKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwl0aGM2My0+ ZGV2ID0gJnBkZXYtPmRldjsKPiArCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHRoYzYzKTsK PiArCj4gKwlyZXQgPSB0aGM2M19yZWd1bGF0b3JfaW5pdCh0aGM2Myk7Cj4gKwlpZiAocmV0KQo+ ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0ID0gdGhjNjNfZ3Bpb19pbml0KHRoYzYzKTsKPiAr CWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXQgPSB0aGM2M19wYXJzZV9kdCh0 aGM2Myk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJdGhjNjMtPmJyaWRn ZS5kcml2ZXJfcHJpdmF0ZSA9IHRoYzYzOwo+ICsJdGhjNjMtPmJyaWRnZS5vZl9ub2RlID0gcGRl di0+ZGV2Lm9mX25vZGU7Cj4gKwl0aGM2My0+YnJpZGdlLmZ1bmNzID0gJnRoYzYzX2JyaWRnZV9m dW5jOwo+ICsKPiArCWRybV9icmlkZ2VfYWRkKCZ0aGM2My0+YnJpZGdlKTsKPiArCj4gKwlyZXR1 cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCB0aGM2M19yZW1vdmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldikKPiArewo+ICsJc3RydWN0IHRoYzYzX2RldiAqdGhjNjMgPSBwbGF0Zm9y bV9nZXRfZHJ2ZGF0YShwZGV2KTsKPiArCj4gKwlkcm1fYnJpZGdlX3JlbW92ZSgmdGhjNjMtPmJy aWRnZSk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gKyNpZmRlZiBDT05GSUdfT0YKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdGhjNjNfbWF0Y2hbXSA9IHsKPiArCXsg LmNvbXBhdGlibGUgPSAidGhpbmUsdGhjNjNsdmQxMDI0IiwgfSwKPiArCXsgfSwKPiArfTsKPiAr TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdGhjNjNfbWF0Y2gpOwo+ICsjZW5kaWYKPiArCj4gK3N0 YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHRoYzYzX2RyaXZlciA9IHsKPiArCS5wcm9iZQk9 IHRoYzYzX3Byb2JlLAo+ICsJLnJlbW92ZQk9IHRoYzYzX3JlbW92ZSwKPiArCS5kcml2ZXIJPSB7 Cj4gKwkJLm5hbWUJCT0gInRoYzYzbHZkMTAyNCIsCj4gKwkJLm9mX21hdGNoX3RhYmxlCT0gdGhj NjNfbWF0Y2gsCj4gKwl9LAo+ICt9Owo+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHRoYzYzX2Ry aXZlcik7Cj4gKwo+ICtNT0RVTEVfQVVUSE9SKCJKYWNvcG8gTW9uZGkgPGphY29wb0BqbW9uZGku b3JnPiIpOwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIlRoaW5lIFRIQzYzTFZEMTAyNCBMVkRTIGRl Y29kZXIgRFJNIGJyaWRnZSBkcml2ZXIiKTsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=