From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Ujfalusi Subject: [PATCH v3 4/4] drm/panel: Add OSD101T2587-53TS driver Date: Tue, 26 Feb 2019 09:55:23 +0200 Message-ID: <20190226075523.28997-5-peter.ujfalusi@ti.com> References: <20190226075523.28997-1-peter.ujfalusi@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190226075523.28997-1-peter.ujfalusi@ti.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: thierry.reding@gmail.com, airlied@linux.ie, daniel@ffwll.ch Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, robh+dt@kernel.org, tomi.valkeinen@ti.com, dri-devel@lists.freedesktop.org, sam@ravnborg.org List-Id: devicetree@vger.kernel.org VGhlIHBhbmVsIGlzIHNpbWlsYXIgdG8gT1NEMTAxVDIwNDUtNTNUUyAod2hpY2ggaXMgaGFuZGxl ZCBieSBwYW5lbC1zaW1wbGUpCndpdGggb25lIGJpZyBkaWZmZXJlbmNlOiBvc2QxMDF0MjU4Ny01 M3RzIG5lZWRzIE1JUElfRFNJX1RVUk5fT05fUEVSSVBIRVJBTAptZXNzYWdlIHRvIGJlIHNlbnQg ZnJvbSB0aGUgaG9zdCB0byBiZSBvcGVyYXRpb25hbCBhbmQgdGh1cyBjYW4gbm90IGJlCmhhbmRs ZWQgYnkgcGFuZWwtc2ltcGxlLgoKU2lnbmVkLW9mZi1ieTogUGV0ZXIgVWpmYWx1c2kgPHBldGVy LnVqZmFsdXNpQHRpLmNvbT4KUmV2aWV3ZWQtYnk6IFNhbSBSYXZuYm9yZyA8c2FtQHJhdm5ib3Jn Lm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyAgICAgICAgICAgICAgICAg fCAgIDkgKwogZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlICAgICAgICAgICAgICAgIHwg ICAxICsKIC4uLi9kcm0vcGFuZWwvcGFuZWwtb3NkLW9zZDEwMXQyNTg3LTUzdHMuYyAgICB8IDI1 NCArKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMjY0IGluc2VydGlvbnMoKykK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtb3NkLW9zZDEw MXQyNTg3LTUzdHMuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmln IGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKaW5kZXggM2UwNzAxNTNlZjIxLi42YjY3 OTA0NzRjMzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCkBAIC0xMjIsNiArMTIyLDE1IEBAIGNvbmZp ZyBEUk1fUEFORUxfT1JJU0VURUNIX09UTTgwMDlBCiAJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50 IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBPcmlzZSBUZWNobm9sb2d5CiAJICBvdG04MDA5YSA0ODB4 ODAwIGRzaSAyZGwgcGFuZWwuCiAKK2NvbmZpZyBEUk1fUEFORUxfT1NEX09TRDEwMVQyNTg3XzUz VFMKKwl0cmlzdGF0ZSAiT1NEIE9TRDEwMVQyNTg3LTUzVFMgRFNJIDE5MjB4MTIwMCB2aWRlbyBt b2RlIHBhbmVsIgorCWRlcGVuZHMgb24gT0YKKwlkZXBlbmRzIG9uIERSTV9NSVBJX0RTSQorCWRl cGVuZHMgb24gQkFDS0xJR0hUX0NMQVNTX0RFVklDRQorCWhlbHAKKwkgIFNheSBZIGhlcmUgaWYg eW91IHdhbnQgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIE9uZSBTdG9wIERpc3BsYXlzCisJICBPU0Qx MDFUMjU4Ny01M1RTIDEwLjEiIDE5MjB4MTIwMCBkc2kgcGFuZWwuCisKIGNvbmZpZyBEUk1fUEFO RUxfUEFOQVNPTklDX1ZWWDEwRjAzNE4wMAogCXRyaXN0YXRlICJQYW5hc29uaWMgVlZYMTBGMDM0 TjAwIDE5MjB4MTIwMCB2aWRlbyBtb2RlIHBhbmVsIgogCWRlcGVuZHMgb24gT0YKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9wYW5l bC9NYWtlZmlsZQppbmRleCBlN2FiNzE5NjhiYmYuLmQ5ZDk5OTU2ZGIwYyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5l bC9NYWtlZmlsZQpAQCAtMTAsNiArMTAsNyBAQCBvYmotJChDT05GSUdfRFJNX1BBTkVMX0tJTkdE SVNQTEFZX0tEMDk3RDA0KSArPSBwYW5lbC1raW5nZGlzcGxheS1rZDA5N2QwNC5vCiBvYmotJChD T05GSUdfRFJNX1BBTkVMX0xHX0xHNDU3MykgKz0gcGFuZWwtbGctbGc0NTczLm8KIG9iai0kKENP TkZJR19EUk1fUEFORUxfT0xJTUVYX0xDRF9PTElOVVhJTk8pICs9IHBhbmVsLW9saW1leC1sY2Qt b2xpbnV4aW5vLm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfT1JJU0VURUNIX09UTTgwMDlBKSAr PSBwYW5lbC1vcmlzZXRlY2gtb3RtODAwOWEubworb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9PU0Rf T1NEMTAxVDI1ODdfNTNUUykgKz0gcGFuZWwtb3NkLW9zZDEwMXQyNTg3LTUzdHMubwogb2JqLSQo Q09ORklHX0RSTV9QQU5FTF9QQU5BU09OSUNfVlZYMTBGMDM0TjAwKSArPSBwYW5lbC1wYW5hc29u aWMtdnZ4MTBmMDM0bjAwLm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfUkFTUEJFUlJZUElfVE9V Q0hTQ1JFRU4pICs9IHBhbmVsLXJhc3BiZXJyeXBpLXRvdWNoc2NyZWVuLm8KIG9iai0kKENPTkZJ R19EUk1fUEFORUxfUkFZRElVTV9STTY4MjAwKSArPSBwYW5lbC1yYXlkaXVtLXJtNjgyMDAubwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLW9zZC1vc2QxMDF0MjU4Ny01 M3RzLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtb3NkLW9zZDEwMXQyNTg3LTUzdHMu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU1OTc0ZTc0YWEwYQot LS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1vc2Qtb3NkMTAx dDI1ODctNTN0cy5jCkBAIC0wLDAgKzEsMjU0IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTkgVGV4YXMgSW5zdHJ1bWVudHMg SW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20KKyAqICBBdXRob3I6IFBldGVyIFVqZmFs dXNpIDxwZXRlci51amZhbHVzaUB0aS5jb20+CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2JhY2ts aWdodC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L29mLmg+ CisjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+CisKKyNpbmNsdWRlIDxkcm0v ZHJtX2NydGMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgorI2luY2x1ZGUgPGRybS9k cm1fbWlwaV9kc2kuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+CisKKyNpbmNsdWRlIDx2 aWRlby9taXBpX2Rpc3BsYXkuaD4KKworc3RydWN0IG9zZDEwMXQyNTg3X3BhbmVsIHsKKwlzdHJ1 Y3QgZHJtX3BhbmVsIGJhc2U7CisJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpOworCisJc3Ry dWN0IGJhY2tsaWdodF9kZXZpY2UgKmJhY2tsaWdodDsKKwlzdHJ1Y3QgcmVndWxhdG9yICpzdXBw bHk7CisKKwlib29sIHByZXBhcmVkOworCWJvb2wgZW5hYmxlZDsKKworCWNvbnN0IHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICpkZWZhdWx0X21vZGU7Cit9OworCitzdGF0aWMgaW5saW5lIHN0cnVj dCBvc2QxMDF0MjU4N19wYW5lbCAqdGlfb3NkX3BhbmVsKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVs KQoreworCXJldHVybiBjb250YWluZXJfb2YocGFuZWwsIHN0cnVjdCBvc2QxMDF0MjU4N19wYW5l bCwgYmFzZSk7Cit9CisKK3N0YXRpYyBpbnQgb3NkMTAxdDI1ODdfcGFuZWxfZGlzYWJsZShzdHJ1 Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3Qgb3NkMTAxdDI1ODdfcGFuZWwgKm9zZDEw MXQyNTg3ID0gdGlfb3NkX3BhbmVsKHBhbmVsKTsKKwlpbnQgcmV0OworCisJaWYgKCFvc2QxMDF0 MjU4Ny0+ZW5hYmxlZCkKKwkJcmV0dXJuIDA7CisKKwliYWNrbGlnaHRfZGlzYWJsZShvc2QxMDF0 MjU4Ny0+YmFja2xpZ2h0KTsKKworCXJldCA9IG1pcGlfZHNpX3NodXRkb3duX3BlcmlwaGVyYWwo b3NkMTAxdDI1ODctPmRzaSk7CisKKwlvc2QxMDF0MjU4Ny0+ZW5hYmxlZCA9IGZhbHNlOworCisJ cmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBvc2QxMDF0MjU4N19wYW5lbF91bnByZXBhcmUo c3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3RydWN0IG9zZDEwMXQyNTg3X3BhbmVsICpv c2QxMDF0MjU4NyA9IHRpX29zZF9wYW5lbChwYW5lbCk7CisKKwlpZiAoIW9zZDEwMXQyNTg3LT5w cmVwYXJlZCkKKwkJcmV0dXJuIDA7CisKKwlyZWd1bGF0b3JfZGlzYWJsZShvc2QxMDF0MjU4Ny0+ c3VwcGx5KTsKKwlvc2QxMDF0MjU4Ny0+cHJlcGFyZWQgPSBmYWxzZTsKKworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50IG9zZDEwMXQyNTg3X3BhbmVsX3ByZXBhcmUoc3RydWN0IGRybV9wYW5l bCAqcGFuZWwpCit7CisJc3RydWN0IG9zZDEwMXQyNTg3X3BhbmVsICpvc2QxMDF0MjU4NyA9IHRp X29zZF9wYW5lbChwYW5lbCk7CisJaW50IHJldDsKKworCWlmIChvc2QxMDF0MjU4Ny0+cHJlcGFy ZWQpCisJCXJldHVybiAwOworCisJcmV0ID0gcmVndWxhdG9yX2VuYWJsZShvc2QxMDF0MjU4Ny0+ c3VwcGx5KTsKKwlpZiAoIXJldCkKKwkJb3NkMTAxdDI1ODctPnByZXBhcmVkID0gdHJ1ZTsKKwor CXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgb3NkMTAxdDI1ODdfcGFuZWxfZW5hYmxlKHN0 cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBvc2QxMDF0MjU4N19wYW5lbCAqb3Nk MTAxdDI1ODcgPSB0aV9vc2RfcGFuZWwocGFuZWwpOworCWludCByZXQ7CisKKwlpZiAob3NkMTAx dDI1ODctPmVuYWJsZWQpCisJCXJldHVybiAwOworCisJcmV0ID0gbWlwaV9kc2lfdHVybl9vbl9w ZXJpcGhlcmFsKG9zZDEwMXQyNTg3LT5kc2kpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisK KwliYWNrbGlnaHRfZW5hYmxlKG9zZDEwMXQyNTg3LT5iYWNrbGlnaHQpOworCisJb3NkMTAxdDI1 ODctPmVuYWJsZWQgPSB0cnVlOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlIGRlZmF1bHRfbW9kZV9vc2QxMDF0MjU4NyA9IHsKKwkuY2xv Y2sgPSAxNjQ0MDAsCisJLmhkaXNwbGF5ID0gMTkyMCwKKwkuaHN5bmNfc3RhcnQgPSAxOTIwICsg MTUyLAorCS5oc3luY19lbmQgPSAxOTIwICsgMTUyICsgNTIsCisJLmh0b3RhbCA9IDE5MjAgKyAx NTIgKyA1MiArIDIwLAorCS52ZGlzcGxheSA9IDEyMDAsCisJLnZzeW5jX3N0YXJ0ID0gMTIwMCAr IDI0LAorCS52c3luY19lbmQgPSAxMjAwICsgMjQgKyA2LAorCS52dG90YWwgPSAxMjAwICsgMjQg KyA2ICsgNDgsCisJLnZyZWZyZXNoID0gNjAsCisJLmZsYWdzID0gRFJNX01PREVfRkxBR19OSFNZ TkMgfCBEUk1fTU9ERV9GTEFHX05WU1lOQywKK307CisKK3N0YXRpYyBpbnQgb3NkMTAxdDI1ODdf cGFuZWxfZ2V0X21vZGVzKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBvc2Qx MDF0MjU4N19wYW5lbCAqb3NkMTAxdDI1ODcgPSB0aV9vc2RfcGFuZWwocGFuZWwpOworCXN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlOworCisJbW9kZSA9IGRybV9tb2RlX2R1cGxpY2F0ZShw YW5lbC0+ZHJtLCBvc2QxMDF0MjU4Ny0+ZGVmYXVsdF9tb2RlKTsKKwlpZiAoIW1vZGUpIHsKKwkJ ZGV2X2VycihwYW5lbC0+ZHJtLT5kZXYsICJmYWlsZWQgdG8gYWRkIG1vZGUgJXV4JXV4QCV1XG4i LAorCQkJb3NkMTAxdDI1ODctPmRlZmF1bHRfbW9kZS0+aGRpc3BsYXksCisJCQlvc2QxMDF0MjU4 Ny0+ZGVmYXVsdF9tb2RlLT52ZGlzcGxheSwKKwkJCW9zZDEwMXQyNTg3LT5kZWZhdWx0X21vZGUt PnZyZWZyZXNoKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJZHJtX21vZGVfc2V0X25hbWUo bW9kZSk7CisKKwlkcm1fbW9kZV9wcm9iZWRfYWRkKHBhbmVsLT5jb25uZWN0b3IsIG1vZGUpOwor CisJcGFuZWwtPmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLndpZHRoX21tID0gMjE3OworCXBhbmVs LT5jb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZWlnaHRfbW0gPSAxMzY7CisKKwlyZXR1cm4gMTsK K30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGFuZWxfZnVuY3Mgb3NkMTAxdDI1ODdfcGFu ZWxfZnVuY3MgPSB7CisJLmRpc2FibGUgPSBvc2QxMDF0MjU4N19wYW5lbF9kaXNhYmxlLAorCS51 bnByZXBhcmUgPSBvc2QxMDF0MjU4N19wYW5lbF91bnByZXBhcmUsCisJLnByZXBhcmUgPSBvc2Qx MDF0MjU4N19wYW5lbF9wcmVwYXJlLAorCS5lbmFibGUgPSBvc2QxMDF0MjU4N19wYW5lbF9lbmFi bGUsCisJLmdldF9tb2RlcyA9IG9zZDEwMXQyNTg3X3BhbmVsX2dldF9tb2RlcywKK307CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9zZDEwMXQyNTg3X29mX21hdGNoW10gPSB7 CisJeworCQkuY29tcGF0aWJsZSA9ICJvc2Qsb3NkMTAxdDI1ODctNTN0cyIsCisJCS5kYXRhID0g JmRlZmF1bHRfbW9kZV9vc2QxMDF0MjU4NywKKwl9LCB7CisJCS8qIHNlbnRpbmVsICovCisJfQor fTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9zZDEwMXQyNTg3X29mX21hdGNoKTsKKworc3Rh dGljIGludCBvc2QxMDF0MjU4N19wYW5lbF9hZGQoc3RydWN0IG9zZDEwMXQyNTg3X3BhbmVsICpv c2QxMDF0MjU4NykKK3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmb3NkMTAxdDI1ODctPmRzaS0+ ZGV2OworCisJb3NkMTAxdDI1ODctPnN1cHBseSA9IGRldm1fcmVndWxhdG9yX2dldChkZXYsICJw b3dlciIpOworCWlmIChJU19FUlIob3NkMTAxdDI1ODctPnN1cHBseSkpCisJCXJldHVybiBQVFJf RVJSKG9zZDEwMXQyNTg3LT5zdXBwbHkpOworCisJb3NkMTAxdDI1ODctPmJhY2tsaWdodCA9IGRl dm1fb2ZfZmluZF9iYWNrbGlnaHQoZGV2KTsKKwlpZiAoSVNfRVJSKG9zZDEwMXQyNTg3LT5iYWNr bGlnaHQpKQorCQlyZXR1cm4gUFRSX0VSUihvc2QxMDF0MjU4Ny0+YmFja2xpZ2h0KTsKKworCWRy bV9wYW5lbF9pbml0KCZvc2QxMDF0MjU4Ny0+YmFzZSk7CisJb3NkMTAxdDI1ODctPmJhc2UuZnVu Y3MgPSAmb3NkMTAxdDI1ODdfcGFuZWxfZnVuY3M7CisJb3NkMTAxdDI1ODctPmJhc2UuZGV2ID0g Jm9zZDEwMXQyNTg3LT5kc2ktPmRldjsKKworCXJldHVybiBkcm1fcGFuZWxfYWRkKCZvc2QxMDF0 MjU4Ny0+YmFzZSk7Cit9CisKK3N0YXRpYyBpbnQgb3NkMTAxdDI1ODdfcGFuZWxfcHJvYmUoc3Ry dWN0IG1pcGlfZHNpX2RldmljZSAqZHNpKQoreworCXN0cnVjdCBvc2QxMDF0MjU4N19wYW5lbCAq b3NkMTAxdDI1ODc7CisJY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqaWQ7CisJaW50IHJldDsK KworCWlkID0gb2ZfbWF0Y2hfbm9kZShvc2QxMDF0MjU4N19vZl9tYXRjaCwgZHNpLT5kZXYub2Zf bm9kZSk7CisJaWYgKCFpZCkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlkc2ktPmxhbmVzID0gNDsK Kwlkc2ktPmZvcm1hdCA9IE1JUElfRFNJX0ZNVF9SR0I4ODg7CisJZHNpLT5tb2RlX2ZsYWdzID0g TUlQSV9EU0lfTU9ERV9WSURFTyB8CisJCQkgIE1JUElfRFNJX01PREVfVklERU9fQlVSU1QgfAor CQkJICBNSVBJX0RTSV9NT0RFX1ZJREVPX1NZTkNfUFVMU0UgfAorCQkJICBNSVBJX0RTSV9NT0RF X0VPVF9QQUNLRVQ7CisKKwlvc2QxMDF0MjU4NyA9IGRldm1fa3phbGxvYygmZHNpLT5kZXYsIHNp emVvZigqb3NkMTAxdDI1ODcpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIW9zZDEwMXQyNTg3KQorCQly ZXR1cm4gLUVOT01FTTsKKworCW1pcGlfZHNpX3NldF9kcnZkYXRhKGRzaSwgb3NkMTAxdDI1ODcp OworCisJb3NkMTAxdDI1ODctPmRzaSA9IGRzaTsKKwlvc2QxMDF0MjU4Ny0+ZGVmYXVsdF9tb2Rl ID0gaWQtPmRhdGE7CisKKwlyZXQgPSBvc2QxMDF0MjU4N19wYW5lbF9hZGQob3NkMTAxdDI1ODcp OworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gbWlwaV9kc2lfYXR0YWNo KGRzaSk7CisJaWYgKHJldCkKKwkJZHJtX3BhbmVsX3JlbW92ZSgmb3NkMTAxdDI1ODctPmJhc2Up OworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBvc2QxMDF0MjU4N19wYW5lbF9yZW1v dmUoc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpKQoreworCXN0cnVjdCBvc2QxMDF0MjU4N19w YW5lbCAqb3NkMTAxdDI1ODcgPSBtaXBpX2RzaV9nZXRfZHJ2ZGF0YShkc2kpOworCWludCByZXQ7 CisKKwlyZXQgPSBvc2QxMDF0MjU4N19wYW5lbF9kaXNhYmxlKCZvc2QxMDF0MjU4Ny0+YmFzZSk7 CisJaWYgKHJldCA8IDApCisJCWRldl93YXJuKCZkc2ktPmRldiwgImZhaWxlZCB0byBkaXNhYmxl IHBhbmVsOiAlZFxuIiwgcmV0KTsKKworCW9zZDEwMXQyNTg3X3BhbmVsX3VucHJlcGFyZSgmb3Nk MTAxdDI1ODctPmJhc2UpOworCisJZHJtX3BhbmVsX3JlbW92ZSgmb3NkMTAxdDI1ODctPmJhc2Up OworCisJcmV0ID0gbWlwaV9kc2lfZGV0YWNoKGRzaSk7CisJaWYgKHJldCA8IDApCisJCWRldl9l cnIoJmRzaS0+ZGV2LCAiZmFpbGVkIHRvIGRldGFjaCBmcm9tIERTSSBob3N0OiAlZFxuIiwgcmV0 KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIG9zZDEwMXQyNTg3X3BhbmVsX3No dXRkb3duKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKK3sKKwlzdHJ1Y3Qgb3NkMTAxdDI1 ODdfcGFuZWwgKm9zZDEwMXQyNTg3ID0gbWlwaV9kc2lfZ2V0X2RydmRhdGEoZHNpKTsKKworCW9z ZDEwMXQyNTg3X3BhbmVsX2Rpc2FibGUoJm9zZDEwMXQyNTg3LT5iYXNlKTsKKwlvc2QxMDF0MjU4 N19wYW5lbF91bnByZXBhcmUoJm9zZDEwMXQyNTg3LT5iYXNlKTsKK30KKworc3RhdGljIHN0cnVj dCBtaXBpX2RzaV9kcml2ZXIgb3NkMTAxdDI1ODdfcGFuZWxfZHJpdmVyID0geworCS5kcml2ZXIg PSB7CisJCS5uYW1lID0gInBhbmVsLW9zZC1vc2QxMDF0MjU4Ny01M3RzIiwKKwkJLm9mX21hdGNo X3RhYmxlID0gb3NkMTAxdDI1ODdfb2ZfbWF0Y2gsCisJfSwKKwkucHJvYmUgPSBvc2QxMDF0MjU4 N19wYW5lbF9wcm9iZSwKKwkucmVtb3ZlID0gb3NkMTAxdDI1ODdfcGFuZWxfcmVtb3ZlLAorCS5z aHV0ZG93biA9IG9zZDEwMXQyNTg3X3BhbmVsX3NodXRkb3duLAorfTsKK21vZHVsZV9taXBpX2Rz aV9kcml2ZXIob3NkMTAxdDI1ODdfcGFuZWxfZHJpdmVyKTsKKworTU9EVUxFX0FVVEhPUigiUGV0 ZXIgVWpmYWx1c2kgPHBldGVyLnVqZmFsdXNpQHRpLmNvbT4iKTsKK01PRFVMRV9ERVNDUklQVElP TigiT1NEMTAxVDI1ODctNTNUUyBEU0kgcGFuZWwiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIi KTsKLS0gClBldGVyCgpUZXhhcyBJbnN0cnVtZW50cyBGaW5sYW5kIE95LCBQb3Jra2FsYW5rYXR1 IDIyLCAwMDE4MCBIZWxzaW5raS4KWS10dW5udXMvQnVzaW5lc3MgSUQ6IDA2MTU1MjEtNC4gS290 aXBhaWtrYS9Eb21pY2lsZTogSGVsc2lua2kKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbA==