From mboxrd@z Thu Jan 1 00:00:00 1970 From: Abhinav Kumar Subject: [PATCH v3 1/2] Add support for Truly NT35597 panel used in MSM reference platforms. Date: Wed, 23 May 2018 18:38:56 -0700 Message-ID: <1527125937-20946-1-git-send-email-abhinavk@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: thierry.reding@gmail.com, linux-arm-msm@vger.kernel.org, Abhinav Kumar , hoegsberg@google.com, chandanu@codeaurora.org List-Id: linux-arm-msm@vger.kernel.org VGhpcyBwYW5lbCBzdXBwb3J0cyBib3RoIHNpbmdsZSBEU0kgYW5kIGR1YWwgRFNJCm1vZGVzLgoK SG93ZXZlciwgdGhpcyBwYXRjaCBzZXJpZXMgYWRkcyBzdXBwb3J0IG9ubHkgZm9yCmR1YWwgRFNJ IG1vZGUuCgpDaGFuZ2VzIGluIHYzOgotIENoYW5nZXMgdG8gY29tbWl0IHRleHQKLSBTZXBhcmF0 ZWQgdGhlIGRvY3VtZW50YXRpb24gZnJvbSB0aGUgZHJpdmVyIGl0c2VsZgotIEltcHJvdmVkIHRo ZSBkb2N1bWVudGF0aW9uIHRvIGNvdmVyIHRoZSBwb3J0IGluZm9ybWF0aW9uCi0gRm9ybWF0dGlu ZyBmaXhlcyBhbmQgY2hhbmdlcyBpbiBkZWxheXMgaW4gcGFuZWwgc2VxdWVuY2VzCi0gQ2xlYW5l ZCB1cCBwcm9iZSBmdW5jdGlvbgoKU2lnbmVkLW9mZi1ieTogQXJjaGl0IFRhbmVqYSA8YXJjaGl0 dEBjb2RlYXVyb3JhLm9yZz4KU2lnbmVkLW9mZi1ieTogQWJoaW5hdiBLdW1hciA8YWJoaW5hdmtA Y29kZWF1cm9yYS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgICAgICAg ICAgICAgICB8ICAgOCArCiBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgICAgICAgICAg ICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC10cnVseS1udDM1NTk3LmMg fCA1ODggKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA1OTcg aW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9w YW5lbC10cnVseS1udDM1NTk3LmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwv S2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCmluZGV4IDI1NjgyZmYuLjJm Y2Q5YjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCkBAIC0xNzcsNCArMTc3LDEyIEBAIGNvbmZpZyBE Uk1fUEFORUxfU0lUUk9OSVhfU1Q3Nzg5VgogCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBl bmFibGUgc3VwcG9ydCBmb3IgdGhlIFNpdHJvbml4CiAJICBTVDc3ODlWIGNvbnRyb2xsZXIgZm9y IDI0MHgzMjAgTENEIHBhbmVscwogCitjb25maWcgRFJNX1BBTkVMX1RSVUxZX05UMzU1OTdfV1FY R0EKKwl0cmlzdGF0ZSAiVHJ1bHkgV1FYR0EiCisJZGVwZW5kcyBvbiBPRgorCWRlcGVuZHMgb24g RFJNX01JUElfRFNJCisJc2VsZWN0IFZJREVPTU9ERV9IRUxQRVJTCisJaGVscAorCSAgU2F5IFkg aGVyZSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgVHJ1bHkgTlQzNTU5NyBXUVhH QSBEdWFsIERTSQorCSAgVmlkZW8gTW9kZSBwYW5lbAogZW5kbWVudQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2Vm aWxlCmluZGV4IGYyNmVmYzEuLjA1NmVhOTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9w YW5lbC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKQEAgLTE4 LDMgKzE4LDQgQEAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TRUlLT180M1dWRjFHKSArPSBwYW5l bC1zZWlrby00M3d2ZjFnLm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0hBUlBfTFExMDFSMVNY MDEpICs9IHBhbmVsLXNoYXJwLWxxMTAxcjFzeDAxLm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxf U0hBUlBfTFMwNDNUMUxFMDEpICs9IHBhbmVsLXNoYXJwLWxzMDQzdDFsZTAxLm8KIG9iai0kKENP TkZJR19EUk1fUEFORUxfU0lUUk9OSVhfU1Q3Nzg5VikgKz0gcGFuZWwtc2l0cm9uaXgtc3Q3Nzg5 di5vCitvYmotJChDT05GSUdfRFJNX1BBTkVMX1RSVUxZX05UMzU1OTdfV1FYR0EpICs9IHBhbmVs LXRydWx5LW50MzU1OTcubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVs LXRydWx5LW50MzU1OTcuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC10cnVseS1udDM1 NTk3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI5MDg2YgotLS0gL2Rl di9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC10cnVseS1udDM1NTk3LmMK QEAgLTAsMCArMSw1ODggQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisv KiBDb3B5cmlnaHQgKGMpIDIwMTgsIFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhbmQKKyAqIG9ubHkgdmVyc2lv biAyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAq IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1 bWVyLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfZ3JhcGguaD4KKyNpbmNsdWRlIDxsaW51eC9yZWd1 bGF0b3IvY29uc3VtZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9waW5jdHJsL2NvbnN1bWVyLmg+CisK KyNpbmNsdWRlIDx2aWRlby9taXBpX2Rpc3BsYXkuaD4KKyNpbmNsdWRlIDx2aWRlby9vZl92aWRl b21vZGUuaD4KKyNpbmNsdWRlIDx2aWRlby92aWRlb21vZGUuaD4KKworI2luY2x1ZGUgPGRybS9k cm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgorI2luY2x1ZGUgPGRybS9kcm1fbWlw aV9kc2kuaD4KKworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCByZWd1bGF0b3JfbmFtZXNbXSA9 IHsKKwkidmRkYSIsCisJInZkaXNwcCIsCisJInZkaXNwbiIKK307CisKK3N0YXRpYyB1bnNpZ25l ZCBsb25nIHJlZ3VsYXRvcl9lbmFibGVfbG9hZHNbXSA9IHsKKwk2MjAwMCwKKwkxMDAwMDAsCisJ MTAwMDAwCit9OworCitzdGF0aWMgdW5zaWduZWQgbG9uZyByZWd1bGF0b3JfZGlzYWJsZV9sb2Fk c1tdID0geworCTgwLAorCTEwMCwKKwkxMDAKK307CisKK3N0cnVjdCB0cnVseV93cXhnYSB7CisJ c3RydWN0IGRldmljZSAqZGV2OworCXN0cnVjdCBkcm1fcGFuZWwgcGFuZWw7CisKKwlzdHJ1Y3Qg cmVndWxhdG9yX2J1bGtfZGF0YSBzdXBwbGllc1tBUlJBWV9TSVpFKHJlZ3VsYXRvcl9uYW1lcyld OworCisJc3RydWN0IGdwaW9fZGVzYyAqcmVzZXRfZ3BpbzsKKwlzdHJ1Y3QgZ3Bpb19kZXNjICpt b2RlX2dwaW87CisKKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmFja2xpZ2h0OworCXN0cnVj dCB2aWRlb21vZGUgdm07CisKKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2lbMl07CisKKwli b29sIHByZXBhcmVkOworCWJvb2wgZW5hYmxlZDsKK307CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0 IHRydWx5X3dxeGdhICpwYW5lbF90b190cnVseV93cXhnYShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5l bCkKK3sKKwlyZXR1cm4gY29udGFpbmVyX29mKHBhbmVsLCBzdHJ1Y3QgdHJ1bHlfd3F4Z2EsIHBh bmVsKTsKK30KKworc3RhdGljIGludCB0cnVseV93cXhnYV9wb3dlcl9vbihzdHJ1Y3QgdHJ1bHlf d3F4Z2EgKmN0eCkKK3sKKwlpbnQgcmV0LCBpOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJ WkUoY3R4LT5zdXBwbGllcyk7IGkrKykgeworCQlyZXQgPSByZWd1bGF0b3Jfc2V0X2xvYWQoY3R4 LT5zdXBwbGllc1tpXS5jb25zdW1lciwKKwkJCQkJcmVndWxhdG9yX2VuYWJsZV9sb2Fkc1tpXSk7 CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9IHJlZ3VsYXRvcl9idWxr X2VuYWJsZShBUlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMpLCBjdHgtPnN1cHBsaWVzKTsKKwlpZiAo cmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCW1zbGVlcCgyMCk7CisJZ3Bpb2Rfc2V0X3ZhbHVl KGN0eC0+cmVzZXRfZ3BpbywgMSk7CisJbXNsZWVwKDIwKTsKKwlncGlvZF9zZXRfdmFsdWUoY3R4 LT5yZXNldF9ncGlvLCAwKTsKKwltc2xlZXAoMjApOworCWdwaW9kX3NldF92YWx1ZShjdHgtPnJl c2V0X2dwaW8sIDEpOworCW1zbGVlcCg1MCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCB0cnVseV93cXhnYV9wb3dlcl9vZmYoc3RydWN0IHRydWx5X3dxeGdhICpjdHgpCit7CisJaW50 IHJldCwgaTsKKworCWdwaW9kX3NldF92YWx1ZShjdHgtPnJlc2V0X2dwaW8sIDApOworCisJZm9y IChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3R4LT5zdXBwbGllcyk7IGkrKykgeworCQlyZXQgPSBy ZWd1bGF0b3Jfc2V0X2xvYWQoY3R4LT5zdXBwbGllc1tpXS5jb25zdW1lciwKKwkJCQlyZWd1bGF0 b3JfZGlzYWJsZV9sb2Fkc1tpXSk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCX0KKwor CXJldHVybiByZWd1bGF0b3JfYnVsa19kaXNhYmxlKEFSUkFZX1NJWkUoY3R4LT5zdXBwbGllcyks IGN0eC0+c3VwcGxpZXMpOworfQorCitzdGF0aWMgaW50IHRydWx5X3dxeGdhX2Rpc2FibGUoc3Ry dWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3RydWN0IHRydWx5X3dxeGdhICpjdHggPSBwYW5l bF90b190cnVseV93cXhnYShwYW5lbCk7CisKKwlpZiAoIWN0eC0+ZW5hYmxlZCkKKwkJcmV0dXJu IDA7CisKKwlpZiAoY3R4LT5iYWNrbGlnaHQpIHsKKwkJY3R4LT5iYWNrbGlnaHQtPnByb3BzLnBv d2VyID0gRkJfQkxBTktfUE9XRVJET1dOOworCQliYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyhjdHgt PmJhY2tsaWdodCk7CisJfQorCisJY3R4LT5lbmFibGVkID0gZmFsc2U7CisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgdHJ1bHlfd3F4Z2FfdW5wcmVwYXJlKHN0cnVjdCBkcm1fcGFuZWwgKnBh bmVsKQoreworCXN0cnVjdCB0cnVseV93cXhnYSAqY3R4ID0gcGFuZWxfdG9fdHJ1bHlfd3F4Z2Eo cGFuZWwpOworCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKipkc2lzID0gY3R4LT5kc2k7CisJaW50 IHJldCA9IDAsIGk7CisKKwlpZiAoIWN0eC0+cHJlcGFyZWQpCisJCXJldHVybiAwOworCisJZHNp c1swXS0+bW9kZV9mbGFncyA9IDA7CisJZHNpc1sxXS0+bW9kZV9mbGFncyA9IDA7CisKKwlmb3Ig KGkgPSAwOyBpIDwgMjsgaSsrKQorCQlpZiAobWlwaV9kc2lfZGNzX3NldF9kaXNwbGF5X29mZihk c2lzW2ldKSA8IDApCisJCQlyZXQgPSAtRUNPTU07CisKKwltc2xlZXAoMTIwKTsKKworCWZvciAo aSA9IDA7IGkgPCAyOyBpKyspCisJCWlmIChtaXBpX2RzaV9kY3NfZW50ZXJfc2xlZXBfbW9kZShk c2lzW2ldKSA8IDApCisJCQlyZXQgPSAtRUNPTU07CisKKwl0cnVseV93cXhnYV9wb3dlcl9vZmYo Y3R4KTsKKworCWN0eC0+cHJlcGFyZWQgPSBmYWxzZTsKKwlyZXR1cm4gcmV0OworfQorCisjZGVm aW5lIE1BWF9MRU4JNQorc3RydWN0IHsKKwl1OCBjb21tYW5kc1tNQVhfTEVOXTsKKwlpbnQgc2l6 ZTsKK30gcGFuZWxfY21kc1tdID0geyAvKiBDTUQyX1AwICovCisJCSAgIHsgeyAweGZmLCAweDIw IH0sIDIgfSwKKwkJICAgeyB7IDB4ZmIsIDB4MDEgfSwgMiB9LAorCQkgICB7IHsgMHgwMCwgMHgw MSB9LCAyIH0sCisJCSAgIHsgeyAweDAxLCAweDU1IH0sIDIgfSwKKwkJICAgeyB7IDB4MDIsIDB4 NDUgfSwgMiB9LAorCQkgICB7IHsgMHgwNSwgMHg0MCB9LCAyIH0sCisJCSAgIHsgeyAweDA2LCAw eDE5IH0sIDIgfSwKKwkJICAgeyB7IDB4MDcsIDB4MWUgfSwgMiB9LAorCQkgICB7IHsgMHgwYiwg MHg3MyB9LCAyIH0sCisJCSAgIHsgeyAweDBjLCAweDczIH0sIDIgfSwKKwkJICAgeyB7IDB4MGUs IDB4YjAgfSwgMiB9LAorCQkgICB7IHsgMHgwZiwgMHhhZSB9LCAyIH0sCisJCSAgIHsgeyAweDEx LCAweGI4IH0sIDIgfSwKKwkJICAgeyB7IDB4MTMsIDB4MDAgfSwgMiB9LAorCQkgICB7IHsgMHg1 OCwgMHg4MCB9LCAyIH0sCisJCSAgIHsgeyAweDU5LCAweDAxIH0sIDIgfSwKKwkJICAgeyB7IDB4 NWEsIDB4MDAgfSwgMiB9LAorCQkgICB7IHsgMHg1YiwgMHgwMSB9LCAyIH0sCisJCSAgIHsgeyAw eDVjLCAweDgwIH0sIDIgfSwKKwkJICAgeyB7IDB4NWQsIDB4ODEgfSwgMiB9LAorCQkgICB7IHsg MHg1ZSwgMHgwMCB9LCAyIH0sCisJCSAgIHsgeyAweDVmLCAweDAxIH0sIDIgfSwKKwkJICAgeyB7 IDB4NzIsIDB4MTEgfSwgMiB9LAorCQkgICB7IHsgMHg2OCwgMHgwMyB9LCAyIH0sCisJCSAgIC8q IENNRDJfUDQgKi8KKwkJICAgeyB7IDB4RkYsIDB4MjQgfSwgMiB9LAorCQkgICB7IHsgMHhGQiwg MHgwMSB9LCAyIH0sCisJCSAgIHsgeyAweDAwLCAweDFDIH0sIDIgfSwKKwkJICAgeyB7IDB4MDEs IDB4MEIgfSwgMiB9LAorCQkgICB7IHsgMHgwMiwgMHgwQyB9LCAyIH0sCisJCSAgIHsgeyAweDAz LCAweDAxIH0sIDIgfSwKKwkJICAgeyB7IDB4MDQsIDB4MEYgfSwgMiB9LAorCQkgICB7IHsgMHgw NSwgMHgxMCB9LCAyIH0sCisJCSAgIHsgeyAweDA2LCAweDEwIH0sIDIgfSwKKwkJICAgeyB7IDB4 MDcsIDB4MTAgfSwgMiB9LAorCQkgICB7IHsgMHgwOCwgMHg4OSB9LCAyIH0sCisJCSAgIHsgeyAw eDA5LCAweDhBIH0sIDIgfSwKKwkJICAgeyB7IDB4MEEsIDB4MTMgfSwgMiB9LAorCQkgICB7IHsg MHgwQiwgMHgxMyB9LCAyIH0sCisJCSAgIHsgeyAweDBDLCAweDE1IH0sIDIgfSwKKwkJICAgeyB7 IDB4MEQsIDB4MTUgfSwgMiB9LAorCQkgICB7IHsgMHgwRSwgMHgxNyB9LCAyIH0sCisJCSAgIHsg eyAweDBGLCAweDE3IH0sIDIgfSwKKwkJICAgeyB7IDB4MTAsIDB4MUMgfSwgMiB9LAorCQkgICB7 IHsgMHgxMSwgMHgwQiB9LCAyIH0sCisJCSAgIHsgeyAweDEyLCAweDBDIH0sIDIgfSwKKwkJICAg eyB7IDB4MTMsIDB4MDEgfSwgMiB9LAorCQkgICB7IHsgMHgxNCwgMHgwRiB9LCAyIH0sCisJCSAg IHsgeyAweDE1LCAweDEwIH0sIDIgfSwKKwkJICAgeyB7IDB4MTYsIDB4MTAgfSwgMiB9LAorCQkg ICB7IHsgMHgxNywgMHgxMCB9LCAyIH0sCisJCSAgIHsgeyAweDE4LCAweDg5IH0sIDIgfSwKKwkJ ICAgeyB7IDB4MTksIDB4OEEgfSwgMiB9LAorCQkgICB7IHsgMHgxQSwgMHgxMyB9LCAyIH0sCisJ CSAgIHsgeyAweDFCLCAweDEzIH0sIDIgfSwKKwkJICAgeyB7IDB4MUMsIDB4MTUgfSwgMiB9LAor CQkgICB7IHsgMHgxRCwgMHgxNSB9LCAyIH0sCisJCSAgIHsgeyAweDFFLCAweDE3IH0sIDIgfSwK KwkJICAgeyB7IDB4MUYsIDB4MTcgfSwgMiB9LAorCQkgICAvKiBTVFYgKi8KKwkJICAgeyB7IDB4 MjAsIDB4NDAgfSwgMiB9LAorCQkgICB7IHsgMHgyMSwgMHgwMSB9LCAyIH0sCisJCSAgIHsgeyAw eDIyLCAweDAwIH0sIDIgfSwKKwkJICAgeyB7IDB4MjMsIDB4NDAgfSwgMiB9LAorCQkgICB7IHsg MHgyNCwgMHg0MCB9LCAyIH0sCisJCSAgIHsgeyAweDI1LCAweDZEIH0sIDIgfSwKKwkJICAgeyB7 IDB4MjYsIDB4NDAgfSwgMiB9LAorCQkgICB7IHsgMHgyNywgMHg0MCB9LCAyIH0sCisJCSAgIC8q IFZlbmQgKi8KKwkJICAgeyB7IDB4RTAsIDB4MDAgfSwgMiB9LAorCQkgICB7IHsgMHhEQywgMHgy MSB9LCAyIH0sCisJCSAgIHsgeyAweERELCAweDIyIH0sIDIgfSwKKwkJICAgeyB7IDB4REUsIDB4 MDcgfSwgMiB9LAorCQkgICB7IHsgMHhERiwgMHgwNyB9LCAyIH0sCisJCSAgIHsgeyAweEUzLCAw eDZEIH0sIDIgfSwKKwkJICAgeyB7IDB4RTEsIDB4MDcgfSwgMiB9LAorCQkgICB7IHsgMHhFMiwg MHgwNyB9LCAyIH0sCisJCSAgIC8qIFVEICovCisJCSAgIHsgeyAweDI5LCAweEQ4IH0sIDIgfSwK KwkJICAgeyB7IDB4MkEsIDB4MkEgfSwgMiB9LAorCQkgICAvKiBDTEsgKi8KKwkJICAgeyB7IDB4 NEIsIDB4MDMgfSwgMiB9LAorCQkgICB7IHsgMHg0QywgMHgxMSB9LCAyIH0sCisJCSAgIHsgeyAw eDRELCAweDEwIH0sIDIgfSwKKwkJICAgeyB7IDB4NEUsIDB4MDEgfSwgMiB9LAorCQkgICB7IHsg MHg0RiwgMHgwMSB9LCAyIH0sCisJCSAgIHsgeyAweDUwLCAweDEwIH0sIDIgfSwKKwkJICAgeyB7 IDB4NTEsIDB4MDAgfSwgMiB9LAorCQkgICB7IHsgMHg1MiwgMHg4MCB9LCAyIH0sCisJCSAgIHsg eyAweDUzLCAweDAwIH0sIDIgfSwKKwkJICAgeyB7IDB4NTYsIDB4MDAgfSwgMiB9LAorCQkgICB7 IHsgMHg1NCwgMHgwNyB9LCAyIH0sCisJCSAgIHsgeyAweDU4LCAweDA3IH0sIDIgfSwKKwkJICAg eyB7IDB4NTUsIDB4MjUgfSwgMiB9LAorCQkgICAvKiBSZXNldCBYRE9OQiAqLworCQkgICB7IHsg MHg1QiwgMHg0MyB9LCAyIH0sCisJCSAgIHsgeyAweDVDLCAweDAwIH0sIDIgfSwKKwkJICAgeyB7 IDB4NUYsIDB4NzMgfSwgMiB9LAorCQkgICB7IHsgMHg2MCwgMHg3MyB9LCAyIH0sCisJCSAgIHsg eyAweDYzLCAweDIyIH0sIDIgfSwKKwkJICAgeyB7IDB4NjQsIDB4MDAgfSwgMiB9LAorCQkgICB7 IHsgMHg2NywgMHgwOCB9LCAyIH0sCisJCSAgIHsgeyAweDY4LCAweDA0IH0sIDIgfSwKKwkJICAg LyogUmVzb2x1dGlvbjoxNDQweDI1NjAgKi8KKwkJICAgeyB7IDB4NzIsIDB4MDIgfSwgMiB9LAor CQkgICAvKiBtdXggKi8KKwkJICAgeyB7IDB4N0EsIDB4ODAgfSwgMiB9LAorCQkgICB7IHsgMHg3 QiwgMHg5MSB9LCAyIH0sCisJCSAgIHsgeyAweDdDLCAweEQ4IH0sIDIgfSwKKwkJICAgeyB7IDB4 N0QsIDB4NjAgfSwgMiB9LAorCQkgICB7IHsgMHg3RiwgMHgxNSB9LCAyIH0sCisJCSAgIHsgeyAw eDc1LCAweDE1IH0sIDIgfSwKKwkJICAgLyogQUJPRkYgKi8KKwkJICAgeyB7IDB4QjMsIDB4QzAg fSwgMiB9LAorCQkgICB7IHsgMHhCNCwgMHgwMCB9LCAyIH0sCisJCSAgIHsgeyAweEI1LCAweDAw IH0sIDIgfSwKKwkJICAgLyogU291cmNlIEVRICovCisJCSAgIHsgeyAweDc4LCAweDAwIH0sIDIg fSwKKwkJICAgeyB7IDB4NzksIDB4MDAgfSwgMiB9LAorCQkgICB7IHsgMHg4MCwgMHgwMCB9LCAy IH0sCisJCSAgIHsgeyAweDgzLCAweDAwIH0sIDIgfSwKKwkJICAgLyogRlAgQlAgKi8KKwkJICAg eyB7IDB4OTMsIDB4MEEgfSwgMiB9LAorCQkgICB7IHsgMHg5NCwgMHgwQSB9LCAyIH0sCisJCSAg IC8qIEludmVyc2lvbiBUeXBlICovCisJCSAgIHsgeyAweDhBLCAweDAwIH0sIDIgfSwKKwkJICAg eyB7IDB4OUIsIDB4RkYgfSwgMiB9LAorCQkgICAvKiBJTUdTV0FQID0xIEBQb3J0U3dhcD0xICov CisJCSAgIHsgeyAweDlELCAweEIwIH0sIDIgfSwKKwkJICAgeyB7IDB4OUYsIDB4NjMgfSwgMiB9 LAorCQkgICB7IHsgMHg5OCwgMHgxMCB9LCAyIH0sCisJCSAgIC8qIEZSTSAqLworCQkgICB7IHsg MHhFQywgMHgwMCB9LCAyIH0sCisJCSAgIC8qIENNRDEgKi8KKwkJICAgeyB7IDB4RkYsIDB4MTAg fSwgMiB9LAorCQkgICAgLyogVkJQK1ZTQT0sVkZQID0gMTBIICovCisJCSAgIHsgeyAweDNCLCAw eDAzLCAweDBBLCAweDBBLCB9LCA0IH0sCisJCSAgIC8qIEZURSBvbiAqLworCQkgICB7IHsgMHgz NSwgMHgwMCB9LCAyIH0sCisJCSAgIC8qIEVOX0JLID0xKGF1dG8gYmxhY2spICovCisJCSAgIHsg eyAweEU1LCAweDAxIH0sIDIgfSwKKwkJICAgLyogQ01EIG1vZGUoMTApIFZETyBtb2RlKDAzKSAq LworCQkgICB7IHsgMHhCQiwgMHgwMyB9LCAyIH0sCisJCSAgIC8qIE5vbiBSZWxvYWQgTVRQICov CisJCSAgIHsgeyAweEZCLCAweDAxIH0sIDIgfSwKK307CisKK3N0YXRpYyBpbnQgdHJ1bHlfd3F4 Z2FfcHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3QgdHJ1bHlfd3F4 Z2EgKmN0eCA9IHBhbmVsX3RvX3RydWx5X3dxeGdhKHBhbmVsKTsKKwlzdHJ1Y3QgbWlwaV9kc2lf ZGV2aWNlICoqZHNpcyA9IGN0eC0+ZHNpOworCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmQ7CisJ aW50IHJldCwgaSwgajsKKworCWlmIChjdHgtPnByZXBhcmVkKQorCQlyZXR1cm4gMDsKKworCXJl dCA9IHRydWx5X3dxeGdhX3Bvd2VyX29uKGN0eCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiBy ZXQ7CisKKwlkc2lzWzBdLT5tb2RlX2ZsYWdzIHw9IE1JUElfRFNJX01PREVfTFBNOworCWRzaXNb MV0tPm1vZGVfZmxhZ3MgfD0gTUlQSV9EU0lfTU9ERV9MUE07CisKKwlmb3IgKGogPSAwOyBqIDwg QVJSQVlfU0laRShwYW5lbF9jbWRzKTsgaisrKSB7CisJCWZvciAoaSA9IDA7IGkgPCAyOyBpKysp IHsKKwkJCWQgPSBkc2lzW2ldOworCQkJcmV0ID0gbWlwaV9kc2lfZGNzX3dyaXRlX2J1ZmZlcihk c2lzW2ldLAorCQkJCQlwYW5lbF9jbWRzW2pdLmNvbW1hbmRzLAorCQkJCQlwYW5lbF9jbWRzW2pd LnNpemUpOworCQkJaWYgKHJldCA8IDApIHsKKwkJCQlkZXZfZXJyKGN0eC0+ZGV2LCAiZmFpbGVk IHRvIGNtZCBubyAlZCwgZXJyOiAlZFxuIiwKKwkJCQkJCWosIHJldCk7CisJCQkJcmV0dXJuIHJl dDsKKwkJCX0KKwkJfQorCX0KKworCWZvciAoaSA9IDA7IGkgPCAyOyBpKyspCisJCWlmIChtaXBp X2RzaV9kY3NfZXhpdF9zbGVlcF9tb2RlKGRzaXNbaV0pIDwgMCkgeworCQkJZGV2X2VycihjdHgt PmRldiwgImZhaWxlZCB0byBleGl0IHNsZWVwIG1vZGVcbiIpOworCQkJcmV0dXJuIC1FQ09NTTsK KwkJfQorCW1zbGVlcCg3OCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKQorCQlpZiAobWlw aV9kc2lfZGNzX3NldF9kaXNwbGF5X29uKGRzaXNbaV0pIDwgMCkgeworCQkJZGV2X2VycihjdHgt PmRldiwgImZhaWxlZCB0byBzZW5kIGRpc3BsYXkgb25cbiIpOworCQkJcmV0dXJuIC1FQ09NTTsK KwkJfQorCW1zbGVlcCg3OCk7CisKKwljdHgtPnByZXBhcmVkID0gdHJ1ZTsKKworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IHRydWx5X3dxeGdhX2VuYWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpw YW5lbCkKK3sKKwlzdHJ1Y3QgdHJ1bHlfd3F4Z2EgKmN0eCA9IHBhbmVsX3RvX3RydWx5X3dxeGdh KHBhbmVsKTsKKworCWlmIChjdHgtPmVuYWJsZWQpCisJCXJldHVybiAwOworCisJaWYgKGN0eC0+ YmFja2xpZ2h0KSB7CisJCWN0eC0+YmFja2xpZ2h0LT5wcm9wcy5wb3dlciA9IEZCX0JMQU5LX1VO QkxBTks7CisJCWJhY2tsaWdodF91cGRhdGVfc3RhdHVzKGN0eC0+YmFja2xpZ2h0KTsKKwl9CisJ Y3R4LT5lbmFibGVkID0gdHJ1ZTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHRydWx5 X3dxeGdhX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yID0gcGFuZWwtPmNvbm5lY3RvcjsKKwlzdHJ1Y3QgdHJ1bHlf d3F4Z2EgKmN0eCA9IHBhbmVsX3RvX3RydWx5X3dxeGdhKHBhbmVsKTsKKwlzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqbW9kZTsKKworCW1vZGUgPSBkcm1fbW9kZV9jcmVhdGUoY29ubmVjdG9yLT5k ZXYpOworCWlmICghbW9kZSkgeworCQlkZXZfZXJyKGN0eC0+ZGV2LCAiZmFpbGVkIHRvIGNyZWF0 ZSBhIG5ldyBkaXNwbGF5IG1vZGVcbiIpOworCQlyZXR1cm4gMDsKKwl9CisKKwlkcm1fZGlzcGxh eV9tb2RlX2Zyb21fdmlkZW9tb2RlKCZjdHgtPnZtLCBtb2RlKTsKKwljb25uZWN0b3ItPmRpc3Bs YXlfaW5mby53aWR0aF9tbSA9IDc0OworCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhlaWdodF9t bSA9IDEzMTsKKwltb2RlLT50eXBlID0gRFJNX01PREVfVFlQRV9EUklWRVIgfCBEUk1fTU9ERV9U WVBFX1BSRUZFUlJFRDsKKwlkcm1fbW9kZV9wcm9iZWRfYWRkKGNvbm5lY3RvciwgbW9kZSk7CisK KwlyZXR1cm4gMTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGFuZWxfZnVuY3MgdHJ1 bHlfd3F4Z2FfZHJtX2Z1bmNzID0geworCS5kaXNhYmxlID0gdHJ1bHlfd3F4Z2FfZGlzYWJsZSwK KwkudW5wcmVwYXJlID0gdHJ1bHlfd3F4Z2FfdW5wcmVwYXJlLAorCS5wcmVwYXJlID0gdHJ1bHlf d3F4Z2FfcHJlcGFyZSwKKwkuZW5hYmxlID0gdHJ1bHlfd3F4Z2FfZW5hYmxlLAorCS5nZXRfbW9k ZXMgPSB0cnVseV93cXhnYV9nZXRfbW9kZXMsCit9OworCitzdGF0aWMgaW50IHRydWx5X3dxeGdh X3BhbmVsX2FkZChzdHJ1Y3QgdHJ1bHlfd3F4Z2EgKmN0eCkKK3sKKwlzdHJ1Y3QgZGV2aWNlICpk ZXYgPSBjdHgtPmRldjsKKwlpbnQgcmV0LCBpOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJ WkUoY3R4LT5zdXBwbGllcyk7IGkrKykKKwkJY3R4LT5zdXBwbGllc1tpXS5zdXBwbHkgPSByZWd1 bGF0b3JfbmFtZXNbaV07CisKKwlyZXQgPSBkZXZtX3JlZ3VsYXRvcl9idWxrX2dldChkZXYsIEFS UkFZX1NJWkUoY3R4LT5zdXBwbGllcyksCisJCQkJICAgICAgY3R4LT5zdXBwbGllcyk7CisJaWYg KHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwljdHgtPnJlc2V0X2dwaW8gPSBkZXZtX2dwaW9k X2dldChkZXYsICJyZXNldCIsIEdQSU9EX09VVF9ISUdIKTsKKwlpZiAoSVNfRVJSKGN0eC0+cmVz ZXRfZ3BpbykpIHsKKwkJZGV2X2VycihkZXYsICJjYW5ub3QgZ2V0IHJlc2V0LWdwaW9zICVsZFxu IiwKKwkJCVBUUl9FUlIoY3R4LT5yZXNldF9ncGlvKSk7CisJCXJldHVybiBQVFJfRVJSKGN0eC0+ cmVzZXRfZ3Bpbyk7CisJfQorCisJY3R4LT5tb2RlX2dwaW8gPSBkZXZtX2dwaW9kX2dldChkZXYs ICJtb2RlIiwgR1BJT0RfT1VUX0xPVyk7CisJaWYgKElTX0VSUihjdHgtPm1vZGVfZ3BpbykpIHsK KwkJZGV2X2VycihkZXYsICJjYW5ub3QgZ2V0IG1vZGUgZ3BpbyAlbGRcbiIsCisJCQlQVFJfRVJS KGN0eC0+bW9kZV9ncGlvKSk7CisJCWN0eC0+bW9kZV9ncGlvID0gTlVMTDsKKwkJcmV0dXJuIFBU Ul9FUlIoY3R4LT5tb2RlX2dwaW8pOworCX0KKworCS8qIGR1YWwgcG9ydCAqLworCWdwaW9kX3Nl dF92YWx1ZShjdHgtPm1vZGVfZ3BpbywgMCk7CisKKwlyZXQgPSBvZl9nZXRfdmlkZW9tb2RlKGRl di0+b2Zfbm9kZSwgJmN0eC0+dm0sIDApOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0Owor CisJZHJtX3BhbmVsX2luaXQoJmN0eC0+cGFuZWwpOworCWN0eC0+cGFuZWwuZGV2ID0gZGV2Owor CWN0eC0+cGFuZWwuZnVuY3MgPSAmdHJ1bHlfd3F4Z2FfZHJtX2Z1bmNzOworCWRybV9wYW5lbF9h ZGQoJmN0eC0+cGFuZWwpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHRydWx5X3dx eGdhX3BhbmVsX2RlbChzdHJ1Y3QgdHJ1bHlfd3F4Z2EgKmN0eCkKK3sKKwlpZiAoY3R4LT5wYW5l bC5kZXYpCisJCWRybV9wYW5lbF9yZW1vdmUoJmN0eC0+cGFuZWwpOworfQorCitzdGF0aWMgaW50 IHRydWx5X3dxeGdhX3Byb2JlKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKK3sKKwlzdHJ1 Y3QgZGV2aWNlICpkZXYgPSAmZHNpLT5kZXY7CisJc3RydWN0IHRydWx5X3dxeGdhICpjdHg7CisJ c3RydWN0IG1pcGlfZHNpX2RldmljZSAqc2Vjb25kYXJ5OworCXN0cnVjdCBkZXZpY2Vfbm9kZSAq ZHNpMTsKKwlzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqZHNpMV9ob3N0OworCWludCByZXQgPSAwOwor CWNvbnN0IHN0cnVjdCBtaXBpX2RzaV9kZXZpY2VfaW5mbyBpbmZvID0gey50eXBlID0gInRydWx5 bnQzNTU5NyIsCisJCS5jaGFubmVsID0gMCwKKwkJLm5vZGUgPSBOVUxMLAorCX07CisKKwljdHgg PSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmN0eCksIEdGUF9LRVJORUwpOworCisJaWYgKCFj dHgpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBlcnJfZHNpX2N0eDsKKwl9CisKKwkvKiBU aGlzIGRldmljZSByZXByZXNlbnRzIGl0c2VsZiBhcyBvbmUgd2l0aAorCSAqIHR3byBpbnB1dCBw b3J0cyB3aGljaCBhcmUgZmVkIGJ5IHRoZSBvdXRwdXQKKwkgKiBwb3J0cyBvZiB0aGUgdHdvIERT SSBjb250cm9sbGVycyAuIFRoZSBEU0kwCisJICogaXMgdGhlIG1hc3RlciBjb250cm9sbGVyIGFu ZCBoYXMgbW9zdCBvZiB0aGUKKwkgKiBwYW5lbCByZWxhdGVkIGluZm8gaW4gaXRzIGNoaWxkIG5v ZGUuCisJICovCisKKwlkc2kxID0gb2ZfZ3JhcGhfZ2V0X3JlbW90ZV9ub2RlKGRzaS0+ZGV2Lm9m X25vZGUsIDEsIC0xKTsKKwlpZiAoIWRzaTEpIHsKKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8g Z2V0IHJlbW90ZSBub2RlIGZvciBzZWNvbmRhcnkgRFNJXG4iKTsKKwkJcmV0ID0gLUVOT0RFVjsK KwkJZ290byBlcnJfZ2V0X3JlbW90ZTsKKwl9CisKKwlkc2kxX2hvc3QgPSBvZl9maW5kX21pcGlf ZHNpX2hvc3RfYnlfbm9kZShkc2kxKTsKKwlpZiAoIWRzaTFfaG9zdCkgeworCQlkZXZfZXJyKGRl diwgImZhaWxlZCB0byBmaW5kIGRzaSBob3N0XG4iKTsKKwkJcmV0ID0gLUVQUk9CRV9ERUZFUjsK KwkJZ290byBlcnJfaG9zdDsKKwl9CisKKwlvZl9ub2RlX3B1dChkc2kxKTsKKworCS8qIHJlZ2lz dGVyIHRoZSBzZWNvbmQgRFNJIGRldmljZSAqLworCXNlY29uZGFyeSA9IG1pcGlfZHNpX2Rldmlj ZV9yZWdpc3Rlcl9mdWxsKGRzaTFfaG9zdCwgJmluZm8pOworCisJaWYgKElTX0VSUihzZWNvbmRh cnkpKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBkc2kgZGV2aWNlXG4iKTsK KwkJcmV0ID0gUFRSX0VSUihkc2kpOworCQlnb3RvIGVycl9kc2lfZGV2aWNlOworCX0KKworCW1p cGlfZHNpX3NldF9kcnZkYXRhKGRzaSwgY3R4KTsKKworCWN0eC0+ZGV2ID0gZGV2OworCWN0eC0+ ZHNpWzBdID0gZHNpOworCWN0eC0+ZHNpWzFdID0gc2Vjb25kYXJ5OworCisJcmV0ID0gdHJ1bHlf d3F4Z2FfcGFuZWxfYWRkKGN0eCk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRldiwgImZhaWxl ZCB0byBhZGQgcGFuZWxcbiIpOworCQlnb3RvIGVycl9wYW5lbF9hZGQ7CisJfQorCisJLyogY29u ZmlndXJlIG1hc3RlciBEU0kgZGV2aWNlICovCisJZHNpLT5sYW5lcyA9IDQ7CisJZHNpLT5mb3Jt YXQgPSBNSVBJX0RTSV9GTVRfUkdCODg4OworCWRzaS0+bW9kZV9mbGFncyA9IE1JUElfRFNJX01P REVfVklERU8gfCBNSVBJX0RTSV9DTE9DS19OT05fQ09OVElOVU9VUyB8CisJCQkJCQlNSVBJX0RT SV9NT0RFX0xQTTsKKworCXJldCA9IG1pcGlfZHNpX2F0dGFjaChkc2kpOworCWlmIChyZXQgPCAw KSB7CisJCWRldl9lcnIoZGV2LCAibWFzdGVyIGRzaSBhdHRhY2ggZmFpbGVkXG4iKTsKKwkJZ290 byBlcnJfZHNpX2F0dGFjaDsKKwl9CisKKwkvKiBjb25maWd1cmUgc2Vjb25kYXJ5IERTSSBkZXZp Y2UgKi8KKwlzZWNvbmRhcnktPmxhbmVzID0gNDsKKwlzZWNvbmRhcnktPmZvcm1hdCA9IE1JUElf RFNJX0ZNVF9SR0I4ODg7CisJc2Vjb25kYXJ5LT5tb2RlX2ZsYWdzID0gTUlQSV9EU0lfTU9ERV9W SURFTyB8CisJCU1JUElfRFNJX0NMT0NLX05PTl9DT05USU5VT1VTIHwKKwkJTUlQSV9EU0lfTU9E RV9MUE07CisKKwlyZXQgPSBtaXBpX2RzaV9hdHRhY2goc2Vjb25kYXJ5KTsKKwlpZiAocmV0IDwg MCkgeworCQlkZXZfZXJyKGRldiwgIm1pcGlfZHNpX2F0dGFjaCBvbiBzZWNvbmRhcnkgZmFpbGVk XG4iKTsKKwkJZ290byBlcnJfZHNpX2F0dGFjaF9zZWM7CisJfQorCisJcmV0dXJuIDA7CisKK2Vy cl9kc2lfYXR0YWNoX3NlYzoKKwltaXBpX2RzaV9kZXRhY2goY3R4LT5kc2lbMF0pOworZXJyX2Rz aV9hdHRhY2g6CisJdHJ1bHlfd3F4Z2FfcGFuZWxfZGVsKGN0eCk7CitlcnJfcGFuZWxfYWRkOgor CW1pcGlfZHNpX2RldmljZV91bnJlZ2lzdGVyKHNlY29uZGFyeSk7CitlcnJfZHNpX2RldmljZToK K2Vycl9ob3N0OgorCW9mX25vZGVfcHV0KGRzaTEpOworZXJyX2dldF9yZW1vdGU6CitlcnJfZHNp X2N0eDoKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IHRydWx5X3dxeGdhX3JlbW92ZShz dHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCit7CisJc3RydWN0IHRydWx5X3dxeGdhICpjdHgg PSBtaXBpX2RzaV9nZXRfZHJ2ZGF0YShkc2kpOworCisJaWYgKGN0eC0+ZHNpWzBdKQorCQltaXBp X2RzaV9kZXRhY2goY3R4LT5kc2lbMF0pOworCWlmIChjdHgtPmRzaVsxXSkgeworCQltaXBpX2Rz aV9kZXRhY2goY3R4LT5kc2lbMV0pOworCQltaXBpX2RzaV9kZXZpY2VfdW5yZWdpc3RlcihjdHgt PmRzaVsxXSk7CisJfQorCXRydWx5X3dxeGdhX3BhbmVsX2RlbChjdHgpOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHRydWx5X3dxeGdhX29mX21h dGNoW10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJ0cnVseSxudDM1NTk3IiwgfSwKKwl7IH0KK307 CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB0cnVseV93cXhnYV9vZl9tYXRjaCk7CisKK3N0YXRp YyBzdHJ1Y3QgbWlwaV9kc2lfZHJpdmVyIHRydWx5X3dxeGdhX2RyaXZlciA9IHsKKwkuZHJpdmVy ID0geworCQkubmFtZSA9ICJwYW5lbF90cnVseV9udDM1NTk3IiwKKwkJLm9mX21hdGNoX3RhYmxl ID0gdHJ1bHlfd3F4Z2Ffb2ZfbWF0Y2gsCisJfSwKKwkucHJvYmUgPSB0cnVseV93cXhnYV9wcm9i ZSwKKwkucmVtb3ZlID0gdHJ1bHlfd3F4Z2FfcmVtb3ZlLAorfTsKK21vZHVsZV9taXBpX2RzaV9k cml2ZXIodHJ1bHlfd3F4Z2FfZHJpdmVyKTsKKworTU9EVUxFX0RFU0NSSVBUSU9OKCJUcnVseSBO VDM1NTk3IERTSSBQYW5lbCBEcml2ZXIiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKLS0g ClRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUg Q29kZSBBdXJvcmEgRm9ydW0sCmEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2pl Y3QKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=