From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrzej Hajda Subject: Re: [PATCH v2 3/3] drm/panel: Add support for otm8009a panel driver Date: Wed, 12 Jul 2017 16:12:55 +0200 Message-ID: <831126ea-c1a2-8fc5-7e31-47ddd4740f8c@samsung.com> References: <1499677333-10571-1-git-send-email-philippe.cornu@st.com> <1499677333-10571-4-git-send-email-philippe.cornu@st.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by gabe.freedesktop.org (Postfix) with ESMTPS id 665CA8982D for ; Wed, 12 Jul 2017 14:13:01 +0000 (UTC) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OSZ00FPFE5M2SA0@mailout2.w1.samsung.com> for dri-devel@lists.freedesktop.org; Wed, 12 Jul 2017 15:12:59 +0100 (BST) In-reply-to: <1499677333-10571-4-git-send-email-philippe.cornu@st.com> 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: Philippe CORNU , Alexandre Torgue , Thierry Reding , David Airlie , Maxime Coquelin , Russell King , Mark Rutland , Rob Herring , Arnd Bergmann , Benjamin Gaignard , Yannick Fertre , Archit Taneja Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org, Fabien Dessenne , Mickael Reulier , Vincent Abriou , Gabriel Fernandez , Ludovic Barre List-Id: dri-devel@lists.freedesktop.org T24gMTAuMDcuMjAxNyAxMTowMiwgUGhpbGlwcGUgQ09STlUgd3JvdGU6Cj4gVGhpcyBwYXRjaCBh ZGRzIE9yaXNlIFRlY2ggb3RtODAwOWEgMy45NyIgNDgweDgwMCBURlQgTENECj4gcGFuZWwgZHJp dmVyIChNSVBJLURTSSB2aWRlbyBtb2RlKS4gVGhlIHBhbmVsIGJhY2tsaWdodCBpcwo+IG1hbmFn ZWQgdGhyb3VnaCB0aGUgRFNJIGxpbmsuIFRoaXMgcGFuZWwgZHJpdmVyIGlzIHVzZWQgaW4KPiBz ZXZlcmFsIFNUTTMyIGJvYXJkcy4KPgo+IFNpZ25lZC1vZmYtYnk6IFBoaWxpcHBlIENPUk5VIDxw aGlsaXBwZS5jb3JudUBzdC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29u ZmlnICAgICAgICAgICAgICAgICAgICB8ICAgOSArCj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9N YWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5l bC9wYW5lbC1vcmlzZXRlY2gtb3RtODAwOWEuYyB8IDQ4OSArKysrKysrKysrKysrKysrKysrKysr Kwo+ICAzIGZpbGVzIGNoYW5nZWQsIDQ5OSBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEw MDc1NSBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtb3Jpc2V0ZWNoLW90bTgwMDlhLmMKPgo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1 L2RybS9wYW5lbC9LY29uZmlnCj4gaW5kZXggZDg0YTAzMS4uYzFjOTI5MSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9w YW5lbC9LY29uZmlnCj4gQEAgLTExNyw0ICsxMTcsMTMgQEAgY29uZmlnIERSTV9QQU5FTF9TSVRS T05JWF9TVDc3ODlWCj4gIAkgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gZW5hYmxlIHN1cHBv cnQgZm9yIHRoZSBTaXRyb25peAo+ICAJICBTVDc3ODlWIGNvbnRyb2xsZXIgZm9yIDI0MHgzMjAg TENEIHBhbmVscwo+ICAKPiArY29uZmlnIERSTV9QQU5FTF9PUklTRVRFQ0hfT1RNODAwOUEKPiAr CXRyaXN0YXRlICJPcmlzZSBUZWNoIG90bTgwMDlhIDQ4MHAgZHNpIDJkbCB2aWRlbyBtb2RlIHBh bmVsIgo+ICsJZGVwZW5kcyBvbiBPRgo+ICsJZGVwZW5kcyBvbiBEUk1fTUlQSV9EU0kKPiArCWRl cGVuZHMgb24gQkFDS0xJR0hUX0NMQVNTX0RFVklDRQo+ICsJaGVscAo+ICsJICBTYXkgWSBoZXJl IGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBPcmlzZSBUZWNoIE9UTTgwMDlBCj4g KwkgIDQ4MHg4MDAgRFNJIHBhbmVsCj4gKwo+ICBlbmRtZW51Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmls ZQo+IGluZGV4IDlmNjYxMGQuLmFjNzk4ZjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L3BhbmVsL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCj4g QEAgLTEwLDMgKzEwLDQgQEAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TQU1TVU5HX1M2RThBQTAp ICs9IHBhbmVsLXNhbXN1bmctczZlOGFhMC5vCj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0hB UlBfTFExMDFSMVNYMDEpICs9IHBhbmVsLXNoYXJwLWxxMTAxcjFzeDAxLm8KPiAgb2JqLSQoQ09O RklHX0RSTV9QQU5FTF9TSEFSUF9MUzA0M1QxTEUwMSkgKz0gcGFuZWwtc2hhcnAtbHMwNDN0MWxl MDEubwo+ICBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NJVFJPTklYX1NUNzc4OVYpICs9IHBhbmVs LXNpdHJvbml4LXN0Nzc4OXYubwo+ICtvYmotJChDT05GSUdfRFJNX1BBTkVMX09SSVNFVEVDSF9P VE04MDA5QSkgKz0gcGFuZWwtb3Jpc2V0ZWNoLW90bTgwMDlhLm8KPiBcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKCkFscGhhYmV0aWNhbCBvcmRlciBhbmQgbmV3IGxpbmUgYXQgRU9GLgoKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLW9yaXNldGVjaC1vdG04MDA5 YS5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLW9yaXNldGVjaC1vdG04MDA5YS5jCj4g bmV3IGZpbGUgbW9kZSAxMDA3NTUKPiBpbmRleCAwMDAwMDAwLi4yYTNjZTQ3Cj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1vcmlzZXRlY2gtb3RtODAw OWEuYwo+IEBAIC0wLDAgKzEsNDg5IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgU1RNaWNy b2VsZWN0cm9uaWNzIFNBIDIwMTcKPiArICoKPiArICogQXV0aG9yczogUGhpbGlwcGUgQ29ybnUg PHBoaWxpcHBlLmNvcm51QHN0LmNvbT4KPiArICogICAgICAgICAgWWFubmljayBGZXJ0cmUgPHlh bm5pY2suZmVydHJlQHN0LmNvbT4KPiArICoKPiArICogTGljZW5zZSB0ZXJtczogIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpLCB2ZXJzaW9uIDIKPiArICovCj4gKyNpbmNsdWRlIDxk cm0vZHJtUC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2RzaS5oPgo+ICsjaW5jbHVkZSA8 ZHJtL2RybV9wYW5lbC5oPgo+ICsjaW5jbHVkZSA8bGludXgvYmFja2xpZ2h0Lmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+Cj4gKyNpbmNsdWRlIDx2aWRlby9taXBpX2Rpc3Bs YXkuaD4KPiArCj4gKyNkZWZpbmUgRFJWX05BTUUgIm9yaXNldGVjaF9vdG04MDA5YSIKPiArCj4g KyNkZWZpbmUgT1RNODAwOUFfQkFDS0xJR0hUX0RFRkFVTFQJMjQwCj4gKyNkZWZpbmUgT1RNODAw OUFfQkFDS0xJR0hUX01BWAkJMjU1Cj4gKwo+ICsvKiBNYW51ZmFjdHVyZXIgQ29tbWFuZCBTZXQg Ki8KPiArI2RlZmluZSBNQ1NfQURSU0ZUCTB4MDAwMAkvKiBBZGRyZXNzIFNoaWZ0IEZ1bmN0aW9u ICovCj4gKyNkZWZpbmUgTUNTX1BBTlNFVAkweEIzQTYJLyogUGFuZWwgVHlwZSBTZXR0aW5nICov Cj4gKyNkZWZpbmUgTUNTX1NEX0NUUkwJMHhDMEEyCS8qIFNvdXJjZSBEcml2ZXIgVGltaW5nIFNl dHRpbmcgKi8KPiArI2RlZmluZSBNQ1NfUF9EUlZfTQkweEMwQjQJLyogUGFuZWwgRHJpdmluZyBN b2RlICovCj4gKyNkZWZpbmUgTUNTX09TQ19BREoJMHhDMTgxCS8qIE9zY2lsbGF0b3IgQWRqdXN0 bWVudCBmb3IgSWRsZS9Ob3JtYWwgbW9kZSAqLwo+ICsjZGVmaW5lIE1DU19SR0JfVklEX1NFVAkw eEMxQTEJLyogUkdCIFZpZGVvIE1vZGUgU2V0dGluZyAqLwo+ICsjZGVmaW5lIE1DU19TRF9QQ0hf Q1RSTAkweEM0ODAJLyogU291cmNlIERyaXZlciBQcmVjaGFyZ2UgQ29udHJvbCAqLwo+ICsjZGVm aW5lIE1DU19OT19ET0MxCTB4QzQ4QQkvKiBDb21tYW5kIG5vdCBkb2N1bWVudGVkICovCj4gKyNk ZWZpbmUgTUNTX1BXUl9DVFJMMQkweEM1ODAJLyogUG93ZXIgQ29udHJvbCBTZXR0aW5nIDEgKi8K PiArI2RlZmluZSBNQ1NfUFdSX0NUUkwyCTB4QzU5MAkvKiBQb3dlciBDb250cm9sIFNldHRpbmcg MiBmb3IgTm9ybWFsIE1vZGUgKi8KPiArI2RlZmluZSBNQ1NfUFdSX0NUUkw0CTB4QzVCMAkvKiBQ b3dlciBDb250cm9sIFNldHRpbmcgNCBmb3IgREMgVm9sdGFnZSAqLwo+ICsjZGVmaW5lIE1DU19Q QU5DVFJMU0VUMQkweENCODAJLyogUGFuZWwgQ29udHJvbCBTZXR0aW5nIDEgKi8KPiArI2RlZmlu ZSBNQ1NfUEFOQ1RSTFNFVDIJMHhDQjkwCS8qIFBhbmVsIENvbnRyb2wgU2V0dGluZyAyICovCj4g KyNkZWZpbmUgTUNTX1BBTkNUUkxTRVQzCTB4Q0JBMAkvKiBQYW5lbCBDb250cm9sIFNldHRpbmcg MyAqLwo+ICsjZGVmaW5lIE1DU19QQU5DVFJMU0VUNAkweENCQjAJLyogUGFuZWwgQ29udHJvbCBT ZXR0aW5nIDQgKi8KPiArI2RlZmluZSBNQ1NfUEFOQ1RSTFNFVDUJMHhDQkMwCS8qIFBhbmVsIENv bnRyb2wgU2V0dGluZyA1ICovCj4gKyNkZWZpbmUgTUNTX1BBTkNUUkxTRVQ2CTB4Q0JEMAkvKiBQ YW5lbCBDb250cm9sIFNldHRpbmcgNiAqLwo+ICsjZGVmaW5lIE1DU19QQU5DVFJMU0VUNwkweENC RTAJLyogUGFuZWwgQ29udHJvbCBTZXR0aW5nIDcgKi8KPiArI2RlZmluZSBNQ1NfUEFOQ1RSTFNF VDgJMHhDQkYwCS8qIFBhbmVsIENvbnRyb2wgU2V0dGluZyA4ICovCj4gKyNkZWZpbmUgTUNTX1BB TlUyRDEJMHhDQzgwCS8qIFBhbmVsIFUyRCBTZXR0aW5nIDEgKi8KPiArI2RlZmluZSBNQ1NfUEFO VTJEMgkweENDOTAJLyogUGFuZWwgVTJEIFNldHRpbmcgMiAqLwo+ICsjZGVmaW5lIE1DU19QQU5V MkQzCTB4Q0NBMAkvKiBQYW5lbCBVMkQgU2V0dGluZyAzICovCj4gKyNkZWZpbmUgTUNTX1BBTkQy VTEJMHhDQ0IwCS8qIFBhbmVsIEQyVSBTZXR0aW5nIDEgKi8KPiArI2RlZmluZSBNQ1NfUEFORDJV MgkweENDQzAJLyogUGFuZWwgRDJVIFNldHRpbmcgMiAqLwo+ICsjZGVmaW5lIE1DU19QQU5EMlUz CTB4Q0NEMAkvKiBQYW5lbCBEMlUgU2V0dGluZyAzICovCj4gKyNkZWZpbmUgTUNTX0dPQVZTVAkw eENFODAJLyogR09BIFZTVCBTZXR0aW5nICovCj4gKyNkZWZpbmUgTUNTX0dPQUNMS0ExCTB4Q0VB MAkvKiBHT0EgQ0xLQTEgU2V0dGluZyAqLwo+ICsjZGVmaW5lIE1DU19HT0FDTEtBMwkweENFQjAJ LyogR09BIENMS0EzIFNldHRpbmcgKi8KPiArI2RlZmluZSBNQ1NfR09BRUNMSwkweENGQzAJLyog R09BIEVDTEsgU2V0dGluZyAqLwo+ICsjZGVmaW5lIE1DU19OT19ET0MyCTB4Q0ZEMAkvKiBDb21t YW5kIG5vdCBkb2N1bWVudGVkICovCj4gKyNkZWZpbmUgTUNTX0dWRERTRVQJMHhEODAwCS8qIEdW REQvTkdWREQgKi8KPiArI2RlZmluZSBNQ1NfVkNPTURDCTB4RDkwMAkvKiBWQ09NIFZvbHRhZ2Ug U2V0dGluZyAqLwo+ICsjZGVmaW5lIE1DU19HTUNUMl8yUAkweEUxMDAJLyogR2FtbWEgQ29ycmVj dGlvbiAyLjIrIFNldHRpbmcgKi8KPiArI2RlZmluZSBNQ1NfR01DVDJfMk4JMHhFMjAwCS8qIEdh bW1hIENvcnJlY3Rpb24gMi4yLSBTZXR0aW5nICovCj4gKyNkZWZpbmUgTUNTX05PX0RPQzMJMHhG NUI2CS8qIENvbW1hbmQgbm90IGRvY3VtZW50ZWQgKi8KPiArI2RlZmluZSBNQ1NfQ01EMl9FTkEx CTB4RkYwMAkvKiBFbmFibGUgQWNjZXNzIENvbW1hbmQyICJDTUQyIiAqLwo+ICsjZGVmaW5lIE1D U19DTUQyX0VOQTIJMHhGRjgwCS8qIEVuYWJsZSBBY2Nlc3MgT3Jpc2UgQ29tbWFuZDIgKi8KPiAr Cj4gK3N0cnVjdCBvdG04MDA5YSB7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gKwlzdHJ1Y3Qg ZHJtX3BhbmVsIHBhbmVsOwo+ICsJc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJsX2RldjsKPiAr CXN0cnVjdCBncGlvX2Rlc2MgKnJlc2V0X2dwaW87Cj4gKwlib29sIHByZXBhcmVkOwo+ICsJYm9v bCBlbmFibGVkOwo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlIGRlZmF1bHRfbW9kZSA9IHsKPiArCS5jbG9jayA9IDMyNzI5LAo+ICsJLmhkaXNwbGF5ID0g NDgwLAo+ICsJLmhzeW5jX3N0YXJ0ID0gNDgwICsgMTIwLAo+ICsJLmhzeW5jX2VuZCA9IDQ4MCAr IDEyMCArIDYzLAo+ICsJLmh0b3RhbCA9IDQ4MCArIDEyMCArIDYzICsgMTIwLAo+ICsJLnZkaXNw bGF5ID0gODAwLAo+ICsJLnZzeW5jX3N0YXJ0ID0gODAwICsgMTIsCj4gKwkudnN5bmNfZW5kID0g ODAwICsgMTIgKyAxMiwKPiArCS52dG90YWwgPSA4MDAgKyAxMiArIDEyICsgMTIsCj4gKwkudnJl ZnJlc2ggPSA1MCwKPiArCS5mbGFncyA9IDAsCj4gKwkud2lkdGhfbW0gPSA1MiwKPiArCS5oZWln aHRfbW0gPSA4NiwKPiArfTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IG90bTgwMDlhICpw YW5lbF90b19vdG04MDA5YShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJcmV0dXJu IGNvbnRhaW5lcl9vZihwYW5lbCwgc3RydWN0IG90bTgwMDlhLCBwYW5lbCk7Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkIG90bTgwMDlhX2Rjc193cml0ZV9idWYoc3RydWN0IG90bTgwMDlhICpjdHgs IGNvbnN0IHZvaWQgKmRhdGEsCj4gKwkJCQkgICBzaXplX3QgbGVuKQo+ICt7Cj4gKwlzdHJ1Y3Qg bWlwaV9kc2lfZGV2aWNlICpkc2kgPSB0b19taXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYpOwo+ICsK PiArCWlmIChtaXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVyKGRzaSwgZGF0YSwgbGVuKSA8IDApCj4g KwkJRFJNX1dBUk4oIm1pcGkgZHNpIGRjcyB3cml0ZSBidWZmZXIgZmFpbGVkXG4iKTsKPiArfQo+ ICsKPiArI2RlZmluZSBkY3Nfd3JpdGVfc2VxKGN0eCwgc2VxLi4uKQkJCVwKPiArKHsJCQkJCQkJ XAo+ICsJc3RhdGljIGNvbnN0IHU4IGRbXSA9IHsgc2VxIH07CQkJXAo+ICsJb3RtODAwOWFfZGNz X3dyaXRlX2J1ZihjdHgsIGQsIEFSUkFZX1NJWkUoZCkpOwlcCj4gK30pCj4gKwo+ICsjZGVmaW5l IGRjc193cml0ZV9jbWRfYXQoY3R4LCBjbWQsIHNlcS4uLikJCVwKPiArKHsJCQkJCQkJXAo+ICsJ ZGNzX3dyaXRlX3NlcShjdHgsIE1DU19BRFJTRlQsIChjbWQpICYgMHhGRik7CVwKPiArCWRjc193 cml0ZV9zZXEoY3R4LCAoY21kKSA+PiA4LCBzZXEpOwkJXAo+ICt9KQoKVGhpcyBhcHByb2FjaCBs b29rcyBiZXR0ZXIgdGhhbiBteSBwcm9wb3NpdGlvbiwgZm9yIHN1cmUgaXQgaXMgbW9yZQpjb25z aXN0ZW50IHdpdGggZG9jdW1lbnRhdGlvbi4KCj4gKwo+ICtzdGF0aWMgaW50IG90bTgwMDlhX2lu aXRfc2VxdWVuY2Uoc3RydWN0IG90bTgwMDlhICpjdHgpCj4gK3sKPiArCXN0cnVjdCBtaXBpX2Rz aV9kZXZpY2UgKmRzaSA9IHRvX21pcGlfZHNpX2RldmljZShjdHgtPmRldik7Cj4gKwlpbnQgcmV0 Owo+ICsKPiArCS8qIEVudGVyIENNRDIgKi8KPiArCWRjc193cml0ZV9jbWRfYXQoY3R4LCBNQ1Nf Q01EMl9FTkExLCAweDgwLCAweDA5LCAweDAxKTsKPiArCj4gKwkvKiBFbnRlciBPcmlzZSBDb21t YW5kMiAqLwo+ICsJZGNzX3dyaXRlX2NtZF9hdChjdHgsIE1DU19DTUQyX0VOQTIsIDB4ODAsIDB4 MDkpOwo+ICsKPiArCWRjc193cml0ZV9jbWRfYXQoY3R4LCBNQ1NfU0RfUENIX0NUUkwsIDB4MzAp Owo+ICsJbWRlbGF5KDEwKTsKPiArCj4gKwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwgTUNTX05PX0RP QzEsIDB4NDApOwo+ICsJbWRlbGF5KDEwKTsKPiArCj4gKwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwg TUNTX1BXUl9DVFJMNCArIDEsIDB4QTkpOwo+ICsJZGNzX3dyaXRlX2NtZF9hdChjdHgsIE1DU19Q V1JfQ1RSTDIgKyAxLCAweDM0KTsKPiArCWRjc193cml0ZV9jbWRfYXQoY3R4LCBNQ1NfUF9EUlZf TSwgMHg1MCk7Cj4gKwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwgTUNTX1ZDT01EQywgMHg0RSk7Cj4g KwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwgTUNTX09TQ19BREosIDB4NjYpOyAvKiA2NUh6ICovCj4g KwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwgTUNTX1JHQl9WSURfU0VULCAweDA4KTsKPiArCWRjc193 cml0ZV9jbWRfYXQoY3R4LCBNQ1NfUFdSX0NUUkwyICsgMiwgMHgwMSk7Cj4gKwlkY3Nfd3JpdGVf Y21kX2F0KGN0eCwgTUNTX1BXUl9DVFJMMiArIDUsIDB4MzQpOwo+ICsJZGNzX3dyaXRlX2NtZF9h dChjdHgsIE1DU19QV1JfQ1RSTDIgKyA0LCAweDMzKTsKPiArCWRjc193cml0ZV9jbWRfYXQoY3R4 LCBNQ1NfR1ZERFNFVCwgMHg3OSwgMHg3OSk7Cj4gKwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwgTUNT X1NEX0NUUkwgKyAxLCAweDFCKTsKPiArCWRjc193cml0ZV9jbWRfYXQoY3R4LCBNQ1NfUFdSX0NU UkwxICsgMiwgMHg4Myk7Cj4gKwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwgTUNTX1NEX1BDSF9DVFJM ICsgMSwgMHg4Myk7Cj4gKwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwgTUNTX1JHQl9WSURfU0VULCAw eDBFKTsgLyogRklYTUUgYmVmb3JlIDB4MDghICovCgpRdWl0ZSBjcnlwdGljIGNvbW1lbnQsIGVp dGhlciByZW1vdmUsIGVpdGhlciBtYWtlIGl0IHJlYWRhYmxlLgoKPiArCWRjc193cml0ZV9jbWRf YXQoY3R4LCBNQ1NfUEFOU0VULCAweDAwLCAweDAxKTsKPiArCj4gKwlkY3Nfd3JpdGVfY21kX2F0 KGN0eCwgTUNTX0dPQVZTVCwgMHg4NSwgMHgwMSwgMHgwMCwgMHg4NCwgMHgwMSwgMHgwMCk7Cj4g KwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwgTUNTX0dPQUNMS0ExLCAweDE4LCAweDA0LCAweDAzLCAw eDM5LCAweDAwLCAweDAwLAo+ICsJCQkgMHgwMCwgMHgxOCwgMHgwMywgMHgwMywgMHgzQSwgMHgw MCwgMHgwMCwgMHgwMCk7Cj4gKwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwgTUNTX0dPQUNMS0EzLCAw eDE4LCAweDAyLCAweDAzLCAweDNCLCAweDAwLCAweDAwLAo+ICsJCQkgMHgwMCwgMHgxOCwgMHgw MSwgMHgwMywgMHgzQywgMHgwMCwgMHgwMCwgMHgwMCk7Cj4gKwlkY3Nfd3JpdGVfY21kX2F0KGN0 eCwgTUNTX0dPQUVDTEssIDB4MDEsIDB4MDEsIDB4MjAsIDB4MjAsIDB4MDAsIDB4MDAsCj4gKwkJ CSAweDAxLCAweDAyLCAweDAwLCAweDAwKTsKPiArCj4gKwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwg TUNTX05PX0RPQzIsIDB4MDApOwo+ICsKPiArCWRjc193cml0ZV9jbWRfYXQoY3R4LCBNQ1NfUEFO Q1RSTFNFVDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApOwo+ICsJZGNzX3dyaXRlX2Nt ZF9hdChjdHgsIE1DU19QQU5DVFJMU0VUMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwK PiArCQkJIDAsIDAsIDAsIDAsIDApOwo+ICsJZGNzX3dyaXRlX2NtZF9hdChjdHgsIE1DU19QQU5D VFJMU0VUMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKPiArCQkJIDAsIDAsIDAsIDAs IDApOwo+ICsJZGNzX3dyaXRlX2NtZF9hdChjdHgsIE1DU19QQU5DVFJMU0VUNCwgMCwgMCwgMCwg MCwgMCwgMCwgMCwgMCwgMCwgMCk7Cj4gKwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwgTUNTX1BBTkNU UkxTRVQ1LCAwLCA0LCA0LCA0LCA0LCA0LCAwLCAwLCAwLCAwLAo+ICsJCQkgMCwgMCwgMCwgMCwg MCk7Cj4gKwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwgTUNTX1BBTkNUUkxTRVQ2LCAwLCAwLCAwLCAw LCAwLCAwLCA0LCA0LCA0LCA0LAo+ICsJCQkgNCwgMCwgMCwgMCwgMCk7Cj4gKwlkY3Nfd3JpdGVf Y21kX2F0KGN0eCwgTUNTX1BBTkNUUkxTRVQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw KTsKPiArCWRjc193cml0ZV9jbWRfYXQoY3R4LCBNQ1NfUEFOQ1RSTFNFVDgsIDB4RkYsIDB4RkYs IDB4RkYsIDB4RkYsIDB4RkYsCj4gKwkJCSAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGKTsK PiArCj4gKwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwgTUNTX1BBTlUyRDEsIDB4MDAsIDB4MjYsIDB4 MDksIDB4MEIsIDB4MDEsIDB4MjUsCj4gKwkJCSAweDAwLCAweDAwLCAweDAwLCAweDAwKTsKPiAr CWRjc193cml0ZV9jbWRfYXQoY3R4LCBNQ1NfUEFOVTJEMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwKPiArCQkJIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjYs IDB4MEEsIDB4MEMsIDB4MDIpOwo+ICsJZGNzX3dyaXRlX2NtZF9hdChjdHgsIE1DU19QQU5VMkQz LCAweDI1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAo+ICsJCQkgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCk7Cj4gKwlkY3Nfd3JpdGVf Y21kX2F0KGN0eCwgTUNTX1BBTkQyVTEsIDB4MDAsIDB4MjUsIDB4MEMsIDB4MEEsIDB4MDIsIDB4 MjYsCj4gKwkJCSAweDAwLCAweDAwLCAweDAwLCAweDAwKTsKPiArCWRjc193cml0ZV9jbWRfYXQo Y3R4LCBNQ1NfUEFORDJVMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKPiAr CQkJIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjUsIDB4MEIsIDB4MDksIDB4MDEp Owo+ICsJZGNzX3dyaXRlX2NtZF9hdChjdHgsIE1DU19QQU5EMlUzLCAweDI2LCAweDAwLCAweDAw LCAweDAwLCAweDAwLCAweDAwLAo+ICsJCQkgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCk7Cj4gKwo+ICsJZGNzX3dyaXRlX2NtZF9hdChjdHgsIE1D U19QV1JfQ1RSTDEgKyAxLCAweDY2KTsKPiArCj4gKwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwgTUNT X05PX0RPQzMsIDB4MDYpOwo+ICsKPiArCWRjc193cml0ZV9jbWRfYXQoY3R4LCBNQ1NfR01DVDJf MlAsIDB4MDAsIDB4MDksIDB4MEYsIDB4MEUsIDB4MDcsIDB4MTAsCj4gKwkJCSAweDBCLCAweDBB LCAweDA0LCAweDA3LCAweDBCLCAweDA4LCAweDBGLCAweDEwLCAweDBBLAo+ICsJCQkgMHgwMSk7 Cj4gKwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwgTUNTX0dNQ1QyXzJOLCAweDAwLCAweDA5LCAweDBG LCAweDBFLCAweDA3LCAweDEwLAo+ICsJCQkgMHgwQiwgMHgwQSwgMHgwNCwgMHgwNywgMHgwQiwg MHgwOCwgMHgwRiwgMHgxMCwgMHgwQSwKPiArCQkJIDB4MDEpOwo+ICsKPiArCS8qIEV4aXQgQ01E MiAqLwo+ICsJZGNzX3dyaXRlX2NtZF9hdChjdHgsIE1DU19DTUQyX0VOQTEsIDB4RkYsIDB4RkYs IDB4RkYpOwo+ICsKPiArCXJldCA9IG1pcGlfZHNpX2Rjc19ub3AoZHNpKTsKPiArCWlmIChyZXQp Cj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXQgPSBtaXBpX2RzaV9kY3NfZXhpdF9zbGVlcF9t b2RlKGRzaSk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJLyogV2FpdCBm b3Igc2xlZXAgb3V0IGV4aXQgKi8KPiArCW1kZWxheSgxMjApOwo+ICsKPiArCS8qIERlZmF1bHQg cG9ydHJhaXQgNDgweDgwMCByZ2IyNCAqLwo+ICsJZGNzX3dyaXRlX3NlcShjdHgsIE1JUElfRENT X1NFVF9BRERSRVNTX01PREUsIDB4MDApOwo+ICsKPiArCXJldCA9IG1pcGlfZHNpX2Rjc19zZXRf Y29sdW1uX2FkZHJlc3MoZHNpLCAwLAo+ICsJCQkJCSAgICAgIGRlZmF1bHRfbW9kZS5oZGlzcGxh eSAtIDEpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXJldCA9IG1pcGlf ZHNpX2Rjc19zZXRfcGFnZV9hZGRyZXNzKGRzaSwgMCwgZGVmYXVsdF9tb2RlLnZkaXNwbGF5IC0g MSk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJLyogU2VlIG90bTgwMDlh IGRyaXZlciBkb2N1bWVudGF0aW9uIGZvciBwaXhlbCBmb3JtYXQgZGVzY3JpcHRpb25zICovCj4g KwlyZXQgPSBtaXBpX2RzaV9kY3Nfc2V0X3BpeGVsX2Zvcm1hdChkc2ksIE1JUElfRENTX1BJWEVM X0ZNVF8yNEJJVCB8Cj4gKwkJCQkJICAgIE1JUElfRENTX1BJWEVMX0ZNVF8yNEJJVCA8PCA0KTsK PiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwkvKiBEaXNhYmxlIENBQkMgZmVh dHVyZSAqLwo+ICsJZGNzX3dyaXRlX3NlcShjdHgsIE1JUElfRENTX1dSSVRFX1BPV0VSX1NBVkUs IDB4MDApOwo+ICsKPiArCXJldCA9IG1pcGlfZHNpX2Rjc19zZXRfZGlzcGxheV9vbihkc2kpOwo+ ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXJldCA9IG1pcGlfZHNpX2Rjc19u b3AoZHNpKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwkvKiBTZW5kIENv bW1hbmQgR1JBTSBtZW1vcnkgd3JpdGUgKG5vIHBhcmFtZXRlcnMpICovCj4gKwlkY3Nfd3JpdGVf c2VxKGN0eCwgTUlQSV9EQ1NfV1JJVEVfTUVNT1JZX1NUQVJUKTsKPiArCj4gKwlyZXR1cm4gMDsK PiArfQo+ICsKPiArc3RhdGljIGludCBvdG04MDA5YV9kaXNhYmxlKHN0cnVjdCBkcm1fcGFuZWwg KnBhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3Qgb3RtODAwOWEgKmN0eCA9IHBhbmVsX3RvX290bTgwMDlh KHBhbmVsKTsKPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSA9IHRvX21pcGlfZHNpX2Rl dmljZShjdHgtPmRldik7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmICghY3R4LT5lbmFibGVkKQo+ ICsJCXJldHVybiAwOyAvKiBUaGlzIGlzIG5vdCBhbiBpc3N1ZSBzbyB3ZSByZXR1cm4gMCBoZXJl ICovCj4gKwo+ICsJLyogUG93ZXIgb2ZmIHRoZSBiYWNrbGlnaHQuIE5vdGU6IGVuZC11c2VyIHN0 aWxsIGNvbnRyb2xzIGJyaWdodG5lc3MgKi8KPiArCWN0eC0+YmxfZGV2LT5wcm9wcy5wb3dlciA9 IEZCX0JMQU5LX1BPV0VSRE9XTjsKPiArCXJldCA9IGJhY2tsaWdodF91cGRhdGVfc3RhdHVzKGN0 eC0+YmxfZGV2KTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXQgPSBt aXBpX2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb2ZmKGRzaSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQly ZXR1cm4gcmV0Owo+ICsKPiArCXJldCA9IG1pcGlfZHNpX2Rjc19lbnRlcl9zbGVlcF9tb2RlKGRz aSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCW1zbGVlcCgxMjAp Owo+ICsKPiArCWN0eC0+ZW5hYmxlZCA9IGZhbHNlOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IG90bTgwMDlhX3VucHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5l bCkKPiArewo+ICsJc3RydWN0IG90bTgwMDlhICpjdHggPSBwYW5lbF90b19vdG04MDA5YShwYW5l bCk7Cj4gKwo+ICsJaWYgKCFjdHgtPnByZXBhcmVkKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWlm IChjdHgtPnJlc2V0X2dwaW8pIHsKPiArCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoY3R4LT5y ZXNldF9ncGlvLCAxKTsKPiArCQltc2xlZXAoMjApOwo+ICsJfQo+ICsKPiArCWN0eC0+cHJlcGFy ZWQgPSBmYWxzZTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBvdG04 MDA5YV9wcmVwYXJlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3Qgb3Rt ODAwOWEgKmN0eCA9IHBhbmVsX3RvX290bTgwMDlhKHBhbmVsKTsKPiArCWludCByZXQ7Cj4gKwo+ ICsJaWYgKGN0eC0+cHJlcGFyZWQpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJaWYgKGN0eC0+cmVz ZXRfZ3Bpbykgewo+ICsJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChjdHgtPnJlc2V0X2dwaW8s IDApOwo+ICsJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChjdHgtPnJlc2V0X2dwaW8sIDEpOwo+ ICsJCW1zbGVlcCgyMCk7Cj4gKwkJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGN0eC0+cmVzZXRf Z3BpbywgMCk7Cj4gKwkJbXNsZWVwKDEwMCk7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gb3RtODAwOWFf aW5pdF9zZXF1ZW5jZShjdHgpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiAr CWN0eC0+cHJlcGFyZWQgPSB0cnVlOwo+ICsKPiArCS8qIFBvd2VyIG9uIHRoZSBiYWNrbGlnaHQu IE5vdGU6IGVuZC11c2VyIHN0aWxsIGNvbnRyb2xzIGJyaWdodG5lc3MgKi8KPiArCWN0eC0+Ymxf ZGV2LT5wcm9wcy5wb3dlciA9IEZCX0JMQU5LX1VOQkxBTks7Cj4gKwliYWNrbGlnaHRfdXBkYXRl X3N0YXR1cyhjdHgtPmJsX2Rldik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgb3RtODAwOWFfZW5hYmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+ICt7Cj4gKwlz dHJ1Y3Qgb3RtODAwOWEgKmN0eCA9IHBhbmVsX3RvX290bTgwMDlhKHBhbmVsKTsKPiArCj4gKwlj dHgtPmVuYWJsZWQgPSB0cnVlOwo+ICsKPiArCXJldHVybiAwOwo+ICt9CgpJIGFtIG5vdCBzdXJl IGFib3V0IGl0LCBidXQgSSBndWVzcyB1bmJsYW5raW5nIHNob3VsZCBiZSBwZXJmb3JtZWQgaW4K X2VuYWJsZSBjYWxsYmFjay4gT3RoZXJ3aXNlIHlvdSByaXNrIHNlZWluZyBnYXJiYWdlIGF0IHBh bmVsIHN0YXJ0IC0gaXQKc3RhcnRzIGRpc3BsYXlpbmcgdW5pbml0aWFsaXplZCBkYXRhLgpVc3Vh bGx5IHNlcXVlbmNlIGxvb2tzIGxpa2U6CkEuIFBvd2VyIG9uIERTSSBob3N0CkIuIEluaXRpYWxp emUgcGFuZWwgKHByZXBhcmUgY2FsbGJhY2spCkMuIFN0YXJ0IHZpZGVvIHRyYW5zbWlzc2lvbiBm cm9tIHRoZSBob3N0IHRvIHRoZSBwYW5lbApELiB3YWl0IGFib3V0IDEyMG1zLCB0aGVuIHVuYmxh bmsgcGFuZWwgKGVuYWJsZSBjYWxsYmFjaykKCk9mIGNvdXJzZSB0aGlzIGlzIG9ubHkgbXkgZXhw ZXJpZW5jZSwgbWF5YmUgeW91ciBwYW5lbCBpcyBkaWZmZXJlbnQuCgpCZXNpZGUgYWJvdmUgY29t bWVudHM6ClJldmlld2VkLWJ5OiBBbmRyemVqIEhhamRhIDxhLmhhamRhQHNhbXN1bmcuY29tPgoK IC0tClJlZ2FyZHMKQW5kcnplagoKCj4gKwo+ICtzdGF0aWMgaW50IG90bTgwMDlhX2dldF9tb2Rl cyhzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm1vZGU7Cj4gKwo+ICsJbW9kZSA9IGRybV9tb2RlX2R1cGxpY2F0ZShwYW5lbC0+ZHJtLCAm ZGVmYXVsdF9tb2RlKTsKPiArCWlmICghbW9kZSkgewo+ICsJCURSTV9FUlJPUigiZmFpbGVkIHRv IGFkZCBtb2RlICV1eCV1eEAldVxuIiwKPiArCQkJICBkZWZhdWx0X21vZGUuaGRpc3BsYXksIGRl ZmF1bHRfbW9kZS52ZGlzcGxheSwKPiArCQkJICBkZWZhdWx0X21vZGUudnJlZnJlc2gpOwo+ICsJ CXJldHVybiAtRU5PTUVNOwo+ICsJfQo+ICsKPiArCWRybV9tb2RlX3NldF9uYW1lKG1vZGUpOwo+ ICsKPiArCW1vZGUtPnR5cGUgPSBEUk1fTU9ERV9UWVBFX0RSSVZFUiB8IERSTV9NT0RFX1RZUEVf UFJFRkVSUkVEOwo+ICsJZHJtX21vZGVfcHJvYmVkX2FkZChwYW5lbC0+Y29ubmVjdG9yLCBtb2Rl KTsKPiArCj4gKwlwYW5lbC0+Y29ubmVjdG9yLT5kaXNwbGF5X2luZm8ud2lkdGhfbW0gPSBtb2Rl LT53aWR0aF9tbTsKPiArCXBhbmVsLT5jb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZWlnaHRfbW0g PSBtb2RlLT5oZWlnaHRfbW07Cj4gKwo+ICsJcmV0dXJuIDE7Cj4gK30KPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX3BhbmVsX2Z1bmNzIG90bTgwMDlhX2RybV9mdW5jcyA9IHsKPiArCS5k aXNhYmxlICAgPSBvdG04MDA5YV9kaXNhYmxlLAo+ICsJLnVucHJlcGFyZSA9IG90bTgwMDlhX3Vu cHJlcGFyZSwKPiArCS5wcmVwYXJlICAgPSBvdG04MDA5YV9wcmVwYXJlLAo+ICsJLmVuYWJsZSAg ICA9IG90bTgwMDlhX2VuYWJsZSwKPiArCS5nZXRfbW9kZXMgPSBvdG04MDA5YV9nZXRfbW9kZXMs Cj4gK307Cj4gKwo+ICsvKgo+ICsgKiBEU0ktQkFTRUQgQkFDS0xJR0hUCj4gKyAqLwo+ICsKPiAr c3RhdGljIGludCBvdG04MDA5YV9iYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyhzdHJ1Y3QgYmFja2xp Z2h0X2RldmljZSAqYmQpCj4gK3sKPiArCXN0cnVjdCBvdG04MDA5YSAqY3R4ID0gYmxfZ2V0X2Rh dGEoYmQpOwo+ICsJdTggZGF0YVsyXTsKPiArCj4gKwlpZiAoIWN0eC0+cHJlcGFyZWQpIHsKPiAr CQlEUk1fREVCVUcoImxjZCBub3QgcmVhZHkgeWV0IGZvciBzZXR0aW5nIGl0cyBiYWNrbGlnaHQh XG4iKTsKPiArCQlyZXR1cm4gLUVOWElPOwo+ICsJfQo+ICsKPiArCWlmIChiZC0+cHJvcHMucG93 ZXIgPD0gRkJfQkxBTktfTk9STUFMKSB7Cj4gKwkJLyogUG93ZXIgb24gdGhlIGJhY2tsaWdodCB3 aXRoIHRoZSByZXF1ZXN0ZWQgYnJpZ2h0bmVzcwo+ICsJCSAqIE5vdGUgV2UgY2FuIG5vdCB1c2Ug bWlwaV9kc2lfZGNzX3NldF9kaXNwbGF5X2JyaWdodG5lc3MoKQo+ICsJCSAqIGFzIG90bTgwMDlh IGRyaXZlciBzdXBwb3J0IG9ubHkgOC1iaXQgYnJpZ2h0bmVzcyAoMSBwYXJhbSkuCj4gKwkJICov Cj4gKwkJZGF0YVswXSA9IE1JUElfRENTX1NFVF9ESVNQTEFZX0JSSUdIVE5FU1M7Cj4gKwkJZGF0 YVsxXSA9IGJkLT5wcm9wcy5icmlnaHRuZXNzOwo+ICsJCW90bTgwMDlhX2Rjc193cml0ZV9idWYo Y3R4LCBkYXRhLCBBUlJBWV9TSVpFKGRhdGEpKTsKPiArCj4gKwkJLyogc2V0IEJyaWdodG5lc3Mg Q29udHJvbCAmIEJhY2tsaWdodCBvbiAqLwo+ICsJCWRhdGFbMV0gPSAweDI0Owo+ICsKPiArCX0g ZWxzZSB7Cj4gKwkJLyogUG93ZXIgb2ZmIHRoZSBiYWNrbGlnaHQ6IHNldCBCcmlnaHRuZXNzIENv bnRyb2wgJiBCbCBvZmYgKi8KPiArCQlkYXRhWzFdID0gMDsKPiArCX0KPiArCj4gKwkvKiBVcGRh dGUgQnJpZ2h0bmVzcyBDb250cm9sICYgQmFja2xpZ2h0ICovCj4gKwlkYXRhWzBdID0gTUlQSV9E Q1NfV1JJVEVfQ09OVFJPTF9ESVNQTEFZOwo+ICsJb3RtODAwOWFfZGNzX3dyaXRlX2J1ZihjdHgs IGRhdGEsIEFSUkFZX1NJWkUoZGF0YSkpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGJhY2tsaWdodF9vcHMgb3RtODAwOWFfYmFja2xpZ2h0X29wcyA9 IHsKPiArCS51cGRhdGVfc3RhdHVzID0gb3RtODAwOWFfYmFja2xpZ2h0X3VwZGF0ZV9zdGF0dXMs Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IG90bTgwMDlhX3Byb2JlKHN0cnVjdCBtaXBpX2RzaV9k ZXZpY2UgKmRzaSkKPiArewo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJmRzaS0+ZGV2Owo+ICsJ c3RydWN0IG90bTgwMDlhICpjdHg7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWN0eCA9IGRldm1fa3ph bGxvYyhkZXYsIHNpemVvZigqY3R4KSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWN0eCkKPiArCQly ZXR1cm4gLUVOT01FTTsKPiArCj4gKwljdHgtPnJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9v cHRpb25hbChkZXYsICJyZXNldCIsIEdQSU9EX09VVF9MT1cpOwo+ICsJaWYgKElTX0VSUihjdHgt PnJlc2V0X2dwaW8pKSB7Cj4gKwkJZGV2X2VycihkZXYsICJjYW5ub3QgZ2V0IHJlc2V0LWdwaW9c biIpOwo+ICsJCXJldHVybiBQVFJfRVJSKGN0eC0+cmVzZXRfZ3Bpbyk7Cj4gKwl9Cj4gKwo+ICsJ bWlwaV9kc2lfc2V0X2RydmRhdGEoZHNpLCBjdHgpOwo+ICsKPiArCWN0eC0+ZGV2ID0gZGV2Owo+ ICsKPiArCWRzaS0+bGFuZXMgPSAyOwo+ICsJZHNpLT5mb3JtYXQgPSBNSVBJX0RTSV9GTVRfUkdC ODg4Owo+ICsJZHNpLT5tb2RlX2ZsYWdzID0gTUlQSV9EU0lfTU9ERV9WSURFTyB8IE1JUElfRFNJ X01PREVfVklERU9fQlVSU1QgfAo+ICsJCQkgIE1JUElfRFNJX01PREVfTFBNOwo+ICsKPiArCWRy bV9wYW5lbF9pbml0KCZjdHgtPnBhbmVsKTsKPiArCWN0eC0+cGFuZWwuZGV2ID0gZGV2Owo+ICsJ Y3R4LT5wYW5lbC5mdW5jcyA9ICZvdG04MDA5YV9kcm1fZnVuY3M7Cj4gKwo+ICsJY3R4LT5ibF9k ZXYgPSBiYWNrbGlnaHRfZGV2aWNlX3JlZ2lzdGVyKERSVl9OQU1FICJfYmFja2xpZ2h0IiwgZGV2 LCBjdHgsCj4gKwkJCQkJCSZvdG04MDA5YV9iYWNrbGlnaHRfb3BzLCBOVUxMKTsKPiArCWlmIChJ U19FUlIoY3R4LT5ibF9kZXYpKSB7Cj4gKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gcmVnaXN0 ZXIgYmFja2xpZ2h0IGRldmljZVxuIik7Cj4gKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5ibF9kZXYp Owo+ICsJfQo+ICsKPiArCWN0eC0+YmxfZGV2LT5wcm9wcy5tYXhfYnJpZ2h0bmVzcyA9IE9UTTgw MDlBX0JBQ0tMSUdIVF9NQVg7Cj4gKwljdHgtPmJsX2Rldi0+cHJvcHMuYnJpZ2h0bmVzcyA9IE9U TTgwMDlBX0JBQ0tMSUdIVF9ERUZBVUxUOwo+ICsJY3R4LT5ibF9kZXYtPnByb3BzLnBvd2VyID0g RkJfQkxBTktfUE9XRVJET1dOOwo+ICsJY3R4LT5ibF9kZXYtPnByb3BzLnR5cGUgPSBCQUNLTElH SFRfUkFXOwo+ICsKPiArCWRybV9wYW5lbF9hZGQoJmN0eC0+cGFuZWwpOwo+ICsKPiArCXJldCA9 IG1pcGlfZHNpX2F0dGFjaChkc2kpOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlkZXZfZXJyKGRl diwgIm1pcGlfZHNpX2F0dGFjaCBmYWlsZWQuIElzIGhvc3QgcmVhZHk/XG4iKTsKPiArCQlkcm1f cGFuZWxfcmVtb3ZlKCZjdHgtPnBhbmVsKTsKPiArCQliYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0 ZXIoY3R4LT5ibF9kZXYpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJRFJNX0lORk8o RFJWX05BTUUgIl9wYW5lbCAldXgldUAldSAldWJwcCBkc2kgJXVkbCAtIHJlYWR5XG4iLAo+ICsJ CSBkZWZhdWx0X21vZGUuaGRpc3BsYXksIGRlZmF1bHRfbW9kZS52ZGlzcGxheSwKPiArCQkgZGVm YXVsdF9tb2RlLnZyZWZyZXNoLAo+ICsJCSBtaXBpX2RzaV9waXhlbF9mb3JtYXRfdG9fYnBwKGRz aS0+Zm9ybWF0KSwgZHNpLT5sYW5lcyk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgb3RtODAwOWFfcmVtb3ZlKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKPiAr ewo+ICsJc3RydWN0IG90bTgwMDlhICpjdHggPSBtaXBpX2RzaV9nZXRfZHJ2ZGF0YShkc2kpOwo+ ICsKPiArCW1pcGlfZHNpX2RldGFjaChkc2kpOwo+ICsJZHJtX3BhbmVsX3JlbW92ZSgmY3R4LT5w YW5lbCk7Cj4gKwo+ICsJYmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKGN0eC0+YmxfZGV2KTsK PiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZp Y2VfaWQgb3Jpc2V0ZWNoX290bTgwMDlhX29mX21hdGNoW10gPSB7Cj4gKwl7IC5jb21wYXRpYmxl ID0gIm9yaXNldGVjaCxvdG04MDA5YSIgfSwKPiArCXsgfQo+ICt9Owo+ICtNT0RVTEVfREVWSUNF X1RBQkxFKG9mLCBvcmlzZXRlY2hfb3RtODAwOWFfb2ZfbWF0Y2gpOwo+ICsKPiArc3RhdGljIHN0 cnVjdCBtaXBpX2RzaV9kcml2ZXIgb3Jpc2V0ZWNoX290bTgwMDlhX2RyaXZlciA9IHsKPiArCS5w cm9iZSAgPSBvdG04MDA5YV9wcm9iZSwKPiArCS5yZW1vdmUgPSBvdG04MDA5YV9yZW1vdmUsCj4g KwkuZHJpdmVyID0gewo+ICsJCS5uYW1lID0gRFJWX05BTUUgIl9wYW5lbCIsCj4gKwkJLm9mX21h dGNoX3RhYmxlID0gb3Jpc2V0ZWNoX290bTgwMDlhX29mX21hdGNoLAo+ICsJfSwKPiArfTsKPiAr bW9kdWxlX21pcGlfZHNpX2RyaXZlcihvcmlzZXRlY2hfb3RtODAwOWFfZHJpdmVyKTsKPiArCj4g K01PRFVMRV9BVVRIT1IoIlBoaWxpcHBlIENvcm51IDxwaGlsaXBwZS5jb3JudUBzdC5jb20+Iik7 Cj4gK01PRFVMRV9BVVRIT1IoIllhbm5pY2sgRmVydHJlIDx5YW5uaWNrLmZlcnRyZUBzdC5jb20+ Iik7Cj4gK01PRFVMRV9ERVNDUklQVElPTigiRFJNIGRyaXZlciBmb3IgT3Jpc2UgVGVjaCBPVE04 MDA5QSBNSVBJIERTSSBwYW5lbCIpOwo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7CgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==