From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH v8 1/2] drm/panel: Add support for Truly NT35597 panel driver Date: Fri, 21 Sep 2018 09:02:59 -0400 Message-ID: <20180921130259.GD72545@art_vandelay> References: <1537483957-22710-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: <1537483957-22710-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, linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, bjorn.andersson@linaro.org, robh+dt@kernel.org, seanpaul@chromium.org, hoegsberg@google.com, chandanu@codeaurora.org List-Id: linux-arm-msm@vger.kernel.org T24gVGh1LCBTZXAgMjAsIDIwMTggYXQgMDM6NTI6MzZQTSAtMDcwMCwgQWJoaW5hdiBLdW1hciB3 cm90ZToKPiBGcm9tOiAiYWJoaW5hdmtAY29kZWF1cm9yYS5vcmciIDxhYmhpbmF2a0Bjb2RlYXVy b3JhLm9yZz4KPiAKPiBBZGQgc3VwcG9ydCBmb3IgVHJ1bHkgTlQzNTU5NyBwYW5lbCBkcml2ZXIg dXNlZAo+IGluIE1TTSByZWZlcmVuY2UgcGxhdGZvcm1zLgo+IAo+IFRoaXMgcGFuZWwgZHJpdmVy IHN1cHBvcnRzIGJvdGggc2luZ2xlIERTSSBhbmQgZHVhbCBEU0kKPiBtb2Rlcy4KPiAKPiBIb3dl dmVyLCB0aGlzIHBhdGNoIHNlcmllcyBhZGRzIHN1cHBvcnQgb25seSBmb3IKPiBkdWFsIERTSSBt b2RlLgo+IAo+IENoYW5nZXMgaW4gdjg6Cj4gLSBSZW1vdmUgdmlkZW8gbW9kZSBjb25maWcgYW5k IGhlYWRlcnMKPiAtIFJlbW92ZSB1bnVzZWQgbWFjcm9zCj4gLSBUcnkgdG8gYXZvaWQgbXVsdGkt bGluZXMgd2hlcmV2ZXIgcG9zc2libGUKPiAtIEZpeCBjb21tZW50cyBsb2NhdGlvbnMgYW5kIG1h a2UgaXQgY29uY2lzZQo+IC0gRml4IHJldHVybiBwb2ludHMgaW4gcHJvYmUgZnVuY3Rpb24KPiAK PiBTaWduZWQtb2ZmLWJ5OiBBcmNoaXQgVGFuZWphIDxhcmNoaXR0QGNvZGVhdXJvcmEub3JnPgo+ IFNpZ25lZC1vZmYtYnk6IEFiaGluYXYgS3VtYXIgPGFiaGluYXZrQGNvZGVhdXJvcmEub3JnPgoK QWRkaW5nIENjOiByb2JoK2R0QGtlcm5lbC5vcmcgc28gUm9iIHNlZXMgaXQgaW4gaGlzIHBhdGNo d29yayBxdWV1ZS4KClNlYW4KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmln ICAgICAgICAgICAgICAgfCAgIDcgKwo+ICBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUg ICAgICAgICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXRydWx5 LW50MzU1OTcuYyB8IDY3NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDMgZmlsZXMg Y2hhbmdlZCwgNjg0IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9wYW5lbC9wYW5lbC10cnVseS1udDM1NTk3LmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZp Zwo+IGluZGV4IDYwMjBjMzAuLjA3M2ZmYTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L3BhbmVsL0tjb25maWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwo+IEBA IC0xODYsNCArMTg2LDExIEBAIGNvbmZpZyBEUk1fUEFORUxfU0lUUk9OSVhfU1Q3Nzg5Vgo+ICAJ ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgU2l0cm9u aXgKPiAgCSAgU1Q3Nzg5ViBjb250cm9sbGVyIGZvciAyNDB4MzIwIExDRCBwYW5lbHMKPiAgCj4g K2NvbmZpZyBEUk1fUEFORUxfVFJVTFlfTlQzNTU5N19XUVhHQQo+ICsJdHJpc3RhdGUgIlRydWx5 IFdRWEdBIgo+ICsJZGVwZW5kcyBvbiBPRgo+ICsJZGVwZW5kcyBvbiBEUk1fTUlQSV9EU0kKPiAr CWhlbHAKPiArCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3Ig VHJ1bHkgTlQzNTU5NyBXUVhHQSBEdWFsIERTSQo+ICsJICBWaWRlbyBNb2RlIHBhbmVsCj4gIGVu ZG1lbnUKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlIGIvZHJp dmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCj4gaW5kZXggNWNjYWFhOS4uODBmZDE5ZiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKPiBAQCAtMTksMyArMTksNCBAQCBvYmotJChDT05GSUdf RFJNX1BBTkVMX1NFSUtPXzQzV1ZGMUcpICs9IHBhbmVsLXNlaWtvLTQzd3ZmMWcubwo+ICBvYmot JChDT05GSUdfRFJNX1BBTkVMX1NIQVJQX0xRMTAxUjFTWDAxKSArPSBwYW5lbC1zaGFycC1scTEw MXIxc3gwMS5vCj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0hBUlBfTFMwNDNUMUxFMDEpICs9 IHBhbmVsLXNoYXJwLWxzMDQzdDFsZTAxLm8KPiAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TSVRS T05JWF9TVDc3ODlWKSArPSBwYW5lbC1zaXRyb25peC1zdDc3ODl2Lm8KPiArb2JqLSQoQ09ORklH X0RSTV9QQU5FTF9UUlVMWV9OVDM1NTk3X1dRWEdBKSArPSBwYW5lbC10cnVseS1udDM1NTk3Lm8K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXRydWx5LW50MzU1OTcu YyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC10cnVseS1udDM1NTk3LmMKPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmM5ZTA5ZTIKPiAtLS0gL2Rldi9udWxsCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXRydWx5LW50MzU1OTcuYwo+IEBAIC0w LDAgKzEsNjc2IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gKy8q Cj4gKyAqIENvcHlyaWdodCAoYykgMjAxOCwgVGhlIExpbnV4IEZvdW5kYXRpb24uIEFsbCByaWdo dHMgcmVzZXJ2ZWQuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIu aD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX2dyYXBoLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9yZWd1 bGF0b3IvY29uc3VtZXIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3BpbmN0cmwvY29uc3VtZXIuaD4K PiArI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgo+ICsKPiArI2luY2x1ZGUgPHZpZGVvL21p cGlfZGlzcGxheS5oPgo+ICsKPiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKyNpbmNsdWRlIDxk cm0vZHJtX3BhbmVsLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX21pcGlfZHNpLmg+Cj4gKwo+ICtz dGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHJlZ3VsYXRvcl9uYW1lc1tdID0gewo+ICsJInZkZGEi LAo+ICsJInZkaXNwcCIsCj4gKwkidmRpc3BuIiwKPiArfTsKPiArCj4gK3N0YXRpYyB1bnNpZ25l ZCBsb25nIGNvbnN0IHJlZ3VsYXRvcl9lbmFibGVfbG9hZHNbXSA9IHsKPiArCTYyMDAwLAo+ICsJ MTAwMDAwLAo+ICsJMTAwMDAwLAo+ICt9Owo+ICsKPiArc3RhdGljIHVuc2lnbmVkIGxvbmcgY29u c3QgcmVndWxhdG9yX2Rpc2FibGVfbG9hZHNbXSA9IHsKPiArCTgwLAo+ICsJMTAwLAo+ICsJMTAw LAo+ICt9Owo+ICsKPiArc3RydWN0IG50MzU1OTdfY29uZmlnIHsKPiArCXUzMiB3aWR0aF9tbTsK PiArCXUzMiBoZWlnaHRfbW07Cj4gKwljb25zdCBjaGFyICpwYW5lbF9uYW1lOwo+ICsJY29uc3Qg dm9pZCAqcGFuZWxfb25fY21kczsKPiArCXUzMiBudW1fb25fY21kczsKPiArCWNvbnN0IHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICpkbTsKPiArfTsKPiArCj4gK3N0cnVjdCB0cnVseV9udDM1NTk3 IHsKPiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPiArCXN0cnVjdCBkcm1fcGFuZWwgcGFuZWw7Cj4g Kwo+ICsJc3RydWN0IHJlZ3VsYXRvcl9idWxrX2RhdGEgc3VwcGxpZXNbQVJSQVlfU0laRShyZWd1 bGF0b3JfbmFtZXMpXTsKPiArCj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpyZXNldF9ncGlvOwo+ICsJ c3RydWN0IGdwaW9fZGVzYyAqbW9kZV9ncGlvOwo+ICsKPiArCXN0cnVjdCBiYWNrbGlnaHRfZGV2 aWNlICpiYWNrbGlnaHQ7Cj4gKwo+ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpWzJdOwo+ ICsKPiArCWNvbnN0IHN0cnVjdCBudDM1NTk3X2NvbmZpZyAqY29uZmlnOwo+ICsJYm9vbCBwcmVw YXJlZDsKPiArCWJvb2wgZW5hYmxlZDsKPiArfTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0 IHRydWx5X250MzU1OTcgKnBhbmVsX3RvX2N0eChzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiAr ewo+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihwYW5lbCwgc3RydWN0IHRydWx5X250MzU1OTcsIHBh bmVsKTsKPiArfQo+ICsKPiArc3RydWN0IGNtZF9zZXQgewo+ICsJdTggY29tbWFuZHNbNF07Cj4g Kwl1OCBzaXplOwo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBjbWRfc2V0IHFjb21fMmtfcGFu ZWxfbWFnaWNfY21kc1tdID0gewo+ICsJLyogQ01EMl9QMCAqLwo+ICsJeyB7IDB4ZmYsIDB4MjAg fSwgMiB9LAo+ICsJeyB7IDB4ZmIsIDB4MDEgfSwgMiB9LAo+ICsJeyB7IDB4MDAsIDB4MDEgfSwg MiB9LAo+ICsJeyB7IDB4MDEsIDB4NTUgfSwgMiB9LAo+ICsJeyB7IDB4MDIsIDB4NDUgfSwgMiB9 LAo+ICsJeyB7IDB4MDUsIDB4NDAgfSwgMiB9LAo+ICsJeyB7IDB4MDYsIDB4MTkgfSwgMiB9LAo+ ICsJeyB7IDB4MDcsIDB4MWUgfSwgMiB9LAo+ICsJeyB7IDB4MGIsIDB4NzMgfSwgMiB9LAo+ICsJ eyB7IDB4MGMsIDB4NzMgfSwgMiB9LAo+ICsJeyB7IDB4MGUsIDB4YjAgfSwgMiB9LAo+ICsJeyB7 IDB4MGYsIDB4YWUgfSwgMiB9LAo+ICsJeyB7IDB4MTEsIDB4YjggfSwgMiB9LAo+ICsJeyB7IDB4 MTMsIDB4MDAgfSwgMiB9LAo+ICsJeyB7IDB4NTgsIDB4ODAgfSwgMiB9LAo+ICsJeyB7IDB4NTks IDB4MDEgfSwgMiB9LAo+ICsJeyB7IDB4NWEsIDB4MDAgfSwgMiB9LAo+ICsJeyB7IDB4NWIsIDB4 MDEgfSwgMiB9LAo+ICsJeyB7IDB4NWMsIDB4ODAgfSwgMiB9LAo+ICsJeyB7IDB4NWQsIDB4ODEg fSwgMiB9LAo+ICsJeyB7IDB4NWUsIDB4MDAgfSwgMiB9LAo+ICsJeyB7IDB4NWYsIDB4MDEgfSwg MiB9LAo+ICsJeyB7IDB4NzIsIDB4MTEgfSwgMiB9LAo+ICsJeyB7IDB4NjgsIDB4MDMgfSwgMiB9 LAo+ICsJLyogQ01EMl9QNCAqLwo+ICsJeyB7IDB4RkYsIDB4MjQgfSwgMiB9LAo+ICsJeyB7IDB4 RkIsIDB4MDEgfSwgMiB9LAo+ICsJeyB7IDB4MDAsIDB4MUMgfSwgMiB9LAo+ICsJeyB7IDB4MDEs IDB4MEIgfSwgMiB9LAo+ICsJeyB7IDB4MDIsIDB4MEMgfSwgMiB9LAo+ICsJeyB7IDB4MDMsIDB4 MDEgfSwgMiB9LAo+ICsJeyB7IDB4MDQsIDB4MEYgfSwgMiB9LAo+ICsJeyB7IDB4MDUsIDB4MTAg fSwgMiB9LAo+ICsJeyB7IDB4MDYsIDB4MTAgfSwgMiB9LAo+ICsJeyB7IDB4MDcsIDB4MTAgfSwg MiB9LAo+ICsJeyB7IDB4MDgsIDB4ODkgfSwgMiB9LAo+ICsJeyB7IDB4MDksIDB4OEEgfSwgMiB9 LAo+ICsJeyB7IDB4MEEsIDB4MTMgfSwgMiB9LAo+ICsJeyB7IDB4MEIsIDB4MTMgfSwgMiB9LAo+ ICsJeyB7IDB4MEMsIDB4MTUgfSwgMiB9LAo+ICsJeyB7IDB4MEQsIDB4MTUgfSwgMiB9LAo+ICsJ eyB7IDB4MEUsIDB4MTcgfSwgMiB9LAo+ICsJeyB7IDB4MEYsIDB4MTcgfSwgMiB9LAo+ICsJeyB7 IDB4MTAsIDB4MUMgfSwgMiB9LAo+ICsJeyB7IDB4MTEsIDB4MEIgfSwgMiB9LAo+ICsJeyB7IDB4 MTIsIDB4MEMgfSwgMiB9LAo+ICsJeyB7IDB4MTMsIDB4MDEgfSwgMiB9LAo+ICsJeyB7IDB4MTQs IDB4MEYgfSwgMiB9LAo+ICsJeyB7IDB4MTUsIDB4MTAgfSwgMiB9LAo+ICsJeyB7IDB4MTYsIDB4 MTAgfSwgMiB9LAo+ICsJeyB7IDB4MTcsIDB4MTAgfSwgMiB9LAo+ICsJeyB7IDB4MTgsIDB4ODkg fSwgMiB9LAo+ICsJeyB7IDB4MTksIDB4OEEgfSwgMiB9LAo+ICsJeyB7IDB4MUEsIDB4MTMgfSwg MiB9LAo+ICsJeyB7IDB4MUIsIDB4MTMgfSwgMiB9LAo+ICsJeyB7IDB4MUMsIDB4MTUgfSwgMiB9 LAo+ICsJeyB7IDB4MUQsIDB4MTUgfSwgMiB9LAo+ICsJeyB7IDB4MUUsIDB4MTcgfSwgMiB9LAo+ ICsJeyB7IDB4MUYsIDB4MTcgfSwgMiB9LAo+ICsJLyogU1RWICovCj4gKwl7IHsgMHgyMCwgMHg0 MCB9LCAyIH0sCj4gKwl7IHsgMHgyMSwgMHgwMSB9LCAyIH0sCj4gKwl7IHsgMHgyMiwgMHgwMCB9 LCAyIH0sCj4gKwl7IHsgMHgyMywgMHg0MCB9LCAyIH0sCj4gKwl7IHsgMHgyNCwgMHg0MCB9LCAy IH0sCj4gKwl7IHsgMHgyNSwgMHg2RCB9LCAyIH0sCj4gKwl7IHsgMHgyNiwgMHg0MCB9LCAyIH0s Cj4gKwl7IHsgMHgyNywgMHg0MCB9LCAyIH0sCj4gKwkvKiBWZW5kICovCj4gKwl7IHsgMHhFMCwg MHgwMCB9LCAyIH0sCj4gKwl7IHsgMHhEQywgMHgyMSB9LCAyIH0sCj4gKwl7IHsgMHhERCwgMHgy MiB9LCAyIH0sCj4gKwl7IHsgMHhERSwgMHgwNyB9LCAyIH0sCj4gKwl7IHsgMHhERiwgMHgwNyB9 LCAyIH0sCj4gKwl7IHsgMHhFMywgMHg2RCB9LCAyIH0sCj4gKwl7IHsgMHhFMSwgMHgwNyB9LCAy IH0sCj4gKwl7IHsgMHhFMiwgMHgwNyB9LCAyIH0sCj4gKwkvKiBVRCAqLwo+ICsJeyB7IDB4Mjks IDB4RDggfSwgMiB9LAo+ICsJeyB7IDB4MkEsIDB4MkEgfSwgMiB9LAo+ICsJLyogQ0xLICovCj4g Kwl7IHsgMHg0QiwgMHgwMyB9LCAyIH0sCj4gKwl7IHsgMHg0QywgMHgxMSB9LCAyIH0sCj4gKwl7 IHsgMHg0RCwgMHgxMCB9LCAyIH0sCj4gKwl7IHsgMHg0RSwgMHgwMSB9LCAyIH0sCj4gKwl7IHsg MHg0RiwgMHgwMSB9LCAyIH0sCj4gKwl7IHsgMHg1MCwgMHgxMCB9LCAyIH0sCj4gKwl7IHsgMHg1 MSwgMHgwMCB9LCAyIH0sCj4gKwl7IHsgMHg1MiwgMHg4MCB9LCAyIH0sCj4gKwl7IHsgMHg1Mywg MHgwMCB9LCAyIH0sCj4gKwl7IHsgMHg1NiwgMHgwMCB9LCAyIH0sCj4gKwl7IHsgMHg1NCwgMHgw NyB9LCAyIH0sCj4gKwl7IHsgMHg1OCwgMHgwNyB9LCAyIH0sCj4gKwl7IHsgMHg1NSwgMHgyNSB9 LCAyIH0sCj4gKwkvKiBSZXNldCBYRE9OQiAqLwo+ICsJeyB7IDB4NUIsIDB4NDMgfSwgMiB9LAo+ ICsJeyB7IDB4NUMsIDB4MDAgfSwgMiB9LAo+ICsJeyB7IDB4NUYsIDB4NzMgfSwgMiB9LAo+ICsJ eyB7IDB4NjAsIDB4NzMgfSwgMiB9LAo+ICsJeyB7IDB4NjMsIDB4MjIgfSwgMiB9LAo+ICsJeyB7 IDB4NjQsIDB4MDAgfSwgMiB9LAo+ICsJeyB7IDB4NjcsIDB4MDggfSwgMiB9LAo+ICsJeyB7IDB4 NjgsIDB4MDQgfSwgMiB9LAo+ICsJLyogUmVzb2x1dGlvbjoxNDQweDI1NjAgKi8KPiArCXsgeyAw eDcyLCAweDAyIH0sIDIgfSwKPiArCS8qIG11eCAqLwo+ICsJeyB7IDB4N0EsIDB4ODAgfSwgMiB9 LAo+ICsJeyB7IDB4N0IsIDB4OTEgfSwgMiB9LAo+ICsJeyB7IDB4N0MsIDB4RDggfSwgMiB9LAo+ ICsJeyB7IDB4N0QsIDB4NjAgfSwgMiB9LAo+ICsJeyB7IDB4N0YsIDB4MTUgfSwgMiB9LAo+ICsJ eyB7IDB4NzUsIDB4MTUgfSwgMiB9LAo+ICsJLyogQUJPRkYgKi8KPiArCXsgeyAweEIzLCAweEMw IH0sIDIgfSwKPiArCXsgeyAweEI0LCAweDAwIH0sIDIgfSwKPiArCXsgeyAweEI1LCAweDAwIH0s IDIgfSwKPiArCS8qIFNvdXJjZSBFUSAqLwo+ICsJeyB7IDB4NzgsIDB4MDAgfSwgMiB9LAo+ICsJ eyB7IDB4NzksIDB4MDAgfSwgMiB9LAo+ICsJeyB7IDB4ODAsIDB4MDAgfSwgMiB9LAo+ICsJeyB7 IDB4ODMsIDB4MDAgfSwgMiB9LAo+ICsJLyogRlAgQlAgKi8KPiArCXsgeyAweDkzLCAweDBBIH0s IDIgfSwKPiArCXsgeyAweDk0LCAweDBBIH0sIDIgfSwKPiArCS8qIEludmVyc2lvbiBUeXBlICov Cj4gKwl7IHsgMHg4QSwgMHgwMCB9LCAyIH0sCj4gKwl7IHsgMHg5QiwgMHhGRiB9LCAyIH0sCj4g KwkvKiBJTUdTV0FQID0xIEBQb3J0U3dhcD0xICovCj4gKwl7IHsgMHg5RCwgMHhCMCB9LCAyIH0s Cj4gKwl7IHsgMHg5RiwgMHg2MyB9LCAyIH0sCj4gKwl7IHsgMHg5OCwgMHgxMCB9LCAyIH0sCj4g KwkvKiBGUk0gKi8KPiArCXsgeyAweEVDLCAweDAwIH0sIDIgfSwKPiArCS8qIENNRDEgKi8KPiAr CXsgeyAweEZGLCAweDEwIH0sIDIgfSwKPiArCS8qIFZCUCtWU0E9LFZGUCA9IDEwSCAqLwo+ICsJ eyB7IDB4M0IsIDB4MDMsIDB4MEEsIDB4MEEgfSwgNCB9LAo+ICsJLyogRlRFIG9uICovCj4gKwl7 IHsgMHgzNSwgMHgwMCB9LCAyIH0sCj4gKwkvKiBFTl9CSyA9MShhdXRvIGJsYWNrKSAqLwo+ICsJ eyB7IDB4RTUsIDB4MDEgfSwgMiB9LAo+ICsJLyogQ01EIG1vZGUoMTApIFZETyBtb2RlKDAzKSAq Lwo+ICsJeyB7IDB4QkIsIDB4MDMgfSwgMiB9LAo+ICsJLyogTm9uIFJlbG9hZCBNVFAgKi8KPiAr CXsgeyAweEZCLCAweDAxIH0sIDIgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgdHJ1bHlfZGNz X3dyaXRlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsLCB1MzIgY29tbWFuZCkKPiArewo+ICsJc3Ry dWN0IHRydWx5X250MzU1OTcgKmN0eCA9IHBhbmVsX3RvX2N0eChwYW5lbCk7Cj4gKwlpbnQgaSwg cmV0Owo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGN0eC0+ZHNpKTsgaSsrKSB7 Cj4gKwkJcmV0ID0gbWlwaV9kc2lfZGNzX3dyaXRlKGN0eC0+ZHNpW2ldLCBjb21tYW5kLCBOVUxM LCAwKTsKPiArCQlpZiAocmV0IDwgMCkgewo+ICsJCQlEUk1fREVWX0VSUk9SKGN0eC0+ZGV2LAo+ ICsJCQkJImNtZCAweCV4IGZhaWxlZCBmb3IgZHNpID0gJWRcbiIsCj4gKwkJCQljb21tYW5kLCBp KTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGlu dCB0cnVseV9kY3Nfd3JpdGVfYnVmKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsLAo+ICsJdTMyIHNp emUsIHU4ICpidWYpCj4gK3sKPiArCXN0cnVjdCB0cnVseV9udDM1NTk3ICpjdHggPSBwYW5lbF90 b19jdHgocGFuZWwpOwo+ICsJaW50IHJldCA9IDA7Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkg PSAwOyBpIDwgQVJSQVlfU0laRShjdHgtPmRzaSk7IGkrKykgewo+ICsJCXJldCA9IG1pcGlfZHNp X2Rjc193cml0ZV9idWZmZXIoY3R4LT5kc2lbaV0sIGJ1Ziwgc2l6ZSk7Cj4gKwkJaWYgKHJldCA8 IDApIHsKPiArCQkJRFJNX0RFVl9FUlJPUihjdHgtPmRldiwKPiArCQkJCSJmYWlsZWQgdG8gdHgg Y21kIFslZF0sIGVycjogJWRcbiIsIGksIHJldCk7Cj4gKwkJCXJldHVybiByZXQ7Cj4gKwkJfQo+ ICsJfQo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdHJ1bHlfMzU1 OTdfcG93ZXJfb24oc3RydWN0IHRydWx5X250MzU1OTcgKmN0eCkKPiArewo+ICsJaW50IHJldCwg aTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKTsgaSsr KSB7Cj4gKwkJcmV0ID0gcmVndWxhdG9yX3NldF9sb2FkKGN0eC0+c3VwcGxpZXNbaV0uY29uc3Vt ZXIsCj4gKwkJCQkJcmVndWxhdG9yX2VuYWJsZV9sb2Fkc1tpXSk7Cj4gKwkJaWYgKHJldCkKPiAr CQkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZXQgPSByZWd1bGF0b3JfYnVsa19lbmFibGUo QVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKSwgY3R4LT5zdXBwbGllcyk7Cj4gKwlpZiAocmV0IDwg MCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCS8qCj4gKwkgKiBSZXNldCBzZXF1ZW5jZSBvZiB0 cnVseSBwYW5lbCByZXF1aXJlcyB0aGUgcGFuZWwgdG8gYmUKPiArCSAqIG91dCBvZiByZXNldCBm b3IgMTBtcywgZm9sbG93ZWQgYnkgYmVpbmcgaGVsZCBpbiByZXNldAo+ICsJICogZm9yIDEwbXMg YW5kIHRoZW4gb3V0IGFnYWluCj4gKwkgKi8KPiArCWdwaW9kX3NldF92YWx1ZShjdHgtPnJlc2V0 X2dwaW8sIDApOwo+ICsJdXNsZWVwX3JhbmdlKDEwMDAwLCAyMDAwMCk7Cj4gKwlncGlvZF9zZXRf dmFsdWUoY3R4LT5yZXNldF9ncGlvLCAxKTsKPiArCXVzbGVlcF9yYW5nZSgxMDAwMCwgMjAwMDAp Owo+ICsJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+cmVzZXRfZ3BpbywgMCk7Cj4gKwo+ICsJcmV0dXJu IDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdHJ1bHlfbnQzNTU5N19wb3dlcl9vZmYoc3RydWN0 IHRydWx5X250MzU1OTcgKmN0eCkKPiArewo+ICsJaW50IHJldCA9IDA7Cj4gKwlpbnQgaTsKPiAr Cj4gKwlncGlvZF9zZXRfdmFsdWUoY3R4LT5yZXNldF9ncGlvLCAxKTsKPiArCj4gKwlmb3IgKGkg PSAwOyBpIDwgQVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKTsgaSsrKSB7Cj4gKwkJcmV0ID0gcmVn dWxhdG9yX3NldF9sb2FkKGN0eC0+c3VwcGxpZXNbaV0uY29uc3VtZXIsCj4gKwkJCQlyZWd1bGF0 b3JfZGlzYWJsZV9sb2Fkc1tpXSk7Cj4gKwkJaWYgKHJldCkgewo+ICsJCQlEUk1fREVWX0VSUk9S KGN0eC0+ZGV2LAo+ICsJCQkJInJlZ3VsYXRvcl9zZXRfbG9hZCBmYWlsZWQgJWRcbiIsIHJldCk7 Cj4gKwkJCXJldHVybiByZXQ7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXJldCA9IHJlZ3VsYXRvcl9i dWxrX2Rpc2FibGUoQVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKSwgY3R4LT5zdXBwbGllcyk7Cj4g KwlpZiAocmV0KSB7Cj4gKwkJRFJNX0RFVl9FUlJPUihjdHgtPmRldiwKPiArCQkJInJlZ3VsYXRv cl9idWxrX2Rpc2FibGUgZmFpbGVkICVkXG4iLCByZXQpOwo+ICsJfQo+ICsJcmV0dXJuIHJldDsK PiArfQo+ICsKPiArc3RhdGljIGludCB0cnVseV9udDM1NTk3X2Rpc2FibGUoc3RydWN0IGRybV9w YW5lbCAqcGFuZWwpCj4gK3sKPiArCXN0cnVjdCB0cnVseV9udDM1NTk3ICpjdHggPSBwYW5lbF90 b19jdHgocGFuZWwpOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoIWN0eC0+ZW5hYmxlZCkKPiAr CQlyZXR1cm4gMDsKPiArCj4gKwlpZiAoY3R4LT5iYWNrbGlnaHQpIHsKPiArCQlyZXQgPSBiYWNr bGlnaHRfZGlzYWJsZShjdHgtPmJhY2tsaWdodCk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCURS TV9ERVZfRVJST1IoY3R4LT5kZXYsICJiYWNrbGlnaHQgZGlzYWJsZSBmYWlsZWQgJWRcbiIsCj4g KwkJCQlyZXQpOwo+ICsJfQo+ICsKPiArCWN0eC0+ZW5hYmxlZCA9IGZhbHNlOwo+ICsJcmV0dXJu IDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdHJ1bHlfbnQzNTU5N191bnByZXBhcmUoc3RydWN0 IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXN0cnVjdCB0cnVseV9udDM1NTk3ICpjdHggPSBw YW5lbF90b19jdHgocGFuZWwpOwo+ICsJaW50IHJldCA9IDA7Cj4gKwo+ICsJaWYgKCFjdHgtPnBy ZXBhcmVkKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWN0eC0+ZHNpWzBdLT5tb2RlX2ZsYWdzID0g MDsKPiArCWN0eC0+ZHNpWzFdLT5tb2RlX2ZsYWdzID0gMDsKPiArCj4gKwlyZXQgPSB0cnVseV9k Y3Nfd3JpdGUocGFuZWwsIE1JUElfRENTX1NFVF9ESVNQTEFZX09GRik7Cj4gKwlpZiAocmV0IDwg MCkgewo+ICsJCURSTV9ERVZfRVJST1IoY3R4LT5kZXYsCj4gKwkJCSJzZXRfZGlzcGxheV9vZmYg Y21kIGZhaWxlZCByZXQgPSAlZFxuIiwKPiArCQkJcmV0KTsKPiArCX0KPiArCj4gKwkvKiAxMjBt cyBkZWxheSByZXF1aXJlZCBoZXJlIGFzIHBlciBEQ1Mgc3BlYyAqLwo+ICsJbXNsZWVwKDEyMCk7 Cj4gKwo+ICsJcmV0ID0gdHJ1bHlfZGNzX3dyaXRlKHBhbmVsLCBNSVBJX0RDU19FTlRFUl9TTEVF UF9NT0RFKTsKPiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJRFJNX0RFVl9FUlJPUihjdHgtPmRldiwK PiArCQkJImVudGVyX3NsZWVwIGNtZCBmYWlsZWQgcmV0ID0gJWRcbiIsIHJldCk7Cj4gKwl9Cj4g Kwo+ICsJcmV0ID0gdHJ1bHlfbnQzNTU5N19wb3dlcl9vZmYoY3R4KTsKPiArCWlmIChyZXQgPCAw KQo+ICsJCURSTV9ERVZfRVJST1IoY3R4LT5kZXYsICJwb3dlcl9vZmYgZmFpbGVkIHJldCA9ICVk XG4iLCByZXQpOwo+ICsKPiArCWN0eC0+cHJlcGFyZWQgPSBmYWxzZTsKPiArCXJldHVybiByZXQ7 Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdHJ1bHlfbnQzNTU5N19wcmVwYXJlKHN0cnVjdCBkcm1f cGFuZWwgKnBhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgdHJ1bHlfbnQzNTU5NyAqY3R4ID0gcGFuZWxf dG9fY3R4KHBhbmVsKTsKPiArCWludCByZXQ7Cj4gKwlpbnQgaTsKPiArCXN0cnVjdCBjbWRfc2V0 ICpwYW5lbF9vbl9jbWRzOwo+ICsJY29uc3Qgc3RydWN0IG50MzU1OTdfY29uZmlnICpjb25maWc7 Cj4gKwl1MzIgbnVtX2NtZHM7Cj4gKwo+ICsJaWYgKGN0eC0+cHJlcGFyZWQpCj4gKwkJcmV0dXJu IDA7Cj4gKwo+ICsJcmV0ID0gdHJ1bHlfMzU1OTdfcG93ZXJfb24oY3R4KTsKPiArCWlmIChyZXQg PCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJY3R4LT5kc2lbMF0tPm1vZGVfZmxhZ3MgfD0g TUlQSV9EU0lfTU9ERV9MUE07Cj4gKwljdHgtPmRzaVsxXS0+bW9kZV9mbGFncyB8PSBNSVBJX0RT SV9NT0RFX0xQTTsKPiArCj4gKwljb25maWcgPSBjdHgtPmNvbmZpZzsKPiArCXBhbmVsX29uX2Nt ZHMgPSAoc3RydWN0IGNtZF9zZXQgKiljb25maWctPnBhbmVsX29uX2NtZHM7Cj4gKwludW1fY21k cyA9IGNvbmZpZy0+bnVtX29uX2NtZHM7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IG51bV9jbWRz OyBpKyspIHsKPiArCQlyZXQgPSB0cnVseV9kY3Nfd3JpdGVfYnVmKHBhbmVsLAo+ICsJCQkJcGFu ZWxfb25fY21kc1tpXS5zaXplLAo+ICsJCQkJCXBhbmVsX29uX2NtZHNbaV0uY29tbWFuZHMpOwo+ ICsJCWlmIChyZXQgPCAwKSB7Cj4gKwkJCURSTV9ERVZfRVJST1IoY3R4LT5kZXYsCj4gKwkJCQki Y21kIHNldCB0eCBmYWlsZWQgaSA9ICVkIHJldCA9ICVkXG4iLAo+ICsJCQkJCWksIHJldCk7Cj4g KwkJCWdvdG8gcG93ZXJfb2ZmOwo+ICsJCX0KPiArCX0KPiArCj4gKwlyZXQgPSB0cnVseV9kY3Nf d3JpdGUocGFuZWwsIE1JUElfRENTX0VYSVRfU0xFRVBfTU9ERSk7Cj4gKwlpZiAocmV0IDwgMCkg ewo+ICsJCURSTV9ERVZfRVJST1IoY3R4LT5kZXYsCj4gKwkJCSJleGl0X3NsZWVwX21vZGUgY21k IGZhaWxlZCByZXQgPSAlZFxuIiwKPiArCQkJcmV0KTsKPiArCQlnb3RvIHBvd2VyX29mZjsKPiAr CX0KPiArCj4gKwkvKiBQZXIgRFNJIHNwZWMgd2FpdCAxMjBtcyBhZnRlciBzZW5kaW5nIGV4aXQg c2xlZXAgRENTIGNvbW1hbmQgKi8KPiArCW1zbGVlcCgxMjApOwo+ICsKPiArCXJldCA9IHRydWx5 X2Rjc193cml0ZShwYW5lbCwgTUlQSV9EQ1NfU0VUX0RJU1BMQVlfT04pOwo+ICsJaWYgKHJldCA8 IDApIHsKPiArCQlEUk1fREVWX0VSUk9SKGN0eC0+ZGV2LAo+ICsJCQkic2V0X2Rpc3BsYXlfb24g Y21kIGZhaWxlZCByZXQgPSAlZFxuIiwgcmV0KTsKPiArCQlnb3RvIHBvd2VyX29mZjsKPiArCX0K PiArCj4gKwkvKiBQZXIgRFNJIHNwZWMgd2FpdCAxMjBtcyBhZnRlciBzZW5kaW5nIHNldF9kaXNw bGF5X29uIERDUyBjb21tYW5kICovCj4gKwltc2xlZXAoMTIwKTsKPiArCj4gKwljdHgtPnByZXBh cmVkID0gdHJ1ZTsKPiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK3Bvd2VyX29mZjoKPiArCWlmICh0 cnVseV9udDM1NTk3X3Bvd2VyX29mZihjdHgpKQo+ICsJCURSTV9ERVZfRVJST1IoY3R4LT5kZXYs ICJwb3dlcl9vZmYgZmFpbGVkXG4iKTsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgdHJ1bHlfbnQzNTU5N19lbmFibGUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sK PiArCXN0cnVjdCB0cnVseV9udDM1NTk3ICpjdHggPSBwYW5lbF90b19jdHgocGFuZWwpOwo+ICsJ aW50IHJldDsKPiArCj4gKwlpZiAoY3R4LT5lbmFibGVkKQo+ICsJCXJldHVybiAwOwo+ICsKPiAr CWlmIChjdHgtPmJhY2tsaWdodCkgewo+ICsJCXJldCA9IGJhY2tsaWdodF9lbmFibGUoY3R4LT5i YWNrbGlnaHQpOwo+ICsJCWlmIChyZXQgPCAwKQo+ICsJCQlEUk1fREVWX0VSUk9SKGN0eC0+ZGV2 LCAiYmFja2xpZ2h0IGVuYWJsZSBmYWlsZWQgJWRcbiIsCj4gKwkJCQkJCSAgcmV0KTsKPiArCX0K PiArCj4gKwljdHgtPmVuYWJsZWQgPSB0cnVlOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW50IHRydWx5X250MzU1OTdfZ2V0X21vZGVzKHN0cnVjdCBkcm1fcGFuZWwgKnBh bmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gcGFuZWwtPmNv bm5lY3RvcjsKPiArCXN0cnVjdCB0cnVseV9udDM1NTk3ICpjdHggPSBwYW5lbF90b19jdHgocGFu ZWwpOwo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7Cj4gKwljb25zdCBzdHJ1Y3Qg bnQzNTU5N19jb25maWcgKmNvbmZpZzsKPiArCj4gKwljb25maWcgPSBjdHgtPmNvbmZpZzsKPiAr CW1vZGUgPSBkcm1fbW9kZV9jcmVhdGUoY29ubmVjdG9yLT5kZXYpOwo+ICsJaWYgKCFtb2RlKSB7 Cj4gKwkJRFJNX0RFVl9FUlJPUihjdHgtPmRldiwKPiArCQkJImZhaWxlZCB0byBjcmVhdGUgYSBu ZXcgZGlzcGxheSBtb2RlXG4iKTsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArCj4gKwljb25uZWN0 b3ItPmRpc3BsYXlfaW5mby53aWR0aF9tbSA9IGNvbmZpZy0+d2lkdGhfbW07Cj4gKwljb25uZWN0 b3ItPmRpc3BsYXlfaW5mby5oZWlnaHRfbW0gPSBjb25maWctPmhlaWdodF9tbTsKPiArCWRybV9t b2RlX2NvcHkobW9kZSwgY29uZmlnLT5kbSk7Cj4gKwltb2RlLT50eXBlID0gRFJNX01PREVfVFlQ RV9EUklWRVIgfCBEUk1fTU9ERV9UWVBFX1BSRUZFUlJFRDsKPiArCWRybV9tb2RlX3Byb2JlZF9h ZGQoY29ubmVjdG9yLCBtb2RlKTsKPiArCj4gKwlyZXR1cm4gMTsKPiArfQo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fcGFuZWxfZnVuY3MgdHJ1bHlfbnQzNTU5N19kcm1fZnVuY3MgPSB7 Cj4gKwkuZGlzYWJsZSA9IHRydWx5X250MzU1OTdfZGlzYWJsZSwKPiArCS51bnByZXBhcmUgPSB0 cnVseV9udDM1NTk3X3VucHJlcGFyZSwKPiArCS5wcmVwYXJlID0gdHJ1bHlfbnQzNTU5N19wcmVw YXJlLAo+ICsJLmVuYWJsZSA9IHRydWx5X250MzU1OTdfZW5hYmxlLAo+ICsJLmdldF9tb2RlcyA9 IHRydWx5X250MzU1OTdfZ2V0X21vZGVzLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCB0cnVseV9u dDM1NTk3X3BhbmVsX2FkZChzdHJ1Y3QgdHJ1bHlfbnQzNTU5NyAqY3R4KQo+ICt7Cj4gKwlzdHJ1 Y3QgZGV2aWNlICpkZXYgPSBjdHgtPmRldjsKPiArCWludCByZXQsIGk7Cj4gKwljb25zdCBzdHJ1 Y3QgbnQzNTU5N19jb25maWcgKmNvbmZpZzsKPiArCj4gKwljb25maWcgPSBjdHgtPmNvbmZpZzsK PiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMpOyBpKyspCj4gKwkJ Y3R4LT5zdXBwbGllc1tpXS5zdXBwbHkgPSByZWd1bGF0b3JfbmFtZXNbaV07Cj4gKwo+ICsJcmV0 ID0gZGV2bV9yZWd1bGF0b3JfYnVsa19nZXQoZGV2LCBBUlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMp LAo+ICsJCQkJICAgICAgY3R4LT5zdXBwbGllcyk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1 cm4gcmV0Owo+ICsKPiArCWN0eC0+cmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgInJl c2V0IiwgR1BJT0RfT1VUX0xPVyk7Cj4gKwlpZiAoSVNfRVJSKGN0eC0+cmVzZXRfZ3BpbykpIHsK PiArCQlEUk1fREVWX0VSUk9SKGRldiwgImNhbm5vdCBnZXQgcmVzZXQgZ3BpbyAlbGRcbiIsCj4g KwkJCVBUUl9FUlIoY3R4LT5yZXNldF9ncGlvKSk7Cj4gKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5y ZXNldF9ncGlvKTsKPiArCX0KPiArCj4gKwljdHgtPm1vZGVfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0 KGRldiwgIm1vZGUiLCBHUElPRF9PVVRfTE9XKTsKPiArCWlmIChJU19FUlIoY3R4LT5tb2RlX2dw aW8pKSB7Cj4gKwkJRFJNX0RFVl9FUlJPUihkZXYsICJjYW5ub3QgZ2V0IG1vZGUgZ3BpbyAlbGRc biIsCj4gKwkJCVBUUl9FUlIoY3R4LT5tb2RlX2dwaW8pKTsKPiArCQlyZXR1cm4gUFRSX0VSUihj dHgtPm1vZGVfZ3Bpbyk7Cj4gKwl9Cj4gKwo+ICsJLyogZHVhbCBwb3J0ICovCj4gKwlncGlvZF9z ZXRfdmFsdWUoY3R4LT5tb2RlX2dwaW8sIDApOwo+ICsKPiArCWRybV9wYW5lbF9pbml0KCZjdHgt PnBhbmVsKTsKPiArCWN0eC0+cGFuZWwuZGV2ID0gZGV2Owo+ICsJY3R4LT5wYW5lbC5mdW5jcyA9 ICZ0cnVseV9udDM1NTk3X2RybV9mdW5jczsKPiArCWRybV9wYW5lbF9hZGQoJmN0eC0+cGFuZWwp Owo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgcWNvbV9zZG04NDVfbXRwXzJrX21vZGUgPSB7Cj4gKwkubmFtZSA9ICIxNDQw eDI1NjAiLAo+ICsJLmNsb2NrID0gMjY4MzE2LAo+ICsJLmhkaXNwbGF5ID0gMTQ0MCwKPiArCS5o c3luY19zdGFydCA9IDE0NDAgKyAyMDAsCj4gKwkuaHN5bmNfZW5kID0gMTQ0MCArIDIwMCArIDMy LAo+ICsJLmh0b3RhbCA9IDE0NDAgKyAyMDAgKyAzMiArIDY0LAo+ICsJLnZkaXNwbGF5ID0gMjU2 MCwKPiArCS52c3luY19zdGFydCA9IDI1NjAgKyA4LAo+ICsJLnZzeW5jX2VuZCA9IDI1NjAgKyA4 ICsgMSwKPiArCS52dG90YWwgPSAyNTYwICsgOCArIDEgKyA3LAo+ICsJLnZyZWZyZXNoID0gNjAs Cj4gKwkuZmxhZ3MgPSAwLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBudDM1NTk3 X2NvbmZpZyBudDM1NTk3X2RpciA9IHsKPiArCS53aWR0aF9tbSA9IDc0LAo+ICsJLmhlaWdodF9t bSA9IDEzMSwKPiArCS5wYW5lbF9uYW1lID0gInFjb21fc2RtODQ1X210cF8ya19wYW5lbCIsCj4g KwkuZG0gPSAmcWNvbV9zZG04NDVfbXRwXzJrX21vZGUsCj4gKwkucGFuZWxfb25fY21kcyA9IHFj b21fMmtfcGFuZWxfbWFnaWNfY21kcywKPiArCS5udW1fb25fY21kcyA9IEFSUkFZX1NJWkUocWNv bV8ya19wYW5lbF9tYWdpY19jbWRzKSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgdHJ1bHlfbnQz NTU5N19wcm9iZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCj4gK3sKPiArCXN0cnVjdCBk ZXZpY2UgKmRldiA9ICZkc2ktPmRldjsKPiArCXN0cnVjdCB0cnVseV9udDM1NTk3ICpjdHg7Cj4g KwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kxX2RldmljZTsKPiArCXN0cnVjdCBkZXZpY2Vf bm9kZSAqZHNpMTsKPiArCXN0cnVjdCBtaXBpX2RzaV9ob3N0ICpkc2kxX2hvc3Q7Cj4gKwlzdHJ1 Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2lfZGV2Owo+ICsJaW50IHJldCA9IDA7Cj4gKwlpbnQgaTsK PiArCj4gKwljb25zdCBzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlX2luZm8gaW5mbyA9IHsKPiArCQku dHlwZSA9ICJ0cnVseW50MzU1OTciLAo+ICsJCS5jaGFubmVsID0gMCwKPiArCQkubm9kZSA9IE5V TEwsCj4gKwl9Owo+ICsKPiArCWN0eCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqY3R4KSwg R0ZQX0tFUk5FTCk7Cj4gKwo+ICsJaWYgKCFjdHgpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ ICsJLyoKPiArCSAqIFRoaXMgZGV2aWNlIHJlcHJlc2VudHMgaXRzZWxmIGFzIG9uZSB3aXRoCj4g KwkgKiB0d28gaW5wdXQgcG9ydHMgd2hpY2ggYXJlIGZlZCBieSB0aGUgb3V0cHV0Cj4gKwkgKiBw b3J0cyBvZiB0aGUgdHdvIERTSSBjb250cm9sbGVycyAuIFRoZSBEU0kwCj4gKwkgKiBpcyB0aGUg bWFzdGVyIGNvbnRyb2xsZXIgYW5kIGhhcyBtb3N0IG9mIHRoZQo+ICsJICogcGFuZWwgcmVsYXRl ZCBpbmZvIGluIGl0cyBjaGlsZCBub2RlLgo+ICsJICovCj4gKwo+ICsJY3R4LT5jb25maWcgPSBv Zl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsKPiArCj4gKwlpZiAoIWN0eC0+Y29uZmlnKSB7 Cj4gKwkJZGV2X2VycihkZXYsICJtaXNzaW5nIGRldmljZSBjb25maWd1cmF0aW9uXG4iKTsKPiAr CQlyZXR1cm4gLUVOT0RFVjsKPiArCX0KPiArCj4gKwlkc2kxID0gb2ZfZ3JhcGhfZ2V0X3JlbW90 ZV9ub2RlKGRzaS0+ZGV2Lm9mX25vZGUsIDEsIC0xKTsKPiArCWlmICghZHNpMSkgewo+ICsJCURS TV9ERVZfRVJST1IoZGV2LAo+ICsJCQkiZmFpbGVkIHRvIGdldCByZW1vdGUgbm9kZSBmb3IgZHNp MV9kZXZpY2VcbiIpOwo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsJfQo+ICsKPiArCWRzaTFfaG9z dCA9IG9mX2ZpbmRfbWlwaV9kc2lfaG9zdF9ieV9ub2RlKGRzaTEpOwo+ICsJb2Zfbm9kZV9wdXQo ZHNpMSk7Cj4gKwlpZiAoIWRzaTFfaG9zdCkgewo+ICsJCURSTV9ERVZfRVJST1IoZGV2LCAiZmFp bGVkIHRvIGZpbmQgZHNpIGhvc3RcbiIpOwo+ICsJCXJldHVybiAtRVBST0JFX0RFRkVSOwo+ICsJ fQo+ICsKPiArCS8qIHJlZ2lzdGVyIHRoZSBzZWNvbmQgRFNJIGRldmljZSAqLwo+ICsJZHNpMV9k ZXZpY2UgPSBtaXBpX2RzaV9kZXZpY2VfcmVnaXN0ZXJfZnVsbChkc2kxX2hvc3QsICZpbmZvKTsK PiArCWlmIChJU19FUlIoZHNpMV9kZXZpY2UpKSB7Cj4gKwkJRFJNX0RFVl9FUlJPUihkZXYsICJm YWlsZWQgdG8gY3JlYXRlIGRzaSBkZXZpY2VcbiIpOwo+ICsJCXJldHVybiBQVFJfRVJSKGRzaSk7 Cj4gKwl9Cj4gKwo+ICsJbWlwaV9kc2lfc2V0X2RydmRhdGEoZHNpLCBjdHgpOwo+ICsKPiArCWN0 eC0+ZGV2ID0gZGV2Owo+ICsJY3R4LT5kc2lbMF0gPSBkc2k7Cj4gKwljdHgtPmRzaVsxXSA9IGRz aTFfZGV2aWNlOwo+ICsKPiArCXJldCA9IHRydWx5X250MzU1OTdfcGFuZWxfYWRkKGN0eCk7Cj4g KwlpZiAocmV0KSB7Cj4gKwkJRFJNX0RFVl9FUlJPUihkZXYsICJmYWlsZWQgdG8gYWRkIHBhbmVs XG4iKTsKPiArCQlnb3RvIGVycl9wYW5lbF9hZGQ7Cj4gKwl9Cj4gKwo+ICsJZm9yIChpID0gMDsg aSA8IEFSUkFZX1NJWkUoY3R4LT5kc2kpOyBpKyspIHsKPiArCQlkc2lfZGV2ID0gY3R4LT5kc2lb aV07Cj4gKwkJZHNpX2Rldi0+bGFuZXMgPSA0Owo+ICsJCWRzaV9kZXYtPmZvcm1hdCA9IE1JUElf RFNJX0ZNVF9SR0I4ODg7Cj4gKwkJZHNpX2Rldi0+bW9kZV9mbGFncyA9IE1JUElfRFNJX01PREVf VklERU8gfCBNSVBJX0RTSV9NT0RFX0xQTSB8Cj4gKwkJCU1JUElfRFNJX0NMT0NLX05PTl9DT05U SU5VT1VTOwo+ICsJCXJldCA9IG1pcGlfZHNpX2F0dGFjaChkc2lfZGV2KTsKPiArCQlpZiAocmV0 IDwgMCkgewo+ICsJCQlEUk1fREVWX0VSUk9SKGRldiwKPiArCQkJCSJkc2kgYXR0YWNoIGZhaWxl ZCBpID0gJWRcbiIsIGkpOwo+ICsJCQkJZ290byBlcnJfZHNpX2F0dGFjaDsKPiArCQl9Cj4gKwl9 Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtlcnJfZHNpX2F0dGFjaDoKPiArCWRybV9wYW5lbF9y ZW1vdmUoJmN0eC0+cGFuZWwpOwo+ICtlcnJfcGFuZWxfYWRkOgo+ICsJbWlwaV9kc2lfZGV2aWNl X3VucmVnaXN0ZXIoZHNpMV9kZXZpY2UpOwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3Rh dGljIGludCB0cnVseV9udDM1NTk3X3JlbW92ZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kp Cj4gK3sKPiArCXN0cnVjdCB0cnVseV9udDM1NTk3ICpjdHggPSBtaXBpX2RzaV9nZXRfZHJ2ZGF0 YShkc2kpOwo+ICsKPiArCWlmIChjdHgtPmRzaVswXSkKPiArCQltaXBpX2RzaV9kZXRhY2goY3R4 LT5kc2lbMF0pOwo+ICsJaWYgKGN0eC0+ZHNpWzFdKSB7Cj4gKwkJbWlwaV9kc2lfZGV0YWNoKGN0 eC0+ZHNpWzFdKTsKPiArCQltaXBpX2RzaV9kZXZpY2VfdW5yZWdpc3RlcihjdHgtPmRzaVsxXSk7 Cj4gKwl9Cj4gKwo+ICsJZHJtX3BhbmVsX3JlbW92ZSgmY3R4LT5wYW5lbCk7Cj4gKwlyZXR1cm4g MDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdHJ1bHlfbnQz NTU5N19vZl9tYXRjaFtdID0gewo+ICsJewkuY29tcGF0aWJsZSA9ICJ0cnVseSxudDM1NTk3LTJL LWRpc3BsYXkiLAo+ICsJCS5kYXRhID0gJm50MzU1OTdfZGlyLAo+ICsJfSwKPiArCj4gKwl7IH0K PiArfTsKPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdHJ1bHlfbnQzNTU5N19vZl9tYXRjaCk7 Cj4gKwo+ICtzdGF0aWMgc3RydWN0IG1pcGlfZHNpX2RyaXZlciB0cnVseV9udDM1NTk3X2RyaXZl ciA9IHsKPiArCS5kcml2ZXIgPSB7Cj4gKwkJLm5hbWUgPSAicGFuZWxfdHJ1bHlfbnQzNTU5NyIs Cj4gKwkJLm9mX21hdGNoX3RhYmxlID0gdHJ1bHlfbnQzNTU5N19vZl9tYXRjaCwKPiArCX0sCj4g KwkucHJvYmUgPSB0cnVseV9udDM1NTk3X3Byb2JlLAo+ICsJLnJlbW92ZSA9IHRydWx5X250MzU1 OTdfcmVtb3ZlLAo+ICt9Owo+ICttb2R1bGVfbWlwaV9kc2lfZHJpdmVyKHRydWx5X250MzU1OTdf ZHJpdmVyKTsKPiArCj4gK01PRFVMRV9ERVNDUklQVElPTigiVHJ1bHkgTlQzNTU5NyBEU0kgUGFu ZWwgRHJpdmVyIik7Cj4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKPiAtLSAKPiBUaGUgUXVh bGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgdGhlIENvZGUgQXVy b3JhIEZvcnVtLAo+IGEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKPiAK Ci0tIApTZWFuIFBhdWwsIFNvZnR3YXJlIEVuZ2luZWVyLCBHb29nbGUgLyBDaHJvbWl1bSBPUwpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK