From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Lechner Subject: [PATCH v1 2/2] drm/tinydrm: add driver for ST7735R panels Date: Tue, 28 Nov 2017 21:01:09 -0600 Message-ID: <1511924469-11448-3-git-send-email-david@lechnology.com> References: <1511924469-11448-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: <1511924469-11448-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+Ci0tLQogTUFJ TlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIGRyaXZlcnMvZ3B1L2RybS90 aW55ZHJtL0tjb25maWcgICB8ICAxMCArKwogZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vTWFrZWZp bGUgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS90aW55ZHJtL3N0NzczNXIuYyB8IDIzNyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAyNTQg aW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS90aW55ZHJt L3N0NzczNXIuYwoKZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXgg YTE3NDYzMi4uOWM3NzA3ZSAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5F UlMKQEAgLTQ0NjIsNiArNDQ2MiwxMiBAQCBTOglNYWludGFpbmVkCiBGOglkcml2ZXJzL2dwdS9k cm0vdGlueWRybS9zdDc1ODYuYwogRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz L2Rpc3BsYXkvc3Q3NTg2LnR4dAogCitEUk0gRFJJVkVSIEZPUiBTSVRST05JWCBTVDc3MzVSIFBB TkVMUworTToJRGF2aWQgTGVjaG5lciA8ZGF2aWRAbGVjaG5vbG9neS5jb20+CitTOglNYWludGFp bmVkCitGOglkcml2ZXJzL2dwdS9kcm0vdGlueWRybS9zdDc3MzVyLmMKK0Y6CURvY3VtZW50YXRp b24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3N0NzczNXIudHh0CisKIERSTSBEUklWRVIg Rk9SIFRERlggVklERU8gQ0FSRFMKIFM6CU9ycGhhbiAvIE9ic29sZXRlCiBGOglkcml2ZXJzL2dw dS9kcm0vdGRmeC8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL0tjb25maWcg Yi9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9LY29uZmlnCmluZGV4IDkwYzViZDUuLmIwZTU2N2Qg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL0tjb25maWcKKysrIGIvZHJpdmVy cy9ncHUvZHJtL3Rpbnlkcm0vS2NvbmZpZwpAQCAtNTIsMyArNTIsMTMgQEAgY29uZmlnIFRJTllE Uk1fU1Q3NTg2CiAJICAqIExFR08gTUlORFNUT1JNUyBFVjMKIAogCSAgSWYgTSBpcyBzZWxlY3Rl ZCB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHN0NzU4Ni4KKworY29uZmlnIFRJTllEUk1fU1Q3 NzM1UgorCXRyaXN0YXRlICJEUk0gc3VwcG9ydCBmb3IgU2l0cm9uaXggU1Q3NzM1UiBkaXNwbGF5 IHBhbmVscyIKKwlkZXBlbmRzIG9uIERSTV9USU5ZRFJNICYmIFNQSQorCXNlbGVjdCBUSU5ZRFJN X01JUElfREJJCisJaGVscAorCSAgRFJNIGRyaXZlciBTaXRyb25peCBTVDc3MzVSIHdpdGggb25l IG9mIHRoZSBmb2xsb3dpbmcgTENEczoKKwkgICogSkQtVDE4MDAzLVQwMSAxLjgiIDEyOHgxNjAg VEZUCisKKwkgIElmIE0gaXMgc2VsZWN0ZWQgdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzdDc3 MzVyLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vTWFrZWZpbGUgYi9kcml2 ZXJzL2dwdS9kcm0vdGlueWRybS9NYWtlZmlsZQppbmRleCA4YWVlZTUzLi40OWExMTE5IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dw dS9kcm0vdGlueWRybS9NYWtlZmlsZQpAQCAtOCwzICs4LDQgQEAgb2JqLSQoQ09ORklHX1RJTllE Uk1fSUxJOTIyNSkJCSs9IGlsaTkyMjUubwogb2JqLSQoQ09ORklHX1RJTllEUk1fTUkwMjgzUVQp CQkrPSBtaTAyODNxdC5vCiBvYmotJChDT05GSUdfVElOWURSTV9SRVBBUEVSKQkJKz0gcmVwYXBl ci5vCiBvYmotJChDT05GSUdfVElOWURSTV9TVDc1ODYpCQkrPSBzdDc1ODYubworb2JqLSQoQ09O RklHX1RJTllEUk1fU1Q3NzM1UikJCSs9IHN0NzczNXIubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3Rpbnlkcm0vc3Q3NzM1ci5jIGIvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vc3Q3NzM1 ci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MzViMDAKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9zdDc3MzVyLmMKQEAgLTAsMCArMSwy MzcgQEAKKy8qCisgKiBEUk0gZHJpdmVyIGZvciBTaXRyb25peCBTVDc3MzVSIHBhbmVscworICoK KyAqIENvcHlyaWdodCAyMDE3IERhdmlkIExlY2huZXIgPGRhdmlkQGxlY2hub2xvZ3kuY29tPgor ICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2Rl bGF5Lmg+CisjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgorI2luY2x1ZGUgPGxpbnV4L2dwaW8v Y29uc3VtZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9w cm9wZXJ0eS5oPgorI2luY2x1ZGUgPGxpbnV4L3NwaS9zcGkuaD4KKyNpbmNsdWRlIDx2aWRlby9t aXBpX2Rpc3BsYXkuaD4KKworI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBl ci5oPgorI2luY2x1ZGUgPGRybS90aW55ZHJtL21pcGktZGJpLmg+CisjaW5jbHVkZSA8ZHJtL3Rp bnlkcm0vdGlueWRybS1oZWxwZXJzLmg+CisKKyNkZWZpbmUgU1Q3NzM1Ul9GUk1DVFIxCQkweGIx CisjZGVmaW5lIFNUNzczNVJfRlJNQ1RSMgkJMHhiMgorI2RlZmluZSBTVDc3MzVSX0ZSTUNUUjMJ CTB4YjMKKyNkZWZpbmUgU1Q3NzM1Ul9JTlZDVFIJCTB4YjQKKyNkZWZpbmUgU1Q3NzM1Ul9QV0NU UjEJCTB4YzAKKyNkZWZpbmUgU1Q3NzM1Ul9QV0NUUjIJCTB4YzEKKyNkZWZpbmUgU1Q3NzM1Ul9Q V0NUUjMJCTB4YzIKKyNkZWZpbmUgU1Q3NzM1Ul9QV0NUUjQJCTB4YzMKKyNkZWZpbmUgU1Q3NzM1 Ul9QV0NUUjUJCTB4YzQKKyNkZWZpbmUgU1Q3NzM1Ul9WTUNUUjEJCTB4YzUKKyNkZWZpbmUgU1Q3 NzM1Ul9HQU1DVFJQMQkweGUwCisjZGVmaW5lIFNUNzczNVJfR0FNQ1RSTjEJMHhlMQorCisjZGVm aW5lIFNUNzczNVJfTVkJQklUKDcpCisjZGVmaW5lIFNUNzczNVJfTVgJQklUKDYpCisjZGVmaW5l IFNUNzczNVJfTVYJQklUKDUpCisKK3N0YXRpYyB2b2lkIHN0NzczNXJfcGlwZV9lbmFibGUoc3Ry dWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlLAorCQkJCXN0cnVjdCBkcm1fY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKK3sKKwlzdHJ1Y3QgdGlueWRybV9kZXZpY2UgKnRkZXYgPSBwaXBl X3RvX3Rpbnlkcm0ocGlwZSk7CisJc3RydWN0IG1pcGlfZGJpICptaXBpID0gbWlwaV9kYmlfZnJv bV90aW55ZHJtKHRkZXYpOworCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGlwZS0+cGxh bmUuZmI7CisJc3RydWN0IGRldmljZSAqZGV2ID0gdGRldi0+ZHJtLT5kZXY7CisJaW50IHJldDsK Kwl1OCBhZGRyX21vZGU7CisKKwlEUk1fREVCVUdfS01TKCJcbiIpOworCisJbWlwaV9kYmlfaHdf cmVzZXQobWlwaSk7CisKKwlyZXQgPSBtaXBpX2RiaV9jb21tYW5kKG1pcGksIE1JUElfRENTX1NP RlRfUkVTRVQpOworCWlmIChyZXQpIHsKKwkJRFJNX0RFVl9FUlJPUihkZXYsICJFcnJvciBzZW5k aW5nIGNvbW1hbmQgJWRcbiIsIHJldCk7CisJCXJldHVybjsKKwl9CisKKwltc2xlZXAoMTUwKTsK KworCW1pcGlfZGJpX2NvbW1hbmQobWlwaSwgTUlQSV9EQ1NfRVhJVF9TTEVFUF9NT0RFKTsKKwlt c2xlZXAoNTAwKTsKKworCW1pcGlfZGJpX2NvbW1hbmQobWlwaSwgU1Q3NzM1Ul9GUk1DVFIxLCAw eDAxLCAweDJjLCAweDJkKTsKKwltaXBpX2RiaV9jb21tYW5kKG1pcGksIFNUNzczNVJfRlJNQ1RS MiwgMHgwMSwgMHgyYywgMHgyZCk7CisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBTVDc3MzVSX0ZS TUNUUjMsIDB4MDEsIDB4MmMsIDB4MmQsIDB4MDEsIDB4MmMsCisJCQkgMHgyZCk7CisJbWlwaV9k YmlfY29tbWFuZChtaXBpLCBTVDc3MzVSX0lOVkNUUiwgMHgwNyk7CisJbWlwaV9kYmlfY29tbWFu ZChtaXBpLCBTVDc3MzVSX1BXQ1RSMSwgMHhhMiwgMHgwMiwgMHg4NCk7CisJbWlwaV9kYmlfY29t bWFuZChtaXBpLCBTVDc3MzVSX1BXQ1RSMiwgMHhjNSk7CisJbWlwaV9kYmlfY29tbWFuZChtaXBp LCBTVDc3MzVSX1BXQ1RSMywgMHgwYSwgMHgwMCk7CisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBT VDc3MzVSX1BXQ1RSNCwgMHg4YSwgMHgyYSk7CisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBTVDc3 MzVSX1BXQ1RSNSwgMHg4YSwgMHhlZSk7CisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBTVDc3MzVS X1ZNQ1RSMSwgMHgwZSk7CisJbWlwaV9kYmlfY29tbWFuZChtaXBpLCBNSVBJX0RDU19FWElUX0lO VkVSVF9NT0RFKTsKKwlzd2l0Y2ggKG1pcGktPnJvdGF0aW9uKSB7CisJZGVmYXVsdDoKKwkJYWRk cl9tb2RlID0gU1Q3NzM1Ul9NWCB8IFNUNzczNVJfTVk7CisJCWJyZWFrOworCWNhc2UgOTA6CisJ CWFkZHJfbW9kZSA9IFNUNzczNVJfTVggfCBTVDc3MzVSX01WOworCQlicmVhazsKKwljYXNlIDE4 MDoKKwkJYWRkcl9tb2RlID0gMDsKKwkJYnJlYWs7CisJY2FzZSAyNzA6CisJCWFkZHJfbW9kZSA9 IFNUNzczNVJfTVkgfCBTVDc3MzVSX01WOworCQlicmVhazsKKwl9CisJbWlwaV9kYmlfY29tbWFu ZChtaXBpLCBNSVBJX0RDU19TRVRfQUREUkVTU19NT0RFLCBhZGRyX21vZGUpOworCW1pcGlfZGJp X2NvbW1hbmQobWlwaSwgTUlQSV9EQ1NfU0VUX1BJWEVMX0ZPUk1BVCwKKwkJCSBNSVBJX0RDU19Q SVhFTF9GTVRfMTZCSVQpOworCW1pcGlfZGJpX2NvbW1hbmQobWlwaSwgU1Q3NzM1Ul9HQU1DVFJQ MSwgMHgwZiwgMHgxYSwgMHgwZiwgMHgxOCwgMHgyZiwKKwkJCSAweDI4LCAweDIwLCAweDIyLCAw eDFmLCAweDFiLCAweDIzLCAweDM3LCAweDAwLCAweDA3LAorCQkJIDB4MDIsIDB4MTApOworCW1p cGlfZGJpX2NvbW1hbmQobWlwaSwgU1Q3NzM1Ul9HQU1DVFJOMSwgMHgwZiwgMHgxYiwgMHgwZiwg MHgxNywgMHgzMywKKwkJCSAweDJjLCAweDI5LCAweDJlLCAweDMwLCAweDMwLCAweDM5LCAweDNm LCAweDAwLCAweDA3LAorCQkJIDB4MDMsIDB4MTApOworCW1pcGlfZGJpX2NvbW1hbmQobWlwaSwg TUlQSV9EQ1NfU0VUX0RJU1BMQVlfT04pOworCisJbXNsZWVwKDEwMCk7CisKKwltaXBpX2RiaV9j b21tYW5kKG1pcGksIE1JUElfRENTX0VOVEVSX05PUk1BTF9NT0RFKTsKKworCW1zbGVlcCgxMCk7 CisKKwltaXBpLT5lbmFibGVkID0gdHJ1ZTsKKworCWlmIChmYikKKwkJZmItPmZ1bmNzLT5kaXJ0 eShmYiwgTlVMTCwgMCwgMCwgTlVMTCwgMCk7CisKKwl0aW55ZHJtX2VuYWJsZV9iYWNrbGlnaHQo bWlwaS0+YmFja2xpZ2h0KTsKK30KKworc3RhdGljIHZvaWQgc3Q3NzM1cl9waXBlX2Rpc2FibGUo c3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlKQoreworCXN0cnVjdCB0aW55ZHJt X2RldmljZSAqdGRldiA9IHBpcGVfdG9fdGlueWRybShwaXBlKTsKKwlzdHJ1Y3QgbWlwaV9kYmkg Km1pcGkgPSBtaXBpX2RiaV9mcm9tX3Rpbnlkcm0odGRldik7CisKKwlEUk1fREVCVUdfS01TKCJc biIpOworCisJaWYgKCFtaXBpLT5lbmFibGVkKQorCQlyZXR1cm47CisKKwl0aW55ZHJtX2Rpc2Fi bGVfYmFja2xpZ2h0KG1pcGktPmJhY2tsaWdodCk7CisKKwltaXBpX2RiaV9jb21tYW5kKG1pcGks IE1JUElfRENTX1NFVF9ESVNQTEFZX09GRik7CisKKwltaXBpLT5lbmFibGVkID0gZmFsc2U7Cit9 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGVfZnVuY3Mgc3Q3 NzM1cl9waXBlX2Z1bmNzID0geworCS5lbmFibGUJCT0gc3Q3NzM1cl9waXBlX2VuYWJsZSwKKwku ZGlzYWJsZQk9IHN0NzczNXJfcGlwZV9kaXNhYmxlLAorCS51cGRhdGUJCT0gdGlueWRybV9kaXNw bGF5X3BpcGVfdXBkYXRlLAorCS5wcmVwYXJlX2ZiCT0gdGlueWRybV9kaXNwbGF5X3BpcGVfcHJl cGFyZV9mYiwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBzdDc3 MzVyX21vZGUgPSB7CisJVElOWURSTV9NT0RFKDEyOCwgMTYwLCAyOCwgMzUpLAorfTsKKworREVG SU5FX0RSTV9HRU1fQ01BX0ZPUFMoc3Q3NzM1cl9mb3BzKTsKKworc3RhdGljIHN0cnVjdCBkcm1f ZHJpdmVyIHN0NzczNXJfZHJpdmVyID0geworCS5kcml2ZXJfZmVhdHVyZXMJPSBEUklWRVJfR0VN IHwgRFJJVkVSX01PREVTRVQgfCBEUklWRVJfUFJJTUUgfAorCQkJCSAgRFJJVkVSX0FUT01JQywK KwkuZm9wcwkJCT0gJnN0NzczNXJfZm9wcywKKwlUSU5ZRFJNX0dFTV9EUklWRVJfT1BTLAorCS5s YXN0Y2xvc2UJCT0gdGlueWRybV9sYXN0Y2xvc2UsCisJLm5hbWUJCQk9ICJzdDc3MzVyIiwKKwku ZGVzYwkJCT0gIlNpdHJvbml4IFNUNzczNVIiLAorCS5kYXRlCQkJPSAiMjAxNzExMjgiLAorCS5t YWpvcgkJCT0gMSwKKwkubWlub3IJCQk9IDAsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IG9m X2RldmljZV9pZCBzdDc3MzVyX29mX21hdGNoW10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJzaXRy b25peCxzdDc3MzVyLWpkLXQxODAwMy10MDEiIH0sCisJe30sCit9OworTU9EVUxFX0RFVklDRV9U QUJMRShvZiwgc3Q3NzM1cl9vZl9tYXRjaCk7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2Rl dmljZV9pZCBzdDc3MzVyX2lkW10gPSB7CisJeyAic3Q3NzM1ci1qZC10MTgwMDMtdDAxIiwgMCB9 LAorCXsgfSwKK307CitNT0RVTEVfREVWSUNFX1RBQkxFKHNwaSwgc3Q3NzM1cl9pZCk7CisKK3N0 YXRpYyBpbnQgc3Q3NzM1cl9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQoreworCXN0cnVj dCBkZXZpY2UgKmRldiA9ICZzcGktPmRldjsKKwlzdHJ1Y3QgbWlwaV9kYmkgKm1pcGk7CisJc3Ry dWN0IGdwaW9fZGVzYyAqZGM7CisJdTMyIHJvdGF0aW9uID0gMDsKKwlpbnQgcmV0OworCisJbWlw aSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqbWlwaSksIEdGUF9LRVJORUwpOworCWlmICgh bWlwaSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwltaXBpLT5yZXNldCA9IGRldm1fZ3Bpb2RfZ2V0 KGRldiwgInJlc2V0IiwgR1BJT0RfT1VUX0hJR0gpOworCWlmIChJU19FUlIobWlwaS0+cmVzZXQp KSB7CisJCURSTV9ERVZfRVJST1IoZGV2LCAiRmFpbGVkIHRvIGdldCBncGlvICdyZXNldCdcbiIp OworCQlyZXR1cm4gUFRSX0VSUihtaXBpLT5yZXNldCk7CisJfQorCisJZGMgPSBkZXZtX2dwaW9k X2dldChkZXYsICJkYyIsIEdQSU9EX09VVF9MT1cpOworCWlmIChJU19FUlIoZGMpKSB7CisJCURS TV9ERVZfRVJST1IoZGV2LCAiRmFpbGVkIHRvIGdldCBncGlvICdkYydcbiIpOworCQlyZXR1cm4g UFRSX0VSUihkYyk7CisJfQorCisJbWlwaS0+YmFja2xpZ2h0ID0gdGlueWRybV9vZl9maW5kX2Jh Y2tsaWdodChkZXYpOworCWlmIChJU19FUlIobWlwaS0+YmFja2xpZ2h0KSkKKwkJcmV0dXJuIFBU Ul9FUlIobWlwaS0+YmFja2xpZ2h0KTsKKworCWRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYs ICJyb3RhdGlvbiIsICZyb3RhdGlvbik7CisKKwlyZXQgPSBtaXBpX2RiaV9zcGlfaW5pdChzcGks IG1pcGksIGRjKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gbWlwaV9kYmlf aW5pdCgmc3BpLT5kZXYsIG1pcGksICZzdDc3MzVyX3BpcGVfZnVuY3MsCisJCQkgICAgJnN0Nzcz NXJfZHJpdmVyLCAmc3Q3NzM1cl9tb2RlLCByb3RhdGlvbik7CisJaWYgKHJldCkKKwkJcmV0dXJu IHJldDsKKworCXNwaV9zZXRfZHJ2ZGF0YShzcGksIG1pcGkpOworCisJcmV0dXJuIGRldm1fdGlu eWRybV9yZWdpc3RlcigmbWlwaS0+dGlueWRybSk7Cit9CisKK3N0YXRpYyB2b2lkIHN0NzczNXJf c2h1dGRvd24oc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3sKKwlzdHJ1Y3QgbWlwaV9kYmkgKm1p cGkgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKKworCXRpbnlkcm1fc2h1dGRvd24oJm1pcGktPnRp bnlkcm0pOworfQorCitzdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgc3Q3NzM1cl9zcGlfZHJpdmVy ID0geworCS5kcml2ZXIgPSB7CisJCS5uYW1lID0gInN0NzczNXIiLAorCQkub3duZXIgPSBUSElT X01PRFVMRSwKKwkJLm9mX21hdGNoX3RhYmxlID0gc3Q3NzM1cl9vZl9tYXRjaCwKKwl9LAorCS5p ZF90YWJsZSA9IHN0NzczNXJfaWQsCisJLnByb2JlID0gc3Q3NzM1cl9wcm9iZSwKKwkuc2h1dGRv d24gPSBzdDc3MzVyX3NodXRkb3duLAorfTsKK21vZHVsZV9zcGlfZHJpdmVyKHN0NzczNXJfc3Bp X2RyaXZlcik7CisKK01PRFVMRV9ERVNDUklQVElPTigiU2l0cm9uaXggU1Q3NzM1UiBEUk0gZHJp dmVyIik7CitNT0RVTEVfQVVUSE9SKCJEYXZpZCBMZWNobmVyIDxkYXZpZEBsZWNobm9sb2d5LmNv bT4iKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK