From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Subject: Re: [RESEND][PATCH] drm/panel: Add JDI LT070ME05000 WUXGA DSI Panel Date: Thu, 14 Apr 2016 12:15:00 -0500 Message-ID: <20160414171500.GA11505@rob-hp-laptop> References: <1460528887-22915-1-git-send-email-simhavcs@gmail.com> <1460630869-21853-1-git-send-email-simhavcs@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1460630869-21853-1-git-send-email-simhavcs@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Vinay Simha BN Cc: Mark Rutland , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , Pawel Moll , Ian Campbell , "open list:DRM PANEL DRIVERS" , open list , Ralf Baechle , Jonathan Cameron , Kumar Gala , Shawn Guo , Archit Taneja List-Id: devicetree@vger.kernel.org T24gVGh1LCBBcHIgMTQsIDIwMTYgYXQgMDQ6MTc6NDVQTSArMDUzMCwgVmluYXkgU2ltaGEgQk4g d3JvdGU6Cj4gQWRkIHN1cHBvcnQgZm9yIHRoZSBKREkgbHQwNzBtZTA1MDAwIFdVWEdBIERTSSBw YW5lbCB1c2VkIGluCj4gTmV4dXMgNyAyMDEzIGRldmljZXMuCj4gCj4gUHJvZ3JhbW1pbmcgc2Vx dWVuY2UgZm9yIHRoZSBwYW5lbCBpcyB3YXMgb3JpZ2luYWxseSBmb3VuZCBpbiB0aGUKPiBhbmRy b2lkLW1zbS1mbG8tMy40LWxvbGxpcG9wLXJlbGVhc2UgYnJhbmNoIGZyb206Cj4gICAgIGh0dHBz Oi8vYW5kcm9pZC5nb29nbGVzb3VyY2UuY29tL2tlcm5lbC9tc20uZ2l0Cj4gCj4gQW5kIHZpZGVv IG1vZGUgc2V0dGluZyBpcyBmcm9tIGRzaS1wYW5lbC1qZGktZHVhbG1pcGkxLXZpZGVvLmR0c2kK PiBmaWxlIGluOgo+ICAgICBnaXQ6Ly9jb2RlYXVyb3JhLm9yZy9rZXJuZWwvbXNtLTMuMTAuZ2l0 ICBMTlguTEEuMy42X3JiMS4yNwo+IAo+IE90aGVyIGZpeGVzIGZvbGRlZCBpbiB3ZXJlIHByb3Zp ZGVkCj4gYnkgQXJjaGl0IFRhbmVqYSA8YXJjaGl0LnRhbmVqYUBnbWFpbC5jb20+Cj4gCj4gQ2M6 IEFyY2hpdCBUYW5lamEgPGFyY2hpdC50YW5lamFAZ21haWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6 IFZpbmF5IFNpbWhhIEJOIDxzaW1oYXZjc0BnbWFpbC5jb20+Cj4gW3N1bWl0LnNlbXdhbDogUG9y dGVkIHRvIHRoZSBkcm0vcGFuZWwgZnJhbWV3b3JrXQo+IFNpZ25lZC1vZmYtYnk6IFN1bWl0IFNl bXdhbCA8c3VtaXQuc2Vtd2FsQGxpbmFyby5vcmc+Cj4gW2pzdHVsdHo6IENoZXJyeS1waWNrZWQg dG8gbWFpbmxpbmUsIGZvbGRlZCBkb3duIG90aGVyIGZpeGVzCj4gIGZyb20gVmluYXkgYW5kIEFy Y2hpdF0KPiBTaWduZWQtb2ZmLWJ5OiBKb2huIFN0dWx0eiA8am9obi5zdHVsdHpAbGluYXJvLm9y Zz4KPiBBY2tlZC1ieTogSm9obiBTdHVsdHogPGpvaG4uc3R1bHR6QGxpbmFyby5vcmc+Cj4gW3Zp bmF5IHNpbWhhIGJuOiBhZGRlZCBpbnRlcmZhY2Ugc2V0dGluZyBjbWQgbW9kZSwgY21kIG9yIHZp ZGVvCj4gbW9kZSBwYW5lbCBzZXR0aW5nIHNlbGVjdGlvbiBpbiBwYW5lbF9pbml0IGJhc2VkIG9u IG1vZGVfZmxhZ3NdCj4gU2lnbmVkLW9mZi1ieTogVmluYXkgU2ltaGEgQk4gPHNpbWhhdmNzQGdt YWlsLmNvbT4KPiAtLS0KPiAgLi4uL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvamRpLGx0MDcwbWUw NTAwMC50eHQgICAgfCAgMjcgKwo+ICAuLi4vZGV2aWNldHJlZS9iaW5kaW5ncy92ZW5kb3ItcHJl Zml4ZXMudHh0ICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmln ICAgICAgICAgICAgICAgICAgICAgIHwgIDExICsKPiAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL01h a2VmaWxlICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vcGFu ZWwvcGFuZWwtamRpLWx0MDcwbWUwNTAwMC5jICAgICB8IDY4NSArKysrKysrKysrKysrKysrKysr KysKPiAgNSBmaWxlcyBjaGFuZ2VkLCA3MjUgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAx MDA2NDQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvamRp LGx0MDcwbWUwNTAwMC50eHQKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9w YW5lbC9wYW5lbC1qZGktbHQwNzBtZTA1MDAwLmMKPiAKPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRh dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvamRpLGx0MDcwbWUwNTAwMC50 eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9qZGks bHQwNzBtZTA1MDAwLnR4dAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4u MzVjNWFjNwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUv YmluZGluZ3MvZGlzcGxheS9wYW5lbC9qZGksbHQwNzBtZTA1MDAwLnR4dAo+IEBAIC0wLDAgKzEs MjcgQEAKPiArSkRJIG1vZGVsIExUMDcwTUUwNTAwMCAxOTIweDEyMDAgNyIgRFNJIFBhbmVsCj4g Kwo+ICtCYXNpYyBkYXRhIHNoZWV0IGlzIGF0Ogo+ICsJaHR0cDovL3BhbmVsb25lLm5ldC9lbi83 LTAtaW5jaC9KRElfTFQwNzBNRTA1MDAwXzcuMF9pbmNoLWRhdGFzaGVldAo+ICsKPiArVGhpcyBw YW5lbCBoYXMgdmlkZW8gbW9kZSBpbXBsZW1lbnRlZCBjdXJyZW50bHkgaW4gdGhlIGRyaXZlci4K CkFzIFRoaWVycnkgYWxyZWFkeSBtZW50aW9uZWQsIHRoaXMgaGFzIG5vdGhpbmcgdG8gZG8gd2l0 aCB0aGUgYmluZGluZy4KCj4gKwo+ICtSZXF1aXJlZCBwcm9wZXJ0aWVzOgo+ICstIGNvbXBhdGli bGU6IHNob3VsZCBiZSAiamRpLGx0MDcwbWUwNTAwMCIKPiArCj4gK09wdGlvbmFsIHByb3BlcnRp ZXM6Cj4gKy0gcG93ZXItc3VwcGx5OiBwaGFuZGxlIG9mIHRoZSByZWd1bGF0b3IgdGhhdCBwcm92 aWRlcyB0aGUgc3VwcGx5IHZvbHRhZ2UKPiArLSByZXNldC1ncGlvOiBwaGFuZGxlIG9mIGdwaW8g Zm9yIHJlc2V0IGxpbmUKCnJlc2V0LWdwaW9zCgo+ICstIGJhY2tsaWdodDogcGhhbmRsZSBvZiB0 aGUgYmFja2xpZ2h0IGRldmljZSBhdHRhY2hlZCB0byB0aGUgcGFuZWwKPiArCj4gK0V4YW1wbGU6 Cj4gKwo+ICsJZHNpQDU0MzAwMDAwIHsKPiArCQlwYW5lbDogcGFuZWxAMCB7Cj4gKwkJCWNvbXBh dGlibGUgPSAiamRpLGx0MDcwbWUwNTAwMCI7Cj4gKwkJCXJlZyA9IDwwPjsKPiArCj4gKwkJCXBv d2VyLXN1cHBseSA9IDwuLi4+Owo+ICsJCQlyZXNldC1ncGlvID0gPC4uLj47Cj4gKwkJCWJhY2ts aWdodCA9IDwuLi4+Owo+ICsJCX07Cj4gKwl9Owo+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9u L2RldmljZXRyZWUvYmluZGluZ3MvdmVuZG9yLXByZWZpeGVzLnR4dCBiL0RvY3VtZW50YXRpb24v ZGV2aWNldHJlZS9iaW5kaW5ncy92ZW5kb3ItcHJlZml4ZXMudHh0Cj4gaW5kZXggYTU4MGYzZS4u ZWM0MmJiNCAxMDA2NDQKPiAtLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv dmVuZG9yLXByZWZpeGVzLnR4dAo+ICsrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k aW5ncy92ZW5kb3ItcHJlZml4ZXMudHh0Cj4gQEAgLTEzMCw2ICsxMzAsNyBAQCBpbnZlbnNlbnNl CUludmVuU2Vuc2UgSW5jLgo+ICBpc2VlCUlTRUUgMjAwNyBTLkwuCj4gIGlzaWwJSW50ZXJzaWwK PiAgaXNzaQlJbnRlZ3JhdGVkIFNpbGljb24gU29sdXRpb25zIEluYy4KPiAramRpCUphcGFuIERp c3BsYXkgSW5jLgo+ICBqZWRlYwlKRURFQyBTb2xpZCBTdGF0ZSBUZWNobm9sb2d5IEFzc29jaWF0 aW9uCj4gIGthcm8JS2EtUm8gZWxlY3Ryb25pY3MgR21iSAo+ICBrZXltaWxlCUtleW1pbGUgR21i SAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyBiL2RyaXZlcnMv Z3B1L2RybS9wYW5lbC9LY29uZmlnCj4gaW5kZXggMTUwMGFiOS4uZjQxNjkwZSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9wYW5lbC9LY29uZmlnCj4gQEAgLTYxLDYgKzYxLDE3IEBAIGNvbmZpZyBEUk1fUEFORUxfU0hB UlBfTFExMDFSMVNYMDEKPiAgCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwg Y2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZQo+ICAJICB3aWxsIGJlIGNhbGxlZCBwYW5lbC1zaGFy cC1scTEwMXIxc3gwMS4KPiAgCj4gK2NvbmZpZyBEUk1fUEFORUxfSkRJX0xUMDcwTUUwNTAwMAo+ ICsJdHJpc3RhdGUgIkpESSBMVDA3ME1FMDUwMDAgV1VYR0EgRFNJIHBhbmVsIgo+ICsJZGVwZW5k cyBvbiBPRgo+ICsJZGVwZW5kcyBvbiBEUk1fTUlQSV9EU0kKPiArCWRlcGVuZHMgb24gQkFDS0xJ R0hUX0NMQVNTX0RFVklDRQo+ICsJaGVscAo+ICsJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRv IGVuYWJsZSBzdXBwb3J0IGZvciBKREkgV1VYR0EgRFNJIHZpZGVvLwo+ICsJICBjb21tYW5kIG1v ZGUgcGFuZWwgYXMgZm91bmQgaW4gR29vZ2xlIE5leHVzIDcgKDIwMTMpIGRldmljZXMuCj4gKwkg IFRoZSBwYW5lbCBoYXMgYSAxMjAwKFJHQinDlzE5MjAgKFdVWEdBKSByZXNvbHV0aW9uIGFuZCB1 c2VzCj4gKwkgIDI0IGJpdCBSR0IgcGVyIHBpeGVsLgo+ICsKPiAgY29uZmlnIERSTV9QQU5FTF9T SEFSUF9MUzA0M1QxTEUwMQo+ICAJdHJpc3RhdGUgIlNoYXJwIExTMDQzVDFMRTAxIHFIRCB2aWRl byBtb2RlIHBhbmVsIgo+ICAJZGVwZW5kcyBvbiBPRgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcGFuZWwvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKPiBp bmRleCBmMjc3ZWVkLi5lNmM2ZmM4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5l bC9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQo+IEBAIC01 LDMgKzUsNCBAQCBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NBTVNVTkdfTEQ5MDQwKSArPSBwYW5l bC1zYW1zdW5nLWxkOTA0MC5vCj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0FNU1VOR19TNkU4 QUEwKSArPSBwYW5lbC1zYW1zdW5nLXM2ZThhYTAubwo+ICBvYmotJChDT05GSUdfRFJNX1BBTkVM X1NIQVJQX0xRMTAxUjFTWDAxKSArPSBwYW5lbC1zaGFycC1scTEwMXIxc3gwMS5vCj4gIG9iai0k KENPTkZJR19EUk1fUEFORUxfU0hBUlBfTFMwNDNUMUxFMDEpICs9IHBhbmVsLXNoYXJwLWxzMDQz dDFsZTAxLm8KPiArb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9KRElfTFQwNzBNRTA1MDAwKSArPSBw YW5lbC1qZGktbHQwNzBtZTA1MDAwLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Bh bmVsL3BhbmVsLWpkaS1sdDA3MG1lMDUwMDAuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5l bC1qZGktbHQwNzBtZTA1MDAwLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAw MDAuLjA1MWFhMWIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVs L3BhbmVsLWpkaS1sdDA3MG1lMDUwMDAuYwo+IEBAIC0wLDAgKzEsNjg1IEBACj4gKy8qCj4gKyAq IENvcHlyaWdodCAoQykgMjAxNSBJbmZvcmNlQ29tcHV0aW5nCj4gKyAqIEF1dGhvcjogVmluYXkg U2ltaGEgQk4gPHNpbWhhdmNzQGdtYWlsLmNvbT4KPiArICoKPiArICogQ29weXJpZ2h0IChDKSAy MDE1IExpbmFybyBMdGQKPiArICogQXV0aG9yOiBTdW1pdCBTZW13YWwgPHN1bWl0LnNlbXdhbEBs aW5hcm8ub3JnPgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAo+ICsgKiB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcyBwdWJsaXNo ZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICogVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsIGJ1dCBXSVRIT1VUCj4gKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgo+ICsgKiBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y Cj4gKyAqIG1vcmUgZGV0YWlscy4KPiArICoKPiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAo+ICsg KiB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2JhY2tsaWdodC5oPgo+ICsjaW5jbHVk ZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4g KyNpbmNsdWRlIDxsaW51eC9vZi5oPgo+ICsjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1 bWVyLmg+Cj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1f Y3J0Yy5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2RzaS5oPgo+ICsjaW5jbHVkZSA8ZHJt L2RybV9wYW5lbC5oPgo+ICsKPiArI2luY2x1ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5oPgo+ICsK PiArLyoKPiArICogRnJvbSBpbnRlcm5ldCBhcmNoaXZlcywgdGhlIHBhbmVsIGZvciBOZXh1cyA3 IDJuZCBHZW4sIDIwMTMgbW9kZWwgaXMgYQo+ICsgKiBKREkgbW9kZWwgTFQwNzBNRTA1MDAwLCBh bmQgaXRzIGRhdGEgc2hlZXQgaXMgYXQ6Cj4gKyAqICBodHRwOi8vcGFuZWxvbmUubmV0L2VuLzct MC1pbmNoL0pESV9MVDA3ME1FMDUwMDBfNy4wX2luY2gtZGF0YXNoZWV0Cj4gKyAqLwo+ICtzdHJ1 Y3QgamRpX3BhbmVsIHsKPiArCXN0cnVjdCBkcm1fcGFuZWwgYmFzZTsKPiArCXN0cnVjdCBtaXBp X2RzaV9kZXZpY2UgKmRzaTsKPiArCj4gKwkvKiBUT0RPOiBBZGQgYmFja2lsZ2h0IHN1cHBvcnQg Ki8KPiArCXN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiYWNrbGlnaHQ7Cj4gKwlzdHJ1Y3QgcmVn dWxhdG9yICpzdXBwbHk7Cj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpyZXNldF9ncGlvOwo+ICsJc3Ry dWN0IGdwaW9fZGVzYyAqZW5hYmxlX2dwaW87Cj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICp2Y2NfZ3Bp bzsKPiArCj4gKwlzdHJ1Y3QgcmVndWxhdG9yICpiYWNrbGl0Owo+ICsJc3RydWN0IHJlZ3VsYXRv ciAqbHZzNzsKPiArCXN0cnVjdCByZWd1bGF0b3IgKmF2ZGQ7Cj4gKwlzdHJ1Y3QgcmVndWxhdG9y ICppb3ZkZDsKPiArCXN0cnVjdCBncGlvX2Rlc2MgKnB3bV9ncGlvOwo+ICsKPiArCWJvb2wgcHJl cGFyZWQ7Cj4gKwlib29sIGVuYWJsZWQ7Cj4gKwo+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGU7Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBqZGlfcGFuZWwg KnRvX2pkaV9wYW5lbChzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJcmV0dXJuIGNv bnRhaW5lcl9vZihwYW5lbCwgc3RydWN0IGpkaV9wYW5lbCwgYmFzZSk7Cj4gK30KPiArCj4gK3N0 YXRpYyBjaGFyIE1DQVBbMl0gPSB7MHhCMCwgMHgwMH07Cj4gK3N0YXRpYyBjaGFyIGludGVyZmFj ZV9zZXR0aW5nX2NtZFs2XSA9IHsweEIzLCAweDA0LCAweDA4LCAweDAwLCAweDIyLCAweDAwfTsK PiArc3RhdGljIGNoYXIgaW50ZXJmYWNlX3NldHRpbmdbNl0gPSB7MHhCMywgMHgyNiwgMHgwOCwg MHgwMCwgMHgyMCwgMHgwMH07Cj4gKwo+ICtzdGF0aWMgY2hhciBpbnRlcmZhY2VfSURfc2V0dGlu Z1syXSA9IHsweEI0LCAweDBDfTsKPiArc3RhdGljIGNoYXIgRFNJX2NvbnRyb2xbM10gPSB7MHhC NiwgMHgzQSwgMHhEM307Cj4gKwo+ICtzdGF0aWMgY2hhciB0ZWFyX3NjYW5fbGluZVszXSA9IHsw eDQ0LCAweDAzLCAweDAwfTsKPiArCj4gKy8qIGZvciBmcHMgY29udHJvbCwgc2V0IGZwcyB0byA2 MC4zMkh6ICovCj4gK3N0YXRpYyBjaGFyIExUUFNfdGltaW5nX3NldHRpbmdbMl0gPSB7MHhDNiwg MHg3OH07Cj4gK3N0YXRpYyBjaGFyIHNlcXVlbmNlcl90aW1pbmdfY29udHJvbFsyXSA9IHsweEQ2 LCAweDAxfTsKPiArCj4gKy8qIHNldCBicmlnaHRuZXNzICovCj4gK3N0YXRpYyBjaGFyIHdyaXRl X2Rpc3BsYXlfYnJpZ2h0bmVzc1tdID0gezB4NTEsIDB4RkZ9Owo+ICsvKiBlbmFibGUgTEVEUFdN IHBpbiBvdXRwdXQsIHR1cm4gb24gTEVEUFdNIG91dHB1dCwgdHVybiBvZmYgcHdtIGRpbW1pbmcg Ki8KPiArc3RhdGljIGNoYXIgd3JpdGVfY29udHJvbF9kaXNwbGF5W10gPSB7MHg1MywgMHgyNH07 Cj4gKy8qCj4gKyAqIGNob29zZSBjYWJjIG1vZGUsIDB4MDAoLTAlKSwgMHgwMSgtMTUlKSwgMHgw MigtNDAlKSwgMHgwMygtNTQlKSwKPiArICogZGlzYWJsZSBTUkUoc3VubGlnaHQgcmVhZGFiaWxp dHkgZW5oYW5jZW1lbnQpCj4gKyAqLwo+ICtzdGF0aWMgY2hhciB3cml0ZV9jYWJjW10gPSB7MHg1 NSwgMHgwMH07Cj4gKy8qIGZvciBjYWJjIG1vZGUgMHgxKC0xNSUpICovCj4gK3N0YXRpYyBjaGFy IGJhY2tsaWdodF9jb250cm9sMVtdID0gezB4QjgsIDB4MDcsIDB4ODcsIDB4MjYsIDB4MTgsIDB4 MDAsIDB4MzJ9Owo+ICsvKiBmb3IgY2FiYyBtb2RlIDB4MigtNDAlKSAqLwo+ICtzdGF0aWMgY2hh ciBiYWNrbGlnaHRfY29udHJvbDJbXSA9IHsweEI5LCAweDA3LCAweDc1LCAweDYxLCAweDIwLCAw eDE2LCAweDg3fTsKPiArLyogZm9yIGNhYmMgbW9kZSAweDMoLTU0JSkgKi8KPiArc3RhdGljIGNo YXIgYmFja2xpZ2h0X2NvbnRyb2wzW10gPSB7MHhCQSwgMHgwNywgMHg3MCwgMHg4MSwgMHgyMCwg MHg0NSwgMHhCNH07Cj4gKy8qIGZvciBwd20gZnJlcXVlbmN5IGFuZCBkaW1taW5nIGNvbnRyb2wg Ki8KPiArc3RhdGljIGNoYXIgYmFja2xpZ2h0X2NvbnRyb2w0W10gPSB7MHhDRSwgMHg3RCwgMHg0 MCwgMHg0OCwgMHg1NiwgMHg2NywgMHg3OCwKPiArCQkweDg4LCAweDk4LCAweEE3LCAweEI1LCAw eEMzLCAweEQxLCAweERFLCAweEU5LCAweEYyLCAweEZBLAo+ICsJCTB4RkYsIDB4MzcsIDB4RjUs IDB4MEYsIDB4MEYsIDB4NDIsIDB4MDB9Owo+ICsKPiArc3RhdGljIGludCBqZGlfcGFuZWxfaW5p dChzdHJ1Y3QgamRpX3BhbmVsICpqZGkpCj4gK3sKPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2Ug KmRzaSA9IGpkaS0+ZHNpOwo+ICsJaW50IHJldDsKPiArCj4gKwlkc2ktPm1vZGVfZmxhZ3MgfD0g TUlQSV9EU0lfTU9ERV9MUE07Cj4gKwo+ICsJaWYgKGRzaS0+bW9kZV9mbGFncyAmIE1JUElfRFNJ X01PREVfVklERU8pIHsKPiArCQlyZXQgPSBtaXBpX2RzaV9kY3Nfc29mdF9yZXNldChkc2kpOwo+ ICsJCWlmIChyZXQgPCAwKQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsKPiArCQltZGVsYXkoMTApOwo+ ICsKPiArCQlyZXQgPSBtaXBpX2RzaV9kY3Nfc2V0X3BpeGVsX2Zvcm1hdChkc2ksIDB4NzApOwo+ ICsJCWlmIChyZXQgPCAwKQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsKPiArCQlyZXQgPSBtaXBpX2Rz aV9kY3Nfc2V0X2NvbHVtbl9hZGRyZXNzKGRzaSwgMHgwMDAwLCAweDA0QUYpOwo+ICsJCWlmIChy ZXQgPCAwKQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsKPiArCQlyZXQgPSBtaXBpX2RzaV9kY3Nfc2V0 X3BhZ2VfYWRkcmVzcyhkc2ksIDB4MDAwMCwgMHgwNzdGKTsKPiArCQlpZiAocmV0IDwgMCkKPiAr CQkJcmV0dXJuIHJldDsKPiArCj4gKwkJcmV0ID0gbWlwaV9kc2lfZGNzX3NldF90ZWFyX29uKGRz aSwKPiArCQkJCQkgICAgICAgTUlQSV9EU0lfRENTX1RFQVJfTU9ERV9WQkxBTkspOwo+ICsJCWlm IChyZXQgPCAwKQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJCW1kZWxheSg1KTsKPiArCj4gKwkJcmV0 ID0gbWlwaV9kc2lfZ2VuZXJpY193cml0ZShkc2ksIHRlYXJfc2Nhbl9saW5lLAo+ICsJCQkJCSAg ICAgc2l6ZW9mKHRlYXJfc2Nhbl9saW5lKSk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVy biByZXQ7Cj4gKwo+ICsJCXJldCA9IG1pcGlfZHNpX2Rjc193cml0ZV9idWZmZXIoZHNpLCB3cml0 ZV9kaXNwbGF5X2JyaWdodG5lc3MsCj4gKwkJCQkJCXNpemVvZih3cml0ZV9kaXNwbGF5X2JyaWdo dG5lc3MpCj4gKwkJCQkJCSk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4g Kwo+ICsJCXJldCA9IG1pcGlfZHNpX2Rjc193cml0ZV9idWZmZXIoZHNpLCB3cml0ZV9jb250cm9s X2Rpc3BsYXksCj4gKwkJCQkJCXNpemVvZih3cml0ZV9jb250cm9sX2Rpc3BsYXkpKTsKPiArCQlp ZiAocmV0IDwgMCkKPiArCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJcmV0ID0gbWlwaV9kc2lfZGNz X3dyaXRlX2J1ZmZlcihkc2ksIHdyaXRlX2NhYmMsCj4gKwkJCQkJCXNpemVvZih3cml0ZV9jYWJj KSk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCXJldCA9IG1p cGlfZHNpX2Rjc19leGl0X3NsZWVwX21vZGUoZHNpKTsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJ cmV0dXJuIHJldDsKPiArCQltZGVsYXkoMTIwKTsKPiArCj4gKwkJcmV0ID0gbWlwaV9kc2lfZ2Vu ZXJpY193cml0ZShkc2ksIE1DQVAsIHNpemVvZihNQ0FQKSk7Cj4gKwkJaWYgKHJldCA8IDApCj4g KwkJCXJldHVybiByZXQ7Cj4gKwkJbWRlbGF5KDEwKTsKPiArCj4gKwkJcmV0ID0gbWlwaV9kc2lf Z2VuZXJpY193cml0ZShkc2ksIGludGVyZmFjZV9zZXR0aW5nLAo+ICsJCQkJCSAgICAgc2l6ZW9m KGludGVyZmFjZV9zZXR0aW5nKSk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7 Cj4gKwkJbWRlbGF5KDIwKTsKPiArCj4gKwkJYmFja2xpZ2h0X2NvbnRyb2w0WzE4XSA9IDB4MDQ7 Cj4gKwkJYmFja2xpZ2h0X2NvbnRyb2w0WzE5XSA9IDB4MDA7Cj4gKwo+ICsJCXJldCA9IG1pcGlf ZHNpX2dlbmVyaWNfd3JpdGUoZHNpLCBiYWNrbGlnaHRfY29udHJvbDQsCj4gKwkJCQkJICAgICBz aXplb2YoYmFja2xpZ2h0X2NvbnRyb2w0KSk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVy biByZXQ7Cj4gKwkJbWRlbGF5KDIwKTsKPiArCj4gKwkJTUNBUFsxXSA9IDB4MDM7Cj4gKwkJcmV0 ID0gbWlwaV9kc2lfZ2VuZXJpY193cml0ZShkc2ksIE1DQVAsIHNpemVvZihNQ0FQKSk7Cj4gKwkJ aWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwl9IGVsc2Ugewo+ICsJCS8qCj4gKwkJ ICogVE9ETyA6IG5lZWQgdG8gdmVyaWZ5IHBhbmVsIHNldHRpbmdzIHdoZW4KPiArCQkgKiBkc2kg Y21kIG1vZGUgc3VwcG9ydGVkIGZvciBhcHE4MDY0IC0gc2ltaGF2Y3MKPiArCQkgKi8KPiArCQly ZXQgPSBtaXBpX2RzaV9kY3Nfc29mdF9yZXNldChkc2kpOwo+ICsJCWlmIChyZXQgPCAwKQo+ICsJ CQlyZXR1cm4gcmV0Owo+ICsKPiArCQltZGVsYXkoNSk7Cj4gKwo+ICsJCXJldCA9IG1pcGlfZHNp X2dlbmVyaWNfd3JpdGUoZHNpLCBNQ0FQLCBzaXplb2YoTUNBUCkpOwo+ICsJCWlmIChyZXQgPCAw KQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsKPiArCQlyZXQgPSBtaXBpX2RzaV9nZW5lcmljX3dyaXRl KGRzaSwgaW50ZXJmYWNlX3NldHRpbmdfY21kLAo+ICsJCQkJCSAgICAgc2l6ZW9mKGludGVyZmFj ZV9zZXR0aW5nX2NtZCkpOwo+ICsJCWlmIChyZXQgPCAwKQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsK PiArCQlyZXQgPSBtaXBpX2RzaV9nZW5lcmljX3dyaXRlKGRzaSwgaW50ZXJmYWNlX0lEX3NldHRp bmcsCj4gKwkJCQkJICAgICBzaXplb2YoaW50ZXJmYWNlX0lEX3NldHRpbmcpKTsKPiArCQlpZiAo cmV0IDwgMCkKPiArCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJcmV0ID0gbWlwaV9kc2lfZ2VuZXJp Y193cml0ZShkc2ksIERTSV9jb250cm9sLAo+ICsJCQkJCSAgICAgc2l6ZW9mKERTSV9jb250cm9s KSk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCXJldCA9IG1p cGlfZHNpX2dlbmVyaWNfd3JpdGUoZHNpLCBMVFBTX3RpbWluZ19zZXR0aW5nLAo+ICsJCQkJCSAg ICAgc2l6ZW9mKExUUFNfdGltaW5nX3NldHRpbmcpKTsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJ cmV0dXJuIHJldDsKPiArCj4gKwkJcmV0ID0gbWlwaV9kc2lfZ2VuZXJpY193cml0ZShkc2ksIHNl cXVlbmNlcl90aW1pbmdfY29udHJvbCwKPiArCQkJCQkgICAgIHNpemVvZihzZXF1ZW5jZXJfdGlt aW5nX2NvbnRyb2wpKTsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJcmV0dXJuIHJldDsKPiArCj4g KwkJcmV0ID0gbWlwaV9kc2lfZGNzX3dyaXRlX2J1ZmZlcihkc2ksIHdyaXRlX2Rpc3BsYXlfYnJp Z2h0bmVzcywKPiArCQkJCQkJc2l6ZW9mKHdyaXRlX2Rpc3BsYXlfYnJpZ2h0bmVzcykKPiArCQkJ CQkJKTsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJcmV0ID0g bWlwaV9kc2lfZGNzX3dyaXRlX2J1ZmZlcihkc2ksIHdyaXRlX2NvbnRyb2xfZGlzcGxheSwKPiAr CQkJCQkJc2l6ZW9mKHdyaXRlX2NvbnRyb2xfZGlzcGxheSkpOwo+ICsJCWlmIChyZXQgPCAwKQo+ ICsJCQlyZXR1cm4gcmV0Owo+ICsKPiArCQlyZXQgPSBtaXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVy KGRzaSwgd3JpdGVfY2FiYywKPiArCQkJCQkJc2l6ZW9mKHdyaXRlX2NhYmMpKTsKPiArCQlpZiAo cmV0IDwgMCkKPiArCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJcmV0ID0gbWlwaV9kc2lfZ2VuZXJp Y193cml0ZShkc2ksIGJhY2tsaWdodF9jb250cm9sMSwKPiArCQkJCQkgICAgIHNpemVvZihiYWNr bGlnaHRfY29udHJvbDEpKTsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJcmV0dXJuIHJldDsKPiAr Cj4gKwkJcmV0ID0gbWlwaV9kc2lfZ2VuZXJpY193cml0ZShkc2ksIGJhY2tsaWdodF9jb250cm9s MiwKPiArCQkJCQkgICAgIHNpemVvZihiYWNrbGlnaHRfY29udHJvbDIpKTsKPiArCQlpZiAocmV0 IDwgMCkKPiArCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJcmV0ID0gbWlwaV9kc2lfZ2VuZXJpY193 cml0ZShkc2ksIGJhY2tsaWdodF9jb250cm9sMywKPiArCQkJCQkgICAgIHNpemVvZihiYWNrbGln aHRfY29udHJvbDMpKTsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJcmV0dXJuIHJldDsKPiArCj4g KwkJcmV0ID0gbWlwaV9kc2lfZ2VuZXJpY193cml0ZShkc2ksIGJhY2tsaWdodF9jb250cm9sNCwK PiArCQkJCQkgICAgIHNpemVvZihiYWNrbGlnaHRfY29udHJvbDQpKTsKPiArCQlpZiAocmV0IDwg MCkKPiArCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJcmV0ID0gbWlwaV9kc2lfZGNzX3NldF9waXhl bF9mb3JtYXQoZHNpLCAweDc3KTsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJcmV0dXJuIHJldDsK PiArCj4gKwkJcmV0ID0gbWlwaV9kc2lfZGNzX3NldF9jb2x1bW5fYWRkcmVzcyhkc2ksIDB4MDAw MCwgMHgwNEFGKTsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJ cmV0ID0gbWlwaV9kc2lfZGNzX3NldF9wYWdlX2FkZHJlc3MoZHNpLCAweDAwMDAsIDB4MDc3Rik7 Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwkJbWRlbGF5KDEyMCk7Cj4g Kwo+ICsJCXJldCA9IG1pcGlfZHNpX2Rjc19leGl0X3NsZWVwX21vZGUoZHNpKTsKPiArCQlpZiAo cmV0IDwgMCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ ICsKPiArc3RhdGljIGludCBqZGlfcGFuZWxfb24oc3RydWN0IGpkaV9wYW5lbCAqamRpKQo+ICt7 Cj4gKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kgPSBqZGktPmRzaTsKPiArCWludCByZXQ7 Cj4gKwo+ICsJZHNpLT5tb2RlX2ZsYWdzIHw9IE1JUElfRFNJX01PREVfTFBNOwo+ICsKPiArCXJl dCA9IG1pcGlfZHNpX2Rjc19zZXRfZGlzcGxheV9vbihkc2kpOwo+ICsJaWYgKHJldCA8IDApCj4g KwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBq ZGlfcGFuZWxfb2ZmKHN0cnVjdCBqZGlfcGFuZWwgKmpkaSkKPiArewo+ICsJc3RydWN0IG1pcGlf ZHNpX2RldmljZSAqZHNpID0gamRpLT5kc2k7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWRzaS0+bW9k ZV9mbGFncyAmPSB+TUlQSV9EU0lfTU9ERV9MUE07Cj4gKwo+ICsJcmV0ID0gbWlwaV9kc2lfZGNz X3NldF9kaXNwbGF5X29mZihkc2kpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsK PiArCj4gKwlyZXQgPSBtaXBpX2RzaV9kY3NfZW50ZXJfc2xlZXBfbW9kZShkc2kpOwo+ICsJaWYg KHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXQgPSBtaXBpX2RzaV9kY3Nfc2V0 X3RlYXJfb2ZmKGRzaSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiAr CW1zbGVlcCgxMDApOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGpk aV9wYW5lbF9kaXNhYmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3Qg amRpX3BhbmVsICpqZGkgPSB0b19qZGlfcGFuZWwocGFuZWwpOwo+ICsKPiArCWlmICghamRpLT5l bmFibGVkKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCURSTV9ERUJVRygiZGlzYWJsZVxuIik7Cj4g Kwo+ICsJaWYgKGpkaS0+YmFja2xpZ2h0KSB7Cj4gKwkJamRpLT5iYWNrbGlnaHQtPnByb3BzLnBv d2VyID0gRkJfQkxBTktfUE9XRVJET1dOOwo+ICsJCWJhY2tsaWdodF91cGRhdGVfc3RhdHVzKGpk aS0+YmFja2xpZ2h0KTsKPiArCX0KPiArCj4gKwlqZGktPmVuYWJsZWQgPSBmYWxzZTsKPiArCj4g KwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBqZGlfcGFuZWxfdW5wcmVwYXJlKHN0 cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgamRpX3BhbmVsICpqZGkgPSB0 b19qZGlfcGFuZWwocGFuZWwpOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoIWpkaS0+cHJlcGFy ZWQpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJRFJNX0RFQlVHKCJ1bnByZXBhcmVcbiIpOwo+ICsK PiArCXJldCA9IGpkaV9wYW5lbF9vZmYoamRpKTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJy KHBhbmVsLT5kZXYsICJmYWlsZWQgdG8gc2V0IHBhbmVsIG9mZjogJWRcbiIsIHJldCk7Cj4gKwkJ cmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZWd1bGF0b3JfZGlzYWJsZShqZGktPnN1cHBseSk7 Cj4gKwo+ICsJaWYgKGpkaS0+dmNjX2dwaW8pCj4gKwkJZ3Bpb2Rfc2V0X3ZhbHVlKGpkaS0+dmNj X2dwaW8sIDApOwo+ICsKPiArCWlmIChqZGktPnJlc2V0X2dwaW8pCj4gKwkJZ3Bpb2Rfc2V0X3Zh bHVlKGpkaS0+cmVzZXRfZ3BpbywgMCk7Cj4gKwo+ICsJaWYgKGpkaS0+ZW5hYmxlX2dwaW8pCj4g KwkJZ3Bpb2Rfc2V0X3ZhbHVlKGpkaS0+ZW5hYmxlX2dwaW8sIDApOwo+ICsKPiArCWpkaS0+cHJl cGFyZWQgPSBmYWxzZTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBq ZGlfcGFuZWxfcHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJc3RydWN0 IGpkaV9wYW5lbCAqamRpID0gdG9famRpX3BhbmVsKHBhbmVsKTsKPiArCWludCByZXQ7Cj4gKwo+ ICsJaWYgKGpkaS0+cHJlcGFyZWQpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJRFJNX0RFQlVHKCJw cmVwYXJlXG4iKTsKPiArCj4gKwlyZXQgPSByZWd1bGF0b3JfZW5hYmxlKGpkaS0+aW92ZGQpOwo+ ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXQgPSByZWd1bGF0b3Jf ZW5hYmxlKGpkaS0+YXZkZCk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsK PiArCXJldCA9IHJlZ3VsYXRvcl9lbmFibGUoamRpLT5iYWNrbGl0KTsKPiArCWlmIChyZXQgPCAw KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0ID0gcmVndWxhdG9yX2VuYWJsZShqZGktPmx2 czcpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXQgPSByZWd1 bGF0b3JfZW5hYmxlKGpkaS0+c3VwcGx5KTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiBy ZXQ7Cj4gKwo+ICsJbXNsZWVwKDIwKTsKPiArCj4gKwlpZiAoamRpLT52Y2NfZ3Bpbykgewo+ICsJ CWdwaW9kX3NldF92YWx1ZShqZGktPnZjY19ncGlvLCAxKTsKPiArCQl1c2xlZXBfcmFuZ2UoMTAs IDIwKTsKPiArCX0KPiArCj4gKwlpZiAoamRpLT5yZXNldF9ncGlvKSB7Cj4gKwkJZ3Bpb2Rfc2V0 X3ZhbHVlKGpkaS0+cmVzZXRfZ3BpbywgMSk7Cj4gKwkJdXNsZWVwX3JhbmdlKDEwLCAyMCk7Cj4g Kwl9Cj4gKwo+ICsJaWYgKGpkaS0+cHdtX2dwaW8pIHsKPiArCQlncGlvZF9zZXRfdmFsdWUoamRp LT5wd21fZ3BpbywgMSk7Cj4gKwkJdXNsZWVwX3JhbmdlKDEwLCAyMCk7Cj4gKwl9Cj4gKwo+ICsJ aWYgKGpkaS0+ZW5hYmxlX2dwaW8pIHsKPiArCQlncGlvZF9zZXRfdmFsdWUoamRpLT5lbmFibGVf Z3BpbywgMSk7Cj4gKwkJdXNsZWVwX3JhbmdlKDEwLCAyMCk7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0g amRpX3BhbmVsX2luaXQoamRpKTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKHBhbmVsLT5k ZXYsICJmYWlsZWQgdG8gaW5pdCBwYW5lbDogJWRcbiIsIHJldCk7Cj4gKwkJZ290byBwb3dlcm9m ZjsKPiArCX0KPiArCj4gKwlyZXQgPSBqZGlfcGFuZWxfb24oamRpKTsKPiArCWlmIChyZXQpIHsK PiArCQlkZXZfZXJyKHBhbmVsLT5kZXYsICJmYWlsZWQgdG8gc2V0IHBhbmVsIG9uOiAlZFxuIiwg cmV0KTsKPiArCQlnb3RvIHBvd2Vyb2ZmOwo+ICsJfQo+ICsKPiArCWpkaS0+cHJlcGFyZWQgPSB0 cnVlOwo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArcG93ZXJvZmY6Cj4gKwlyZWd1bGF0b3JfZGlz YWJsZShqZGktPnN1cHBseSk7Cj4gKwlpZiAoamRpLT5yZXNldF9ncGlvKQo+ICsJCWdwaW9kX3Nl dF92YWx1ZShqZGktPnJlc2V0X2dwaW8sIDApOwo+ICsJaWYgKGpkaS0+ZW5hYmxlX2dwaW8pCj4g KwkJZ3Bpb2Rfc2V0X3ZhbHVlKGpkaS0+ZW5hYmxlX2dwaW8sIDApOwo+ICsJaWYgKGpkaS0+dmNj X2dwaW8pCj4gKwkJZ3Bpb2Rfc2V0X3ZhbHVlKGpkaS0+dmNjX2dwaW8sIDApOwo+ICsKPiArCXJl dHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgamRpX3BhbmVsX2VuYWJsZShzdHJ1Y3Qg ZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJc3RydWN0IGpkaV9wYW5lbCAqamRpID0gdG9famRp X3BhbmVsKHBhbmVsKTsKPiArCj4gKwlpZiAoamRpLT5lbmFibGVkKQo+ICsJCXJldHVybiAwOwo+ ICsKPiArCURSTV9ERUJVRygiZW5hYmxlXG4iKTsKPiArCj4gKwlpZiAoamRpLT5iYWNrbGlnaHQp IHsKPiArCQlqZGktPmJhY2tsaWdodC0+cHJvcHMucG93ZXIgPSBGQl9CTEFOS19VTkJMQU5LOwo+ ICsJCWJhY2tsaWdodF91cGRhdGVfc3RhdHVzKGpkaS0+YmFja2xpZ2h0KTsKPiArCX0KPiArCj4g KwlqZGktPmVuYWJsZWQgPSB0cnVlOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgZGVmYXVsdF9tb2RlID0gewo+ICsJCS5j bG9jayA9IDE1NTAwMCwKPiArCQkuaGRpc3BsYXkgPSAxMjAwLAo+ICsJCS5oc3luY19zdGFydCA9 IDEyMDAgKyA0OCwKPiArCQkuaHN5bmNfZW5kID0gMTIwMCArIDQ4ICsgMzIsCj4gKwkJLmh0b3Rh bCA9IDEyMDAgKyA0OCArIDMyICsgNjAsCj4gKwkJLnZkaXNwbGF5ID0gMTkyMCwKPiArCQkudnN5 bmNfc3RhcnQgPSAxOTIwICsgMywKPiArCQkudnN5bmNfZW5kID0gMTkyMCArIDMgKyA1LAo+ICsJ CS52dG90YWwgPSAxOTIwICsgMyArIDUgKyA2LAo+ICsJCS52cmVmcmVzaCA9IDYwLAo+ICsJCS5m bGFncyA9IDAsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IGpkaV9wYW5lbF9nZXRfbW9kZXMoc3Ry dWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpt b2RlOwo+ICsKPiArCW1vZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUocGFuZWwtPmRybSwgJmRlZmF1 bHRfbW9kZSk7Cj4gKwlpZiAoIW1vZGUpIHsKPiArCQlkZXZfZXJyKHBhbmVsLT5kcm0tPmRldiwg ImZhaWxlZCB0byBhZGQgbW9kZSAldXgldXhAJXVcbiIsCj4gKwkJCWRlZmF1bHRfbW9kZS5oZGlz cGxheSwgZGVmYXVsdF9tb2RlLnZkaXNwbGF5LAo+ICsJCQlkZWZhdWx0X21vZGUudnJlZnJlc2gp Owo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJfQo+ICsKPiArCWRybV9tb2RlX3NldF9uYW1lKG1v ZGUpOwo+ICsKPiArCWRybV9tb2RlX3Byb2JlZF9hZGQocGFuZWwtPmNvbm5lY3RvciwgbW9kZSk7 Cj4gKwo+ICsJcmV0dXJuIDE7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3Bh bmVsX2Z1bmNzIGpkaV9wYW5lbF9mdW5jcyA9IHsKPiArCQkuZGlzYWJsZSA9IGpkaV9wYW5lbF9k aXNhYmxlLAo+ICsJCS51bnByZXBhcmUgPSBqZGlfcGFuZWxfdW5wcmVwYXJlLAo+ICsJCS5wcmVw YXJlID0gamRpX3BhbmVsX3ByZXBhcmUsCj4gKwkJLmVuYWJsZSA9IGpkaV9wYW5lbF9lbmFibGUs Cj4gKwkJLmdldF9tb2RlcyA9IGpkaV9wYW5lbF9nZXRfbW9kZXMsCj4gK307Cj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBqZGlfb2ZfbWF0Y2hbXSA9IHsKPiArCQl7IC5j b21wYXRpYmxlID0gImpkaSxsdDA3MG1lMDUwMDAiLCB9LAo+ICsJCXsgfQo+ICt9Owo+ICtNT0RV TEVfREVWSUNFX1RBQkxFKG9mLCBqZGlfb2ZfbWF0Y2gpOwo+ICsKPiArc3RhdGljIGludCBqZGlf cGFuZWxfYWRkKHN0cnVjdCBqZGlfcGFuZWwgKmpkaSkKPiArewo+ICsJc3RydWN0IGRldmljZSAq ZGV2ID0gJmpkaS0+ZHNpLT5kZXY7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWpkaS0+bW9kZSA9ICZk ZWZhdWx0X21vZGU7Cj4gKwo+ICsJLyogbHZzNSAqLwo+ICsJamRpLT5zdXBwbHkgPSBkZXZtX3Jl Z3VsYXRvcl9nZXQoZGV2LCAicG93ZXIiKTsKPiArCWlmIChJU19FUlIoamRpLT5zdXBwbHkpKQo+ ICsJCXJldHVybiBQVFJfRVJSKGpkaS0+c3VwcGx5KTsKPiArCj4gKwkvKiBsMTcgKi8KPiArCWpk aS0+YmFja2xpdCA9IGRldm1fcmVndWxhdG9yX2dldChkZXYsICJiYWNrbGl0Iik7Cj4gKwlpZiAo SVNfRVJSKGpkaS0+c3VwcGx5KSkKPiArCQlyZXR1cm4gUFRSX0VSUihqZGktPnN1cHBseSk7Cj4g Kwo+ICsJamRpLT5sdnM3ID0gZGV2bV9yZWd1bGF0b3JfZ2V0KGRldiwgImx2czciKTsKPiArCWlm IChJU19FUlIoamRpLT5sdnM3KSkKPiArCQlyZXR1cm4gUFRSX0VSUihqZGktPmx2czcpOwo+ICsK PiArCWpkaS0+YXZkZCA9IGRldm1fcmVndWxhdG9yX2dldChkZXYsICJhdmRkIik7Cj4gKwlpZiAo SVNfRVJSKGpkaS0+YXZkZCkpCj4gKwkJcmV0dXJuIFBUUl9FUlIoamRpLT5hdmRkKTsKPiArCj4g KwlqZGktPmlvdmRkID0gZGV2bV9yZWd1bGF0b3JfZ2V0KGRldiwgImlvdmRkIik7Cj4gKwlpZiAo SVNfRVJSKGpkaS0+aW92ZGQpKQo+ICsJCXJldHVybiBQVFJfRVJSKGpkaS0+aW92ZGQpOwo+ICsK PiArCWpkaS0+dmNjX2dwaW8gPSBkZXZtX2dwaW9kX2dldChkZXYsICJ2Y2MiLCBHUElPRF9PVVRf TE9XKTsKPiArCWlmIChJU19FUlIoamRpLT52Y2NfZ3BpbykpIHsKPiArCQlkZXZfZXJyKGRldiwg ImNhbm5vdCBnZXQgdmNjLWdwaW8gJWxkXG4iLAo+ICsJCQlQVFJfRVJSKGpkaS0+dmNjX2dwaW8p KTsKPiArCQlqZGktPnZjY19ncGlvID0gTlVMTDsKPiArCX0gZWxzZSB7Cj4gKwkJZ3Bpb2RfZGly ZWN0aW9uX291dHB1dChqZGktPnZjY19ncGlvLCAwKTsKPiArCX0KPiArCj4gKwlqZGktPnJlc2V0 X2dwaW8gPSBkZXZtX2dwaW9kX2dldChkZXYsICJyZXNldCIsIEdQSU9EX09VVF9MT1cpOwo+ICsJ aWYgKElTX0VSUihqZGktPnJlc2V0X2dwaW8pKSB7Cj4gKwkJZGV2X2VycihkZXYsICJjYW5ub3Qg Z2V0IHJlc2V0LWdwaW9zICVsZFxuIiwKPiArCQkJUFRSX0VSUihqZGktPnJlc2V0X2dwaW8pKTsK PiArCQlqZGktPnJlc2V0X2dwaW8gPSBOVUxMOwo+ICsJfSBlbHNlIHsKPiArCQlncGlvZF9kaXJl Y3Rpb25fb3V0cHV0KGpkaS0+cmVzZXRfZ3BpbywgMCk7Cj4gKwl9Cj4gKwo+ICsJamRpLT5lbmFi bGVfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgImVuYWJsZSIsIEdQSU9EX09VVF9MT1cpOwo+ ICsJaWYgKElTX0VSUihqZGktPmVuYWJsZV9ncGlvKSkgewo+ICsJCWRldl9lcnIoZGV2LCAiY2Fu bm90IGdldCBlbmFibGUtZ3BpbyAlbGRcbiIsCj4gKwkJCVBUUl9FUlIoamRpLT5lbmFibGVfZ3Bp bykpOwo+ICsJCWpkaS0+ZW5hYmxlX2dwaW8gPSBOVUxMOwo+ICsJfSBlbHNlIHsKPiArCQlncGlv ZF9kaXJlY3Rpb25fb3V0cHV0KGpkaS0+ZW5hYmxlX2dwaW8sIDApOwo+ICsJfQo+ICsKPiArCWpk aS0+cHdtX2dwaW8gPSBkZXZtX2dwaW9kX2dldChkZXYsICJwd20iLCBHUElPRF9PVVRfTE9XKTsK PiArCWlmIChJU19FUlIoamRpLT5wd21fZ3BpbykpIHsKPiArCQlkZXZfZXJyKGRldiwgImNhbm5v dCBnZXQgcHdtLWdwaW8gJWxkXG4iLAo+ICsJCQlQVFJfRVJSKGpkaS0+cHdtX2dwaW8pKTsKPiAr CQlqZGktPnB3bV9ncGlvID0gTlVMTDsKPiArCX0gZWxzZSB7Cj4gKwkJZ3Bpb2RfZGlyZWN0aW9u X291dHB1dChqZGktPnB3bV9ncGlvLCAwKTsKPiArCX0KPiArCj4gKwkvKiB3ZSBkb24ndCBoYXZl IGJhY2tsaWdodCByaWdodCBub3csIHByb2NlZWQgZnVydGhlciAqLwo+ICsjaWZkZWYgQkFDS0xJ R0hUCj4gKwlucCA9IG9mX3BhcnNlX3BoYW5kbGUoZGV2LT5vZl9ub2RlLCAiYmFja2xpZ2h0Iiwg MCk7Cj4gKwlpZiAobnApIHsKPiArCQlqZGktPmJhY2tsaWdodCA9IG9mX2ZpbmRfYmFja2xpZ2h0 X2J5X25vZGUobnApOwo+ICsJCW9mX25vZGVfcHV0KG5wKTsKPiArCj4gKwkJaWYgKCFqZGktPmJh Y2tsaWdodCkKPiArCQkJcmV0dXJuIC1FUFJPQkVfREVGRVI7Cj4gKwl9Cj4gKyNlbmRpZgo+ICsK PiArCWRybV9wYW5lbF9pbml0KCZqZGktPmJhc2UpOwo+ICsJamRpLT5iYXNlLmZ1bmNzID0gJmpk aV9wYW5lbF9mdW5jczsKPiArCWpkaS0+YmFzZS5kZXYgPSAmamRpLT5kc2ktPmRldjsKPiArCj4g KwlyZXQgPSBkcm1fcGFuZWxfYWRkKCZqZGktPmJhc2UpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJ Z290byBwdXRfYmFja2xpZ2h0Owo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArcHV0X2JhY2tsaWdo dDoKPiArCWlmIChqZGktPmJhY2tsaWdodCkKPiArCQlwdXRfZGV2aWNlKCZqZGktPmJhY2tsaWdo dC0+ZGV2KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBqZGlf cGFuZWxfZGVsKHN0cnVjdCBqZGlfcGFuZWwgKmpkaSkKPiArewo+ICsJaWYgKGpkaS0+YmFzZS5k ZXYpCj4gKwkJZHJtX3BhbmVsX3JlbW92ZSgmamRpLT5iYXNlKTsKPiArCj4gKwlpZiAoamRpLT5i YWNrbGlnaHQpCj4gKwkJcHV0X2RldmljZSgmamRpLT5iYWNrbGlnaHQtPmRldik7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQgamRpX3BhbmVsX3Byb2JlKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRz aSkKPiArewo+ICsJc3RydWN0IGpkaV9wYW5lbCAqamRpOwo+ICsJaW50IHJldDsKPiArCj4gKwlk c2ktPmxhbmVzID0gNDsKPiArCWRzaS0+Zm9ybWF0ID0gTUlQSV9EU0lfRk1UX1JHQjg4ODsKPiAr CWRzaS0+bW9kZV9mbGFncyA9ICBNSVBJX0RTSV9NT0RFX1ZJREVPX0hTRSB8IE1JUElfRFNJX01P REVfVklERU8gfAo+ICsJCQlNSVBJX0RTSV9NT0RFX1ZJREVPX0hGUCB8IE1JUElfRFNJX01PREVf VklERU9fSEJQIHwKPiArCQkJTUlQSV9EU0lfTU9ERV9WSURFT19IU0EgfAo+ICsJCQlNSVBJX0RT SV9DTE9DS19OT05fQ09OVElOVU9VUzsKPiArCj4gKwlqZGkgPSBkZXZtX2t6YWxsb2MoJmRzaS0+ ZGV2LCBzaXplb2YoKmpkaSksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFqZGkpCj4gKwkJcmV0dXJu IC1FTk9NRU07Cj4gKwo+ICsJbWlwaV9kc2lfc2V0X2RydmRhdGEoZHNpLCBqZGkpOwo+ICsKPiAr CWpkaS0+ZHNpID0gZHNpOwo+ICsKPiArCXJldCA9IGpkaV9wYW5lbF9hZGQoamRpKTsKPiArCWlm IChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0dXJuIG1pcGlfZHNpX2F0dGFj aChkc2kpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGpkaV9wYW5lbF9yZW1vdmUoc3RydWN0IG1p cGlfZHNpX2RldmljZSAqZHNpKQo+ICt7Cj4gKwlzdHJ1Y3QgamRpX3BhbmVsICpqZGkgPSBtaXBp X2RzaV9nZXRfZHJ2ZGF0YShkc2kpOwo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBqZGlfcGFu ZWxfZGlzYWJsZSgmamRpLT5iYXNlKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCWRldl9lcnIoJmRz aS0+ZGV2LCAiZmFpbGVkIHRvIGRpc2FibGUgcGFuZWw6ICVkXG4iLCByZXQpOwo+ICsKPiArCXJl dCA9IG1pcGlfZHNpX2RldGFjaChkc2kpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJZGV2X2Vycigm ZHNpLT5kZXYsICJmYWlsZWQgdG8gZGV0YWNoIGZyb20gRFNJIGhvc3Q6ICVkXG4iLAo+ICsJCQly ZXQpOwo+ICsKPiArCWRybV9wYW5lbF9kZXRhY2goJmpkaS0+YmFzZSk7Cj4gKwlqZGlfcGFuZWxf ZGVsKGpkaSk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGpkaV9w YW5lbF9zaHV0ZG93bihzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCj4gK3sKPiArCXN0cnVj dCBqZGlfcGFuZWwgKmpkaSA9IG1pcGlfZHNpX2dldF9kcnZkYXRhKGRzaSk7Cj4gKwo+ICsJamRp X3BhbmVsX2Rpc2FibGUoJmpkaS0+YmFzZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgbWlw aV9kc2lfZHJpdmVyIGpkaV9wYW5lbF9kcml2ZXIgPSB7Cj4gKwkuZHJpdmVyID0gewo+ICsJCS5u YW1lID0gInBhbmVsLWpkaS1sdDA3MG1lMDUwMDAiLAo+ICsJCS5vZl9tYXRjaF90YWJsZSA9IGpk aV9vZl9tYXRjaCwKPiArCX0sCj4gKwkucHJvYmUgPSBqZGlfcGFuZWxfcHJvYmUsCj4gKwkucmVt b3ZlID0gamRpX3BhbmVsX3JlbW92ZSwKPiArCS5zaHV0ZG93biA9IGpkaV9wYW5lbF9zaHV0ZG93 biwKPiArfTsKPiArbW9kdWxlX21pcGlfZHNpX2RyaXZlcihqZGlfcGFuZWxfZHJpdmVyKTsKPiAr Cj4gK01PRFVMRV9BVVRIT1IoIlN1bWl0IFNlbXdhbCA8c3VtaXQuc2Vtd2FsQGxpbmFyby5vcmc+ Iik7Cj4gK01PRFVMRV9BVVRIT1IoIlZpbmF5IFNpbWhhIEJOIDxzaW1oYXZjc0BnbWFpbC5jb20+ Iik7Cj4gK01PRFVMRV9ERVNDUklQVElPTigiSkRJIFdVWEdBIExUMDcwTUUwNTAwMCBEU0kgdmlk ZW8vY29tbWFuZCBtb2RlIHBhbmVsIGRyaXZlciIpOwo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYy Iik7Cj4gLS0gCj4gMi4xLjIKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg==