From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Lechner Subject: [PATCH v3 3/3] drm/tinydrm: add driver for ST7735R panels Date: Thu, 21 Dec 2017 13:23:53 -0600 Message-ID: <1513884233-31540-4-git-send-email-david@lechnology.com> References: <1513884233-31540-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: <1513884233-31540-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+Ci0tLQoKdjMg Y2hhbmdlczoKKiBDaGFuZ2VkIGNvbXBhdGlibGUgc3RyaW5nCiogdXNlIFNQRFggbGljZW5zZSBo ZWFkZXIKKiBSZW5hbWVkIG1vZGUgc3RydWN0IHRvIHVzZSBwYW5lbCBuYW1lIGluc3RlYWQgb2Yg Y29udHJvbGxlciBuYW1lCgp2MiBjaGFuZ2VzOgoqIENoYW5nZSBkZWxheSBmcm9tIDEwbXMgdG8g MjBtcyB0byBhdm9pZCBjaGVja3BhdGNoIHdhcm5pbmcKKiBVc2UgbWlwaV9kYmlfcGlwZV9lbmFi bGUoKS9taXBpX2RiaV9waXBlX2Rpc2FibGUoKSB0byByZWR1Y2UgZHVwbGljYXRlZCBjb2RlCiog UmViYXNlIG9uIGRybS1taXNjLW5leHQgKHRpbnlkcm1fbGFzdGNsb3NlID0+IGRybV9mYl9oZWxw ZXJfbGFzdGNsb3NlKQoqIFVzZSBtaXBpX2RiaV9kZWJ1Z2ZzX2luaXQKKiBBZGQgbWlwaS0+cmVh ZF9jb21tYW5kcyA9IE5VTEw7IHNpbmNlIHRoaXMgZGlzcGxheSBpcyB3cml0ZS1vbmx5CgoKIE1B SU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArKwogZHJpdmVycy9ncHUvZHJt L3Rpbnlkcm0vS2NvbmZpZyAgIHwgIDEwICsrCiBkcml2ZXJzL2dwdS9kcm0vdGlueWRybS9NYWtl ZmlsZSAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vc3Q3NzM1ci5jIHwgMjE1ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDIz MiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3Rpbnlk cm0vc3Q3NzM1ci5jCgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRl eCA5MTI2OGNiLi45NWU5OGUyIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJ TkVSUwpAQCAtNDU1Niw2ICs0NTU2LDEyIEBAIFM6CU1haW50YWluZWQKIEY6CWRyaXZlcnMvZ3B1 L2RybS90aW55ZHJtL3N0NzU4Ni5jCiBGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu Z3MvZGlzcGxheS9zdDc1ODYudHh0CiAKK0RSTSBEUklWRVIgRk9SIFNJVFJPTklYIFNUNzczNVIg UEFORUxTCitNOglEYXZpZCBMZWNobmVyIDxkYXZpZEBsZWNobm9sb2d5LmNvbT4KK1M6CU1haW50 YWluZWQKK0Y6CWRyaXZlcnMvZ3B1L2RybS90aW55ZHJtL3N0NzczNXIuYworRjoJRG9jdW1lbnRh dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvc3Q3NzM1ci50eHQKKwogRFJNIERSSVZF UiBGT1IgVERGWCBWSURFTyBDQVJEUwogUzoJT3JwaGFuIC8gT2Jzb2xldGUKIEY6CWRyaXZlcnMv Z3B1L2RybS90ZGZ4LwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vS2NvbmZp ZyBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL0tjb25maWcKaW5kZXggOTBjNWJkNS4uYjBlNTY3 ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vS2NvbmZpZworKysgYi9kcml2 ZXJzL2dwdS9kcm0vdGlueWRybS9LY29uZmlnCkBAIC01MiwzICs1MiwxMyBAQCBjb25maWcgVElO WURSTV9TVDc1ODYKIAkgICogTEVHTyBNSU5EU1RPUk1TIEVWMwogCiAJICBJZiBNIGlzIHNlbGVj dGVkIHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc3Q3NTg2LgorCitjb25maWcgVElOWURSTV9T VDc3MzVSCisJdHJpc3RhdGUgIkRSTSBzdXBwb3J0IGZvciBTaXRyb25peCBTVDc3MzVSIGRpc3Bs YXkgcGFuZWxzIgorCWRlcGVuZHMgb24gRFJNX1RJTllEUk0gJiYgU1BJCisJc2VsZWN0IFRJTllE Uk1fTUlQSV9EQkkKKwloZWxwCisJICBEUk0gZHJpdmVyIFNpdHJvbml4IFNUNzczNVIgd2l0aCBv bmUgb2YgdGhlIGZvbGxvd2luZyBMQ0RzOgorCSAgKiBKRC1UMTgwMDMtVDAxIDEuOCIgMTI4eDE2 MCBURlQKKworCSAgSWYgTSBpcyBzZWxlY3RlZCB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHN0 NzczNXIuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9NYWtlZmlsZSBiL2Ry aXZlcnMvZ3B1L2RybS90aW55ZHJtL01ha2VmaWxlCmluZGV4IDhhZWVlNTMuLjQ5YTExMTkgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMv Z3B1L2RybS90aW55ZHJtL01ha2VmaWxlCkBAIC04LDMgKzgsNCBAQCBvYmotJChDT05GSUdfVElO WURSTV9JTEk5MjI1KQkJKz0gaWxpOTIyNS5vCiBvYmotJChDT05GSUdfVElOWURSTV9NSTAyODNR VCkJCSs9IG1pMDI4M3F0Lm8KIG9iai0kKENPTkZJR19USU5ZRFJNX1JFUEFQRVIpCQkrPSByZXBh cGVyLm8KIG9iai0kKENPTkZJR19USU5ZRFJNX1NUNzU4NikJCSs9IHN0NzU4Ni5vCitvYmotJChD T05GSUdfVElOWURSTV9TVDc3MzVSKQkJKz0gc3Q3NzM1ci5vCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vdGlueWRybS9zdDc3MzVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9zdDc3 MzVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIwNWIyYwotLS0gL2Rl di9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL3N0NzczNXIuYwpAQCAtMCwwICsx LDIxNSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArCisvKgorICogRFJN IGRyaXZlciBmb3IgU2l0cm9uaXggU1Q3NzM1UiBwYW5lbHMKKyAqCisgKiBDb3B5cmlnaHQgMjAx NyBEYXZpZCBMZWNobmVyIDxkYXZpZEBsZWNobm9sb2d5LmNvbT4KKyAqLworCisjaW5jbHVkZSA8 bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+CisjaW5jbHVkZSA8bGlu dXgvZ3Bpby9jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUg PGxpbnV4L3Byb3BlcnR5Lmg+CisjaW5jbHVkZSA8bGludXgvc3BpL3NwaS5oPgorI2luY2x1ZGUg PHZpZGVvL21pcGlfZGlzcGxheS5oPgorCisjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4K KyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaD4KKyNpbmNsdWRlIDxk cm0vdGlueWRybS9taXBpLWRiaS5oPgorI2luY2x1ZGUgPGRybS90aW55ZHJtL3Rpbnlkcm0taGVs cGVycy5oPgorCisjZGVmaW5lIFNUNzczNVJfRlJNQ1RSMQkJMHhiMQorI2RlZmluZSBTVDc3MzVS X0ZSTUNUUjIJCTB4YjIKKyNkZWZpbmUgU1Q3NzM1Ul9GUk1DVFIzCQkweGIzCisjZGVmaW5lIFNU NzczNVJfSU5WQ1RSCQkweGI0CisjZGVmaW5lIFNUNzczNVJfUFdDVFIxCQkweGMwCisjZGVmaW5l IFNUNzczNVJfUFdDVFIyCQkweGMxCisjZGVmaW5lIFNUNzczNVJfUFdDVFIzCQkweGMyCisjZGVm aW5lIFNUNzczNVJfUFdDVFI0CQkweGMzCisjZGVmaW5lIFNUNzczNVJfUFdDVFI1CQkweGM0Cisj ZGVmaW5lIFNUNzczNVJfVk1DVFIxCQkweGM1CisjZGVmaW5lIFNUNzczNVJfR0FNQ1RSUDEJMHhl MAorI2RlZmluZSBTVDc3MzVSX0dBTUNUUk4xCTB4ZTEKKworI2RlZmluZSBTVDc3MzVSX01ZCUJJ VCg3KQorI2RlZmluZSBTVDc3MzVSX01YCUJJVCg2KQorI2RlZmluZSBTVDc3MzVSX01WCUJJVCg1 KQorCitzdGF0aWMgdm9pZCBzdDc3MzVyX3BpcGVfZW5hYmxlKHN0cnVjdCBkcm1fc2ltcGxlX2Rp c3BsYXlfcGlwZSAqcGlwZSwKKwkJCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Cit7CisJc3RydWN0IHRpbnlkcm1fZGV2aWNlICp0ZGV2ID0gcGlwZV90b190aW55ZHJtKHBpcGUp OworCXN0cnVjdCBtaXBpX2RiaSAqbWlwaSA9IG1pcGlfZGJpX2Zyb21fdGlueWRybSh0ZGV2KTsK KwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSB0ZGV2LT5kcm0tPmRldjsKKwlpbnQgcmV0OworCXU4IGFk ZHJfbW9kZTsKKworCURSTV9ERUJVR19LTVMoIlxuIik7CisKKwltaXBpX2RiaV9od19yZXNldCht aXBpKTsKKworCXJldCA9IG1pcGlfZGJpX2NvbW1hbmQobWlwaSwgTUlQSV9EQ1NfU09GVF9SRVNF VCk7CisJaWYgKHJldCkgeworCQlEUk1fREVWX0VSUk9SKGRldiwgIkVycm9yIHNlbmRpbmcgY29t bWFuZCAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuOworCX0KKworCW1zbGVlcCgxNTApOworCisJbWlw aV9kYmlfY29tbWFuZChtaXBpLCBNSVBJX0RDU19FWElUX1NMRUVQX01PREUpOworCW1zbGVlcCg1 MDApOworCisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBTVDc3MzVSX0ZSTUNUUjEsIDB4MDEsIDB4 MmMsIDB4MmQpOworCW1pcGlfZGJpX2NvbW1hbmQobWlwaSwgU1Q3NzM1Ul9GUk1DVFIyLCAweDAx LCAweDJjLCAweDJkKTsKKwltaXBpX2RiaV9jb21tYW5kKG1pcGksIFNUNzczNVJfRlJNQ1RSMywg MHgwMSwgMHgyYywgMHgyZCwgMHgwMSwgMHgyYywKKwkJCSAweDJkKTsKKwltaXBpX2RiaV9jb21t YW5kKG1pcGksIFNUNzczNVJfSU5WQ1RSLCAweDA3KTsKKwltaXBpX2RiaV9jb21tYW5kKG1pcGks IFNUNzczNVJfUFdDVFIxLCAweGEyLCAweDAyLCAweDg0KTsKKwltaXBpX2RiaV9jb21tYW5kKG1p cGksIFNUNzczNVJfUFdDVFIyLCAweGM1KTsKKwltaXBpX2RiaV9jb21tYW5kKG1pcGksIFNUNzcz NVJfUFdDVFIzLCAweDBhLCAweDAwKTsKKwltaXBpX2RiaV9jb21tYW5kKG1pcGksIFNUNzczNVJf UFdDVFI0LCAweDhhLCAweDJhKTsKKwltaXBpX2RiaV9jb21tYW5kKG1pcGksIFNUNzczNVJfUFdD VFI1LCAweDhhLCAweGVlKTsKKwltaXBpX2RiaV9jb21tYW5kKG1pcGksIFNUNzczNVJfVk1DVFIx LCAweDBlKTsKKwltaXBpX2RiaV9jb21tYW5kKG1pcGksIE1JUElfRENTX0VYSVRfSU5WRVJUX01P REUpOworCXN3aXRjaCAobWlwaS0+cm90YXRpb24pIHsKKwlkZWZhdWx0OgorCQlhZGRyX21vZGUg PSBTVDc3MzVSX01YIHwgU1Q3NzM1Ul9NWTsKKwkJYnJlYWs7CisJY2FzZSA5MDoKKwkJYWRkcl9t b2RlID0gU1Q3NzM1Ul9NWCB8IFNUNzczNVJfTVY7CisJCWJyZWFrOworCWNhc2UgMTgwOgorCQlh ZGRyX21vZGUgPSAwOworCQlicmVhazsKKwljYXNlIDI3MDoKKwkJYWRkcl9tb2RlID0gU1Q3NzM1 Ul9NWSB8IFNUNzczNVJfTVY7CisJCWJyZWFrOworCX0KKwltaXBpX2RiaV9jb21tYW5kKG1pcGks IE1JUElfRENTX1NFVF9BRERSRVNTX01PREUsIGFkZHJfbW9kZSk7CisJbWlwaV9kYmlfY29tbWFu ZChtaXBpLCBNSVBJX0RDU19TRVRfUElYRUxfRk9STUFULAorCQkJIE1JUElfRENTX1BJWEVMX0ZN VF8xNkJJVCk7CisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBTVDc3MzVSX0dBTUNUUlAxLCAweDBm LCAweDFhLCAweDBmLCAweDE4LCAweDJmLAorCQkJIDB4MjgsIDB4MjAsIDB4MjIsIDB4MWYsIDB4 MWIsIDB4MjMsIDB4MzcsIDB4MDAsIDB4MDcsCisJCQkgMHgwMiwgMHgxMCk7CisJbWlwaV9kYmlf Y29tbWFuZChtaXBpLCBTVDc3MzVSX0dBTUNUUk4xLCAweDBmLCAweDFiLCAweDBmLCAweDE3LCAw eDMzLAorCQkJIDB4MmMsIDB4MjksIDB4MmUsIDB4MzAsIDB4MzAsIDB4MzksIDB4M2YsIDB4MDAs IDB4MDcsCisJCQkgMHgwMywgMHgxMCk7CisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBNSVBJX0RD U19TRVRfRElTUExBWV9PTik7CisKKwltc2xlZXAoMTAwKTsKKworCW1pcGlfZGJpX2NvbW1hbmQo bWlwaSwgTUlQSV9EQ1NfRU5URVJfTk9STUFMX01PREUpOworCisJbXNsZWVwKDIwKTsKKworCW1p cGlfZGJpX3BpcGVfZW5hYmxlKHBpcGUsIGNydGNfc3RhdGUpOworfQorCitzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2Z1bmNzIHN0NzczNXJfcGlwZV9mdW5jcyA9 IHsKKwkuZW5hYmxlCQk9IHN0NzczNXJfcGlwZV9lbmFibGUsCisJLmRpc2FibGUJPSBtaXBpX2Ri aV9waXBlX2Rpc2FibGUsCisJLnVwZGF0ZQkJPSB0aW55ZHJtX2Rpc3BsYXlfcGlwZV91cGRhdGUs CisJLnByZXBhcmVfZmIJPSB0aW55ZHJtX2Rpc3BsYXlfcGlwZV9wcmVwYXJlX2ZiLAorfTsKKwor c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIGpkX3QxODAwM190MDFfbW9kZSA9 IHsKKwlUSU5ZRFJNX01PREUoMTI4LCAxNjAsIDI4LCAzNSksCit9OworCitERUZJTkVfRFJNX0dF TV9DTUFfRk9QUyhzdDc3MzVyX2ZvcHMpOworCitzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgc3Q3 NzM1cl9kcml2ZXIgPSB7CisJLmRyaXZlcl9mZWF0dXJlcwk9IERSSVZFUl9HRU0gfCBEUklWRVJf TU9ERVNFVCB8IERSSVZFUl9QUklNRSB8CisJCQkJICBEUklWRVJfQVRPTUlDLAorCS5mb3BzCQkJ PSAmc3Q3NzM1cl9mb3BzLAorCVRJTllEUk1fR0VNX0RSSVZFUl9PUFMsCisJLmxhc3RjbG9zZQkJ PSBkcm1fZmJfaGVscGVyX2xhc3RjbG9zZSwKKwkuZGVidWdmc19pbml0CQk9IG1pcGlfZGJpX2Rl YnVnZnNfaW5pdCwKKwkubmFtZQkJCT0gInN0NzczNXIiLAorCS5kZXNjCQkJPSAiU2l0cm9uaXgg U1Q3NzM1UiIsCisJLmRhdGUJCQk9ICIyMDE3MTEyOCIsCisJLm1ham9yCQkJPSAxLAorCS5taW5v cgkJCT0gMCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN0NzczNXJf b2ZfbWF0Y2hbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gImppYW5kYSxqZC10MTgwMDMtdDAxIiB9 LAorCXt9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN0NzczNXJfb2ZfbWF0Y2gpOwor CitzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgc3Q3NzM1cl9pZFtdID0geworCXsg ImpkLXQxODAwMy10MDEiLCAwIH0sCisJeyB9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUoc3Bp LCBzdDc3MzVyX2lkKTsKKworc3RhdGljIGludCBzdDc3MzVyX3Byb2JlKHN0cnVjdCBzcGlfZGV2 aWNlICpzcGkpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnNwaS0+ZGV2OworCXN0cnVjdCBt aXBpX2RiaSAqbWlwaTsKKwlzdHJ1Y3QgZ3Bpb19kZXNjICpkYzsKKwl1MzIgcm90YXRpb24gPSAw OworCWludCByZXQ7CisKKwltaXBpID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCptaXBpKSwg R0ZQX0tFUk5FTCk7CisJaWYgKCFtaXBpKQorCQlyZXR1cm4gLUVOT01FTTsKKworCW1pcGktPnJl c2V0ID0gZGV2bV9ncGlvZF9nZXQoZGV2LCAicmVzZXQiLCBHUElPRF9PVVRfSElHSCk7CisJaWYg KElTX0VSUihtaXBpLT5yZXNldCkpIHsKKwkJRFJNX0RFVl9FUlJPUihkZXYsICJGYWlsZWQgdG8g Z2V0IGdwaW8gJ3Jlc2V0J1xuIik7CisJCXJldHVybiBQVFJfRVJSKG1pcGktPnJlc2V0KTsKKwl9 CisKKwlkYyA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgImRjIiwgR1BJT0RfT1VUX0xPVyk7CisJaWYg KElTX0VSUihkYykpIHsKKwkJRFJNX0RFVl9FUlJPUihkZXYsICJGYWlsZWQgdG8gZ2V0IGdwaW8g J2RjJ1xuIik7CisJCXJldHVybiBQVFJfRVJSKGRjKTsKKwl9CisKKwltaXBpLT5iYWNrbGlnaHQg PSB0aW55ZHJtX29mX2ZpbmRfYmFja2xpZ2h0KGRldik7CisJaWYgKElTX0VSUihtaXBpLT5iYWNr bGlnaHQpKQorCQlyZXR1cm4gUFRSX0VSUihtaXBpLT5iYWNrbGlnaHQpOworCisJZGV2aWNlX3By b3BlcnR5X3JlYWRfdTMyKGRldiwgInJvdGF0aW9uIiwgJnJvdGF0aW9uKTsKKworCXJldCA9IG1p cGlfZGJpX3NwaV9pbml0KHNwaSwgbWlwaSwgZGMpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7 CisKKwkvKiBDYW5ub3QgcmVhZCBmcm9tIEFkYWZydWl0IDEuOCIgZGlzcGxheSB2aWEgU1BJICov CisJbWlwaS0+cmVhZF9jb21tYW5kcyA9IE5VTEw7CisKKwlyZXQgPSBtaXBpX2RiaV9pbml0KCZz cGktPmRldiwgbWlwaSwgJnN0NzczNXJfcGlwZV9mdW5jcywKKwkJCSAgICAmc3Q3NzM1cl9kcml2 ZXIsICZqZF90MTgwMDNfdDAxX21vZGUsIHJvdGF0aW9uKTsKKwlpZiAocmV0KQorCQlyZXR1cm4g cmV0OworCisJc3BpX3NldF9kcnZkYXRhKHNwaSwgbWlwaSk7CisKKwlyZXR1cm4gZGV2bV90aW55 ZHJtX3JlZ2lzdGVyKCZtaXBpLT50aW55ZHJtKTsKK30KKworc3RhdGljIHZvaWQgc3Q3NzM1cl9z aHV0ZG93bihzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQoreworCXN0cnVjdCBtaXBpX2RiaSAqbWlw aSA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOworCisJdGlueWRybV9zaHV0ZG93bigmbWlwaS0+dGlu eWRybSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBzdDc3MzVyX3NwaV9kcml2ZXIg PSB7CisJLmRyaXZlciA9IHsKKwkJLm5hbWUgPSAic3Q3NzM1ciIsCisJCS5vd25lciA9IFRISVNf TU9EVUxFLAorCQkub2ZfbWF0Y2hfdGFibGUgPSBzdDc3MzVyX29mX21hdGNoLAorCX0sCisJLmlk X3RhYmxlID0gc3Q3NzM1cl9pZCwKKwkucHJvYmUgPSBzdDc3MzVyX3Byb2JlLAorCS5zaHV0ZG93 biA9IHN0NzczNXJfc2h1dGRvd24sCit9OworbW9kdWxlX3NwaV9kcml2ZXIoc3Q3NzM1cl9zcGlf ZHJpdmVyKTsKKworTU9EVUxFX0RFU0NSSVBUSU9OKCJTaXRyb25peCBTVDc3MzVSIERSTSBkcml2 ZXIiKTsKK01PRFVMRV9BVVRIT1IoIkRhdmlkIExlY2huZXIgPGRhdmlkQGxlY2hub2xvZ3kuY29t PiIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=