From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hyungwon Hwang Subject: Re: [v3,2/3] drm/panel: add s6e63j0x03 LCD panel driver Date: Fri, 12 Jun 2015 22:03:09 +0900 Message-ID: <20150612220309.663667fe@hwh-ubuntu> References: <1434113958-15877-1-git-send-email-human.hwang@samsung.com> <1421653953-8187-2-git-send-email-human.hwang@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1421653953-8187-2-git-send-email-human.hwang@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Hyungwon Hwang Cc: devicetree@vger.kernel.org, sw0312.kim@samsung.com, dri-devel@lists.freedesktop.org, treding@nvidia.com List-Id: devicetree@vger.kernel.org UGxlYXNlIGlnbm9yZSB0aGlzIG1haWwuIEkgZGlkbid0IGtub3cgdGhhdCAiZ2l0IHNlbmQgKiIg aW5jbHVkZXMgYWxsCmZpbGVzIGluIHRoZSBzdWJkaXJlY3Rvcmllcy4gSSBhbSB2ZXJ5IHNvcnJ5 IGZvciBkaXN0dXJiaW5nIHlvdS4KCkJlc3QgcmVnYXJkcywKSHl1bmd3b24gSHdhbmcKCk9uIEZy aSwgMTIgSnVuIDIwMTUgMjE6NTk6MTcgKzA5MDAKSHl1bmd3b24gSHdhbmcgPGh1bWFuLmh3YW5n QHNhbXN1bmcuY29tPiB3cm90ZToKCj4gRnJvbTogSW5raSBEYWUgPGlua2kuZGFlQHNhbXN1bmcu Y29tPgo+IAo+IFRoaXMgcGF0Y2ggYWRkcyBNSVBJLURTSSBiYXNlZCBTNkU2M0owWDAzIEFNT0xF RCBMQ0QgcGFuZWwgZHJpdmVyCj4gd2hpY2ggdXNlcyBtaXBpX2RzaSBidXMgdG8gY29tbXVuaWNh dGUgd2l0aCBwYW5lbC4gVGhlIHBhbmVsIGhhcwo+IDMyMMOXMzIwIHJlc29sdXRpb24gaW4gMS42 My1pbmNoIHBoeXNpY2FsIHBhbmVsLiBUaGlzIHBhbmVsIGlzIHVzZWQgaW4KPiBTYW1zdW5nIEdh bGF4eSBHZWFyIDIuCj4gCj4gU2lnbmVkLW9mZi1ieTogSW5raSBEYWUgPGlua2kuZGFlQHNhbXN1 bmcuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEh5dW5nd29uIEh3YW5nIDxodW1hbi5od2FuZ0BzYW1z dW5nLmNvbT4KPiBBY2tlZC1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5n LmNvbT4KPiAKPiAtLS0KPiBDaGFuZ2VzIGZvciB2MjoKPiAtIENoYW5nZSB0aGUgZ2FtbWEgdGFi bGUgdG8gMi1kaW1lbnNpb25hbCBhcnJheQo+IC0gQ2hhbmdlIHRoZSB3YXkgdG8gbWFrZSBpbmRl eCBmb3IgYnJpZ2h0bmVzcwo+IC0gTWFrZSBjb21tYW5kIGZ1bmN0aW9ucyB0byBhbiBhcnJheSBz byB0aGF0IGl0IGNhbiBiZSBjYWxsZWQgc2ltcGx5Cj4gLSBDaGFuZ2UgY29tbWFuZCBpZCBmb3Ig cmVhZGluZyBkZXZpY2UgSUQKPiAtIENoYW5nZSB0aGUgd2F5IHRvIGhhbmRsZSB0aGUgZXJyb3Ig Y29uZGl0aW9uCj4gLSBSZW1vdmUgcG93ZXIgdmFyaWFibGUsIGFuZCB1c2UgdGhlIHNhbWUgbmFt ZSB2YXJpYWJsZSBpbiBibF9kZXYKPiAtIEFkZCB0aGUgc3RhdGUgRkJfQkxBTktfTk9STUFMIHRv IHJlcHJlc2VudCB0aGUgc3RhdGUgd2hpY2ggdGhlIHBhbmVsCj4gaXMgd29ya2luZyBidXQgYmxh bmtlZAo+IC0gTWlzY2VsbGFuZW91cyBjaGFuZ2VzIHRvIGluY3JlYXNlIHRoZSByZWFkYWJpbGl0 eSBhbmQgZm9sbG93IHRoZQo+ICAgY29kaW5nLXN0eWxlIHN0YW5kYXJkCj4gQ2hhbmdlcyBmb3Ig djM6Cj4gLSBBZGQgRFQgYmluZGluZyBkb2N1bWVudGF0aW9uCj4gLSBBZGQgdGhlIGNvZGUgZ2V0 dGluZyBEVCBwcm9wZXJ0aWVzIG9mICdwYW5lbC13aWR0aC1tbScgYW5kCj4gJ3BhbmVsLWhlaWdo dC1tbScKPiAtIFJlbW92ZSB0aGUgY29kZSBnZXR0aW5nIHVubmVjZXNzYXJ5IERUIHByb3BlcnRp ZXMgZmxpcC0qCj4gIC4uLi9iaW5kaW5ncy9wYW5lbC9zYW1zdW5nLHM2ZTYzajB4MDMudHh0ICAg ICAgICAgIHwgIDU1ICsrKwo+ICBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyAgICAgICAg ICAgICAgICAgICAgICB8ICAgNiArCj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVs LXM2ZTYzajB4MDMuYyAgICAgICAgICAgfCA1NDYKPiArKysrKysrKysrKysrKysrKysrKysgNCBm aWxlcyBjaGFuZ2VkLCA2MDggaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQKPiBE b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGFuZWwvc2Ftc3VuZyxzNmU2M2oweDAz LnR4dCBjcmVhdGUKPiBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtczZl NjNqMHgwMy5jCj4gCj4gLS0KPiAxLjkuMQo+IAo+IGRpZmYgLS1naXQKPiBhL0RvY3VtZW50YXRp b24vZGV2aWNldHJlZS9iaW5kaW5ncy9wYW5lbC9zYW1zdW5nLHM2ZTYzajB4MDMudHh0Cj4gYi9E b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGFuZWwvc2Ftc3VuZyxzNmU2M2oweDAz LnR4dCBuZXcKPiBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4IDAwMDAwMDAuLmY4MjE1ZTQgLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wYW5lbC9z YW1zdW5nLHM2ZTYzajB4MDMudHh0Cj4gQEAgLTAsMCArMSw1NSBAQAo+ICtTYW1zdW5nIFM2RTYz SjBYMDMgMS42MyIgMzIweDMyMCBURlQgTENEIHBhbmVsCj4gKwo+ICtSZXF1aXJlZCBwcm9wZXJ0 aWVzOgo+ICsgIC0gY29tcGF0aWJsZTogInNhbXN1bmcsczZlNjNqMHgwMyIKPiArICAtIHJlZzog dGhlIHZpcnR1YWwgY2hhbm5lbCBudW1iZXIgb2YgYSBEU0kgcGVyaXBoZXJhbAo+ICsgIC0gdmRk My1zdXBwbHk6IGNvcmUgdm9sdGFnZSBzdXBwbHkKPiArICAtIHZjaS1zdXBwbHk6IHZvbHRhZ2Ug c3VwcGx5IGZvciBhbmFsb2cgY2lyY3VpdHMKPiArICAtIHJlc2V0LWdwaW9zOiBhIEdQSU8gc3Bl YyBmb3IgdGhlIHJlc2V0IHBpbgo+ICsgIC0gdGUtZ3Bpb3M6IGEgR1BJTyBzcGVjIGZvciB0aGUg dGVhcmluZyBlZmZlY3Qgc3luY2hyb25pemF0aW9uCj4gc2lnbmFsIGdwaW8gcGluICsKPiArT3B0 aW9uYWwgcHJvcGVydGllczoKPiArICAtIGRpc3BsYXktdGltaW5nczogdGltaW5ncyBmb3IgdGhl IGNvbm5lY3RlZCBwYW5lbCBhcyBkZXNjcmliZWQgYnkKPiBbMV0KPiArICAtIHBvd2VyLW9uLWRl bGF5OiBkZWxheSBhZnRlciB0dXJuaW5nIHJlZ3VsYXRvcnMgb24gW21zXQo+ICsgIC0gcG93ZXIt b2ZmLWRlbGF5OiBkZWxheSBhZnRlciB0dXJuaW5nIHJlZ3VsYXRvcnMgb2ZmIFttc10KPiArICAt IHJlc2V0LWRlbGF5OiBkZWxheSBhZnRlciByZXNldCBzZXF1ZW5jZSBbbXNdCj4gKyAgLSBwYW5l bC13aWR0aC1tbTogcGh5c2ljYWwgcGFuZWwgd2lkdGggW21tXQo+ICsgIC0gcGFuZWwtaGVpZ2h0 LW1tOiBwaHlzaWNhbCBwYW5lbCBoZWlnaHQgW21tXQo+ICsKPiArVGhlIGRldmljZSBub2RlIGNh biBjb250YWluIG9uZSAncG9ydCcgY2hpbGQgbm9kZSB3aXRoIG9uZSBjaGlsZAo+ICsnZW5kcG9p bnQnIG5vZGUsIGFjY29yZGluZyB0byB0aGUgYmluZGluZ3MgZGVmaW5lZCBpbiBbMl0uIFRoaXMK PiArbm9kZSBzaG91bGQgZGVzY3JpYmUgcGFuZWwncyB2aWRlbyBidXMuCj4gKwo+ICtbMV06IERv Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92aWRlby9kaXNwbGF5LXRpbWluZy50eHQK PiArWzJdOiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvdmlkZW8taW50 ZXJmYWNlcy50eHQKPiArCj4gK0V4YW1wbGU6Cj4gKwo+ICtwYW5lbEAwIHsKPiArCWNvbXBhdGli bGUgPSAic2Ftc3VuZyxzNmU2M2oweDAzIjsKPiArCXJlZyA9IDwwPjsKPiArCXZkZDMtc3VwcGx5 ID0gPCZsZG8xNl9yZWc+Owo+ICsJdmNpLXN1cHBseSA9IDwmbGRvMjBfcmVnPjsKPiArCXJlc2V0 LWdwaW9zID0gPCZncGUwIDEgMD47Cj4gKwl0ZS1ncGlvcyA9IDwmZ3B4MCA2IDA+Owo+ICsJcG93 ZXItb24tZGVsYXk9IDwzMD47Cj4gKwlwb3dlci1vZmYtZGVsYXk9IDwxMjA+Owo+ICsJcmVzZXQt ZGVsYXkgPSA8NT47Cj4gKwlpbml0LWRlbGF5ID0gPDEwMD47Cj4gKwlwYW5lbC13aWR0aC1tbSA9 IDwyOT47Cj4gKwlwYW5lbC1oZWlnaHQtbW0gPSA8Mjk+Owo+ICsKPiArCWRpc3BsYXktdGltaW5n cyB7Cj4gKwkJdGltaW5nLTAgewo+ICsJCQljbG9jay1mcmVxdWVuY3kgPSA8MD47Cj4gKwkJCWhh Y3RpdmUgPSA8MzIwPjsKPiArCQkJdmFjdGl2ZSA9IDwzMjA+Owo+ICsJCQloZnJvbnQtcG9yY2gg PSA8MT47Cj4gKwkJCWhiYWNrLXBvcmNoID0gPDE+Owo+ICsJCQloc3luYy1sZW4gPSA8MT47Cj4g KwkJCXZmcm9udC1wb3JjaCA9IDwxNTA+Owo+ICsJCQl2YmFjay1wb3JjaCA9IDwxPjsKPiArCQkJ dnN5bmMtbGVuID0gPDI+Owo+ICsJCX07Cj4gKwl9Owo+ICt9Owo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwo+IGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25m aWcgaW5kZXggM2RmOWI5Yi4uOGZhNzYxMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v cGFuZWwvS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCj4gQEAg LTQ2LDQgKzQ2LDEwIEBAIGNvbmZpZyBEUk1fUEFORUxfUzZFM0hBMgo+ICAJc2VsZWN0IERSTV9N SVBJX0RTSQo+ICAJc2VsZWN0IFZJREVPTU9ERV9IRUxQRVJTCj4gCj4gK2NvbmZpZyBEUk1fUEFO RUxfUzZFNjNKMFgwMwo+ICsJdHJpc3RhdGUgIlM2RTYzSjBYMDMgRFNJIHZpZGVvIG1vZGUgcGFu ZWwiCj4gKwlkZXBlbmRzIG9uIE9GCj4gKwlzZWxlY3QgRFJNX01JUElfRFNJCj4gKwlzZWxlY3Qg VklERU9NT0RFX0hFTFBFUlMKPiArCj4gIGVuZG1lbnUKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3BhbmVsL01ha2VmaWxlCj4gYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUg aW5kZXggMTZmZjMxMi4uOTA1NGRhMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKPiBAQCAt MywzICszLDQgQEAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9MRDkwNDApICs9IHBhbmVsLWxkOTA0 MC5vCj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxfUzZFOEFBMCkgKz0gcGFuZWwtczZlOGFhMC5v Cj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0hBUlBfTFExMDFSMVNYMDEpICs9Cj4gcGFuZWwt c2hhcnAtbHExMDFyMXN4MDEubyBvYmotJChDT05GSUdfRFJNX1BBTkVMX1M2RTNIQTIpICs9Cj4g cGFuZWwtczZlM2hhMi5vICtvYmotJChDT05GSUdfRFJNX1BBTkVMX1M2RTYzSjBYMDMpICs9Cj4g cGFuZWwtczZlNjNqMHgwMy5vIGRpZmYgLS1naXQKPiBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9w YW5lbC1zNmU2M2oweDAzLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zNmU2M2ow eDAzLmMgbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgKPiAwMDAwMDAwLi41MWNmMWY2IC0tLSAv ZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtczZlNjNqMHgwMy5j Cj4gQEAgLTAsMCArMSw1NDYgQEAKPiArLyoKPiArICogTUlQSS1EU0kgYmFzZWQgUzZFNjNKMFgw MyBBTU9MRUQgbGNkIDEuNjMgaW5jaCBwYW5lbCBkcml2ZXIuCj4gKyAqCj4gKyAqIENvcHlyaWdo dCAoYykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkCj4gKyAqCj4gKyAqIElua2kg RGFlLCA8aW5raS5kYWVAc2Ftc3VuZy5jb20+Cj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiBtb2RpZnkKPiAr ICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2 ZXJzaW9uIDIgYXMKPiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24uCj4gKyovCj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiArI2luY2x1ZGUgPGRybS9k cm1fbWlwaV9kc2kuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KPiArCj4gKyNpbmNs dWRlIDxsaW51eC9vZl9ncGlvLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9ncGlvLmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2JhY2ts aWdodC5oPgo+ICsKPiArI2luY2x1ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5oPgo+ICsjaW5jbHVk ZSA8dmlkZW8vb2ZfdmlkZW9tb2RlLmg+Cj4gKyNpbmNsdWRlIDx2aWRlby92aWRlb21vZGUuaD4K PiArCj4gKyNkZWZpbmUgUkVBRF9JRDEJCTB4REEKPiArI2RlZmluZSBSRUFEX0lEMgkJMHhEQgo+ ICsjZGVmaW5lIFJFQURfSUQzCQkweERDCj4gKwo+ICsjZGVmaW5lIE1DU19MRVZFTDJfS0VZCQkw eGYwCj4gKyNkZWZpbmUgTUNTX01UUF9LRVkJCTB4ZjEKPiArI2RlZmluZSBNQ1NfTVRQX1NFVDMJ CTB4ZDQKPiArCj4gKyNkZWZpbmUgTUlOX0JSSUdIVE5FU1MJCTAKPiArI2RlZmluZSBNQVhfQlJJ R0hUTkVTUwkJMTAwCj4gKyNkZWZpbmUgREVGQVVMVF9CUklHSFRORVNTCTgwCj4gKwo+ICsjZGVm aW5lIEdBTU1BX0xFVkVMX05VTQkJMzAKPiArI2RlZmluZSBOVU1fR0FNTUFfU1RFUFMJCTkKPiAr I2RlZmluZSBHQU1NQV9DTURfQ05UCQkyOAo+ICsKPiArc3RydWN0IHM2ZTYzajB4MDMgewo+ICsJ c3RydWN0IGRldmljZSAqZGV2Owo+ICsJc3RydWN0IGRybV9wYW5lbCBwYW5lbDsKPiArCXN0cnVj dCBiYWNrbGlnaHRfZGV2aWNlICpibF9kZXY7Cj4gKwo+ICsJc3RydWN0IHJlZ3VsYXRvcl9idWxr X2RhdGEgc3VwcGxpZXNbMl07Cj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpyZXNldF9ncGlvOwo+ICsJ dTMyIHBvd2VyX29uX2RlbGF5Owo+ICsJdTMyIHBvd2VyX29mZl9kZWxheTsKPiArCXUzMiByZXNl dF9kZWxheTsKPiArCXUzMiBpbml0X2RlbGF5Owo+ICsJc3RydWN0IHZpZGVvbW9kZSB2bTsKPiAr CXVuc2lnbmVkIGludCB3aWR0aF9tbTsKPiArCXVuc2lnbmVkIGludCBoZWlnaHRfbW07Cj4gK307 Cj4gKwo+ICtzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBnYW1tYV90YmxbTlVNX0dBTU1BX1NU RVBTXVtHQU1NQV9DTURfQ05UXQo+ID0gewo+ICsJewkvKiBHYW1tYSAxMCAqLwo+ICsJCU1DU19N VFBfU0VUMywKPiArCQkweDAwLCAweDAwLCAweDAwLCAweDdmLCAweDdmLCAweDdmLCAweDUyLCAw eDZiLAo+IDB4NmYsIDB4MjYsCj4gKwkJMHgyOCwgMHgyZCwgMHgyOCwgMHgyNiwgMHgyNywgMHgz MywgMHgzNCwgMHgzMiwKPiAweDM2LCAweDM2LAo+ICsJCTB4MzUsIDB4MDAsIDB4YWIsIDB4MDAs IDB4YWUsIDB4MDAsIDB4YmYKPiArCX0sCj4gKwl7CS8qIGdhbW1hIDMwICovCj4gKwkJTUNTX01U UF9TRVQzLAo+ICsJCTB4MDAsIDB4MDAsIDB4MDAsIDB4NzAsIDB4N2YsIDB4N2YsIDB4NGUsIDB4 NjQsCj4gMHg2OSwgMHgyNiwKPiArCQkweDI3LCAweDJhLCAweDI4LCAweDI5LCAweDI3LCAweDMx LCAweDMyLCAweDMxLAo+IDB4MzUsIDB4MzQsCj4gKwkJMHgzNSwgMHgwMCwgMHhjNCwgMHgwMCwg MHhjYSwgMHgwMCwgMHhkYwo+ICsJfSwKPiArCXsJLyogZ2FtbWEgNjAgKi8KPiArCQlNQ1NfTVRQ X1NFVDMsCj4gKwkJMHgwMCwgMHgwMCwgMHgwMCwgMHg2NSwgMHg3YiwgMHg3ZCwgMHg1ZiwgMHg2 NywKPiAweDY4LCAweDJhLAo+ICsJCTB4MjgsIDB4MjksIDB4MjgsIDB4MmEsIDB4MjcsIDB4MzEs IDB4MmYsIDB4MzAsCj4gMHgzNCwgMHgzMywKPiArCQkweDM0LCAweDAwLCAweGQ5LCAweDAwLCAw eGU0LCAweDAwLCAweGY1Cj4gKwl9LAo+ICsJewkvKiBnYW1tYSA5MCAqLwo+ICsJCU1DU19NVFBf U0VUMywKPiArCQkweDAwLCAweDAwLCAweDAwLCAweDRkLCAweDZmLCAweDcxLCAweDY3LCAweDZh LAo+IDB4NmMsIDB4MjksCj4gKwkJMHgyOCwgMHgyOCwgMHgyOCwgMHgyOSwgMHgyNywgMHgzMCwg MHgyZSwgMHgzMCwKPiAweDMyLCAweDMxLAo+ICsJCTB4MzEsIDB4MDAsIDB4ZWEsIDB4MDAsIDB4 ZjYsIDB4MDEsIDB4MDkKPiArCX0sCj4gKwl7CS8qIGdhbW1hIDEyMCAqLwo+ICsJCU1DU19NVFBf U0VUMywKPiArCQkweDAwLCAweDAwLCAweDAwLCAweDNkLCAweDY2LCAweDY4LCAweDY5LCAweDY5 LAo+IDB4NjksIDB4MjgsCj4gKwkJMHgyOCwgMHgyNywgMHgyOCwgMHgyOCwgMHgyNywgMHgzMCwg MHgyZSwgMHgyZiwKPiAweDMxLCAweDMxLAo+ICsJCTB4MzAsIDB4MDAsIDB4ZjksIDB4MDEsIDB4 MDUsIDB4MDEsIDB4MWIKPiArCX0sCj4gKwl7CS8qIGdhbW1hIDE1MCAqLwo+ICsJCU1DU19NVFBf U0VUMywKPiArCQkweDAwLCAweDAwLCAweDAwLCAweDMxLCAweDUxLCAweDUzLCAweDY2LCAweDY2 LAo+IDB4NjcsIDB4MjgsCj4gKwkJMHgyOSwgMHgyNywgMHgyOCwgMHgyNywgMHgyNywgMHgyZSwg MHgyZCwgMHgyZSwKPiAweDMxLCAweDMxLAo+ICsJCTB4MzAsIDB4MDEsIDB4MDQsIDB4MDEsIDB4 MTEsIDB4MDEsIDB4MjkKPiArCX0sCj4gKwl7CS8qIGdhbW1hIDIwMCAqLwo+ICsJCU1DU19NVFBf U0VUMywKPiArCQkweDAwLCAweDAwLCAweDAwLCAweDJmLCAweDRmLCAweDUxLCAweDY3LCAweDY1 LAo+IDB4NjUsIDB4MjksCj4gKwkJMHgyYSwgMHgyOCwgMHgyNywgMHgyNSwgMHgyNiwgMHgyZCwg MHgyYywgMHgyYywKPiAweDMwLCAweDMwLAo+ICsJCTB4MzAsIDB4MDEsIDB4MTQsIDB4MDEsIDB4 MjMsIDB4MDEsIDB4M2IKPiArCX0sCj4gKwl7CS8qIGdhbW1hIDI0MCAqLwo+ICsJCU1DU19NVFBf U0VUMywKPiArCQkweDAwLCAweDAwLCAweDAwLCAweDJjLCAweDRkLCAweDUwLCAweDY1LCAweDYz LAo+IDB4NjQsIDB4MmEsCj4gKwkJMHgyYywgMHgyOSwgMHgyNiwgMHgyNCwgMHgyNSwgMHgyYywg MHgyYiwgMHgyYiwKPiAweDMwLCAweDMwLAo+ICsJCTB4MzAsIDB4MDEsIDB4MWUsIDB4MDEsIDB4 MmYsIDB4MDEsIDB4NDcKPiArCX0sCj4gKwl7CS8qIGdhbW1hIDMwMCAqLwo+ICsJCU1DU19NVFBf U0VUMywKPiArCQkweDAwLCAweDAwLCAweDAwLCAweDM4LCAweDYxLCAweDY0LCAweDY1LCAweDYz LAo+IDB4NjQsIDB4MjgsCj4gKwkJMHgyYSwgMHgyNywgMHgyNiwgMHgyMywgMHgyNSwgMHgyYiwg MHgyYiwgMHgyYSwKPiAweDMwLCAweDJmLAo+ICsJCTB4MzAsIDB4MDEsIDB4MmQsIDB4MDEsIDB4 M2YsIDB4MDEsIDB4NTcKPiArCX0KPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIHByZXBhcmVfY21kczFbXVsxNV0gPSB7Cj4gKwl7IDMsIDB4ZjIsIDB4MWMsIDB4MjggfSwJ CS8qIHBvcmNoX2FkanVzdG1lbnQKPiAqLwo+ICsJeyA0LCAweGI1LCAweDAwLCAweDAyLCAweDAw IH0sCQkvKiBmcmFtZV9mcmVxCj4gKi8KPiArCXsgNSwgMHgyYSwgMHgwMCwgMHgxNCwgMHgwMSwg MHg1MyB9LAkvKgo+IG1lbV9hZGRyX3NldF8wICovCj4gKwl7IDUsIDB4MmIsIDB4MDAsIDB4MDAs IDB4MDEsIDB4M2YgfSwJLyoKPiBtZW1fYWRkcl9zZXRfMSAqLwo+ICsJeyAxNCwgMHhmOCwgMHgw OCwgMHgwOCwgMHgwOCwgMHgxNywJLyoKPiBsdHBzX3RpbW1pbmdfc2V0XzBfNjBoeiAqLwo+ICsJ ICAgICAgMHgwMCwgMHgyYSwgMHgwMiwgMHgyNiwKPiArCSAgICAgIDB4MDAsIDB4MDAsIDB4MDIs IDB4MDAsIDB4MDAgfSwKPiArCXsgMiwgMHhmNywgMHgwMiB9LAkJCS8qCj4gbHRwc190aW1taW5n X3NldF8xICovCj4gKwl7IDIsIDB4YjAsIDB4MDEgfSwJCQkvKgo+IHBhcmFtX3Bvc190ZV9lZGdl ICovCj4gKwl7IDIsIDB4ZTIsIDB4MGYgfSwJCQkvKiB0ZV9yaXNpbmdfZWRnZQo+ICovCj4gKwl7 IDIsIDB4YjAsIDB4MDAgfSwJCQkvKgo+IHBhcmFtX3Bvc19kZWZhdWx0ICovCj4gKwl7IDEsIE1J UElfRENTX0VYSVRfU0xFRVBfTU9ERSB9LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0ICB1bnNp Z25lZCBjaGFyIHByZXBhcmVfY21kczJbXVs0XSA9IHsKPiArCXsgMywgMHhiMSwgMHgwMCwgMHgw OSB9LAkvKiBlbHZzc19jb25kICovCj4gKwl7IDIsIDB4MzYsIDB4NDAgfSwJCS8qIHNldF9wb3Mg Ki8KPiArCXsgMiwgMHg1MSwgMHhmZiB9LAkJLyoKPiB3aGl0ZV9icmlnaHRuZXNzX2RlZmF1bHQg Ki8KPiArCXsgMiwgMHg1MywgMHgyMCB9LAkJLyogd2hpdGVfY3RybCAqLwo+ICsJeyAyLCAweDU1 LCAweDAwIH0sCQkvKiBhY2xfb2ZmICovCj4gKwl7IDEsIE1JUElfRENTX1NFVF9URUFSX09OIH0s Cj4gK307Cj4gKwo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgczZlNjNqMHgwMyAqcGFuZWxf dG9fczZlNjNqMHgwMyhzdHJ1Y3QKPiBkcm1fcGFuZWwgKnBhbmVsKSArewo+ICsJcmV0dXJuIGNv bnRhaW5lcl9vZihwYW5lbCwgc3RydWN0IHM2ZTYzajB4MDMsIHBhbmVsKTsKPiArfQo+ICsKPiAr c3RhdGljIGlubGluZSBzc2l6ZV90IHM2ZTYzajB4MDNfZGNzX3dyaXRlX3NlcShzdHJ1Y3QgczZl NjNqMHgwMwo+ICpjdHgsCj4gKwkJCQkJY29uc3QgdTggKnNlcSwgY29uc3QKPiB1bnNpZ25lZCBj aGFyIGxlbikgK3sKPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSA9IHRvX21pcGlfZHNp X2RldmljZShjdHgtPmRldik7Cj4gKwo+ICsJcmV0dXJuIG1pcGlfZHNpX2Rjc193cml0ZShkc2ks IHNlcSwgbGVuKTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgczZlNjNqMHgwM19lbmFi bGVfbHYyX2NvbW1hbmQoc3RydWN0IHM2ZTYzajB4MDMKPiAqY3R4KSArewo+ICsJdW5zaWduZWQg Y2hhciBzZXFbXSA9IHsgTUNTX0xFVkVMMl9LRVksIDB4NWEsIDB4NWEgfTsKPiArCj4gKwlyZXR1 cm4gczZlNjNqMHgwM19kY3Nfd3JpdGVfc2VxKGN0eCwgc2VxLCBBUlJBWV9TSVpFKHNlcSkpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGludCBzNmU2M2oweDAzX2FwcGx5X210cF9rZXkoc3Ry dWN0IHM2ZTYzajB4MDMgKmN0eCwKPiBib29sIG9uKSArewo+ICsJdW5zaWduZWQgY2hhciBzZXEx WzNdID0geyBNQ1NfTVRQX0tFWSwgMHg1YSwgMHg1YSB9Owo+ICsJdW5zaWduZWQgY2hhciBzZXEy WzNdID0geyBNQ1NfTVRQX0tFWSwgMHhhNSwgMHhhNSB9Owo+ICsKPiArCXJldHVybiBzNmU2M2ow eDAzX2Rjc193cml0ZV9zZXEoY3R4LCBvbiA/IHNlcTEgOiBzZXEyLAo+ICsJCQkJCUFSUkFZX1NJ WkUoc2VxMSkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHM2ZTYzajB4MDNfcmVhZF9tdHBfaWQo c3RydWN0IHM2ZTYzajB4MDMgKmN0eCkKPiArewo+ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAq ZHNpID0gdG9fbWlwaV9kc2lfZGV2aWNlKGN0eC0+ZGV2KTsKPiArCXVuc2lnbmVkIGNoYXIgY21k c1szXSA9IHsgUkVBRF9JRDEsIFJFQURfSUQyLCBSRUFEX0lEMyB9Owo+ICsJdW5zaWduZWQgY2hh ciBpZFszXTsKPiArCWludCByZXQ7Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwg MzsgaSsrKSB7Cj4gKwkJcmV0ID0gbWlwaV9kc2lfZGNzX3JlYWQoZHNpLCBjbWRzW2ldLCAmaWRb aV0sIDEpOwo+ICsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiAr Cj4gKwlkZXZfaW5mbyhjdHgtPmRldiwgIklEOiAweCUwMngsIDB4JTAyeCwgMHglMDJ4XG4iLCBp ZFswXSwKPiBpZFsxXSwgaWRbMl0pOyArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGlj IGludCBzNmU2M2oweDAzX3Bvd2VyX29uKHN0cnVjdCBzNmU2M2oweDAzICpjdHgpCj4gK3sKPiAr CWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gcmVndWxhdG9yX2J1bGtfZW5hYmxlKEFSUkFZX1NJWkUo Y3R4LT5zdXBwbGllcyksCj4gY3R4LT5zdXBwbGllcyk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQly ZXR1cm4gcmV0Owo+ICsKPiArCW1zbGVlcChjdHgtPnBvd2VyX29uX2RlbGF5KTsKPiArCj4gKwln cGlvZF9zZXRfdmFsdWUoY3R4LT5yZXNldF9ncGlvLCAwKTsKPiArCXVzbGVlcF9yYW5nZSgxMDAw LCAyMDAwKTsKPiArCWdwaW9kX3NldF92YWx1ZShjdHgtPnJlc2V0X2dwaW8sIDEpOwo+ICsKPiAr CXVzbGVlcF9yYW5nZShjdHgtPnJlc2V0X2RlbGF5ICogMTAwMCwgKGN0eC0+cmVzZXRfZGVsYXkg KyAxKQo+ICogMTAwMCk7ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHM2 ZTYzajB4MDNfcG93ZXJfb2ZmKHN0cnVjdCBzNmU2M2oweDAzICpjdHgpCj4gK3sKPiArCWludCBy ZXQ7Cj4gKwo+ICsJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+cmVzZXRfZ3BpbywgMCk7Cj4gKwo+ICsJ cmV0ID0gcmVndWxhdG9yX2J1bGtfZGlzYWJsZShBUlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMpLAo+ IGN0eC0+c3VwcGxpZXMpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCj4g KwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBzNmU2M2oweDAzX2dldF9icmlnaHRu ZXNzKHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpibF9kZXYpCj4gK3sKPiArCXJldHVybiBibF9k ZXYtPnByb3BzLmJyaWdodG5lc3M7Cj4gK30KPiArCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgczZl NjNqMHgwM19nZXRfYnJpZ2h0bmVzc19pbmRleCh1bnNpZ25lZCBpbnQKPiBicmlnaHRuZXNzKSAr ewo+ICsJdW5zaWduZWQgaW50IGluZGV4Owo+ICsKPiArCWluZGV4ID0gYnJpZ2h0bmVzcyAvIChN QVhfQlJJR0hUTkVTUyAvIE5VTV9HQU1NQV9TVEVQUyk7Cj4gKwo+ICsJaWYgKGluZGV4ID49IE5V TV9HQU1NQV9TVEVQUykKPiArCQlpbmRleCA9IE5VTV9HQU1NQV9TVEVQUyAtIDE7Cj4gKwo+ICsJ cmV0dXJuIGluZGV4Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHM2ZTYzajB4MDNfdXBkYXRlX2dh bW1hKHN0cnVjdCBzNmU2M2oweDAzICpjdHgsCj4gKwkJCQkJdW5zaWduZWQgaW50IGJyaWdodG5l c3MpCj4gK3sKPiArCXN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpibF9kZXYgPSBjdHgtPmJsX2Rl djsKPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSA9IHRvX21pcGlfZHNpX2RldmljZShj dHgtPmRldik7Cj4gKwl1bnNpZ25lZCBpbnQgaW5kZXggPQo+IHM2ZTYzajB4MDNfZ2V0X2JyaWdo dG5lc3NfaW5kZXgoYnJpZ2h0bmVzcyk7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IHM2ZTYz ajB4MDNfYXBwbHlfbXRwX2tleShjdHgsIHRydWUpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0 dXJuIHJldDsKPiArCj4gKwlyZXQgPSBtaXBpX2RzaV9kY3Nfd3JpdGUoZHNpLCBnYW1tYV90Ymxb aW5kZXhdLAo+IEdBTU1BX0NNRF9DTlQpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJl dDsKPiArCj4gKwlyZXQgPSBzNmU2M2oweDAzX2FwcGx5X210cF9rZXkoY3R4LCBmYWxzZSk7Cj4g KwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWJsX2Rldi0+cHJvcHMuYnJp Z2h0bmVzcyA9IGJyaWdodG5lc3M7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgczZlNjNqMHgwM19zZXRfYnJpZ2h0bmVzcyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAq YmxfZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgczZlNjNqMHgwMyAqY3R4ID0gKHN0cnVjdCBzNmU2M2ow eDAzCj4gKilibF9nZXRfZGF0YShibF9kZXYpOwo+ICsJdW5zaWduZWQgaW50IGJyaWdodG5lc3Mg PSBibF9kZXYtPnByb3BzLmJyaWdodG5lc3M7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmIChicmln aHRuZXNzIDwgTUlOX0JSSUdIVE5FU1MgfHwKPiArCQlicmlnaHRuZXNzID4gYmxfZGV2LT5wcm9w cy5tYXhfYnJpZ2h0bmVzcykgewo+ICsJCWRldl9lcnIoY3R4LT5kZXYsICJJbnZhbGlkIGJyaWdo dG5lc3M6ICV1XG4iLAo+IGJyaWdodG5lc3MpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ ICsKPiArCWlmIChibF9kZXYtPnByb3BzLnBvd2VyID4gRkJfQkxBTktfTk9STUFMKSB7Cj4gKwkJ ZGV2X2VycihjdHgtPmRldiwKPiArCQkJInBhbmVsIG11c3QgYmUgYXQgbGVhc3QgaW4gZmIgYmxh bmsgbm9ybWFsCj4gc3RhdGVcbiIpOwo+ICsJCXJldHVybiAtRVBFUk07Cj4gKwl9Cj4gKwo+ICsJ cmV0ID0gczZlNjNqMHgwM191cGRhdGVfZ2FtbWEoY3R4LCBicmlnaHRuZXNzKTsKPiArCWlmIChy ZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgYmFja2xpZ2h0X29wcyBzNmU2M2oweDAzX2JsX29wcyA9IHsKPiAr CS5nZXRfYnJpZ2h0bmVzcyA9IHM2ZTYzajB4MDNfZ2V0X2JyaWdodG5lc3MsCj4gKwkudXBkYXRl X3N0YXR1cyA9IHM2ZTYzajB4MDNfc2V0X2JyaWdodG5lc3MsCj4gK307Cj4gKwo+ICtzdGF0aWMg aW50IHM2ZTYzajB4MDNfZGlzYWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJ c3RydWN0IHM2ZTYzajB4MDMgKmN0eCA9IHBhbmVsX3RvX3M2ZTYzajB4MDMocGFuZWwpOwo+ICsJ c3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJsX2RldiA9IGN0eC0+YmxfZGV2Owo+ICsJdTggc2Vx W10gPSB7IE1JUElfRENTX1NFVF9ESVNQTEFZX09GRiB9Owo+ICsJaW50IHJldDsKPiArCj4gKwly ZXQgPSBzNmU2M2oweDAzX2Rjc193cml0ZV9zZXEoY3R4LCBzZXEsIEFSUkFZX1NJWkUoc2VxKSk7 Cj4gKwlpZiAocmV0ID4gMCkKPiArCQlibF9kZXYtPnByb3BzLnBvd2VyID0gRkJfQkxBTktfTk9S TUFMOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHM2ZTYzajB4MDNf dW5wcmVwYXJlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgczZlNjNq MHgwMyAqY3R4ID0gcGFuZWxfdG9fczZlNjNqMHgwMyhwYW5lbCk7Cj4gKwlzdHJ1Y3QgYmFja2xp Z2h0X2RldmljZSAqYmxfZGV2ID0gY3R4LT5ibF9kZXY7Cj4gKwl1OCBzZXFbXSA9IHsgTUlQSV9E Q1NfRU5URVJfU0xFRVBfTU9ERSB9Owo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBzNmU2M2ow eDAzX2Rjc193cml0ZV9zZXEoY3R4LCBzZXEsIEFSUkFZX1NJWkUoc2VxKSk7Cj4gKwlpZiAocmV0 IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCW1zbGVlcChjdHgtPnBvd2VyX29mZl9kZWxh eSk7Cj4gKwo+ICsJcmV0ID0gczZlNjNqMHgwM19wb3dlcl9vZmYoY3R4KTsKPiArCWlmIChyZXQg PCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJYmxfZGV2LT5wcm9wcy5wb3dlciA9IEZCX0JM QU5LX1BPV0VSRE9XTjsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBz NmU2M2oweDAzX3ByZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXN0cnVj dCBzNmU2M2oweDAzICpjdHggPSBwYW5lbF90b19zNmU2M2oweDAzKHBhbmVsKTsKPiArCXN0cnVj dCBiYWNrbGlnaHRfZGV2aWNlICpibF9kZXYgPSBjdHgtPmJsX2RldjsKPiArCWludCByZXQ7Cj4g KwlpbnQgaTsKPiArCj4gKwlyZXQgPSBzNmU2M2oweDAzX3Bvd2VyX29uKGN0eCk7Cj4gKwlpZiAo cmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXJldCA9IHM2ZTYzajB4MDNfZW5hYmxl X2x2Ml9jb21tYW5kKGN0eCk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsK PiArCXJldCA9IHM2ZTYzajB4MDNfYXBwbHlfbXRwX2tleShjdHgsIHRydWUpOwo+ICsJaWYgKHJl dCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXQgPSBzNmU2M2oweDAzX3JlYWRfbXRw X2lkKGN0eCk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKHByZXBhcmVfY21kczEpOyBpKyspIHsKPiArCQlyZXQgPSBz NmU2M2oweDAzX2Rjc193cml0ZV9zZXEoY3R4LAo+ICZwcmVwYXJlX2NtZHMxW2ldWzFdLAo+ICsK PiBwcmVwYXJlX2NtZHMxW2ldWzBdKTsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJcmV0dXJuIHJl dDsKPiArCX0KPiArCj4gKwltc2xlZXAoMTIwKTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJS QVlfU0laRShwcmVwYXJlX2NtZHMyKTsgaSsrKSB7Cj4gKwkJcmV0ID0gczZlNjNqMHgwM19kY3Nf d3JpdGVfc2VxKGN0eCwKPiAmcHJlcGFyZV9jbWRzMltpXVsxXSwKPiArCj4gcHJlcGFyZV9jbWRz MltpXVswXSk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ ICsJcmV0ID0gczZlNjNqMHgwM19hcHBseV9tdHBfa2V5KGN0eCwgZmFsc2UpOwo+ICsJaWYgKHJl dCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlibF9kZXYtPnByb3BzLnBvd2VyID0gRkJf QkxBTktfTk9STUFMOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHM2 ZTYzajB4MDNfZW5hYmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3Qg czZlNjNqMHgwMyAqY3R4ID0gcGFuZWxfdG9fczZlNjNqMHgwMyhwYW5lbCk7Cj4gKwlzdHJ1Y3Qg YmFja2xpZ2h0X2RldmljZSAqYmxfZGV2ID0gY3R4LT5ibF9kZXY7Cj4gKwl1OCBzZXFbXSA9IHsg TUlQSV9EQ1NfU0VUX0RJU1BMQVlfT04gfTsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gczZl NjNqMHgwM19kY3Nfd3JpdGVfc2VxKGN0eCwgc2VxLCBBUlJBWV9TSVpFKHNlcSkpOwo+ICsJaWYg KHJldCA+IDApCj4gKwkJYmxfZGV2LT5wcm9wcy5wb3dlciA9IEZCX0JMQU5LX1VOQkxBTks7Cj4g Kwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgczZlNjNqMHgwM19nZXRfbW9k ZXMoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IgPSBwYW5lbC0+Y29ubmVjdG9yOwo+ICsJc3RydWN0IHM2ZTYzajB4MDMgKmN0 eCA9IHBhbmVsX3RvX3M2ZTYzajB4MDMocGFuZWwpOwo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm1vZGU7Cj4gKwo+ICsJbW9kZSA9IGRybV9tb2RlX2NyZWF0ZShjb25uZWN0b3ItPmRldik7 Cj4gKwlpZiAoIW1vZGUpIHsKPiArCQlEUk1fRVJST1IoImZhaWxlZCB0byBjcmVhdGUgYSBuZXcg ZGlzcGxheSBtb2RlXG4iKTsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArCj4gKwlkcm1fZGlzcGxh eV9tb2RlX2Zyb21fdmlkZW9tb2RlKCZjdHgtPnZtLCBtb2RlKTsKPiArCW1vZGUtPndpZHRoX21t ID0gY3R4LT53aWR0aF9tbTsKPiArCW1vZGUtPmhlaWdodF9tbSA9IGN0eC0+aGVpZ2h0X21tOwo+ ICsJY29ubmVjdG9yLT5kaXNwbGF5X2luZm8ud2lkdGhfbW0gPSBtb2RlLT53aWR0aF9tbTsKPiAr CWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhlaWdodF9tbSA9IG1vZGUtPmhlaWdodF9tbTsKPiAr Cj4gKwltb2RlLT50eXBlID0gRFJNX01PREVfVFlQRV9EUklWRVIgfCBEUk1fTU9ERV9UWVBFX1BS RUZFUlJFRDsKPiArCWRybV9tb2RlX3Byb2JlZF9hZGQoY29ubmVjdG9yLCBtb2RlKTsKPiArCj4g KwlyZXR1cm4gMTsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGFuZWxfZnVu Y3MgczZlNjNqMHgwM19mdW5jcyA9IHsKPiArCS5kaXNhYmxlID0gczZlNjNqMHgwM19kaXNhYmxl LAo+ICsJLnVucHJlcGFyZSA9IHM2ZTYzajB4MDNfdW5wcmVwYXJlLAo+ICsJLnByZXBhcmUgPSBz NmU2M2oweDAzX3ByZXBhcmUsCj4gKwkuZW5hYmxlID0gczZlNjNqMHgwM19lbmFibGUsCj4gKwku Z2V0X21vZGVzID0gczZlNjNqMHgwM19nZXRfbW9kZXMsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50 IHM2ZTYzajB4MDNfcGFyc2VfZHQoc3RydWN0IHM2ZTYzajB4MDMgKmN0eCkKPiArewo+ICsJc3Ry dWN0IGRldmljZSAqZGV2ID0gY3R4LT5kZXY7Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0g ZGV2LT5vZl9ub2RlOwo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBvZl9nZXRfdmlkZW9tb2Rl KG5wLCAmY3R4LT52bSwgMCk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsK PiArCW9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAicG93ZXItb24tZGVsYXkiLAo+ICZjdHgtPnBv d2VyX29uX2RlbGF5KTsKPiArCW9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAicG93ZXItb2ZmLWRl bGF5IiwKPiAmY3R4LT5wb3dlcl9vZmZfZGVsYXkpOwo+ICsJb2ZfcHJvcGVydHlfcmVhZF91MzIo bnAsICJyZXNldC1kZWxheSIsICZjdHgtPnJlc2V0X2RlbGF5KTsKPiArCW9mX3Byb3BlcnR5X3Jl YWRfdTMyKG5wLCAiaW5pdC1kZWxheSIsICZjdHgtPmluaXRfZGVsYXkpOwo+ICsJb2ZfcHJvcGVy dHlfcmVhZF91MzIobnAsICJwYW5lbC13aWR0aC1tbSIsICZjdHgtPndpZHRoX21tKTsKPiArCW9m X3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAicGFuZWwtaGVpZ2h0LW1tIiwgJmN0eC0+aGVpZ2h0X21t KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHM2ZTYzajB4MDNf cHJvYmUoc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpKQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNl ICpkZXYgPSAmZHNpLT5kZXY7Cj4gKwlzdHJ1Y3QgczZlNjNqMHgwMyAqY3R4Owo+ICsJaW50IHJl dDsKPiArCj4gKwljdHggPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2Yoc3RydWN0IHM2ZTYzajB4 MDMpLAo+IEdGUF9LRVJORUwpOwo+ICsJaWYgKCFjdHgpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4g Kwo+ICsJbWlwaV9kc2lfc2V0X2RydmRhdGEoZHNpLCBjdHgpOwo+ICsKPiArCWN0eC0+ZGV2ID0g ZGV2Owo+ICsKPiArCWRzaS0+bGFuZXMgPSAxOwo+ICsJZHNpLT5mb3JtYXQgPSBNSVBJX0RTSV9G TVRfUkdCODg4Owo+ICsJZHNpLT5tb2RlX2ZsYWdzID0gTUlQSV9EU0lfTU9ERV9FT1RfUEFDS0VU IHwKPiBNSVBJX0RTSV9NT0RFX1ZJREVPX0JVUlNUOyArCj4gKwlyZXQgPSBzNmU2M2oweDAzX3Bh cnNlX2R0KGN0eCk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWN0 eC0+c3VwcGxpZXNbMF0uc3VwcGx5ID0gInZkZDMiOwo+ICsJY3R4LT5zdXBwbGllc1sxXS5zdXBw bHkgPSAidmNpIjsKPiArCXJldCA9IGRldm1fcmVndWxhdG9yX2J1bGtfZ2V0KGRldiwgQVJSQVlf U0laRShjdHgtPnN1cHBsaWVzKSwKPiArCQkJCSAgICAgIGN0eC0+c3VwcGxpZXMpOwo+ICsJaWYg KHJldCA8IDApIHsKPiArCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgcmVndWxhdG9yczog JWRcbiIsIHJldCk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwljdHgtPnJlc2V0X2dw aW8gPSBkZXZtX2dwaW9kX2dldChkZXYsICJyZXNldCIsCj4gR1BJT0RfT1VUX0hJR0gpOwo+ICsJ aWYgKElTX0VSUihjdHgtPnJlc2V0X2dwaW8pKSB7Cj4gKwkJZGV2X2VycihkZXYsICJjYW5ub3Qg Z2V0IHJlc2V0LWdwaW86ICVsZFxuIiwKPiArCQkJCVBUUl9FUlIoY3R4LT5yZXNldF9ncGlvKSk7 Cj4gKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5yZXNldF9ncGlvKTsKPiArCX0KPiArCj4gKwlkcm1f cGFuZWxfaW5pdCgmY3R4LT5wYW5lbCk7Cj4gKwljdHgtPnBhbmVsLmRldiA9IGRldjsKPiArCWN0 eC0+cGFuZWwuZnVuY3MgPSAmczZlNjNqMHgwM19mdW5jczsKPiArCj4gKwljdHgtPmJsX2RldiA9 IGJhY2tsaWdodF9kZXZpY2VfcmVnaXN0ZXIoInM2ZTYzajB4MDMiLCBkZXYsCj4gY3R4LAo+ICsJ CQkJCQkmczZlNjNqMHgwM19ibF9vcHMsCj4gTlVMTCk7Cj4gKwlpZiAoSVNfRVJSKGN0eC0+Ymxf ZGV2KSkgewo+ICsJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIHJlZ2lzdGVyIGJhY2tsaWdodAo+ IGRldmljZVxuIik7Cj4gKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5ibF9kZXYpOwo+ICsJfQo+ICsK PiArCWN0eC0+YmxfZGV2LT5wcm9wcy5tYXhfYnJpZ2h0bmVzcyA9IE1BWF9CUklHSFRORVNTOwo+ ICsJY3R4LT5ibF9kZXYtPnByb3BzLmJyaWdodG5lc3MgPSBERUZBVUxUX0JSSUdIVE5FU1M7Cj4g KwljdHgtPmJsX2Rldi0+cHJvcHMucG93ZXIgPSBGQl9CTEFOS19QT1dFUkRPV047Cj4gKwo+ICsK PiArCXJldCA9IGRybV9wYW5lbF9hZGQoJmN0eC0+cGFuZWwpOwo+ICsJaWYgKHJldCA8IDApCj4g KwkJZ290byB1bnJlZ2lzdGVyX2JhY2tsaWdodDsKPiArCj4gKwlyZXQgPSBtaXBpX2RzaV9hdHRh Y2goZHNpKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCWdvdG8gcmVtb3ZlX3BhbmVsOwo+ICsKPiAr CXJldHVybiByZXQ7Cj4gKwo+ICtyZW1vdmVfcGFuZWw6Cj4gKwlkcm1fcGFuZWxfcmVtb3ZlKCZj dHgtPnBhbmVsKTsKPiArCj4gK3VucmVnaXN0ZXJfYmFja2xpZ2h0Ogo+ICsJYmFja2xpZ2h0X2Rl dmljZV91bnJlZ2lzdGVyKGN0eC0+YmxfZGV2KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IHM2ZTYzajB4MDNfcmVtb3ZlKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2Ug KmRzaSkKPiArewo+ICsJc3RydWN0IHM2ZTYzajB4MDMgKmN0eCA9IG1pcGlfZHNpX2dldF9kcnZk YXRhKGRzaSk7Cj4gKwo+ICsJbWlwaV9kc2lfZGV0YWNoKGRzaSk7Cj4gKwlkcm1fcGFuZWxfcmVt b3ZlKCZjdHgtPnBhbmVsKTsKPiArCj4gKwliYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIoY3R4 LT5ibF9kZXYpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IG9mX2RldmljZV9pZCBzNmU2M2oweDAzX29mX21hdGNoW10gPSB7Cj4gKwl7IC5jb21wYXRp YmxlID0gInNhbXN1bmcsczZlNjNqMHgwMyIgfSwKPiArCXsgfQo+ICt9Owo+ICtNT0RVTEVfREVW SUNFX1RBQkxFKG9mLCBzNmU2M2oweDAzX29mX21hdGNoKTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3Qg bWlwaV9kc2lfZHJpdmVyIHM2ZTYzajB4MDNfZHJpdmVyID0gewo+ICsJLnByb2JlID0gczZlNjNq MHgwM19wcm9iZSwKPiArCS5yZW1vdmUgPSBzNmU2M2oweDAzX3JlbW92ZSwKPiArCS5kcml2ZXIg PSB7Cj4gKwkJLm5hbWUgPSAicGFuZWxfczZlNjNqMHgwMyIsCj4gKwkJLm9mX21hdGNoX3RhYmxl ID0gczZlNjNqMHgwM19vZl9tYXRjaCwKPiArCX0sCj4gK307Cj4gK21vZHVsZV9taXBpX2RzaV9k cml2ZXIoczZlNjNqMHgwM19kcml2ZXIpOwo+ICsKPiArTU9EVUxFX0FVVEhPUigiSW5raSBEYWUg PGlua2kuZGFlQHNhbXN1bmcuY29tPiIpOwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIk1JUEktRFNJ IGJhc2VkIHM2ZThhYTAgQU1PTEVEIExDRCBQYW5lbCBEcml2ZXIiKTsKPiArTU9EVUxFX0xJQ0VO U0UoIkdQTCB2MiIpOwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK