From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [RFC 5/5] drm/tinydrm: Add support for several Adafruit TFT displays Date: Wed, 16 Mar 2016 14:34:19 +0100 Message-ID: <1458135259-31050-6-git-send-email-noralf@tronnes.org> References: <1458135259-31050-1-git-send-email-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from asav22.altibox.net (asav22.altibox.net [109.247.116.9]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2430D6E92D for ; Wed, 16 Mar 2016 13:40:59 +0000 (UTC) In-Reply-To: <1458135259-31050-1-git-send-email-noralf@tronnes.org> 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 Cc: thomas.petazzoni@free-electrons.com List-Id: dri-devel@lists.freedesktop.org QWRkIHN1cHBvcnQgZm9yIEFkYWZydWl0IE1JUEkgREJJIGNvbXBhdGlibGUgU1BJIGRpc3BsYXlz OgoxLjgiIENvbG9yIFRGVCBMQ0QgZGlzcGxheSAtIFNUNzczNVIgKCMzNTgpCjIuMiIgQ29sb3Ig VEZUIExDRCBkaXNwbGF5IC0gSFg4MzQwQk4sIDktYml0ICgjNzk3KQoyLjgiIFBpVEZUIDMyMHgy NDAgVEZUK1RvdWNoc2NyZWVuIGZvciBSYXNwYmVycnkgUGkgKCMxNjAxKQoKU2lnbmVkLW9mZi1i eTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL3Rpbnlkcm0vS2NvbmZpZyAgICAgICAgfCAgMTEgKysKIGRyaXZlcnMvZ3B1L2RybS90aW55 ZHJtL01ha2VmaWxlICAgICAgIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS90aW55ZHJtL2FkYWZy dWl0LXRmdC5jIHwgMjU2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVk ZS9kcm0vdGlueWRybS9pbGk5MzQwLmggICAgICAgICAgfCAgODUgKysrKysrKysrKysKIDQgZmls ZXMgY2hhbmdlZCwgMzU1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vdGlueWRybS9hZGFmcnVpdC10ZnQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1 ZGUvZHJtL3Rpbnlkcm0vaWxpOTM0MC5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rp bnlkcm0vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL0tjb25maWcKaW5kZXggYTc5 MjllMC4uNjQ5ZjMxMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vS2NvbmZp ZworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9LY29uZmlnCkBAIC0xMyw0ICsxMywxNSBA QCBtZW51Y29uZmlnIERSTV9USU5ZRFJNCiBjb25maWcgVElOWURSTV9NSVBJX0RCSQogCXRyaXN0 YXRlCiAKK2NvbmZpZyBUSU5ZRFJNX0FEQUZSVUlUX1RGVAorCXRyaXN0YXRlICJEUk0gZHJpdmVy IGZvciBBZGFmcnVpdCBTUEkgVEZUIGRpc3BsYXlzIgorCWRlcGVuZHMgb24gRFJNX1RJTllEUk0g JiYgU1BJCisJc2VsZWN0IExDRFJFR19TUEkKKwlzZWxlY3QgVElOWURSTV9NSVBJX0RCSQorCWhl bHAKKwkgIERSTSBkcml2ZXIgZm9yIHRoZSBmb2xsb3dpbmcgQWRhZnJ1aXQgZGlzcGxheXM6CisJ ICAgIDIuOCIgUGlURlQgMzIweDI0MCBmb3IgUmFzcGJlcnJ5IFBpIC0gSUxJOTM0MCAoIzE2MDEp CisJICAgIDIuMiIgQ29sb3IgVEZUIExDRCBkaXNwbGF5IC0gSFg4MzQwQk4sIDktYml0IG1vZGUg KCM3OTcpCisJICAgIDEuOCIgQ29sb3IgVEZUIExDRCBkaXNwbGF5IC0gU1Q3NzM1UiAoIzM1OCkK Kwogc291cmNlICJkcml2ZXJzL2dwdS9kcm0vdGlueWRybS9sY2RyZWcvS2NvbmZpZyIKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJt L3Rpbnlkcm0vTWFrZWZpbGUKaW5kZXggMzViYTgyMi4uM2MwMDIwMSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL3Rpbnlkcm0vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Rpbnlk cm0vTWFrZWZpbGUKQEAgLTMsMyArMyw2IEBAIG9iai0kKENPTkZJR19MQ0RSRUcpCQkJKz0gbGNk cmVnLwogCiAjIENvbnRyb2xsZXJzCiBvYmotJChDT05GSUdfVElOWURSTV9NSVBJX0RCSSkJCSs9 IG1pcGktZGJpLm8KKworIyBEaXNwbGF5cworb2JqLSQoQ09ORklHX1RJTllEUk1fQURBRlJVSVRf VEZUKQkrPSBhZGFmcnVpdC10ZnQubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rpbnlk cm0vYWRhZnJ1aXQtdGZ0LmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9hZGFmcnVpdC10ZnQu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTA0OWY3Ci0tLSAvZGV2L251 bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vYWRhZnJ1aXQtdGZ0LmMKQEAgLTAsMCAr MSwyNTYgQEAKKyNkZWZpbmUgREVCVUcKKworLyoKKyAqIERSTSBkcml2ZXIgZm9yIEFkYWZydWl0 IE1JUEkgY29tcGF0aWJsZSBTUEkgVEZUIGRpc3BsYXlzCisgKgorICogQ29weXJpZ2h0IDIwMTYg Tm9yYWxmIFRyw7hubmVzCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisj aW5jbHVkZSA8ZHJtL3Rpbnlkcm0vaWxpOTM0MC5oPgorI2luY2x1ZGUgPGRybS90aW55ZHJtL2xj ZHJlZy1zcGkuaD4KKyNpbmNsdWRlIDxkcm0vdGlueWRybS9taXBpLWRiaS5oPgorI2luY2x1ZGUg PGRybS90aW55ZHJtL3Rpbnlkcm0uaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1 ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgorI2luY2x1 ZGUgPGxpbnV4L3Byb3BlcnR5Lmg+CisjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVy Lmg+CisjaW5jbHVkZSA8bGludXgvc3BpL3NwaS5oPgorI2luY2x1ZGUgPHZpZGVvL21pcGlfZGlz cGxheS5oPgorCitlbnVtIGFkYWZydWl0X3RmdF9kaXNwbGF5cyB7CisJQURBRlJVSVRfMTYwMSA9 IDE2MDEsCisJQURBRlJVSVRfNzk3ID0gNzk3LAorCUFEQUZSVUlUXzM1OCA9IDM1OCwKK307CisK K3N0YXRpYyB1MzIgYWRhZnJ1aXRfdGZ0X2dldF9yb3RhdGlvbihzdHJ1Y3QgZGV2aWNlICpkZXYp Cit7CisJdTMyIHJvdGF0aW9uID0gMDsKKworCWRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYs ICJyb3RhdGlvbiIsICZyb3RhdGlvbik7CisKKwlyZXR1cm4gcm90YXRpb247Cit9CisKK3N0YXRp YyBpbnQgYWRhZnJ1aXRfdGZ0XzE2MDFfcGFuZWxfcHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpw YW5lbCkKK3sKKwlzdHJ1Y3QgdGlueWRybV9kZXZpY2UgKnRkZXYgPSB0aW55ZHJtX2Zyb21fcGFu ZWwocGFuZWwpOworCXN0cnVjdCBsY2RyZWcgKnJlZyA9IHRkZXYtPmxjZHJlZzsKKwl1OCBhZGRy X21vZGU7CisJaW50IHJldDsKKworCWRldl9kYmcodGRldi0+YmFzZS0+ZGV2LCAiJXNcbiIsIF9f ZnVuY19fKTsKKworCWlmICh0ZGV2LT5yZWd1bGF0b3IpIHsKKwkJcmV0ID0gcmVndWxhdG9yX2Vu YWJsZSh0ZGV2LT5yZWd1bGF0b3IpOworCQlpZiAocmV0KSB7CisJCQlkZXZfZXJyKHRkZXYtPmJh c2UtPmRldiwKKwkJCQkiRmFpbGVkIHRvIGVuYWJsZSByZWd1bGF0b3IgJWRcbiIsIHJldCk7CisJ CQlyZXR1cm4gcmV0OworCQl9CisJfQorCisJbWlwaV9kYmlfZGVidWdfZHVtcF9yZWdzKHJlZyk7 CisKKwkvKiBBdm9pZCBmbGlja2VyIGJ5IHNraXBwaW5nIHNldHVwIGlmIHRoZSBib290bG9hZGVy IGhhcyBkb25lIGl0ICovCisJaWYgKG1pcGlfZGJpX2Rpc3BsYXlfaXNfb24ocmVnKSkKKwkJcmV0 dXJuIDA7CisKKwlsY2RyZWdfcmVzZXQocmVnKTsKKwlyZXQgPSBsY2RyZWdfd3JpdGVyZWcocmVn LCBJTEk5MzQwX1NXUkVTRVQpOworCWlmIChyZXQpIHsKKwkJZGV2X2Vycih0ZGV2LT5iYXNlLT5k ZXYsICJFcnJvciB3cml0aW5nIGxjZHJlZyAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9 CisKKwltc2xlZXAoMjApOworCisJLyogVW5kb2N1bWVudGVkIHJlZ2lzdGVycyAqLworCWxjZHJl Z193cml0ZXJlZyhyZWcsIDB4RUYsIDB4MDMsIDB4ODAsIDB4MDIpOworCWxjZHJlZ193cml0ZXJl ZyhyZWcsIDB4Q0YsIDB4MDAsIDB4QzEsIDB4MzApOworCWxjZHJlZ193cml0ZXJlZyhyZWcsIDB4 RUQsIDB4NjQsIDB4MDMsIDB4MTIsIDB4ODEpOworCWxjZHJlZ193cml0ZXJlZyhyZWcsIDB4RTgs IDB4ODUsIDB4MDAsIDB4NzgpOworCWxjZHJlZ193cml0ZXJlZyhyZWcsIDB4Q0IsIDB4MzksIDB4 MkMsIDB4MDAsIDB4MzQsIDB4MDIpOworCWxjZHJlZ193cml0ZXJlZyhyZWcsIDB4RjcsIDB4MjAp OworCWxjZHJlZ193cml0ZXJlZyhyZWcsIDB4RUEsIDB4MDAsIDB4MDApOworCisJbGNkcmVnX3dy aXRlcmVnKHJlZywgSUxJOTM0MF9QV0NUUkwxLCAweDIzKTsKKwlsY2RyZWdfd3JpdGVyZWcocmVn LCBJTEk5MzQwX1BXQ1RSTDIsIDB4MTApOworCWxjZHJlZ193cml0ZXJlZyhyZWcsIElMSTkzNDBf Vk1DVFJMMSwgMHgzZSwgMHgyOCk7CisJbGNkcmVnX3dyaXRlcmVnKHJlZywgSUxJOTM0MF9WTUNU UkwyLCAweDg2KTsKKworCWxjZHJlZ193cml0ZXJlZyhyZWcsIElMSTkzNDBfUElYU0VULCAweDU1 KTsKKwlsY2RyZWdfd3JpdGVyZWcocmVnLCBJTEk5MzQwX0ZSTUNUUjEsIDB4MDAsIDB4MTgpOwor CWxjZHJlZ193cml0ZXJlZyhyZWcsIElMSTkzNDBfRElTQ1RSTCwgMHgwOCwgMHg4MiwgMHgyNyk7 CisKKwkvKiAzR2FtbWEgRnVuY3Rpb24gRGlzYWJsZSAqLworCWxjZHJlZ193cml0ZXJlZyhyZWcs IDB4RjIsIDB4MDApOworCisJbGNkcmVnX3dyaXRlcmVnKHJlZywgSUxJOTM0MF9HQU1TRVQsIDB4 MDEpOworCWxjZHJlZ193cml0ZXJlZyhyZWcsIElMSTkzNDBfUEdBTUNUUkwsCisJCQkweDBGLCAw eDMxLCAweDJCLCAweDBDLCAweDBFLCAweDA4LCAweDRFLCAweEYxLAorCQkJMHgzNywgMHgwNywg MHgxMCwgMHgwMywgMHgwRSwgMHgwOSwgMHgwMCk7CisJbGNkcmVnX3dyaXRlcmVnKHJlZywgSUxJ OTM0MF9OR0FNQ1RSTCwKKwkJCTB4MDAsIDB4MEUsIDB4MTQsIDB4MDMsIDB4MTEsIDB4MDcsIDB4 MzEsIDB4QzEsCisJCQkweDQ4LCAweDA4LCAweDBGLCAweDBDLCAweDMxLCAweDM2LCAweDBGKTsK KworCXN3aXRjaCAoYWRhZnJ1aXRfdGZ0X2dldF9yb3RhdGlvbihyZWctPmRldikpIHsKKwkJZGVm YXVsdDoKKwkJCWFkZHJfbW9kZSA9IElMSTkzNDBfTUFEQ1RMX01WIHwgSUxJOTM0MF9NQURDVExf TVkgfAorCQkJCSAgICBJTEk5MzQwX01BRENUTF9NWDsKKwkJCWJyZWFrOworCQljYXNlIDkwOgor CQkJYWRkcl9tb2RlID0gSUxJOTM0MF9NQURDVExfTVk7OworCQkJYnJlYWs7CisJCWNhc2UgMTgw OgorCQkJYWRkcl9tb2RlID0gSUxJOTM0MF9NQURDVExfTVY7CisJCQlicmVhazsKKwkJY2FzZSAy NzA6CisJCQlhZGRyX21vZGUgPSBJTEk5MzQwX01BRENUTF9NWDsKKwkJCWJyZWFrOworCX0KKwlh ZGRyX21vZGUgfD0gSUxJOTM0MF9NQURDVExfQkdSOworCWxjZHJlZ193cml0ZXJlZyhyZWcsIE1J UElfRENTX1NFVF9BRERSRVNTX01PREUsIGFkZHJfbW9kZSk7CisKKwlsY2RyZWdfd3JpdGVyZWco cmVnLCBJTEk5MzQwX1NMUE9VVCk7CisJbXNsZWVwKDEyMCk7CisJbGNkcmVnX3dyaXRlcmVnKHJl ZywgSUxJOTM0MF9ESVNQT04pOworCisJbWlwaV9kYmlfZGVidWdfZHVtcF9yZWdzKHJlZyk7CisK KwlyZXR1cm4gMDsKK30KKworc3RydWN0IGRybV9wYW5lbF9mdW5jcyBhZGFmcnVpdF90ZnRfMTYw MV9mdW5jcyA9IHsKKwkucHJlcGFyZSA9IGFkYWZydWl0X3RmdF8xNjAxX3BhbmVsX3ByZXBhcmUs CisJLnVucHJlcGFyZSA9IG1pcGlfZGJpX3BhbmVsX3VucHJlcGFyZSwKKwkuZW5hYmxlID0gdGlu eWRybV9wYW5lbF9lbmFibGVfYmFja2xpZ2h0LAorCS5kaXNhYmxlID0gdGlueWRybV9wYW5lbF9k aXNhYmxlX2JhY2tsaWdodCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lk IGFkYWZydWl0X3RmdF9vZl9tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUgPSAiYWRhZnJ1aXQs dGZ0MTYwMSIsIC5kYXRhID0gKHZvaWQgKilBREFGUlVJVF8xNjAxIH0sCisJeyAuY29tcGF0aWJs ZSA9ICJhZGFmcnVpdCx0ZnQ3OTciLCAgLmRhdGEgPSAodm9pZCAqKUFEQUZSVUlUXzc5NyB9LAor CXsgLmNvbXBhdGlibGUgPSAiYWRhZnJ1aXQsdGZ0MzU4IiwgIC5kYXRhID0gKHZvaWQgKilBREFG UlVJVF8zNTggfSwKKwl7fSwKK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhZGFmcnVpdF90 ZnRfb2ZfbWF0Y2gpOworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgYWRhZnJ1 aXRfdGZ0X2lkW10gPSB7CisJeyAidGZ0MTYwMSIsIEFEQUZSVUlUXzE2MDEgfSwKKwl7ICJ0ZnQ3 OTciLCAgQURBRlJVSVRfNzk3IH0sCisJeyAidGZ0MzU4IiwgIEFEQUZSVUlUXzM1OCB9LAorICAg ICAgICB7IH0KK307CitNT0RVTEVfREVWSUNFX1RBQkxFKHNwaSwgYWRhZnJ1aXRfdGZ0X2lkKTsK Kworc3RhdGljIGludCBhZGFmcnVpdF90ZnRfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkK K3sKKwljb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICpvZl9pZDsKKwlzdHJ1Y3QgbGNkcmVnX3Nw aV9jb25maWcgY2ZnID0geworCQkubW9kZSA9IExDRFJFR19TUElfNFdJUkUsCisJfTsKKwlzdHJ1 Y3QgZGV2aWNlICpkZXYgPSAmc3BpLT5kZXY7CisJc3RydWN0IHRpbnlkcm1fZGV2aWNlICp0ZGV2 OworCWJvb2wgcmVhZGFibGUgPSBmYWxzZTsKKwlzdHJ1Y3QgbGNkcmVnICpyZWc7CisJaW50IGlk LCByZXQ7CisKKwlvZl9pZCA9IG9mX21hdGNoX2RldmljZShhZGFmcnVpdF90ZnRfb2ZfbWF0Y2gs IGRldik7CisJaWYgKG9mX2lkKSB7CisJCWlkID0gKGludClvZl9pZC0+ZGF0YTsKKwl9IGVsc2Ug eworCQljb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCAqc3BpX2lkID0gc3BpX2dldF9kZXZpY2Vf aWQoc3BpKTsKKworCQlpZiAoIXNwaV9pZCkKKwkJCXJldHVybiAtRUlOVkFMOworCisJCWlkID0g c3BpX2lkLT5kcml2ZXJfZGF0YTsKKwl9CisKKwl0ZGV2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6 ZW9mKCp0ZGV2KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCF0ZGV2KQorCQlyZXR1cm4gLUVOT01FTTsK KworCXRkZXYtPmJhY2tsaWdodCA9IHRpbnlkcm1fb2ZfZmluZF9iYWNrbGlnaHQoZGV2KTsKKwlp ZiAoSVNfRVJSKHRkZXYtPmJhY2tsaWdodCkpCisJCXJldHVybiBQVFJfRVJSKHRkZXYtPmJhY2ts aWdodCk7CisKKwl0ZGV2LT5yZWd1bGF0b3IgPSBkZXZtX3JlZ3VsYXRvcl9nZXRfb3B0aW9uYWwo ZGV2LCAicG93ZXIiKTsKKwlpZiAoSVNfRVJSKHRkZXYtPnJlZ3VsYXRvcikpIHsKKwkJaWYgKFBU Ul9FUlIodGRldi0+cmVndWxhdG9yKSAhPSAtRU5PREVWKQorCQkJcmV0dXJuIFBUUl9FUlIodGRl di0+cmVndWxhdG9yKTsKKwkJdGRldi0+cmVndWxhdG9yID0gTlVMTDsKKwl9CisKKwlzd2l0Y2gg KGlkKSB7CisJY2FzZSBBREFGUlVJVF8xNjAxOgorCQlyZWFkYWJsZSA9IHRydWU7CisJCWNmZy5t b2RlID0gTENEUkVHX1NQSV80V0lSRTsKKwkJdGRldi0+d2lkdGggPSAzMjA7CisJCXRkZXYtPmhl aWdodCA9IDI0MDsKKwkJdGRldi0+cGFuZWwuZnVuY3MgPSAmYWRhZnJ1aXRfdGZ0XzE2MDFfZnVu Y3M7CisJCWJyZWFrOworCWNhc2UgQURBRlJVSVRfNzk3OgorCQljZmcubW9kZSA9IExDRFJFR19T UElfM1dJUkU7CisJCXRkZXYtPndpZHRoID0gMTc2OworCQl0ZGV2LT5oZWlnaHQgPSAyMjA7CisJ CS8qIFRPRE86IHRkZXYtPnBhbmVsLmZ1bmNzID0gJmFkYWZydWl0X3RmdF83OTdfZnVuY3MqLwor CQlicmVhazsKKwljYXNlIEFEQUZSVUlUXzM1ODoKKwkJdGRldi0+d2lkdGggPSAxMjg7CisJCXRk ZXYtPmhlaWdodCA9IDE2MDsKKwkJLyogVE9ETzogdGRldi0+cGFuZWwuZnVuY3MgPSAmYWRhZnJ1 aXRfdGZ0XzM1OF9mdW5jcyAqLworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZB TDsKKwl9CisKKwlEUk1fREVCVUdfRFJJVkVSKCJyb3RhdGlvbiA9ICV1XG4iLCBhZGFmcnVpdF90 ZnRfZ2V0X3JvdGF0aW9uKGRldikpOworCXN3aXRjaCAoYWRhZnJ1aXRfdGZ0X2dldF9yb3RhdGlv bihkZXYpKSB7CisJCWNhc2UgOTA6CisJCWNhc2UgMjcwOgorCQkJc3dhcCh0ZGV2LT53aWR0aCwg dGRldi0+aGVpZ2h0KTsKKwkJCWJyZWFrOworCX0KKworCXJlZyA9IGRldm1fbGNkcmVnX3NwaV9p bml0KHNwaSwgJmNmZyk7CisJaWYgKElTX0VSUihyZWcpKQorCQlyZXR1cm4gUFRSX0VSUihyZWcp OworCisJcmVnLT5yZWFkYWJsZSA9IHJlYWRhYmxlOworCXRkZXYtPmxjZHJlZyA9IHJlZzsKKwly ZXQgPSBtaXBpX2RiaV9pbml0KGRldiwgdGRldik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsK KworCS8qIFRPRE86IE1ha2UgY29uZmlndXJhYmxlICovCisJdGRldi0+ZGVmZXJyZWQtPmRlZmVy X21zID0gNDA7CisKKwlzcGlfc2V0X2RydmRhdGEoc3BpLCB0ZGV2KTsKKworCXJldHVybiBkZXZt X3Rpbnlkcm1fcmVnaXN0ZXIoZGV2LCB0ZGV2KTsKK30KKworc3RhdGljIHN0cnVjdCBzcGlfZHJp dmVyIGFkYWZydWl0X3RmdF9zcGlfZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5uYW1lID0g ImFkYS1taXBpZmIiLAorCQkub3duZXIgPSBUSElTX01PRFVMRSwKKwkJLm9mX21hdGNoX3RhYmxl ID0gYWRhZnJ1aXRfdGZ0X29mX21hdGNoLAorCQkucG0gPSAmdGlueWRybV9zaW1wbGVfcG1fb3Bz LAorCX0sCisJLmlkX3RhYmxlID0gYWRhZnJ1aXRfdGZ0X2lkLAorCS5wcm9iZSA9IGFkYWZydWl0 X3RmdF9wcm9iZSwKKwkuc2h1dGRvd24gPSB0aW55ZHJtX3NwaV9zaHV0ZG93biwKK307Cittb2R1 bGVfc3BpX2RyaXZlcihhZGFmcnVpdF90ZnRfc3BpX2RyaXZlcik7CisKK01PRFVMRV9ERVNDUklQ VElPTigiQWRhZnJ1aXQgTUlQSSBjb21wYXRpYmxlIFNQSSBkaXNwbGF5cyIpOworTU9EVUxFX0FV VEhPUigiTm9yYWxmIFRyw7hubmVzIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1n aXQgYS9pbmNsdWRlL2RybS90aW55ZHJtL2lsaTkzNDAuaCBiL2luY2x1ZGUvZHJtL3Rpbnlkcm0v aWxpOTM0MC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjZDIxMjIKLS0t IC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2RybS90aW55ZHJtL2lsaTkzNDAuaApAQCAtMCwwICsx LDg1IEBACisvKgorICogSUxJOTM0MCBMQ0QgY29udHJvbGxlcgorICoKKyAqIENvcHlyaWdodCAy MDE2IE5vcmFsZiBUcsO4bm5lcworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8K KworI2lmbmRlZiBfX0xJTlVYX0lMSTkzNDBfSAorI2RlZmluZSBfX0xJTlVYX0lMSTkzNDBfSAor CisKKyNkZWZpbmUgSUxJOTM0MF9OT1AgICAgICAgIDB4MDAKKyNkZWZpbmUgSUxJOTM0MF9TV1JF U0VUICAgIDB4MDEKKyNkZWZpbmUgSUxJOTM0MF9SRERJRElGICAgIDB4MDQKKyNkZWZpbmUgSUxJ OTM0MF9SRERTVCAgICAgIDB4MDkKKyNkZWZpbmUgSUxJOTM0MF9SRERQTSAgICAgIDB4MEEKKyNk ZWZpbmUgSUxJOTM0MF9SRERNQURDVEwgIDB4MEIKKyNkZWZpbmUgSUxJOTM0MF9SRERDT0xNT0Qg IDB4MEMKKyNkZWZpbmUgSUxJOTM0MF9SRERJTSAgICAgIDB4MEQKKyNkZWZpbmUgSUxJOTM0MF9S RERTTSAgICAgIDB4MEUKKyNkZWZpbmUgSUxJOTM0MF9SRERTRFIgICAgIDB4MEYKKworI2RlZmlu ZSBJTEk5MzQwX1NMUElOICAgICAgMHgxMAorI2RlZmluZSBJTEk5MzQwX1NMUE9VVCAgICAgMHgx MQorI2RlZmluZSBJTEk5MzQwX1BUTE9OICAgICAgMHgxMgorI2RlZmluZSBJTEk5MzQwX05PUk9O ICAgICAgMHgxMworCisjZGVmaW5lIElMSTkzNDBfRElOVk9GRiAgICAweDIwCisjZGVmaW5lIElM STkzNDBfRElOVk9OICAgICAweDIxCisjZGVmaW5lIElMSTkzNDBfR0FNU0VUICAgICAweDI2Cisj ZGVmaW5lIElMSTkzNDBfRElTUE9GRiAgICAweDI4CisjZGVmaW5lIElMSTkzNDBfRElTUE9OICAg ICAweDI5CisjZGVmaW5lIElMSTkzNDBfQ0FTRVQgICAgICAweDJBCisjZGVmaW5lIElMSTkzNDBf UEFTRVQgICAgICAweDJCCisjZGVmaW5lIElMSTkzNDBfUkFNV1IgICAgICAweDJDCisjZGVmaW5l IElMSTkzNDBfUkdCU0VUICAgICAweDJECisjZGVmaW5lIElMSTkzNDBfUkFNUkQgICAgICAweDJF CisKKyNkZWZpbmUgSUxJOTM0MF9QTFRBUiAgICAgIDB4MzAKKyNkZWZpbmUgSUxJOTM0MF9WU0NS REVGICAgIDB4MzMKKyNkZWZpbmUgSUxJOTM0MF9URU9GRiAgICAgIDB4MzQKKyNkZWZpbmUgSUxJ OTM0MF9URU9OICAgICAgIDB4MzUKKyNkZWZpbmUgSUxJOTM0MF9NQURDVEwgICAgIDB4MzYKKyNk ZWZpbmUgSUxJOTM0MF9WU0NSU0FERCAgIDB4MzcKKyNkZWZpbmUgSUxJOTM0MF9JRE1PRkYgICAg IDB4MzgKKyNkZWZpbmUgSUxJOTM0MF9JRE1PTiAgICAgIDB4MzkKKyNkZWZpbmUgSUxJOTM0MF9Q SVhTRVQgICAgIDB4M0EKKworI2RlZmluZSBJTEk5MzQwX0ZSTUNUUjEgICAgMHhCMQorI2RlZmlu ZSBJTEk5MzQwX0ZSTUNUUjIgICAgMHhCMgorI2RlZmluZSBJTEk5MzQwX0ZSTUNUUjMgICAgMHhC MworI2RlZmluZSBJTEk5MzQwX0lOVlRSICAgICAgMHhCNAorI2RlZmluZSBJTEk5MzQwX0RJU0NU UkwgICAgMHhCNgorCisjZGVmaW5lIElMSTkzNDBfUFdDVFJMMSAgICAweEMwCisjZGVmaW5lIElM STkzNDBfUFdDVFJMMiAgICAweEMxCisjZGVmaW5lIElMSTkzNDBfUFdDVFJMMyAgICAweEMyCisj ZGVmaW5lIElMSTkzNDBfUFdDVFJMNCAgICAweEMzCisjZGVmaW5lIElMSTkzNDBfUFdDVFJMNSAg ICAweEM0CisjZGVmaW5lIElMSTkzNDBfVk1DVFJMMSAgICAweEM1CisjZGVmaW5lIElMSTkzNDBf Vk1DVFJMMiAgICAweEM3CisKKyNkZWZpbmUgSUxJOTM0MF9SRElEMSAgICAgIDB4REEKKyNkZWZp bmUgSUxJOTM0MF9SRElEMiAgICAgIDB4REIKKyNkZWZpbmUgSUxJOTM0MF9SRElEMyAgICAgIDB4 REMKKyNkZWZpbmUgSUxJOTM0MF9SRElENCAgICAgIDB4REQKKworI2RlZmluZSBJTEk5MzQwX1BH QU1DVFJMICAgMHhFMAorI2RlZmluZSBJTEk5MzQwX05HQU1DVFJMICAgMHhFMQorCisjZGVmaW5l IElMSTkzNDBfSUZDVEwgICAgICAweEY2CisKKyNkZWZpbmUgSUxJOTM0MF9NQURDVExfTUggIEJJ VCgyKQorI2RlZmluZSBJTEk5MzQwX01BRENUTF9CR1IgQklUKDMpCisjZGVmaW5lIElMSTkzNDBf TUFEQ1RMX01MICBCSVQoNCkKKyNkZWZpbmUgSUxJOTM0MF9NQURDVExfTVYgIEJJVCg1KQorI2Rl ZmluZSBJTEk5MzQwX01BRENUTF9NWCAgQklUKDYpCisjZGVmaW5lIElMSTkzNDBfTUFEQ1RMX01Z ICBCSVQoNykKKworCisjZW5kaWYgLyogX19MSU5VWF9JTEk5MzQwX0ggKi8KLS0gCjIuMi4yCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK