From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philippe CORNU Subject: Re: [PATCH v1 2/2] drm/panel: Add support for Raydium rm68200 panel driver Date: Fri, 2 Mar 2018 15:37:30 +0000 Message-ID: References: <20180208143026.23009-1-philippe.cornu@st.com> <20180208143026.23009-3-philippe.cornu@st.com> <20180228191611.GC22932@mithrandir> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180228191611.GC22932@mithrandir> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Cc: Mark Rutland , "devicetree@vger.kernel.org" , Alexandre TORGUE , David Airlie , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , Yannick FERTRE , Rob Herring , Vincent ABRIOU List-Id: devicetree@vger.kernel.org SGkgVGhpZXJyeSwKCkEgYmlnIHRoYW5rIHlvdSBmb3IgeW91ciBjb2RlIHJldmlldyBhbmQgY29t bWVudHMuCkl0IGhlbHBlZCBtZSB0byBpbXByb3ZlIHRoZSBkcml2ZXIgYW5kIHRvIHNlbmQgYSB2 Mi4KClBoaWxpcHBlIDotKQoKT24gMDIvMjgvMjAxOCAwODoxNiBQTSwgVGhpZXJyeSBSZWRpbmcg d3JvdGU6Cj4gT24gVGh1LCBGZWIgMDgsIDIwMTggYXQgMDM6MzA6MjZQTSArMDEwMCwgUGhpbGlw cGUgQ29ybnUgd3JvdGU6Cj4+IFRoaXMgcGF0Y2ggYWRkcyBSYXlkaXVtIFNlbWljb25kdWN0b3Ig Q29ycG9yYXRpb24gcm02ODIwMAo+PiA1LjUiIDcyMHgxMjgwIFRGVCBMQ0QgcGFuZWwgZHJpdmVy IChNSVBJLURTSSB2aWRlbyBtb2RlKS4KPj4KPj4gU2lnbmVkLW9mZi1ieTogUGhpbGlwcGUgQ29y bnUgPHBoaWxpcHBlLmNvcm51QHN0LmNvbT4KPj4gLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL3Bh bmVsL0tjb25maWcgICAgICAgICAgICAgICAgIHwgICA4ICsKPj4gICBkcml2ZXJzL2dwdS9kcm0v cGFuZWwvTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgIDEgKwo+PiAgIGRyaXZlcnMvZ3B1L2Ry bS9wYW5lbC9wYW5lbC1yYXlkaXVtLXJtNjgyMDAuYyB8IDQ2NCArKysrKysrKysrKysrKysrKysr KysrKysrKwo+PiAgIDMgZmlsZXMgY2hhbmdlZCwgNDczIGluc2VydGlvbnMoKykKPj4gICBjcmVh dGUgbW9kZSAxMDA3NTUgZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXJheWRpdW0tcm02ODIw MC5jCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyBiL2Ry aXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCj4+IGluZGV4IDk4ODA0OGViY2MyMi4uMDhkOTlk ZDQ2NzY1IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwo+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwo+PiBAQCAtMTA4LDYgKzEwOCwxNCBA QCBjb25maWcgRFJNX1BBTkVMX1JBU1BCRVJSWVBJX1RPVUNIU0NSRUVOCj4+ICAgCSAgUGkgNyIg VG91Y2hzY3JlZW4uICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLAo+PiAgIAkg IGNob29zZSBNIGhlcmUuCj4+ICAgCj4+ICtjb25maWcgRFJNX1BBTkVMX1JBWURJVU1fUk02ODIw MAo+PiArCXRyaXN0YXRlICJSYXlkaXVtIHJtNjgyMDAgNzIweDEyODAgZHNpIDJkbCB2aWRlbyBt b2RlIHBhbmVsIgo+IAo+IFdoYXQncyAyZGw/IEVpdGhlciB0aGlzIGlzIHNvbWV0aGluZyBhbHJl YWR5IGltcGxpZWQgYnkgdGhlIFJNNjgyMDAKPiBtb2RlbCBvciBpZiB0aGVyZSBhcmUgbXVsdGlw bGUgdmFyaWFudHMgb2YgdGhlIFJNNjgyMDAgeW91J2xsIHByb2JhYmx5Cj4gd2FudCB0byBlbnN1 cmUgdGhhdCdzIHJlZmxlY3RlZCBpbiB0aGUgY29tcGF0aWJsZSBzdHJpbmcuCj4gCj4+ICsJZGVw ZW5kcyBvbiBPRgo+PiArCWRlcGVuZHMgb24gRFJNX01JUElfRFNJCj4+ICsJaGVscAo+PiArCSAg U2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgUmF5ZGl1bSBybTY4 MjAwCj4+ICsJICA3MjB4MTI4MCBkc2kgMmRsIHZpZGVvIG1vZGUgcGFuZWwKPj4gKwo+PiAgIGNv bmZpZyBEUk1fUEFORUxfU0FNU1VOR19TNkUzSEEyCj4+ICAgCXRyaXN0YXRlICJTYW1zdW5nIFM2 RTNIQTIgRFNJIHZpZGVvIG1vZGUgcGFuZWwiCj4+ICAgCWRlcGVuZHMgb24gT0YKPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9w YW5lbC9NYWtlZmlsZQo+PiBpbmRleCAzZDJhODhkMGU5NjUuLmYyNmVmYzExZDc0NiAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9wYW5lbC9NYWtlZmlsZQo+PiBAQCAtOSw2ICs5LDcgQEAgb2JqLSQoQ09ORklHX0RS TV9QQU5FTF9MR19MRzQ1NzMpICs9IHBhbmVsLWxnLWxnNDU3My5vCj4+ICAgb2JqLSQoQ09ORklH X0RSTV9QQU5FTF9PUklTRVRFQ0hfT1RNODAwOUEpICs9IHBhbmVsLW9yaXNldGVjaC1vdG04MDA5 YS5vCj4+ICAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9QQU5BU09OSUNfVlZYMTBGMDM0TjAwKSAr PSBwYW5lbC1wYW5hc29uaWMtdnZ4MTBmMDM0bjAwLm8KPj4gICBvYmotJChDT05GSUdfRFJNX1BB TkVMX1JBU1BCRVJSWVBJX1RPVUNIU0NSRUVOKSArPSBwYW5lbC1yYXNwYmVycnlwaS10b3VjaHNj cmVlbi5vCj4+ICtvYmotJChDT05GSUdfRFJNX1BBTkVMX1JBWURJVU1fUk02ODIwMCkgKz0gcGFu ZWwtcmF5ZGl1bS1ybTY4MjAwLm8KPj4gICBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NBTVNVTkdf TEQ5MDQwKSArPSBwYW5lbC1zYW1zdW5nLWxkOTA0MC5vCj4+ICAgb2JqLSQoQ09ORklHX0RSTV9Q QU5FTF9TQU1TVU5HX1M2RTNIQTIpICs9IHBhbmVsLXNhbXN1bmctczZlM2hhMi5vCj4+ICAgb2Jq LSQoQ09ORklHX0RSTV9QQU5FTF9TQU1TVU5HX1M2RTYzSjBYMDMpICs9IHBhbmVsLXNhbXN1bmct czZlNjNqMHgwMy5vCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwt cmF5ZGl1bS1ybTY4MjAwLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtcmF5ZGl1bS1y bTY4MjAwLmMKPj4gbmV3IGZpbGUgbW9kZSAxMDA3NTUKPj4gaW5kZXggMDAwMDAwMDAwMDAwLi5m M2UxNTg3M2QwNWEKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvcGFuZWwtcmF5ZGl1bS1ybTY4MjAwLmMKPj4gQEAgLTAsMCArMSw0NjQgQEAKPj4gKy8vIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4+ICsvKgo+PiArICogQ29weXJpZ2h0IChD KSBTVE1pY3JvZWxlY3Ryb25pY3MgU0EgMjAxNwo+PiArICoKPj4gKyAqIEF1dGhvcnM6IFBoaWxp cHBlIENvcm51IDxwaGlsaXBwZS5jb3JudUBzdC5jb20+Cj4+ICsgKiAgICAgICAgICBZYW5uaWNr IEZlcnRyZSA8eWFubmljay5mZXJ0cmVAc3QuY29tPgo+PiArICovCj4+ICsKPj4gKyNpbmNsdWRl IDxkcm0vZHJtUC5oPgo+PiArI2luY2x1ZGUgPGRybS9kcm1fbWlwaV9kc2kuaD4KPj4gKyNpbmNs dWRlIDxkcm0vZHJtX3BhbmVsLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvYmFja2xpZ2h0Lmg+Cj4+ ICsjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L3Jl Z3VsYXRvci9jb25zdW1lci5oPgo+PiArI2luY2x1ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5oPgo+ PiArCj4+ICsjZGVmaW5lIERSVl9OQU1FICJyYXlkaXVtX3JtNjgyMDAiCj4gCj4gTm90IG5lZWRl ZCwgc2VlIGJlbG93Lgo+IAo+PiArCj4+ICsvKioqIE1hbnVmYWN0dXJlciBDb21tYW5kIFNldCAq KiovCj4+ICsjZGVmaW5lIE1DU19DTURfTU9ERV9TVwkweEZFIC8qIENNRCBNb2RlIFN3aXRjaCAq Lwo+PiArI2RlZmluZSBNQ1NfQ01EMV9VQ1MJMHgwMCAvKiBVc2VyIENvbW1hbmQgU2V0IChVQ1Mg PSBDTUQxKSAqLwo+PiArI2RlZmluZSBNQ1NfQ01EMl9QMAkweDAxIC8qIE1hbnVmYWN0dXJlIENv bW1hbmQgU2V0IFBhZ2UwIChDTUQyIFAwKSAqLwo+PiArI2RlZmluZSBNQ1NfQ01EMl9QMQkweDAy IC8qIE1hbnVmYWN0dXJlIENvbW1hbmQgU2V0IFBhZ2UxIChDTUQyIFAxKSAqLwo+PiArI2RlZmlu ZSBNQ1NfQ01EMl9QMgkweDAzIC8qIE1hbnVmYWN0dXJlIENvbW1hbmQgU2V0IFBhZ2UyIChDTUQy IFAyKSAqLwo+PiArI2RlZmluZSBNQ1NfQ01EMl9QMwkweDA0IC8qIE1hbnVmYWN0dXJlIENvbW1h bmQgU2V0IFBhZ2UzIChDTUQyIFAzKSAqLwo+PiArCj4+ICsvKiBDTUQyIFAwIGNvbW1hbmRzIChE aXNwbGF5IE9wdGlvbnMgYW5kIFBvd2VyKSAqLwo+PiArI2RlZmluZSBNQ1NfU1RCQ1RSCTB4MTIg LyogVEUxIE91dHB1dCBTZXR0aW5nIFppZy1aYWcgQ29ubmVjdGlvbiAqLwo+PiArI2RlZmluZSBN Q1NfU0dPUENUUgkweDE2IC8qIFNvdXJjZSBCaWFzIEN1cnJlbnQgKi8KPj4gKyNkZWZpbmUgTUNT X1NEQ1RSCTB4MUEgLyogU291cmNlIE91dHB1dCBEZWxheSBUaW1lICovCj4+ICsjZGVmaW5lIE1D U19JTlZDVFIJMHgxQiAvKiBJbnZlcnNpb24gVHlwZSAqLwo+PiArI2RlZmluZSBNQ1NfRVhUX1BX Ul9JQwkweDI0IC8qIEV4dGVybmFsIFBXUiBJQyBDb250cm9sICovCj4+ICsjZGVmaW5lIE1DU19T RVRBVkRECTB4MjcgLyogUEZNIENvbnRyb2wgZm9yIEFWREQgT3V0cHV0ICovCj4+ICsjZGVmaW5l IE1DU19TRVRBVkVFCTB4MjkgLyogUEZNIENvbnRyb2wgZm9yIEFWRUUgT3V0cHV0ICovCj4+ICsj ZGVmaW5lIE1DU19CVDJDVFIJMHgyQiAvKiBERFZETCBDaGFyZ2UgUHVtcCBDb250cm9sICovCj4+ ICsjZGVmaW5lIE1DU19CVDNDVFIJMHgyRiAvKiBWR0ggQ2hhcmdlIFB1bXAgQ29udHJvbCAqLwo+ PiArI2RlZmluZSBNQ1NfQlQ0Q1RSCTB4MzQgLyogVkdMIENoYXJnZSBQdW1wIENvbnRyb2wgKi8K Pj4gKyNkZWZpbmUgTUNTX1ZDTUNUUgkweDQ2IC8qIFZDT00gT3V0cHV0IExldmVsIENvbnRyb2wg Ki8KPj4gKyNkZWZpbmUgTUNTX1NFVFZHTgkweDUyIC8qIFZHIE0vUyBOIENvbnRyb2wgKi8KPj4g KyNkZWZpbmUgTUNTX1NFVFZHUAkweDU0IC8qIFZHIE0vUyBQIENvbnRyb2wgKi8KPj4gKyNkZWZp bmUgTUNTX1NXX0NUUkwJMHg1RiAvKiBJbnRlcmZhY2UgQ29udHJvbCBmb3IgUEZNIGFuZCBNSVBJ ICovCj4+ICsKPj4gKy8qIENNRDIgUDIgY29tbWFuZHMgKEdPQSBUaW1pbmcgQ29udHJvbCkgLSBu byBkZXNjcmlwdGlvbiBpbiBkYXRhc2hlZXQgKi8KPj4gKyNkZWZpbmUgR09BX1ZTVFYxCTB4MDAK Pj4gKyNkZWZpbmUgR09BX1ZTVFYyCTB4MDcKPj4gKyNkZWZpbmUgR09BX1ZDTEsxCTB4MEUKPj4g KyNkZWZpbmUgR09BX1ZDTEsyCTB4MTcKPj4gKyNkZWZpbmUgR09BX1ZDTEtfT1BUMQkweDIwCj4+ ICsjZGVmaW5lIEdPQV9CSUNMSzEJMHgyQQo+PiArI2RlZmluZSBHT0FfQklDTEsyCTB4MzcKPj4g KyNkZWZpbmUgR09BX0JJQ0xLMwkweDQ0Cj4+ICsjZGVmaW5lIEdPQV9CSUNMSzQJMHg0Rgo+PiAr I2RlZmluZSBHT0FfQklDTEtfT1BUMQkweDVCCj4+ICsjZGVmaW5lIEdPQV9CSUNMS19PUFQyCTB4 NjAKPj4gKyNkZWZpbmUgTUNTX0dPQV9HUE8xCTB4NkQKPj4gKyNkZWZpbmUgTUNTX0dPQV9HUE8y CTB4NzEKPj4gKyNkZWZpbmUgTUNTX0dPQV9FUQkweDc0Cj4+ICsjZGVmaW5lIE1DU19HT0FfQ0xL X0dBTExPTiAweDdDCj4+ICsjZGVmaW5lIE1DU19HT0FfRlNfU0VMMAkweDdFCj4+ICsjZGVmaW5l IE1DU19HT0FfRlNfU0VMMQkweDg3Cj4+ICsjZGVmaW5lIE1DU19HT0FfRlNfU0VMMgkweDkxCj4+ ICsjZGVmaW5lIE1DU19HT0FfRlNfU0VMMwkweDlCCj4+ICsjZGVmaW5lIE1DU19HT0FfQlNfU0VM MAkweEFDCj4+ICsjZGVmaW5lIE1DU19HT0FfQlNfU0VMMQkweEI1Cj4+ICsjZGVmaW5lIE1DU19H T0FfQlNfU0VMMgkweEJGCj4+ICsjZGVmaW5lIE1DU19HT0FfQlNfU0VMMwkweEM5Cj4+ICsjZGVm aW5lIE1DU19HT0FfQlNfU0VMNAkweEQzCj4+ICsKPj4gKy8qIENNRDIgUDMgY29tbWFuZHMgKEdh bW1hKSAqLwo+PiArI2RlZmluZSBNQ1NfR0FNTUFfVlAJMHg2MCAvKiBHYW1tYSBWUDF+VlAxNiAq Lwo+PiArI2RlZmluZSBNQ1NfR0FNTUFfVk4JMHg3MCAvKiBHYW1tYSBWTjF+Vk4xNiAqLwo+PiAr Cj4+ICtzdHJ1Y3Qgcm02ODIwMCB7Cj4+ICsJc3RydWN0IGRldmljZSAqZGV2Owo+PiArCXN0cnVj dCBkcm1fcGFuZWwgcGFuZWw7Cj4+ICsJc3RydWN0IGdwaW9fZGVzYyAqcmVzZXRfZ3BpbzsKPj4g KwlzdHJ1Y3QgcmVndWxhdG9yICpzdXBwbHk7Cj4+ICsJc3RydWN0IGJhY2tsaWdodF9kZXZpY2Ug KmJsX2RldjsKPj4gKwlib29sIHByZXBhcmVkOwo+PiArCWJvb2wgZW5hYmxlZDsKPj4gK307Cj4+ ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBkZWZhdWx0X21vZGUg PSB7Cj4+ICsJLmNsb2NrID0gNTI1ODIsCj4+ICsJLmhkaXNwbGF5ID0gNzIwLAo+PiArCS5oc3lu Y19zdGFydCA9IDcyMCArIDM4LAo+PiArCS5oc3luY19lbmQgPSA3MjAgKyAzOCArIDgsCj4+ICsJ Lmh0b3RhbCA9IDcyMCArIDM4ICsgOCArIDM4LAo+PiArCS52ZGlzcGxheSA9IDEyODAsCj4+ICsJ LnZzeW5jX3N0YXJ0ID0gMTI4MCArIDEyLAo+PiArCS52c3luY19lbmQgPSAxMjgwICsgMTIgKyA0 LAo+PiArCS52dG90YWwgPSAxMjgwICsgMTIgKyA0ICsgMTIsCj4+ICsJLnZyZWZyZXNoID0gNTAs Cj4+ICsJLmZsYWdzID0gMCwKPj4gKwkud2lkdGhfbW0gPSA2OCwKPj4gKwkuaGVpZ2h0X21tID0g MTIyLAo+PiArfTsKPj4gKwo+PiArc3RhdGljIGlubGluZSBzdHJ1Y3Qgcm02ODIwMCAqcGFuZWxf dG9fcm02ODIwMChzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPj4gK3sKPj4gKwlyZXR1cm4gY29u dGFpbmVyX29mKHBhbmVsLCBzdHJ1Y3Qgcm02ODIwMCwgcGFuZWwpOwo+PiArfQo+PiArCj4+ICtz dGF0aWMgdm9pZCBybTY4MjAwX2Rjc193cml0ZV9idWYoc3RydWN0IHJtNjgyMDAgKmN0eCwgY29u c3Qgdm9pZCAqZGF0YSwKPj4gKwkJCQkgIHNpemVfdCBsZW4pCj4+ICt7Cj4+ICsJc3RydWN0IG1p cGlfZHNpX2RldmljZSAqZHNpID0gdG9fbWlwaV9kc2lfZGV2aWNlKGN0eC0+ZGV2KTsKPj4gKwo+ PiArCWlmIChtaXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVyKGRzaSwgZGF0YSwgbGVuKSA8IDApCj4+ ICsJCURSTV9XQVJOKCJtaXBpIGRzaSBkY3Mgd3JpdGUgYnVmZmVyIGZhaWxlZFxuIik7Cj4+ICt9 Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIHJtNjgyMDBfZGNzX3dyaXRlX2NtZChzdHJ1Y3Qgcm02ODIw MCAqY3R4LCB1OCBjbWQsIHU4IHZhbHVlKQo+PiArewo+PiArCXN0cnVjdCBtaXBpX2RzaV9kZXZp Y2UgKmRzaSA9IHRvX21pcGlfZHNpX2RldmljZShjdHgtPmRldik7Cj4+ICsKPj4gKwlpZiAobWlw aV9kc2lfZGNzX3dyaXRlKGRzaSwgY21kLCAmdmFsdWUsIDEpIDwgMCkKPj4gKwkJRFJNX1dBUk4o Im1pcGkgZHNpIGRjcyB3cml0ZSBmYWlsZWRcbiIpOwo+PiArfQo+IAo+IEkgcXVlc3Rpb24gdGhl IHVzZWZ1bG5lc3Mgb2YgeW91ciBlcnJvciByZXBvcnRpbmcgaGVyZS4gWW91J3JlIG5vdAo+IGdp dmluZyB0aGUgdXNlciBhbnkgbWVhbmluZ2Z1bCBmZWVkYmFjay4gQWxzbywgeW91J2xsIGJlIHdh cm5pbmcgYWJvdXQKPiBldmVyeSBzaW5nbGUgZmFpbHVyZS4gSXQncyBsaWtlbHkgdGhhdCBpZiBv bmUgb2YgdGhlIHdyaXRlcyBmYWlscywgdGhlbgo+IHN1YnNlcXVlbnQgd3JpdGVzIHdpbGwgYWxz byBmYWlsLCB3aGljaCBtZWFucyB0aGF0IHlvdSdsbCBnaXZlIHRoZSB1c2VyCj4gYSBmbG9vZCBv ZiBEUk1fV0FSTigpIHdpdGggZXhhY3RseSB0aGUgc2FtZSB0ZXh0Lgo+IAo+PiArLyoKPj4gKyAq IFRoaXMgcGFuZWwgaXMgbm90IGFibGUgdG8gYXV0by1pbmNyZW1lbnQgYWxsIGNtZCBhZGRyZXNz ZXMgc28gZm9yIHNvbWUgb2YKPj4gKyAqIHRoZW0sIHdlIG5lZWQgdG8gc2VuZCB0aGVtIG9uZSBi eSBvbmUuLi4KPj4gKyAqLwo+PiArI2RlZmluZSBkY3Nfd3JpdGVfY21kX3NlcShjdHgsIGNtZCwg c2VxLi4uKQkJCVwKPj4gKyh7CQkJCQkJCQlcCj4+ICsJc3RhdGljIGNvbnN0IHU4IGRbXSA9IHsg c2VxIH07CQkJCVwKPj4gKwlzdGF0aWMgaW50IGk7CQkJCQkJXAo+PiArCWZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKGQpIDsgaSsrKQkJCVwKPj4gKwkJcm02ODIwMF9kY3Nfd3JpdGVfY21kKGN0 eCwgY21kICsgaSwgZFtpXSk7CVwKPj4gK30pCj4+ICsKPj4gK3N0YXRpYyB2b2lkIHJtNjgyMDBf aW5pdF9zZXF1ZW5jZShzdHJ1Y3Qgcm02ODIwMCAqY3R4KQo+PiArewo+PiArCS8qIEVudGVyIENN RDIgd2l0aCBwYWdlIDAgKi8KPj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgTUNTX0NNRF9NT0RFX1NX LCBNQ1NfQ01EMl9QMCk7Cj4+ICsJZGNzX3dyaXRlX2NtZF9zZXEoY3R4LCBNQ1NfRVhUX1BXUl9J QywgMHhDMCwgMHg1MywgMHgwMCk7Cj4+ICsJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19CVDJDVFIs IDB4RTUpOwo+PiArCWRjc193cml0ZV9zZXEoY3R4LCBNQ1NfU0VUQVZERCwgMHgwQSk7Cj4+ICsJ ZGNzX3dyaXRlX3NlcShjdHgsIE1DU19TRVRBVkVFLCAweDBBKTsKPj4gKwlkY3Nfd3JpdGVfc2Vx KGN0eCwgTUNTX1NHT1BDVFIsIDB4NTIpOwo+PiArCWRjc193cml0ZV9zZXEoY3R4LCBNQ1NfQlQz Q1RSLCAweDUzKTsKPj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgTUNTX0JUNENUUiwgMHg1QSk7Cj4+ ICsJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19JTlZDVFIsIDB4MDApOwo+PiArCWRjc193cml0ZV9z ZXEoY3R4LCBNQ1NfU1RCQ1RSLCAweDBBKTsKPj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgTUNTX1NE Q1RSLCAweDA2KTsKPj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgTUNTX1ZDTUNUUiwgMHg1Nik7Cj4+ ICsJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19TRVRWR04sIDB4QTAsIDB4MDApOwo+PiArCWRjc193 cml0ZV9zZXEoY3R4LCBNQ1NfU0VUVkdQLCAweEEwLCAweDAwKTsKPj4gKwlkY3Nfd3JpdGVfc2Vx KGN0eCwgTUNTX1NXX0NUUkwsIDB4MTEpOyAvKiAyIGRhdGEgbGFuZXMsIHNlZSBkb2MgKi8KPj4g Kwo+PiArCWRjc193cml0ZV9zZXEoY3R4LCBNQ1NfQ01EX01PREVfU1csIE1DU19DTUQyX1AyKTsK Pj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgR09BX1ZTVFYxLCAweDA1KTsKPj4gKwlkY3Nfd3JpdGVf c2VxKGN0eCwgMHgwMiwgMHgwQik7Cj4+ICsJZGNzX3dyaXRlX3NlcShjdHgsIDB4MDMsIDB4MEYp Owo+PiArCWRjc193cml0ZV9zZXEoY3R4LCAweDA0LCAweDdELCAweDAwLCAweDUwKTsKPj4gKwlk Y3Nfd3JpdGVfY21kX3NlcShjdHgsIEdPQV9WU1RWMiwgMHgwNSwgMHgxNiwgMHgwRCwgMHgxMSwg MHg3RCwgMHgwMCwKPj4gKwkJCSAgMHg1MCk7Cj4+ICsJZGNzX3dyaXRlX2NtZF9zZXEoY3R4LCBH T0FfVkNMSzEsIDB4MDcsIDB4MDgsIDB4MDEsIDB4MDIsIDB4MDAsIDB4N0QsCj4+ICsJCQkgIDB4 MDAsIDB4ODUsIDB4MDgpOwo+PiArCWRjc193cml0ZV9jbWRfc2VxKGN0eCwgR09BX1ZDTEsyLCAw eDAzLCAweDA0LCAweDA1LCAweDA2LCAweDAwLCAweDdELAo+PiArCQkJICAweDAwLCAweDg1LCAw eDA4KTsKPj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgR09BX1ZDTEtfT1BUMSwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKPj4gKwkJICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCk7Cj4+ICsJZGNzX3dyaXRlX2NtZF9zZXEoY3R4LCBHT0FfQklDTEsxLCAweDA3LCAweDA4KTsK Pj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgMHgyRCwgMHgwMSk7Cj4+ICsJZGNzX3dyaXRlX3NlcShj dHgsIDB4MkYsIDB4MDIsIDB4MDAsIDB4NDAsIDB4MDUsIDB4MDgsIDB4NTQsIDB4N0QsCj4+ICsJ CSAgICAgIDB4MDApOwo+PiArCWRjc193cml0ZV9jbWRfc2VxKGN0eCwgR09BX0JJQ0xLMiwgMHgw MywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwMCk7Cj4+ICsJZGNzX3dyaXRlX3NlcShjdHgsIDB4M0Qs IDB4NDApOwo+PiArCWRjc193cml0ZV9zZXEoY3R4LCAweDNGLCAweDA1LCAweDA4LCAweDU0LCAw eDdELCAweDAwKTsKPj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgR09BX0JJQ0xLMywgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKPj4gKwkJICAgICAgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCk7Cj4+ICsJZGNzX3dyaXRlX3NlcShjdHgsIEdPQV9CSUNMSzQsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCj4+ICsJCSAgICAgIDB4MDAsIDB4MDApOwo+PiAr CWRjc193cml0ZV9zZXEoY3R4LCAweDU4LCAweDAwLCAweDAwLCAweDAwKTsKPj4gKwlkY3Nfd3Jp dGVfc2VxKGN0eCwgR09BX0JJQ0xLX09QVDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAp Owo+PiArCWRjc193cml0ZV9zZXEoY3R4LCBHT0FfQklDTEtfT1BUMiwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwKPj4gKwkJICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCk7Cj4+ICsJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19HT0FfR1BPMSwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCk7Cj4+ICsJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19HT0Ff R1BPMiwgMHgwMCwgMHgyMCwgMHgwMCk7Cj4+ICsJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19HT0Ff RVEsIDB4MDgsIDB4MDgsIDB4MDgsIDB4MDgsIDB4MDgsIDB4MDgsCj4+ICsJCSAgICAgIDB4MDAs IDB4MDApOwo+PiArCWRjc193cml0ZV9zZXEoY3R4LCBNQ1NfR09BX0NMS19HQUxMT04sIDB4MDAs IDB4MDApOwo+PiArCWRjc193cml0ZV9jbWRfc2VxKGN0eCwgTUNTX0dPQV9GU19TRUwwLCAweEJG LCAweDAyLCAweDA2LCAweDE0LCAweDEwLAo+PiArCQkJICAweDE2LCAweDEyLCAweDA4LCAweDNG KTsKPj4gKwlkY3Nfd3JpdGVfY21kX3NlcShjdHgsIE1DU19HT0FfRlNfU0VMMSwgMHgzRiwgMHgz RiwgMHgzRiwgMHgzRiwgMHgwQywKPj4gKwkJCSAgMHgwQSwgMHgwRSwgMHgzRiwgMHgzRiwgMHgw MCk7Cj4+ICsJZGNzX3dyaXRlX2NtZF9zZXEoY3R4LCBNQ1NfR09BX0ZTX1NFTDIsIDB4MDQsIDB4 M0YsIDB4M0YsIDB4M0YsIDB4M0YsCj4+ICsJCQkgIDB4MDUsIDB4MDEsIDB4M0YsIDB4M0YsIDB4 MEYpOwo+PiArCWRjc193cml0ZV9jbWRfc2VxKGN0eCwgTUNTX0dPQV9GU19TRUwzLCAweDBCLCAw eDBELCAweDNGLCAweDNGLCAweDNGLAo+PiArCQkJICAweDNGKTsKPj4gKwlkY3Nfd3JpdGVfY21k X3NlcShjdHgsIDB4QTIsIDB4M0YsIDB4MDksIDB4MTMsIDB4MTcsIDB4MTEsIDB4MTUpOwo+PiAr CWRjc193cml0ZV9jbWRfc2VxKGN0eCwgMHhBOSwgMHgwNywgMHgwMywgMHgzRik7Cj4+ICsJZGNz X3dyaXRlX2NtZF9zZXEoY3R4LCBNQ1NfR09BX0JTX1NFTDAsIDB4M0YsIDB4MDUsIDB4MDEsIDB4 MTcsIDB4MTMsCj4+ICsJCQkgIDB4MTUsIDB4MTEsIDB4MEYsIDB4M0YpOwo+PiArCWRjc193cml0 ZV9jbWRfc2VxKGN0eCwgTUNTX0dPQV9CU19TRUwxLCAweDNGLCAweDNGLCAweDNGLCAweDNGLCAw eDBCLAo+PiArCQkJICAweDBELCAweDA5LCAweDNGLCAweDNGLCAweDA3KTsKPj4gKwlkY3Nfd3Jp dGVfY21kX3NlcShjdHgsIE1DU19HT0FfQlNfU0VMMiwgMHgwMywgMHgzRiwgMHgzRiwgMHgzRiwg MHgzRiwKPj4gKwkJCSAgMHgwMiwgMHgwNiwgMHgzRiwgMHgzRiwgMHgwOCk7Cj4+ICsJZGNzX3dy aXRlX2NtZF9zZXEoY3R4LCBNQ1NfR09BX0JTX1NFTDMsIDB4MEMsIDB4MEEsIDB4M0YsIDB4M0Ys IDB4M0YsCj4+ICsJCQkgIDB4M0YsIDB4M0YsIDB4MEUsIDB4MTAsIDB4MTQpOwo+PiArCWRjc193 cml0ZV9jbWRfc2VxKGN0eCwgTUNTX0dPQV9CU19TRUw0LCAweDEyLCAweDE2LCAweDAwLCAweDA0 LCAweDNGKTsKPj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgMHhEQywgMHgwMik7Cj4+ICsJZGNzX3dy aXRlX3NlcShjdHgsIDB4REUsIDB4MTIpOwo+PiArCj4+ICsJZGNzX3dyaXRlX3NlcShjdHgsIE1D U19DTURfTU9ERV9TVywgMHgwRSk7IC8qIE5vIGRvY3VtZW50YXRpb24gKi8KPj4gKwlkY3Nfd3Jp dGVfc2VxKGN0eCwgMHgwMSwgMHg3NSk7Cj4+ICsKPj4gKwlkY3Nfd3JpdGVfc2VxKGN0eCwgTUNT X0NNRF9NT0RFX1NXLCBNQ1NfQ01EMl9QMyk7Cj4+ICsJZGNzX3dyaXRlX2NtZF9zZXEoY3R4LCBN Q1NfR0FNTUFfVlAsIDB4MDAsIDB4MEMsIDB4MTIsIDB4MEUsIDB4MDYsCj4+ICsJCQkgIDB4MTIs IDB4MEUsIDB4MEIsIDB4MTUsIDB4MEIsIDB4MTAsIDB4MDcsIDB4MEYsCj4+ICsJCQkgIDB4MTIs IDB4MEMsIDB4MDApOwo+PiArCWRjc193cml0ZV9jbWRfc2VxKGN0eCwgTUNTX0dBTU1BX1ZOLCAw eDAwLCAweDBDLCAweDEyLCAweDBFLCAweDA2LAo+PiArCQkJICAweDEyLCAweDBFLCAweDBCLCAw eDE1LCAweDBCLCAweDEwLCAweDA3LCAweDBGLAo+PiArCQkJICAweDEyLCAweDBDLCAweDAwKTsK Pj4gKwo+PiArCS8qIEV4aXQgQ01EMiAqLwo+PiArCWRjc193cml0ZV9zZXEoY3R4LCBNQ1NfQ01E X01PREVfU1csIE1DU19DTUQxX1VDUyk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgcm02ODIw MF9kaXNhYmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+PiArewo+PiArCXN0cnVjdCBybTY4 MjAwICpjdHggPSBwYW5lbF90b19ybTY4MjAwKHBhbmVsKTsKPj4gKwo+PiArCWlmICghY3R4LT5l bmFibGVkKQo+PiArCQlyZXR1cm4gMDsKPj4gKwo+PiArCWlmIChjdHgtPmJsX2Rldikgewo+PiAr CQljdHgtPmJsX2Rldi0+cHJvcHMucG93ZXIgPSBGQl9CTEFOS19QT1dFUkRPV047Cj4+ICsJCWN0 eC0+YmxfZGV2LT5wcm9wcy5zdGF0ZSB8PSBCTF9DT1JFX0ZCQkxBTks7Cj4+ICsJCWJhY2tsaWdo dF91cGRhdGVfc3RhdHVzKGN0eC0+YmxfZGV2KTsKPj4gKwl9Cj4gCj4gVGhpcyBzaG91bGQgdXNl IHRoZSBuZXcgYmFja2xpZ2h0X2Rpc2FibGUoKSBmdW5jdGlvbi4KPiAKPj4gKwo+PiArCWN0eC0+ ZW5hYmxlZCA9IGZhbHNlOwo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRp YyBpbnQgcm02ODIwMF91bnByZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4+ICt7Cj4+ ICsJc3RydWN0IHJtNjgyMDAgKmN0eCA9IHBhbmVsX3RvX3JtNjgyMDAocGFuZWwpOwo+PiArCXN0 cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSA9IHRvX21pcGlfZHNpX2RldmljZShjdHgtPmRldik7 Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCWlmICghY3R4LT5wcmVwYXJlZCkKPj4gKwkJcmV0dXJu IDA7Cj4+ICsKPj4gKwlyZXQgPSBtaXBpX2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb2ZmKGRzaSk7Cj4+ ICsJaWYgKHJldCkKPj4gKwkJRFJNX1dBUk4oImZhaWxlZCB0byBzZXQgZGlzcGxheSBvZmY6ICVk XG4iLCByZXQpOwo+PiArCj4+ICsJcmV0ID0gbWlwaV9kc2lfZGNzX2VudGVyX3NsZWVwX21vZGUo ZHNpKTsKPj4gKwlpZiAocmV0KQo+PiArCQlEUk1fV0FSTigiZmFpbGVkIHRvIGVudGVyIHNsZWVw IG1vZGU6ICVkXG4iLCByZXQpOwo+PiArCj4+ICsJbXNsZWVwKDEyMCk7Cj4+ICsKPj4gKwlpZiAo Y3R4LT5yZXNldF9ncGlvKSB7Cj4+ICsJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChjdHgtPnJl c2V0X2dwaW8sIDEpOwo+PiArCQltc2xlZXAoMjApOwo+PiArCX0KPj4gKwo+PiArCXJlZ3VsYXRv cl9kaXNhYmxlKGN0eC0+c3VwcGx5KTsKPj4gKwo+PiArCWN0eC0+cHJlcGFyZWQgPSBmYWxzZTsK Pj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHJtNjgyMDBfcHJl cGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPj4gK3sKPj4gKwlzdHJ1Y3Qgcm02ODIwMCAq Y3R4ID0gcGFuZWxfdG9fcm02ODIwMChwYW5lbCk7Cj4+ICsJc3RydWN0IG1pcGlfZHNpX2Rldmlj ZSAqZHNpID0gdG9fbWlwaV9kc2lfZGV2aWNlKGN0eC0+ZGV2KTsKPj4gKwlpbnQgcmV0Owo+PiAr Cj4+ICsJaWYgKGN0eC0+cHJlcGFyZWQpCj4+ICsJCXJldHVybiAwOwo+PiArCj4+ICsJcmV0ID0g cmVndWxhdG9yX2VuYWJsZShjdHgtPnN1cHBseSk7Cj4+ICsJaWYgKHJldCA8IDApIHsKPj4gKwkJ RFJNX0VSUk9SKCJmYWlsZWQgdG8gZW5hYmxlIHN1cHBseTogJWRcbiIsIHJldCk7Cj4+ICsJCXJl dHVybiByZXQ7Cj4+ICsJfQo+PiArCj4+ICsJaWYgKGN0eC0+cmVzZXRfZ3Bpbykgewo+PiArCQln cGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoY3R4LT5yZXNldF9ncGlvLCAwKTsKPiAKPiBXaHkgZG8g eW91IG5lZWQgdGhpcz8gSWYgdGhlIHBhbmVsIGlzIGFscmVhZHkgaW4gcmVzZXQsIHNob3VsZG4n dCB0aGUKPiBiZWxvdyBzdGlsbCB3b3JrPyBXaHkgdGFrZSBpdCBvdXQgb2YgcmVzZXQgb25seSB0 byByZXNldCBpdCBpbW1lZGlhdGVseQo+IGFmdGVyd2FyZHMgYWdhaW4/Cj4gCj4+ICsJCWdwaW9k X3NldF92YWx1ZV9jYW5zbGVlcChjdHgtPnJlc2V0X2dwaW8sIDEpOwo+PiArCQltc2xlZXAoMjAp Owo+PiArCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoY3R4LT5yZXNldF9ncGlvLCAwKTsKPj4g KwkJbXNsZWVwKDEwMCk7Cj4+ICsJfQo+PiArCj4+ICsJcm02ODIwMF9pbml0X3NlcXVlbmNlKGN0 eCk7Cj4+ICsKPj4gKwlyZXQgPSBtaXBpX2RzaV9kY3NfZXhpdF9zbGVlcF9tb2RlKGRzaSk7Cj4+ ICsJaWYgKHJldCkKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwo+PiArCW1zbGVlcCgxMjUpOwo+PiAr Cj4+ICsJcmV0ID0gbWlwaV9kc2lfZGNzX3NldF9kaXNwbGF5X29uKGRzaSk7Cj4+ICsJaWYgKHJl dCkKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwo+PiArCW1zbGVlcCgyMCk7Cj4+ICsKPj4gKwljdHgt PnByZXBhcmVkID0gdHJ1ZTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0 aWMgaW50IHJtNjgyMDBfZW5hYmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+PiArewo+PiAr CXN0cnVjdCBybTY4MjAwICpjdHggPSBwYW5lbF90b19ybTY4MjAwKHBhbmVsKTsKPj4gKwo+PiAr CWlmIChjdHgtPmVuYWJsZWQpCj4+ICsJCXJldHVybiAwOwo+PiArCj4+ICsJaWYgKGN0eC0+Ymxf ZGV2KSB7Cj4+ICsJCWN0eC0+YmxfZGV2LT5wcm9wcy5zdGF0ZSAmPSB+QkxfQ09SRV9GQkJMQU5L Owo+PiArCQljdHgtPmJsX2Rldi0+cHJvcHMucG93ZXIgPSBGQl9CTEFOS19VTkJMQU5LOwo+PiAr CQliYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyhjdHgtPmJsX2Rldik7Cj4+ICsJfQo+IAo+IGJhY2ts aWdodF9lbmFibGUoKSwgcGxlYXNlLgo+IAo+PiArCj4+ICsJY3R4LT5lbmFibGVkID0gdHJ1ZTsK Pj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHJtNjgyMDBfZ2V0 X21vZGVzKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+PiArewo+PiArCXN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICptb2RlOwo+PiArCj4+ICsJbW9kZSA9IGRybV9tb2RlX2R1cGxpY2F0ZShwYW5l bC0+ZHJtLCAmZGVmYXVsdF9tb2RlKTsKPj4gKwlpZiAoIW1vZGUpIHsKPj4gKwkJRFJNX0VSUk9S KCJmYWlsZWQgdG8gYWRkIG1vZGUgJXV4JXV4QCV1XG4iLAo+PiArCQkJICBkZWZhdWx0X21vZGUu aGRpc3BsYXksIGRlZmF1bHRfbW9kZS52ZGlzcGxheSwKPj4gKwkJCSAgZGVmYXVsdF9tb2RlLnZy ZWZyZXNoKTsKPj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4+ICsJfQo+PiArCj4+ICsJZHJtX21vZGVf c2V0X25hbWUobW9kZSk7Cj4+ICsKPj4gKwltb2RlLT50eXBlID0gRFJNX01PREVfVFlQRV9EUklW RVIgfCBEUk1fTU9ERV9UWVBFX1BSRUZFUlJFRDsKPj4gKwlkcm1fbW9kZV9wcm9iZWRfYWRkKHBh bmVsLT5jb25uZWN0b3IsIG1vZGUpOwo+PiArCj4+ICsJcGFuZWwtPmNvbm5lY3Rvci0+ZGlzcGxh eV9pbmZvLndpZHRoX21tID0gbW9kZS0+d2lkdGhfbW07Cj4+ICsJcGFuZWwtPmNvbm5lY3Rvci0+ ZGlzcGxheV9pbmZvLmhlaWdodF9tbSA9IG1vZGUtPmhlaWdodF9tbTsKPj4gKwo+PiArCXJldHVy biAxOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wYW5lbF9mdW5jcyBy bTY4MjAwX2RybV9mdW5jcyA9IHsKPj4gKwkuZGlzYWJsZSAgID0gcm02ODIwMF9kaXNhYmxlLAo+ PiArCS51bnByZXBhcmUgPSBybTY4MjAwX3VucHJlcGFyZSwKPj4gKwkucHJlcGFyZSAgID0gcm02 ODIwMF9wcmVwYXJlLAo+PiArCS5lbmFibGUgICAgPSBybTY4MjAwX2VuYWJsZSwKPj4gKwkuZ2V0 X21vZGVzID0gcm02ODIwMF9nZXRfbW9kZXMsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaW50IHJt NjgyMDBfcHJvYmUoc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpKQo+PiArewo+PiArCXN0cnVj dCBkZXZpY2UgKmRldiA9ICZkc2ktPmRldjsKPj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKmJhY2ts aWdodDsKPj4gKwlzdHJ1Y3Qgcm02ODIwMCAqY3R4Owo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwlj dHggPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmN0eCksIEdGUF9LRVJORUwpOwo+PiArCWlm ICghY3R4KQo+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4gKwo+PiArCWN0eC0+cmVzZXRfZ3BpbyA9 IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgInJlc2V0IiwgR1BJT0RfT1VUX0xPVyk7Cj4+ ICsJaWYgKElTX0VSUihjdHgtPnJlc2V0X2dwaW8pKSB7Cj4+ICsJCWRldl9lcnIoZGV2LCAiY2Fu bm90IGdldCByZXNldC1ncGlvXG4iKTsKPj4gKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5yZXNldF9n cGlvKTsKPj4gKwl9Cj4+ICsKPj4gKwljdHgtPnN1cHBseSA9IGRldm1fcmVndWxhdG9yX2dldChk ZXYsICJwb3dlciIpOwo+PiArCWlmIChJU19FUlIoY3R4LT5zdXBwbHkpKSB7Cj4+ICsJCWRldl9l cnIoZGV2LCAiY2Fubm90IGdldCByZWd1bGF0b3JcbiIpOwo+PiArCQlyZXR1cm4gUFRSX0VSUihj dHgtPnN1cHBseSk7Cj4+ICsJfQo+PiArCj4+ICsJYmFja2xpZ2h0ID0gb2ZfcGFyc2VfcGhhbmRs ZShkZXYtPm9mX25vZGUsICJiYWNrbGlnaHQiLCAwKTsKPj4gKwlpZiAoYmFja2xpZ2h0KSB7Cj4+ ICsJCWN0eC0+YmxfZGV2ID0gb2ZfZmluZF9iYWNrbGlnaHRfYnlfbm9kZShiYWNrbGlnaHQpOwo+ PiArCQlvZl9ub2RlX3B1dChiYWNrbGlnaHQpOwo+PiArCj4+ICsJCWlmICghY3R4LT5ibF9kZXYp Cj4+ICsJCQlyZXR1cm4gLUVQUk9CRV9ERUZFUjsKPj4gKwl9Cj4gCj4gZGV2bV9vZl9maW5kX2Jh Y2tsaWdodCgpCj4gCj4+ICsKPj4gKwltaXBpX2RzaV9zZXRfZHJ2ZGF0YShkc2ksIGN0eCk7Cj4+ ICsKPj4gKwljdHgtPmRldiA9IGRldjsKPj4gKwo+PiArCWRzaS0+bGFuZXMgPSAyOwo+PiArCWRz aS0+Zm9ybWF0ID0gTUlQSV9EU0lfRk1UX1JHQjg4ODsKPj4gKwlkc2ktPm1vZGVfZmxhZ3MgPSBN SVBJX0RTSV9NT0RFX1ZJREVPIHwgTUlQSV9EU0lfTU9ERV9WSURFT19CVVJTVCB8Cj4+ICsJCQkg IE1JUElfRFNJX01PREVfTFBNOwo+PiArCj4+ICsJZHJtX3BhbmVsX2luaXQoJmN0eC0+cGFuZWwp Owo+PiArCWN0eC0+cGFuZWwuZGV2ID0gZGV2Owo+PiArCWN0eC0+cGFuZWwuZnVuY3MgPSAmcm02 ODIwMF9kcm1fZnVuY3M7Cj4+ICsKPj4gKwlkcm1fcGFuZWxfYWRkKCZjdHgtPnBhbmVsKTsKPj4g Kwo+PiArCXJldCA9IG1pcGlfZHNpX2F0dGFjaChkc2kpOwo+PiArCWlmIChyZXQgPCAwKSB7Cj4+ ICsJCWRldl9lcnIoZGV2LCAibWlwaV9kc2lfYXR0YWNoIGZhaWxlZC4gSXMgaG9zdCByZWFkeT9c biIpOwo+PiArCQlkcm1fcGFuZWxfcmVtb3ZlKCZjdHgtPnBhbmVsKTsKPj4gKwkJaWYgKGN0eC0+ YmxfZGV2KQo+PiArCQkJcHV0X2RldmljZSgmY3R4LT5ibF9kZXYtPmRldik7Cj4+ICsJCXJldHVy biByZXQ7Cj4+ICsJfQo+PiArCj4+ICsJRFJNX0lORk8oRFJWX05BTUUgIl9wYW5lbCAldXgldUAl dSAldWJwcCBkc2kgJXVkbCAtIHJlYWR5XG4iLAo+PiArCQkgZGVmYXVsdF9tb2RlLmhkaXNwbGF5 LCBkZWZhdWx0X21vZGUudmRpc3BsYXksCj4+ICsJCSBkZWZhdWx0X21vZGUudnJlZnJlc2gsCj4+ ICsJCSBtaXBpX2RzaV9waXhlbF9mb3JtYXRfdG9fYnBwKGRzaS0+Zm9ybWF0KSwgZHNpLT5sYW5l cyk7Cj4gCj4gTm8gbmVlZCB0byBicmFnIGFib3V0IHRoaXMgYmVpbmcgc3VjY2Vzc2Z1bC4gVGhh dCdzIHdoYXQgaXQncyBzdXBwb3NlZAo+IHRvIGJlLiBZb3Ugc2hvdWxkIGxldCB0aGUgdXNlciBr bm93IGlmIHRoaW5ncyAqZG9uJ3QqIGhhcHBlbiB0aGUgd2F5Cj4gdGhleSdyZSBzdXBwb3NlZCB0 by4KPiAKPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHJtNjgy MDBfcmVtb3ZlKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKPj4gK3sKPj4gKwlzdHJ1Y3Qg cm02ODIwMCAqY3R4ID0gbWlwaV9kc2lfZ2V0X2RydmRhdGEoZHNpKTsKPj4gKwo+PiArCWlmIChj dHgtPmJsX2RldikKPj4gKwkJcHV0X2RldmljZSgmY3R4LT5ibF9kZXYtPmRldik7Cj4+ICsKPj4g KwltaXBpX2RzaV9kZXRhY2goZHNpKTsKPj4gKwlkcm1fcGFuZWxfcmVtb3ZlKCZjdHgtPnBhbmVs KTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IG9mX2RldmljZV9pZCByYXlkaXVtX3JtNjgyMDBfb2ZfbWF0Y2hbXSA9IHsKPj4gKwl7IC5jb21w YXRpYmxlID0gInJheWRpdW0scm02ODIwMCIgfSwKPj4gKwl7IH0KPj4gK307Cj4+ICtNT0RVTEVf REVWSUNFX1RBQkxFKG9mLCByYXlkaXVtX3JtNjgyMDBfb2ZfbWF0Y2gpOwo+PiArCj4+ICtzdGF0 aWMgc3RydWN0IG1pcGlfZHNpX2RyaXZlciByYXlkaXVtX3JtNjgyMDBfZHJpdmVyID0gewo+PiAr CS5wcm9iZSAgPSBybTY4MjAwX3Byb2JlLAo+PiArCS5yZW1vdmUgPSBybTY4MjAwX3JlbW92ZSwK Pj4gKwkuZHJpdmVyID0gewo+PiArCQkubmFtZSA9IERSVl9OQU1FICJfcGFuZWwiLAo+IAo+IFRo aXMgaXMgdGhlIG9ubHkgb2NjdXJyZW5jZSBzbyB5b3UgY2FuIGp1c3QgZHJvcCBEUlZfTkFNRSBh bmQgcHV0IHRoZQo+IG5hbWUgaGVyZS4KPiAKPj4gKwkJLm9mX21hdGNoX3RhYmxlID0gcmF5ZGl1 bV9ybTY4MjAwX29mX21hdGNoLAo+PiArCX0sCj4+ICt9Owo+PiArbW9kdWxlX21pcGlfZHNpX2Ry aXZlcihyYXlkaXVtX3JtNjgyMDBfZHJpdmVyKTsKPj4gKwo+PiArTU9EVUxFX0FVVEhPUigiUGhp bGlwcGUgQ29ybnUgPHBoaWxpcHBlLmNvcm51QHN0LmNvbT4iKTsKPj4gK01PRFVMRV9BVVRIT1Io Illhbm5pY2sgRmVydHJlIDx5YW5uaWNrLmZlcnRyZUBzdC5jb20+Iik7Cj4+ICtNT0RVTEVfREVT Q1JJUFRJT04oIkRSTSBEcml2ZXIgZm9yIFJheWRpdW0gUk02ODIwMCBNSVBJIERTSSBwYW5lbCIp Owo+IAo+IFlvdSB1c2UgUk02ODIwMCBoZXJlIGJ1dCBpbiBvdGhlciBwbGFjZXMgeW91IHVzZSBy bTY4MjAwLiBQbGVhc2UgYmUKPiBjb25zaXN0ZW50LiBJdCBzZWVtcyBsaWtlIFJNNjgyMDAgaXMg dGhlICJvZmZpY2lhbCIgc3BlbGxpbmcsIHNvIHN0aWNrCj4gdG8gdGhhdCBpbiBwcm9zZS4KPiAK PiBUaGllcnJ5Cj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAo=