From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philippe CORNU Subject: [PATCH v3 3/3] drm/panel: Add support for otm8009a panel driver Date: Mon, 17 Jul 2017 15:19:53 +0200 Message-ID: <1500297593-30633-4-git-send-email-philippe.cornu@st.com> References: <1500297593-30633-1-git-send-email-philippe.cornu@st.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1500297593-30633-1-git-send-email-philippe.cornu@st.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Alexandre Torgue , Thierry Reding , David Airlie , Maxime Coquelin , Russell King , Mark Rutland , Rob Herring , Arnd Bergmann , Benjamin Gaignard , Yannick Fertre , Archit Taneja , Andrzej Hajda Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Philippe Cornu , Fabien Dessenne , dri-devel@lists.freedesktop.org, Mickael Reulier , Vincent Abriou , Gabriel Fernandez , Ludovic Barre List-Id: devicetree@vger.kernel.org VGhpcyBwYXRjaCBhZGRzIE9yaXNlIFRlY2ggb3RtODAwOWEgMy45NyIgNDgweDgwMCBURlQgTENE CnBhbmVsIGRyaXZlciAoTUlQSS1EU0kgdmlkZW8gbW9kZSkuIFRoZSBwYW5lbCBiYWNrbGlnaHQg aXMKbWFuYWdlZCB0aHJvdWdoIHRoZSBEU0kgbGluay4gVGhpcyBwYW5lbCBkcml2ZXIgaXMgdXNl ZCBpbgpzZXZlcmFsIFNUTTMyIGJvYXJkcy4KClNpZ25lZC1vZmYtYnk6IFBoaWxpcHBlIENPUk5V IDxwaGlsaXBwZS5jb3JudUBzdC5jb20+ClJldmlld2VkLWJ5OiBBbmRyemVqIEhhamRhIDxhLmhh amRhQHNhbXN1bmcuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnICAgICAg ICAgICAgICAgICAgICB8ICAgOSArCiBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLW9yaXNl dGVjaC1vdG04MDA5YS5jIHwgNDkxICsrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNo YW5nZWQsIDUwMSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA3NTUgZHJpdmVycy9ncHUv ZHJtL3BhbmVsL3BhbmVsLW9yaXNldGVjaC1vdG04MDA5YS5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3BhbmVsL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwpp bmRleCBkODRhMDMxLi5iN2ZmZmM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwv S2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwpAQCAtNjMsNiArNjMs MTUgQEAgY29uZmlnIERSTV9QQU5FTF9MR19MRzQ1NzMKIAkgIFNheSBZIGhlcmUgaWYgeW91IHdh bnQgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIExHNDU3MyBSR0IgcGFuZWwuCiAJICBUbyBjb21waWxl IHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLgogCitjb25maWcgRFJNX1BB TkVMX09SSVNFVEVDSF9PVE04MDA5QQorCXRyaXN0YXRlICJPcmlzZSBUZWNobm9sb2d5IG90bTgw MDlhIDQ4MHg4MDAgZHNpIDJkbCBwYW5lbCIKKwlkZXBlbmRzIG9uIE9GCisJZGVwZW5kcyBvbiBE Uk1fTUlQSV9EU0kKKwlkZXBlbmRzIG9uIEJBQ0tMSUdIVF9DTEFTU19ERVZJQ0UKKwloZWxwCisJ ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBPcmlzZSBUZWNo bm9sb2d5CisJICBvdG04MDA5YSA0ODB4ODAwIGRzaSAyZGwgcGFuZWwuCisKIGNvbmZpZyBEUk1f UEFORUxfUEFOQVNPTklDX1ZWWDEwRjAzNE4wMAogCXRyaXN0YXRlICJQYW5hc29uaWMgVlZYMTBG MDM0TjAwIDE5MjB4MTIwMCB2aWRlbyBtb2RlIHBhbmVsIgogCWRlcGVuZHMgb24gT0YKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9w YW5lbC9NYWtlZmlsZQppbmRleCA5ZjY2MTBkLi41MTk5NWI5IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2Vm aWxlCkBAIC0zLDYgKzMsNyBAQCBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NJTVBMRSkgKz0gcGFu ZWwtc2ltcGxlLm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfSU5OT0xVWF9QMDc5WkNBKSArPSBw YW5lbC1pbm5vbHV4LXAwNzl6Y2Eubwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9KRElfTFQwNzBN RTA1MDAwKSArPSBwYW5lbC1qZGktbHQwNzBtZTA1MDAwLm8KIG9iai0kKENPTkZJR19EUk1fUEFO RUxfTEdfTEc0NTczKSArPSBwYW5lbC1sZy1sZzQ1NzMubworb2JqLSQoQ09ORklHX0RSTV9QQU5F TF9PUklTRVRFQ0hfT1RNODAwOUEpICs9IHBhbmVsLW9yaXNldGVjaC1vdG04MDA5YS5vCiBvYmot JChDT05GSUdfRFJNX1BBTkVMX1BBTkFTT05JQ19WVlgxMEYwMzROMDApICs9IHBhbmVsLXBhbmFz b25pYy12dngxMGYwMzRuMDAubwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TQU1TVU5HX0xEOTA0 MCkgKz0gcGFuZWwtc2Ftc3VuZy1sZDkwNDAubwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TQU1T VU5HX1M2RTNIQTIpICs9IHBhbmVsLXNhbXN1bmctczZlM2hhMi5vCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtb3Jpc2V0ZWNoLW90bTgwMDlhLmMgYi9kcml2ZXJzL2dw dS9kcm0vcGFuZWwvcGFuZWwtb3Jpc2V0ZWNoLW90bTgwMDlhLmMKbmV3IGZpbGUgbW9kZSAxMDA3 NTUKaW5kZXggMDAwMDAwMC4uYzE4OWNkNgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9wYW5lbC9wYW5lbC1vcmlzZXRlY2gtb3RtODAwOWEuYwpAQCAtMCwwICsxLDQ5MSBAQAor LyoKKyAqIENvcHlyaWdodCAoQykgU1RNaWNyb2VsZWN0cm9uaWNzIFNBIDIwMTcKKyAqCisgKiBB dXRob3JzOiBQaGlsaXBwZSBDb3JudSA8cGhpbGlwcGUuY29ybnVAc3QuY29tPgorICogICAgICAg ICAgWWFubmljayBGZXJ0cmUgPHlhbm5pY2suZmVydHJlQHN0LmNvbT4KKyAqCisgKiBMaWNlbnNl IHRlcm1zOiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCksIHZlcnNpb24gMgorICov CisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX21pcGlfZHNpLmg+Cisj aW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2JhY2tsaWdodC5oPgor I2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KKyNpbmNsdWRlIDx2aWRlby9taXBpX2Rp c3BsYXkuaD4KKworI2RlZmluZSBEUlZfTkFNRSAib3Jpc2V0ZWNoX290bTgwMDlhIgorCisjZGVm aW5lIE9UTTgwMDlBX0JBQ0tMSUdIVF9ERUZBVUxUCTI0MAorI2RlZmluZSBPVE04MDA5QV9CQUNL TElHSFRfTUFYCQkyNTUKKworLyogTWFudWZhY3R1cmVyIENvbW1hbmQgU2V0ICovCisjZGVmaW5l IE1DU19BRFJTRlQJMHgwMDAwCS8qIEFkZHJlc3MgU2hpZnQgRnVuY3Rpb24gKi8KKyNkZWZpbmUg TUNTX1BBTlNFVAkweEIzQTYJLyogUGFuZWwgVHlwZSBTZXR0aW5nICovCisjZGVmaW5lIE1DU19T RF9DVFJMCTB4QzBBMgkvKiBTb3VyY2UgRHJpdmVyIFRpbWluZyBTZXR0aW5nICovCisjZGVmaW5l IE1DU19QX0RSVl9NCTB4QzBCNAkvKiBQYW5lbCBEcml2aW5nIE1vZGUgKi8KKyNkZWZpbmUgTUNT X09TQ19BREoJMHhDMTgxCS8qIE9zY2lsbGF0b3IgQWRqdXN0bWVudCBmb3IgSWRsZS9Ob3JtYWwg bW9kZSAqLworI2RlZmluZSBNQ1NfUkdCX1ZJRF9TRVQJMHhDMUExCS8qIFJHQiBWaWRlbyBNb2Rl IFNldHRpbmcgKi8KKyNkZWZpbmUgTUNTX1NEX1BDSF9DVFJMCTB4QzQ4MAkvKiBTb3VyY2UgRHJp dmVyIFByZWNoYXJnZSBDb250cm9sICovCisjZGVmaW5lIE1DU19OT19ET0MxCTB4QzQ4QQkvKiBD b21tYW5kIG5vdCBkb2N1bWVudGVkICovCisjZGVmaW5lIE1DU19QV1JfQ1RSTDEJMHhDNTgwCS8q IFBvd2VyIENvbnRyb2wgU2V0dGluZyAxICovCisjZGVmaW5lIE1DU19QV1JfQ1RSTDIJMHhDNTkw CS8qIFBvd2VyIENvbnRyb2wgU2V0dGluZyAyIGZvciBOb3JtYWwgTW9kZSAqLworI2RlZmluZSBN Q1NfUFdSX0NUUkw0CTB4QzVCMAkvKiBQb3dlciBDb250cm9sIFNldHRpbmcgNCBmb3IgREMgVm9s dGFnZSAqLworI2RlZmluZSBNQ1NfUEFOQ1RSTFNFVDEJMHhDQjgwCS8qIFBhbmVsIENvbnRyb2wg U2V0dGluZyAxICovCisjZGVmaW5lIE1DU19QQU5DVFJMU0VUMgkweENCOTAJLyogUGFuZWwgQ29u dHJvbCBTZXR0aW5nIDIgKi8KKyNkZWZpbmUgTUNTX1BBTkNUUkxTRVQzCTB4Q0JBMAkvKiBQYW5l bCBDb250cm9sIFNldHRpbmcgMyAqLworI2RlZmluZSBNQ1NfUEFOQ1RSTFNFVDQJMHhDQkIwCS8q IFBhbmVsIENvbnRyb2wgU2V0dGluZyA0ICovCisjZGVmaW5lIE1DU19QQU5DVFJMU0VUNQkweENC QzAJLyogUGFuZWwgQ29udHJvbCBTZXR0aW5nIDUgKi8KKyNkZWZpbmUgTUNTX1BBTkNUUkxTRVQ2 CTB4Q0JEMAkvKiBQYW5lbCBDb250cm9sIFNldHRpbmcgNiAqLworI2RlZmluZSBNQ1NfUEFOQ1RS TFNFVDcJMHhDQkUwCS8qIFBhbmVsIENvbnRyb2wgU2V0dGluZyA3ICovCisjZGVmaW5lIE1DU19Q QU5DVFJMU0VUOAkweENCRjAJLyogUGFuZWwgQ29udHJvbCBTZXR0aW5nIDggKi8KKyNkZWZpbmUg TUNTX1BBTlUyRDEJMHhDQzgwCS8qIFBhbmVsIFUyRCBTZXR0aW5nIDEgKi8KKyNkZWZpbmUgTUNT X1BBTlUyRDIJMHhDQzkwCS8qIFBhbmVsIFUyRCBTZXR0aW5nIDIgKi8KKyNkZWZpbmUgTUNTX1BB TlUyRDMJMHhDQ0EwCS8qIFBhbmVsIFUyRCBTZXR0aW5nIDMgKi8KKyNkZWZpbmUgTUNTX1BBTkQy VTEJMHhDQ0IwCS8qIFBhbmVsIEQyVSBTZXR0aW5nIDEgKi8KKyNkZWZpbmUgTUNTX1BBTkQyVTIJ MHhDQ0MwCS8qIFBhbmVsIEQyVSBTZXR0aW5nIDIgKi8KKyNkZWZpbmUgTUNTX1BBTkQyVTMJMHhD Q0QwCS8qIFBhbmVsIEQyVSBTZXR0aW5nIDMgKi8KKyNkZWZpbmUgTUNTX0dPQVZTVAkweENFODAJ LyogR09BIFZTVCBTZXR0aW5nICovCisjZGVmaW5lIE1DU19HT0FDTEtBMQkweENFQTAJLyogR09B IENMS0ExIFNldHRpbmcgKi8KKyNkZWZpbmUgTUNTX0dPQUNMS0EzCTB4Q0VCMAkvKiBHT0EgQ0xL QTMgU2V0dGluZyAqLworI2RlZmluZSBNQ1NfR09BRUNMSwkweENGQzAJLyogR09BIEVDTEsgU2V0 dGluZyAqLworI2RlZmluZSBNQ1NfTk9fRE9DMgkweENGRDAJLyogQ29tbWFuZCBub3QgZG9jdW1l bnRlZCAqLworI2RlZmluZSBNQ1NfR1ZERFNFVAkweEQ4MDAJLyogR1ZERC9OR1ZERCAqLworI2Rl ZmluZSBNQ1NfVkNPTURDCTB4RDkwMAkvKiBWQ09NIFZvbHRhZ2UgU2V0dGluZyAqLworI2RlZmlu ZSBNQ1NfR01DVDJfMlAJMHhFMTAwCS8qIEdhbW1hIENvcnJlY3Rpb24gMi4yKyBTZXR0aW5nICov CisjZGVmaW5lIE1DU19HTUNUMl8yTgkweEUyMDAJLyogR2FtbWEgQ29ycmVjdGlvbiAyLjItIFNl dHRpbmcgKi8KKyNkZWZpbmUgTUNTX05PX0RPQzMJMHhGNUI2CS8qIENvbW1hbmQgbm90IGRvY3Vt ZW50ZWQgKi8KKyNkZWZpbmUgTUNTX0NNRDJfRU5BMQkweEZGMDAJLyogRW5hYmxlIEFjY2VzcyBD b21tYW5kMiAiQ01EMiIgKi8KKyNkZWZpbmUgTUNTX0NNRDJfRU5BMgkweEZGODAJLyogRW5hYmxl IEFjY2VzcyBPcmlzZSBDb21tYW5kMiAqLworCitzdHJ1Y3Qgb3RtODAwOWEgeworCXN0cnVjdCBk ZXZpY2UgKmRldjsKKwlzdHJ1Y3QgZHJtX3BhbmVsIHBhbmVsOworCXN0cnVjdCBiYWNrbGlnaHRf ZGV2aWNlICpibF9kZXY7CisJc3RydWN0IGdwaW9fZGVzYyAqcmVzZXRfZ3BpbzsKKwlib29sIHBy ZXBhcmVkOworCWJvb2wgZW5hYmxlZDsKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSBkZWZhdWx0X21vZGUgPSB7CisJLmNsb2NrID0gMzI3MjksCisJLmhkaXNwbGF5 ID0gNDgwLAorCS5oc3luY19zdGFydCA9IDQ4MCArIDEyMCwKKwkuaHN5bmNfZW5kID0gNDgwICsg MTIwICsgNjMsCisJLmh0b3RhbCA9IDQ4MCArIDEyMCArIDYzICsgMTIwLAorCS52ZGlzcGxheSA9 IDgwMCwKKwkudnN5bmNfc3RhcnQgPSA4MDAgKyAxMiwKKwkudnN5bmNfZW5kID0gODAwICsgMTIg KyAxMiwKKwkudnRvdGFsID0gODAwICsgMTIgKyAxMiArIDEyLAorCS52cmVmcmVzaCA9IDUwLAor CS5mbGFncyA9IDAsCisJLndpZHRoX21tID0gNTIsCisJLmhlaWdodF9tbSA9IDg2LAorfTsKKwor c3RhdGljIGlubGluZSBzdHJ1Y3Qgb3RtODAwOWEgKnBhbmVsX3RvX290bTgwMDlhKHN0cnVjdCBk cm1fcGFuZWwgKnBhbmVsKQoreworCXJldHVybiBjb250YWluZXJfb2YocGFuZWwsIHN0cnVjdCBv dG04MDA5YSwgcGFuZWwpOworfQorCitzdGF0aWMgdm9pZCBvdG04MDA5YV9kY3Nfd3JpdGVfYnVm KHN0cnVjdCBvdG04MDA5YSAqY3R4LCBjb25zdCB2b2lkICpkYXRhLAorCQkJCSAgIHNpemVfdCBs ZW4pCit7CisJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gdG9fbWlwaV9kc2lfZGV2aWNl KGN0eC0+ZGV2KTsKKworCWlmIChtaXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVyKGRzaSwgZGF0YSwg bGVuKSA8IDApCisJCURSTV9XQVJOKCJtaXBpIGRzaSBkY3Mgd3JpdGUgYnVmZmVyIGZhaWxlZFxu Iik7Cit9CisKKyNkZWZpbmUgZGNzX3dyaXRlX3NlcShjdHgsIHNlcS4uLikJCQlcCisoewkJCQkJ CQlcCisJc3RhdGljIGNvbnN0IHU4IGRbXSA9IHsgc2VxIH07CQkJXAorCW90bTgwMDlhX2Rjc193 cml0ZV9idWYoY3R4LCBkLCBBUlJBWV9TSVpFKGQpKTsJXAorfSkKKworI2RlZmluZSBkY3Nfd3Jp dGVfY21kX2F0KGN0eCwgY21kLCBzZXEuLi4pCQlcCisoewkJCQkJCQlcCisJZGNzX3dyaXRlX3Nl cShjdHgsIE1DU19BRFJTRlQsIChjbWQpICYgMHhGRik7CVwKKwlkY3Nfd3JpdGVfc2VxKGN0eCwg KGNtZCkgPj4gOCwgc2VxKTsJCVwKK30pCisKK3N0YXRpYyBpbnQgb3RtODAwOWFfaW5pdF9zZXF1 ZW5jZShzdHJ1Y3Qgb3RtODAwOWEgKmN0eCkKK3sKKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpk c2kgPSB0b19taXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYpOworCWludCByZXQ7CisKKwkvKiBFbnRl ciBDTUQyICovCisJZGNzX3dyaXRlX2NtZF9hdChjdHgsIE1DU19DTUQyX0VOQTEsIDB4ODAsIDB4 MDksIDB4MDEpOworCisJLyogRW50ZXIgT3Jpc2UgQ29tbWFuZDIgKi8KKwlkY3Nfd3JpdGVfY21k X2F0KGN0eCwgTUNTX0NNRDJfRU5BMiwgMHg4MCwgMHgwOSk7CisKKwlkY3Nfd3JpdGVfY21kX2F0 KGN0eCwgTUNTX1NEX1BDSF9DVFJMLCAweDMwKTsKKwltZGVsYXkoMTApOworCisJZGNzX3dyaXRl X2NtZF9hdChjdHgsIE1DU19OT19ET0MxLCAweDQwKTsKKwltZGVsYXkoMTApOworCisJZGNzX3dy aXRlX2NtZF9hdChjdHgsIE1DU19QV1JfQ1RSTDQgKyAxLCAweEE5KTsKKwlkY3Nfd3JpdGVfY21k X2F0KGN0eCwgTUNTX1BXUl9DVFJMMiArIDEsIDB4MzQpOworCWRjc193cml0ZV9jbWRfYXQoY3R4 LCBNQ1NfUF9EUlZfTSwgMHg1MCk7CisJZGNzX3dyaXRlX2NtZF9hdChjdHgsIE1DU19WQ09NREMs IDB4NEUpOworCWRjc193cml0ZV9jbWRfYXQoY3R4LCBNQ1NfT1NDX0FESiwgMHg2Nik7IC8qIDY1 SHogKi8KKwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwgTUNTX1BXUl9DVFJMMiArIDIsIDB4MDEpOwor CWRjc193cml0ZV9jbWRfYXQoY3R4LCBNQ1NfUFdSX0NUUkwyICsgNSwgMHgzNCk7CisJZGNzX3dy aXRlX2NtZF9hdChjdHgsIE1DU19QV1JfQ1RSTDIgKyA0LCAweDMzKTsKKwlkY3Nfd3JpdGVfY21k X2F0KGN0eCwgTUNTX0dWRERTRVQsIDB4NzksIDB4NzkpOworCWRjc193cml0ZV9jbWRfYXQoY3R4 LCBNQ1NfU0RfQ1RSTCArIDEsIDB4MUIpOworCWRjc193cml0ZV9jbWRfYXQoY3R4LCBNQ1NfUFdS X0NUUkwxICsgMiwgMHg4Myk7CisJZGNzX3dyaXRlX2NtZF9hdChjdHgsIE1DU19TRF9QQ0hfQ1RS TCArIDEsIDB4ODMpOworCWRjc193cml0ZV9jbWRfYXQoY3R4LCBNQ1NfUkdCX1ZJRF9TRVQsIDB4 MEUpOworCWRjc193cml0ZV9jbWRfYXQoY3R4LCBNQ1NfUEFOU0VULCAweDAwLCAweDAxKTsKKwor CWRjc193cml0ZV9jbWRfYXQoY3R4LCBNQ1NfR09BVlNULCAweDg1LCAweDAxLCAweDAwLCAweDg0 LCAweDAxLCAweDAwKTsKKwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwgTUNTX0dPQUNMS0ExLCAweDE4 LCAweDA0LCAweDAzLCAweDM5LCAweDAwLCAweDAwLAorCQkJIDB4MDAsIDB4MTgsIDB4MDMsIDB4 MDMsIDB4M0EsIDB4MDAsIDB4MDAsIDB4MDApOworCWRjc193cml0ZV9jbWRfYXQoY3R4LCBNQ1Nf R09BQ0xLQTMsIDB4MTgsIDB4MDIsIDB4MDMsIDB4M0IsIDB4MDAsIDB4MDAsCisJCQkgMHgwMCwg MHgxOCwgMHgwMSwgMHgwMywgMHgzQywgMHgwMCwgMHgwMCwgMHgwMCk7CisJZGNzX3dyaXRlX2Nt ZF9hdChjdHgsIE1DU19HT0FFQ0xLLCAweDAxLCAweDAxLCAweDIwLCAweDIwLCAweDAwLCAweDAw LAorCQkJIDB4MDEsIDB4MDIsIDB4MDAsIDB4MDApOworCisJZGNzX3dyaXRlX2NtZF9hdChjdHgs IE1DU19OT19ET0MyLCAweDAwKTsKKworCWRjc193cml0ZV9jbWRfYXQoY3R4LCBNQ1NfUEFOQ1RS TFNFVDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApOworCWRjc193cml0ZV9jbWRfYXQo Y3R4LCBNQ1NfUEFOQ1RSTFNFVDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisJCQkg MCwgMCwgMCwgMCwgMCk7CisJZGNzX3dyaXRlX2NtZF9hdChjdHgsIE1DU19QQU5DVFJMU0VUMywg MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKwkJCSAwLCAwLCAwLCAwLCAwKTsKKwlkY3Nf d3JpdGVfY21kX2F0KGN0eCwgTUNTX1BBTkNUUkxTRVQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw LCAwLCAwKTsKKwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwgTUNTX1BBTkNUUkxTRVQ1LCAwLCA0LCA0 LCA0LCA0LCA0LCAwLCAwLCAwLCAwLAorCQkJIDAsIDAsIDAsIDAsIDApOworCWRjc193cml0ZV9j bWRfYXQoY3R4LCBNQ1NfUEFOQ1RSTFNFVDYsIDAsIDAsIDAsIDAsIDAsIDAsIDQsIDQsIDQsIDQs CisJCQkgNCwgMCwgMCwgMCwgMCk7CisJZGNzX3dyaXRlX2NtZF9hdChjdHgsIE1DU19QQU5DVFJM U0VUNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCk7CisJZGNzX3dyaXRlX2NtZF9hdChj dHgsIE1DU19QQU5DVFJMU0VUOCwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwKKwkJCSAw eEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGKTsKKworCWRjc193cml0ZV9jbWRfYXQoY3R4LCBN Q1NfUEFOVTJEMSwgMHgwMCwgMHgyNiwgMHgwOSwgMHgwQiwgMHgwMSwgMHgyNSwKKwkJCSAweDAw LCAweDAwLCAweDAwLCAweDAwKTsKKwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwgTUNTX1BBTlUyRDIs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgyNiwgMHgwQSwgMHgwQywgMHgwMik7CisJZGNzX3dyaXRlX2NtZF9h dChjdHgsIE1DU19QQU5VMkQzLCAweDI1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAor CQkJIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAp OworCWRjc193cml0ZV9jbWRfYXQoY3R4LCBNQ1NfUEFORDJVMSwgMHgwMCwgMHgyNSwgMHgwQywg MHgwQSwgMHgwMiwgMHgyNiwKKwkJCSAweDAwLCAweDAwLCAweDAwLCAweDAwKTsKKwlkY3Nfd3Jp dGVfY21kX2F0KGN0eCwgTUNTX1BBTkQyVTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsCisJCQkgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyNSwgMHgwQiwgMHgw OSwgMHgwMSk7CisJZGNzX3dyaXRlX2NtZF9hdChjdHgsIE1DU19QQU5EMlUzLCAweDI2LCAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDApOworCisJZGNzX3dyaXRlX2NtZF9hdChjdHgsIE1D U19QV1JfQ1RSTDEgKyAxLCAweDY2KTsKKworCWRjc193cml0ZV9jbWRfYXQoY3R4LCBNQ1NfTk9f RE9DMywgMHgwNik7CisKKwlkY3Nfd3JpdGVfY21kX2F0KGN0eCwgTUNTX0dNQ1QyXzJQLCAweDAw LCAweDA5LCAweDBGLCAweDBFLCAweDA3LCAweDEwLAorCQkJIDB4MEIsIDB4MEEsIDB4MDQsIDB4 MDcsIDB4MEIsIDB4MDgsIDB4MEYsIDB4MTAsIDB4MEEsCisJCQkgMHgwMSk7CisJZGNzX3dyaXRl X2NtZF9hdChjdHgsIE1DU19HTUNUMl8yTiwgMHgwMCwgMHgwOSwgMHgwRiwgMHgwRSwgMHgwNywg MHgxMCwKKwkJCSAweDBCLCAweDBBLCAweDA0LCAweDA3LCAweDBCLCAweDA4LCAweDBGLCAweDEw LCAweDBBLAorCQkJIDB4MDEpOworCisJLyogRXhpdCBDTUQyICovCisJZGNzX3dyaXRlX2NtZF9h dChjdHgsIE1DU19DTUQyX0VOQTEsIDB4RkYsIDB4RkYsIDB4RkYpOworCisJcmV0ID0gbWlwaV9k c2lfZGNzX25vcChkc2kpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBtaXBp X2RzaV9kY3NfZXhpdF9zbGVlcF9tb2RlKGRzaSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsK KworCS8qIFdhaXQgZm9yIHNsZWVwIG91dCBleGl0ICovCisJbWRlbGF5KDEyMCk7CisKKwkvKiBE ZWZhdWx0IHBvcnRyYWl0IDQ4MHg4MDAgcmdiMjQgKi8KKwlkY3Nfd3JpdGVfc2VxKGN0eCwgTUlQ SV9EQ1NfU0VUX0FERFJFU1NfTU9ERSwgMHgwMCk7CisKKwlyZXQgPSBtaXBpX2RzaV9kY3Nfc2V0 X2NvbHVtbl9hZGRyZXNzKGRzaSwgMCwKKwkJCQkJICAgICAgZGVmYXVsdF9tb2RlLmhkaXNwbGF5 IC0gMSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IG1pcGlfZHNpX2Rjc19z ZXRfcGFnZV9hZGRyZXNzKGRzaSwgMCwgZGVmYXVsdF9tb2RlLnZkaXNwbGF5IC0gMSk7CisJaWYg KHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIFNlZSBvdG04MDA5YSBkcml2ZXIgZG9jdW1lbnRh dGlvbiBmb3IgcGl4ZWwgZm9ybWF0IGRlc2NyaXB0aW9ucyAqLworCXJldCA9IG1pcGlfZHNpX2Rj c19zZXRfcGl4ZWxfZm9ybWF0KGRzaSwgTUlQSV9EQ1NfUElYRUxfRk1UXzI0QklUIHwKKwkJCQkJ ICAgIE1JUElfRENTX1BJWEVMX0ZNVF8yNEJJVCA8PCA0KTsKKwlpZiAocmV0KQorCQlyZXR1cm4g cmV0OworCisJLyogRGlzYWJsZSBDQUJDIGZlYXR1cmUgKi8KKwlkY3Nfd3JpdGVfc2VxKGN0eCwg TUlQSV9EQ1NfV1JJVEVfUE9XRVJfU0FWRSwgMHgwMCk7CisKKwlyZXQgPSBtaXBpX2RzaV9kY3Nf c2V0X2Rpc3BsYXlfb24oZHNpKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0g bWlwaV9kc2lfZGNzX25vcChkc2kpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwkvKiBT ZW5kIENvbW1hbmQgR1JBTSBtZW1vcnkgd3JpdGUgKG5vIHBhcmFtZXRlcnMpICovCisJZGNzX3dy aXRlX3NlcShjdHgsIE1JUElfRENTX1dSSVRFX01FTU9SWV9TVEFSVCk7CisKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIGludCBvdG04MDA5YV9kaXNhYmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVs KQoreworCXN0cnVjdCBvdG04MDA5YSAqY3R4ID0gcGFuZWxfdG9fb3RtODAwOWEocGFuZWwpOwor CXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSA9IHRvX21pcGlfZHNpX2RldmljZShjdHgtPmRl dik7CisJaW50IHJldDsKKworCWlmICghY3R4LT5lbmFibGVkKQorCQlyZXR1cm4gMDsgLyogVGhp cyBpcyBub3QgYW4gaXNzdWUgc28gd2UgcmV0dXJuIDAgaGVyZSAqLworCisJLyogUG93ZXIgb2Zm IHRoZSBiYWNrbGlnaHQuIE5vdGU6IGVuZC11c2VyIHN0aWxsIGNvbnRyb2xzIGJyaWdodG5lc3Mg Ki8KKwljdHgtPmJsX2Rldi0+cHJvcHMucG93ZXIgPSBGQl9CTEFOS19QT1dFUkRPV047CisJcmV0 ID0gYmFja2xpZ2h0X3VwZGF0ZV9zdGF0dXMoY3R4LT5ibF9kZXYpOworCWlmIChyZXQpCisJCXJl dHVybiByZXQ7CisKKwlyZXQgPSBtaXBpX2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb2ZmKGRzaSk7CisJ aWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IG1pcGlfZHNpX2Rjc19lbnRlcl9zbGVl cF9tb2RlKGRzaSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCW1zbGVlcCgxMjApOwor CisJY3R4LT5lbmFibGVkID0gZmFsc2U7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBv dG04MDA5YV91bnByZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3RydWN0IG90 bTgwMDlhICpjdHggPSBwYW5lbF90b19vdG04MDA5YShwYW5lbCk7CisKKwlpZiAoIWN0eC0+cHJl cGFyZWQpCisJCXJldHVybiAwOworCisJaWYgKGN0eC0+cmVzZXRfZ3BpbykgeworCQlncGlvZF9z ZXRfdmFsdWVfY2Fuc2xlZXAoY3R4LT5yZXNldF9ncGlvLCAxKTsKKwkJbXNsZWVwKDIwKTsKKwl9 CisKKwljdHgtPnByZXBhcmVkID0gZmFsc2U7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBvdG04MDA5YV9wcmVwYXJlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBv dG04MDA5YSAqY3R4ID0gcGFuZWxfdG9fb3RtODAwOWEocGFuZWwpOworCWludCByZXQ7CisKKwlp ZiAoY3R4LT5wcmVwYXJlZCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoY3R4LT5yZXNldF9ncGlvKSB7 CisJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChjdHgtPnJlc2V0X2dwaW8sIDApOworCQlncGlv ZF9zZXRfdmFsdWVfY2Fuc2xlZXAoY3R4LT5yZXNldF9ncGlvLCAxKTsKKwkJbXNsZWVwKDIwKTsK KwkJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGN0eC0+cmVzZXRfZ3BpbywgMCk7CisJCW1zbGVl cCgxMDApOworCX0KKworCXJldCA9IG90bTgwMDlhX2luaXRfc2VxdWVuY2UoY3R4KTsKKwlpZiAo cmV0KQorCQlyZXR1cm4gcmV0OworCisJY3R4LT5wcmVwYXJlZCA9IHRydWU7CisKKwkvKgorCSAq IFBvd2VyIG9uIHRoZSBiYWNrbGlnaHQuIE5vdGU6IGVuZC11c2VyIHN0aWxsIGNvbnRyb2xzIGJy aWdodG5lc3MKKwkgKiBOb3RlOiBjdHgtPnByZXBhcmVkIG11c3QgYmUgdHJ1ZSBiZWZvcmUgdXBk YXRpbmcgdGhlIGJhY2tsaWdodC4KKwkgKi8KKwljdHgtPmJsX2Rldi0+cHJvcHMucG93ZXIgPSBG Ql9CTEFOS19VTkJMQU5LOworCWJhY2tsaWdodF91cGRhdGVfc3RhdHVzKGN0eC0+YmxfZGV2KTsK KworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG90bTgwMDlhX2VuYWJsZShzdHJ1Y3QgZHJt X3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3Qgb3RtODAwOWEgKmN0eCA9IHBhbmVsX3RvX290bTgw MDlhKHBhbmVsKTsKKworCWN0eC0+ZW5hYmxlZCA9IHRydWU7CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGludCBvdG04MDA5YV9nZXRfbW9kZXMoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7 CisJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7CisKKwltb2RlID0gZHJtX21vZGVfZHVw bGljYXRlKHBhbmVsLT5kcm0sICZkZWZhdWx0X21vZGUpOworCWlmICghbW9kZSkgeworCQlEUk1f RVJST1IoImZhaWxlZCB0byBhZGQgbW9kZSAldXgldXhAJXVcbiIsCisJCQkgIGRlZmF1bHRfbW9k ZS5oZGlzcGxheSwgZGVmYXVsdF9tb2RlLnZkaXNwbGF5LAorCQkJICBkZWZhdWx0X21vZGUudnJl ZnJlc2gpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlkcm1fbW9kZV9zZXRfbmFtZShtb2Rl KTsKKworCW1vZGUtPnR5cGUgPSBEUk1fTU9ERV9UWVBFX0RSSVZFUiB8IERSTV9NT0RFX1RZUEVf UFJFRkVSUkVEOworCWRybV9tb2RlX3Byb2JlZF9hZGQocGFuZWwtPmNvbm5lY3RvciwgbW9kZSk7 CisKKwlwYW5lbC0+Y29ubmVjdG9yLT5kaXNwbGF5X2luZm8ud2lkdGhfbW0gPSBtb2RlLT53aWR0 aF9tbTsKKwlwYW5lbC0+Y29ubmVjdG9yLT5kaXNwbGF5X2luZm8uaGVpZ2h0X21tID0gbW9kZS0+ aGVpZ2h0X21tOworCisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3Bh bmVsX2Z1bmNzIG90bTgwMDlhX2RybV9mdW5jcyA9IHsKKwkuZGlzYWJsZSAgID0gb3RtODAwOWFf ZGlzYWJsZSwKKwkudW5wcmVwYXJlID0gb3RtODAwOWFfdW5wcmVwYXJlLAorCS5wcmVwYXJlICAg PSBvdG04MDA5YV9wcmVwYXJlLAorCS5lbmFibGUgICAgPSBvdG04MDA5YV9lbmFibGUsCisJLmdl dF9tb2RlcyA9IG90bTgwMDlhX2dldF9tb2RlcywKK307CisKKy8qCisgKiBEU0ktQkFTRUQgQkFD S0xJR0hUCisgKi8KKworc3RhdGljIGludCBvdG04MDA5YV9iYWNrbGlnaHRfdXBkYXRlX3N0YXR1 cyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmQpCit7CisJc3RydWN0IG90bTgwMDlhICpjdHgg PSBibF9nZXRfZGF0YShiZCk7CisJdTggZGF0YVsyXTsKKworCWlmICghY3R4LT5wcmVwYXJlZCkg eworCQlEUk1fREVCVUcoImxjZCBub3QgcmVhZHkgeWV0IGZvciBzZXR0aW5nIGl0cyBiYWNrbGln aHQhXG4iKTsKKwkJcmV0dXJuIC1FTlhJTzsKKwl9CisKKwlpZiAoYmQtPnByb3BzLnBvd2VyIDw9 IEZCX0JMQU5LX05PUk1BTCkgeworCQkvKiBQb3dlciBvbiB0aGUgYmFja2xpZ2h0IHdpdGggdGhl IHJlcXVlc3RlZCBicmlnaHRuZXNzCisJCSAqIE5vdGUgV2UgY2FuIG5vdCB1c2UgbWlwaV9kc2lf ZGNzX3NldF9kaXNwbGF5X2JyaWdodG5lc3MoKQorCQkgKiBhcyBvdG04MDA5YSBkcml2ZXIgc3Vw cG9ydCBvbmx5IDgtYml0IGJyaWdodG5lc3MgKDEgcGFyYW0pLgorCQkgKi8KKwkJZGF0YVswXSA9 IE1JUElfRENTX1NFVF9ESVNQTEFZX0JSSUdIVE5FU1M7CisJCWRhdGFbMV0gPSBiZC0+cHJvcHMu YnJpZ2h0bmVzczsKKwkJb3RtODAwOWFfZGNzX3dyaXRlX2J1ZihjdHgsIGRhdGEsIEFSUkFZX1NJ WkUoZGF0YSkpOworCisJCS8qIHNldCBCcmlnaHRuZXNzIENvbnRyb2wgJiBCYWNrbGlnaHQgb24g Ki8KKwkJZGF0YVsxXSA9IDB4MjQ7CisKKwl9IGVsc2UgeworCQkvKiBQb3dlciBvZmYgdGhlIGJh Y2tsaWdodDogc2V0IEJyaWdodG5lc3MgQ29udHJvbCAmIEJsIG9mZiAqLworCQlkYXRhWzFdID0g MDsKKwl9CisKKwkvKiBVcGRhdGUgQnJpZ2h0bmVzcyBDb250cm9sICYgQmFja2xpZ2h0ICovCisJ ZGF0YVswXSA9IE1JUElfRENTX1dSSVRFX0NPTlRST0xfRElTUExBWTsKKwlvdG04MDA5YV9kY3Nf d3JpdGVfYnVmKGN0eCwgZGF0YSwgQVJSQVlfU0laRShkYXRhKSk7CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBiYWNrbGlnaHRfb3BzIG90bTgwMDlhX2JhY2tsaWdodF9v cHMgPSB7CisJLnVwZGF0ZV9zdGF0dXMgPSBvdG04MDA5YV9iYWNrbGlnaHRfdXBkYXRlX3N0YXR1 cywKK307CisKK3N0YXRpYyBpbnQgb3RtODAwOWFfcHJvYmUoc3RydWN0IG1pcGlfZHNpX2Rldmlj ZSAqZHNpKQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZkc2ktPmRldjsKKwlzdHJ1Y3Qgb3Rt ODAwOWEgKmN0eDsKKwlpbnQgcmV0OworCisJY3R4ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9m KCpjdHgpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWN0eCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlj dHgtPnJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYsICJyZXNldCIsIEdQ SU9EX09VVF9MT1cpOworCWlmIChJU19FUlIoY3R4LT5yZXNldF9ncGlvKSkgeworCQlkZXZfZXJy KGRldiwgImNhbm5vdCBnZXQgcmVzZXQtZ3Bpb1xuIik7CisJCXJldHVybiBQVFJfRVJSKGN0eC0+ cmVzZXRfZ3Bpbyk7CisJfQorCisJbWlwaV9kc2lfc2V0X2RydmRhdGEoZHNpLCBjdHgpOworCisJ Y3R4LT5kZXYgPSBkZXY7CisKKwlkc2ktPmxhbmVzID0gMjsKKwlkc2ktPmZvcm1hdCA9IE1JUElf RFNJX0ZNVF9SR0I4ODg7CisJZHNpLT5tb2RlX2ZsYWdzID0gTUlQSV9EU0lfTU9ERV9WSURFTyB8 IE1JUElfRFNJX01PREVfVklERU9fQlVSU1QgfAorCQkJICBNSVBJX0RTSV9NT0RFX0xQTTsKKwor CWRybV9wYW5lbF9pbml0KCZjdHgtPnBhbmVsKTsKKwljdHgtPnBhbmVsLmRldiA9IGRldjsKKwlj dHgtPnBhbmVsLmZ1bmNzID0gJm90bTgwMDlhX2RybV9mdW5jczsKKworCWN0eC0+YmxfZGV2ID0g YmFja2xpZ2h0X2RldmljZV9yZWdpc3RlcihEUlZfTkFNRSAiX2JhY2tsaWdodCIsIGRldiwgY3R4 LAorCQkJCQkJJm90bTgwMDlhX2JhY2tsaWdodF9vcHMsIE5VTEwpOworCWlmIChJU19FUlIoY3R4 LT5ibF9kZXYpKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIHJlZ2lzdGVyIGJhY2tsaWdo dCBkZXZpY2VcbiIpOworCQlyZXR1cm4gUFRSX0VSUihjdHgtPmJsX2Rldik7CisJfQorCisJY3R4 LT5ibF9kZXYtPnByb3BzLm1heF9icmlnaHRuZXNzID0gT1RNODAwOUFfQkFDS0xJR0hUX01BWDsK KwljdHgtPmJsX2Rldi0+cHJvcHMuYnJpZ2h0bmVzcyA9IE9UTTgwMDlBX0JBQ0tMSUdIVF9ERUZB VUxUOworCWN0eC0+YmxfZGV2LT5wcm9wcy5wb3dlciA9IEZCX0JMQU5LX1BPV0VSRE9XTjsKKwlj dHgtPmJsX2Rldi0+cHJvcHMudHlwZSA9IEJBQ0tMSUdIVF9SQVc7CisKKwlkcm1fcGFuZWxfYWRk KCZjdHgtPnBhbmVsKTsKKworCXJldCA9IG1pcGlfZHNpX2F0dGFjaChkc2kpOworCWlmIChyZXQg PCAwKSB7CisJCWRldl9lcnIoZGV2LCAibWlwaV9kc2lfYXR0YWNoIGZhaWxlZC4gSXMgaG9zdCBy ZWFkeT9cbiIpOworCQlkcm1fcGFuZWxfcmVtb3ZlKCZjdHgtPnBhbmVsKTsKKwkJYmFja2xpZ2h0 X2RldmljZV91bnJlZ2lzdGVyKGN0eC0+YmxfZGV2KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlE Uk1fSU5GTyhEUlZfTkFNRSAiX3BhbmVsICV1eCV1QCV1ICV1YnBwIGRzaSAldWRsIC0gcmVhZHlc biIsCisJCSBkZWZhdWx0X21vZGUuaGRpc3BsYXksIGRlZmF1bHRfbW9kZS52ZGlzcGxheSwKKwkJ IGRlZmF1bHRfbW9kZS52cmVmcmVzaCwKKwkJIG1pcGlfZHNpX3BpeGVsX2Zvcm1hdF90b19icHAo ZHNpLT5mb3JtYXQpLCBkc2ktPmxhbmVzKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IG90bTgwMDlhX3JlbW92ZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCit7CisJc3RydWN0 IG90bTgwMDlhICpjdHggPSBtaXBpX2RzaV9nZXRfZHJ2ZGF0YShkc2kpOworCisJbWlwaV9kc2lf ZGV0YWNoKGRzaSk7CisJZHJtX3BhbmVsX3JlbW92ZSgmY3R4LT5wYW5lbCk7CisKKwliYWNrbGln aHRfZGV2aWNlX3VucmVnaXN0ZXIoY3R4LT5ibF9kZXYpOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9yaXNldGVjaF9vdG04MDA5YV9vZl9tYXRj aFtdID0geworCXsgLmNvbXBhdGlibGUgPSAib3Jpc2V0ZWNoLG90bTgwMDlhIiB9LAorCXsgfQor fTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9yaXNldGVjaF9vdG04MDA5YV9vZl9tYXRjaCk7 CisKK3N0YXRpYyBzdHJ1Y3QgbWlwaV9kc2lfZHJpdmVyIG9yaXNldGVjaF9vdG04MDA5YV9kcml2 ZXIgPSB7CisJLnByb2JlICA9IG90bTgwMDlhX3Byb2JlLAorCS5yZW1vdmUgPSBvdG04MDA5YV9y ZW1vdmUsCisJLmRyaXZlciA9IHsKKwkJLm5hbWUgPSBEUlZfTkFNRSAiX3BhbmVsIiwKKwkJLm9m X21hdGNoX3RhYmxlID0gb3Jpc2V0ZWNoX290bTgwMDlhX29mX21hdGNoLAorCX0sCit9OworbW9k dWxlX21pcGlfZHNpX2RyaXZlcihvcmlzZXRlY2hfb3RtODAwOWFfZHJpdmVyKTsKKworTU9EVUxF X0FVVEhPUigiUGhpbGlwcGUgQ29ybnUgPHBoaWxpcHBlLmNvcm51QHN0LmNvbT4iKTsKK01PRFVM RV9BVVRIT1IoIllhbm5pY2sgRmVydHJlIDx5YW5uaWNrLmZlcnRyZUBzdC5jb20+Iik7CitNT0RV TEVfREVTQ1JJUFRJT04oIkRSTSBkcml2ZXIgZm9yIE9yaXNlIFRlY2ggT1RNODAwOUEgTUlQSSBE U0kgcGFuZWwiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKLS0gCjEuOS4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK