From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Lechner Subject: [PATCH v4 3/3] drm/tinydrm: add driver for ST7735R panels Date: Mon, 1 Jan 2018 13:02:16 -0600 Message-ID: <1514833336-22564-4-git-send-email-david@lechnology.com> References: <1514833336-22564-1-git-send-email-david@lechnology.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1514833336-22564-1-git-send-email-david@lechnology.com> 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, devicetree@vger.kernel.org Cc: Mark Rutland , limor@ladyada.net, David Lechner , linux-kernel@vger.kernel.org, Rob Herring List-Id: devicetree@vger.kernel.org VGhpcyBhZGRzIGEgbmV3IGRyaXZlciBmb3IgU2l0cm9uaXggU1Q3NzM1UiBkaXNwbGF5IHBhbmVs cy4KClRoaXMgaGFzIGJlZW4gdGVzdGVkIHVzaW5nIGFuIEFkYWZydWl0IDEuOCIgVEZULgoKU2ln bmVkLW9mZi1ieTogRGF2aWQgTGVjaG5lciA8ZGF2aWRAbGVjaG5vbG9neS5jb20+ClJldmlld2Vk LWJ5OiBOb3JhbGYgVHLDuG5uZXMgPG5vcmFsZkB0cm9ubmVzLm9yZz4KLS0tCgp2NCBjaGFuZ2Vz OgoqIHJlbmFtZWQgc3Q3NzM1cl9waXBlX2VuYWJsZSB0byBqZF90MTgwMDNfdDAxX3BpcGVfZW5h YmxlCiogcmVuYW1lZCBzdDc3MzVyX3BpcGVfZnVuY3MgdG8gamRfdDE4MDAzX3QwMV9waXBlX2Z1 bmNzCiogY2hhbmdlZCBnYW1tYSBjdXJ2ZSB0byBvbmUgZnJvbSBBZGFmcnVpdCdzIEFyZHVpbm8g bGlicmFyeQoKdjMgY2hhbmdlczoKKiBDaGFuZ2VkIGNvbXBhdGlibGUgc3RyaW5nCiogdXNlIFNQ RFggbGljZW5zZSBoZWFkZXIKKiBSZW5hbWVkIG1vZGUgc3RydWN0IHRvIHVzZSBwYW5lbCBuYW1l IGluc3RlYWQgb2YgY29udHJvbGxlciBuYW1lCgp2MiBjaGFuZ2VzOgoqIENoYW5nZSBkZWxheSBm cm9tIDEwbXMgdG8gMjBtcyB0byBhdm9pZCBjaGVja3BhdGNoIHdhcm5pbmcKKiBVc2UgbWlwaV9k YmlfcGlwZV9lbmFibGUoKS9taXBpX2RiaV9waXBlX2Rpc2FibGUoKSB0byByZWR1Y2UgZHVwbGlj YXRlZCBjb2RlCiogUmViYXNlIG9uIGRybS1taXNjLW5leHQgKHRpbnlkcm1fbGFzdGNsb3NlID0+ IGRybV9mYl9oZWxwZXJfbGFzdGNsb3NlKQoqIFVzZSBtaXBpX2RiaV9kZWJ1Z2ZzX2luaXQKKiBB ZGQgbWlwaS0+cmVhZF9jb21tYW5kcyA9IE5VTEw7IHNpbmNlIHRoaXMgZGlzcGxheSBpcyB3cml0 ZS1vbmx5CgoKIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArKwogZHJp dmVycy9ncHUvZHJtL3Rpbnlkcm0vS2NvbmZpZyAgIHwgIDEwICsrCiBkcml2ZXJzL2dwdS9kcm0v dGlueWRybS9NYWtlZmlsZSAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vc3Q3NzM1 ci5jIHwgMjE1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVz IGNoYW5nZWQsIDIzMiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL3Rpbnlkcm0vc3Q3NzM1ci5jCgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlO VEFJTkVSUwppbmRleCA1MjhlMjIzLi5iNGZmYmMyIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUwor KysgYi9NQUlOVEFJTkVSUwpAQCAtNDU1Niw2ICs0NTU2LDEyIEBAIFM6CU1haW50YWluZWQKIEY6 CWRyaXZlcnMvZ3B1L2RybS90aW55ZHJtL3N0NzU4Ni5jCiBGOglEb2N1bWVudGF0aW9uL2Rldmlj ZXRyZWUvYmluZGluZ3MvZGlzcGxheS9zdDc1ODYudHh0CiAKK0RSTSBEUklWRVIgRk9SIFNJVFJP TklYIFNUNzczNVIgUEFORUxTCitNOglEYXZpZCBMZWNobmVyIDxkYXZpZEBsZWNobm9sb2d5LmNv bT4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvZ3B1L2RybS90aW55ZHJtL3N0NzczNXIuYwor RjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvc3Q3NzM1ci50eHQK KwogRFJNIERSSVZFUiBGT1IgVERGWCBWSURFTyBDQVJEUwogUzoJT3JwaGFuIC8gT2Jzb2xldGUK IEY6CWRyaXZlcnMvZ3B1L2RybS90ZGZ4LwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rp bnlkcm0vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL0tjb25maWcKaW5kZXggOTBj NWJkNS4uYjBlNTY3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vS2NvbmZp ZworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9LY29uZmlnCkBAIC01MiwzICs1MiwxMyBA QCBjb25maWcgVElOWURSTV9TVDc1ODYKIAkgICogTEVHTyBNSU5EU1RPUk1TIEVWMwogCiAJICBJ ZiBNIGlzIHNlbGVjdGVkIHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc3Q3NTg2LgorCitjb25m aWcgVElOWURSTV9TVDc3MzVSCisJdHJpc3RhdGUgIkRSTSBzdXBwb3J0IGZvciBTaXRyb25peCBT VDc3MzVSIGRpc3BsYXkgcGFuZWxzIgorCWRlcGVuZHMgb24gRFJNX1RJTllEUk0gJiYgU1BJCisJ c2VsZWN0IFRJTllEUk1fTUlQSV9EQkkKKwloZWxwCisJICBEUk0gZHJpdmVyIFNpdHJvbml4IFNU NzczNVIgd2l0aCBvbmUgb2YgdGhlIGZvbGxvd2luZyBMQ0RzOgorCSAgKiBKRC1UMTgwMDMtVDAx IDEuOCIgMTI4eDE2MCBURlQKKworCSAgSWYgTSBpcyBzZWxlY3RlZCB0aGUgbW9kdWxlIHdpbGwg YmUgY2FsbGVkIHN0NzczNXIuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9N YWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL01ha2VmaWxlCmluZGV4IDhhZWVlNTMu LjQ5YTExMTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL01ha2VmaWxlCisr KyBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL01ha2VmaWxlCkBAIC04LDMgKzgsNCBAQCBvYmot JChDT05GSUdfVElOWURSTV9JTEk5MjI1KQkJKz0gaWxpOTIyNS5vCiBvYmotJChDT05GSUdfVElO WURSTV9NSTAyODNRVCkJCSs9IG1pMDI4M3F0Lm8KIG9iai0kKENPTkZJR19USU5ZRFJNX1JFUEFQ RVIpCQkrPSByZXBhcGVyLm8KIG9iai0kKENPTkZJR19USU5ZRFJNX1NUNzU4NikJCSs9IHN0NzU4 Ni5vCitvYmotJChDT05GSUdfVElOWURSTV9TVDc3MzVSKQkJKz0gc3Q3NzM1ci5vCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9zdDc3MzVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v dGlueWRybS9zdDc3MzVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThm ZjQ0NwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL3N0NzczNXIu YwpAQCAtMCwwICsxLDIxNSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAr CisvKgorICogRFJNIGRyaXZlciBmb3IgU2l0cm9uaXggU1Q3NzM1UiBwYW5lbHMKKyAqCisgKiBD b3B5cmlnaHQgMjAxNyBEYXZpZCBMZWNobmVyIDxkYXZpZEBsZWNobm9sb2d5LmNvbT4KKyAqLwor CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+Cisj aW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5o PgorI2luY2x1ZGUgPGxpbnV4L3Byb3BlcnR5Lmg+CisjaW5jbHVkZSA8bGludXgvc3BpL3NwaS5o PgorI2luY2x1ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5oPgorCisjaW5jbHVkZSA8ZHJtL2RybV9m Yl9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaD4K KyNpbmNsdWRlIDxkcm0vdGlueWRybS9taXBpLWRiaS5oPgorI2luY2x1ZGUgPGRybS90aW55ZHJt L3Rpbnlkcm0taGVscGVycy5oPgorCisjZGVmaW5lIFNUNzczNVJfRlJNQ1RSMQkJMHhiMQorI2Rl ZmluZSBTVDc3MzVSX0ZSTUNUUjIJCTB4YjIKKyNkZWZpbmUgU1Q3NzM1Ul9GUk1DVFIzCQkweGIz CisjZGVmaW5lIFNUNzczNVJfSU5WQ1RSCQkweGI0CisjZGVmaW5lIFNUNzczNVJfUFdDVFIxCQkw eGMwCisjZGVmaW5lIFNUNzczNVJfUFdDVFIyCQkweGMxCisjZGVmaW5lIFNUNzczNVJfUFdDVFIz CQkweGMyCisjZGVmaW5lIFNUNzczNVJfUFdDVFI0CQkweGMzCisjZGVmaW5lIFNUNzczNVJfUFdD VFI1CQkweGM0CisjZGVmaW5lIFNUNzczNVJfVk1DVFIxCQkweGM1CisjZGVmaW5lIFNUNzczNVJf R0FNQ1RSUDEJMHhlMAorI2RlZmluZSBTVDc3MzVSX0dBTUNUUk4xCTB4ZTEKKworI2RlZmluZSBT VDc3MzVSX01ZCUJJVCg3KQorI2RlZmluZSBTVDc3MzVSX01YCUJJVCg2KQorI2RlZmluZSBTVDc3 MzVSX01WCUJJVCg1KQorCitzdGF0aWMgdm9pZCBqZF90MTgwMDNfdDAxX3BpcGVfZW5hYmxlKHN0 cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSwKKwkJCQkgICAgICBzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCit7CisJc3RydWN0IHRpbnlkcm1fZGV2aWNlICp0ZGV2 ID0gcGlwZV90b190aW55ZHJtKHBpcGUpOworCXN0cnVjdCBtaXBpX2RiaSAqbWlwaSA9IG1pcGlf ZGJpX2Zyb21fdGlueWRybSh0ZGV2KTsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSB0ZGV2LT5kcm0t PmRldjsKKwlpbnQgcmV0OworCXU4IGFkZHJfbW9kZTsKKworCURSTV9ERUJVR19LTVMoIlxuIik7 CisKKwltaXBpX2RiaV9od19yZXNldChtaXBpKTsKKworCXJldCA9IG1pcGlfZGJpX2NvbW1hbmQo bWlwaSwgTUlQSV9EQ1NfU09GVF9SRVNFVCk7CisJaWYgKHJldCkgeworCQlEUk1fREVWX0VSUk9S KGRldiwgIkVycm9yIHNlbmRpbmcgY29tbWFuZCAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuOworCX0K KworCW1zbGVlcCgxNTApOworCisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBNSVBJX0RDU19FWElU X1NMRUVQX01PREUpOworCW1zbGVlcCg1MDApOworCisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBT VDc3MzVSX0ZSTUNUUjEsIDB4MDEsIDB4MmMsIDB4MmQpOworCW1pcGlfZGJpX2NvbW1hbmQobWlw aSwgU1Q3NzM1Ul9GUk1DVFIyLCAweDAxLCAweDJjLCAweDJkKTsKKwltaXBpX2RiaV9jb21tYW5k KG1pcGksIFNUNzczNVJfRlJNQ1RSMywgMHgwMSwgMHgyYywgMHgyZCwgMHgwMSwgMHgyYywKKwkJ CSAweDJkKTsKKwltaXBpX2RiaV9jb21tYW5kKG1pcGksIFNUNzczNVJfSU5WQ1RSLCAweDA3KTsK KwltaXBpX2RiaV9jb21tYW5kKG1pcGksIFNUNzczNVJfUFdDVFIxLCAweGEyLCAweDAyLCAweDg0 KTsKKwltaXBpX2RiaV9jb21tYW5kKG1pcGksIFNUNzczNVJfUFdDVFIyLCAweGM1KTsKKwltaXBp X2RiaV9jb21tYW5kKG1pcGksIFNUNzczNVJfUFdDVFIzLCAweDBhLCAweDAwKTsKKwltaXBpX2Ri aV9jb21tYW5kKG1pcGksIFNUNzczNVJfUFdDVFI0LCAweDhhLCAweDJhKTsKKwltaXBpX2RiaV9j b21tYW5kKG1pcGksIFNUNzczNVJfUFdDVFI1LCAweDhhLCAweGVlKTsKKwltaXBpX2RiaV9jb21t YW5kKG1pcGksIFNUNzczNVJfVk1DVFIxLCAweDBlKTsKKwltaXBpX2RiaV9jb21tYW5kKG1pcGks IE1JUElfRENTX0VYSVRfSU5WRVJUX01PREUpOworCXN3aXRjaCAobWlwaS0+cm90YXRpb24pIHsK KwlkZWZhdWx0OgorCQlhZGRyX21vZGUgPSBTVDc3MzVSX01YIHwgU1Q3NzM1Ul9NWTsKKwkJYnJl YWs7CisJY2FzZSA5MDoKKwkJYWRkcl9tb2RlID0gU1Q3NzM1Ul9NWCB8IFNUNzczNVJfTVY7CisJ CWJyZWFrOworCWNhc2UgMTgwOgorCQlhZGRyX21vZGUgPSAwOworCQlicmVhazsKKwljYXNlIDI3 MDoKKwkJYWRkcl9tb2RlID0gU1Q3NzM1Ul9NWSB8IFNUNzczNVJfTVY7CisJCWJyZWFrOworCX0K KwltaXBpX2RiaV9jb21tYW5kKG1pcGksIE1JUElfRENTX1NFVF9BRERSRVNTX01PREUsIGFkZHJf bW9kZSk7CisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBNSVBJX0RDU19TRVRfUElYRUxfRk9STUFU LAorCQkJIE1JUElfRENTX1BJWEVMX0ZNVF8xNkJJVCk7CisJbWlwaV9kYmlfY29tbWFuZChtaXBp LCBTVDc3MzVSX0dBTUNUUlAxLCAweDAyLCAweDFjLCAweDA3LCAweDEyLCAweDM3LAorCQkJIDB4 MzIsIDB4MjksIDB4MmQsIDB4MjksIDB4MjUsIDB4MmIsIDB4MzksIDB4MDAsIDB4MDEsCisJCQkg MHgwMywgMHgxMCk7CisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBTVDc3MzVSX0dBTUNUUk4xLCAw eDAzLCAweDFkLCAweDA3LCAweDA2LCAweDJlLAorCQkJIDB4MmMsIDB4MjksIDB4MmQsIDB4MmUs IDB4MmUsIDB4MzcsIDB4M2YsIDB4MDAsIDB4MDAsCisJCQkgMHgwMiwgMHgxMCk7CisJbWlwaV9k YmlfY29tbWFuZChtaXBpLCBNSVBJX0RDU19TRVRfRElTUExBWV9PTik7CisKKwltc2xlZXAoMTAw KTsKKworCW1pcGlfZGJpX2NvbW1hbmQobWlwaSwgTUlQSV9EQ1NfRU5URVJfTk9STUFMX01PREUp OworCisJbXNsZWVwKDIwKTsKKworCW1pcGlfZGJpX3BpcGVfZW5hYmxlKHBpcGUsIGNydGNfc3Rh dGUpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2Z1 bmNzIGpkX3QxODAwM190MDFfcGlwZV9mdW5jcyA9IHsKKwkuZW5hYmxlCQk9IGpkX3QxODAwM190 MDFfcGlwZV9lbmFibGUsCisJLmRpc2FibGUJPSBtaXBpX2RiaV9waXBlX2Rpc2FibGUsCisJLnVw ZGF0ZQkJPSB0aW55ZHJtX2Rpc3BsYXlfcGlwZV91cGRhdGUsCisJLnByZXBhcmVfZmIJPSB0aW55 ZHJtX2Rpc3BsYXlfcGlwZV9wcmVwYXJlX2ZiLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlIGpkX3QxODAwM190MDFfbW9kZSA9IHsKKwlUSU5ZRFJNX01PREUoMTI4 LCAxNjAsIDI4LCAzNSksCit9OworCitERUZJTkVfRFJNX0dFTV9DTUFfRk9QUyhzdDc3MzVyX2Zv cHMpOworCitzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgc3Q3NzM1cl9kcml2ZXIgPSB7CisJLmRy aXZlcl9mZWF0dXJlcwk9IERSSVZFUl9HRU0gfCBEUklWRVJfTU9ERVNFVCB8IERSSVZFUl9QUklN RSB8CisJCQkJICBEUklWRVJfQVRPTUlDLAorCS5mb3BzCQkJPSAmc3Q3NzM1cl9mb3BzLAorCVRJ TllEUk1fR0VNX0RSSVZFUl9PUFMsCisJLmxhc3RjbG9zZQkJPSBkcm1fZmJfaGVscGVyX2xhc3Rj bG9zZSwKKwkuZGVidWdmc19pbml0CQk9IG1pcGlfZGJpX2RlYnVnZnNfaW5pdCwKKwkubmFtZQkJ CT0gInN0NzczNXIiLAorCS5kZXNjCQkJPSAiU2l0cm9uaXggU1Q3NzM1UiIsCisJLmRhdGUJCQk9 ICIyMDE3MTEyOCIsCisJLm1ham9yCQkJPSAxLAorCS5taW5vcgkJCT0gMCwKK307CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN0NzczNXJfb2ZfbWF0Y2hbXSA9IHsKKwl7IC5j b21wYXRpYmxlID0gImppYW5kYSxqZC10MTgwMDMtdDAxIiB9LAorCXsgfSwKK307CitNT0RVTEVf REVWSUNFX1RBQkxFKG9mLCBzdDc3MzVyX29mX21hdGNoKTsKKworc3RhdGljIGNvbnN0IHN0cnVj dCBzcGlfZGV2aWNlX2lkIHN0NzczNXJfaWRbXSA9IHsKKwl7ICJqZC10MTgwMDMtdDAxIiwgMCB9 LAorCXsgfSwKK307CitNT0RVTEVfREVWSUNFX1RBQkxFKHNwaSwgc3Q3NzM1cl9pZCk7CisKK3N0 YXRpYyBpbnQgc3Q3NzM1cl9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQoreworCXN0cnVj dCBkZXZpY2UgKmRldiA9ICZzcGktPmRldjsKKwlzdHJ1Y3QgbWlwaV9kYmkgKm1pcGk7CisJc3Ry dWN0IGdwaW9fZGVzYyAqZGM7CisJdTMyIHJvdGF0aW9uID0gMDsKKwlpbnQgcmV0OworCisJbWlw aSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqbWlwaSksIEdGUF9LRVJORUwpOworCWlmICgh bWlwaSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwltaXBpLT5yZXNldCA9IGRldm1fZ3Bpb2RfZ2V0 KGRldiwgInJlc2V0IiwgR1BJT0RfT1VUX0hJR0gpOworCWlmIChJU19FUlIobWlwaS0+cmVzZXQp KSB7CisJCURSTV9ERVZfRVJST1IoZGV2LCAiRmFpbGVkIHRvIGdldCBncGlvICdyZXNldCdcbiIp OworCQlyZXR1cm4gUFRSX0VSUihtaXBpLT5yZXNldCk7CisJfQorCisJZGMgPSBkZXZtX2dwaW9k X2dldChkZXYsICJkYyIsIEdQSU9EX09VVF9MT1cpOworCWlmIChJU19FUlIoZGMpKSB7CisJCURS TV9ERVZfRVJST1IoZGV2LCAiRmFpbGVkIHRvIGdldCBncGlvICdkYydcbiIpOworCQlyZXR1cm4g UFRSX0VSUihkYyk7CisJfQorCisJbWlwaS0+YmFja2xpZ2h0ID0gdGlueWRybV9vZl9maW5kX2Jh Y2tsaWdodChkZXYpOworCWlmIChJU19FUlIobWlwaS0+YmFja2xpZ2h0KSkKKwkJcmV0dXJuIFBU Ul9FUlIobWlwaS0+YmFja2xpZ2h0KTsKKworCWRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYs ICJyb3RhdGlvbiIsICZyb3RhdGlvbik7CisKKwlyZXQgPSBtaXBpX2RiaV9zcGlfaW5pdChzcGks IG1pcGksIGRjKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJLyogQ2Fubm90IHJlYWQg ZnJvbSBBZGFmcnVpdCAxLjgiIGRpc3BsYXkgdmlhIFNQSSAqLworCW1pcGktPnJlYWRfY29tbWFu ZHMgPSBOVUxMOworCisJcmV0ID0gbWlwaV9kYmlfaW5pdCgmc3BpLT5kZXYsIG1pcGksICZqZF90 MTgwMDNfdDAxX3BpcGVfZnVuY3MsCisJCQkgICAgJnN0NzczNXJfZHJpdmVyLCAmamRfdDE4MDAz X3QwMV9tb2RlLCByb3RhdGlvbik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXNwaV9z ZXRfZHJ2ZGF0YShzcGksIG1pcGkpOworCisJcmV0dXJuIGRldm1fdGlueWRybV9yZWdpc3Rlcigm bWlwaS0+dGlueWRybSk7Cit9CisKK3N0YXRpYyB2b2lkIHN0NzczNXJfc2h1dGRvd24oc3RydWN0 IHNwaV9kZXZpY2UgKnNwaSkKK3sKKwlzdHJ1Y3QgbWlwaV9kYmkgKm1pcGkgPSBzcGlfZ2V0X2Ry dmRhdGEoc3BpKTsKKworCXRpbnlkcm1fc2h1dGRvd24oJm1pcGktPnRpbnlkcm0pOworfQorCitz dGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgc3Q3NzM1cl9zcGlfZHJpdmVyID0geworCS5kcml2ZXIg PSB7CisJCS5uYW1lID0gInN0NzczNXIiLAorCQkub3duZXIgPSBUSElTX01PRFVMRSwKKwkJLm9m X21hdGNoX3RhYmxlID0gc3Q3NzM1cl9vZl9tYXRjaCwKKwl9LAorCS5pZF90YWJsZSA9IHN0Nzcz NXJfaWQsCisJLnByb2JlID0gc3Q3NzM1cl9wcm9iZSwKKwkuc2h1dGRvd24gPSBzdDc3MzVyX3No dXRkb3duLAorfTsKK21vZHVsZV9zcGlfZHJpdmVyKHN0NzczNXJfc3BpX2RyaXZlcik7CisKK01P RFVMRV9ERVNDUklQVElPTigiU2l0cm9uaXggU1Q3NzM1UiBEUk0gZHJpdmVyIik7CitNT0RVTEVf QVVUSE9SKCJEYXZpZCBMZWNobmVyIDxkYXZpZEBsZWNobm9sb2d5LmNvbT4iKTsKK01PRFVMRV9M SUNFTlNFKCJHUEwiKTsKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK