From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jagan Teki Subject: [PATCH V7 2/2] drm/panel: Add Sitronix ST7701 panel driver Date: Fri, 11 Jan 2019 18:17:14 +0530 Message-ID: <20190111124714.19566-2-jagan@amarulasolutions.com> References: <20190111124714.19566-1-jagan@amarulasolutions.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg1-x541.google.com (mail-pg1-x541.google.com [IPv6:2607:f8b0:4864:20::541]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4DD2B6F67F for ; Fri, 11 Jan 2019 12:47:35 +0000 (UTC) Received: by mail-pg1-x541.google.com with SMTP id y4so6273970pgc.12 for ; Fri, 11 Jan 2019 04:47:35 -0800 (PST) In-Reply-To: <20190111124714.19566-1-jagan@amarulasolutions.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding , David Airlie , Sean Paul , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Michael Trimarchi , linux-amarula@amarulasolutions.com Cc: Jagan Teki List-Id: dri-devel@lists.freedesktop.org U1Q3NzAxIGRlc2lnbmVkIGZvciBzbWFsbCBhbmQgbWVkaXVtIHNpemVzIG9mIFRGVCBMQ0QgZGlz cGxheSwgaXMKY2FwYWJsZSBvZiBzdXBwb3J0aW5nIHVwIHRvIDQ4MFJHQlg4NjQgaW4gcmVzb2x1 dGlvbi4gSXQgcHJvdmlkZXMKc2V2ZXJhbCBzeXN0ZW0gaW50ZXJmYWNlcyBsaWtlIE1JUEkvUkdC L1NQSS4KCkN1cnJlbnRseSBhZGRlZCBzdXBwb3J0IGZvciBUZWNoc3RhciBUUzg1NTBCIHdoaWNo IGlzIFNUNzcwMSBiYXNlZAo0ODB4ODU0LCAyLWxhbmUgTUlQSSBEU0kgTENEIHBhbmVsLgoKRHJp dmVyIG5vdyByZWdpc3RlcmluZyBtaXBpX2RzaSBkZXZpY2UsIGJ1dCBpbmRlZWQgaXQgY2FuIGV4 dGVuZGFibGUKZm9yIFJHQiBpZiBhbnkgcmVxdWlyZW1lbnQgdHJpZ2dlciBpbiBmdXR1cmUuCgpT aWduZWQtb2ZmLWJ5OiBKYWdhbiBUZWtpIDxqYWdhbkBhbWFydWxhc29sdXRpb25zLmNvbT4KLS0t CkNoYW5nZXMgZm9yIHY3OgotIHJlYmFzZSBvbiBtYXN0ZXIKQ2hhbmdlcyBmb3IgdjY6Ci0gdXNl IHNsZWVwIGRlbGF5IHZhbHVlIGFzIHBlciBkYXRhc2hlZXQKLSBhZGQgcGFuZWxfc2xlZXBfZGVs YXkgdmFyaWFibGUgZm9yIHBhbmVsIHNwZWNpZmljIGRlbGF5Ci0gdXNlIGNvbW1hbmQgc2VxdW5j ZSBkaXNwbGF5IG9uIGFuZCBvZmYgaW5zdGVhZCBwYW5lbAogIGZ1bmN0aW9ucwotIGFkZCBwcm9w ZXIgY29tbWVudHMgb24gdGhlIGRlbGF5cwotIHJlbW92ZSBkZWxheXMgZnJvbSBjb21tYW5kIHN3 aXRjaAotIG1vdmUgbW9kZSB0eXBlIG9uIHN0cnVjdCBkaXNwbGF5IG1vZGUKLSBkcm9wIHJlZnJl c2ggcmF0ZSB2YWx1ZSwgbGV0IGRybSBjb21wdXRlICAKQ2hhbmdlcyBmb3IgdjU6Ci0gZm91bmQg dGhlIGNoaXAgZnJvbSB2ZW5kb3IsIHNvIGFkZGVkIG5ldyBwYW5lbCBkcml2ZXIKLSBoZXJlIGlz IHY0OiBodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3BhdGNoLzEwNjgwMzM1LwoKIE1BSU5U QUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArCiBkcml2ZXJz L2dwdS9kcm0vcGFuZWwvS2NvbmZpZyAgICAgICAgICAgICAgICAgfCAgMTAgKwogZHJpdmVycy9n cHUvZHJtL3BhbmVsL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1 L2RybS9wYW5lbC9wYW5lbC1zaXRyb25peC1zdDc3MDEuYyB8IDQyNyArKysrKysrKysrKysrKysr KysKIDQgZmlsZXMgY2hhbmdlZCwgNDQ0IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2l0cm9uaXgtc3Q3NzAxLmMKCmRpZmYgLS1n aXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IDNmNmRiODc2YmUxZi4uZDI5Mjhh NGQyODQ3IDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAtNDgz MSw2ICs0ODMxLDEyIEBAIFM6CU9ycGhhbiAvIE9ic29sZXRlCiBGOglkcml2ZXJzL2dwdS9kcm0v c2lzLwogRjoJaW5jbHVkZS91YXBpL2RybS9zaXNfZHJtLmgKIAorRFJNIERSSVZFUiBGT1IgU0lU Uk9OSVggU1Q3NzAxIFBBTkVMUworTToJSmFnYW4gVGVraSA8amFnYW5AYW1hcnVsYXNvbHV0aW9u cy5jb20+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2l0 cm9uaXgtc3Q3NzAxLmMKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNw bGF5L3BhbmVsL3NpdHJvbml4LHN0NzcwMS50eHQKKwogRFJNIERSSVZFUiBGT1IgU0lUUk9OSVgg U1Q3NTg2IFBBTkVMUwogTToJRGF2aWQgTGVjaG5lciA8ZGF2aWRAbGVjaG5vbG9neS5jb20+CiBT OglNYWludGFpbmVkCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyBi L2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCmluZGV4IDNmMzUzNzcxOWJlYi4uZDkzYjJi YTcwOWJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZworKysgYi9k cml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwpAQCAtMTk2LDYgKzE5NiwxNiBAQCBjb25maWcg RFJNX1BBTkVMX1NIQVJQX0xTMDQzVDFMRTAxCiAJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRv IGVuYWJsZSBzdXBwb3J0IGZvciBTaGFycCBMUzA0M1QxTEUwMSBxSEQKIAkgICg1NDB4OTYwKSBE U0kgcGFuZWwgYXMgZm91bmQgb24gdGhlIFF1YWxjb21tIEFQUTgwNzQgRHJhZ29uYm9hcmQKIAor Y29uZmlnIERSTV9QQU5FTF9TSVRST05JWF9TVDc3MDEKKwl0cmlzdGF0ZSAiU2l0cm9uaXggU1Q3 NzAxIHBhbmVsIGRyaXZlciIKKwlkZXBlbmRzIG9uIE9GCisJZGVwZW5kcyBvbiBEUk1fTUlQSV9E U0kKKwlkZXBlbmRzIG9uIEJBQ0tMSUdIVF9DTEFTU19ERVZJQ0UKKwloZWxwCisJICBTYXkgWSBo ZXJlIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgU2l0cm9uaXgKKwkgIFNU NzcwMSBjb250cm9sbGVyIGZvciA0ODBYODY0IExDRCBwYW5lbHMgd2l0aCBNSVBJL1JHQi9TUEkK KwkgIHN5c3RlbSBpbnRlcmZhY2VzLgorCiBjb25maWcgRFJNX1BBTkVMX1NJVFJPTklYX1NUNzc4 OVYKIAl0cmlzdGF0ZSAiU2l0cm9uaXggU1Q3Nzg5ViBwYW5lbCIKIAlkZXBlbmRzIG9uIE9GICYm IFNQSQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlIGIvZHJpdmVy cy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCmluZGV4IDQzOTY2NThhNzk5Ni4uNmE5YjRjZWMxODkx IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKKysrIGIvZHJpdmVy cy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCkBAIC0yMCw1ICsyMCw2IEBAIG9iai0kKENPTkZJR19E Uk1fUEFORUxfU0FNU1VOR19TNkU4QUEwKSArPSBwYW5lbC1zYW1zdW5nLXM2ZThhYTAubwogb2Jq LSQoQ09ORklHX0RSTV9QQU5FTF9TRUlLT180M1dWRjFHKSArPSBwYW5lbC1zZWlrby00M3d2ZjFn Lm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0hBUlBfTFExMDFSMVNYMDEpICs9IHBhbmVsLXNo YXJwLWxxMTAxcjFzeDAxLm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0hBUlBfTFMwNDNUMUxF MDEpICs9IHBhbmVsLXNoYXJwLWxzMDQzdDFsZTAxLm8KK29iai0kKENPTkZJR19EUk1fUEFORUxf U0lUUk9OSVhfU1Q3NzAxKSArPSBwYW5lbC1zaXRyb25peC1zdDc3MDEubwogb2JqLSQoQ09ORklH X0RSTV9QQU5FTF9TSVRST05JWF9TVDc3ODlWKSArPSBwYW5lbC1zaXRyb25peC1zdDc3ODl2Lm8K IG9iai0kKENPTkZJR19EUk1fUEFORUxfVFJVTFlfTlQzNTU5N19XUVhHQSkgKz0gcGFuZWwtdHJ1 bHktbnQzNTU5Ny5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2l0 cm9uaXgtc3Q3NzAxLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2l0cm9uaXgtc3Q3 NzAxLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NjM4YTU0NjNj YjYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2l0cm9u aXgtc3Q3NzAxLmMKQEAgLTAsMCArMSw0MjcgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wKworLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSwgQW1hcnVsYSBTb2x1dGlvbnMu CisgKiBBdXRob3I6IEphZ2FuIFRla2kgPGphZ2FuQGFtYXJ1bGFzb2x1dGlvbnMuY29tPgorICov CisKKyNpbmNsdWRlIDxsaW51eC9iYWNrbGlnaHQuaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5o PgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5o PgorCisjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L3Jl Z3VsYXRvci9jb25zdW1lci5oPgorCisjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2RzaS5oPgorI2lu Y2x1ZGUgPGRybS9kcm1fbW9kZXMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+CisKKyNp bmNsdWRlIDx2aWRlby9taXBpX2Rpc3BsYXkuaD4KKworLyogQ29tbWFuZDIgQkt4IHNlbGVjdGlv biBjb21tYW5kICovCisjZGVmaW5lIERTSV9DTUQyQktYX1NFTAkJCTB4RkYKKworLyogQ29tbWFu ZDIsIEJLMCBjb21tYW5kcyAqLworI2RlZmluZSBEU0lfQ01EMl9CSzBfUFZHQU1DVFJMCQkweEIw IC8qIFBvc2l0aXZlIFZvbHRhZ2UgR2FtbWEgQ29udHJvbCAqLworI2RlZmluZSBEU0lfQ01EMl9C SzBfTlZHQU1DVFJMCQkweEIxIC8qIE5lZ2F0aXZlIFZvbHRhZ2UgR2FtbWEgQ29udHJvbCAqLwor I2RlZmluZSBEU0lfQ01EMl9CSzBfTE5FU0VUCQkweEMwIC8qIERpc3BsYXkgTGluZSBzZXR0aW5n ICovCisjZGVmaW5lIERTSV9DTUQyX0JLMF9QT1JDVFJMCQkweEMxIC8qIFBvcmNoIGNvbnRyb2wg Ki8KKyNkZWZpbmUgRFNJX0NNRDJfQkswX0lOVlNFTAkJMHhDMiAvKiBJbnZlcnNpb24gc2VsZWN0 aW9uLCBGcmFtZSBSYXRlIENvbnRyb2wgKi8KKworLyogQ29tbWFuZDIsIEJLMSBjb21tYW5kcyAq LworI2RlZmluZSBEU0lfQ01EMl9CSzFfVlJIUwkJMHhCMCAvKiBWb3AgYW1wbGl0dWRlIHNldHRp bmcgKi8KKyNkZWZpbmUgRFNJX0NNRDJfQksxX1ZDT00JCTB4QjEgLyogVkNPTSBhbXBsaXR1ZGUg c2V0dGluZyAqLworI2RlZmluZSBEU0lfQ01EMl9CSzFfVkdIU1MJCTB4QjIgLyogVkdIIFZvbHRh Z2Ugc2V0dGluZyAqLworI2RlZmluZSBEU0lfQ01EMl9CSzFfVEVTVENNRAkJMHhCMyAvKiBURVNU IENvbW1hbmQgU2V0dGluZyAqLworI2RlZmluZSBEU0lfQ01EMl9CSzFfVkdMUwkJMHhCNSAvKiBW R0wgVm9sdGFnZSBzZXR0aW5nICovCisjZGVmaW5lIERTSV9DTUQyX0JLMV9QV0NUTFIxCQkweEI3 IC8qIFBvd2VyIENvbnRyb2wgMSAqLworI2RlZmluZSBEU0lfQ01EMl9CSzFfUFdDVExSMgkJMHhC OCAvKiBQb3dlciBDb250cm9sIDIgKi8KKyNkZWZpbmUgRFNJX0NNRDJfQksxX1NQRDEJCTB4QzEg LyogU291cmNlIHByZV9kcml2ZSB0aW1pbmcgc2V0MSAqLworI2RlZmluZSBEU0lfQ01EMl9CSzFf U1BEMgkJMHhDMiAvKiBTb3VyY2UgRVEyIFNldHRpbmcgKi8KKyNkZWZpbmUgRFNJX0NNRDJfQksx X01JUElTRVQxCQkweEQwIC8qIE1JUEkgU2V0dGluZyAxICovCisKKy8qKgorICogQ29tbWFuZDIg d2l0aCBCSyBmdW5jdGlvbiBzZWxlY3Rpb24uCisgKgorICogQklUWzQsIDBdOiBbQ04yLCBCS1hT RUxdCisgKiAxMCA9IENNRDJCSzAsIENvbW1hbmQyIEJLMAorICogMTEgPSBDTUQyQksxLCBDb21t YW5kMiBCSzEKKyAqIDAwID0gQ29tbWFuZDIgZGlzYWJsZQorICovCisjZGVmaW5lIERTSV9DTUQy QksxX1NFTAkJCTB4MTEKKyNkZWZpbmUgRFNJX0NNRDJCSzBfU0VMCQkJMHgxMAorI2RlZmluZSBE U0lfQ01EMkJLWF9TRUxfTk9ORQkJMHgwMAorCisvKiBDb21tYW5kMiwgQkswIGJ5dGVzICovCisj ZGVmaW5lIERTSV9MSU5FU0VUX0xJTkUJCTB4NjkKKyNkZWZpbmUgRFNJX0xJTkVTRVRfTERFX0VO CQlCSVQoNykKKyNkZWZpbmUgRFNJX0xJTkVTRVRfTElORURFTFRBCQlHRU5NQVNLKDEsIDApCisj ZGVmaW5lIERTSV9DTUQyX0JLMF9MTkVTRVRfQjEJCURTSV9MSU5FU0VUX0xJTkVERUxUQQorI2Rl ZmluZSBEU0lfQ01EMl9CSzBfTE5FU0VUX0IwCQkoRFNJX0xJTkVTRVRfTERFX0VOIHwgRFNJX0xJ TkVTRVRfTElORSkKKyNkZWZpbmUgRFNJX0lOVlNFTF9ERUZBVUxUCQlHRU5NQVNLKDUsIDQpCisj ZGVmaW5lIERTSV9JTlZTRUxfTkxJTlYJCUdFTk1BU0soMiwgMCkKKyNkZWZpbmUgRFNJX0lOVlNF TF9SVE5JCQkJR0VOTUFTSygyLCAxKQorI2RlZmluZSBEU0lfQ01EMl9CSzBfSU5WU0VMX0IxCQlE U0lfSU5WU0VMX1JUTkkKKyNkZWZpbmUgRFNJX0NNRDJfQkswX0lOVlNFTF9CMAkJKERTSV9JTlZT RUxfREVGQVVMVCB8IERTSV9JTlZTRUxfTkxJTlYpCisjZGVmaW5lIERTSV9DTUQyX0JLMF9QT1JD VFJMX0IwKG0pCSgobSktPnZ0b3RhbCAtIChtKS0+dnN5bmNfZW5kKQorI2RlZmluZSBEU0lfQ01E Ml9CSzBfUE9SQ1RSTF9CMShtKQkoKG0pLT52c3luY19zdGFydCAtIChtKS0+dmRpc3BsYXkpCisK Ky8qIENvbW1hbmQyLCBCSzEgYnl0ZXMgKi8KKyNkZWZpbmUgRFNJX0NNRDJfQksxX1ZSSEFfU0VU CQkweDQ1CisjZGVmaW5lIERTSV9DTUQyX0JLMV9WQ09NX1NFVAkJMHgxMworI2RlZmluZSBEU0lf Q01EMl9CSzFfVkdIU1NfU0VUCQlHRU5NQVNLKDIsIDApCisjZGVmaW5lIERTSV9DTUQyX0JLMV9U RVNUQ01EX1ZBTAlCSVQoNykKKyNkZWZpbmUgRFNJX1ZHTFNfREVGQVVMVAkJQklUKDYpCisjZGVm aW5lIERTSV9WR0xTX1NFTAkJCUdFTk1BU0soMiwgMCkKKyNkZWZpbmUgRFNJX0NNRDJfQksxX1ZH TFNfU0VUCQkoRFNJX1ZHTFNfREVGQVVMVCB8IERTSV9WR0xTX1NFTCkKKyNkZWZpbmUgRFNJX1BX Q1RMUjFfQVAJCQlCSVQoNykgLyogR2FtbWEgT1AgYmlhcywgbWF4ICovCisjZGVmaW5lIERTSV9Q V0NUTFIxX0FQSVMJCUJJVCgyKSAvKiBTb3VyY2UgT1AgaW5wdXQgYmlhcywgbWluICovCisjZGVm aW5lIERTSV9QV0NUTFIxX0FQT1MJCUJJVCgwKSAvKiBTb3VyY2UgT1Agb3V0cHV0IGJpYXMsIG1p biAqLworI2RlZmluZSBEU0lfQ01EMl9CSzFfUFdDVExSMV9TRVQJKERTSV9QV0NUTFIxX0FQIHwg RFNJX1BXQ1RMUjFfQVBJUyB8IFwKKwkJCQkJRFNJX1BXQ1RMUjFfQVBPUykKKyNkZWZpbmUgRFNJ X1BXQ1RMUjJfQVZERAkJQklUKDUpIC8qIEFWREQgNi42diAqLworI2RlZmluZSBEU0lfUFdDVExS Ml9BVkNMCQkweDAgICAgLyogQVZDTCAtNC40diAqLworI2RlZmluZSBEU0lfQ01EMl9CSzFfUFdD VExSMl9TRVQJKERTSV9QV0NUTFIyX0FWREQgfCBEU0lfUFdDVExSMl9BVkNMKQorI2RlZmluZSBE U0lfU1BEMV9UMkQJCQlCSVQoMykKKyNkZWZpbmUgRFNJX0NNRDJfQksxX1NQRDFfU0VUCQkoR0VO TUFTSyg2LCA0KSB8IERTSV9TUEQxX1QyRCkKKyNkZWZpbmUgRFNJX0NNRDJfQksxX1NQRDJfU0VU CQlEU0lfQ01EMl9CSzFfU1BEMV9TRVQKKyNkZWZpbmUgRFNJX01JUElTRVQxX0VPVF9FTgkJQklU KDMpCisjZGVmaW5lIERTSV9DTUQyX0JLMV9NSVBJU0VUMV9TRVQJKEJJVCg3KSB8IERTSV9NSVBJ U0VUMV9FT1RfRU4pCisKK3N0cnVjdCBzdDc3MDFfcGFuZWxfZGVzYyB7CisJY29uc3Qgc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7CisJdW5zaWduZWQgaW50IGxhbmVzOworCXVuc2lnbmVk IGxvbmcgZmxhZ3M7CisJZW51bSBtaXBpX2RzaV9waXhlbF9mb3JtYXQgZm9ybWF0OworCWNvbnN0 IGNoYXIgKmNvbnN0ICpzdXBwbHlfbmFtZXM7CisJdW5zaWduZWQgaW50IG51bV9zdXBwbGllczsK Kwl1bnNpZ25lZCBpbnQgcGFuZWxfc2xlZXBfZGVsYXk7Cit9OworCitzdHJ1Y3Qgc3Q3NzAxIHsK KwlzdHJ1Y3QgZHJtX3BhbmVsIHBhbmVsOworCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaTsK Kwljb25zdCBzdHJ1Y3Qgc3Q3NzAxX3BhbmVsX2Rlc2MgKmRlc2M7CisKKwlzdHJ1Y3QgYmFja2xp Z2h0X2RldmljZSAqYmFja2xpZ2h0OworCXN0cnVjdCByZWd1bGF0b3JfYnVsa19kYXRhICpzdXBw bGllczsKKwl1bnNpZ25lZCBpbnQgbnVtX3N1cHBsaWVzOworCXN0cnVjdCBncGlvX2Rlc2MgKnJl c2V0OworCXVuc2lnbmVkIGludCBzbGVlcF9kZWxheTsKK307CisKK3N0YXRpYyBpbmxpbmUgc3Ry dWN0IHN0NzcwMSAqcGFuZWxfdG9fc3Q3NzAxKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQorewor CXJldHVybiBjb250YWluZXJfb2YocGFuZWwsIHN0cnVjdCBzdDc3MDEsIHBhbmVsKTsKK30KKwor c3RhdGljIGlubGluZSBpbnQgc3Q3NzAxX2RzaV93cml0ZShzdHJ1Y3Qgc3Q3NzAxICpzdDc3MDEs IGNvbnN0IHZvaWQgKnNlcSwKKwkJCQkgICBzaXplX3QgbGVuKQoreworCXJldHVybiBtaXBpX2Rz aV9kY3Nfd3JpdGVfYnVmZmVyKHN0NzcwMS0+ZHNpLCBzZXEsIGxlbik7Cit9CisKKyNkZWZpbmUg U1Q3NzAxX0RTSShzdDc3MDEsIHNlcS4uLikJCQkJXAorCXsJCQkJCQkJXAorCQljb25zdCB1OCBk W10gPSB7IHNlcSB9OwkJCQlcCisJCXN0NzcwMV9kc2lfd3JpdGUoc3Q3NzAxLCBkLCBBUlJBWV9T SVpFKGQpKTsJXAorCX0KKworc3RhdGljIHZvaWQgc3Q3NzAxX2luaXRfc2VxdWVuY2Uoc3RydWN0 IHN0NzcwMSAqc3Q3NzAxKQoreworCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2Rl ID0gc3Q3NzAxLT5kZXNjLT5tb2RlOworCisJU1Q3NzAxX0RTSShzdDc3MDEsIE1JUElfRENTX1NP RlRfUkVTRVQsIDB4MDApOworCisJLyogV2UgbmVlZCB0byB3YWl0IDVtcyBiZWZvcmUgc2VuZGlu ZyBuZXcgY29tbWFuZHMgKi8KKwltc2xlZXAoNSk7CisKKwlTVDc3MDFfRFNJKHN0NzcwMSwgTUlQ SV9EQ1NfRVhJVF9TTEVFUF9NT0RFLCAweDAwKTsKKworCW1zbGVlcChzdDc3MDEtPnNsZWVwX2Rl bGF5KTsKKworCS8qIENvbW1hbmQyLCBCSzAgKi8KKwlTVDc3MDFfRFNJKHN0NzcwMSwgRFNJX0NN RDJCS1hfU0VMLAorCQkgICAweDc3LCAweDAxLCAweDAwLCAweDAwLCBEU0lfQ01EMkJLMF9TRUwp OworCVNUNzcwMV9EU0koc3Q3NzAxLCBEU0lfQ01EMl9CSzBfUFZHQU1DVFJMLCAweDAwLCAweDBF LCAweDE1LCAweDBGLAorCQkgICAweDExLCAweDA4LCAweDA4LCAweDA4LCAweDA4LCAweDIzLCAw eDA0LCAweDEzLCAweDEyLAorCQkgICAweDJCLCAweDM0LCAweDFGKTsKKwlTVDc3MDFfRFNJKHN0 NzcwMSwgRFNJX0NNRDJfQkswX05WR0FNQ1RSTCwgMHgwMCwgMHgwRSwgMHg5NSwgMHgwRiwKKwkJ ICAgMHgxMywgMHgwNywgMHgwOSwgMHgwOCwgMHgwOCwgMHgyMiwgMHgwNCwgMHgxMCwgMHgwRSwK KwkJICAgMHgyQywgMHgzNCwgMHgxRik7CisJU1Q3NzAxX0RTSShzdDc3MDEsIERTSV9DTUQyX0JL MF9MTkVTRVQsCisJCSAgIERTSV9DTUQyX0JLMF9MTkVTRVRfQjAsIERTSV9DTUQyX0JLMF9MTkVT RVRfQjEpOworCVNUNzcwMV9EU0koc3Q3NzAxLCBEU0lfQ01EMl9CSzBfUE9SQ1RSTCwKKwkJICAg RFNJX0NNRDJfQkswX1BPUkNUUkxfQjAobW9kZSksCisJCSAgIERTSV9DTUQyX0JLMF9QT1JDVFJM X0IxKG1vZGUpKTsKKwlTVDc3MDFfRFNJKHN0NzcwMSwgRFNJX0NNRDJfQkswX0lOVlNFTCwKKwkJ ICAgRFNJX0NNRDJfQkswX0lOVlNFTF9CMCwgRFNJX0NNRDJfQkswX0lOVlNFTF9CMSk7CisKKwkv KiBDb21tYW5kMiwgQksxICovCisJU1Q3NzAxX0RTSShzdDc3MDEsIERTSV9DTUQyQktYX1NFTCwK KwkJCTB4NzcsIDB4MDEsIDB4MDAsIDB4MDAsIERTSV9DTUQyQksxX1NFTCk7CisJU1Q3NzAxX0RT SShzdDc3MDEsIERTSV9DTUQyX0JLMV9WUkhTLCBEU0lfQ01EMl9CSzFfVlJIQV9TRVQpOworCVNU NzcwMV9EU0koc3Q3NzAxLCBEU0lfQ01EMl9CSzFfVkNPTSwgRFNJX0NNRDJfQksxX1ZDT01fU0VU KTsKKwlTVDc3MDFfRFNJKHN0NzcwMSwgRFNJX0NNRDJfQksxX1ZHSFNTLCBEU0lfQ01EMl9CSzFf VkdIU1NfU0VUKTsKKwlTVDc3MDFfRFNJKHN0NzcwMSwgRFNJX0NNRDJfQksxX1RFU1RDTUQsIERT SV9DTUQyX0JLMV9URVNUQ01EX1ZBTCk7CisJU1Q3NzAxX0RTSShzdDc3MDEsIERTSV9DTUQyX0JL MV9WR0xTLCBEU0lfQ01EMl9CSzFfVkdMU19TRVQpOworCVNUNzcwMV9EU0koc3Q3NzAxLCBEU0lf Q01EMl9CSzFfUFdDVExSMSwgRFNJX0NNRDJfQksxX1BXQ1RMUjFfU0VUKTsKKwlTVDc3MDFfRFNJ KHN0NzcwMSwgRFNJX0NNRDJfQksxX1BXQ1RMUjIsIERTSV9DTUQyX0JLMV9QV0NUTFIyX1NFVCk7 CisJU1Q3NzAxX0RTSShzdDc3MDEsIERTSV9DTUQyX0JLMV9TUEQxLCBEU0lfQ01EMl9CSzFfU1BE MV9TRVQpOworCVNUNzcwMV9EU0koc3Q3NzAxLCBEU0lfQ01EMl9CSzFfU1BEMiwgRFNJX0NNRDJf QksxX1NQRDJfU0VUKTsKKwlTVDc3MDFfRFNJKHN0NzcwMSwgRFNJX0NNRDJfQksxX01JUElTRVQx LCBEU0lfQ01EMl9CSzFfTUlQSVNFVDFfU0VUKTsKKworCS8qKgorCSAqIFNUNzcwMV9TUEVDX1Yx LjIgaXMgdW5hYmxlIHRvIHByb3ZpZGUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3ZlIHRoaXMKKwkg KiBzcGVjaWZpYyBjb21tYW5kIHNlcXVlbmNlLCBzbyBncmFiIHRoZSBzYW1lIGZyb20gdmVuZG9y IEJTUCBkcml2ZXIuCisJICovCisJU1Q3NzAxX0RTSShzdDc3MDEsIDB4RTAsIDB4MDAsIDB4MDAs IDB4MDIpOworCVNUNzcwMV9EU0koc3Q3NzAxLCAweEUxLCAweDBCLCAweDAwLCAweDBELCAweDAw LCAweDBDLCAweDAwLCAweDBFLAorCQkgICAweDAwLCAweDAwLCAweDQ0LCAweDQ0KTsKKwlTVDc3 MDFfRFNJKHN0NzcwMSwgMHhFMiwgMHgzMywgMHgzMywgMHg0NCwgMHg0NCwgMHg2NCwgMHgwMCwg MHg2NiwKKwkJICAgMHgwMCwgMHg2NSwgMHgwMCwgMHg2NywgMHgwMCwgMHgwMCk7CisJU1Q3NzAx X0RTSShzdDc3MDEsIDB4RTMsIDB4MDAsIDB4MDAsIDB4MzMsIDB4MzMpOworCVNUNzcwMV9EU0ko c3Q3NzAxLCAweEU0LCAweDQ0LCAweDQ0KTsKKwlTVDc3MDFfRFNJKHN0NzcwMSwgMHhFNSwgMHgw QywgMHg3OCwgMHgzQywgMHhBMCwgMHgwRSwgMHg3OCwgMHgzQywKKwkJICAgMHhBMCwgMHgxMCwg MHg3OCwgMHgzQywgMHhBMCwgMHgxMiwgMHg3OCwgMHgzQywgMHhBMCk7CisJU1Q3NzAxX0RTSShz dDc3MDEsIDB4RTYsIDB4MDAsIDB4MDAsIDB4MzMsIDB4MzMpOworCVNUNzcwMV9EU0koc3Q3NzAx LCAweEU3LCAweDQ0LCAweDQ0KTsKKwlTVDc3MDFfRFNJKHN0NzcwMSwgMHhFOCwgMHgwRCwgMHg3 OCwgMHgzQywgMHhBMCwgMHgwRiwgMHg3OCwgMHgzQywKKwkJICAgMHhBMCwgMHgxMSwgMHg3OCwg MHgzQywgMHhBMCwgMHgxMywgMHg3OCwgMHgzQywgMHhBMCk7CisJU1Q3NzAxX0RTSShzdDc3MDEs IDB4RUIsIDB4MDIsIDB4MDIsIDB4MzksIDB4MzksIDB4RUUsIDB4NDQsIDB4MDApOworCVNUNzcw MV9EU0koc3Q3NzAxLCAweEVDLCAweDAwLCAweDAwKTsKKwlTVDc3MDFfRFNJKHN0NzcwMSwgMHhF RCwgMHhGRiwgMHhGMSwgMHgwNCwgMHg1NiwgMHg3MiwgMHgzRiwgMHhGRiwKKwkJICAgMHhGRiwg MHhGRiwgMHhGRiwgMHhGMywgMHgyNywgMHg2NSwgMHg0MCwgMHgxRiwgMHhGRik7CisKKwkvKiBk aXNhYmxlIENvbW1hbmQyICovCisJU1Q3NzAxX0RTSShzdDc3MDEsIERTSV9DTUQyQktYX1NFTCwK KwkJICAgMHg3NywgMHgwMSwgMHgwMCwgMHgwMCwgRFNJX0NNRDJCS1hfU0VMX05PTkUpOworfQor CitzdGF0aWMgaW50IHN0NzcwMV9wcmVwYXJlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQorewor CXN0cnVjdCBzdDc3MDEgKnN0NzcwMSA9IHBhbmVsX3RvX3N0NzcwMShwYW5lbCk7CisJaW50IHJl dDsKKworCWdwaW9kX3NldF92YWx1ZShzdDc3MDEtPnJlc2V0LCAwKTsKKwltc2xlZXAoMjApOwor CisJcmV0ID0gcmVndWxhdG9yX2J1bGtfZW5hYmxlKHN0NzcwMS0+ZGVzYy0+bnVtX3N1cHBsaWVz LAorCQkJCSAgICBzdDc3MDEtPnN1cHBsaWVzKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJl dDsKKwltc2xlZXAoMjApOworCisJZ3Bpb2Rfc2V0X3ZhbHVlKHN0NzcwMS0+cmVzZXQsIDEpOwor CW1zbGVlcCgyMCk7CisKKwlncGlvZF9zZXRfdmFsdWUoc3Q3NzAxLT5yZXNldCwgMCk7CisJbXNs ZWVwKDMwKTsKKworCWdwaW9kX3NldF92YWx1ZShzdDc3MDEtPnJlc2V0LCAxKTsKKwltc2xlZXAo MTUwKTsKKworCXN0NzcwMV9pbml0X3NlcXVlbmNlKHN0NzcwMSk7CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBzdDc3MDFfZW5hYmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQorewor CXN0cnVjdCBzdDc3MDEgKnN0NzcwMSA9IHBhbmVsX3RvX3N0NzcwMShwYW5lbCk7CisKKwlTVDc3 MDFfRFNJKHN0NzcwMSwgTUlQSV9EQ1NfU0VUX0RJU1BMQVlfT04sIDB4MDApOworCWJhY2tsaWdo dF9lbmFibGUoc3Q3NzAxLT5iYWNrbGlnaHQpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bnQgc3Q3NzAxX2Rpc2FibGUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3RydWN0IHN0 NzcwMSAqc3Q3NzAxID0gcGFuZWxfdG9fc3Q3NzAxKHBhbmVsKTsKKworCWJhY2tsaWdodF9kaXNh YmxlKHN0NzcwMS0+YmFja2xpZ2h0KTsKKwlTVDc3MDFfRFNJKHN0NzcwMSwgTUlQSV9EQ1NfU0VU X0RJU1BMQVlfT0ZGLCAweDAwKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHN0Nzcw MV91bnByZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3RydWN0IHN0NzcwMSAq c3Q3NzAxID0gcGFuZWxfdG9fc3Q3NzAxKHBhbmVsKTsKKworCVNUNzcwMV9EU0koc3Q3NzAxLCBN SVBJX0RDU19FWElUX1NMRUVQX01PREUsIDB4MDApOworCisJbXNsZWVwKHN0NzcwMS0+c2xlZXBf ZGVsYXkpOworCisJZ3Bpb2Rfc2V0X3ZhbHVlKHN0NzcwMS0+cmVzZXQsIDApOworCisJZ3Bpb2Rf c2V0X3ZhbHVlKHN0NzcwMS0+cmVzZXQsIDEpOworCisJZ3Bpb2Rfc2V0X3ZhbHVlKHN0NzcwMS0+ cmVzZXQsIDApOworCisJcmVndWxhdG9yX2J1bGtfZGlzYWJsZShzdDc3MDEtPmRlc2MtPm51bV9z dXBwbGllcywgc3Q3NzAxLT5zdXBwbGllcyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBzdDc3MDFfZ2V0X21vZGVzKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBz dDc3MDEgKnN0NzcwMSA9IHBhbmVsX3RvX3N0NzcwMShwYW5lbCk7CisJY29uc3Qgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKmRlc2NfbW9kZSA9IHN0NzcwMS0+ZGVzYy0+bW9kZTsKKwlzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKKworCW1vZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUocGFu ZWwtPmRybSwgZGVzY19tb2RlKTsKKwlpZiAoIW1vZGUpIHsKKwkJZGV2X2Vycigmc3Q3NzAxLT5k c2ktPmRldiwgImZhaWxlZCB0byBhZGQgbW9kZSAldXgldXhAJXVcbiIsCisJCQlkZXNjX21vZGUt PmhkaXNwbGF5LCBkZXNjX21vZGUtPnZkaXNwbGF5LAorCQkJZGVzY19tb2RlLT52cmVmcmVzaCk7 CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCWRybV9tb2RlX3NldF9uYW1lKG1vZGUpOworCWRy bV9tb2RlX3Byb2JlZF9hZGQocGFuZWwtPmNvbm5lY3RvciwgbW9kZSk7CisKKwlwYW5lbC0+Y29u bmVjdG9yLT5kaXNwbGF5X2luZm8ud2lkdGhfbW0gPSBkZXNjX21vZGUtPndpZHRoX21tOworCXBh bmVsLT5jb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZWlnaHRfbW0gPSBkZXNjX21vZGUtPmhlaWdo dF9tbTsKKworCXJldHVybiAxOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wYW5lbF9m dW5jcyBzdDc3MDFfZnVuY3MgPSB7CisJLmRpc2FibGUJPSBzdDc3MDFfZGlzYWJsZSwKKwkudW5w cmVwYXJlCT0gc3Q3NzAxX3VucHJlcGFyZSwKKwkucHJlcGFyZQk9IHN0NzcwMV9wcmVwYXJlLAor CS5lbmFibGUJCT0gc3Q3NzAxX2VuYWJsZSwKKwkuZ2V0X21vZGVzCT0gc3Q3NzAxX2dldF9tb2Rl cywKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSB0czg1NTBiX21v ZGUgPSB7CisJLmNsb2NrCQk9IDI3NTAwLAorCisJLmhkaXNwbGF5CT0gNDgwLAorCS5oc3luY19z dGFydAk9IDQ4MCArIDM4LAorCS5oc3luY19lbmQJPSA0ODAgKyAzOCArIDEyLAorCS5odG90YWwJ CT0gNDgwICsgMzggKyAxMiArIDEyLAorCisJLnZkaXNwbGF5CT0gODU0LAorCS52c3luY19zdGFy dAk9IDg1NCArIDQsCisJLnZzeW5jX2VuZAk9IDg1NCArIDQgKyA4LAorCS52dG90YWwJCT0gODU0 ICsgNCArIDggKyAxOCwKKworCS53aWR0aF9tbQk9IDY5LAorCS5oZWlnaHRfbW0JPSAxMzksCisK KwkudHlwZSA9IERSTV9NT0RFX1RZUEVfRFJJVkVSIHwgRFJNX01PREVfVFlQRV9QUkVGRVJSRUQs Cit9OworCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHRzODU1MGJfc3VwcGx5X25hbWVzW10g PSB7CisJIlZDQyIsCisJIklPVkNDIiwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3Q3NzAx X3BhbmVsX2Rlc2MgdHM4NTUwYl9kZXNjID0geworCS5tb2RlID0gJnRzODU1MGJfbW9kZSwKKwku bGFuZXMgPSAyLAorCS5mbGFncyA9IE1JUElfRFNJX01PREVfVklERU8sCisJLmZvcm1hdCA9IE1J UElfRFNJX0ZNVF9SR0I4ODgsCisJLnN1cHBseV9uYW1lcyA9IHRzODU1MGJfc3VwcGx5X25hbWVz LAorCS5udW1fc3VwcGxpZXMgPSBBUlJBWV9TSVpFKHRzODU1MGJfc3VwcGx5X25hbWVzKSwKKwku cGFuZWxfc2xlZXBfZGVsYXkgPSA4MCwgLyogcGFuZWwgbmVlZCBleHRyYSA4MG1zIGZvciBzbGVl cCBvdXQgY21kICovCit9OworCitzdGF0aWMgaW50IHN0NzcwMV9kc2lfcHJvYmUoc3RydWN0IG1p cGlfZHNpX2RldmljZSAqZHNpKQoreworCWNvbnN0IHN0cnVjdCBzdDc3MDFfcGFuZWxfZGVzYyAq ZGVzYzsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wOworCXN0cnVjdCBzdDc3MDEgKnN0NzcwMTsK KwlpbnQgcmV0LCBpOworCisJc3Q3NzAxID0gZGV2bV9remFsbG9jKCZkc2ktPmRldiwgc2l6ZW9m KCpzdDc3MDEpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXN0NzcwMSkKKwkJcmV0dXJuIC1FTk9NRU07 CisKKwlkZXNjID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKCZkc2ktPmRldik7CisJZHNpLT5t b2RlX2ZsYWdzID0gZGVzYy0+ZmxhZ3M7CisJZHNpLT5mb3JtYXQgPSBkZXNjLT5mb3JtYXQ7CisJ ZHNpLT5sYW5lcyA9IGRlc2MtPmxhbmVzOworCisJc3Q3NzAxLT5zdXBwbGllcyA9IGRldm1fa2Nh bGxvYygmZHNpLT5kZXYsIGRlc2MtPm51bV9zdXBwbGllcywKKwkJCQkJc2l6ZW9mKCpzdDc3MDEt PnN1cHBsaWVzKSwKKwkJCQkJR0ZQX0tFUk5FTCk7CisJaWYgKCFzdDc3MDEtPnN1cHBsaWVzKQor CQlyZXR1cm4gLUVOT01FTTsKKworCWZvciAoaSA9IDA7IGkgPCBkZXNjLT5udW1fc3VwcGxpZXM7 IGkrKykKKwkJc3Q3NzAxLT5zdXBwbGllc1tpXS5zdXBwbHkgPSBkZXNjLT5zdXBwbHlfbmFtZXNb aV07CisKKwlyZXQgPSBkZXZtX3JlZ3VsYXRvcl9idWxrX2dldCgmZHNpLT5kZXYsIGRlc2MtPm51 bV9zdXBwbGllcywKKwkJCQkgICAgICBzdDc3MDEtPnN1cHBsaWVzKTsKKwlpZiAocmV0IDwgMCkK KwkJcmV0dXJuIHJldDsKKworCXN0NzcwMS0+cmVzZXQgPSBkZXZtX2dwaW9kX2dldCgmZHNpLT5k ZXYsICJyZXNldCIsIEdQSU9EX09VVF9MT1cpOworCWlmIChJU19FUlIoc3Q3NzAxLT5yZXNldCkp IHsKKwkJZGV2X2VycigmZHNpLT5kZXYsICJDb3VsZG4ndCBnZXQgb3VyIHJlc2V0IEdQSU9cbiIp OworCQlyZXR1cm4gUFRSX0VSUihzdDc3MDEtPnJlc2V0KTsKKwl9CisKKwlucCA9IG9mX3BhcnNl X3BoYW5kbGUoZHNpLT5kZXYub2Zfbm9kZSwgImJhY2tsaWdodCIsIDApOworCWlmIChucCkgewor CQlzdDc3MDEtPmJhY2tsaWdodCA9IG9mX2ZpbmRfYmFja2xpZ2h0X2J5X25vZGUobnApOworCQlv Zl9ub2RlX3B1dChucCk7CisKKwkJaWYgKCFzdDc3MDEtPmJhY2tsaWdodCkKKwkJCXJldHVybiAt RVBST0JFX0RFRkVSOworCX0KKworCWRybV9wYW5lbF9pbml0KCZzdDc3MDEtPnBhbmVsKTsKKwor CS8qIFdlIG5lZWQgdG8gd2FpdCAxMjBtcyBhZnRlciBhIHNsZWVwIG91dCBjb21tYW5kICovCisJ c3Q3NzAxLT5zbGVlcF9kZWxheSA9IDEyMCArIGRlc2MtPnBhbmVsX3NsZWVwX2RlbGF5OworCXN0 NzcwMS0+cGFuZWwuZnVuY3MgPSAmc3Q3NzAxX2Z1bmNzOworCXN0NzcwMS0+cGFuZWwuZGV2ID0g JmRzaS0+ZGV2OworCisJcmV0ID0gZHJtX3BhbmVsX2FkZCgmc3Q3NzAxLT5wYW5lbCk7CisJaWYg KHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwltaXBpX2RzaV9zZXRfZHJ2ZGF0YShkc2ksIHN0 NzcwMSk7CisJc3Q3NzAxLT5kc2kgPSBkc2k7CisJc3Q3NzAxLT5kZXNjID0gZGVzYzsKKworCXJl dHVybiBtaXBpX2RzaV9hdHRhY2goZHNpKTsKK30KKworc3RhdGljIGludCBzdDc3MDFfZHNpX3Jl bW92ZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCit7CisJc3RydWN0IHN0NzcwMSAqc3Q3 NzAxID0gbWlwaV9kc2lfZ2V0X2RydmRhdGEoZHNpKTsKKworCW1pcGlfZHNpX2RldGFjaChkc2kp OworCWRybV9wYW5lbF9yZW1vdmUoJnN0NzcwMS0+cGFuZWwpOworCisJaWYgKHN0NzcwMS0+YmFj a2xpZ2h0KQorCQlwdXRfZGV2aWNlKCZzdDc3MDEtPmJhY2tsaWdodC0+ZGV2KTsKKworCXJldHVy biAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdDc3MDFfb2ZfbWF0 Y2hbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gInRlY2hzdGFyLHRzODU1MGIiLCAuZGF0YSA9ICZ0 czg1NTBiX2Rlc2MgfSwKKwl7IH0KK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdDc3MDFf b2ZfbWF0Y2gpOworCitzdGF0aWMgc3RydWN0IG1pcGlfZHNpX2RyaXZlciBzdDc3MDFfZHNpX2Ry aXZlciA9IHsKKwkucHJvYmUJCT0gc3Q3NzAxX2RzaV9wcm9iZSwKKwkucmVtb3ZlCQk9IHN0Nzcw MV9kc2lfcmVtb3ZlLAorCS5kcml2ZXIgPSB7CisJCS5uYW1lCQk9ICJzdDc3MDEiLAorCQkub2Zf bWF0Y2hfdGFibGUJPSBzdDc3MDFfb2ZfbWF0Y2gsCisJfSwKK307Cittb2R1bGVfbWlwaV9kc2lf ZHJpdmVyKHN0NzcwMV9kc2lfZHJpdmVyKTsKKworTU9EVUxFX0FVVEhPUigiSmFnYW4gVGVraSA8 amFnYW5AYW1hcnVsYXNvbHV0aW9ucy5jb20+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIlNpdHJv bml4IFNUNzcwMSBMQ0QgUGFuZWwgRHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0t IAoyLjE4LjAuMzIxLmdmZmM2ZmEwZTMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=