From mboxrd@z Thu Jan 1 00:00:00 1970 From: Inki Dae Subject: Re: [PATCH v2 2/3] drm/panel: add s6e63j0x03 LCD panel driver Date: Wed, 31 Dec 2014 19:41:43 +0900 Message-ID: <54A3D2E7.1000900@samsung.com> References: <1418117346-9078-1-git-send-email-human.hwang@samsung.com> <1418117346-9078-3-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: <1418117346-9078-3-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 , Thierry Reding Cc: mark.rutland@arm.com, devicetree@vger.kernel.org, linux-samsung-soc@vger.kernel.org, pawel.moll@arm.com, ijc+devicetree@hellion.org.uk, dri-devel@lists.freedesktop.org, a.hajda@samsung.com, kyungmin.park@samsung.com, robh+dt@kernel.org, galak@codeaurora.org, Kukjin Kim List-Id: linux-samsung-soc@vger.kernel.org SGkgVGhpZXJyeSwKClBpbmd+LgoKT3IgaXMgaXQgb2sgdG8gcGljayB1cCB0aGlzIHBhdGNoIHRv IG15IHRyZWUsIGV4eW5vcy1kcm0tbmV4dD8gSXQKZG9lc24ndCBzZWVtIHRvIGNhcmUgZm9yIGEg bG9uZyB0aW1lLgoKVGhhbmtzLApJbmtpIERhZQoKT24gMjAxNOuFhCAxMuyblCAwOeydvCAxODoy OSwgSHl1bmd3b24gSHdhbmcgd3JvdGU6Cj4gRnJvbTogSW5raSBEYWUgPGlua2kuZGFlQHNhbXN1 bmcuY29tPgo+IAo+IFRoaXMgcGF0Y2ggYWRkcyBNSVBJLURTSSBiYXNlZCBTNkU2M0owWDAzIEFN T0xFRCBMQ0QgcGFuZWwgZHJpdmVyCj4gd2hpY2ggdXNlcyBtaXBpX2RzaSBidXMgdG8gY29tbXVu aWNhdGUgd2l0aCBwYW5lbC4gVGhlIHBhbmVsIGhhcwo+IDMyMMOXMzIwIHJlc29sdXRpb24gaW4g MS42My1pbmNoIHBoeXNpY2FsIHBhbmVsLiBUaGlzIHBhbmVsIGlzIHVzZWQgaW4KPiBTYW1zdW5n IEdhbGF4eSBHZWFyIDIuCj4gCj4gU2lnbmVkLW9mZi1ieTogSW5raSBEYWUgPGlua2kuZGFlQHNh bXN1bmcuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEh5dW5nd29uIEh3YW5nIDxodW1hbi5od2FuZ0Bz YW1zdW5nLmNvbT4KPiBBY2tlZC1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1z dW5nLmNvbT4KPiAtLS0KPiBDaGFuZ2VzIGZvciB2MjoKPiAtIENoYW5nZSB0aGUgZ2FtbWEgdGFi bGUgdG8gMi1kaW1lbnNpb25hbCBhcnJheQo+IC0gQ2hhbmdlIHRoZSB3YXkgdG8gbWFrZSBpbmRl eCBmb3IgYnJpZ2h0bmVzcwo+IC0gTWFrZSBjb21tYW5kIGZ1bmN0aW9ucyB0byBhbiBhcnJheSBz byB0aGF0IGl0IGNhbiBiZSBjYWxsZWQgc2ltcGx5Cj4gLSBDaGFuZ2UgY29tbWFuZCBpZCBmb3Ig cmVhZGluZyBkZXZpY2UgSUQKPiAtIENoYW5nZSB0aGUgd2F5IHRvIGhhbmRsZSB0aGUgZXJyb3Ig Y29uZGl0aW9uCj4gLSBSZW1vdmUgcG93ZXIgdmFyaWFibGUsIGFuZCB1c2UgdGhlIHNhbWUgbmFt ZSB2YXJpYWJsZSBpbiBibF9kZXYKPiAtIEFkZCB0aGUgc3RhdGUgRkJfQkxBTktfTk9STUFMIHRv IHJlcHJlc2VudCB0aGUgc3RhdGUgd2hpY2ggdGhlIHBhbmVsCj4gaXMgd29ya2luZyBidXQgYmxh bmtlZAo+IC0gTWlzY2VsbGFuZW91cyBjaGFuZ2VzIHRvIGluY3JlYXNlIHRoZSByZWFkYWJpbGl0 eSBhbmQgZm9sbG93IHRoZQo+ICAgY29kaW5nLXN0eWxlIHN0YW5kYXJkCj4gCj4gIGRyaXZlcnMv Z3B1L2RybS9wYW5lbC9LY29uZmlnICAgICAgICAgICAgfCAgIDYgKwo+ICBkcml2ZXJzL2dwdS9k cm0vcGFuZWwvTWFrZWZpbGUgICAgICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL3Bh bmVsL3BhbmVsLXM2ZTYzajB4MDMuYyB8IDU0OSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4gIDMgZmlsZXMgY2hhbmdlZCwgNTU2IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zNmU2M2oweDAzLmMKPiAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0v cGFuZWwvS2NvbmZpZwo+IGluZGV4IGJlZTlmNzIuLmJjMTMzZTIgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwv S2NvbmZpZwo+IEBAIC0yNyw0ICsyNywxMCBAQCBjb25maWcgRFJNX1BBTkVMX1M2RThBQTAKPiAg CXNlbGVjdCBEUk1fTUlQSV9EU0kKPiAgCXNlbGVjdCBWSURFT01PREVfSEVMUEVSUwo+ICAKPiAr Y29uZmlnIERSTV9QQU5FTF9TNkU2M0owWDAzCj4gKwl0cmlzdGF0ZSAiUzZFNjNKMFgwMyBEU0kg dmlkZW8gbW9kZSBwYW5lbCIKPiArCWRlcGVuZHMgb24gT0YKPiArCXNlbGVjdCBEUk1fTUlQSV9E U0kKPiArCXNlbGVjdCBWSURFT01PREVfSEVMUEVSUwo+ICsKPiAgZW5kbWVudQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvTWFrZWZpbGUKPiBpbmRleCA4YjkyOTIxLi43ZjM2ZGMyIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9N YWtlZmlsZQo+IEBAIC0xLDMgKzEsNCBAQAo+ICBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NJTVBM RSkgKz0gcGFuZWwtc2ltcGxlLm8KPiAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9MRDkwNDApICs9 IHBhbmVsLWxkOTA0MC5vCj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxfUzZFOEFBMCkgKz0gcGFu ZWwtczZlOGFhMC5vCj4gK29iai0kKENPTkZJR19EUk1fUEFORUxfUzZFNjNKMFgwMykgKz0gcGFu ZWwtczZlNjNqMHgwMy5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5l bC1zNmU2M2oweDAzLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtczZlNjNqMHgwMy5j Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi4yOGU0YTUxCj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zNmU2M2oweDAzLmMK PiBAQCAtMCwwICsxLDU0OSBAQAo+ICsvKgo+ICsgKiBNSVBJLURTSSBiYXNlZCBTNkU2M0owWDAz IEFNT0xFRCBsY2QgMS42MyBpbmNoIHBhbmVsIGRyaXZlci4KPiArICoKPiArICogQ29weXJpZ2h0 IChjKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQKPiArICoKPiArICogSW5raSBE YWUsIDxpbmtpLmRhZUBzYW1zdW5nLmNvbT4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICog aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJz aW9uIDIgYXMKPiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24u Cj4gKyovCj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1f bWlwaV9kc2kuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KPiArCj4gKyNpbmNsdWRl IDxsaW51eC9vZl9ncGlvLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9ncGlvLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2JhY2tsaWdo dC5oPgo+ICsKPiArI2luY2x1ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5oPgo+ICsjaW5jbHVkZSA8 dmlkZW8vb2ZfdmlkZW9tb2RlLmg+Cj4gKyNpbmNsdWRlIDx2aWRlby92aWRlb21vZGUuaD4KPiAr Cj4gKyNkZWZpbmUgUkVBRF9JRDEJCTB4REEKPiArI2RlZmluZSBSRUFEX0lEMgkJMHhEQgo+ICsj ZGVmaW5lIFJFQURfSUQzCQkweERDCj4gKwo+ICsjZGVmaW5lIE1DU19MRVZFTDJfS0VZCQkweGYw Cj4gKyNkZWZpbmUgTUNTX01UUF9LRVkJCTB4ZjEKPiArI2RlZmluZSBNQ1NfTVRQX1NFVDMJCTB4 ZDQKPiArCj4gKyNkZWZpbmUgTUlOX0JSSUdIVE5FU1MJCTAKPiArI2RlZmluZSBNQVhfQlJJR0hU TkVTUwkJMTAwCj4gKyNkZWZpbmUgREVGQVVMVF9CUklHSFRORVNTCTgwCj4gKwo+ICsjZGVmaW5l IEdBTU1BX0xFVkVMX05VTQkJMzAKPiArI2RlZmluZSBOVU1fR0FNTUFfU1RFUFMJCTkKPiArI2Rl ZmluZSBHQU1NQV9DTURfQ05UCQkyOAo+ICsKPiArc3RydWN0IHM2ZTYzajB4MDMgewo+ICsJc3Ry dWN0IGRldmljZSAqZGV2Owo+ICsJc3RydWN0IGRybV9wYW5lbCBwYW5lbDsKPiArCXN0cnVjdCBi YWNrbGlnaHRfZGV2aWNlICpibF9kZXY7Cj4gKwo+ICsJc3RydWN0IHJlZ3VsYXRvcl9idWxrX2Rh dGEgc3VwcGxpZXNbMl07Cj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpyZXNldF9ncGlvOwo+ICsJdTMy IHBvd2VyX29uX2RlbGF5Owo+ICsJdTMyIHBvd2VyX29mZl9kZWxheTsKPiArCXUzMiByZXNldF9k ZWxheTsKPiArCXUzMiBpbml0X2RlbGF5Owo+ICsJYm9vbCBmbGlwX2hvcml6b250YWw7Cj4gKwli b29sIGZsaXBfdmVydGljYWw7Cj4gKwlzdHJ1Y3QgdmlkZW9tb2RlIHZtOwo+ICsJdW5zaWduZWQg aW50IHdpZHRoX21tOwo+ICsJdW5zaWduZWQgaW50IGhlaWdodF9tbTsKPiArfTsKPiArCj4gK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGdhbW1hX3RibFtOVU1fR0FNTUFfU1RFUFNdW0dBTU1B X0NNRF9DTlRdID0gewo+ICsJewkvKiBHYW1tYSAxMCAqLwo+ICsJCU1DU19NVFBfU0VUMywKPiAr CQkweDAwLCAweDAwLCAweDAwLCAweDdmLCAweDdmLCAweDdmLCAweDUyLCAweDZiLCAweDZmLCAw eDI2LAo+ICsJCTB4MjgsIDB4MmQsIDB4MjgsIDB4MjYsIDB4MjcsIDB4MzMsIDB4MzQsIDB4MzIs IDB4MzYsIDB4MzYsCj4gKwkJMHgzNSwgMHgwMCwgMHhhYiwgMHgwMCwgMHhhZSwgMHgwMCwgMHhi Zgo+ICsJfSwKPiArCXsJLyogZ2FtbWEgMzAgKi8KPiArCQlNQ1NfTVRQX1NFVDMsCj4gKwkJMHgw MCwgMHgwMCwgMHgwMCwgMHg3MCwgMHg3ZiwgMHg3ZiwgMHg0ZSwgMHg2NCwgMHg2OSwgMHgyNiwK PiArCQkweDI3LCAweDJhLCAweDI4LCAweDI5LCAweDI3LCAweDMxLCAweDMyLCAweDMxLCAweDM1 LCAweDM0LAo+ICsJCTB4MzUsIDB4MDAsIDB4YzQsIDB4MDAsIDB4Y2EsIDB4MDAsIDB4ZGMKPiAr CX0sCj4gKwl7CS8qIGdhbW1hIDYwICovCj4gKwkJTUNTX01UUF9TRVQzLAo+ICsJCTB4MDAsIDB4 MDAsIDB4MDAsIDB4NjUsIDB4N2IsIDB4N2QsIDB4NWYsIDB4NjcsIDB4NjgsIDB4MmEsCj4gKwkJ MHgyOCwgMHgyOSwgMHgyOCwgMHgyYSwgMHgyNywgMHgzMSwgMHgyZiwgMHgzMCwgMHgzNCwgMHgz MywKPiArCQkweDM0LCAweDAwLCAweGQ5LCAweDAwLCAweGU0LCAweDAwLCAweGY1Cj4gKwl9LAo+ ICsJewkvKiBnYW1tYSA5MCAqLwo+ICsJCU1DU19NVFBfU0VUMywKPiArCQkweDAwLCAweDAwLCAw eDAwLCAweDRkLCAweDZmLCAweDcxLCAweDY3LCAweDZhLCAweDZjLCAweDI5LAo+ICsJCTB4Mjgs IDB4MjgsIDB4MjgsIDB4MjksIDB4MjcsIDB4MzAsIDB4MmUsIDB4MzAsIDB4MzIsIDB4MzEsCj4g KwkJMHgzMSwgMHgwMCwgMHhlYSwgMHgwMCwgMHhmNiwgMHgwMSwgMHgwOQo+ICsJfSwKPiArCXsJ LyogZ2FtbWEgMTIwICovCj4gKwkJTUNTX01UUF9TRVQzLAo+ICsJCTB4MDAsIDB4MDAsIDB4MDAs IDB4M2QsIDB4NjYsIDB4NjgsIDB4NjksIDB4NjksIDB4NjksIDB4MjgsCj4gKwkJMHgyOCwgMHgy NywgMHgyOCwgMHgyOCwgMHgyNywgMHgzMCwgMHgyZSwgMHgyZiwgMHgzMSwgMHgzMSwKPiArCQkw eDMwLCAweDAwLCAweGY5LCAweDAxLCAweDA1LCAweDAxLCAweDFiCj4gKwl9LAo+ICsJewkvKiBn YW1tYSAxNTAgKi8KPiArCQlNQ1NfTVRQX1NFVDMsCj4gKwkJMHgwMCwgMHgwMCwgMHgwMCwgMHgz MSwgMHg1MSwgMHg1MywgMHg2NiwgMHg2NiwgMHg2NywgMHgyOCwKPiArCQkweDI5LCAweDI3LCAw eDI4LCAweDI3LCAweDI3LCAweDJlLCAweDJkLCAweDJlLCAweDMxLCAweDMxLAo+ICsJCTB4MzAs IDB4MDEsIDB4MDQsIDB4MDEsIDB4MTEsIDB4MDEsIDB4MjkKPiArCX0sCj4gKwl7CS8qIGdhbW1h IDIwMCAqLwo+ICsJCU1DU19NVFBfU0VUMywKPiArCQkweDAwLCAweDAwLCAweDAwLCAweDJmLCAw eDRmLCAweDUxLCAweDY3LCAweDY1LCAweDY1LCAweDI5LAo+ICsJCTB4MmEsIDB4MjgsIDB4Mjcs IDB4MjUsIDB4MjYsIDB4MmQsIDB4MmMsIDB4MmMsIDB4MzAsIDB4MzAsCj4gKwkJMHgzMCwgMHgw MSwgMHgxNCwgMHgwMSwgMHgyMywgMHgwMSwgMHgzYgo+ICsJfSwKPiArCXsJLyogZ2FtbWEgMjQw ICovCj4gKwkJTUNTX01UUF9TRVQzLAo+ICsJCTB4MDAsIDB4MDAsIDB4MDAsIDB4MmMsIDB4NGQs IDB4NTAsIDB4NjUsIDB4NjMsIDB4NjQsIDB4MmEsCj4gKwkJMHgyYywgMHgyOSwgMHgyNiwgMHgy NCwgMHgyNSwgMHgyYywgMHgyYiwgMHgyYiwgMHgzMCwgMHgzMCwKPiArCQkweDMwLCAweDAxLCAw eDFlLCAweDAxLCAweDJmLCAweDAxLCAweDQ3Cj4gKwl9LAo+ICsJewkvKiBnYW1tYSAzMDAgKi8K PiArCQlNQ1NfTVRQX1NFVDMsCj4gKwkJMHgwMCwgMHgwMCwgMHgwMCwgMHgzOCwgMHg2MSwgMHg2 NCwgMHg2NSwgMHg2MywgMHg2NCwgMHgyOCwKPiArCQkweDJhLCAweDI3LCAweDI2LCAweDIzLCAw eDI1LCAweDJiLCAweDJiLCAweDJhLCAweDMwLCAweDJmLAo+ICsJCTB4MzAsIDB4MDEsIDB4MmQs IDB4MDEsIDB4M2YsIDB4MDEsIDB4NTcKPiArCX0KPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIHByZXBhcmVfY21kczFbXVsxNV0gPSB7Cj4gKwl7IDMsIDB4ZjIsIDB4MWMs IDB4MjggfSwJCS8qIHBvcmNoX2FkanVzdG1lbnQgKi8KPiArCXsgNCwgMHhiNSwgMHgwMCwgMHgw MiwgMHgwMCB9LAkJLyogZnJhbWVfZnJlcSAqLwo+ICsJeyA1LCAweDJhLCAweDAwLCAweDE0LCAw eDAxLCAweDUzIH0sCS8qIG1lbV9hZGRyX3NldF8wICovCj4gKwl7IDUsIDB4MmIsIDB4MDAsIDB4 MDAsIDB4MDEsIDB4M2YgfSwJLyogbWVtX2FkZHJfc2V0XzEgKi8KPiArCXsgMTQsIDB4ZjgsIDB4 MDgsIDB4MDgsIDB4MDgsIDB4MTcsCS8qIGx0cHNfdGltbWluZ19zZXRfMF82MGh6ICovCj4gKwkg ICAgICAweDAwLCAweDJhLCAweDAyLCAweDI2LAo+ICsJICAgICAgMHgwMCwgMHgwMCwgMHgwMiwg MHgwMCwgMHgwMCB9LAo+ICsJeyAyLCAweGY3LCAweDAyIH0sCQkJLyogbHRwc190aW1taW5nX3Nl dF8xICovCj4gKwl7IDIsIDB4YjAsIDB4MDEgfSwJCQkvKiBwYXJhbV9wb3NfdGVfZWRnZSAqLwo+ ICsJeyAyLCAweGUyLCAweDBmIH0sCQkJLyogdGVfcmlzaW5nX2VkZ2UgKi8KPiArCXsgMiwgMHhi MCwgMHgwMCB9LAkJCS8qIHBhcmFtX3Bvc19kZWZhdWx0ICovCj4gKwl7IDEsIE1JUElfRENTX0VY SVRfU0xFRVBfTU9ERSB9LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0ICB1bnNpZ25lZCBjaGFy IHByZXBhcmVfY21kczJbXVs0XSA9IHsKPiArCXsgMywgMHhiMSwgMHgwMCwgMHgwOSB9LAkvKiBl bHZzc19jb25kICovCj4gKwl7IDIsIDB4MzYsIDB4NDAgfSwJCS8qIHNldF9wb3MgKi8KPiArCXsg MiwgMHg1MSwgMHhmZiB9LAkJLyogd2hpdGVfYnJpZ2h0bmVzc19kZWZhdWx0ICovCj4gKwl7IDIs IDB4NTMsIDB4MjAgfSwJCS8qIHdoaXRlX2N0cmwgKi8KPiArCXsgMiwgMHg1NSwgMHgwMCB9LAkJ LyogYWNsX29mZiAqLwo+ICsJeyAxLCBNSVBJX0RDU19TRVRfVEVBUl9PTiB9LAo+ICt9Owo+ICsK PiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHM2ZTYzajB4MDMgKnBhbmVsX3RvX3M2ZTYzajB4 MDMoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXJldHVybiBjb250YWluZXJfb2Yo cGFuZWwsIHN0cnVjdCBzNmU2M2oweDAzLCBwYW5lbCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxp bmUgc3NpemVfdCBzNmU2M2oweDAzX2Rjc193cml0ZV9zZXEoc3RydWN0IHM2ZTYzajB4MDMgKmN0 eCwKPiArCQkJCQljb25zdCB1OCAqc2VxLCBjb25zdCB1bnNpZ25lZCBjaGFyIGxlbikKPiArewo+ ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gdG9fbWlwaV9kc2lfZGV2aWNlKGN0eC0+ ZGV2KTsKPiArCj4gKwlyZXR1cm4gbWlwaV9kc2lfZGNzX3dyaXRlKGRzaSwgc2VxLCBsZW4pOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGludCBzNmU2M2oweDAzX2VuYWJsZV9sdjJfY29tbWFu ZChzdHJ1Y3QgczZlNjNqMHgwMyAqY3R4KQo+ICt7Cj4gKwl1bnNpZ25lZCBjaGFyIHNlcVtdID0g eyBNQ1NfTEVWRUwyX0tFWSwgMHg1YSwgMHg1YSB9Owo+ICsKPiArCXJldHVybiBzNmU2M2oweDAz X2Rjc193cml0ZV9zZXEoY3R4LCBzZXEsIEFSUkFZX1NJWkUoc2VxKSk7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbmxpbmUgaW50IHM2ZTYzajB4MDNfYXBwbHlfbXRwX2tleShzdHJ1Y3QgczZlNjNqMHgw MyAqY3R4LCBib29sIG9uKQo+ICt7Cj4gKwl1bnNpZ25lZCBjaGFyIHNlcTFbM10gPSB7IE1DU19N VFBfS0VZLCAweDVhLCAweDVhIH07Cj4gKwl1bnNpZ25lZCBjaGFyIHNlcTJbM10gPSB7IE1DU19N VFBfS0VZLCAweGE1LCAweGE1IH07Cj4gKwo+ICsJcmV0dXJuIHM2ZTYzajB4MDNfZGNzX3dyaXRl X3NlcShjdHgsIG9uID8gc2VxMSA6IHNlcTIsCj4gKwkJCQkJQVJSQVlfU0laRShzZXExKSk7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgczZlNjNqMHgwM19yZWFkX210cF9pZChzdHJ1Y3QgczZlNjNq MHgwMyAqY3R4KQo+ICt7Cj4gKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kgPSB0b19taXBp X2RzaV9kZXZpY2UoY3R4LT5kZXYpOwo+ICsJdW5zaWduZWQgY2hhciBjbWRzWzNdID0geyBSRUFE X0lEMSwgUkVBRF9JRDIsIFJFQURfSUQzIH07Cj4gKwl1bnNpZ25lZCBjaGFyIGlkWzNdOwo+ICsJ aW50IHJldDsKPiArCWludCBpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKPiAr CQlyZXQgPSBtaXBpX2RzaV9kY3NfcmVhZChkc2ksIGNtZHNbaV0sICZpZFtpXSwgMSk7Cj4gKwo+ ICsJCWlmIChyZXQgPCAwKQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCWRldl9pbmZv KGN0eC0+ZGV2LCAiSUQ6IDB4JTAyeCwgMHglMDJ4LCAweCUwMnhcbiIsIGlkWzBdLCBpZFsxXSwg aWRbMl0pOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHM2ZTYzajB4 MDNfcG93ZXJfb24oc3RydWN0IHM2ZTYzajB4MDMgKmN0eCkKPiArewo+ICsJaW50IHJldDsKPiAr Cj4gKwlyZXQgPSByZWd1bGF0b3JfYnVsa19lbmFibGUoQVJSQVlfU0laRShjdHgtPnN1cHBsaWVz KSwgY3R4LT5zdXBwbGllcyk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsK PiArCW1zbGVlcChjdHgtPnBvd2VyX29uX2RlbGF5KTsKPiArCj4gKwlncGlvZF9zZXRfdmFsdWUo Y3R4LT5yZXNldF9ncGlvLCAwKTsKPiArCXVzbGVlcF9yYW5nZSgxMDAwLCAyMDAwKTsKPiArCWdw aW9kX3NldF92YWx1ZShjdHgtPnJlc2V0X2dwaW8sIDEpOwo+ICsKPiArCXVzbGVlcF9yYW5nZShj dHgtPnJlc2V0X2RlbGF5ICogMTAwMCwgKGN0eC0+cmVzZXRfZGVsYXkgKyAxKSAqIDEwMDApOwo+ ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHM2ZTYzajB4MDNfcG93ZXJf b2ZmKHN0cnVjdCBzNmU2M2oweDAzICpjdHgpCj4gK3sKPiArCWludCByZXQ7Cj4gKwo+ICsJZ3Bp b2Rfc2V0X3ZhbHVlKGN0eC0+cmVzZXRfZ3BpbywgMCk7Cj4gKwo+ICsJcmV0ID0gcmVndWxhdG9y X2J1bGtfZGlzYWJsZShBUlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMpLCBjdHgtPnN1cHBsaWVzKTsK PiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgczZlNjNqMHgwM19nZXRfYnJpZ2h0bmVzcyhzdHJ1Y3QgYmFja2xp Z2h0X2RldmljZSAqYmxfZGV2KQo+ICt7Cj4gKwlyZXR1cm4gYmxfZGV2LT5wcm9wcy5icmlnaHRu ZXNzOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdW5zaWduZWQgaW50IHM2ZTYzajB4MDNfZ2V0X2JyaWdo dG5lc3NfaW5kZXgodW5zaWduZWQgaW50IGJyaWdodG5lc3MpCj4gK3sKPiArCXVuc2lnbmVkIGlu dCBpbmRleDsKPiArCj4gKwlpbmRleCA9IGJyaWdodG5lc3MgLyAoTUFYX0JSSUdIVE5FU1MgLyBO VU1fR0FNTUFfU1RFUFMpOwo+ICsKPiArCWlmIChpbmRleCA+PSBOVU1fR0FNTUFfU1RFUFMpCj4g KwkJaW5kZXggPSBOVU1fR0FNTUFfU1RFUFMgLSAxOwo+ICsKPiArCXJldHVybiBpbmRleDsKPiAr fQo+ICsKPiArc3RhdGljIGludCBzNmU2M2oweDAzX3VwZGF0ZV9nYW1tYShzdHJ1Y3QgczZlNjNq MHgwMyAqY3R4LAo+ICsJCQkJCXVuc2lnbmVkIGludCBicmlnaHRuZXNzKQo+ICt7Cj4gKwlzdHJ1 Y3QgYmFja2xpZ2h0X2RldmljZSAqYmxfZGV2ID0gY3R4LT5ibF9kZXY7Cj4gKwlzdHJ1Y3QgbWlw aV9kc2lfZGV2aWNlICpkc2kgPSB0b19taXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYpOwo+ICsJdW5z aWduZWQgaW50IGluZGV4ID0gczZlNjNqMHgwM19nZXRfYnJpZ2h0bmVzc19pbmRleChicmlnaHRu ZXNzKTsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gczZlNjNqMHgwM19hcHBseV9tdHBfa2V5 KGN0eCwgdHJ1ZSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXJl dCA9IG1pcGlfZHNpX2Rjc193cml0ZShkc2ksIGdhbW1hX3RibFtpbmRleF0sIEdBTU1BX0NNRF9D TlQpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXQgPSBzNmU2 M2oweDAzX2FwcGx5X210cF9rZXkoY3R4LCBmYWxzZSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQly ZXR1cm4gcmV0Owo+ICsKPiArCWJsX2Rldi0+cHJvcHMuYnJpZ2h0bmVzcyA9IGJyaWdodG5lc3M7 Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgczZlNjNqMHgwM19zZXRf YnJpZ2h0bmVzcyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmxfZGV2KQo+ICt7Cj4gKwlzdHJ1 Y3QgczZlNjNqMHgwMyAqY3R4ID0gKHN0cnVjdCBzNmU2M2oweDAzICopYmxfZ2V0X2RhdGEoYmxf ZGV2KTsKPiArCXVuc2lnbmVkIGludCBicmlnaHRuZXNzID0gYmxfZGV2LT5wcm9wcy5icmlnaHRu ZXNzOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoYnJpZ2h0bmVzcyA8IE1JTl9CUklHSFRORVNT IHx8Cj4gKwkJYnJpZ2h0bmVzcyA+IGJsX2Rldi0+cHJvcHMubWF4X2JyaWdodG5lc3MpIHsKPiAr CQlkZXZfZXJyKGN0eC0+ZGV2LCAiSW52YWxpZCBicmlnaHRuZXNzOiAldVxuIiwgYnJpZ2h0bmVz cyk7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJaWYgKGJsX2Rldi0+cHJvcHMu cG93ZXIgPiBGQl9CTEFOS19OT1JNQUwpIHsKPiArCQlkZXZfZXJyKGN0eC0+ZGV2LAo+ICsJCQki cGFuZWwgbXVzdCBiZSBhdCBsZWFzdCBpbiBmYiBibGFuayBub3JtYWwgc3RhdGVcbiIpOwo+ICsJ CXJldHVybiAtRVBFUk07Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gczZlNjNqMHgwM191cGRhdGVfZ2Ft bWEoY3R4LCBicmlnaHRuZXNzKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4g Kwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYmFja2xpZ2h0 X29wcyBzNmU2M2oweDAzX2JsX29wcyA9IHsKPiArCS5nZXRfYnJpZ2h0bmVzcyA9IHM2ZTYzajB4 MDNfZ2V0X2JyaWdodG5lc3MsCj4gKwkudXBkYXRlX3N0YXR1cyA9IHM2ZTYzajB4MDNfc2V0X2Jy aWdodG5lc3MsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IHM2ZTYzajB4MDNfZGlzYWJsZShzdHJ1 Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJc3RydWN0IHM2ZTYzajB4MDMgKmN0eCA9IHBh bmVsX3RvX3M2ZTYzajB4MDMocGFuZWwpOwo+ICsJc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJs X2RldiA9IGN0eC0+YmxfZGV2Owo+ICsJdTggc2VxW10gPSB7IE1JUElfRENTX1NFVF9ESVNQTEFZ X09GRiB9Owo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBzNmU2M2oweDAzX2Rjc193cml0ZV9z ZXEoY3R4LCBzZXEsIEFSUkFZX1NJWkUoc2VxKSk7Cj4gKwlpZiAocmV0ID4gMCkKPiArCQlibF9k ZXYtPnByb3BzLnBvd2VyID0gRkJfQkxBTktfTk9STUFMOwo+ICsKPiArCXJldHVybiAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50IHM2ZTYzajB4MDNfdW5wcmVwYXJlKHN0cnVjdCBkcm1fcGFuZWwg KnBhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgczZlNjNqMHgwMyAqY3R4ID0gcGFuZWxfdG9fczZlNjNq MHgwMyhwYW5lbCk7Cj4gKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmxfZGV2ID0gY3R4LT5i bF9kZXY7Cj4gKwl1OCBzZXFbXSA9IHsgTUlQSV9EQ1NfRU5URVJfU0xFRVBfTU9ERSB9Owo+ICsJ aW50IHJldDsKPiArCj4gKwlyZXQgPSBzNmU2M2oweDAzX2Rjc193cml0ZV9zZXEoY3R4LCBzZXEs IEFSUkFZX1NJWkUoc2VxKSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsK PiArCW1zbGVlcChjdHgtPnBvd2VyX29mZl9kZWxheSk7Cj4gKwo+ICsJcmV0ID0gczZlNjNqMHgw M19wb3dlcl9vZmYoY3R4KTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ ICsJYmxfZGV2LT5wcm9wcy5wb3dlciA9IEZCX0JMQU5LX1BPV0VSRE9XTjsKPiArCj4gKwlyZXR1 cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBzNmU2M2oweDAzX3ByZXBhcmUoc3RydWN0IGRy bV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXN0cnVjdCBzNmU2M2oweDAzICpjdHggPSBwYW5lbF90 b19zNmU2M2oweDAzKHBhbmVsKTsKPiArCXN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpibF9kZXYg PSBjdHgtPmJsX2RldjsKPiArCWludCByZXQ7Cj4gKwlpbnQgaTsKPiArCj4gKwlyZXQgPSBzNmU2 M2oweDAzX3Bvd2VyX29uKGN0eCk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ ICsKPiArCXJldCA9IHM2ZTYzajB4MDNfZW5hYmxlX2x2Ml9jb21tYW5kKGN0eCk7Cj4gKwlpZiAo cmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXJldCA9IHM2ZTYzajB4MDNfYXBwbHlf bXRwX2tleShjdHgsIHRydWUpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiAr Cj4gKwlyZXQgPSBzNmU2M2oweDAzX3JlYWRfbXRwX2lkKGN0eCk7Cj4gKwlpZiAocmV0IDwgMCkK PiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHByZXBh cmVfY21kczEpOyBpKyspIHsKPiArCQlyZXQgPSBzNmU2M2oweDAzX2Rjc193cml0ZV9zZXEoY3R4 LCAmcHJlcGFyZV9jbWRzMVtpXVsxXSwKPiArCQkJCQkJCXByZXBhcmVfY21kczFbaV1bMF0pOwo+ ICsJCWlmIChyZXQgPCAwKQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCW1zbGVlcCgx MjApOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHByZXBhcmVfY21kczIpOyBp KyspIHsKPiArCQlyZXQgPSBzNmU2M2oweDAzX2Rjc193cml0ZV9zZXEoY3R4LCAmcHJlcGFyZV9j bWRzMltpXVsxXSwKPiArCQkJCQkJCXByZXBhcmVfY21kczJbaV1bMF0pOwo+ICsJCWlmIChyZXQg PCAwKQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCXJldCA9IHM2ZTYzajB4MDNfYXBw bHlfbXRwX2tleShjdHgsIGZhbHNlKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7 Cj4gKwo+ICsJYmxfZGV2LT5wcm9wcy5wb3dlciA9IEZCX0JMQU5LX05PUk1BTDsKPiArCj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBzNmU2M2oweDAzX2VuYWJsZShzdHJ1Y3Qg ZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJc3RydWN0IHM2ZTYzajB4MDMgKmN0eCA9IHBhbmVs X3RvX3M2ZTYzajB4MDMocGFuZWwpOwo+ICsJc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJsX2Rl diA9IGN0eC0+YmxfZGV2Owo+ICsJdTggc2VxW10gPSB7IE1JUElfRENTX1NFVF9ESVNQTEFZX09O IH07Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IHM2ZTYzajB4MDNfZGNzX3dyaXRlX3NlcShj dHgsIHNlcSwgQVJSQVlfU0laRShzZXEpKTsKPiArCWlmIChyZXQgPiAwKQo+ICsJCWJsX2Rldi0+ cHJvcHMucG93ZXIgPSBGQl9CTEFOS19VTkJMQU5LOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IHM2ZTYzajB4MDNfZ2V0X21vZGVzKHN0cnVjdCBkcm1fcGFuZWwgKnBh bmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gcGFuZWwtPmNv bm5lY3RvcjsKPiArCXN0cnVjdCBzNmU2M2oweDAzICpjdHggPSBwYW5lbF90b19zNmU2M2oweDAz KHBhbmVsKTsKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwo+ICsKPiArCW1vZGUg PSBkcm1fbW9kZV9jcmVhdGUoY29ubmVjdG9yLT5kZXYpOwo+ICsJaWYgKCFtb2RlKSB7Cj4gKwkJ RFJNX0VSUk9SKCJmYWlsZWQgdG8gY3JlYXRlIGEgbmV3IGRpc3BsYXkgbW9kZVxuIik7Cj4gKwkJ cmV0dXJuIDA7Cj4gKwl9Cj4gKwo+ICsJZHJtX2Rpc3BsYXlfbW9kZV9mcm9tX3ZpZGVvbW9kZSgm Y3R4LT52bSwgbW9kZSk7Cj4gKwltb2RlLT53aWR0aF9tbSA9IGN0eC0+d2lkdGhfbW07Cj4gKwlt b2RlLT5oZWlnaHRfbW0gPSBjdHgtPmhlaWdodF9tbTsKPiArCWNvbm5lY3Rvci0+ZGlzcGxheV9p bmZvLndpZHRoX21tID0gbW9kZS0+d2lkdGhfbW07Cj4gKwljb25uZWN0b3ItPmRpc3BsYXlfaW5m by5oZWlnaHRfbW0gPSBtb2RlLT5oZWlnaHRfbW07Cj4gKwo+ICsJbW9kZS0+dHlwZSA9IERSTV9N T0RFX1RZUEVfRFJJVkVSIHwgRFJNX01PREVfVFlQRV9QUkVGRVJSRUQ7Cj4gKwlkcm1fbW9kZV9w cm9iZWRfYWRkKGNvbm5lY3RvciwgbW9kZSk7Cj4gKwo+ICsJcmV0dXJuIDE7Cj4gK30KPiArCj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BhbmVsX2Z1bmNzIHM2ZTYzajB4MDNfZnVuY3MgPSB7 Cj4gKwkuZGlzYWJsZSA9IHM2ZTYzajB4MDNfZGlzYWJsZSwKPiArCS51bnByZXBhcmUgPSBzNmU2 M2oweDAzX3VucHJlcGFyZSwKPiArCS5wcmVwYXJlID0gczZlNjNqMHgwM19wcmVwYXJlLAo+ICsJ LmVuYWJsZSA9IHM2ZTYzajB4MDNfZW5hYmxlLAo+ICsJLmdldF9tb2RlcyA9IHM2ZTYzajB4MDNf Z2V0X21vZGVzLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBzNmU2M2oweDAzX3BhcnNlX2R0KHN0 cnVjdCBzNmU2M2oweDAzICpjdHgpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGN0eC0+ ZGV2Owo+ICsJc3RydWN0IGRldmljZV9ub2RlICpucCA9IGRldi0+b2Zfbm9kZTsKPiArCWludCBy ZXQ7Cj4gKwo+ICsJcmV0ID0gb2ZfZ2V0X3ZpZGVvbW9kZShucCwgJmN0eC0+dm0sIDApOwo+ICsJ aWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlvZl9wcm9wZXJ0eV9yZWFkX3Uz MihucCwgInBvd2VyLW9uLWRlbGF5IiwgJmN0eC0+cG93ZXJfb25fZGVsYXkpOwo+ICsJb2ZfcHJv cGVydHlfcmVhZF91MzIobnAsICJwb3dlci1vZmYtZGVsYXkiLCAmY3R4LT5wb3dlcl9vZmZfZGVs YXkpOwo+ICsJb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJyZXNldC1kZWxheSIsICZjdHgtPnJl c2V0X2RlbGF5KTsKPiArCW9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAiaW5pdC1kZWxheSIsICZj dHgtPmluaXRfZGVsYXkpOwo+ICsKPiArCWN0eC0+ZmxpcF9ob3Jpem9udGFsID0gb2ZfcHJvcGVy dHlfcmVhZF9ib29sKG5wLCAiZmxpcC1ob3Jpem9udGFsIik7Cj4gKwljdHgtPmZsaXBfdmVydGlj YWwgPSBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobnAsICJmbGlwLXZlcnRpY2FsIik7Cj4gKwo+ICsJ cmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCBzNmU2M2oweDAzX3Byb2JlKHN0cnVj dCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKPiArewo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJmRz aS0+ZGV2Owo+ICsJc3RydWN0IHM2ZTYzajB4MDMgKmN0eDsKPiArCWludCByZXQ7Cj4gKwo+ICsJ Y3R4ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKHN0cnVjdCBzNmU2M2oweDAzKSwgR0ZQX0tF Uk5FTCk7Cj4gKwlpZiAoIWN0eCkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwltaXBpX2Rz aV9zZXRfZHJ2ZGF0YShkc2ksIGN0eCk7Cj4gKwo+ICsJY3R4LT5kZXYgPSBkZXY7Cj4gKwo+ICsJ ZHNpLT5sYW5lcyA9IDE7Cj4gKwlkc2ktPmZvcm1hdCA9IE1JUElfRFNJX0ZNVF9SR0I4ODg7Cj4g Kwlkc2ktPm1vZGVfZmxhZ3MgPSBNSVBJX0RTSV9NT0RFX0VPVF9QQUNLRVQgfCBNSVBJX0RTSV9N T0RFX1ZJREVPX0JVUlNUOwo+ICsKPiArCXJldCA9IHM2ZTYzajB4MDNfcGFyc2VfZHQoY3R4KTsK PiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJY3R4LT5zdXBwbGllc1sw XS5zdXBwbHkgPSAidmRkMyI7Cj4gKwljdHgtPnN1cHBsaWVzWzFdLnN1cHBseSA9ICJ2Y2kiOwo+ ICsJcmV0ID0gZGV2bV9yZWd1bGF0b3JfYnVsa19nZXQoZGV2LCBBUlJBWV9TSVpFKGN0eC0+c3Vw cGxpZXMpLAo+ICsJCQkJICAgICAgY3R4LT5zdXBwbGllcyk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ ICsJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCByZWd1bGF0b3JzOiAlZFxuIiwgcmV0KTsK PiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCWN0eC0+cmVzZXRfZ3BpbyA9IGRldm1fZ3Bp b2RfZ2V0KGRldiwgInJlc2V0IiwgR1BJT0RfT1VUX0hJR0gpOwo+ICsJaWYgKElTX0VSUihjdHgt PnJlc2V0X2dwaW8pKSB7Cj4gKwkJZGV2X2VycihkZXYsICJjYW5ub3QgZ2V0IHJlc2V0LWdwaW86 ICVsZFxuIiwKPiArCQkJCVBUUl9FUlIoY3R4LT5yZXNldF9ncGlvKSk7Cj4gKwkJcmV0dXJuIFBU Ul9FUlIoY3R4LT5yZXNldF9ncGlvKTsKPiArCX0KPiArCj4gKwlkcm1fcGFuZWxfaW5pdCgmY3R4 LT5wYW5lbCk7Cj4gKwljdHgtPnBhbmVsLmRldiA9IGRldjsKPiArCWN0eC0+cGFuZWwuZnVuY3Mg PSAmczZlNjNqMHgwM19mdW5jczsKPiArCj4gKwljdHgtPmJsX2RldiA9IGJhY2tsaWdodF9kZXZp Y2VfcmVnaXN0ZXIoInM2ZTYzajB4MDMiLCBkZXYsIGN0eCwKPiArCQkJCQkJJnM2ZTYzajB4MDNf Ymxfb3BzLCBOVUxMKTsKPiArCWlmIChJU19FUlIoY3R4LT5ibF9kZXYpKSB7Cj4gKwkJZGV2X2Vy cihkZXYsICJmYWlsZWQgdG8gcmVnaXN0ZXIgYmFja2xpZ2h0IGRldmljZVxuIik7Cj4gKwkJcmV0 dXJuIFBUUl9FUlIoY3R4LT5ibF9kZXYpOwo+ICsJfQo+ICsKPiArCWN0eC0+YmxfZGV2LT5wcm9w cy5tYXhfYnJpZ2h0bmVzcyA9IE1BWF9CUklHSFRORVNTOwo+ICsJY3R4LT5ibF9kZXYtPnByb3Bz LmJyaWdodG5lc3MgPSBERUZBVUxUX0JSSUdIVE5FU1M7Cj4gKwljdHgtPmJsX2Rldi0+cHJvcHMu cG93ZXIgPSBGQl9CTEFOS19QT1dFUkRPV047Cj4gKwo+ICsKPiArCXJldCA9IGRybV9wYW5lbF9h ZGQoJmN0eC0+cGFuZWwpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJZ290byB1bnJlZ2lzdGVyX2Jh Y2tsaWdodDsKPiArCj4gKwlyZXQgPSBtaXBpX2RzaV9hdHRhY2goZHNpKTsKPiArCWlmIChyZXQg PCAwKQo+ICsJCWdvdG8gcmVtb3ZlX3BhbmVsOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gKwo+ICty ZW1vdmVfcGFuZWw6Cj4gKwlkcm1fcGFuZWxfcmVtb3ZlKCZjdHgtPnBhbmVsKTsKPiArCj4gK3Vu cmVnaXN0ZXJfYmFja2xpZ2h0Ogo+ICsJYmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKGN0eC0+ YmxfZGV2KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHM2ZTYz ajB4MDNfcmVtb3ZlKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKPiArewo+ICsJc3RydWN0 IHM2ZTYzajB4MDMgKmN0eCA9IG1pcGlfZHNpX2dldF9kcnZkYXRhKGRzaSk7Cj4gKwo+ICsJbWlw aV9kc2lfZGV0YWNoKGRzaSk7Cj4gKwlkcm1fcGFuZWxfcmVtb3ZlKCZjdHgtPnBhbmVsKTsKPiAr Cj4gKwliYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIoY3R4LT5ibF9kZXYpOwo+ICsKPiArCXJl dHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzNmU2 M2oweDAzX29mX21hdGNoW10gPSB7Cj4gKwl7IC5jb21wYXRpYmxlID0gInNhbXN1bmcsczZlNjNq MHgwMyIgfSwKPiArCXsgfQo+ICt9Owo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzNmU2M2ow eDAzX29mX21hdGNoKTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgbWlwaV9kc2lfZHJpdmVyIHM2ZTYz ajB4MDNfZHJpdmVyID0gewo+ICsJLnByb2JlID0gczZlNjNqMHgwM19wcm9iZSwKPiArCS5yZW1v dmUgPSBzNmU2M2oweDAzX3JlbW92ZSwKPiArCS5kcml2ZXIgPSB7Cj4gKwkJLm5hbWUgPSAicGFu ZWxfczZlNjNqMHgwMyIsCj4gKwkJLm9mX21hdGNoX3RhYmxlID0gczZlNjNqMHgwM19vZl9tYXRj aCwKPiArCX0sCj4gK307Cj4gK21vZHVsZV9taXBpX2RzaV9kcml2ZXIoczZlNjNqMHgwM19kcml2 ZXIpOwo+ICsKPiArTU9EVUxFX0FVVEhPUigiSW5raSBEYWUgPGlua2kuZGFlQHNhbXN1bmcuY29t PiIpOwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIk1JUEktRFNJIGJhc2VkIHM2ZThhYTAgQU1PTEVE IExDRCBQYW5lbCBEcml2ZXIiKTsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwo+IAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK