From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Lechner Subject: [PATCH v2 4/4] drm/tinydrm: add driver for ILI9225 panels Date: Sun, 19 Nov 2017 14:12:08 -0600 Message-ID: <1511122328-31133-5-git-send-email-david@lechnology.com> References: <1511122328-31133-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: <1511122328-31133-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 , David Lechner , Rob Herring , linux-kernel@vger.kernel.org List-Id: devicetree@vger.kernel.org VGhpcyBhZGRzIGEgbmV3IGRyaXZlciBmb3IgZGlzcGxheSBwYW5lbHMgYmFzZWQgb24gdGhlIEls aXRlayBJTEk5MjI1CmNvbnRyb2xsZXIuCgpUaGlzIHdhcyBkZXZlbG9wZWQgZm9yIGEgbm8tbmFt ZSBwYW5lbCB3aXRoIGEgcmVkIFBDQiB0aGF0IGlzIGNvbW1vbmx5Cm1hcmtldGVkIGZvciBBcmR1 aW5vLiBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9Oa2F3dS9URlRfMjJfSUxJOTIyNT4uCgpTaWdu ZWQtb2ZmLWJ5OiBEYXZpZCBMZWNobmVyIDxkYXZpZEBsZWNobm9sb2d5LmNvbT4KLS0tCgp2MiBj aGFuZ2VzOgoqIHVzZSBleHBvcnRlZCBtaXBpX2RiaV8qIGZ1bmN0aW9ucyBmcm9tIHBhdGNoIDMv NAoqIG5ldyBpbGk5MjI1X2NvbW1hbmQgZnVuY3Rpb24KCiBNQUlOVEFJTkVSUyAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDYgKwogZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vS2NvbmZpZyAgIHwg IDEwICsKIGRyaXZlcnMvZ3B1L2RybS90aW55ZHJtL01ha2VmaWxlICB8ICAgMSArCiBkcml2ZXJz L2dwdS9kcm0vdGlueWRybS9pbGk5MjI1LmMgfCA0NjggKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgNDg1IGluc2VydGlvbnMoKykKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vdGlueWRybS9pbGk5MjI1LmMKCmRpZmYgLS1n aXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IDBkNzdmMjIuLjcyNDA0ZjMgMTAw NjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBAIC00MzcyLDYgKzQzNzIs MTIgQEAgVDoJZ2l0IGdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2RybS9kcm0tbWlzYwog UzoJTWFpbnRhaW5lZAogRjoJZHJpdmVycy9ncHUvZHJtL3R2ZTIwMC8KIAorRFJNIERSSVZFUiBG T1IgSUxJVEVLIElMSTkyMjUgUEFORUxTCitNOglEYXZpZCBMZWNobmVyIDxkYXZpZEBsZWNobm9s b2d5LmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvZ3B1L2RybS90aW55ZHJtL2lsaTky MjUuYworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvaWxpOTIy NS50eHQKKwogRFJNIERSSVZFUiBGT1IgSU5URUwgSTgxMCBWSURFTyBDQVJEUwogUzoJT3JwaGFu IC8gT2Jzb2xldGUKIEY6CWRyaXZlcnMvZ3B1L2RybS9pODEwLwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3Rpbnlkcm0vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL0tjb25m aWcKaW5kZXggMmU3OTBlNy4uOTBjNWJkNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Rp bnlkcm0vS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9LY29uZmlnCkBAIC0x Miw2ICsxMiwxNiBAQCBtZW51Y29uZmlnIERSTV9USU5ZRFJNCiBjb25maWcgVElOWURSTV9NSVBJ X0RCSQogCXRyaXN0YXRlCiAKK2NvbmZpZyBUSU5ZRFJNX0lMSTkyMjUKKwl0cmlzdGF0ZSAiRFJN IHN1cHBvcnQgZm9yIElMSTkyMjUgZGlzcGxheSBwYW5lbHMiCisJZGVwZW5kcyBvbiBEUk1fVElO WURSTSAmJiBTUEkKKwlzZWxlY3QgVElOWURSTV9NSVBJX0RCSQorCWhlbHAKKwkgIERSTSBkcml2 ZXIgZm9yIHRoZSBmb2xsb3dpbmcgSWxpdGVrIElMSTkyMjUgcGFuZWxzOgorCSAgKiBOby1uYW1l IDIuMiIgY29sb3Igc2NyZWVuIG1vZHVsZQorCisJICBJZiBNIGlzIHNlbGVjdGVkIHRoZSBtb2R1 bGUgd2lsbCBiZSBjYWxsZWQgaWxpOTIyNS4KKwogY29uZmlnIFRJTllEUk1fTUkwMjgzUVQKIAl0 cmlzdGF0ZSAiRFJNIHN1cHBvcnQgZm9yIE1JMDI4M1FUIgogCWRlcGVuZHMgb24gRFJNX1RJTllE Uk0gJiYgU1BJCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9NYWtlZmlsZSBi L2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL01ha2VmaWxlCmluZGV4IDBjMTg0YmQuLjhhZWVlNTMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL01ha2VmaWxlCisrKyBiL2RyaXZl cnMvZ3B1L2RybS90aW55ZHJtL01ha2VmaWxlCkBAIC00LDYgKzQsNyBAQCBvYmotJChDT05GSUdf RFJNX1RJTllEUk0pCQkrPSBjb3JlLwogb2JqLSQoQ09ORklHX1RJTllEUk1fTUlQSV9EQkkpCQkr PSBtaXBpLWRiaS5vCiAKICMgRGlzcGxheXMKK29iai0kKENPTkZJR19USU5ZRFJNX0lMSTkyMjUp CQkrPSBpbGk5MjI1Lm8KIG9iai0kKENPTkZJR19USU5ZRFJNX01JMDI4M1FUKQkJKz0gbWkwMjgz cXQubwogb2JqLSQoQ09ORklHX1RJTllEUk1fUkVQQVBFUikJCSs9IHJlcGFwZXIubwogb2JqLSQo Q09ORklHX1RJTllEUk1fU1Q3NTg2KQkJKz0gc3Q3NTg2Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS90aW55ZHJtL2lsaTkyMjUuYyBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL2lsaTky MjUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjc2NmEyCi0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vaWxpOTIyNS5jCkBAIC0wLDAgKzEs NDY4IEBACisvKgorICogRFJNIGRyaXZlciBmb3IgSWxpdGVrIElMSTkyMjUgcGFuZWxzCisgKgor ICogQ29weXJpZ2h0IDIwMTcgRGF2aWQgTGVjaG5lciA8ZGF2aWRAbGVjaG5vbG9neS5jb20+Cisg KgorICogU29tZSBjb2RlIGNvcGllZCBmcm9tIG1pcGktZGJpLmMKKyAqIENvcHlyaWdodCAyMDE2 IE5vcmFsZiBUcsO4bm5lcworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICog dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGlj ZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKwor I2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgorI2lu Y2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4K KyNpbmNsdWRlIDxsaW51eC9wcm9wZXJ0eS5oPgorI2luY2x1ZGUgPGxpbnV4L3NwaS9zcGkuaD4K KyNpbmNsdWRlIDx2aWRlby9taXBpX2Rpc3BsYXkuaD4KKworI2luY2x1ZGUgPGRybS9kcm1fZ2Vt X2ZyYW1lYnVmZmVyX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS90aW55ZHJtL21pcGktZGJpLmg+ CisjaW5jbHVkZSA8ZHJtL3Rpbnlkcm0vdGlueWRybS1oZWxwZXJzLmg+CisKKyNkZWZpbmUgSUxJ OTIyNV9EUklWRVJfUkVBRF9DT0RFCTB4MDAKKyNkZWZpbmUgSUxJOTIyNV9EUklWRVJfT1VUUFVU X0NPTlRST0wJMHgwMQorI2RlZmluZSBJTEk5MjI1X0xDRF9BQ19EUklWSU5HX0NPTlRST0wJMHgw MgorI2RlZmluZSBJTEk5MjI1X0VOVFJZX01PREUJCTB4MDMKKyNkZWZpbmUgSUxJOTIyNV9ESVNQ TEFZX0NPTlRST0xfMQkweDA3CisjZGVmaW5lIElMSTkyMjVfQkxBTktfUEVSSU9EX0NPTlRST0xf MQkweDA4CisjZGVmaW5lIElMSTkyMjVfRlJBTUVfQ1lDTEVfQ09OVFJPTAkweDBiCisjZGVmaW5l IElMSTkyMjVfSU5URVJGQUNFX0NPTlRST0wJMHgwYworI2RlZmluZSBJTEk5MjI1X09TQ0lMTEFU SU9OX0NPTlRST0wJMHgwZgorI2RlZmluZSBJTEk5MjI1X1BPV0VSX0NPTlRST0xfMQkJMHgxMAor I2RlZmluZSBJTEk5MjI1X1BPV0VSX0NPTlRST0xfMgkJMHgxMQorI2RlZmluZSBJTEk5MjI1X1BP V0VSX0NPTlRST0xfMwkJMHgxMgorI2RlZmluZSBJTEk5MjI1X1BPV0VSX0NPTlRST0xfNAkJMHgx MworI2RlZmluZSBJTEk5MjI1X1BPV0VSX0NPTlRST0xfNQkJMHgxNAorI2RlZmluZSBJTEk5MjI1 X1ZDSV9SRUNZQ0xJTkcJCTB4MTUKKyNkZWZpbmUgSUxJOTIyNV9SQU1fQUREUkVTU19TRVRfMQkw eDIwCisjZGVmaW5lIElMSTkyMjVfUkFNX0FERFJFU1NfU0VUXzIJMHgyMQorI2RlZmluZSBJTEk5 MjI1X1dSSVRFX0RBVEFfVE9fR1JBTQkweDIyCisjZGVmaW5lIElMSTkyMjVfU09GVFdBUkVfUkVT RVQJCTB4MjgKKyNkZWZpbmUgSUxJOTIyNV9HQVRFX1NDQU5fQ09OVFJPTAkweDMwCisjZGVmaW5l IElMSTkyMjVfVkVSVElDQUxfU0NST0xMXzEJMHgzMQorI2RlZmluZSBJTEk5MjI1X1ZFUlRJQ0FM X1NDUk9MTF8yCTB4MzIKKyNkZWZpbmUgSUxJOTIyNV9WRVJUSUNBTF9TQ1JPTExfMwkweDMzCisj ZGVmaW5lIElMSTkyMjVfUEFSVElBTF9EUklWSU5HX1BPU18xCTB4MzQKKyNkZWZpbmUgSUxJOTIy NV9QQVJUSUFMX0RSSVZJTkdfUE9TXzIJMHgzNQorI2RlZmluZSBJTEk5MjI1X0hPUklaX1dJTkRP V19BRERSXzEJMHgzNgorI2RlZmluZSBJTEk5MjI1X0hPUklaX1dJTkRPV19BRERSXzIJMHgzNwor I2RlZmluZSBJTEk5MjI1X1ZFUlRfV0lORE9XX0FERFJfMQkweDM4CisjZGVmaW5lIElMSTkyMjVf VkVSVF9XSU5ET1dfQUREUl8yCTB4MzkKKyNkZWZpbmUgSUxJOTIyNV9HQU1NQV9DT05UUk9MXzEJ CTB4NTAKKyNkZWZpbmUgSUxJOTIyNV9HQU1NQV9DT05UUk9MXzIJCTB4NTEKKyNkZWZpbmUgSUxJ OTIyNV9HQU1NQV9DT05UUk9MXzMJCTB4NTIKKyNkZWZpbmUgSUxJOTIyNV9HQU1NQV9DT05UUk9M XzQJCTB4NTMKKyNkZWZpbmUgSUxJOTIyNV9HQU1NQV9DT05UUk9MXzUJCTB4NTQKKyNkZWZpbmUg SUxJOTIyNV9HQU1NQV9DT05UUk9MXzYJCTB4NTUKKyNkZWZpbmUgSUxJOTIyNV9HQU1NQV9DT05U Uk9MXzcJCTB4NTYKKyNkZWZpbmUgSUxJOTIyNV9HQU1NQV9DT05UUk9MXzgJCTB4NTcKKyNkZWZp bmUgSUxJOTIyNV9HQU1NQV9DT05UUk9MXzkJCTB4NTgKKyNkZWZpbmUgSUxJOTIyNV9HQU1NQV9D T05UUk9MXzEwCTB4NTkKKworc3RhdGljIGlubGluZSBpbnQgaWxpOTIyNV9jb21tYW5kKHN0cnVj dCBtaXBpX2RiaSAqbWlwaSwgdTggY21kLCB1MTYgZGF0YSkKK3sKKwl1OCBwYXJbMl0gPSB7IGRh dGEgPj4gOCwgZGF0YSAmIDB4ZmYgfTsKKworCXJldHVybiBtaXBpX2RiaV9jb21tYW5kX2J1Ziht aXBpLCBjbWQsIHBhciwgMik7Cit9CisKK3N0YXRpYyBpbnQgaWxpOTIyNV9mYl9kaXJ0eShzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKKwkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJp diwgdW5zaWduZWQgaW50IGZsYWdzLAorCQkJICAgIHVuc2lnbmVkIGludCBjb2xvciwgc3RydWN0 IGRybV9jbGlwX3JlY3QgKmNsaXBzLAorCQkJICAgIHVuc2lnbmVkIGludCBudW1fY2xpcHMpCit7 CisJc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqY21hX29iaiA9IGRybV9mYl9jbWFfZ2V0X2dl bV9vYmooZmIsIDApOworCXN0cnVjdCB0aW55ZHJtX2RldmljZSAqdGRldiA9IGZiLT5kZXYtPmRl dl9wcml2YXRlOworCXN0cnVjdCBtaXBpX2RiaSAqbWlwaSA9IG1pcGlfZGJpX2Zyb21fdGlueWRy bSh0ZGV2KTsKKwlib29sIHN3YXAgPSBtaXBpLT5zd2FwX2J5dGVzOworCXN0cnVjdCBkcm1fY2xp cF9yZWN0IGNsaXA7CisJdTE2IHhfc3RhcnQsIHlfc3RhcnQ7CisJdTE2IHgxLCB4MiwgeTEsIHky OworCWludCByZXQgPSAwOworCWJvb2wgZnVsbDsKKwl2b2lkICp0cjsKKworCW11dGV4X2xvY2so JnRkZXYtPmRpcnR5X2xvY2spOworCisJaWYgKCFtaXBpLT5lbmFibGVkKQorCQlnb3RvIG91dF91 bmxvY2s7CisKKwkvKiBmYmRldiBjYW4gZmx1c2ggZXZlbiB3aGVuIHdlJ3JlIG5vdCBpbnRlcmVz dGVkICovCisJaWYgKHRkZXYtPnBpcGUucGxhbmUuZmIgIT0gZmIpCisJCWdvdG8gb3V0X3VubG9j azsKKworCWZ1bGwgPSB0aW55ZHJtX21lcmdlX2NsaXBzKCZjbGlwLCBjbGlwcywgbnVtX2NsaXBz LCBmbGFncywKKwkJCQkgICBmYi0+d2lkdGgsIGZiLT5oZWlnaHQpOworCisJRFJNX0RFQlVHKCJG bHVzaGluZyBbRkI6JWRdIHgxPSV1LCB4Mj0ldSwgeTE9JXUsIHkyPSV1XG4iLCBmYi0+YmFzZS5p ZCwKKwkJICBjbGlwLngxLCBjbGlwLngyLCBjbGlwLnkxLCBjbGlwLnkyKTsKKworCWlmICghbWlw aS0+ZGMgfHwgIWZ1bGwgfHwgc3dhcCB8fAorCSAgICBmYi0+Zm9ybWF0LT5mb3JtYXQgPT0gRFJN X0ZPUk1BVF9YUkdCODg4OCkgeworCQl0ciA9IG1pcGktPnR4X2J1ZjsKKwkJcmV0ID0gbWlwaV9k YmlfYnVmX2NvcHkobWlwaS0+dHhfYnVmLCBmYiwgJmNsaXAsIHN3YXApOworCQlpZiAocmV0KQor CQkJZ290byBvdXRfdW5sb2NrOworCX0gZWxzZSB7CisJCXRyID0gY21hX29iai0+dmFkZHI7CisJ fQorCisJc3dpdGNoIChtaXBpLT5yb3RhdGlvbikgeworCWRlZmF1bHQ6CisJCXgxID0gY2xpcC54 MTsKKwkJeDIgPSBjbGlwLngyIC0gMTsKKwkJeTEgPSBjbGlwLnkxOworCQl5MiA9IGNsaXAueTIg LSAxOworCQl4X3N0YXJ0ID0geDE7CisJCXlfc3RhcnQgPSB5MTsKKwkJYnJlYWs7CisJY2FzZSA5 MDoKKwkJeDEgPSBjbGlwLnkxOworCQl4MiA9IGNsaXAueTIgLSAxOworCQl5MSA9IGZiLT53aWR0 aCAtIGNsaXAueDI7CisJCXkyID0gZmItPndpZHRoIC0gY2xpcC54MSAtIDE7CisJCXhfc3RhcnQg PSB4MTsKKwkJeV9zdGFydCA9IHkyOworCQlicmVhazsKKwljYXNlIDE4MDoKKwkJeDEgPSBmYi0+ d2lkdGggLSBjbGlwLngyOworCQl4MiA9IGZiLT53aWR0aCAtIGNsaXAueDEgLSAxOworCQl5MSA9 IGZiLT5oZWlnaHQgLSBjbGlwLnkyOworCQl5MiA9IGZiLT5oZWlnaHQgLSBjbGlwLnkxIC0gMTsK KwkJeF9zdGFydCA9IHgyOworCQl5X3N0YXJ0ID0geTI7CisJCWJyZWFrOworCWNhc2UgMjcwOgor CQl4MSA9IGZiLT5oZWlnaHQgLSBjbGlwLnkyOworCQl4MiA9IGZiLT5oZWlnaHQgLSBjbGlwLnkx IC0gMTsKKwkJeTEgPSBjbGlwLngxOworCQl5MiA9IGNsaXAueDIgLSAxOworCQl4X3N0YXJ0ID0g eDI7CisJCXlfc3RhcnQgPSB5MTsKKwkJYnJlYWs7CisJfQorCisJaWxpOTIyNV9jb21tYW5kKG1p cGksIElMSTkyMjVfSE9SSVpfV0lORE9XX0FERFJfMSwgeDIpOworCWlsaTkyMjVfY29tbWFuZCht aXBpLCBJTEk5MjI1X0hPUklaX1dJTkRPV19BRERSXzIsIHgxKTsKKwlpbGk5MjI1X2NvbW1hbmQo bWlwaSwgSUxJOTIyNV9WRVJUX1dJTkRPV19BRERSXzEsIHkyKTsKKwlpbGk5MjI1X2NvbW1hbmQo bWlwaSwgSUxJOTIyNV9WRVJUX1dJTkRPV19BRERSXzIsIHkxKTsKKworCWlsaTkyMjVfY29tbWFu ZChtaXBpLCBJTEk5MjI1X1JBTV9BRERSRVNTX1NFVF8xLCB4X3N0YXJ0KTsKKwlpbGk5MjI1X2Nv bW1hbmQobWlwaSwgSUxJOTIyNV9SQU1fQUREUkVTU19TRVRfMiwgeV9zdGFydCk7CisKKwlyZXQg PSBtaXBpX2RiaV9jb21tYW5kX2J1ZihtaXBpLCBJTEk5MjI1X1dSSVRFX0RBVEFfVE9fR1JBTSwg dHIsCisJCQkJKGNsaXAueDIgLSBjbGlwLngxKSAqIChjbGlwLnkyIC0gY2xpcC55MSkgKiAyKTsK Kworb3V0X3VubG9jazoKKwltdXRleF91bmxvY2soJnRkZXYtPmRpcnR5X2xvY2spOworCisJaWYg KHJldCkKKwkJZGV2X2Vycl9vbmNlKGZiLT5kZXYtPmRldiwgIkZhaWxlZCB0byB1cGRhdGUgZGlz cGxheSAlZFxuIiwKKwkJCSAgICAgcmV0KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzIGlsaTkyMjVfZmJfZnVuY3MgPSB7CisJ LmRlc3Ryb3kJPSBkcm1fZ2VtX2ZiX2Rlc3Ryb3ksCisJLmNyZWF0ZV9oYW5kbGUJPSBkcm1fZ2Vt X2ZiX2NyZWF0ZV9oYW5kbGUsCisJLmRpcnR5CQk9IGlsaTkyMjVfZmJfZGlydHksCit9OworCitz dGF0aWMgdm9pZCBpbGk5MjI1X3BpcGVfZW5hYmxlKHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlf cGlwZSAqcGlwZSwKKwkJCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCit7CisJ c3RydWN0IHRpbnlkcm1fZGV2aWNlICp0ZGV2ID0gcGlwZV90b190aW55ZHJtKHBpcGUpOworCXN0 cnVjdCBtaXBpX2RiaSAqbWlwaSA9IG1pcGlfZGJpX2Zyb21fdGlueWRybSh0ZGV2KTsKKwlzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBpcGUtPnBsYW5lLmZiOworCXN0cnVjdCBkZXZpY2Ug KmRldiA9IHRkZXYtPmRybS0+ZGV2OworCWludCByZXQ7CisJdTggYW1faWQ7CisKKwlEUk1fREVC VUdfS01TKCJcbiIpOworCisJbWlwaV9kYmlfaHdfcmVzZXQobWlwaSk7CisKKwkvKgorCSAqIFRo ZXJlIGRvbid0IHNlZW0gdG8gYmUgdHdvIGV4YW1wbGUgaW5pdCBzZXF1ZW5jZXMgdGhhdCBtYXRj aCwgc28KKwkgKiB1c2luZyB0aGUgb25lIGZyb20gdGhlIHBvcHVsYXIgQXJkdWlubyBsaWJyYXJ5 IGZvciB0aGlzIGRpc3BsYXkuCisJICogaHR0cHM6Ly9naXRodWIuY29tL05rYXd1L1RGVF8yMl9J TEk5MjI1L2Jsb2IvbWFzdGVyL3NyYy9URlRfMjJfSUxJOTIyNS5jcHAKKwkgKi8KKworCXJldCA9 IGlsaTkyMjVfY29tbWFuZChtaXBpLCBJTEk5MjI1X1BPV0VSX0NPTlRST0xfMSwgMHgwMDAwKTsK KwlpZiAocmV0KSB7CisJCURSTV9ERVZfRVJST1IoZGV2LCAiRXJyb3Igc2VuZGluZyBjb21tYW5k ICVkXG4iLCByZXQpOworCQlyZXR1cm47CisJfQorCWlsaTkyMjVfY29tbWFuZChtaXBpLCBJTEk5 MjI1X1BPV0VSX0NPTlRST0xfMiwgMHgwMDAwKTsKKwlpbGk5MjI1X2NvbW1hbmQobWlwaSwgSUxJ OTIyNV9QT1dFUl9DT05UUk9MXzMsIDB4MDAwMCk7CisJaWxpOTIyNV9jb21tYW5kKG1pcGksIElM STkyMjVfUE9XRVJfQ09OVFJPTF80LCAweDAwMDApOworCWlsaTkyMjVfY29tbWFuZChtaXBpLCBJ TEk5MjI1X1BPV0VSX0NPTlRST0xfNSwgMHgwMDAwKTsKKworCW1zbGVlcCg0MCk7CisKKwlpbGk5 MjI1X2NvbW1hbmQobWlwaSwgSUxJOTIyNV9QT1dFUl9DT05UUk9MXzIsIDB4MDAxOCk7CisJaWxp OTIyNV9jb21tYW5kKG1pcGksIElMSTkyMjVfUE9XRVJfQ09OVFJPTF8zLCAweDYxMjEpOworCWls aTkyMjVfY29tbWFuZChtaXBpLCBJTEk5MjI1X1BPV0VSX0NPTlRST0xfNCwgMHgwMDZmKTsKKwlp bGk5MjI1X2NvbW1hbmQobWlwaSwgSUxJOTIyNV9QT1dFUl9DT05UUk9MXzUsIDB4NDk1Zik7CisJ aWxpOTIyNV9jb21tYW5kKG1pcGksIElMSTkyMjVfUE9XRVJfQ09OVFJPTF8xLCAweDA4MDApOwor CisJbXNsZWVwKDEwKTsKKworCWlsaTkyMjVfY29tbWFuZChtaXBpLCBJTEk5MjI1X1BPV0VSX0NP TlRST0xfMiwgMHgxMDNiKTsKKworCW1zbGVlcCg1MCk7CisKKwlzd2l0Y2ggKG1pcGktPnJvdGF0 aW9uKSB7CisJZGVmYXVsdDoKKwkJYW1faWQgPSAweDMwOworCQlicmVhazsKKwljYXNlIDkwOgor CQlhbV9pZCA9IDB4MTg7CisJCWJyZWFrOworCWNhc2UgMTgwOgorCQlhbV9pZCA9IDB4MDA7CisJ CWJyZWFrOworCWNhc2UgMjcwOgorCQlhbV9pZCA9IDB4Mjg7CisJCWJyZWFrOworCX0KKwlpbGk5 MjI1X2NvbW1hbmQobWlwaSwgSUxJOTIyNV9EUklWRVJfT1VUUFVUX0NPTlRST0wsIDB4MDExYyk7 CisJaWxpOTIyNV9jb21tYW5kKG1pcGksIElMSTkyMjVfTENEX0FDX0RSSVZJTkdfQ09OVFJPTCwg MHgwMTAwKTsKKwlpbGk5MjI1X2NvbW1hbmQobWlwaSwgSUxJOTIyNV9FTlRSWV9NT0RFLCAweDEw MDAgfCBhbV9pZCk7CisJaWxpOTIyNV9jb21tYW5kKG1pcGksIElMSTkyMjVfRElTUExBWV9DT05U Uk9MXzEsIDB4MDAwMCk7CisJaWxpOTIyNV9jb21tYW5kKG1pcGksIElMSTkyMjVfQkxBTktfUEVS SU9EX0NPTlRST0xfMSwgMHgwODA4KTsKKwlpbGk5MjI1X2NvbW1hbmQobWlwaSwgSUxJOTIyNV9G UkFNRV9DWUNMRV9DT05UUk9MLCAweDExMDApOworCWlsaTkyMjVfY29tbWFuZChtaXBpLCBJTEk5 MjI1X0lOVEVSRkFDRV9DT05UUk9MLCAweDAwMDApOworCWlsaTkyMjVfY29tbWFuZChtaXBpLCBJ TEk5MjI1X09TQ0lMTEFUSU9OX0NPTlRST0wsIDB4MGQwMSk7CisJaWxpOTIyNV9jb21tYW5kKG1p cGksIElMSTkyMjVfVkNJX1JFQ1lDTElORywgMHgwMDIwKTsKKwlpbGk5MjI1X2NvbW1hbmQobWlw aSwgSUxJOTIyNV9SQU1fQUREUkVTU19TRVRfMSwgMHgwMDAwKTsKKwlpbGk5MjI1X2NvbW1hbmQo bWlwaSwgSUxJOTIyNV9SQU1fQUREUkVTU19TRVRfMiwgMHgwMDAwKTsKKworCWlsaTkyMjVfY29t bWFuZChtaXBpLCBJTEk5MjI1X0dBVEVfU0NBTl9DT05UUk9MLCAweDAwMDApOworCWlsaTkyMjVf Y29tbWFuZChtaXBpLCBJTEk5MjI1X1ZFUlRJQ0FMX1NDUk9MTF8xLCAweDAwZGIpOworCWlsaTky MjVfY29tbWFuZChtaXBpLCBJTEk5MjI1X1ZFUlRJQ0FMX1NDUk9MTF8yLCAweDAwMDApOworCWls aTkyMjVfY29tbWFuZChtaXBpLCBJTEk5MjI1X1ZFUlRJQ0FMX1NDUk9MTF8zLCAweDAwMDApOwor CWlsaTkyMjVfY29tbWFuZChtaXBpLCBJTEk5MjI1X1BBUlRJQUxfRFJJVklOR19QT1NfMSwgMHgw MGRiKTsKKwlpbGk5MjI1X2NvbW1hbmQobWlwaSwgSUxJOTIyNV9QQVJUSUFMX0RSSVZJTkdfUE9T XzIsIDB4MDAwMCk7CisKKwlpbGk5MjI1X2NvbW1hbmQobWlwaSwgSUxJOTIyNV9HQU1NQV9DT05U Uk9MXzEsIDB4MDAwMCk7CisJaWxpOTIyNV9jb21tYW5kKG1pcGksIElMSTkyMjVfR0FNTUFfQ09O VFJPTF8yLCAweDA4MDgpOworCWlsaTkyMjVfY29tbWFuZChtaXBpLCBJTEk5MjI1X0dBTU1BX0NP TlRST0xfMywgMHgwODBhKTsKKwlpbGk5MjI1X2NvbW1hbmQobWlwaSwgSUxJOTIyNV9HQU1NQV9D T05UUk9MXzQsIDB4MDAwYSk7CisJaWxpOTIyNV9jb21tYW5kKG1pcGksIElMSTkyMjVfR0FNTUFf Q09OVFJPTF81LCAweDBhMDgpOworCWlsaTkyMjVfY29tbWFuZChtaXBpLCBJTEk5MjI1X0dBTU1B X0NPTlRST0xfNiwgMHgwODA4KTsKKwlpbGk5MjI1X2NvbW1hbmQobWlwaSwgSUxJOTIyNV9HQU1N QV9DT05UUk9MXzcsIDB4MDAwMCk7CisJaWxpOTIyNV9jb21tYW5kKG1pcGksIElMSTkyMjVfR0FN TUFfQ09OVFJPTF84LCAweDBhMDApOworCWlsaTkyMjVfY29tbWFuZChtaXBpLCBJTEk5MjI1X0dB TU1BX0NPTlRST0xfOSwgMHgwNzEwKTsKKwlpbGk5MjI1X2NvbW1hbmQobWlwaSwgSUxJOTIyNV9H QU1NQV9DT05UUk9MXzEwLCAweDA3MTApOworCisJaWxpOTIyNV9jb21tYW5kKG1pcGksIElMSTky MjVfRElTUExBWV9DT05UUk9MXzEsIDB4MDAxMik7CisKKwltc2xlZXAoNTApOworCisJaWxpOTIy NV9jb21tYW5kKG1pcGksIElMSTkyMjVfRElTUExBWV9DT05UUk9MXzEsIDB4MTAxNyk7CisKKwlt aXBpLT5lbmFibGVkID0gdHJ1ZTsKKworCWlmIChmYikKKwkJZmItPmZ1bmNzLT5kaXJ0eShmYiwg TlVMTCwgMCwgMCwgTlVMTCwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIGlsaTkyMjVfcGlwZV9kaXNh YmxlKHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSkKK3sKKwlzdHJ1Y3QgdGlu eWRybV9kZXZpY2UgKnRkZXYgPSBwaXBlX3RvX3Rpbnlkcm0ocGlwZSk7CisJc3RydWN0IG1pcGlf ZGJpICptaXBpID0gbWlwaV9kYmlfZnJvbV90aW55ZHJtKHRkZXYpOworCisJRFJNX0RFQlVHX0tN UygiXG4iKTsKKworCWlmICghbWlwaS0+ZW5hYmxlZCkKKwkJcmV0dXJuOworCisJaWxpOTIyNV9j b21tYW5kKG1pcGksIElMSTkyMjVfRElTUExBWV9DT05UUk9MXzEsIDB4MDAwMCk7CisJbXNsZWVw KDUwKTsKKwlpbGk5MjI1X2NvbW1hbmQobWlwaSwgSUxJOTIyNV9QT1dFUl9DT05UUk9MXzIsIDB4 MDAwNyk7CisJbXNsZWVwKDUwKTsKKwlpbGk5MjI1X2NvbW1hbmQobWlwaSwgSUxJOTIyNV9QT1dF Ul9DT05UUk9MXzEsIDB4MGEwMik7CisKKwltaXBpLT5lbmFibGVkID0gZmFsc2U7Cit9CisKK3N0 YXRpYyBpbnQgaWxpOTIyNV9kYmlfY29tbWFuZChzdHJ1Y3QgbWlwaV9kYmkgKm1pcGksIHU4IGNt ZCwgdTggKnBhciwKKwkJCSAgICAgICBzaXplX3QgbnVtKQoreworCXN0cnVjdCBzcGlfZGV2aWNl ICpzcGkgPSBtaXBpLT5zcGk7CisJdW5zaWduZWQgaW50IGJwdyA9IDg7CisJdTMyIHNwZWVkX2h6 OworCWludCByZXQ7CisKKwlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAobWlwaS0+ZGMsIDApOwor CXNwZWVkX2h6ID0gbWlwaV9kYmlfc3BpX2NtZF9tYXhfc3BlZWQoc3BpLCAxKTsKKwlyZXQgPSB0 aW55ZHJtX3NwaV90cmFuc2ZlcihzcGksIHNwZWVkX2h6LCBOVUxMLCA4LCAmY21kLCAxKTsKKwlp ZiAocmV0IHx8ICFudW0pCisJCXJldHVybiByZXQ7CisKKwlpZiAoY21kID09IElMSTkyMjVfV1JJ VEVfREFUQV9UT19HUkFNICYmICFtaXBpLT5zd2FwX2J5dGVzKQorCQlicHcgPSAxNjsKKworCWdw aW9kX3NldF92YWx1ZV9jYW5zbGVlcChtaXBpLT5kYywgMSk7CisJc3BlZWRfaHogPSBtaXBpX2Ri aV9zcGlfY21kX21heF9zcGVlZChzcGksIG51bSk7CisKKwlyZXR1cm4gdGlueWRybV9zcGlfdHJh bnNmZXIoc3BpLCBzcGVlZF9oeiwgTlVMTCwgYnB3LCBwYXIsIG51bSk7Cit9CisKK3N0YXRpYyBj b25zdCB1MzIgaWxpOTIyNV9mb3JtYXRzW10gPSB7CisJRFJNX0ZPUk1BVF9SR0I1NjUsCisJRFJN X0ZPUk1BVF9YUkdCODg4OCwKK307CisKK3N0YXRpYyBpbnQgaWxpOTIyNV9pbml0KHN0cnVjdCBk ZXZpY2UgKmRldiwgc3RydWN0IG1pcGlfZGJpICptaXBpLAorCQkJY29uc3Qgc3RydWN0IGRybV9z aW1wbGVfZGlzcGxheV9waXBlX2Z1bmNzICpwaXBlX2Z1bmNzLAorCQkJc3RydWN0IGRybV9kcml2 ZXIgKmRyaXZlciwKKwkJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAorCQkJ dW5zaWduZWQgaW50IHJvdGF0aW9uKQoreworCXNpemVfdCBidWZzaXplID0gbW9kZS0+dmRpc3Bs YXkgKiBtb2RlLT5oZGlzcGxheSAqIHNpemVvZih1MTYpOworCXN0cnVjdCB0aW55ZHJtX2Rldmlj ZSAqdGRldiA9ICZtaXBpLT50aW55ZHJtOworCWludCByZXQ7CisKKwlpZiAoIW1pcGktPmNvbW1h bmQpCisJCXJldHVybiAtRUlOVkFMOworCisJbXV0ZXhfaW5pdCgmbWlwaS0+Y21kbG9jayk7CisK KwltaXBpLT50eF9idWYgPSBkZXZtX2ttYWxsb2MoZGV2LCBidWZzaXplLCBHRlBfS0VSTkVMKTsK KwlpZiAoIW1pcGktPnR4X2J1ZikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlyZXQgPSBkZXZtX3Rp bnlkcm1faW5pdChkZXYsIHRkZXYsICZpbGk5MjI1X2ZiX2Z1bmNzLCBkcml2ZXIpOworCWlmIChy ZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSB0aW55ZHJtX2Rpc3BsYXlfcGlwZV9pbml0KHRk ZXYsIHBpcGVfZnVuY3MsCisJCQkJCURSTV9NT0RFX0NPTk5FQ1RPUl9WSVJUVUFMLAorCQkJCQlp bGk5MjI1X2Zvcm1hdHMsCisJCQkJCUFSUkFZX1NJWkUoaWxpOTIyNV9mb3JtYXRzKSwgbW9kZSwK KwkJCQkJcm90YXRpb24pOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwl0ZGV2LT5kcm0t Pm1vZGVfY29uZmlnLnByZWZlcnJlZF9kZXB0aCA9IDE2OworCW1pcGktPnJvdGF0aW9uID0gcm90 YXRpb247CisKKwlkcm1fbW9kZV9jb25maWdfcmVzZXQodGRldi0+ZHJtKTsKKworCURSTV9ERUJV R19LTVMoInByZWZlcnJlZF9kZXB0aD0ldSwgcm90YXRpb24gPSAldVxuIiwKKwkJICAgICAgdGRl di0+ZHJtLT5tb2RlX2NvbmZpZy5wcmVmZXJyZWRfZGVwdGgsIHJvdGF0aW9uKTsKKworCXJldHVy biAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2Z1 bmNzIGlsaTkyMjVfcGlwZV9mdW5jcyA9IHsKKwkuZW5hYmxlCQk9IGlsaTkyMjVfcGlwZV9lbmFi bGUsCisJLmRpc2FibGUJPSBpbGk5MjI1X3BpcGVfZGlzYWJsZSwKKwkudXBkYXRlCQk9IHRpbnlk cm1fZGlzcGxheV9waXBlX3VwZGF0ZSwKKwkucHJlcGFyZV9mYgk9IHRpbnlkcm1fZGlzcGxheV9w aXBlX3ByZXBhcmVfZmIsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgaWxpOTIyNV9tb2RlID0geworCVRJTllEUk1fTU9ERSgxNzYsIDIyMCwgMzUsIDQ0KSwKK307 CisKK0RFRklORV9EUk1fR0VNX0NNQV9GT1BTKGlsaTkyMjVfZm9wcyk7CisKK3N0YXRpYyBzdHJ1 Y3QgZHJtX2RyaXZlciBpbGk5MjI1X2RyaXZlciA9IHsKKwkuZHJpdmVyX2ZlYXR1cmVzCT0gRFJJ VkVSX0dFTSB8IERSSVZFUl9NT0RFU0VUIHwgRFJJVkVSX1BSSU1FIHwKKwkJCQkgIERSSVZFUl9B VE9NSUMsCisJLmZvcHMJCQk9ICZpbGk5MjI1X2ZvcHMsCisJVElOWURSTV9HRU1fRFJJVkVSX09Q UywKKwkubGFzdGNsb3NlCQk9IHRpbnlkcm1fbGFzdGNsb3NlLAorCS5uYW1lCQkJPSAiaWxpOTIy NSIsCisJLmRlc2MJCQk9ICJJbGl0ZWsgSUxJOTIyNSIsCisJLmRhdGUJCQk9ICIyMDE3MTEwNiIs CisJLm1ham9yCQkJPSAxLAorCS5taW5vcgkJCT0gMCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgb2ZfZGV2aWNlX2lkIGlsaTkyMjVfb2ZfbWF0Y2hbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0g ImlsaXRlayxpbGk5MjI1LTIuMmluLTE3NngyMjAiIH0sCisJe30sCit9OworTU9EVUxFX0RFVklD RV9UQUJMRShvZiwgaWxpOTIyNV9vZl9tYXRjaCk7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3Bp X2RldmljZV9pZCBpbGk5MjI1X2lkW10gPSB7CisJeyAiaWxpOTIyNS0yLjJpbi0xNzZ4MjIwIiwg MCB9LAorCXsgfSwKK307CitNT0RVTEVfREVWSUNFX1RBQkxFKHNwaSwgaWxpOTIyNV9pZCk7CisK K3N0YXRpYyBpbnQgaWxpOTIyNV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQoreworCXN0 cnVjdCBkZXZpY2UgKmRldiA9ICZzcGktPmRldjsKKwlzdHJ1Y3QgbWlwaV9kYmkgKm1pcGk7CisJ c3RydWN0IGdwaW9fZGVzYyAqcnM7CisJdTMyIHJvdGF0aW9uID0gMDsKKwlpbnQgcmV0OworCisJ bWlwaSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqbWlwaSksIEdGUF9LRVJORUwpOworCWlm ICghbWlwaSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwltaXBpLT5yZXNldCA9IGRldm1fZ3Bpb2Rf Z2V0KGRldiwgInJlc2V0IiwgR1BJT0RfT1VUX0hJR0gpOworCWlmIChJU19FUlIobWlwaS0+cmVz ZXQpKSB7CisJCURSTV9ERVZfRVJST1IoZGV2LCAiRmFpbGVkIHRvIGdldCBncGlvICdyZXNldCdc biIpOworCQlyZXR1cm4gUFRSX0VSUihtaXBpLT5yZXNldCk7CisJfQorCisJcnMgPSBkZXZtX2dw aW9kX2dldChkZXYsICJycyIsIEdQSU9EX09VVF9MT1cpOworCWlmIChJU19FUlIocnMpKSB7CisJ CURSTV9ERVZfRVJST1IoZGV2LCAiRmFpbGVkIHRvIGdldCBncGlvICdycydcbiIpOworCQlyZXR1 cm4gUFRSX0VSUihycyk7CisJfQorCisJZGV2aWNlX3Byb3BlcnR5X3JlYWRfdTMyKGRldiwgInJv dGF0aW9uIiwgJnJvdGF0aW9uKTsKKworCXJldCA9IG1pcGlfZGJpX3NwaV9pbml0KHNwaSwgbWlw aSwgcnMpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwkvKiBvdmVycmlkZSB0aGUgY29t bWFuZCBmdW5jdGlvbiBzZXQgaW4gIG1pcGlfZGJpX3NwaV9pbml0KCkgKi8KKwltaXBpLT5jb21t YW5kID0gaWxpOTIyNV9kYmlfY29tbWFuZDsKKworCXJldCA9IGlsaTkyMjVfaW5pdCgmc3BpLT5k ZXYsIG1pcGksICZpbGk5MjI1X3BpcGVfZnVuY3MsCisJCQkgICAmaWxpOTIyNV9kcml2ZXIsICZp bGk5MjI1X21vZGUsIHJvdGF0aW9uKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJc3Bp X3NldF9kcnZkYXRhKHNwaSwgbWlwaSk7CisKKwlyZXR1cm4gZGV2bV90aW55ZHJtX3JlZ2lzdGVy KCZtaXBpLT50aW55ZHJtKTsKK30KKworc3RhdGljIHZvaWQgaWxpOTIyNV9zaHV0ZG93bihzdHJ1 Y3Qgc3BpX2RldmljZSAqc3BpKQoreworCXN0cnVjdCBtaXBpX2RiaSAqbWlwaSA9IHNwaV9nZXRf ZHJ2ZGF0YShzcGkpOworCisJdGlueWRybV9zaHV0ZG93bigmbWlwaS0+dGlueWRybSk7Cit9CisK K3N0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBpbGk5MjI1X3NwaV9kcml2ZXIgPSB7CisJLmRyaXZl ciA9IHsKKwkJLm5hbWUgPSAiaWxpOTIyNSIsCisJCS5vd25lciA9IFRISVNfTU9EVUxFLAorCQku b2ZfbWF0Y2hfdGFibGUgPSBpbGk5MjI1X29mX21hdGNoLAorCX0sCisJLmlkX3RhYmxlID0gaWxp OTIyNV9pZCwKKwkucHJvYmUgPSBpbGk5MjI1X3Byb2JlLAorCS5zaHV0ZG93biA9IGlsaTkyMjVf c2h1dGRvd24sCit9OworbW9kdWxlX3NwaV9kcml2ZXIoaWxpOTIyNV9zcGlfZHJpdmVyKTsKKwor TU9EVUxFX0RFU0NSSVBUSU9OKCJJbGl0ZWsgSUxJOTIyNSBEUk0gZHJpdmVyIik7CitNT0RVTEVf QVVUSE9SKCJEYXZpZCBMZWNobmVyIDxkYXZpZEBsZWNobm9sb2d5LmNvbT4iKTsKK01PRFVMRV9M SUNFTlNFKCJHUEwiKTsKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK