From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiko Stuebner Subject: [PATCH v4] drm/panel: add Kingdisplay kd097d04 panel driver Date: Fri, 17 Aug 2018 11:37:31 +0200 Message-ID: <20180817093731.9850-1-heiko@sntech.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from gloria.sntech.de (gloria.sntech.de [185.11.138.130]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3E1506E5D6 for ; Fri, 17 Aug 2018 09:37:48 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: thierry.reding@gmail.com Cc: hl@rock-chips.com, briannorris@chromium.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, nickey.yang@rock-chips.com, seanpaul@chromium.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogTmlja2V5IFlhbmcgPG5pY2tleS55YW5nQHJvY2stY2hpcHMuY29tPgoKU3VwcG9ydCBL aW5nZGlzcGxheSBrZDA5N2QwNCA5LjciIDE1MzZ4MjA0OCBURlQgTENEIHBhbmVsLAppdCBpcyBh IE1JUEkgZHVhbC1EU0kgcGFuZWwuCgp2NDoKLSBhZGRyZXNzIFBoaWxpcHAncyBjb21tZW50cwog IC0gcmVhbCByYW5nZSBmb3IgdXNsZWVwX3JhbmdlIGFuZAogIC0gcG93ZXJvZmYgb3JkZXJpbmcg aW4ga2luZ2Rpc3BsYXlfcGFuZWxfcHJlcGFyZQogIC0gcmV0dXJuIHZhbHVlIGJlYXV0aWZpY2F0 aW9uIGluIHBhbmVsX3Byb2JlCi0gdXBkYXRlIGF1dGhvciBuYW1pbmcgZm9yIGZ1bGwgbmFtZQp2 MzoKLSBhZGRyZXNzIFRoaWVycnkncyBjb21tZW50cwogIC0gZXJyb3IgaGFuZGxpbmcgZm9yIGlu aXQgZHNpIHdyaXRlcyBpbiBpbml0CiAgLSB1bmNvbmRpdGlvbmFsbHkgcmVtb3ZlIHRoZSBwYW5l bAogIC0gZG9uJ3QgdXNlIGRybV9wYW5lbF9kZXRhY2gKICAtIGEgYml0IG9mIHZhcmlhYmxlIHNp Z25lZG5lcyB3aWdnbGluZwotIEkgZGlkIHRhbGsgdG8gQ2hyb21lT1MgcGVvcGxlIGFuZCB0aGUg ZGVsYXlzIHJlYWxseSBzaG91bGQgYmUgYXMgc2hvcnQKICBhcyBwb3NzaWJsZSwgc28gZHJvcHBl ZCB0aGUgMTAwbXMgZnJvbSB0aGUgZGVsYXkgY29tbWVudHMKdjI6Ci0gdXBkYXRlIHRpbWluZyAr IGNtZHMgZnJvbSBjaHJvbWVvcyBrZXJuZWwKLSBuZXcgYmFja2xpZ2h0IEFQSSBpbmNsdWRpbmcg c3dpdGNoIHRvIGRldm1fb2ZfZmluZF9iYWNrbGlnaHQKLSBmaXggbW9zdCBvZiBTZWFuIFBhdWwn cyBjb21tZW50cwogIGVuYWJsZS9wcmVwYXJlIHRyYWNraW5nIHNlZW1zIHNvbWV0aGluZyBhbGwg cGFuZWxzIGRvCi0gZG9jdW1lbnQgb3JpZ2lucyBvZiB0aGUgaW5pdCBzZXF1ZW5jZQotIGxhbmVz IHBlciBkc2kgaW50ZXJmYWNlIHRvIDQgKHR3byBpbnRlcmZhY2VzKS4gTWF0Y2hlcyBob3cgdGVn cmEKICBhbmQgcGVuZGluZyByb2NrY2hpcCBkdWFsLWRzaSBoYW5kbGUgKGR1YWwtKWRzaSBsYW5l cwotIHNwZHggaGVhZGVyIGluc3RlYWQgb2YgbGljZW5zZSBib2lsZXJwbGF0ZQoKU2lnbmVkLW9m Zi1ieTogTmlja2V5IFlhbmcgPG5pY2tleS55YW5nQHJvY2stY2hpcHMuY29tPgpTaWduZWQtb2Zm LWJ5OiBIZWlrbyBTdHVlYm5lciA8aGVpa29Ac250ZWNoLmRlPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9wYW5lbC9LY29uZmlnICAgICAgICAgICAgICAgICB8ICAxMSArCiBkcml2ZXJzL2dwdS9kcm0v cGFuZWwvTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL2RybS9wYW5lbC9wYW5l bC1raW5nZGlzcGxheS1rZDA5N2QwNC5jICAgIHwgNDczICsrKysrKysrKysrKysrKysrKwogMyBm aWxlcyBjaGFuZ2VkLCA0ODUgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1raW5nZGlzcGxheS1rZDA5N2QwNC5jCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwv S2NvbmZpZwppbmRleCA2MDIwYzMwYTMzYjMuLjQ1ODI1M2RjMDg0MiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tj b25maWcKQEAgLTc3LDYgKzc3LDE3IEBAIGNvbmZpZyBEUk1fUEFORUxfSkRJX0xUMDcwTUUwNTAw MAogCSAgVGhlIHBhbmVsIGhhcyBhIDEyMDAoUkdCKcOXMTkyMCAoV1VYR0EpIHJlc29sdXRpb24g YW5kIHVzZXMKIAkgIDI0IGJpdCBwZXIgcGl4ZWwuCiAKK2NvbmZpZyBEUk1fUEFORUxfS0lOR0RJ U1BMQVlfS0QwOTdEMDQKKwl0cmlzdGF0ZSAiS2luZ2Rpc3BsYXkga2QwOTdkMDQgcGFuZWwiCisJ ZGVwZW5kcyBvbiBPRgorCWRlcGVuZHMgb24gRFJNX01JUElfRFNJCisJZGVwZW5kcyBvbiBCQUNL TElHSFRfQ0xBU1NfREVWSUNFCisJaGVscAorCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBl bmFibGUgc3VwcG9ydCBmb3IgS2luZ2Rpc3BsYXkga2QwOTdkMDQKKwkgIFRGVC1MQ0QgbW9kdWxl cy4gVGhlIHBhbmVsIGhhcyBhIDE1MzZ4MjA0OCByZXNvbHV0aW9uIGFuZCB1c2VzCisJICAyNCBi aXQgUkdCIHBlciBwaXhlbC4gSXQgcHJvdmlkZXMgYSBNSVBJIERTSSBpbnRlcmZhY2UgdG8KKwkg IHRoZSBob3N0IGFuZCBoYXMgYSBidWlsdC1pbiBMRUQgYmFja2xpZ2h0LgorCiBjb25maWcgRFJN X1BBTkVMX1NBTVNVTkdfTEQ5MDQwCiAJdHJpc3RhdGUgIlNhbXN1bmcgTEQ5MDQwIFJHQi9TUEkg cGFuZWwiCiAJZGVwZW5kcyBvbiBPRiAmJiBTUEkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9wYW5lbC9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQppbmRleCA1 Y2NhYWE5ZDEzYWYuLmQ1OWY3NWI4NGQ0OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Bh bmVsL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQpAQCAtNiw2 ICs2LDcgQEAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9JTElURUtfSUw5MzIyKSArPSBwYW5lbC1p bGl0ZWstaWxpOTMyMi5vCiBvYmotJChDT05GSUdfRFJNX1BBTkVMX0lMSVRFS19JTEk5ODgxQykg Kz0gcGFuZWwtaWxpdGVrLWlsaTk4ODFjLm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfSU5OT0xV WF9QMDc5WkNBKSArPSBwYW5lbC1pbm5vbHV4LXAwNzl6Y2Eubwogb2JqLSQoQ09ORklHX0RSTV9Q QU5FTF9KRElfTFQwNzBNRTA1MDAwKSArPSBwYW5lbC1qZGktbHQwNzBtZTA1MDAwLm8KK29iai0k KENPTkZJR19EUk1fUEFORUxfS0lOR0RJU1BMQVlfS0QwOTdEMDQpICs9IHBhbmVsLWtpbmdkaXNw bGF5LWtkMDk3ZDA0Lm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfTEdfTEc0NTczKSArPSBwYW5l bC1sZy1sZzQ1NzMubwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9PUklTRVRFQ0hfT1RNODAwOUEp ICs9IHBhbmVsLW9yaXNldGVjaC1vdG04MDA5YS5vCiBvYmotJChDT05GSUdfRFJNX1BBTkVMX1BB TkFTT05JQ19WVlgxMEYwMzROMDApICs9IHBhbmVsLXBhbmFzb25pYy12dngxMGYwMzRuMDAubwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWtpbmdkaXNwbGF5LWtkMDk3 ZDA0LmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwta2luZ2Rpc3BsYXkta2QwOTdkMDQu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJhMjVhOTE0ZDA5ZQot LS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1raW5nZGlzcGxh eS1rZDA5N2QwNC5jCkBAIC0wLDAgKzEsNDczIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMCsKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTcsIEZ1emhvdSBSb2NrY2hpcCBF bGVjdHJvbmljcyBDby4sIEx0ZAorICovCisKKyNpbmNsdWRlIDxsaW51eC9iYWNrbGlnaHQuaD4K KyNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxl Lmg+CisjaW5jbHVkZSA8bGludXgvb2YuaD4KKyNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29u c3VtZXIuaD4KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRj Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2RzaS5oPgorI2luY2x1ZGUgPGRybS9kcm1fcGFu ZWwuaD4KKworI2luY2x1ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5oPgorCitzdHJ1Y3Qga2luZ2Rp c3BsYXlfcGFuZWwgeworCXN0cnVjdCBkcm1fcGFuZWwgYmFzZTsKKwlzdHJ1Y3QgbWlwaV9kc2lf ZGV2aWNlICpsaW5rOworCisJc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJhY2tsaWdodDsKKwlz dHJ1Y3QgcmVndWxhdG9yICpzdXBwbHk7CisJc3RydWN0IGdwaW9fZGVzYyAqZW5hYmxlX2dwaW87 CisKKwlib29sIHByZXBhcmVkOworCWJvb2wgZW5hYmxlZDsKK307CisKK3N0cnVjdCBraW5nZGlz cGxheV9wYW5lbF9jbWQgeworCWNoYXIgY21kOworCWNoYXIgZGF0YTsKK307CisKKy8qCisgKiBB Y2NvcmRpbmcgdG8gdGhlIGRpc2N1c3Npb24gb24KKyAqIGh0dHBzOi8vcmV2aWV3LmNvcmVib290 Lm9yZy8jL2MvY29yZWJvb3QvKy8yMjQ3Mi8KKyAqIHRoZSBwYW5lbCBpbml0IGFycmF5IGlzIG5v dCBwYXJ0IG9mIHRoZSBwYW5lbHMgZGF0YXNoZWV0IGJ1dCBpbnN0ZWFkCisgKiBqdXN0IGNhbWUg aW4gdGhpcyBmb3JtIGZyb20gdGhlIHBhbmVsIHZlbmRvci4KKyAqLworc3RhdGljIGNvbnN0IHN0 cnVjdCBraW5nZGlzcGxheV9wYW5lbF9jbWQgaW5pdF9jb2RlW10gPSB7CisJLyogdm9sdGFnZSBz ZXR0aW5nICovCisJeyAweEIwLCAweDAwIH0sCisJeyAweEIyLCAweDAyIH0sCisJeyAweEIzLCAw eDExIH0sCisJeyAweEI0LCAweDAwIH0sCisJeyAweEI2LCAweDgwIH0sCisJLyogVkNPTSBkaXNh YmxlICovCisJeyAweEI3LCAweDAyIH0sCisJeyAweEI4LCAweDgwIH0sCisJeyAweEJBLCAweDQz IH0sCisJLyogVkNPTSBzZXR0aW5nICovCisJeyAweEJCLCAweDUzIH0sCisJLyogVlNQIHNldHRp bmcgKi8KKwl7IDB4QkMsIDB4MEEgfSwKKwkvKiBWU04gc2V0dGluZyAqLworCXsgMHhCRCwgMHg0 QSB9LAorCS8qIFZHSCBzZXR0aW5nICovCisJeyAweEJFLCAweDJGIH0sCisJLyogVkdMIHNldHRp bmcgKi8KKwl7IDB4QkYsIDB4MUEgfSwKKwl7IDB4RjAsIDB4MzkgfSwKKwl7IDB4RjEsIDB4MjIg fSwKKwkvKiBHYW1tYSBzZXR0aW5nICovCisJeyAweEIwLCAweDAyIH0sCisJeyAweEMwLCAweDAw IH0sCisJeyAweEMxLCAweDAxIH0sCisJeyAweEMyLCAweDBCIH0sCisJeyAweEMzLCAweDE1IH0s CisJeyAweEM0LCAweDIyIH0sCisJeyAweEM1LCAweDExIH0sCisJeyAweEM2LCAweDE1IH0sCisJ eyAweEM3LCAweDE5IH0sCisJeyAweEM4LCAweDFBIH0sCisJeyAweEM5LCAweDE2IH0sCisJeyAw eENBLCAweDE4IH0sCisJeyAweENCLCAweDEzIH0sCisJeyAweENDLCAweDE4IH0sCisJeyAweENE LCAweDEzIH0sCisJeyAweENFLCAweDFDIH0sCisJeyAweENGLCAweDE5IH0sCisJeyAweEQwLCAw eDIxIH0sCisJeyAweEQxLCAweDJDIH0sCisJeyAweEQyLCAweDJGIH0sCisJeyAweEQzLCAweDMw IH0sCisJeyAweEQ0LCAweDE5IH0sCisJeyAweEQ1LCAweDFGIH0sCisJeyAweEQ2LCAweDAwIH0s CisJeyAweEQ3LCAweDAxIH0sCisJeyAweEQ4LCAweDBCIH0sCisJeyAweEQ5LCAweDE1IH0sCisJ eyAweERBLCAweDIyIH0sCisJeyAweERCLCAweDExIH0sCisJeyAweERDLCAweDE1IH0sCisJeyAw eERELCAweDE5IH0sCisJeyAweERFLCAweDFBIH0sCisJeyAweERGLCAweDE2IH0sCisJeyAweEUw LCAweDE4IH0sCisJeyAweEUxLCAweDEzIH0sCisJeyAweEUyLCAweDE4IH0sCisJeyAweEUzLCAw eDEzIH0sCisJeyAweEU0LCAweDFDIH0sCisJeyAweEU1LCAweDE5IH0sCisJeyAweEU2LCAweDIx IH0sCisJeyAweEU3LCAweDJDIH0sCisJeyAweEU4LCAweDJGIH0sCisJeyAweEU5LCAweDMwIH0s CisJeyAweEVBLCAweDE5IH0sCisJeyAweEVCLCAweDFGIH0sCisJLyogR09BIE1VWCBzZXR0aW5n ICovCisJeyAweEIwLCAweDAxIH0sCisJeyAweEMwLCAweDEwIH0sCisJeyAweEMxLCAweDBGIH0s CisJeyAweEMyLCAweDBFIH0sCisJeyAweEMzLCAweDBEIH0sCisJeyAweEM0LCAweDBDIH0sCisJ eyAweEM1LCAweDBCIH0sCisJeyAweEM2LCAweDBBIH0sCisJeyAweEM3LCAweDA5IH0sCisJeyAw eEM4LCAweDA4IH0sCisJeyAweEM5LCAweDA3IH0sCisJeyAweENBLCAweDA2IH0sCisJeyAweENC LCAweDA1IH0sCisJeyAweENDLCAweDAwIH0sCisJeyAweENELCAweDAxIH0sCisJeyAweENFLCAw eDAyIH0sCisJeyAweENGLCAweDAzIH0sCisJeyAweEQwLCAweDA0IH0sCisJeyAweEQ2LCAweDEw IH0sCisJeyAweEQ3LCAweDBGIH0sCisJeyAweEQ4LCAweDBFIH0sCisJeyAweEQ5LCAweDBEIH0s CisJeyAweERBLCAweDBDIH0sCisJeyAweERCLCAweDBCIH0sCisJeyAweERDLCAweDBBIH0sCisJ eyAweERELCAweDA5IH0sCisJeyAweERFLCAweDA4IH0sCisJeyAweERGLCAweDA3IH0sCisJeyAw eEUwLCAweDA2IH0sCisJeyAweEUxLCAweDA1IH0sCisJeyAweEUyLCAweDAwIH0sCisJeyAweEUz LCAweDAxIH0sCisJeyAweEU0LCAweDAyIH0sCisJeyAweEU1LCAweDAzIH0sCisJeyAweEU2LCAw eDA0IH0sCisJeyAweEU3LCAweDAwIH0sCisJeyAweEVDLCAweEMwIH0sCisJLyogR09BIHRpbWlu ZyBzZXR0aW5nICovCisJeyAweEIwLCAweDAzIH0sCisJeyAweEMwLCAweDAxIH0sCisJeyAweEMy LCAweDZGIH0sCisJeyAweEMzLCAweDZGIH0sCisJeyAweEM1LCAweDM2IH0sCisJeyAweEM4LCAw eDA4IH0sCisJeyAweEM5LCAweDA0IH0sCisJeyAweENBLCAweDQxIH0sCisJeyAweENDLCAweDQz IH0sCisJeyAweENGLCAweDYwIH0sCisJeyAweEQyLCAweDA0IH0sCisJeyAweEQzLCAweDA0IH0s CisJeyAweEQ0LCAweDAzIH0sCisJeyAweEQ1LCAweDAyIH0sCisJeyAweEQ2LCAweDAxIH0sCisJ eyAweEQ3LCAweDAwIH0sCisJeyAweERCLCAweDAxIH0sCisJeyAweERFLCAweDM2IH0sCisJeyAw eEU2LCAweDZGIH0sCisJeyAweEU3LCAweDZGIH0sCisJLyogR09FIHNldHRpbmcgKi8KKwl7IDB4 QjAsIDB4MDYgfSwKKwl7IDB4QjgsIDB4QTUgfSwKKwl7IDB4QzAsIDB4QTUgfSwKKwl7IDB4RDUs IDB4M0YgfSwKK307CisKK3N0YXRpYyBpbmxpbmUKK3N0cnVjdCBraW5nZGlzcGxheV9wYW5lbCAq dG9fa2luZ2Rpc3BsYXlfcGFuZWwoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJcmV0dXJu IGNvbnRhaW5lcl9vZihwYW5lbCwgc3RydWN0IGtpbmdkaXNwbGF5X3BhbmVsLCBiYXNlKTsKK30K Kworc3RhdGljIGludCBraW5nZGlzcGxheV9wYW5lbF9kaXNhYmxlKHN0cnVjdCBkcm1fcGFuZWwg KnBhbmVsKQoreworCXN0cnVjdCBraW5nZGlzcGxheV9wYW5lbCAqa2luZ2Rpc3BsYXkgPSB0b19r aW5nZGlzcGxheV9wYW5lbChwYW5lbCk7CisJaW50IGVycjsKKworCWlmICgha2luZ2Rpc3BsYXkt PmVuYWJsZWQpCisJCXJldHVybiAwOworCisJYmFja2xpZ2h0X2Rpc2FibGUoa2luZ2Rpc3BsYXkt PmJhY2tsaWdodCk7CisKKwllcnIgPSBtaXBpX2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb2ZmKGtpbmdk aXNwbGF5LT5saW5rKTsKKwlpZiAoZXJyIDwgMCkKKwkJRFJNX0RFVl9FUlJPUihwYW5lbC0+ZGV2 LCAiZmFpbGVkIHRvIHNldCBkaXNwbGF5IG9mZjogJWRcbiIsCisJCQkgICAgICBlcnIpOworCisJ a2luZ2Rpc3BsYXktPmVuYWJsZWQgPSBmYWxzZTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMg aW50IGtpbmdkaXNwbGF5X3BhbmVsX3VucHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkK K3sKKwlzdHJ1Y3Qga2luZ2Rpc3BsYXlfcGFuZWwgKmtpbmdkaXNwbGF5ID0gdG9fa2luZ2Rpc3Bs YXlfcGFuZWwocGFuZWwpOworCWludCBlcnI7CisKKwlpZiAoIWtpbmdkaXNwbGF5LT5wcmVwYXJl ZCkKKwkJcmV0dXJuIDA7CisKKwllcnIgPSBtaXBpX2RzaV9kY3NfZW50ZXJfc2xlZXBfbW9kZShr aW5nZGlzcGxheS0+bGluayk7CisJaWYgKGVyciA8IDApIHsKKwkJRFJNX0RFVl9FUlJPUihwYW5l bC0+ZGV2LCAiZmFpbGVkIHRvIGVudGVyIHNsZWVwIG1vZGU6ICVkXG4iLAorCQkJICAgICAgZXJy KTsKKwkJcmV0dXJuIGVycjsKKwl9CisKKwkvKiBUMTU6IDEyMG1zICovCisJbXNsZWVwKDEyMCk7 CisKKwlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoa2luZ2Rpc3BsYXktPmVuYWJsZV9ncGlvLCAw KTsKKworCWVyciA9IHJlZ3VsYXRvcl9kaXNhYmxlKGtpbmdkaXNwbGF5LT5zdXBwbHkpOworCWlm IChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOworCisJa2luZ2Rpc3BsYXktPnByZXBhcmVkID0gZmFs c2U7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBraW5nZGlzcGxheV9wYW5lbF9wcmVw YXJlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBraW5nZGlzcGxheV9wYW5l bCAqa2luZ2Rpc3BsYXkgPSB0b19raW5nZGlzcGxheV9wYW5lbChwYW5lbCk7CisJaW50IGVyciwg cmVndWxhdG9yX2VycjsKKwl1bnNpZ25lZCBpbnQgaTsKKworCWlmIChraW5nZGlzcGxheS0+cHJl cGFyZWQpCisJCXJldHVybiAwOworCisJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGtpbmdkaXNw bGF5LT5lbmFibGVfZ3BpbywgMCk7CisKKwllcnIgPSByZWd1bGF0b3JfZW5hYmxlKGtpbmdkaXNw bGF5LT5zdXBwbHkpOworCWlmIChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOworCisJLyogVDI6IDE1 bXMgKi8KKwl1c2xlZXBfcmFuZ2UoMTUwMDAsIDE2MDAwKTsKKworCWdwaW9kX3NldF92YWx1ZV9j YW5zbGVlcChraW5nZGlzcGxheS0+ZW5hYmxlX2dwaW8sIDEpOworCisJLyogVDQ6IDE1bXMgKi8K Kwl1c2xlZXBfcmFuZ2UoMTUwMDAsIDE2MDAwKTsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9T SVpFKGluaXRfY29kZSk7IGkrKykgeworCQllcnIgPSBtaXBpX2RzaV9nZW5lcmljX3dyaXRlKGtp bmdkaXNwbGF5LT5saW5rLCAmaW5pdF9jb2RlW2ldLAorCQkJCQlzaXplb2Yoc3RydWN0IGtpbmdk aXNwbGF5X3BhbmVsX2NtZCkpOworCQlpZiAoZXJyIDwgMCkgeworCQkJRFJNX0RFVl9FUlJPUihw YW5lbC0+ZGV2LCAiZmFpbGVkIHdyaXRlIGluaXQgY21kczogJWRcbiIsCisJCQkJICAgICAgZXJy KTsKKwkJCWdvdG8gcG93ZXJvZmY7CisJCX0KKwl9CisKKwllcnIgPSBtaXBpX2RzaV9kY3NfZXhp dF9zbGVlcF9tb2RlKGtpbmdkaXNwbGF5LT5saW5rKTsKKwlpZiAoZXJyIDwgMCkgeworCQlEUk1f REVWX0VSUk9SKHBhbmVsLT5kZXYsICJmYWlsZWQgdG8gZXhpdCBzbGVlcCBtb2RlOiAlZFxuIiwK KwkJCSAgICAgIGVycik7CisJCWdvdG8gcG93ZXJvZmY7CisJfQorCisJLyogVDY6IDEyMG1zICov CisJbXNsZWVwKDEyMCk7CisKKwllcnIgPSBtaXBpX2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb24oa2lu Z2Rpc3BsYXktPmxpbmspOworCWlmIChlcnIgPCAwKSB7CisJCURSTV9ERVZfRVJST1IocGFuZWwt PmRldiwgImZhaWxlZCB0byBzZXQgZGlzcGxheSBvbjogJWRcbiIsCisJCQkgICAgICBlcnIpOwor CQlnb3RvIHBvd2Vyb2ZmOworCX0KKworCS8qIFQ3OiAxMG1zICovCisJdXNsZWVwX3JhbmdlKDEw MDAwLCAxMTAwMCk7CisKKwlraW5nZGlzcGxheS0+cHJlcGFyZWQgPSB0cnVlOworCisJcmV0dXJu IDA7CisKK3Bvd2Vyb2ZmOgorCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChraW5nZGlzcGxheS0+ ZW5hYmxlX2dwaW8sIDApOworCisJcmVndWxhdG9yX2VyciA9IHJlZ3VsYXRvcl9kaXNhYmxlKGtp bmdkaXNwbGF5LT5zdXBwbHkpOworCWlmIChyZWd1bGF0b3JfZXJyKQorCQlEUk1fREVWX0VSUk9S KHBhbmVsLT5kZXYsICJmYWlsZWQgdG8gZGlzYWJsZSByZWd1bGF0b3I6ICVkXG4iLAorCQkJICAg ICAgcmVndWxhdG9yX2Vycik7CisKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IGtpbmdk aXNwbGF5X3BhbmVsX2VuYWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3Qg a2luZ2Rpc3BsYXlfcGFuZWwgKmtpbmdkaXNwbGF5ID0gdG9fa2luZ2Rpc3BsYXlfcGFuZWwocGFu ZWwpOworCWludCByZXQ7CisKKwlpZiAoa2luZ2Rpc3BsYXktPmVuYWJsZWQpCisJCXJldHVybiAw OworCisJcmV0ID0gYmFja2xpZ2h0X2VuYWJsZShraW5nZGlzcGxheS0+YmFja2xpZ2h0KTsKKwlp ZiAocmV0KSB7CisJCURSTV9ERVZfRVJST1IocGFuZWwtPmRybS0+ZGV2LAorCQkJICAgICAgIkZh aWxlZCB0byBlbmFibGUgYmFja2xpZ2h0ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0K KworCWtpbmdkaXNwbGF5LT5lbmFibGVkID0gdHJ1ZTsKKworCXJldHVybiAwOworfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgZGVmYXVsdF9tb2RlID0geworCS5jbG9j ayA9IDIyOTAwMCwKKwkuaGRpc3BsYXkgPSAxNTM2LAorCS5oc3luY19zdGFydCA9IDE1MzYgKyAx MDAsCisJLmhzeW5jX2VuZCA9IDE1MzYgKyAxMDAgKyAyNCwKKwkuaHRvdGFsID0gMTUzNiArIDEw MCArIDI0ICsgMTAwLAorCS52ZGlzcGxheSA9IDIwNDgsCisJLnZzeW5jX3N0YXJ0ID0gMjA0OCAr IDk1LAorCS52c3luY19lbmQgPSAyMDQ4ICsgOTUgKyAyLAorCS52dG90YWwgPSAyMDQ4ICsgOTUg KyAyICsgMjMsCisJLnZyZWZyZXNoID0gNjAsCit9OworCitzdGF0aWMgaW50IGtpbmdkaXNwbGF5 X3BhbmVsX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqbW9kZTsKKworCW1vZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUocGFuZWwt PmRybSwgJmRlZmF1bHRfbW9kZSk7CisJaWYgKCFtb2RlKSB7CisJCURSTV9ERVZfRVJST1IocGFu ZWwtPmRybS0+ZGV2LCAiZmFpbGVkIHRvIGFkZCBtb2RlICV1eCV1eEAldVxuIiwKKwkJCSAgICAg IGRlZmF1bHRfbW9kZS5oZGlzcGxheSwgZGVmYXVsdF9tb2RlLnZkaXNwbGF5LAorCQkJICAgICAg ZGVmYXVsdF9tb2RlLnZyZWZyZXNoKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJZHJtX21v ZGVfc2V0X25hbWUobW9kZSk7CisKKwlkcm1fbW9kZV9wcm9iZWRfYWRkKHBhbmVsLT5jb25uZWN0 b3IsIG1vZGUpOworCisJcGFuZWwtPmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLndpZHRoX21tID0g MTQ3OworCXBhbmVsLT5jb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZWlnaHRfbW0gPSAxOTY7CisJ cGFuZWwtPmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmJwYyA9IDg7CisKKwlyZXR1cm4gMTsKK30K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGFuZWxfZnVuY3Mga2luZ2Rpc3BsYXlfcGFuZWxf ZnVuY3MgPSB7CisJLmRpc2FibGUgPSBraW5nZGlzcGxheV9wYW5lbF9kaXNhYmxlLAorCS51bnBy ZXBhcmUgPSBraW5nZGlzcGxheV9wYW5lbF91bnByZXBhcmUsCisJLnByZXBhcmUgPSBraW5nZGlz cGxheV9wYW5lbF9wcmVwYXJlLAorCS5lbmFibGUgPSBraW5nZGlzcGxheV9wYW5lbF9lbmFibGUs CisJLmdldF9tb2RlcyA9IGtpbmdkaXNwbGF5X3BhbmVsX2dldF9tb2RlcywKK307CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGtpbmdkaXNwbGF5X29mX21hdGNoW10gPSB7CisJ eyAuY29tcGF0aWJsZSA9ICJraW5nZGlzcGxheSxrZDA5N2QwNCIsIH0sCisJeyB9Cit9OworTU9E VUxFX0RFVklDRV9UQUJMRShvZiwga2luZ2Rpc3BsYXlfb2ZfbWF0Y2gpOworCitzdGF0aWMgaW50 IGtpbmdkaXNwbGF5X3BhbmVsX2FkZChzdHJ1Y3Qga2luZ2Rpc3BsYXlfcGFuZWwgKmtpbmdkaXNw bGF5KQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZraW5nZGlzcGxheS0+bGluay0+ZGV2Owor CWludCBlcnI7CisKKwlraW5nZGlzcGxheS0+c3VwcGx5ID0gZGV2bV9yZWd1bGF0b3JfZ2V0KGRl diwgInBvd2VyIik7CisJaWYgKElTX0VSUihraW5nZGlzcGxheS0+c3VwcGx5KSkKKwkJcmV0dXJu IFBUUl9FUlIoa2luZ2Rpc3BsYXktPnN1cHBseSk7CisKKwlraW5nZGlzcGxheS0+ZW5hYmxlX2dw aW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYsICJlbmFibGUiLAorCQkJCQkJCSAgIEdQ SU9EX09VVF9ISUdIKTsKKwlpZiAoSVNfRVJSKGtpbmdkaXNwbGF5LT5lbmFibGVfZ3BpbykpIHsK KwkJZXJyID0gUFRSX0VSUihraW5nZGlzcGxheS0+ZW5hYmxlX2dwaW8pOworCQlkZXZfZGJnKGRl diwgImZhaWxlZCB0byBnZXQgZW5hYmxlIGdwaW86ICVkXG4iLCBlcnIpOworCQlraW5nZGlzcGxh eS0+ZW5hYmxlX2dwaW8gPSBOVUxMOworCX0KKworCWtpbmdkaXNwbGF5LT5iYWNrbGlnaHQgPSBk ZXZtX29mX2ZpbmRfYmFja2xpZ2h0KGRldik7CisJaWYgKElTX0VSUihraW5nZGlzcGxheS0+YmFj a2xpZ2h0KSkKKwkJcmV0dXJuIFBUUl9FUlIoa2luZ2Rpc3BsYXktPmJhY2tsaWdodCk7CisKKwlk cm1fcGFuZWxfaW5pdCgma2luZ2Rpc3BsYXktPmJhc2UpOworCWtpbmdkaXNwbGF5LT5iYXNlLmZ1 bmNzID0gJmtpbmdkaXNwbGF5X3BhbmVsX2Z1bmNzOworCWtpbmdkaXNwbGF5LT5iYXNlLmRldiA9 ICZraW5nZGlzcGxheS0+bGluay0+ZGV2OworCisJcmV0dXJuIGRybV9wYW5lbF9hZGQoJmtpbmdk aXNwbGF5LT5iYXNlKTsKK30KKworc3RhdGljIHZvaWQga2luZ2Rpc3BsYXlfcGFuZWxfZGVsKHN0 cnVjdCBraW5nZGlzcGxheV9wYW5lbCAqa2luZ2Rpc3BsYXkpCit7CisJZHJtX3BhbmVsX3JlbW92 ZSgma2luZ2Rpc3BsYXktPmJhc2UpOworfQorCitzdGF0aWMgaW50IGtpbmdkaXNwbGF5X3BhbmVs X3Byb2JlKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKK3sKKwlzdHJ1Y3Qga2luZ2Rpc3Bs YXlfcGFuZWwgKmtpbmdkaXNwbGF5OworCWludCBlcnI7CisKKwlkc2ktPmxhbmVzID0gNDsKKwlk c2ktPmZvcm1hdCA9IE1JUElfRFNJX0ZNVF9SR0I4ODg7CisJZHNpLT5tb2RlX2ZsYWdzID0gTUlQ SV9EU0lfTU9ERV9WSURFTyB8IE1JUElfRFNJX01PREVfVklERU9fQlVSU1QgfAorCQkJICBNSVBJ X0RTSV9NT0RFX0xQTTsKKworCWtpbmdkaXNwbGF5ID0gZGV2bV9remFsbG9jKCZkc2ktPmRldiwg c2l6ZW9mKCpraW5nZGlzcGxheSksIEdGUF9LRVJORUwpOworCWlmICgha2luZ2Rpc3BsYXkpCisJ CXJldHVybiAtRU5PTUVNOworCisJbWlwaV9kc2lfc2V0X2RydmRhdGEoZHNpLCBraW5nZGlzcGxh eSk7CisJa2luZ2Rpc3BsYXktPmxpbmsgPSBkc2k7CisKKwllcnIgPSBraW5nZGlzcGxheV9wYW5l bF9hZGQoa2luZ2Rpc3BsYXkpOworCWlmIChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOworCisJcmV0 dXJuIG1pcGlfZHNpX2F0dGFjaChkc2kpOworfQorCitzdGF0aWMgaW50IGtpbmdkaXNwbGF5X3Bh bmVsX3JlbW92ZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCit7CisJc3RydWN0IGtpbmdk aXNwbGF5X3BhbmVsICpraW5nZGlzcGxheSA9IG1pcGlfZHNpX2dldF9kcnZkYXRhKGRzaSk7CisJ aW50IGVycjsKKworCWVyciA9IGtpbmdkaXNwbGF5X3BhbmVsX3VucHJlcGFyZSgma2luZ2Rpc3Bs YXktPmJhc2UpOworCWlmIChlcnIgPCAwKQorCQlEUk1fREVWX0VSUk9SKCZkc2ktPmRldiwgImZh aWxlZCB0byB1bnByZXBhcmUgcGFuZWw6ICVkXG4iLAorCQkJICAgICAgZXJyKTsKKworCWVyciA9 IGtpbmdkaXNwbGF5X3BhbmVsX2Rpc2FibGUoJmtpbmdkaXNwbGF5LT5iYXNlKTsKKwlpZiAoZXJy IDwgMCkKKwkJRFJNX0RFVl9FUlJPUigmZHNpLT5kZXYsICJmYWlsZWQgdG8gZGlzYWJsZSBwYW5l bDogJWRcbiIsIGVycik7CisKKwllcnIgPSBtaXBpX2RzaV9kZXRhY2goZHNpKTsKKwlpZiAoZXJy IDwgMCkKKwkJRFJNX0RFVl9FUlJPUigmZHNpLT5kZXYsICJmYWlsZWQgdG8gZGV0YWNoIGZyb20g RFNJIGhvc3Q6ICVkXG4iLAorCQkJICAgICAgZXJyKTsKKworCWtpbmdkaXNwbGF5X3BhbmVsX2Rl bChraW5nZGlzcGxheSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQga2luZ2Rpc3Bs YXlfcGFuZWxfc2h1dGRvd24oc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpKQoreworCXN0cnVj dCBraW5nZGlzcGxheV9wYW5lbCAqa2luZ2Rpc3BsYXkgPSBtaXBpX2RzaV9nZXRfZHJ2ZGF0YShk c2kpOworCisJa2luZ2Rpc3BsYXlfcGFuZWxfdW5wcmVwYXJlKCZraW5nZGlzcGxheS0+YmFzZSk7 CisJa2luZ2Rpc3BsYXlfcGFuZWxfZGlzYWJsZSgma2luZ2Rpc3BsYXktPmJhc2UpOworfQorCitz dGF0aWMgc3RydWN0IG1pcGlfZHNpX2RyaXZlciBraW5nZGlzcGxheV9wYW5lbF9kcml2ZXIgPSB7 CisJLmRyaXZlciA9IHsKKwkJLm5hbWUgPSAicGFuZWwta2luZ2Rpc3BsYXkta2QwOTdkMDQiLAor CQkub2ZfbWF0Y2hfdGFibGUgPSBraW5nZGlzcGxheV9vZl9tYXRjaCwKKwl9LAorCS5wcm9iZSA9 IGtpbmdkaXNwbGF5X3BhbmVsX3Byb2JlLAorCS5yZW1vdmUgPSBraW5nZGlzcGxheV9wYW5lbF9y ZW1vdmUsCisJLnNodXRkb3duID0ga2luZ2Rpc3BsYXlfcGFuZWxfc2h1dGRvd24sCit9OworbW9k dWxlX21pcGlfZHNpX2RyaXZlcihraW5nZGlzcGxheV9wYW5lbF9kcml2ZXIpOworCitNT0RVTEVf QVVUSE9SKCJDaHJpcyBaaG9uZyA8enl3QHJvY2stY2hpcHMuY29tPiIpOworTU9EVUxFX0FVVEhP UigiTmlja2V5IFlhbmcgPG5pY2tleS55YW5nQHJvY2stY2hpcHMuY29tPiIpOworTU9EVUxFX0RF U0NSSVBUSU9OKCJraW5nZGlzcGxheSBLRDA5N0QwNCBwYW5lbCBkcml2ZXIiKTsKK01PRFVMRV9M SUNFTlNFKCJHUEwgdjIiKTsKLS0gCjIuMTcuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg==