From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH v10 1/2] drm/panel: Add support for Truly NT35597 panel driver Date: Thu, 25 Oct 2018 17:32:19 -0400 Message-ID: <20181025213219.GO154160@art_vandelay> References: <1538787139-28122-1-git-send-email-abhinavk@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1538787139-28122-1-git-send-email-abhinavk@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Abhinav Kumar Cc: thierry.reding@gmail.com, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, robh+dt@kernel.org, seanpaul@chromium.org, hoegsberg@google.com, chandanu@codeaurora.org List-Id: devicetree@vger.kernel.org T24gRnJpLCBPY3QgMDUsIDIwMTggYXQgMDU6NTI6MThQTSAtMDcwMCwgQWJoaW5hdiBLdW1hciB3 cm90ZToKPiBBZGQgc3VwcG9ydCBmb3IgVHJ1bHkgTlQzNTU5NyBwYW5lbCBkcml2ZXIgdXNlZCBp biBNU00gcmVmZXJlbmNlCj4gcGxhdGZvcm1zLiBUaGlzIHBhbmVsIGRyaXZlciBzdXBwb3J0cyBi b3RoIHNpbmdsZSBEU0kgYW5kIGR1YWwKPiBEU0kgbW9kZXMuCj4gCj4gSG93ZXZlciwgdGhpcyBw YXRjaCBzZXJpZXMgYWRkcyBzdXBwb3J0IG9ubHkgZm9yIGR1YWwgRFNJIG1vZGUuCj4gCj4gQ2hh bmdlcyBpbiB2MTA6Cj4gLSBOb25lCj4gCj4gUmV2aWV3ZWQtYnk6IFNlYW4gUGF1bCA8c2VhbnBh dWxAY2hyb21pdW0ub3JnPgo+IFNpZ25lZC1vZmYtYnk6IEFyY2hpdCBUYW5lamEgPGFyY2hpdHRA Y29kZWF1cm9yYS5vcmc+Cj4gU2lnbmVkLW9mZi1ieTogQWJoaW5hdiBLdW1hciA8YWJoaW5hdmtA Y29kZWF1cm9yYS5vcmc+CgpUaGFua3MgZm9yIGtlZXBpbmcgdXAgd2l0aCB0aGVzZSBwYXRjaGVz LCBJJ3ZlIGFwcGxpZWQgYm90aCB0byBkcm0tbWlzYy1uZXh0LgoKU2VhbgoKPiAtLS0KPiAgZHJp dmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgICAgICAgICAgICAgICB8ICAgNyArCj4gIGRyaXZl cnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJz L2dwdS9kcm0vcGFuZWwvcGFuZWwtdHJ1bHktbnQzNTU5Ny5jIHwgNjc1ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCA2ODMgaW5zZXJ0aW9ucygrKQo+ICBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXRydWx5LW50MzU1 OTcuYwo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyBiL2Ry aXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCj4gaW5kZXggNjAyMGMzMC4uMDczZmZhMCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9wYW5lbC9LY29uZmlnCj4gQEAgLTE4Niw0ICsxODYsMTEgQEAgY29uZmlnIERSTV9Q QU5FTF9TSVRST05JWF9TVDc3ODlWCj4gIAkgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gZW5h YmxlIHN1cHBvcnQgZm9yIHRoZSBTaXRyb25peAo+ICAJICBTVDc3ODlWIGNvbnRyb2xsZXIgZm9y IDI0MHgzMjAgTENEIHBhbmVscwo+ICAKPiArY29uZmlnIERSTV9QQU5FTF9UUlVMWV9OVDM1NTk3 X1dRWEdBCj4gKwl0cmlzdGF0ZSAiVHJ1bHkgV1FYR0EiCj4gKwlkZXBlbmRzIG9uIE9GCj4gKwlk ZXBlbmRzIG9uIERSTV9NSVBJX0RTSQo+ICsJaGVscAo+ICsJICBTYXkgWSBoZXJlIGlmIHlvdSB3 YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBUcnVseSBOVDM1NTk3IFdRWEdBIER1YWwgRFNJCj4g KwkgIFZpZGVvIE1vZGUgcGFuZWwKPiAgZW5kbWVudQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcGFuZWwvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKPiBp bmRleCA1Y2NhYWE5Li44MGZkMTlmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5l bC9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQo+IEBAIC0x OSwzICsxOSw0IEBAIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0VJS09fNDNXVkYxRykgKz0gcGFu ZWwtc2Vpa28tNDN3dmYxZy5vCj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0hBUlBfTFExMDFS MVNYMDEpICs9IHBhbmVsLXNoYXJwLWxxMTAxcjFzeDAxLm8KPiAgb2JqLSQoQ09ORklHX0RSTV9Q QU5FTF9TSEFSUF9MUzA0M1QxTEUwMSkgKz0gcGFuZWwtc2hhcnAtbHMwNDN0MWxlMDEubwo+ICBv YmotJChDT05GSUdfRFJNX1BBTkVMX1NJVFJPTklYX1NUNzc4OVYpICs9IHBhbmVsLXNpdHJvbml4 LXN0Nzc4OXYubwo+ICtvYmotJChDT05GSUdfRFJNX1BBTkVMX1RSVUxZX05UMzU1OTdfV1FYR0Ep ICs9IHBhbmVsLXRydWx5LW50MzU1OTcubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v cGFuZWwvcGFuZWwtdHJ1bHktbnQzNTU5Ny5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVs LXRydWx5LW50MzU1OTcuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4u ZmMyYTY2Ywo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFu ZWwtdHJ1bHktbnQzNTU5Ny5jCj4gQEAgLTAsMCArMSw2NzUgQEAKPiArLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDE4LCBUaGUg TGludXggRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICovCj4gKwo+ICsjaW5j bHVkZSA8ZHJtL2RybVAuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KPiArI2luY2x1 ZGUgPGRybS9kcm1fbWlwaV9kc2kuaD4KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1 bWVyLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4 L29mX2dyYXBoLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9waW5jdHJsL2NvbnN1bWVyLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KPiArCj4gKyNpbmNsdWRlIDx2aWRl by9taXBpX2Rpc3BsYXkuaD4KPiArCj4gK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgcmVndWxh dG9yX25hbWVzW10gPSB7Cj4gKwkidmRkYSIsCj4gKwkidmRpc3BwIiwKPiArCSJ2ZGlzcG4iLAo+ ICt9Owo+ICsKPiArc3RhdGljIHVuc2lnbmVkIGxvbmcgY29uc3QgcmVndWxhdG9yX2VuYWJsZV9s b2Fkc1tdID0gewo+ICsJNjIwMDAsCj4gKwkxMDAwMDAsCj4gKwkxMDAwMDAsCj4gK307Cj4gKwo+ ICtzdGF0aWMgdW5zaWduZWQgbG9uZyBjb25zdCByZWd1bGF0b3JfZGlzYWJsZV9sb2Fkc1tdID0g ewo+ICsJODAsCj4gKwkxMDAsCj4gKwkxMDAsCj4gK307Cj4gKwo+ICtzdHJ1Y3QgY21kX3NldCB7 Cj4gKwl1OCBjb21tYW5kc1s0XTsKPiArCXU4IHNpemU7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgbnQz NTU5N19jb25maWcgewo+ICsJdTMyIHdpZHRoX21tOwo+ICsJdTMyIGhlaWdodF9tbTsKPiArCWNv bnN0IGNoYXIgKnBhbmVsX25hbWU7Cj4gKwljb25zdCBzdHJ1Y3QgY21kX3NldCAqcGFuZWxfb25f Y21kczsKPiArCXUzMiBudW1fb25fY21kczsKPiArCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICpkbTsKPiArfTsKPiArCj4gK3N0cnVjdCB0cnVseV9udDM1NTk3IHsKPiArCXN0cnVjdCBk ZXZpY2UgKmRldjsKPiArCXN0cnVjdCBkcm1fcGFuZWwgcGFuZWw7Cj4gKwo+ICsJc3RydWN0IHJl Z3VsYXRvcl9idWxrX2RhdGEgc3VwcGxpZXNbQVJSQVlfU0laRShyZWd1bGF0b3JfbmFtZXMpXTsK PiArCj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpyZXNldF9ncGlvOwo+ICsJc3RydWN0IGdwaW9fZGVz YyAqbW9kZV9ncGlvOwo+ICsKPiArCXN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiYWNrbGlnaHQ7 Cj4gKwo+ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpWzJdOwo+ICsKPiArCWNvbnN0IHN0 cnVjdCBudDM1NTk3X2NvbmZpZyAqY29uZmlnOwo+ICsJYm9vbCBwcmVwYXJlZDsKPiArCWJvb2wg ZW5hYmxlZDsKPiArfTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHRydWx5X250MzU1OTcg KnBhbmVsX3RvX2N0eChzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJcmV0dXJuIGNv bnRhaW5lcl9vZihwYW5lbCwgc3RydWN0IHRydWx5X250MzU1OTcsIHBhbmVsKTsKPiArfQo+ICsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbWRfc2V0IHFjb21fMmtfcGFuZWxfbWFnaWNfY21kc1td ID0gewo+ICsJLyogQ01EMl9QMCAqLwo+ICsJeyB7IDB4ZmYsIDB4MjAgfSwgMiB9LAo+ICsJeyB7 IDB4ZmIsIDB4MDEgfSwgMiB9LAo+ICsJeyB7IDB4MDAsIDB4MDEgfSwgMiB9LAo+ICsJeyB7IDB4 MDEsIDB4NTUgfSwgMiB9LAo+ICsJeyB7IDB4MDIsIDB4NDUgfSwgMiB9LAo+ICsJeyB7IDB4MDUs IDB4NDAgfSwgMiB9LAo+ICsJeyB7IDB4MDYsIDB4MTkgfSwgMiB9LAo+ICsJeyB7IDB4MDcsIDB4 MWUgfSwgMiB9LAo+ICsJeyB7IDB4MGIsIDB4NzMgfSwgMiB9LAo+ICsJeyB7IDB4MGMsIDB4NzMg fSwgMiB9LAo+ICsJeyB7IDB4MGUsIDB4YjAgfSwgMiB9LAo+ICsJeyB7IDB4MGYsIDB4YWUgfSwg MiB9LAo+ICsJeyB7IDB4MTEsIDB4YjggfSwgMiB9LAo+ICsJeyB7IDB4MTMsIDB4MDAgfSwgMiB9 LAo+ICsJeyB7IDB4NTgsIDB4ODAgfSwgMiB9LAo+ICsJeyB7IDB4NTksIDB4MDEgfSwgMiB9LAo+ ICsJeyB7IDB4NWEsIDB4MDAgfSwgMiB9LAo+ICsJeyB7IDB4NWIsIDB4MDEgfSwgMiB9LAo+ICsJ eyB7IDB4NWMsIDB4ODAgfSwgMiB9LAo+ICsJeyB7IDB4NWQsIDB4ODEgfSwgMiB9LAo+ICsJeyB7 IDB4NWUsIDB4MDAgfSwgMiB9LAo+ICsJeyB7IDB4NWYsIDB4MDEgfSwgMiB9LAo+ICsJeyB7IDB4 NzIsIDB4MTEgfSwgMiB9LAo+ICsJeyB7IDB4NjgsIDB4MDMgfSwgMiB9LAo+ICsJLyogQ01EMl9Q NCAqLwo+ICsJeyB7IDB4RkYsIDB4MjQgfSwgMiB9LAo+ICsJeyB7IDB4RkIsIDB4MDEgfSwgMiB9 LAo+ICsJeyB7IDB4MDAsIDB4MUMgfSwgMiB9LAo+ICsJeyB7IDB4MDEsIDB4MEIgfSwgMiB9LAo+ ICsJeyB7IDB4MDIsIDB4MEMgfSwgMiB9LAo+ICsJeyB7IDB4MDMsIDB4MDEgfSwgMiB9LAo+ICsJ eyB7IDB4MDQsIDB4MEYgfSwgMiB9LAo+ICsJeyB7IDB4MDUsIDB4MTAgfSwgMiB9LAo+ICsJeyB7 IDB4MDYsIDB4MTAgfSwgMiB9LAo+ICsJeyB7IDB4MDcsIDB4MTAgfSwgMiB9LAo+ICsJeyB7IDB4 MDgsIDB4ODkgfSwgMiB9LAo+ICsJeyB7IDB4MDksIDB4OEEgfSwgMiB9LAo+ICsJeyB7IDB4MEEs IDB4MTMgfSwgMiB9LAo+ICsJeyB7IDB4MEIsIDB4MTMgfSwgMiB9LAo+ICsJeyB7IDB4MEMsIDB4 MTUgfSwgMiB9LAo+ICsJeyB7IDB4MEQsIDB4MTUgfSwgMiB9LAo+ICsJeyB7IDB4MEUsIDB4MTcg fSwgMiB9LAo+ICsJeyB7IDB4MEYsIDB4MTcgfSwgMiB9LAo+ICsJeyB7IDB4MTAsIDB4MUMgfSwg MiB9LAo+ICsJeyB7IDB4MTEsIDB4MEIgfSwgMiB9LAo+ICsJeyB7IDB4MTIsIDB4MEMgfSwgMiB9 LAo+ICsJeyB7IDB4MTMsIDB4MDEgfSwgMiB9LAo+ICsJeyB7IDB4MTQsIDB4MEYgfSwgMiB9LAo+ ICsJeyB7IDB4MTUsIDB4MTAgfSwgMiB9LAo+ICsJeyB7IDB4MTYsIDB4MTAgfSwgMiB9LAo+ICsJ eyB7IDB4MTcsIDB4MTAgfSwgMiB9LAo+ICsJeyB7IDB4MTgsIDB4ODkgfSwgMiB9LAo+ICsJeyB7 IDB4MTksIDB4OEEgfSwgMiB9LAo+ICsJeyB7IDB4MUEsIDB4MTMgfSwgMiB9LAo+ICsJeyB7IDB4 MUIsIDB4MTMgfSwgMiB9LAo+ICsJeyB7IDB4MUMsIDB4MTUgfSwgMiB9LAo+ICsJeyB7IDB4MUQs IDB4MTUgfSwgMiB9LAo+ICsJeyB7IDB4MUUsIDB4MTcgfSwgMiB9LAo+ICsJeyB7IDB4MUYsIDB4 MTcgfSwgMiB9LAo+ICsJLyogU1RWICovCj4gKwl7IHsgMHgyMCwgMHg0MCB9LCAyIH0sCj4gKwl7 IHsgMHgyMSwgMHgwMSB9LCAyIH0sCj4gKwl7IHsgMHgyMiwgMHgwMCB9LCAyIH0sCj4gKwl7IHsg MHgyMywgMHg0MCB9LCAyIH0sCj4gKwl7IHsgMHgyNCwgMHg0MCB9LCAyIH0sCj4gKwl7IHsgMHgy NSwgMHg2RCB9LCAyIH0sCj4gKwl7IHsgMHgyNiwgMHg0MCB9LCAyIH0sCj4gKwl7IHsgMHgyNywg MHg0MCB9LCAyIH0sCj4gKwkvKiBWZW5kICovCj4gKwl7IHsgMHhFMCwgMHgwMCB9LCAyIH0sCj4g Kwl7IHsgMHhEQywgMHgyMSB9LCAyIH0sCj4gKwl7IHsgMHhERCwgMHgyMiB9LCAyIH0sCj4gKwl7 IHsgMHhERSwgMHgwNyB9LCAyIH0sCj4gKwl7IHsgMHhERiwgMHgwNyB9LCAyIH0sCj4gKwl7IHsg MHhFMywgMHg2RCB9LCAyIH0sCj4gKwl7IHsgMHhFMSwgMHgwNyB9LCAyIH0sCj4gKwl7IHsgMHhF MiwgMHgwNyB9LCAyIH0sCj4gKwkvKiBVRCAqLwo+ICsJeyB7IDB4MjksIDB4RDggfSwgMiB9LAo+ ICsJeyB7IDB4MkEsIDB4MkEgfSwgMiB9LAo+ICsJLyogQ0xLICovCj4gKwl7IHsgMHg0QiwgMHgw MyB9LCAyIH0sCj4gKwl7IHsgMHg0QywgMHgxMSB9LCAyIH0sCj4gKwl7IHsgMHg0RCwgMHgxMCB9 LCAyIH0sCj4gKwl7IHsgMHg0RSwgMHgwMSB9LCAyIH0sCj4gKwl7IHsgMHg0RiwgMHgwMSB9LCAy IH0sCj4gKwl7IHsgMHg1MCwgMHgxMCB9LCAyIH0sCj4gKwl7IHsgMHg1MSwgMHgwMCB9LCAyIH0s Cj4gKwl7IHsgMHg1MiwgMHg4MCB9LCAyIH0sCj4gKwl7IHsgMHg1MywgMHgwMCB9LCAyIH0sCj4g Kwl7IHsgMHg1NiwgMHgwMCB9LCAyIH0sCj4gKwl7IHsgMHg1NCwgMHgwNyB9LCAyIH0sCj4gKwl7 IHsgMHg1OCwgMHgwNyB9LCAyIH0sCj4gKwl7IHsgMHg1NSwgMHgyNSB9LCAyIH0sCj4gKwkvKiBS ZXNldCBYRE9OQiAqLwo+ICsJeyB7IDB4NUIsIDB4NDMgfSwgMiB9LAo+ICsJeyB7IDB4NUMsIDB4 MDAgfSwgMiB9LAo+ICsJeyB7IDB4NUYsIDB4NzMgfSwgMiB9LAo+ICsJeyB7IDB4NjAsIDB4NzMg fSwgMiB9LAo+ICsJeyB7IDB4NjMsIDB4MjIgfSwgMiB9LAo+ICsJeyB7IDB4NjQsIDB4MDAgfSwg MiB9LAo+ICsJeyB7IDB4NjcsIDB4MDggfSwgMiB9LAo+ICsJeyB7IDB4NjgsIDB4MDQgfSwgMiB9 LAo+ICsJLyogUmVzb2x1dGlvbjoxNDQweDI1NjAgKi8KPiArCXsgeyAweDcyLCAweDAyIH0sIDIg fSwKPiArCS8qIG11eCAqLwo+ICsJeyB7IDB4N0EsIDB4ODAgfSwgMiB9LAo+ICsJeyB7IDB4N0Is IDB4OTEgfSwgMiB9LAo+ICsJeyB7IDB4N0MsIDB4RDggfSwgMiB9LAo+ICsJeyB7IDB4N0QsIDB4 NjAgfSwgMiB9LAo+ICsJeyB7IDB4N0YsIDB4MTUgfSwgMiB9LAo+ICsJeyB7IDB4NzUsIDB4MTUg fSwgMiB9LAo+ICsJLyogQUJPRkYgKi8KPiArCXsgeyAweEIzLCAweEMwIH0sIDIgfSwKPiArCXsg eyAweEI0LCAweDAwIH0sIDIgfSwKPiArCXsgeyAweEI1LCAweDAwIH0sIDIgfSwKPiArCS8qIFNv dXJjZSBFUSAqLwo+ICsJeyB7IDB4NzgsIDB4MDAgfSwgMiB9LAo+ICsJeyB7IDB4NzksIDB4MDAg fSwgMiB9LAo+ICsJeyB7IDB4ODAsIDB4MDAgfSwgMiB9LAo+ICsJeyB7IDB4ODMsIDB4MDAgfSwg MiB9LAo+ICsJLyogRlAgQlAgKi8KPiArCXsgeyAweDkzLCAweDBBIH0sIDIgfSwKPiArCXsgeyAw eDk0LCAweDBBIH0sIDIgfSwKPiArCS8qIEludmVyc2lvbiBUeXBlICovCj4gKwl7IHsgMHg4QSwg MHgwMCB9LCAyIH0sCj4gKwl7IHsgMHg5QiwgMHhGRiB9LCAyIH0sCj4gKwkvKiBJTUdTV0FQID0x IEBQb3J0U3dhcD0xICovCj4gKwl7IHsgMHg5RCwgMHhCMCB9LCAyIH0sCj4gKwl7IHsgMHg5Riwg MHg2MyB9LCAyIH0sCj4gKwl7IHsgMHg5OCwgMHgxMCB9LCAyIH0sCj4gKwkvKiBGUk0gKi8KPiAr CXsgeyAweEVDLCAweDAwIH0sIDIgfSwKPiArCS8qIENNRDEgKi8KPiArCXsgeyAweEZGLCAweDEw IH0sIDIgfSwKPiArCS8qIFZCUCtWU0E9LFZGUCA9IDEwSCAqLwo+ICsJeyB7IDB4M0IsIDB4MDMs IDB4MEEsIDB4MEEgfSwgNCB9LAo+ICsJLyogRlRFIG9uICovCj4gKwl7IHsgMHgzNSwgMHgwMCB9 LCAyIH0sCj4gKwkvKiBFTl9CSyA9MShhdXRvIGJsYWNrKSAqLwo+ICsJeyB7IDB4RTUsIDB4MDEg fSwgMiB9LAo+ICsJLyogQ01EIG1vZGUoMTApIFZETyBtb2RlKDAzKSAqLwo+ICsJeyB7IDB4QkIs IDB4MDMgfSwgMiB9LAo+ICsJLyogTm9uIFJlbG9hZCBNVFAgKi8KPiArCXsgeyAweEZCLCAweDAx IH0sIDIgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgdHJ1bHlfZGNzX3dyaXRlKHN0cnVjdCBk cm1fcGFuZWwgKnBhbmVsLCB1MzIgY29tbWFuZCkKPiArewo+ICsJc3RydWN0IHRydWx5X250MzU1 OTcgKmN0eCA9IHBhbmVsX3RvX2N0eChwYW5lbCk7Cj4gKwlpbnQgaSwgcmV0Owo+ICsKPiArCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGN0eC0+ZHNpKTsgaSsrKSB7Cj4gKwkJcmV0ID0gbWlw aV9kc2lfZGNzX3dyaXRlKGN0eC0+ZHNpW2ldLCBjb21tYW5kLCBOVUxMLCAwKTsKPiArCQlpZiAo cmV0IDwgMCkgewo+ICsJCQlEUk1fREVWX0VSUk9SKGN0eC0+ZGV2LAo+ICsJCQkJImNtZCAweCV4 IGZhaWxlZCBmb3IgZHNpID0gJWRcbiIsCj4gKwkJCQljb21tYW5kLCBpKTsKPiArCQl9Cj4gKwl9 Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCB0cnVseV9kY3Nfd3Jp dGVfYnVmKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsLAo+ICsJdTMyIHNpemUsIGNvbnN0IHU4ICpi dWYpCj4gK3sKPiArCXN0cnVjdCB0cnVseV9udDM1NTk3ICpjdHggPSBwYW5lbF90b19jdHgocGFu ZWwpOwo+ICsJaW50IHJldCA9IDA7Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwg QVJSQVlfU0laRShjdHgtPmRzaSk7IGkrKykgewo+ICsJCXJldCA9IG1pcGlfZHNpX2Rjc193cml0 ZV9idWZmZXIoY3R4LT5kc2lbaV0sIGJ1Ziwgc2l6ZSk7Cj4gKwkJaWYgKHJldCA8IDApIHsKPiAr CQkJRFJNX0RFVl9FUlJPUihjdHgtPmRldiwKPiArCQkJCSJmYWlsZWQgdG8gdHggY21kIFslZF0s IGVycjogJWRcbiIsIGksIHJldCk7Cj4gKwkJCXJldHVybiByZXQ7Cj4gKwkJfQo+ICsJfQo+ICsK PiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdHJ1bHlfMzU1OTdfcG93ZXJf b24oc3RydWN0IHRydWx5X250MzU1OTcgKmN0eCkKPiArewo+ICsJaW50IHJldCwgaTsKPiArCj4g Kwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKTsgaSsrKSB7Cj4gKwkJ cmV0ID0gcmVndWxhdG9yX3NldF9sb2FkKGN0eC0+c3VwcGxpZXNbaV0uY29uc3VtZXIsCj4gKwkJ CQkJcmVndWxhdG9yX2VuYWJsZV9sb2Fkc1tpXSk7Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJu IHJldDsKPiArCX0KPiArCj4gKwlyZXQgPSByZWd1bGF0b3JfYnVsa19lbmFibGUoQVJSQVlfU0la RShjdHgtPnN1cHBsaWVzKSwgY3R4LT5zdXBwbGllcyk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQly ZXR1cm4gcmV0Owo+ICsKPiArCS8qCj4gKwkgKiBSZXNldCBzZXF1ZW5jZSBvZiB0cnVseSBwYW5l bCByZXF1aXJlcyB0aGUgcGFuZWwgdG8gYmUKPiArCSAqIG91dCBvZiByZXNldCBmb3IgMTBtcywg Zm9sbG93ZWQgYnkgYmVpbmcgaGVsZCBpbiByZXNldAo+ICsJICogZm9yIDEwbXMgYW5kIHRoZW4g b3V0IGFnYWluCj4gKwkgKi8KPiArCWdwaW9kX3NldF92YWx1ZShjdHgtPnJlc2V0X2dwaW8sIDAp Owo+ICsJdXNsZWVwX3JhbmdlKDEwMDAwLCAyMDAwMCk7Cj4gKwlncGlvZF9zZXRfdmFsdWUoY3R4 LT5yZXNldF9ncGlvLCAxKTsKPiArCXVzbGVlcF9yYW5nZSgxMDAwMCwgMjAwMDApOwo+ICsJZ3Bp b2Rfc2V0X3ZhbHVlKGN0eC0+cmVzZXRfZ3BpbywgMCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgdHJ1bHlfbnQzNTU5N19wb3dlcl9vZmYoc3RydWN0IHRydWx5X250 MzU1OTcgKmN0eCkKPiArewo+ICsJaW50IHJldCA9IDA7Cj4gKwlpbnQgaTsKPiArCj4gKwlncGlv ZF9zZXRfdmFsdWUoY3R4LT5yZXNldF9ncGlvLCAxKTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwg QVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKTsgaSsrKSB7Cj4gKwkJcmV0ID0gcmVndWxhdG9yX3Nl dF9sb2FkKGN0eC0+c3VwcGxpZXNbaV0uY29uc3VtZXIsCj4gKwkJCQlyZWd1bGF0b3JfZGlzYWJs ZV9sb2Fkc1tpXSk7Cj4gKwkJaWYgKHJldCkgewo+ICsJCQlEUk1fREVWX0VSUk9SKGN0eC0+ZGV2 LAo+ICsJCQkJInJlZ3VsYXRvcl9zZXRfbG9hZCBmYWlsZWQgJWRcbiIsIHJldCk7Cj4gKwkJCXJl dHVybiByZXQ7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXJldCA9IHJlZ3VsYXRvcl9idWxrX2Rpc2Fi bGUoQVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKSwgY3R4LT5zdXBwbGllcyk7Cj4gKwlpZiAocmV0 KSB7Cj4gKwkJRFJNX0RFVl9FUlJPUihjdHgtPmRldiwKPiArCQkJInJlZ3VsYXRvcl9idWxrX2Rp c2FibGUgZmFpbGVkICVkXG4iLCByZXQpOwo+ICsJfQo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsK PiArc3RhdGljIGludCB0cnVseV9udDM1NTk3X2Rpc2FibGUoc3RydWN0IGRybV9wYW5lbCAqcGFu ZWwpCj4gK3sKPiArCXN0cnVjdCB0cnVseV9udDM1NTk3ICpjdHggPSBwYW5lbF90b19jdHgocGFu ZWwpOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoIWN0eC0+ZW5hYmxlZCkKPiArCQlyZXR1cm4g MDsKPiArCj4gKwlpZiAoY3R4LT5iYWNrbGlnaHQpIHsKPiArCQlyZXQgPSBiYWNrbGlnaHRfZGlz YWJsZShjdHgtPmJhY2tsaWdodCk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCURSTV9ERVZfRVJS T1IoY3R4LT5kZXYsICJiYWNrbGlnaHQgZGlzYWJsZSBmYWlsZWQgJWRcbiIsCj4gKwkJCQlyZXQp Owo+ICsJfQo+ICsKPiArCWN0eC0+ZW5hYmxlZCA9IGZhbHNlOwo+ICsJcmV0dXJuIDA7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgdHJ1bHlfbnQzNTU5N191bnByZXBhcmUoc3RydWN0IGRybV9wYW5l bCAqcGFuZWwpCj4gK3sKPiArCXN0cnVjdCB0cnVseV9udDM1NTk3ICpjdHggPSBwYW5lbF90b19j dHgocGFuZWwpOwo+ICsJaW50IHJldCA9IDA7Cj4gKwo+ICsJaWYgKCFjdHgtPnByZXBhcmVkKQo+ ICsJCXJldHVybiAwOwo+ICsKPiArCWN0eC0+ZHNpWzBdLT5tb2RlX2ZsYWdzID0gMDsKPiArCWN0 eC0+ZHNpWzFdLT5tb2RlX2ZsYWdzID0gMDsKPiArCj4gKwlyZXQgPSB0cnVseV9kY3Nfd3JpdGUo cGFuZWwsIE1JUElfRENTX1NFVF9ESVNQTEFZX09GRik7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJ CURSTV9ERVZfRVJST1IoY3R4LT5kZXYsCj4gKwkJCSJzZXRfZGlzcGxheV9vZmYgY21kIGZhaWxl ZCByZXQgPSAlZFxuIiwKPiArCQkJcmV0KTsKPiArCX0KPiArCj4gKwkvKiAxMjBtcyBkZWxheSBy ZXF1aXJlZCBoZXJlIGFzIHBlciBEQ1Mgc3BlYyAqLwo+ICsJbXNsZWVwKDEyMCk7Cj4gKwo+ICsJ cmV0ID0gdHJ1bHlfZGNzX3dyaXRlKHBhbmVsLCBNSVBJX0RDU19FTlRFUl9TTEVFUF9NT0RFKTsK PiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJRFJNX0RFVl9FUlJPUihjdHgtPmRldiwKPiArCQkJImVu dGVyX3NsZWVwIGNtZCBmYWlsZWQgcmV0ID0gJWRcbiIsIHJldCk7Cj4gKwl9Cj4gKwo+ICsJcmV0 ID0gdHJ1bHlfbnQzNTU5N19wb3dlcl9vZmYoY3R4KTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCURS TV9ERVZfRVJST1IoY3R4LT5kZXYsICJwb3dlcl9vZmYgZmFpbGVkIHJldCA9ICVkXG4iLCByZXQp Owo+ICsKPiArCWN0eC0+cHJlcGFyZWQgPSBmYWxzZTsKPiArCXJldHVybiByZXQ7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQgdHJ1bHlfbnQzNTU5N19wcmVwYXJlKHN0cnVjdCBkcm1fcGFuZWwgKnBh bmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgdHJ1bHlfbnQzNTU5NyAqY3R4ID0gcGFuZWxfdG9fY3R4KHBh bmVsKTsKPiArCWludCByZXQ7Cj4gKwlpbnQgaTsKPiArCWNvbnN0IHN0cnVjdCBjbWRfc2V0ICpw YW5lbF9vbl9jbWRzOwo+ICsJY29uc3Qgc3RydWN0IG50MzU1OTdfY29uZmlnICpjb25maWc7Cj4g Kwl1MzIgbnVtX2NtZHM7Cj4gKwo+ICsJaWYgKGN0eC0+cHJlcGFyZWQpCj4gKwkJcmV0dXJuIDA7 Cj4gKwo+ICsJcmV0ID0gdHJ1bHlfMzU1OTdfcG93ZXJfb24oY3R4KTsKPiArCWlmIChyZXQgPCAw KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJY3R4LT5kc2lbMF0tPm1vZGVfZmxhZ3MgfD0gTUlQ SV9EU0lfTU9ERV9MUE07Cj4gKwljdHgtPmRzaVsxXS0+bW9kZV9mbGFncyB8PSBNSVBJX0RTSV9N T0RFX0xQTTsKPiArCj4gKwljb25maWcgPSBjdHgtPmNvbmZpZzsKPiArCXBhbmVsX29uX2NtZHMg PSBjb25maWctPnBhbmVsX29uX2NtZHM7Cj4gKwludW1fY21kcyA9IGNvbmZpZy0+bnVtX29uX2Nt ZHM7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IG51bV9jbWRzOyBpKyspIHsKPiArCQlyZXQgPSB0 cnVseV9kY3Nfd3JpdGVfYnVmKHBhbmVsLAo+ICsJCQkJcGFuZWxfb25fY21kc1tpXS5zaXplLAo+ ICsJCQkJCXBhbmVsX29uX2NtZHNbaV0uY29tbWFuZHMpOwo+ICsJCWlmIChyZXQgPCAwKSB7Cj4g KwkJCURSTV9ERVZfRVJST1IoY3R4LT5kZXYsCj4gKwkJCQkiY21kIHNldCB0eCBmYWlsZWQgaSA9 ICVkIHJldCA9ICVkXG4iLAo+ICsJCQkJCWksIHJldCk7Cj4gKwkJCWdvdG8gcG93ZXJfb2ZmOwo+ ICsJCX0KPiArCX0KPiArCj4gKwlyZXQgPSB0cnVseV9kY3Nfd3JpdGUocGFuZWwsIE1JUElfRENT X0VYSVRfU0xFRVBfTU9ERSk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCURSTV9ERVZfRVJST1Io Y3R4LT5kZXYsCj4gKwkJCSJleGl0X3NsZWVwX21vZGUgY21kIGZhaWxlZCByZXQgPSAlZFxuIiwK PiArCQkJcmV0KTsKPiArCQlnb3RvIHBvd2VyX29mZjsKPiArCX0KPiArCj4gKwkvKiBQZXIgRFNJ IHNwZWMgd2FpdCAxMjBtcyBhZnRlciBzZW5kaW5nIGV4aXQgc2xlZXAgRENTIGNvbW1hbmQgKi8K PiArCW1zbGVlcCgxMjApOwo+ICsKPiArCXJldCA9IHRydWx5X2Rjc193cml0ZShwYW5lbCwgTUlQ SV9EQ1NfU0VUX0RJU1BMQVlfT04pOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlEUk1fREVWX0VS Uk9SKGN0eC0+ZGV2LAo+ICsJCQkic2V0X2Rpc3BsYXlfb24gY21kIGZhaWxlZCByZXQgPSAlZFxu IiwgcmV0KTsKPiArCQlnb3RvIHBvd2VyX29mZjsKPiArCX0KPiArCj4gKwkvKiBQZXIgRFNJIHNw ZWMgd2FpdCAxMjBtcyBhZnRlciBzZW5kaW5nIHNldF9kaXNwbGF5X29uIERDUyBjb21tYW5kICov Cj4gKwltc2xlZXAoMTIwKTsKPiArCj4gKwljdHgtPnByZXBhcmVkID0gdHJ1ZTsKPiArCj4gKwly ZXR1cm4gMDsKPiArCj4gK3Bvd2VyX29mZjoKPiArCWlmICh0cnVseV9udDM1NTk3X3Bvd2VyX29m ZihjdHgpKQo+ICsJCURSTV9ERVZfRVJST1IoY3R4LT5kZXYsICJwb3dlcl9vZmYgZmFpbGVkXG4i KTsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdHJ1bHlfbnQzNTU5N19l bmFibGUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXN0cnVjdCB0cnVseV9udDM1 NTk3ICpjdHggPSBwYW5lbF90b19jdHgocGFuZWwpOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAo Y3R4LT5lbmFibGVkKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWlmIChjdHgtPmJhY2tsaWdodCkg ewo+ICsJCXJldCA9IGJhY2tsaWdodF9lbmFibGUoY3R4LT5iYWNrbGlnaHQpOwo+ICsJCWlmIChy ZXQgPCAwKQo+ICsJCQlEUk1fREVWX0VSUk9SKGN0eC0+ZGV2LCAiYmFja2xpZ2h0IGVuYWJsZSBm YWlsZWQgJWRcbiIsCj4gKwkJCQkJCSAgcmV0KTsKPiArCX0KPiArCj4gKwljdHgtPmVuYWJsZWQg PSB0cnVlOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHRydWx5X250 MzU1OTdfZ2V0X21vZGVzKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gcGFuZWwtPmNvbm5lY3RvcjsKPiArCXN0cnVjdCB0 cnVseV9udDM1NTk3ICpjdHggPSBwYW5lbF90b19jdHgocGFuZWwpOwo+ICsJc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKm1vZGU7Cj4gKwljb25zdCBzdHJ1Y3QgbnQzNTU5N19jb25maWcgKmNvbmZp ZzsKPiArCj4gKwljb25maWcgPSBjdHgtPmNvbmZpZzsKPiArCW1vZGUgPSBkcm1fbW9kZV9jcmVh dGUoY29ubmVjdG9yLT5kZXYpOwo+ICsJaWYgKCFtb2RlKSB7Cj4gKwkJRFJNX0RFVl9FUlJPUihj dHgtPmRldiwKPiArCQkJImZhaWxlZCB0byBjcmVhdGUgYSBuZXcgZGlzcGxheSBtb2RlXG4iKTsK PiArCQlyZXR1cm4gMDsKPiArCX0KPiArCj4gKwljb25uZWN0b3ItPmRpc3BsYXlfaW5mby53aWR0 aF9tbSA9IGNvbmZpZy0+d2lkdGhfbW07Cj4gKwljb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZWln aHRfbW0gPSBjb25maWctPmhlaWdodF9tbTsKPiArCWRybV9tb2RlX2NvcHkobW9kZSwgY29uZmln LT5kbSk7Cj4gKwltb2RlLT50eXBlID0gRFJNX01PREVfVFlQRV9EUklWRVIgfCBEUk1fTU9ERV9U WVBFX1BSRUZFUlJFRDsKPiArCWRybV9tb2RlX3Byb2JlZF9hZGQoY29ubmVjdG9yLCBtb2RlKTsK PiArCj4gKwlyZXR1cm4gMTsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGFu ZWxfZnVuY3MgdHJ1bHlfbnQzNTU5N19kcm1fZnVuY3MgPSB7Cj4gKwkuZGlzYWJsZSA9IHRydWx5 X250MzU1OTdfZGlzYWJsZSwKPiArCS51bnByZXBhcmUgPSB0cnVseV9udDM1NTk3X3VucHJlcGFy ZSwKPiArCS5wcmVwYXJlID0gdHJ1bHlfbnQzNTU5N19wcmVwYXJlLAo+ICsJLmVuYWJsZSA9IHRy dWx5X250MzU1OTdfZW5hYmxlLAo+ICsJLmdldF9tb2RlcyA9IHRydWx5X250MzU1OTdfZ2V0X21v ZGVzLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCB0cnVseV9udDM1NTk3X3BhbmVsX2FkZChzdHJ1 Y3QgdHJ1bHlfbnQzNTU5NyAqY3R4KQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBjdHgt PmRldjsKPiArCWludCByZXQsIGk7Cj4gKwljb25zdCBzdHJ1Y3QgbnQzNTU5N19jb25maWcgKmNv bmZpZzsKPiArCj4gKwljb25maWcgPSBjdHgtPmNvbmZpZzsKPiArCWZvciAoaSA9IDA7IGkgPCBB UlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMpOyBpKyspCj4gKwkJY3R4LT5zdXBwbGllc1tpXS5zdXBw bHkgPSByZWd1bGF0b3JfbmFtZXNbaV07Cj4gKwo+ICsJcmV0ID0gZGV2bV9yZWd1bGF0b3JfYnVs a19nZXQoZGV2LCBBUlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMpLAo+ICsJCQkJICAgICAgY3R4LT5z dXBwbGllcyk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWN0eC0+ cmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgInJlc2V0IiwgR1BJT0RfT1VUX0xPVyk7 Cj4gKwlpZiAoSVNfRVJSKGN0eC0+cmVzZXRfZ3BpbykpIHsKPiArCQlEUk1fREVWX0VSUk9SKGRl diwgImNhbm5vdCBnZXQgcmVzZXQgZ3BpbyAlbGRcbiIsCj4gKwkJCVBUUl9FUlIoY3R4LT5yZXNl dF9ncGlvKSk7Cj4gKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5yZXNldF9ncGlvKTsKPiArCX0KPiAr Cj4gKwljdHgtPm1vZGVfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgIm1vZGUiLCBHUElPRF9P VVRfTE9XKTsKPiArCWlmIChJU19FUlIoY3R4LT5tb2RlX2dwaW8pKSB7Cj4gKwkJRFJNX0RFVl9F UlJPUihkZXYsICJjYW5ub3QgZ2V0IG1vZGUgZ3BpbyAlbGRcbiIsCj4gKwkJCVBUUl9FUlIoY3R4 LT5tb2RlX2dwaW8pKTsKPiArCQlyZXR1cm4gUFRSX0VSUihjdHgtPm1vZGVfZ3Bpbyk7Cj4gKwl9 Cj4gKwo+ICsJLyogZHVhbCBwb3J0ICovCj4gKwlncGlvZF9zZXRfdmFsdWUoY3R4LT5tb2RlX2dw aW8sIDApOwo+ICsKPiArCWRybV9wYW5lbF9pbml0KCZjdHgtPnBhbmVsKTsKPiArCWN0eC0+cGFu ZWwuZGV2ID0gZGV2Owo+ICsJY3R4LT5wYW5lbC5mdW5jcyA9ICZ0cnVseV9udDM1NTk3X2RybV9m dW5jczsKPiArCWRybV9wYW5lbF9hZGQoJmN0eC0+cGFuZWwpOwo+ICsKPiArCXJldHVybiAwOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgcWNvbV9zZG04 NDVfbXRwXzJrX21vZGUgPSB7Cj4gKwkubmFtZSA9ICIxNDQweDI1NjAiLAo+ICsJLmNsb2NrID0g MjY4MzE2LAo+ICsJLmhkaXNwbGF5ID0gMTQ0MCwKPiArCS5oc3luY19zdGFydCA9IDE0NDAgKyAy MDAsCj4gKwkuaHN5bmNfZW5kID0gMTQ0MCArIDIwMCArIDMyLAo+ICsJLmh0b3RhbCA9IDE0NDAg KyAyMDAgKyAzMiArIDY0LAo+ICsJLnZkaXNwbGF5ID0gMjU2MCwKPiArCS52c3luY19zdGFydCA9 IDI1NjAgKyA4LAo+ICsJLnZzeW5jX2VuZCA9IDI1NjAgKyA4ICsgMSwKPiArCS52dG90YWwgPSAy NTYwICsgOCArIDEgKyA3LAo+ICsJLnZyZWZyZXNoID0gNjAsCj4gKwkuZmxhZ3MgPSAwLAo+ICt9 Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBudDM1NTk3X2NvbmZpZyBudDM1NTk3X2RpciA9 IHsKPiArCS53aWR0aF9tbSA9IDc0LAo+ICsJLmhlaWdodF9tbSA9IDEzMSwKPiArCS5wYW5lbF9u YW1lID0gInFjb21fc2RtODQ1X210cF8ya19wYW5lbCIsCj4gKwkuZG0gPSAmcWNvbV9zZG04NDVf bXRwXzJrX21vZGUsCj4gKwkucGFuZWxfb25fY21kcyA9IHFjb21fMmtfcGFuZWxfbWFnaWNfY21k cywKPiArCS5udW1fb25fY21kcyA9IEFSUkFZX1NJWkUocWNvbV8ya19wYW5lbF9tYWdpY19jbWRz KSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgdHJ1bHlfbnQzNTU5N19wcm9iZShzdHJ1Y3QgbWlw aV9kc2lfZGV2aWNlICpkc2kpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZkc2ktPmRl djsKPiArCXN0cnVjdCB0cnVseV9udDM1NTk3ICpjdHg7Cj4gKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2 aWNlICpkc2kxX2RldmljZTsKPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqZHNpMTsKPiArCXN0cnVj dCBtaXBpX2RzaV9ob3N0ICpkc2kxX2hvc3Q7Cj4gKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpk c2lfZGV2Owo+ICsJaW50IHJldCA9IDA7Cj4gKwlpbnQgaTsKPiArCj4gKwljb25zdCBzdHJ1Y3Qg bWlwaV9kc2lfZGV2aWNlX2luZm8gaW5mbyA9IHsKPiArCQkudHlwZSA9ICJ0cnVseW50MzU1OTci LAo+ICsJCS5jaGFubmVsID0gMCwKPiArCQkubm9kZSA9IE5VTEwsCj4gKwl9Owo+ICsKPiArCWN0 eCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqY3R4KSwgR0ZQX0tFUk5FTCk7Cj4gKwo+ICsJ aWYgKCFjdHgpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJLyoKPiArCSAqIFRoaXMgZGV2 aWNlIHJlcHJlc2VudHMgaXRzZWxmIGFzIG9uZSB3aXRoIHR3byBpbnB1dCBwb3J0cyB3aGljaCBh cmUKPiArCSAqIGZlZCBieSB0aGUgb3V0cHV0IHBvcnRzIG9mIHRoZSB0d28gRFNJIGNvbnRyb2xs ZXJzIC4gVGhlIERTSTAgaXMKPiArCSAqIHRoZSBtYXN0ZXIgY29udHJvbGxlciBhbmQgaGFzIG1v c3Qgb2YgdGhlIHBhbmVsIHJlbGF0ZWQgaW5mbyBpbiBpdHMKPiArCSAqIGNoaWxkIG5vZGUuCj4g KwkgKi8KPiArCj4gKwljdHgtPmNvbmZpZyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYp Owo+ICsKPiArCWlmICghY3R4LT5jb25maWcpIHsKPiArCQlkZXZfZXJyKGRldiwgIm1pc3Npbmcg ZGV2aWNlIGNvbmZpZ3VyYXRpb25cbiIpOwo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsJfQo+ICsK PiArCWRzaTEgPSBvZl9ncmFwaF9nZXRfcmVtb3RlX25vZGUoZHNpLT5kZXYub2Zfbm9kZSwgMSwg LTEpOwo+ICsJaWYgKCFkc2kxKSB7Cj4gKwkJRFJNX0RFVl9FUlJPUihkZXYsCj4gKwkJCSJmYWls ZWQgdG8gZ2V0IHJlbW90ZSBub2RlIGZvciBkc2kxX2RldmljZVxuIik7Cj4gKwkJcmV0dXJuIC1F Tk9ERVY7Cj4gKwl9Cj4gKwo+ICsJZHNpMV9ob3N0ID0gb2ZfZmluZF9taXBpX2RzaV9ob3N0X2J5 X25vZGUoZHNpMSk7Cj4gKwlvZl9ub2RlX3B1dChkc2kxKTsKPiArCWlmICghZHNpMV9ob3N0KSB7 Cj4gKwkJRFJNX0RFVl9FUlJPUihkZXYsICJmYWlsZWQgdG8gZmluZCBkc2kgaG9zdFxuIik7Cj4g KwkJcmV0dXJuIC1FUFJPQkVfREVGRVI7Cj4gKwl9Cj4gKwo+ICsJLyogcmVnaXN0ZXIgdGhlIHNl Y29uZCBEU0kgZGV2aWNlICovCj4gKwlkc2kxX2RldmljZSA9IG1pcGlfZHNpX2RldmljZV9yZWdp c3Rlcl9mdWxsKGRzaTFfaG9zdCwgJmluZm8pOwo+ICsJaWYgKElTX0VSUihkc2kxX2RldmljZSkp IHsKPiArCQlEUk1fREVWX0VSUk9SKGRldiwgImZhaWxlZCB0byBjcmVhdGUgZHNpIGRldmljZVxu Iik7Cj4gKwkJcmV0dXJuIFBUUl9FUlIoZHNpMV9kZXZpY2UpOwo+ICsJfQo+ICsKPiArCW1pcGlf ZHNpX3NldF9kcnZkYXRhKGRzaSwgY3R4KTsKPiArCj4gKwljdHgtPmRldiA9IGRldjsKPiArCWN0 eC0+ZHNpWzBdID0gZHNpOwo+ICsJY3R4LT5kc2lbMV0gPSBkc2kxX2RldmljZTsKPiArCj4gKwly ZXQgPSB0cnVseV9udDM1NTk3X3BhbmVsX2FkZChjdHgpOwo+ICsJaWYgKHJldCkgewo+ICsJCURS TV9ERVZfRVJST1IoZGV2LCAiZmFpbGVkIHRvIGFkZCBwYW5lbFxuIik7Cj4gKwkJZ290byBlcnJf cGFuZWxfYWRkOwo+ICsJfQo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGN0eC0+ ZHNpKTsgaSsrKSB7Cj4gKwkJZHNpX2RldiA9IGN0eC0+ZHNpW2ldOwo+ICsJCWRzaV9kZXYtPmxh bmVzID0gNDsKPiArCQlkc2lfZGV2LT5mb3JtYXQgPSBNSVBJX0RTSV9GTVRfUkdCODg4Owo+ICsJ CWRzaV9kZXYtPm1vZGVfZmxhZ3MgPSBNSVBJX0RTSV9NT0RFX1ZJREVPIHwgTUlQSV9EU0lfTU9E RV9MUE0gfAo+ICsJCQlNSVBJX0RTSV9DTE9DS19OT05fQ09OVElOVU9VUzsKPiArCQlyZXQgPSBt aXBpX2RzaV9hdHRhY2goZHNpX2Rldik7Cj4gKwkJaWYgKHJldCA8IDApIHsKPiArCQkJRFJNX0RF Vl9FUlJPUihkZXYsCj4gKwkJCQkiZHNpIGF0dGFjaCBmYWlsZWQgaSA9ICVkXG4iLCBpKTsKPiAr CQkJZ290byBlcnJfZHNpX2F0dGFjaDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4g Kwo+ICtlcnJfZHNpX2F0dGFjaDoKPiArCWRybV9wYW5lbF9yZW1vdmUoJmN0eC0+cGFuZWwpOwo+ ICtlcnJfcGFuZWxfYWRkOgo+ICsJbWlwaV9kc2lfZGV2aWNlX3VucmVnaXN0ZXIoZHNpMV9kZXZp Y2UpOwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCB0cnVseV9udDM1NTk3 X3JlbW92ZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCj4gK3sKPiArCXN0cnVjdCB0cnVs eV9udDM1NTk3ICpjdHggPSBtaXBpX2RzaV9nZXRfZHJ2ZGF0YShkc2kpOwo+ICsKPiArCWlmIChj dHgtPmRzaVswXSkKPiArCQltaXBpX2RzaV9kZXRhY2goY3R4LT5kc2lbMF0pOwo+ICsJaWYgKGN0 eC0+ZHNpWzFdKSB7Cj4gKwkJbWlwaV9kc2lfZGV0YWNoKGN0eC0+ZHNpWzFdKTsKPiArCQltaXBp X2RzaV9kZXZpY2VfdW5yZWdpc3RlcihjdHgtPmRzaVsxXSk7Cj4gKwl9Cj4gKwo+ICsJZHJtX3Bh bmVsX3JlbW92ZSgmY3R4LT5wYW5lbCk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdHJ1bHlfbnQzNTU5N19vZl9tYXRjaFtdID0gewo+ ICsJewo+ICsJCS5jb21wYXRpYmxlID0gInRydWx5LG50MzU1OTctMkstZGlzcGxheSIsCj4gKwkJ LmRhdGEgPSAmbnQzNTU5N19kaXIsCj4gKwl9LAo+ICsJeyB9Cj4gK307Cj4gK01PRFVMRV9ERVZJ Q0VfVEFCTEUob2YsIHRydWx5X250MzU1OTdfb2ZfbWF0Y2gpOwo+ICsKPiArc3RhdGljIHN0cnVj dCBtaXBpX2RzaV9kcml2ZXIgdHJ1bHlfbnQzNTU5N19kcml2ZXIgPSB7Cj4gKwkuZHJpdmVyID0g ewo+ICsJCS5uYW1lID0gInBhbmVsLXRydWx5LW50MzU1OTciLAo+ICsJCS5vZl9tYXRjaF90YWJs ZSA9IHRydWx5X250MzU1OTdfb2ZfbWF0Y2gsCj4gKwl9LAo+ICsJLnByb2JlID0gdHJ1bHlfbnQz NTU5N19wcm9iZSwKPiArCS5yZW1vdmUgPSB0cnVseV9udDM1NTk3X3JlbW92ZSwKPiArfTsKPiAr bW9kdWxlX21pcGlfZHNpX2RyaXZlcih0cnVseV9udDM1NTk3X2RyaXZlcik7Cj4gKwo+ICtNT0RV TEVfREVTQ1JJUFRJT04oIlRydWx5IE5UMzU1OTcgRFNJIFBhbmVsIERyaXZlciIpOwo+ICtNT0RV TEVfTElDRU5TRSgiR1BMIHYyIik7Cj4gLS0gCj4gVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2Vu dGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwKPiBhIExpbnV4 IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0Cj4gCgotLSAKU2VhbiBQYXVsLCBTb2Z0 d2FyZSBFbmdpbmVlciwgR29vZ2xlIC8gQ2hyb21pdW0gT1MKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==