From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [PATCH] drm/panel: Add JDI LT070ME05000 WUXGA DSI Panel Date: Thu, 14 Apr 2016 20:10:48 +0530 Message-ID: <570FABF0.2090405@codeaurora.org> References: <1460528887-22915-1-git-send-email-simhavcs@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1460528887-22915-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 , Archit Taneja , open list , "open list:DRM PANEL DRIVERS" , Rob Herring , Ralf Baechle , Kumar Gala , Shawn Guo , Jonathan Cameron List-Id: devicetree@vger.kernel.org CgpPbiA0LzEzLzIwMTYgMTE6NTggQU0sIFZpbmF5IFNpbWhhIEJOIHdyb3RlOgo+IEFkZCBzdXBw b3J0IGZvciB0aGUgSkRJIGx0MDcwbWUwNTAwMCBXVVhHQSBEU0kgcGFuZWwgdXNlZCBpbgo+IE5l eHVzIDcgMjAxMyBkZXZpY2VzLgo+Cj4gUHJvZ3JhbW1pbmcgc2VxdWVuY2UgZm9yIHRoZSBwYW5l bCBpcyB3YXMgb3JpZ2luYWxseSBmb3VuZCBpbiB0aGUKPiBhbmRyb2lkLW1zbS1mbG8tMy40LWxv bGxpcG9wLXJlbGVhc2UgYnJhbmNoIGZyb206Cj4gICAgICBodHRwczovL2FuZHJvaWQuZ29vZ2xl c291cmNlLmNvbS9rZXJuZWwvbXNtLmdpdAo+Cj4gQW5kIHZpZGVvIG1vZGUgc2V0dGluZyBpcyBm cm9tIGRzaS1wYW5lbC1qZGktZHVhbG1pcGkxLXZpZGVvLmR0c2kKPiBmaWxlIGluOgo+ICAgICAg Z2l0Oi8vY29kZWF1cm9yYS5vcmcva2VybmVsL21zbS0zLjEwLmdpdCAgTE5YLkxBLjMuNl9yYjEu MjcKPgo+IE90aGVyIGZpeGVzIGZvbGRlZCBpbiB3ZXJlIHByb3ZpZGVkCj4gYnkgQXJjaGl0IFRh bmVqYSA8YXJjaGl0LnRhbmVqYUBnbWFpbC5jb20+Cj4KPiBTaWduZWQtb2ZmLWJ5OiBWaW5heSBT aW1oYSBCTiA8c2ltaGF2Y3NAZ21haWwuY29tPgo+IFtzdW1pdC5zZW13YWw6IFBvcnRlZCB0byB0 aGUgZHJtL3BhbmVsIGZyYW1ld29ya10KPiBTaWduZWQtb2ZmLWJ5OiBTdW1pdCBTZW13YWwgPHN1 bWl0LnNlbXdhbEBsaW5hcm8ub3JnPgo+IFtqc3R1bHR6OiBDaGVycnktcGlja2VkIHRvIG1haW5s aW5lLCBmb2xkZWQgZG93biBvdGhlciBmaXhlcwo+ICAgZnJvbSBWaW5heSBhbmQgQXJjaGl0XQo+ IFNpZ25lZC1vZmYtYnk6IEpvaG4gU3R1bHR6IDxqb2huLnN0dWx0ekBsaW5hcm8ub3JnPgo+IC0t LQo+ICAgLi4uL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvamRpLGx0MDcwbWUwNTAwMC50eHQgICAg fCAgMjcgKwo+ICAgLi4uL2RldmljZXRyZWUvYmluZGluZ3MvdmVuZG9yLXByZWZpeGVzLnR4dCAg ICAgICAgfCAgIDEgKwo+ICAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgICAgICAgICAg ICAgICAgICAgICAgfCAgMTEgKwo+ICAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwo+ICAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVs LWpkaS1sdDA3MG1lMDUwMDAuYyAgICAgfCA2ODUgKysrKysrKysrKysrKysrKysrKysrCj4gICA1 IGZpbGVzIGNoYW5nZWQsIDcyNSBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQg RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvamRpLGx0MDcw bWUwNTAwMC50eHQKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcGFuZWwv cGFuZWwtamRpLWx0MDcwbWUwNTAwMC5jCj4KPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9k ZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvamRpLGx0MDcwbWUwNTAwMC50eHQgYi9E b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9qZGksbHQwNzBt ZTA1MDAwLnR4dAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMzVjNWFj Nwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu Z3MvZGlzcGxheS9wYW5lbC9qZGksbHQwNzBtZTA1MDAwLnR4dAo+IEBAIC0wLDAgKzEsMjcgQEAK PiArSkRJIG1vZGVsIExUMDcwTUUwNTAwMCAxOTIweDEyMDAgNyIgRFNJIFBhbmVsCj4gKwo+ICtC YXNpYyBkYXRhIHNoZWV0IGlzIGF0Ogo+ICsJaHR0cDovL3BhbmVsb25lLm5ldC9lbi83LTAtaW5j aC9KRElfTFQwNzBNRTA1MDAwXzcuMF9pbmNoLWRhdGFzaGVldAo+ICsKPiArVGhpcyBwYW5lbCBo YXMgdmlkZW8gbW9kZSBpbXBsZW1lbnRlZCBjdXJyZW50bHkgaW4gdGhlIGRyaXZlci4KPiArCj4g K1JlcXVpcmVkIHByb3BlcnRpZXM6Cj4gKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJqZGksbHQw NzBtZTA1MDAwIgo+ICsKPiArT3B0aW9uYWwgcHJvcGVydGllczoKPiArLSBwb3dlci1zdXBwbHk6 IHBoYW5kbGUgb2YgdGhlIHJlZ3VsYXRvciB0aGF0IHByb3ZpZGVzIHRoZSBzdXBwbHkgdm9sdGFn ZQo+ICstIHJlc2V0LWdwaW86IHBoYW5kbGUgb2YgZ3BpbyBmb3IgcmVzZXQgbGluZQo+ICstIGJh Y2tsaWdodDogcGhhbmRsZSBvZiB0aGUgYmFja2xpZ2h0IGRldmljZSBhdHRhY2hlZCB0byB0aGUg cGFuZWwKPiArCj4gK0V4YW1wbGU6Cj4gKwo+ICsJZHNpQDU0MzAwMDAwIHsKPiArCQlwYW5lbDog cGFuZWxAMCB7Cj4gKwkJCWNvbXBhdGlibGUgPSAiamRpLGx0MDcwbWUwNTAwMCI7Cj4gKwkJCXJl ZyA9IDwwPjsKPiArCj4gKwkJCXBvd2VyLXN1cHBseSA9IDwuLi4+Owo+ICsJCQlyZXNldC1ncGlv ID0gPC4uLj47Cj4gKwkJCWJhY2tsaWdodCA9IDwuLi4+Owo+ICsJCX07Cj4gKwl9Owo+IGRpZmYg LS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmVuZG9yLXByZWZpeGVz LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92ZW5kb3ItcHJlZml4ZXMu dHh0Cj4gaW5kZXggYTU4MGYzZS4uZWM0MmJiNCAxMDA2NDQKPiAtLS0gYS9Eb2N1bWVudGF0aW9u L2RldmljZXRyZWUvYmluZGluZ3MvdmVuZG9yLXByZWZpeGVzLnR4dAo+ICsrKyBiL0RvY3VtZW50 YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92ZW5kb3ItcHJlZml4ZXMudHh0Cj4gQEAgLTEzMCw2 ICsxMzAsNyBAQCBpbnZlbnNlbnNlCUludmVuU2Vuc2UgSW5jLgo+ICAgaXNlZQlJU0VFIDIwMDcg Uy5MLgo+ICAgaXNpbAlJbnRlcnNpbAo+ICAgaXNzaQlJbnRlZ3JhdGVkIFNpbGljb24gU29sdXRp b25zIEluYy4KPiAramRpCUphcGFuIERpc3BsYXkgSW5jLgo+ICAgamVkZWMJSkVERUMgU29saWQg U3RhdGUgVGVjaG5vbG9neSBBc3NvY2lhdGlvbgo+ICAga2FybwlLYS1SbyBlbGVjdHJvbmljcyBH bWJICj4gICBrZXltaWxlCUtleW1pbGUgR21iSAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vcGFuZWwvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCj4gaW5kZXgg MTUwMGFiOS4uZjQxNjkwZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2Nv bmZpZwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCj4gQEAgLTYxLDYgKzYx LDE3IEBAIGNvbmZpZyBEUk1fUEFORUxfU0hBUlBfTFExMDFSMVNYMDEKPiAgIAkgIFRvIGNvbXBp bGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUKPiAg IAkgIHdpbGwgYmUgY2FsbGVkIHBhbmVsLXNoYXJwLWxxMTAxcjFzeDAxLgo+Cj4gK2NvbmZpZyBE Uk1fUEFORUxfSkRJX0xUMDcwTUUwNTAwMAo+ICsJdHJpc3RhdGUgIkpESSBMVDA3ME1FMDUwMDAg V1VYR0EgRFNJIHBhbmVsIgo+ICsJZGVwZW5kcyBvbiBPRgo+ICsJZGVwZW5kcyBvbiBEUk1fTUlQ SV9EU0kKPiArCWRlcGVuZHMgb24gQkFDS0xJR0hUX0NMQVNTX0RFVklDRQo+ICsJaGVscAo+ICsJ ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBKREkgV1VYR0Eg RFNJIHZpZGVvLwo+ICsJICBjb21tYW5kIG1vZGUgcGFuZWwgYXMgZm91bmQgaW4gR29vZ2xlIE5l eHVzIDcgKDIwMTMpIGRldmljZXMuCj4gKwkgIFRoZSBwYW5lbCBoYXMgYSAxMjAwKFJHQinDlzE5 MjAgKFdVWEdBKSByZXNvbHV0aW9uIGFuZCB1c2VzCj4gKwkgIDI0IGJpdCBSR0IgcGVyIHBpeGVs Lgo+ICsKPiAgIGNvbmZpZyBEUk1fUEFORUxfU0hBUlBfTFMwNDNUMUxFMDEKPiAgIAl0cmlzdGF0 ZSAiU2hhcnAgTFMwNDNUMUxFMDEgcUhEIHZpZGVvIG1vZGUgcGFuZWwiCj4gICAJZGVwZW5kcyBv biBPRgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgYi9kcml2 ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKPiBpbmRleCBmMjc3ZWVkLi5lNmM2ZmM4IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9wYW5lbC9NYWtlZmlsZQo+IEBAIC01LDMgKzUsNCBAQCBvYmotJChDT05GSUdfRFJN X1BBTkVMX1NBTVNVTkdfTEQ5MDQwKSArPSBwYW5lbC1zYW1zdW5nLWxkOTA0MC5vCj4gICBvYmot JChDT05GSUdfRFJNX1BBTkVMX1NBTVNVTkdfUzZFOEFBMCkgKz0gcGFuZWwtc2Ftc3VuZy1zNmU4 YWEwLm8KPiAgIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0hBUlBfTFExMDFSMVNYMDEpICs9IHBh bmVsLXNoYXJwLWxxMTAxcjFzeDAxLm8KPiAgIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0hBUlBf TFMwNDNUMUxFMDEpICs9IHBhbmVsLXNoYXJwLWxzMDQzdDFsZTAxLm8KPiArb2JqLSQoQ09ORklH X0RSTV9QQU5FTF9KRElfTFQwNzBNRTA1MDAwKSArPSBwYW5lbC1qZGktbHQwNzBtZTA1MDAwLm8K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWpkaS1sdDA3MG1lMDUw MDAuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1qZGktbHQwNzBtZTA1MDAwLmMKPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjA1MWFhMWIKPiAtLS0gL2Rldi9u dWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWpkaS1sdDA3MG1lMDUwMDAu Ywo+IEBAIC0wLDAgKzEsNjg1IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAxNSBJbmZv cmNlQ29tcHV0aW5nCj4gKyAqIEF1dGhvcjogVmluYXkgU2ltaGEgQk4gPHNpbWhhdmNzQGdtYWls LmNvbT4KPiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDE1IExpbmFybyBMdGQKPiArICogQXV0 aG9yOiBTdW1pdCBTZW13YWwgPHN1bWl0LnNlbXdhbEBsaW5hcm8ub3JnPgo+ICsgKgo+ICsgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeSBpdAo+ICsgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCj4gKyAqIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5U QUJJTElUWSBvcgo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCj4gKyAqIG1vcmUgZGV0YWlscy4KPiAr ICoKPiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAo+ICsgKiB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCj4gKyAqLwo+ICsKPiArI2luY2x1 ZGUgPGxpbnV4L2JhY2tsaWdodC5oPgo+ICsjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5o Pgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZi5oPgo+ ICsjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+Cj4gKwo+ICsjaW5jbHVkZSA8 ZHJtL2RybVAuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgo+ICsjaW5jbHVkZSA8ZHJt L2RybV9taXBpX2RzaS5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgo+ICsKPiArI2lu Y2x1ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5oPgo+ICsKPiArLyoKPiArICogRnJvbSBpbnRlcm5l dCBhcmNoaXZlcywgdGhlIHBhbmVsIGZvciBOZXh1cyA3IDJuZCBHZW4sIDIwMTMgbW9kZWwgaXMg YQo+ICsgKiBKREkgbW9kZWwgTFQwNzBNRTA1MDAwLCBhbmQgaXRzIGRhdGEgc2hlZXQgaXMgYXQ6 Cj4gKyAqICBodHRwOi8vcGFuZWxvbmUubmV0L2VuLzctMC1pbmNoL0pESV9MVDA3ME1FMDUwMDBf Ny4wX2luY2gtZGF0YXNoZWV0Cj4gKyAqLwo+ICtzdHJ1Y3QgamRpX3BhbmVsIHsKPiArCXN0cnVj dCBkcm1fcGFuZWwgYmFzZTsKPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaTsKPiArCj4g KwkvKiBUT0RPOiBBZGQgYmFja2lsZ2h0IHN1cHBvcnQgKi8KPiArCXN0cnVjdCBiYWNrbGlnaHRf ZGV2aWNlICpiYWNrbGlnaHQ7Cj4gKwlzdHJ1Y3QgcmVndWxhdG9yICpzdXBwbHk7Cj4gKwlzdHJ1 Y3QgZ3Bpb19kZXNjICpyZXNldF9ncGlvOwo+ICsJc3RydWN0IGdwaW9fZGVzYyAqZW5hYmxlX2dw aW87Cj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICp2Y2NfZ3BpbzsKPiArCj4gKwlzdHJ1Y3QgcmVndWxh dG9yICpiYWNrbGl0Owo+ICsJc3RydWN0IHJlZ3VsYXRvciAqbHZzNzsKPiArCXN0cnVjdCByZWd1 bGF0b3IgKmF2ZGQ7Cj4gKwlzdHJ1Y3QgcmVndWxhdG9yICppb3ZkZDsKPiArCXN0cnVjdCBncGlv X2Rlc2MgKnB3bV9ncGlvOwo+ICsKPiArCWJvb2wgcHJlcGFyZWQ7Cj4gKwlib29sIGVuYWJsZWQ7 Cj4gKwo+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7Cj4gK307Cj4gKwo+ ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBqZGlfcGFuZWwgKnRvX2pkaV9wYW5lbChzdHJ1Y3QgZHJt X3BhbmVsICpwYW5lbCkKPiArewo+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihwYW5lbCwgc3RydWN0 IGpkaV9wYW5lbCwgYmFzZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBjaGFyIE1DQVBbMl0gPSB7MHhC MCwgMHgwMH07Cj4gK3N0YXRpYyBjaGFyIGludGVyZmFjZV9zZXR0aW5nX2NtZFs2XSA9IHsweEIz LCAweDA0LCAweDA4LCAweDAwLCAweDIyLCAweDAwfTsKPiArc3RhdGljIGNoYXIgaW50ZXJmYWNl X3NldHRpbmdbNl0gPSB7MHhCMywgMHgyNiwgMHgwOCwgMHgwMCwgMHgyMCwgMHgwMH07Cj4gKwo+ ICtzdGF0aWMgY2hhciBpbnRlcmZhY2VfSURfc2V0dGluZ1syXSA9IHsweEI0LCAweDBDfTsKPiAr c3RhdGljIGNoYXIgRFNJX2NvbnRyb2xbM10gPSB7MHhCNiwgMHgzQSwgMHhEM307Cj4gKwo+ICtz dGF0aWMgY2hhciB0ZWFyX3NjYW5fbGluZVszXSA9IHsweDQ0LCAweDAzLCAweDAwfTsKPiArCj4g Ky8qIGZvciBmcHMgY29udHJvbCwgc2V0IGZwcyB0byA2MC4zMkh6ICovCj4gK3N0YXRpYyBjaGFy IExUUFNfdGltaW5nX3NldHRpbmdbMl0gPSB7MHhDNiwgMHg3OH07Cj4gK3N0YXRpYyBjaGFyIHNl cXVlbmNlcl90aW1pbmdfY29udHJvbFsyXSA9IHsweEQ2LCAweDAxfTsKPiArCj4gKy8qIHNldCBi cmlnaHRuZXNzICovCj4gK3N0YXRpYyBjaGFyIHdyaXRlX2Rpc3BsYXlfYnJpZ2h0bmVzc1tdID0g ezB4NTEsIDB4RkZ9Owo+ICsvKiBlbmFibGUgTEVEUFdNIHBpbiBvdXRwdXQsIHR1cm4gb24gTEVE UFdNIG91dHB1dCwgdHVybiBvZmYgcHdtIGRpbW1pbmcgKi8KPiArc3RhdGljIGNoYXIgd3JpdGVf Y29udHJvbF9kaXNwbGF5W10gPSB7MHg1MywgMHgyNH07Cj4gKy8qCj4gKyAqIGNob29zZSBjYWJj IG1vZGUsIDB4MDAoLTAlKSwgMHgwMSgtMTUlKSwgMHgwMigtNDAlKSwgMHgwMygtNTQlKSwKPiAr ICogZGlzYWJsZSBTUkUoc3VubGlnaHQgcmVhZGFiaWxpdHkgZW5oYW5jZW1lbnQpCj4gKyAqLwo+ ICtzdGF0aWMgY2hhciB3cml0ZV9jYWJjW10gPSB7MHg1NSwgMHgwMH07Cj4gKy8qIGZvciBjYWJj IG1vZGUgMHgxKC0xNSUpICovCj4gK3N0YXRpYyBjaGFyIGJhY2tsaWdodF9jb250cm9sMVtdID0g ezB4QjgsIDB4MDcsIDB4ODcsIDB4MjYsIDB4MTgsIDB4MDAsIDB4MzJ9Owo+ICsvKiBmb3IgY2Fi YyBtb2RlIDB4MigtNDAlKSAqLwo+ICtzdGF0aWMgY2hhciBiYWNrbGlnaHRfY29udHJvbDJbXSA9 IHsweEI5LCAweDA3LCAweDc1LCAweDYxLCAweDIwLCAweDE2LCAweDg3fTsKPiArLyogZm9yIGNh YmMgbW9kZSAweDMoLTU0JSkgKi8KPiArc3RhdGljIGNoYXIgYmFja2xpZ2h0X2NvbnRyb2wzW10g PSB7MHhCQSwgMHgwNywgMHg3MCwgMHg4MSwgMHgyMCwgMHg0NSwgMHhCNH07Cj4gKy8qIGZvciBw d20gZnJlcXVlbmN5IGFuZCBkaW1taW5nIGNvbnRyb2wgKi8KPiArc3RhdGljIGNoYXIgYmFja2xp Z2h0X2NvbnRyb2w0W10gPSB7MHhDRSwgMHg3RCwgMHg0MCwgMHg0OCwgMHg1NiwgMHg2NywgMHg3 OCwKPiArCQkweDg4LCAweDk4LCAweEE3LCAweEI1LCAweEMzLCAweEQxLCAweERFLCAweEU5LCAw eEYyLCAweEZBLAo+ICsJCTB4RkYsIDB4MzcsIDB4RjUsIDB4MEYsIDB4MEYsIDB4NDIsIDB4MDB9 OwoKQXBhcnQgZnJvbSB0aGUgdTggY29udmVyc2lvbiBhcyBtZW50aW9uZWQgYnkgVGhpZXJyeSwg eW91IHNob3VsZApjb252ZXJ0IHRoZXNlIHRvIGNvbnN0IHRvby4KCj4gKwo+ICtzdGF0aWMgaW50 IGpkaV9wYW5lbF9pbml0KHN0cnVjdCBqZGlfcGFuZWwgKmpkaSkKPiArewo+ICsJc3RydWN0IG1p cGlfZHNpX2RldmljZSAqZHNpID0gamRpLT5kc2k7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWRzaS0+ bW9kZV9mbGFncyB8PSBNSVBJX0RTSV9NT0RFX0xQTTsKPiArCj4gKwlpZiAoZHNpLT5tb2RlX2Zs YWdzICYgTUlQSV9EU0lfTU9ERV9WSURFTykgewo+ICsJCXJldCA9IG1pcGlfZHNpX2Rjc19zb2Z0 X3Jlc2V0KGRzaSk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJ CW1kZWxheSgxMCk7Cj4gKwo+ICsJCXJldCA9IG1pcGlfZHNpX2Rjc19zZXRfcGl4ZWxfZm9ybWF0 KGRzaSwgMHg3MCk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJ CXJldCA9IG1pcGlfZHNpX2Rjc19zZXRfY29sdW1uX2FkZHJlc3MoZHNpLCAweDAwMDAsIDB4MDRB Rik7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCXJldCA9IG1p cGlfZHNpX2Rjc19zZXRfcGFnZV9hZGRyZXNzKGRzaSwgMHgwMDAwLCAweDA3N0YpOwo+ICsJCWlm IChyZXQgPCAwKQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsKPiArCQlyZXQgPSBtaXBpX2RzaV9kY3Nf c2V0X3RlYXJfb24oZHNpLAo+ICsJCQkJCSAgICAgICBNSVBJX0RTSV9EQ1NfVEVBUl9NT0RFX1ZC TEFOSyk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwkJbWRlbGF5KDUp Owo+ICsKPiArCQlyZXQgPSBtaXBpX2RzaV9nZW5lcmljX3dyaXRlKGRzaSwgdGVhcl9zY2FuX2xp bmUsCj4gKwkJCQkJICAgICBzaXplb2YodGVhcl9zY2FuX2xpbmUpKTsKPiArCQlpZiAocmV0IDwg MCkKPiArCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJcmV0ID0gbWlwaV9kc2lfZGNzX3dyaXRlX2J1 ZmZlcihkc2ksIHdyaXRlX2Rpc3BsYXlfYnJpZ2h0bmVzcywKPiArCQkJCQkJc2l6ZW9mKHdyaXRl X2Rpc3BsYXlfYnJpZ2h0bmVzcykKPiArCQkJCQkJKTsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJ cmV0dXJuIHJldDsKPiArCj4gKwkJcmV0ID0gbWlwaV9kc2lfZGNzX3dyaXRlX2J1ZmZlcihkc2ks IHdyaXRlX2NvbnRyb2xfZGlzcGxheSwKPiArCQkJCQkJc2l6ZW9mKHdyaXRlX2NvbnRyb2xfZGlz cGxheSkpOwo+ICsJCWlmIChyZXQgPCAwKQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsKPiArCQlyZXQg PSBtaXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVyKGRzaSwgd3JpdGVfY2FiYywKPiArCQkJCQkJc2l6 ZW9mKHdyaXRlX2NhYmMpKTsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJcmV0dXJuIHJldDsKPiAr Cj4gKwkJcmV0ID0gbWlwaV9kc2lfZGNzX2V4aXRfc2xlZXBfbW9kZShkc2kpOwo+ICsJCWlmIChy ZXQgPCAwKQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJCW1kZWxheSgxMjApOwo+ICsKPiArCQlyZXQg PSBtaXBpX2RzaV9nZW5lcmljX3dyaXRlKGRzaSwgTUNBUCwgc2l6ZW9mKE1DQVApKTsKPiArCQlp ZiAocmV0IDwgMCkKPiArCQkJcmV0dXJuIHJldDsKPiArCQltZGVsYXkoMTApOwo+ICsKPiArCQly ZXQgPSBtaXBpX2RzaV9nZW5lcmljX3dyaXRlKGRzaSwgaW50ZXJmYWNlX3NldHRpbmcsCj4gKwkJ CQkJICAgICBzaXplb2YoaW50ZXJmYWNlX3NldHRpbmcpKTsKPiArCQlpZiAocmV0IDwgMCkKPiAr CQkJcmV0dXJuIHJldDsKPiArCQltZGVsYXkoMjApOwo+ICsKPiArCQliYWNrbGlnaHRfY29udHJv bDRbMThdID0gMHgwNDsKPiArCQliYWNrbGlnaHRfY29udHJvbDRbMTldID0gMHgwMDsKCkFueSBy ZWFzb24gd2h5IHRoZXNlIGFyZSBvdmVyd3JpdHRlbj8gSXQgd291bGQgYmUgYmV0dGVyIHRvIGhh dmUgdGhlc2UKdmFsdWVzIGluIHRoZSBhcnJheSBpdHNlbGYuCgo+ICsKPiArCQlyZXQgPSBtaXBp X2RzaV9nZW5lcmljX3dyaXRlKGRzaSwgYmFja2xpZ2h0X2NvbnRyb2w0LAo+ICsJCQkJCSAgICAg c2l6ZW9mKGJhY2tsaWdodF9jb250cm9sNCkpOwo+ICsJCWlmIChyZXQgPCAwKQo+ICsJCQlyZXR1 cm4gcmV0Owo+ICsJCW1kZWxheSgyMCk7Cj4gKwo+ICsJCU1DQVBbMV0gPSAweDAzOwo+ICsJCXJl dCA9IG1pcGlfZHNpX2dlbmVyaWNfd3JpdGUoZHNpLCBNQ0FQLCBzaXplb2YoTUNBUCkpOwo+ICsJ CWlmIChyZXQgPCAwKQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJfSBlbHNlIHsKPiArCQkvKgo+ICsJ CSAqIFRPRE8gOiBuZWVkIHRvIHZlcmlmeSBwYW5lbCBzZXR0aW5ncyB3aGVuCj4gKwkJICogZHNp IGNtZCBtb2RlIHN1cHBvcnRlZCBmb3IgYXBxODA2NCAtIHNpbWhhdmNzCj4gKwkJICovCj4gKwkJ cmV0ID0gbWlwaV9kc2lfZGNzX3NvZnRfcmVzZXQoZHNpKTsKPiArCQlpZiAocmV0IDwgMCkKPiAr CQkJcmV0dXJuIHJldDsKPiArCj4gKwkJbWRlbGF5KDUpOwo+ICsKPiArCQlyZXQgPSBtaXBpX2Rz aV9nZW5lcmljX3dyaXRlKGRzaSwgTUNBUCwgc2l6ZW9mKE1DQVApKTsKPiArCQlpZiAocmV0IDwg MCkKPiArCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJcmV0ID0gbWlwaV9kc2lfZ2VuZXJpY193cml0 ZShkc2ksIGludGVyZmFjZV9zZXR0aW5nX2NtZCwKPiArCQkJCQkgICAgIHNpemVvZihpbnRlcmZh Y2Vfc2V0dGluZ19jbWQpKTsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJcmV0dXJuIHJldDsKPiAr Cj4gKwkJcmV0ID0gbWlwaV9kc2lfZ2VuZXJpY193cml0ZShkc2ksIGludGVyZmFjZV9JRF9zZXR0 aW5nLAo+ICsJCQkJCSAgICAgc2l6ZW9mKGludGVyZmFjZV9JRF9zZXR0aW5nKSk7Cj4gKwkJaWYg KHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCXJldCA9IG1pcGlfZHNpX2dlbmVy aWNfd3JpdGUoZHNpLCBEU0lfY29udHJvbCwKPiArCQkJCQkgICAgIHNpemVvZihEU0lfY29udHJv bCkpOwo+ICsJCWlmIChyZXQgPCAwKQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsKPiArCQlyZXQgPSBt aXBpX2RzaV9nZW5lcmljX3dyaXRlKGRzaSwgTFRQU190aW1pbmdfc2V0dGluZywKPiArCQkJCQkg ICAgIHNpemVvZihMVFBTX3RpbWluZ19zZXR0aW5nKSk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJ CXJldHVybiByZXQ7Cj4gKwo+ICsJCXJldCA9IG1pcGlfZHNpX2dlbmVyaWNfd3JpdGUoZHNpLCBz ZXF1ZW5jZXJfdGltaW5nX2NvbnRyb2wsCj4gKwkJCQkJICAgICBzaXplb2Yoc2VxdWVuY2VyX3Rp bWluZ19jb250cm9sKSk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ ICsJCXJldCA9IG1pcGlfZHNpX2Rjc193cml0ZV9idWZmZXIoZHNpLCB3cml0ZV9kaXNwbGF5X2Jy aWdodG5lc3MsCj4gKwkJCQkJCXNpemVvZih3cml0ZV9kaXNwbGF5X2JyaWdodG5lc3MpCj4gKwkJ CQkJCSk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCXJldCA9 IG1pcGlfZHNpX2Rjc193cml0ZV9idWZmZXIoZHNpLCB3cml0ZV9jb250cm9sX2Rpc3BsYXksCj4g KwkJCQkJCXNpemVvZih3cml0ZV9jb250cm9sX2Rpc3BsYXkpKTsKPiArCQlpZiAocmV0IDwgMCkK PiArCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJcmV0ID0gbWlwaV9kc2lfZGNzX3dyaXRlX2J1ZmZl cihkc2ksIHdyaXRlX2NhYmMsCj4gKwkJCQkJCXNpemVvZih3cml0ZV9jYWJjKSk7Cj4gKwkJaWYg KHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCXJldCA9IG1pcGlfZHNpX2dlbmVy aWNfd3JpdGUoZHNpLCBiYWNrbGlnaHRfY29udHJvbDEsCj4gKwkJCQkJICAgICBzaXplb2YoYmFj a2xpZ2h0X2NvbnRyb2wxKSk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4g Kwo+ICsJCXJldCA9IG1pcGlfZHNpX2dlbmVyaWNfd3JpdGUoZHNpLCBiYWNrbGlnaHRfY29udHJv bDIsCj4gKwkJCQkJICAgICBzaXplb2YoYmFja2xpZ2h0X2NvbnRyb2wyKSk7Cj4gKwkJaWYgKHJl dCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCXJldCA9IG1pcGlfZHNpX2dlbmVyaWNf d3JpdGUoZHNpLCBiYWNrbGlnaHRfY29udHJvbDMsCj4gKwkJCQkJICAgICBzaXplb2YoYmFja2xp Z2h0X2NvbnRyb2wzKSk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ ICsJCXJldCA9IG1pcGlfZHNpX2dlbmVyaWNfd3JpdGUoZHNpLCBiYWNrbGlnaHRfY29udHJvbDQs Cj4gKwkJCQkJICAgICBzaXplb2YoYmFja2xpZ2h0X2NvbnRyb2w0KSk7Cj4gKwkJaWYgKHJldCA8 IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCXJldCA9IG1pcGlfZHNpX2Rjc19zZXRfcGl4 ZWxfZm9ybWF0KGRzaSwgMHg3Nyk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7 Cj4gKwo+ICsJCXJldCA9IG1pcGlfZHNpX2Rjc19zZXRfY29sdW1uX2FkZHJlc3MoZHNpLCAweDAw MDAsIDB4MDRBRik7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJ CXJldCA9IG1pcGlfZHNpX2Rjc19zZXRfcGFnZV9hZGRyZXNzKGRzaSwgMHgwMDAwLCAweDA3N0Yp Owo+ICsJCWlmIChyZXQgPCAwKQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJCW1kZWxheSgxMjApOwo+ ICsKPiArCQlyZXQgPSBtaXBpX2RzaV9kY3NfZXhpdF9zbGVlcF9tb2RlKGRzaSk7Cj4gKwkJaWYg KHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgamRpX3BhbmVsX29uKHN0cnVjdCBqZGlfcGFuZWwgKmpkaSkKPiAr ewo+ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gamRpLT5kc2k7Cj4gKwlpbnQgcmV0 Owo+ICsKPiArCWRzaS0+bW9kZV9mbGFncyB8PSBNSVBJX0RTSV9NT0RFX0xQTTsKPiArCj4gKwly ZXQgPSBtaXBpX2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb24oZHNpKTsKPiArCWlmIChyZXQgPCAwKQo+ ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg amRpX3BhbmVsX29mZihzdHJ1Y3QgamRpX3BhbmVsICpqZGkpCj4gK3sKPiArCXN0cnVjdCBtaXBp X2RzaV9kZXZpY2UgKmRzaSA9IGpkaS0+ZHNpOwo+ICsJaW50IHJldDsKPiArCj4gKwlkc2ktPm1v ZGVfZmxhZ3MgJj0gfk1JUElfRFNJX01PREVfTFBNOwo+ICsKPiArCXJldCA9IG1pcGlfZHNpX2Rj c19zZXRfZGlzcGxheV9vZmYoZHNpKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7 Cj4gKwo+ICsJcmV0ID0gbWlwaV9kc2lfZGNzX2VudGVyX3NsZWVwX21vZGUoZHNpKTsKPiArCWlm IChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0ID0gbWlwaV9kc2lfZGNzX3Nl dF90ZWFyX29mZihkc2kpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCj4g Kwltc2xlZXAoMTAwKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBq ZGlfcGFuZWxfZGlzYWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJc3RydWN0 IGpkaV9wYW5lbCAqamRpID0gdG9famRpX3BhbmVsKHBhbmVsKTsKPiArCj4gKwlpZiAoIWpkaS0+ ZW5hYmxlZCkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlEUk1fREVCVUcoImRpc2FibGVcbiIpOwo+ ICsKPiArCWlmIChqZGktPmJhY2tsaWdodCkgewo+ICsJCWpkaS0+YmFja2xpZ2h0LT5wcm9wcy5w b3dlciA9IEZCX0JMQU5LX1BPV0VSRE9XTjsKPiArCQliYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyhq ZGktPmJhY2tsaWdodCk7Cj4gKwl9Cj4gKwo+ICsJamRpLT5lbmFibGVkID0gZmFsc2U7Cj4gKwo+ ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgamRpX3BhbmVsX3VucHJlcGFyZShz dHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJc3RydWN0IGpkaV9wYW5lbCAqamRpID0g dG9famRpX3BhbmVsKHBhbmVsKTsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKCFqZGktPnByZXBh cmVkKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCURSTV9ERUJVRygidW5wcmVwYXJlXG4iKTsKPiAr Cj4gKwlyZXQgPSBqZGlfcGFuZWxfb2ZmKGpkaSk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2X2Vy cihwYW5lbC0+ZGV2LCAiZmFpbGVkIHRvIHNldCBwYW5lbCBvZmY6ICVkXG4iLCByZXQpOwo+ICsJ CXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmVndWxhdG9yX2Rpc2FibGUoamRpLT5zdXBwbHkp Owo+ICsKPiArCWlmIChqZGktPnZjY19ncGlvKQo+ICsJCWdwaW9kX3NldF92YWx1ZShqZGktPnZj Y19ncGlvLCAwKTsKPiArCj4gKwlpZiAoamRpLT5yZXNldF9ncGlvKQo+ICsJCWdwaW9kX3NldF92 YWx1ZShqZGktPnJlc2V0X2dwaW8sIDApOwo+ICsKPiArCWlmIChqZGktPmVuYWJsZV9ncGlvKQo+ ICsJCWdwaW9kX3NldF92YWx1ZShqZGktPmVuYWJsZV9ncGlvLCAwKTsKPiArCj4gKwlqZGktPnBy ZXBhcmVkID0gZmFsc2U7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg amRpX3BhbmVsX3ByZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXN0cnVj dCBqZGlfcGFuZWwgKmpkaSA9IHRvX2pkaV9wYW5lbChwYW5lbCk7Cj4gKwlpbnQgcmV0Owo+ICsK PiArCWlmIChqZGktPnByZXBhcmVkKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCURSTV9ERUJVRygi cHJlcGFyZVxuIik7Cj4gKwo+ICsJcmV0ID0gcmVndWxhdG9yX2VuYWJsZShqZGktPmlvdmRkKTsK PiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0ID0gcmVndWxhdG9y X2VuYWJsZShqZGktPmF2ZGQpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiAr Cj4gKwlyZXQgPSByZWd1bGF0b3JfZW5hYmxlKGpkaS0+YmFja2xpdCk7Cj4gKwlpZiAocmV0IDwg MCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXJldCA9IHJlZ3VsYXRvcl9lbmFibGUoamRpLT5s dnM3KTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0ID0gcmVn dWxhdG9yX2VuYWJsZShqZGktPnN1cHBseSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4g cmV0Owo+ICsKPiArCW1zbGVlcCgyMCk7Cj4gKwo+ICsJaWYgKGpkaS0+dmNjX2dwaW8pIHsKPiAr CQlncGlvZF9zZXRfdmFsdWUoamRpLT52Y2NfZ3BpbywgMSk7Cj4gKwkJdXNsZWVwX3JhbmdlKDEw LCAyMCk7Cj4gKwl9Cj4gKwo+ICsJaWYgKGpkaS0+cmVzZXRfZ3Bpbykgewo+ICsJCWdwaW9kX3Nl dF92YWx1ZShqZGktPnJlc2V0X2dwaW8sIDEpOwo+ICsJCXVzbGVlcF9yYW5nZSgxMCwgMjApOwo+ ICsJfQo+ICsKPiArCWlmIChqZGktPnB3bV9ncGlvKSB7Cj4gKwkJZ3Bpb2Rfc2V0X3ZhbHVlKGpk aS0+cHdtX2dwaW8sIDEpOwo+ICsJCXVzbGVlcF9yYW5nZSgxMCwgMjApOwo+ICsJfQo+ICsKPiAr CWlmIChqZGktPmVuYWJsZV9ncGlvKSB7Cj4gKwkJZ3Bpb2Rfc2V0X3ZhbHVlKGpkaS0+ZW5hYmxl X2dwaW8sIDEpOwo+ICsJCXVzbGVlcF9yYW5nZSgxMCwgMjApOwo+ICsJfQo+ICsKPiArCXJldCA9 IGpkaV9wYW5lbF9pbml0KGpkaSk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2X2VycihwYW5lbC0+ ZGV2LCAiZmFpbGVkIHRvIGluaXQgcGFuZWw6ICVkXG4iLCByZXQpOwo+ICsJCWdvdG8gcG93ZXJv ZmY7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gamRpX3BhbmVsX29uKGpkaSk7Cj4gKwlpZiAocmV0KSB7 Cj4gKwkJZGV2X2VycihwYW5lbC0+ZGV2LCAiZmFpbGVkIHRvIHNldCBwYW5lbCBvbjogJWRcbiIs IHJldCk7Cj4gKwkJZ290byBwb3dlcm9mZjsKPiArCX0KPiArCj4gKwlqZGktPnByZXBhcmVkID0g dHJ1ZTsKPiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK3Bvd2Vyb2ZmOgo+ICsJcmVndWxhdG9yX2Rp c2FibGUoamRpLT5zdXBwbHkpOwo+ICsJaWYgKGpkaS0+cmVzZXRfZ3BpbykKPiArCQlncGlvZF9z ZXRfdmFsdWUoamRpLT5yZXNldF9ncGlvLCAwKTsKPiArCWlmIChqZGktPmVuYWJsZV9ncGlvKQo+ ICsJCWdwaW9kX3NldF92YWx1ZShqZGktPmVuYWJsZV9ncGlvLCAwKTsKPiArCWlmIChqZGktPnZj Y19ncGlvKQo+ICsJCWdwaW9kX3NldF92YWx1ZShqZGktPnZjY19ncGlvLCAwKTsKPiArCj4gKwly ZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGpkaV9wYW5lbF9lbmFibGUoc3RydWN0 IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXN0cnVjdCBqZGlfcGFuZWwgKmpkaSA9IHRvX2pk aV9wYW5lbChwYW5lbCk7Cj4gKwo+ICsJaWYgKGpkaS0+ZW5hYmxlZCkKPiArCQlyZXR1cm4gMDsK PiArCj4gKwlEUk1fREVCVUcoImVuYWJsZVxuIik7Cj4gKwo+ICsJaWYgKGpkaS0+YmFja2xpZ2h0 KSB7Cj4gKwkJamRpLT5iYWNrbGlnaHQtPnByb3BzLnBvd2VyID0gRkJfQkxBTktfVU5CTEFOSzsK PiArCQliYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyhqZGktPmJhY2tsaWdodCk7Cj4gKwl9Cj4gKwo+ ICsJamRpLT5lbmFibGVkID0gdHJ1ZTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQoKVGhlIHByZXBh cmUvZW5hYmxlIHNwbGl0IHNlZW1zIGEgYml0IHN0cmFuZ2UuIERvbid0IHdlIHdhbnQgdG8gcHV0 Cm1pcGlfZHNpX2Rjc19zZXRfZGlzcGxheV9vbiBpbiB0aGUgZW5hYmxlKCkgb3AgdG9vPwoKPiAr Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBkZWZhdWx0X21vZGUgPSB7 Cj4gKwkJLmNsb2NrID0gMTU1MDAwLAoKaHRvdGFsICogdnRvdGFsICogdnJlZnJlc2ggKDE5MzQg KiAxMzQwICogNjAuMzIoYXMgaW4gY29tbWVudCkpIGNvbWVzCmF0IGFyb3VuZCAxNTYuMyBNaHou IENvdWxkIHlvdSBwbHVnIGluIHRoZSBjb3JyZWN0IGZyZXF1ZW5jeT8KCj4gKwkJLmhkaXNwbGF5 ID0gMTIwMCwKPiArCQkuaHN5bmNfc3RhcnQgPSAxMjAwICsgNDgsCj4gKwkJLmhzeW5jX2VuZCA9 IDEyMDAgKyA0OCArIDMyLAo+ICsJCS5odG90YWwgPSAxMjAwICsgNDggKyAzMiArIDYwLAo+ICsJ CS52ZGlzcGxheSA9IDE5MjAsCj4gKwkJLnZzeW5jX3N0YXJ0ID0gMTkyMCArIDMsCj4gKwkJLnZz eW5jX2VuZCA9IDE5MjAgKyAzICsgNSwKPiArCQkudnRvdGFsID0gMTkyMCArIDMgKyA1ICsgNiwK PiArCQkudnJlZnJlc2ggPSA2MCwKPiArCQkuZmxhZ3MgPSAwLAo+ICt9Owo+ICsKPiArc3RhdGlj IGludCBqZGlfcGFuZWxfZ2V0X21vZGVzKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+ICt7Cj4g KwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKPiArCj4gKwltb2RlID0gZHJtX21vZGVf ZHVwbGljYXRlKHBhbmVsLT5kcm0sICZkZWZhdWx0X21vZGUpOwo+ICsJaWYgKCFtb2RlKSB7Cj4g KwkJZGV2X2VycihwYW5lbC0+ZHJtLT5kZXYsICJmYWlsZWQgdG8gYWRkIG1vZGUgJXV4JXV4QCV1 XG4iLAo+ICsJCQlkZWZhdWx0X21vZGUuaGRpc3BsYXksIGRlZmF1bHRfbW9kZS52ZGlzcGxheSwK PiArCQkJZGVmYXVsdF9tb2RlLnZyZWZyZXNoKTsKCldlIHNob3VsZCB1c2UgdGhlIGRzaS0+ZGV2 IGRldmljZSBwb2ludGVyIGhlcmUgbGlrZSB1c2VkIGVsc2V3aGVyZSwgbm90CnRoZSBkcm0gZGV2 aWNlIHBvaW50ZXIuCgo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJfQo+ICsKPiArCWRybV9tb2Rl X3NldF9uYW1lKG1vZGUpOwo+ICsKPiArCWRybV9tb2RlX3Byb2JlZF9hZGQocGFuZWwtPmNvbm5l Y3RvciwgbW9kZSk7Cj4gKwo+ICsJcmV0dXJuIDE7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX3BhbmVsX2Z1bmNzIGpkaV9wYW5lbF9mdW5jcyA9IHsKPiArCQkuZGlzYWJsZSA9 IGpkaV9wYW5lbF9kaXNhYmxlLAo+ICsJCS51bnByZXBhcmUgPSBqZGlfcGFuZWxfdW5wcmVwYXJl LAo+ICsJCS5wcmVwYXJlID0gamRpX3BhbmVsX3ByZXBhcmUsCj4gKwkJLmVuYWJsZSA9IGpkaV9w YW5lbF9lbmFibGUsCj4gKwkJLmdldF9tb2RlcyA9IGpkaV9wYW5lbF9nZXRfbW9kZXMsCj4gK307 Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBqZGlfb2ZfbWF0Y2hbXSA9 IHsKPiArCQl7IC5jb21wYXRpYmxlID0gImpkaSxsdDA3MG1lMDUwMDAiLCB9LAo+ICsJCXsgfQo+ ICt9Owo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBqZGlfb2ZfbWF0Y2gpOwo+ICsKPiArc3Rh dGljIGludCBqZGlfcGFuZWxfYWRkKHN0cnVjdCBqZGlfcGFuZWwgKmpkaSkKPiArewo+ICsJc3Ry dWN0IGRldmljZSAqZGV2ID0gJmpkaS0+ZHNpLT5kZXY7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWpk aS0+bW9kZSA9ICZkZWZhdWx0X21vZGU7Cj4gKwo+ICsJLyogbHZzNSAqLwo+ICsJamRpLT5zdXBw bHkgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoZGV2LCAicG93ZXIiKTsKPiArCWlmIChJU19FUlIoamRp LT5zdXBwbHkpKQo+ICsJCXJldHVybiBQVFJfRVJSKGpkaS0+c3VwcGx5KTsKCllvdSBjb3VsZCBj b25zaWRlciB1c2luZyByZWd1bGF0b3JfZ2V0X2J1bGsoKSBhcGkgaGVyZSwgaXQgd291bGQgY2xl YW4KdXAgdGhlIGNvZGUgYSBiaXQuCgo+ICsKPiArCS8qIGwxNyAqLwo+ICsJamRpLT5iYWNrbGl0 ID0gZGV2bV9yZWd1bGF0b3JfZ2V0KGRldiwgImJhY2tsaXQiKTsKPiArCWlmIChJU19FUlIoamRp LT5zdXBwbHkpKQo+ICsJCXJldHVybiBQVFJfRVJSKGpkaS0+c3VwcGx5KTsKPiArCj4gKwlqZGkt Pmx2czcgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoZGV2LCAibHZzNyIpOwo+ICsJaWYgKElTX0VSUihq ZGktPmx2czcpKQo+ICsJCXJldHVybiBQVFJfRVJSKGpkaS0+bHZzNyk7Cj4gKwo+ICsJamRpLT5h dmRkID0gZGV2bV9yZWd1bGF0b3JfZ2V0KGRldiwgImF2ZGQiKTsKPiArCWlmIChJU19FUlIoamRp LT5hdmRkKSkKPiArCQlyZXR1cm4gUFRSX0VSUihqZGktPmF2ZGQpOwo+ICsKPiArCWpkaS0+aW92 ZGQgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoZGV2LCAiaW92ZGQiKTsKPiArCWlmIChJU19FUlIoamRp LT5pb3ZkZCkpCj4gKwkJcmV0dXJuIFBUUl9FUlIoamRpLT5pb3ZkZCk7Cj4gKwo+ICsJamRpLT52 Y2NfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgInZjYyIsIEdQSU9EX09VVF9MT1cpOwo+ICsJ aWYgKElTX0VSUihqZGktPnZjY19ncGlvKSkgewo+ICsJCWRldl9lcnIoZGV2LCAiY2Fubm90IGdl dCB2Y2MtZ3BpbyAlbGRcbiIsCj4gKwkJCVBUUl9FUlIoamRpLT52Y2NfZ3BpbykpOwo+ICsJCWpk aS0+dmNjX2dwaW8gPSBOVUxMOwo+ICsJfSBlbHNlIHsKPiArCQlncGlvZF9kaXJlY3Rpb25fb3V0 cHV0KGpkaS0+dmNjX2dwaW8sIDApOwo+ICsJfQo+ICsKPiArCWpkaS0+cmVzZXRfZ3BpbyA9IGRl dm1fZ3Bpb2RfZ2V0KGRldiwgInJlc2V0IiwgR1BJT0RfT1VUX0xPVyk7Cj4gKwlpZiAoSVNfRVJS KGpkaS0+cmVzZXRfZ3BpbykpIHsKPiArCQlkZXZfZXJyKGRldiwgImNhbm5vdCBnZXQgcmVzZXQt Z3Bpb3MgJWxkXG4iLAo+ICsJCQlQVFJfRVJSKGpkaS0+cmVzZXRfZ3BpbykpOwo+ICsJCWpkaS0+ cmVzZXRfZ3BpbyA9IE5VTEw7Cj4gKwl9IGVsc2Ugewo+ICsJCWdwaW9kX2RpcmVjdGlvbl9vdXRw dXQoamRpLT5yZXNldF9ncGlvLCAwKTsKPiArCX0KPiArCj4gKwlqZGktPmVuYWJsZV9ncGlvID0g ZGV2bV9ncGlvZF9nZXQoZGV2LCAiZW5hYmxlIiwgR1BJT0RfT1VUX0xPVyk7Cj4gKwlpZiAoSVNf RVJSKGpkaS0+ZW5hYmxlX2dwaW8pKSB7Cj4gKwkJZGV2X2VycihkZXYsICJjYW5ub3QgZ2V0IGVu YWJsZS1ncGlvICVsZFxuIiwKPiArCQkJUFRSX0VSUihqZGktPmVuYWJsZV9ncGlvKSk7Cj4gKwkJ amRpLT5lbmFibGVfZ3BpbyA9IE5VTEw7Cj4gKwl9IGVsc2Ugewo+ICsJCWdwaW9kX2RpcmVjdGlv bl9vdXRwdXQoamRpLT5lbmFibGVfZ3BpbywgMCk7Cj4gKwl9Cj4gKwo+ICsJamRpLT5wd21fZ3Bp byA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgInB3bSIsIEdQSU9EX09VVF9MT1cpOwo+ICsJaWYgKElT X0VSUihqZGktPnB3bV9ncGlvKSkgewo+ICsJCWRldl9lcnIoZGV2LCAiY2Fubm90IGdldCBwd20t Z3BpbyAlbGRcbiIsCj4gKwkJCVBUUl9FUlIoamRpLT5wd21fZ3BpbykpOwo+ICsJCWpkaS0+cHdt X2dwaW8gPSBOVUxMOwo+ICsJfSBlbHNlIHsKPiArCQlncGlvZF9kaXJlY3Rpb25fb3V0cHV0KGpk aS0+cHdtX2dwaW8sIDApOwo+ICsJfQo+ICsKPiArCS8qIHdlIGRvbid0IGhhdmUgYmFja2xpZ2h0 IHJpZ2h0IG5vdywgcHJvY2VlZCBmdXJ0aGVyICovCj4gKyNpZmRlZiBCQUNLTElHSFQKPiArCW5w ID0gb2ZfcGFyc2VfcGhhbmRsZShkZXYtPm9mX25vZGUsICJiYWNrbGlnaHQiLCAwKTsKPiArCWlm IChucCkgewo+ICsJCWpkaS0+YmFja2xpZ2h0ID0gb2ZfZmluZF9iYWNrbGlnaHRfYnlfbm9kZShu cCk7Cj4gKwkJb2Zfbm9kZV9wdXQobnApOwo+ICsKPiArCQlpZiAoIWpkaS0+YmFja2xpZ2h0KQo+ ICsJCQlyZXR1cm4gLUVQUk9CRV9ERUZFUjsKPiArCX0KPiArI2VuZGlmCj4gKwo+ICsJZHJtX3Bh bmVsX2luaXQoJmpkaS0+YmFzZSk7Cj4gKwlqZGktPmJhc2UuZnVuY3MgPSAmamRpX3BhbmVsX2Z1 bmNzOwo+ICsJamRpLT5iYXNlLmRldiA9ICZqZGktPmRzaS0+ZGV2Owo+ICsKPiArCXJldCA9IGRy bV9wYW5lbF9hZGQoJmpkaS0+YmFzZSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlnb3RvIHB1dF9i YWNrbGlnaHQ7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtwdXRfYmFja2xpZ2h0Ogo+ICsJaWYg KGpkaS0+YmFja2xpZ2h0KQo+ICsJCXB1dF9kZXZpY2UoJmpkaS0+YmFja2xpZ2h0LT5kZXYpOwo+ ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGpkaV9wYW5lbF9kZWwo c3RydWN0IGpkaV9wYW5lbCAqamRpKQo+ICt7Cj4gKwlpZiAoamRpLT5iYXNlLmRldikKPiArCQlk cm1fcGFuZWxfcmVtb3ZlKCZqZGktPmJhc2UpOwo+ICsKPiArCWlmIChqZGktPmJhY2tsaWdodCkK PiArCQlwdXRfZGV2aWNlKCZqZGktPmJhY2tsaWdodC0+ZGV2KTsKPiArfQo+ICsKPiArc3RhdGlj IGludCBqZGlfcGFuZWxfcHJvYmUoc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpKQo+ICt7Cj4g KwlzdHJ1Y3QgamRpX3BhbmVsICpqZGk7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWRzaS0+bGFuZXMg PSA0Owo+ICsJZHNpLT5mb3JtYXQgPSBNSVBJX0RTSV9GTVRfUkdCODg4Owo+ICsJZHNpLT5tb2Rl X2ZsYWdzID0gIE1JUElfRFNJX01PREVfVklERU9fSFNFIHwgTUlQSV9EU0lfTU9ERV9WSURFTyB8 Cj4gKwkJCU1JUElfRFNJX01PREVfVklERU9fSEZQIHwgTUlQSV9EU0lfTU9ERV9WSURFT19IQlAg fAo+ICsJCQlNSVBJX0RTSV9NT0RFX1ZJREVPX0hTQSB8Cj4gKwkJCU1JUElfRFNJX0NMT0NLX05P Tl9DT05USU5VT1VTOwo+ICsKPiArCWpkaSA9IGRldm1fa3phbGxvYygmZHNpLT5kZXYsIHNpemVv ZigqamRpKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWpkaSkKPiArCQlyZXR1cm4gLUVOT01FTTsK PiArCj4gKwltaXBpX2RzaV9zZXRfZHJ2ZGF0YShkc2ksIGpkaSk7Cj4gKwo+ICsJamRpLT5kc2kg PSBkc2k7Cj4gKwo+ICsJcmV0ID0gamRpX3BhbmVsX2FkZChqZGkpOwo+ICsJaWYgKHJldCA8IDAp Cj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXR1cm4gbWlwaV9kc2lfYXR0YWNoKGRzaSk7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgamRpX3BhbmVsX3JlbW92ZShzdHJ1Y3QgbWlwaV9kc2lfZGV2 aWNlICpkc2kpCj4gK3sKPiArCXN0cnVjdCBqZGlfcGFuZWwgKmpkaSA9IG1pcGlfZHNpX2dldF9k cnZkYXRhKGRzaSk7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IGpkaV9wYW5lbF9kaXNhYmxl KCZqZGktPmJhc2UpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJZGV2X2VycigmZHNpLT5kZXYsICJm YWlsZWQgdG8gZGlzYWJsZSBwYW5lbDogJWRcbiIsIHJldCk7CgpJZGVhbGx5LCB0aGUgZHJpdmVy J3MgcmVtb3ZlIG9wIHNob3VsZG4ndCB0cnkgdG8gZGlzYWJsZSB0aGUgcGFuZWwuIEl0CnNob3Vs ZCBiZSBkb25lIGJ5IHRoZSBkc2kgaG9zdCdzIGNvbm5lY3RvciBpdHNlbGYuIFdlIGNhbiBkcm9w IHRoaXMKdW5sZXNzIHRoZXJlIGlzIGEgc3BlY2ZpYyByZWFzb24gdG8gZG8gc28uCgpUaGFua3Mg Zm9yIHdvcmtpbmcgb24gdGhpcy4KCkFyY2hpdAoKLS0gClF1YWxjb21tIElubm92YXRpb24gQ2Vu dGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIENvZGUgQXVyb3JhIEZvcnVtLAphIExpbnV4IEZvdW5k YXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbAo=