From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Anholt Subject: [PATCH v6 5/5] drm/panel: Add support for the Raspberry Pi 7" Touchscreen. Date: Tue, 15 Aug 2017 16:47:22 -0700 Message-ID: <20170815234722.20700-5-eric@anholt.net> References: <20170815234722.20700-1-eric@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from anholt.net (anholt.net [50.246.234.109]) by gabe.freedesktop.org (Postfix) with ESMTP id 8E5146E398 for ; Tue, 15 Aug 2017 23:53:00 +0000 (UTC) In-Reply-To: <20170815234722.20700-1-eric@anholt.net> 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, Archit Taneja , Andrzej Hajda , Laurent Pinchart , Thierry Reding Cc: linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org VGhpcyBkcml2ZXIgY29tbXVuaWNhdGVzIHdpdGggdGhlIEF0bWVsIG1pY3JvY29udHJvbGxlciBm b3Igc2VxdWVuY2luZwp0aGUgcG93ZXJvbiBvZiB0aGUgVEMzNTg3NjIgRFNJLURQSSBicmlkZ2Ug YW5kIGNvbnRyb2xsaW5nIHRoZQpiYWNrbGlnaHQgUFdNLgoKdjI6IFNldCB0aGUgc2FtZSBkZWZh dWx0IG9yaWVudGF0aW9uIGFzIHRoZSBjbG9zZWQgc291cmNlIGZpcm13YXJlCiAgICB1c2VkLCB3 aGljaCBpcyB0aGUgYmVzdCBmb3Igdmlld2luZyBhbmdsZS4KdjM6IFJld3JpdGUgYXMgYW4gaTJj IGNsaWVudCBkcml2ZXIgYWZ0ZXIgYnJpZGdlIGRyaXZlciByZWplY3Rpb24uCnY0OiBGaW5pc2gg cHJvYmUgd2l0aG91dCB0aGUgRFNJIGhvc3QsIHVzaW5nIHRoZSBuZXcgZGVsYXllZAogICAgcmVn aXN0cmF0aW9uLCBhbmQgYXR0YWNoIHRvIHRoZSBob3N0IGR1cmluZyBtaXBpX2RzaV9kcml2ZXIg cHJvYmUuCnY1OiBSZXdvcmsgdG8gZHJvcCB0aGUgInByb2JlIHdpdGhvdXQgRFNJIGhvc3QiIG1v ZGUgYWdhaW4sIG5vdyB0aGF0CiAgICB2YzQgd2lsbCBjcmVhdGUgdGhlIGhvc3QgZWFybHkgb24u CgpTaWduZWQtb2ZmLWJ5OiBFcmljIEFuaG9sdCA8ZXJpY0BhbmhvbHQubmV0PgotLS0KIGRyaXZl cnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgIHwgICA4ICsKIGRy aXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IC4uLi9ncHUvZHJtL3BhbmVsL3BhbmVsLXJhc3BiZXJyeXBpLXRvdWNoc2NyZWVuLmMgIHwgNTE3 ICsrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA1MjYgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1yYXNwYmVy cnlwaS10b3VjaHNjcmVlbi5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tj b25maWcgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwppbmRleCBkODRhMDMxZmFlMjQu LmQ2ZjE5NjliOGEzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcK KysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKQEAgLTczLDYgKzczLDE0IEBAIGNv bmZpZyBEUk1fUEFORUxfUEFOQVNPTklDX1ZWWDEwRjAzNE4wMAogCSAgV1VYR0EgKDE5MjB4MTIw MCkgTm92YXRlayBOVDEzOTctYmFzZWQgRFNJIHBhbmVsIGFzIGZvdW5kIGluIHNvbWUKIAkgIFhw ZXJpYSBaMiB0YWJsZXRzCiAKK2NvbmZpZyBEUk1fUEFORUxfUkFTUEJFUlJZUElfVE9VQ0hTQ1JF RU4KKwl0cmlzdGF0ZSAiUmFzcGJlcnJ5IFBpIDctaW5jaCB0b3VjaHNjcmVlbiBwYW5lbCIKKwlk ZXBlbmRzIG9uIERSTV9NSVBJX0RTSQorCWhlbHAKKwkgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQg dG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBSYXNwYmVycnkKKwkgIFBpIDciIFRvdWNoc2NyZWVu LiAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwKKwkgIGNob29zZSBNIGhlcmUu CisKIGNvbmZpZyBEUk1fUEFORUxfU0FNU1VOR19TNkUzSEEyCiAJdHJpc3RhdGUgIlNhbXN1bmcg UzZFM0hBMiBEU0kgdmlkZW8gbW9kZSBwYW5lbCIKIAlkZXBlbmRzIG9uIE9GCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwv TWFrZWZpbGUKaW5kZXggOWY2NjEwZDA4YjAwLi5iZDE3ZmFjMjFjN2IgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwv TWFrZWZpbGUKQEAgLTQsNiArNCw3IEBAIG9iai0kKENPTkZJR19EUk1fUEFORUxfSU5OT0xVWF9Q MDc5WkNBKSArPSBwYW5lbC1pbm5vbHV4LXAwNzl6Y2Eubwogb2JqLSQoQ09ORklHX0RSTV9QQU5F TF9KRElfTFQwNzBNRTA1MDAwKSArPSBwYW5lbC1qZGktbHQwNzBtZTA1MDAwLm8KIG9iai0kKENP TkZJR19EUk1fUEFORUxfTEdfTEc0NTczKSArPSBwYW5lbC1sZy1sZzQ1NzMubwogb2JqLSQoQ09O RklHX0RSTV9QQU5FTF9QQU5BU09OSUNfVlZYMTBGMDM0TjAwKSArPSBwYW5lbC1wYW5hc29uaWMt dnZ4MTBmMDM0bjAwLm8KK29iai0kKENPTkZJR19EUk1fUEFORUxfUkFTUEJFUlJZUElfVE9VQ0hT Q1JFRU4pICs9IHBhbmVsLXJhc3BiZXJyeXBpLXRvdWNoc2NyZWVuLm8KIG9iai0kKENPTkZJR19E Uk1fUEFORUxfU0FNU1VOR19MRDkwNDApICs9IHBhbmVsLXNhbXN1bmctbGQ5MDQwLm8KIG9iai0k KENPTkZJR19EUk1fUEFORUxfU0FNU1VOR19TNkUzSEEyKSArPSBwYW5lbC1zYW1zdW5nLXM2ZTNo YTIubwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TQU1TVU5HX1M2RThBQTApICs9IHBhbmVsLXNh bXN1bmctczZlOGFhMC5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwt cmFzcGJlcnJ5cGktdG91Y2hzY3JlZW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1y YXNwYmVycnlwaS10b3VjaHNjcmVlbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uNDIzN2EwY2JjZGNjCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJt L3BhbmVsL3BhbmVsLXJhc3BiZXJyeXBpLXRvdWNoc2NyZWVuLmMKQEAgLTAsMCArMSw1MTcgQEAK Ky8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNi0yMDE3IEJyb2FkY29tCisgKgorICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbi4KKyAqCisgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgKGRlcml2ZWQgZnJvbSBwYW5lbC1z aW1wbGUuYykgYXJlOgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgTlZJRElBIENvcnBvcmF0 aW9uLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNl LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWIgbGljZW5zZSwK KyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy c29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZQorICog bmV4dCBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3Rh bnRpYWwgcG9ydGlvbnMKKyAqIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUg SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT UyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRI T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT IE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNU LCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5F Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1Mg SU4gVEhFIFNPRlRXQVJFLgorICovCisKKy8qKgorICogUmFzcGJlcnJ5IFBpIDciIHRvdWNoc2Ny ZWVuIHBhbmVsIGRyaXZlci4KKyAqCisgKiBUaGUgNyIgdG91Y2hzY3JlZW4gY29uc2lzdHMgb2Yg YSBEUEkgTENEIHBhbmVsLCBhIFRvc2hpYmEKKyAqIFRDMzU4NzYyWEJHIERTSS1EUEkgYnJpZGdl LCBhbmQgYW4gSTJDLWNvbm5lY3RlZCBBdG1lbCBBVFRJTlk4OC1NVVIKKyAqIGNvbnRyb2xsaW5n IHBvd2VyIG1hbmFnZW1lbnQsIHRoZSBMQ0QgUFdNLCBhbmQgaW5pdGlhbCByZWdpc3RlcgorICog c2V0dXAgb2YgdGhlIFRvaHNpYmEuCisgKgorICogVGhpcyBkcml2ZXIgY29udHJvbHMgdGhlIFRD MzU4NzYyIGFuZCBBVFRJTlk4OCwgcHJlc2VudGluZyBhIERTSQorICogZGV2aWNlIHdpdGggYSBk cm1fcGFuZWwuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGlu dXgvZXJyLmg+CisjaW5jbHVkZSA8bGludXgvZmIuaD4KKyNpbmNsdWRlIDxsaW51eC9ncGlvLmg+ CisjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L2kyYy5o PgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L29mLmg+CisjaW5j bHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfZ3JhcGguaD4KKyNp bmNsdWRlIDxsaW51eC9wbS5oPgorCisjaW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgorI2luY2x1 ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+CisjaW5jbHVkZSA8ZHJt L2RybV9taXBpX2RzaS5oPgorI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KKworI2RlZmluZSBS UElfRFNJX0RSSVZFUl9OQU1FICJycGktdHMtZHNpIgorCisvKiBJMkMgcmVnaXN0ZXJzIG9mIHRo ZSBBdG1lbCBtaWNyb2NvbnRyb2xsZXIuICovCitlbnVtIFJFR19BRERSIHsKKwlSRUdfSUQgPSAw eDgwLAorCVJFR19QT1JUQSwgLyogQklUKDIpIGZvciBob3Jpem9udGFsIGZsaXAsIEJJVCgzKSBm b3IgdmVydGljYWwgZmxpcCAqLworCVJFR19QT1JUQiwKKwlSRUdfUE9SVEMsCisJUkVHX1BPUlRE LAorCVJFR19QT1dFUk9OLAorCVJFR19QV00sCisJUkVHX0REUkEsCisJUkVHX0REUkIsCisJUkVH X0REUkMsCisJUkVHX0REUkQsCisJUkVHX1RFU1QsCisJUkVHX1dSX0FERFJMLAorCVJFR19XUl9B RERSSCwKKwlSRUdfUkVBREgsCisJUkVHX1JFQURMLAorCVJFR19XUklURUgsCisJUkVHX1dSSVRF TCwKKwlSRUdfSUQyLAorfTsKKworLyogV2Ugb25seSB0dXJuIHRoZSBQV00gb24gb3Igb2ZmLCB3 aXRob3V0IHZhcnlpbmcgdmFsdWVzLiAqLworI2RlZmluZSBSUElfVE9VQ0hTQ1JFRU5fTUFYX0JS SUdIVE5FU1MgMQorCisvKiBEU0kgRC1QSFkgTGF5ZXIgUmVnaXN0ZXJzICovCisjZGVmaW5lIEQw V19EUEhZQ09OVFRYCQkweDAwMDQKKyNkZWZpbmUgQ0xXX0RQSFlDT05UUlgJCTB4MDAyMAorI2Rl ZmluZSBEMFdfRFBIWUNPTlRSWAkJMHgwMDI0CisjZGVmaW5lIEQxV19EUEhZQ09OVFJYCQkweDAw MjgKKyNkZWZpbmUgQ09NX0RQSFlDT05UUlgJCTB4MDAzOAorI2RlZmluZSBDTFdfQ05UUkwJCTB4 MDA0MAorI2RlZmluZSBEMFdfQ05UUkwJCTB4MDA0NAorI2RlZmluZSBEMVdfQ05UUkwJCTB4MDA0 OAorI2RlZmluZSBERlRNT0RFX0NOVFJMCQkweDAwNTQKKworLyogRFNJIFBQSSBMYXllciBSZWdp c3RlcnMgKi8KKyNkZWZpbmUgUFBJX1NUQVJUUFBJCQkweDAxMDQKKyNkZWZpbmUgUFBJX0JVU1lQ UEkJCTB4MDEwOAorI2RlZmluZSBQUElfTElORUlOSVRDTlQJCTB4MDExMAorI2RlZmluZSBQUElf TFBUWFRJTUVDTlQJCTB4MDExNAorI2RlZmluZSBQUElfQ0xTX0FUTVIJCTB4MDE0MAorI2RlZmlu ZSBQUElfRDBTX0FUTVIJCTB4MDE0NAorI2RlZmluZSBQUElfRDFTX0FUTVIJCTB4MDE0OAorI2Rl ZmluZSBQUElfRDBTX0NMUlNJUE9DT1VOVAkweDAxNjQKKyNkZWZpbmUgUFBJX0QxU19DTFJTSVBP Q09VTlQJMHgwMTY4CisjZGVmaW5lIENMU19QUkUJCQkweDAxODAKKyNkZWZpbmUgRDBTX1BSRQkJ CTB4MDE4NAorI2RlZmluZSBEMVNfUFJFCQkJMHgwMTg4CisjZGVmaW5lIENMU19QUkVQCQkweDAx QTAKKyNkZWZpbmUgRDBTX1BSRVAJCTB4MDFBNAorI2RlZmluZSBEMVNfUFJFUAkJMHgwMUE4Cisj ZGVmaW5lIENMU19aRVJPCQkweDAxQzAKKyNkZWZpbmUgRDBTX1pFUk8JCTB4MDFDNAorI2RlZmlu ZSBEMVNfWkVSTwkJMHgwMUM4CisjZGVmaW5lIFBQSV9DTFJGTEcJCTB4MDFFMAorI2RlZmluZSBQ UElfQ0xSU0lQTwkJMHgwMUU0CisjZGVmaW5lIEhTVElNRU9VVAkJMHgwMUYwCisjZGVmaW5lIEhT VElNRU9VVEVOQUJMRQkJMHgwMUY0CisKKy8qIERTSSBQcm90b2NvbCBMYXllciBSZWdpc3RlcnMg Ki8KKyNkZWZpbmUgRFNJX1NUQVJURFNJCQkweDAyMDQKKyNkZWZpbmUgRFNJX0JVU1lEU0kJCTB4 MDIwOAorI2RlZmluZSBEU0lfTEFORUVOQUJMRQkJMHgwMjEwCisjIGRlZmluZSBEU0lfTEFORUVO QUJMRV9DTE9DSwkJQklUKDApCisjIGRlZmluZSBEU0lfTEFORUVOQUJMRV9EMAkJQklUKDEpCisj IGRlZmluZSBEU0lfTEFORUVOQUJMRV9EMQkJQklUKDIpCisKKyNkZWZpbmUgRFNJX0xBTkVTVEFU VVMwCQkweDAyMTQKKyNkZWZpbmUgRFNJX0xBTkVTVEFUVVMxCQkweDAyMTgKKyNkZWZpbmUgRFNJ X0lOVFNUQVRVUwkJMHgwMjIwCisjZGVmaW5lIERTSV9JTlRNQVNLCQkweDAyMjQKKyNkZWZpbmUg RFNJX0lOVENMUgkJMHgwMjI4CisjZGVmaW5lIERTSV9MUFRYVE8JCTB4MDIzMAorI2RlZmluZSBE U0lfTU9ERQkJMHgwMjYwCisjZGVmaW5lIERTSV9QQVlMT0FEMAkJMHgwMjY4CisjZGVmaW5lIERT SV9QQVlMT0FEMQkJMHgwMjZDCisjZGVmaW5lIERTSV9TSE9SVFBLVERBVAkJMHgwMjcwCisjZGVm aW5lIERTSV9TSE9SVFBLVFJFUQkJMHgwMjc0CisjZGVmaW5lIERTSV9CVEFTVEEJCTB4MDI3OAor I2RlZmluZSBEU0lfQlRBQ0xSCQkweDAyN0MKKworLyogRFNJIEdlbmVyYWwgUmVnaXN0ZXJzICov CisjZGVmaW5lIERTSUVSUkNOVAkJMHgwMzAwCisjZGVmaW5lIERTSVNJR01PRAkJMHgwMzA0CisK Ky8qIERTSSBBcHBsaWNhdGlvbiBMYXllciBSZWdpc3RlcnMgKi8KKyNkZWZpbmUgQVBMQ1RSTAkJ CTB4MDQwMAorI2RlZmluZSBBUExTVEFUCQkJMHgwNDA0CisjZGVmaW5lIEFQTEVSUgkJCTB4MDQw OAorI2RlZmluZSBQV1JNT0QJCQkweDA0MEMKKyNkZWZpbmUgUkRQS1RMTgkJCTB4MDQxMAorI2Rl ZmluZSBQWExGTVQJCQkweDA0MTQKKyNkZWZpbmUgTUVNV1JDTUQJCTB4MDQxOAorCisvKiBMQ0RD L0RQSSBIb3N0IFJlZ2lzdGVycyAqLworI2RlZmluZSBMQ0RDVFJMCQkJMHgwNDIwCisjZGVmaW5l IEhTUgkJCTB4MDQyNAorI2RlZmluZSBIRElTUFIJCQkweDA0MjgKKyNkZWZpbmUgVlNSCQkJMHgw NDJDCisjZGVmaW5lIFZESVNQUgkJCTB4MDQzMAorI2RlZmluZSBWRlVFTgkJCTB4MDQzNAorCisv KiBEQkktQiBIb3N0IFJlZ2lzdGVycyAqLworI2RlZmluZSBEQklCQ1RSTAkJMHgwNDQwCisKKy8q IFNQSSBNYXN0ZXIgUmVnaXN0ZXJzICovCisjZGVmaW5lIFNQSUNNUgkJCTB4MDQ1MAorI2RlZmlu ZSBTUElUQ1IJCQkweDA0NTQKKworLyogU3lzdGVtIENvbnRyb2xsZXIgUmVnaXN0ZXJzICovCisj ZGVmaW5lIFNZU1NUQVQJCQkweDA0NjAKKyNkZWZpbmUgU1lTQ1RSTAkJCTB4MDQ2NAorI2RlZmlu ZSBTWVNQTEwxCQkJMHgwNDY4CisjZGVmaW5lIFNZU1BMTDIJCQkweDA0NkMKKyNkZWZpbmUgU1lT UExMMwkJCTB4MDQ3MAorI2RlZmluZSBTWVNQTUNUUkwJCTB4MDQ3QworCisvKiBHUElPIFJlZ2lz dGVycyAqLworI2RlZmluZSBHUElPQwkJCTB4MDQ4MAorI2RlZmluZSBHUElPTwkJCTB4MDQ4NAor I2RlZmluZSBHUElPSQkJCTB4MDQ4OAorCisvKiBJMkMgUmVnaXN0ZXJzICovCisjZGVmaW5lIEky Q0NMS0NUUkwJCTB4MDQ5MAorCisvKiBDaGlwL1JldiBSZWdpc3RlcnMgKi8KKyNkZWZpbmUgSURS RUcJCQkweDA0QTAKKworLyogRGVidWcgUmVnaXN0ZXJzICovCisjZGVmaW5lIFdDTURRVUVVRQkJ MHgwNTAwCisjZGVmaW5lIFJDTURRVUVVRQkJMHgwNTA0CisKK3N0cnVjdCBycGlfdG91Y2hzY3Jl ZW4geworCXN0cnVjdCBkcm1fcGFuZWwgYmFzZTsKKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpk c2k7CisJc3RydWN0IGkyY19jbGllbnQgKmkyYzsKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSBycGlfdG91Y2hzY3JlZW5fbW9kZXNbXSA9IHsKKwl7CisJCS8qIE1v ZGVsaW5lIGNvbWVzIGZyb20gdGhlIFJhc3BiZXJyeSBQaSBmaXJtd2FyZSwgd2l0aCBIRlA9MQor CQkgKiBwbHVnZ2VkIGluIGFuZCBjbG9jayByZS1jb21wdXRlZCBmcm9tIHRoYXQuCisJCSAqLwor CQkuY2xvY2sgPSAyNTk3OTQwMCAvIDEwMDAsCisJCS5oZGlzcGxheSA9IDgwMCwKKwkJLmhzeW5j X3N0YXJ0ID0gODAwICsgMSwKKwkJLmhzeW5jX2VuZCA9IDgwMCArIDEgKyAyLAorCQkuaHRvdGFs ID0gODAwICsgMSArIDIgKyA0NiwKKwkJLnZkaXNwbGF5ID0gNDgwLAorCQkudnN5bmNfc3RhcnQg PSA0ODAgKyA3LAorCQkudnN5bmNfZW5kID0gNDgwICsgNyArIDIsCisJCS52dG90YWwgPSA0ODAg KyA3ICsgMiArIDIxLAorCQkudnJlZnJlc2ggPSA2MCwKKwl9LAorfTsKKworc3RhdGljIHN0cnVj dCBycGlfdG91Y2hzY3JlZW4gKnBhbmVsX3RvX3RzKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQor eworCXJldHVybiBjb250YWluZXJfb2YocGFuZWwsIHN0cnVjdCBycGlfdG91Y2hzY3JlZW4sIGJh c2UpOworfQorCitzdGF0aWMgdTggcnBpX3RvdWNoc2NyZWVuX2kyY19yZWFkKHN0cnVjdCBycGlf dG91Y2hzY3JlZW4gKnRzLCB1OCByZWcpCit7CisJcmV0dXJuIGkyY19zbWJ1c19yZWFkX2J5dGVf ZGF0YSh0cy0+aTJjLCByZWcpOworfQorCitzdGF0aWMgdm9pZCBycGlfdG91Y2hzY3JlZW5faTJj X3dyaXRlKHN0cnVjdCBycGlfdG91Y2hzY3JlZW4gKnRzLAorCQkJCSAgICAgIHU4IHJlZywgdTgg dmFsKQoreworCWludCByZXQ7CisKKwlyZXQgPSBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKHRz LT5pMmMsIHJlZywgdmFsKTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKCZ0cy0+ZHNpLT5kZXYsICJJ MkMgd3JpdGUgZmFpbGVkOiAlZFxuIiwgcmV0KTsKK30KKworc3RhdGljIGludCBycGlfdG91Y2hz Y3JlZW5fd3JpdGUoc3RydWN0IHJwaV90b3VjaHNjcmVlbiAqdHMsIHUxNiByZWcsIHUzMiB2YWwp Cit7CisjaWYgMAorCS8qIFRoZSBmaXJtd2FyZSB1c2VzIExQIERTSSB0cmFuc2FjdGlvbnMgbGlr ZSB0aGlzIHRvIGJyaW5nIHVwCisJICogdGhlIGhhcmR3YXJlLCB3aGljaCBzaG91bGQgYmUgZmFz dGVyIHRoYW4gdXNpbmcgSTJDIHRvIHRoZW4KKwkgKiBwYXNzIHRvIHRoZSBUb3NoaWJhLiAgSG93 ZXZlciwgSSB3YXMgdW5hYmxlIHRvIGdldCBpdCB0bworCSAqIHdvcmsuCisJICovCisJdTggbXNn W10gPSB7CisJCXJlZywKKwkJcmVnID4+IDgsCisJCXZhbCwKKwkJdmFsID4+IDgsCisJCXZhbCA+ PiAxNiwKKwkJdmFsID4+IDI0LAorCX07CisKKwltaXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVyKHRz LT5kc2ksIG1zZywgc2l6ZW9mKG1zZykpOworI2Vsc2UKKwlycGlfdG91Y2hzY3JlZW5faTJjX3dy aXRlKHRzLCBSRUdfV1JfQUREUkgsIHJlZyA+PiA4KTsKKwlycGlfdG91Y2hzY3JlZW5faTJjX3dy aXRlKHRzLCBSRUdfV1JfQUREUkwsIHJlZyk7CisJcnBpX3RvdWNoc2NyZWVuX2kyY193cml0ZSh0 cywgUkVHX1dSSVRFSCwgdmFsID4+IDgpOworCXJwaV90b3VjaHNjcmVlbl9pMmNfd3JpdGUodHMs IFJFR19XUklURUwsIHZhbCk7CisjZW5kaWYKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IHJwaV90b3VjaHNjcmVlbl9kaXNhYmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0 cnVjdCBycGlfdG91Y2hzY3JlZW4gKnRzID0gcGFuZWxfdG9fdHMocGFuZWwpOworCisJcnBpX3Rv dWNoc2NyZWVuX2kyY193cml0ZSh0cywgUkVHX1BXTSwgMCk7CisKKwlycGlfdG91Y2hzY3JlZW5f aTJjX3dyaXRlKHRzLCBSRUdfUE9XRVJPTiwgMCk7CisJdWRlbGF5KDEpOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgcnBpX3RvdWNoc2NyZWVuX25vb3Aoc3RydWN0IGRybV9wYW5lbCAq cGFuZWwpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcnBpX3RvdWNoc2NyZWVuX2Vu YWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3QgcnBpX3RvdWNoc2NyZWVu ICp0cyA9IHBhbmVsX3RvX3RzKHBhbmVsKTsKKwlpbnQgaTsKKworCXJwaV90b3VjaHNjcmVlbl9p MmNfd3JpdGUodHMsIFJFR19QT1dFUk9OLCAxKTsKKwkvKiBXYWl0IGZvciBuUFdSRFdOIHRvIGdv IGxvdyB0byBpbmRpY2F0ZSBwb3dlcm9uIGlzIGRvbmUuICovCisJZm9yIChpID0gMDsgaSA8IDEw MDsgaSsrKSB7CisJCWlmIChycGlfdG91Y2hzY3JlZW5faTJjX3JlYWQodHMsIFJFR19QT1JUQikg JiAxKQorCQkJYnJlYWs7CisJfQorCisJcnBpX3RvdWNoc2NyZWVuX3dyaXRlKHRzLCBEU0lfTEFO RUVOQUJMRSwKKwkJCSAgICAgIERTSV9MQU5FRU5BQkxFX0NMT0NLIHwKKwkJCSAgICAgIERTSV9M QU5FRU5BQkxFX0QwKTsKKwlycGlfdG91Y2hzY3JlZW5fd3JpdGUodHMsIFBQSV9EMFNfQ0xSU0lQ T0NPVU5ULCAweDA1KTsKKwlycGlfdG91Y2hzY3JlZW5fd3JpdGUodHMsIFBQSV9EMVNfQ0xSU0lQ T0NPVU5ULCAweDA1KTsKKwlycGlfdG91Y2hzY3JlZW5fd3JpdGUodHMsIFBQSV9EMFNfQVRNUiwg MHgwMCk7CisJcnBpX3RvdWNoc2NyZWVuX3dyaXRlKHRzLCBQUElfRDFTX0FUTVIsIDB4MDApOwor CXJwaV90b3VjaHNjcmVlbl93cml0ZSh0cywgUFBJX0xQVFhUSU1FQ05ULCAweDAzKTsKKworCXJw aV90b3VjaHNjcmVlbl93cml0ZSh0cywgU1BJQ01SLCAweDAwKTsKKwlycGlfdG91Y2hzY3JlZW5f d3JpdGUodHMsIExDRENUUkwsIDB4MDAxMDAxNTApOworCXJwaV90b3VjaHNjcmVlbl93cml0ZSh0 cywgU1lTQ1RSTCwgMHgwNDBmKTsKKwltc2xlZXAoMTAwKTsKKworCXJwaV90b3VjaHNjcmVlbl93 cml0ZSh0cywgUFBJX1NUQVJUUFBJLCAweDAxKTsKKwlycGlfdG91Y2hzY3JlZW5fd3JpdGUodHMs IERTSV9TVEFSVERTSSwgMHgwMSk7CisJbXNsZWVwKDEwMCk7CisKKwkvKiBUdXJuIG9uIHRoZSBi YWNrbGlnaHQuICovCisJcnBpX3RvdWNoc2NyZWVuX2kyY193cml0ZSh0cywgUkVHX1BXTSwgMjU1 KTsKKworCS8qIERlZmF1bHQgdG8gdGhlIHNhbWUgb3JpZW50YXRpb24gYXMgdGhlIGNsb3NlZCBz b3VyY2UKKwkgKiBmaXJtd2FyZSB1c2VkIGZvciB0aGUgcGFuZWwuICBSdW50aW1lIHJvdGF0aW9u CisJICogY29uZmlndXJhdGlvbiB3aWxsIGJlIHN1cHBvcnRlZCB1c2luZyBWQzQncyBwbGFuZQor CSAqIG9yaWVudGF0aW9uIGJpdHMuCisJICovCisJcnBpX3RvdWNoc2NyZWVuX2kyY193cml0ZSh0 cywgUkVHX1BPUlRBLCBCSVQoMikpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcnBp X3RvdWNoc2NyZWVuX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gcGFuZWwtPmNvbm5lY3RvcjsKKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZHJtID0gcGFuZWwtPmRybTsKKwl1bnNpZ25lZCBpbnQgaSwgbnVtID0gMDsK KwlzdGF0aWMgY29uc3QgdTMyIGJ1c19mb3JtYXQgPSBNRURJQV9CVVNfRk1UX1JHQjg4OF8xWDI0 OworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocnBpX3RvdWNoc2NyZWVuX21vZGVzKTsg aSsrKSB7CisJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptID0gJnJwaV90b3VjaHNj cmVlbl9tb2Rlc1tpXTsKKwkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7CisKKwkJbW9k ZSA9IGRybV9tb2RlX2R1cGxpY2F0ZShkcm0sIG0pOworCQlpZiAoIW1vZGUpIHsKKwkJCWRldl9l cnIoZHJtLT5kZXYsICJmYWlsZWQgdG8gYWRkIG1vZGUgJXV4JXVAJXVcbiIsCisJCQkJbS0+aGRp c3BsYXksIG0tPnZkaXNwbGF5LCBtLT52cmVmcmVzaCk7CisJCQljb250aW51ZTsKKwkJfQorCisJ CW1vZGUtPnR5cGUgfD0gRFJNX01PREVfVFlQRV9EUklWRVI7CisKKwkJaWYgKGkgPT0gMCkKKwkJ CW1vZGUtPnR5cGUgfD0gRFJNX01PREVfVFlQRV9QUkVGRVJSRUQ7CisKKwkJZHJtX21vZGVfc2V0 X25hbWUobW9kZSk7CisKKwkJZHJtX21vZGVfcHJvYmVkX2FkZChjb25uZWN0b3IsIG1vZGUpOwor CQludW0rKzsKKwl9CisKKwljb25uZWN0b3ItPmRpc3BsYXlfaW5mby5icGMgPSA4OworCWNvbm5l Y3Rvci0+ZGlzcGxheV9pbmZvLndpZHRoX21tID0gMTU0OworCWNvbm5lY3Rvci0+ZGlzcGxheV9p bmZvLmhlaWdodF9tbSA9IDg2OworCWRybV9kaXNwbGF5X2luZm9fc2V0X2J1c19mb3JtYXRzKCZj b25uZWN0b3ItPmRpc3BsYXlfaW5mbywKKwkJCQkJICZidXNfZm9ybWF0LCAxKTsKKworCXJldHVy biBudW07Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BhbmVsX2Z1bmNzIHJwaV90b3Vj aHNjcmVlbl9mdW5jcyA9IHsKKwkuZGlzYWJsZSA9IHJwaV90b3VjaHNjcmVlbl9kaXNhYmxlLAor CS51bnByZXBhcmUgPSBycGlfdG91Y2hzY3JlZW5fbm9vcCwKKwkucHJlcGFyZSA9IHJwaV90b3Vj aHNjcmVlbl9ub29wLAorCS5lbmFibGUgPSBycGlfdG91Y2hzY3JlZW5fZW5hYmxlLAorCS5nZXRf bW9kZXMgPSBycGlfdG91Y2hzY3JlZW5fZ2V0X21vZGVzLAorfTsKKworc3RhdGljIGludCBycGlf dG91Y2hzY3JlZW5fcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYywKKwkJCQkgY29uc3Qgc3Ry dWN0IGkyY19kZXZpY2VfaWQgKmlkKQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZpMmMtPmRl djsKKwlzdHJ1Y3QgcnBpX3RvdWNoc2NyZWVuICp0czsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKmVu ZHBvaW50LCAqZHNpX2hvc3Rfbm9kZTsKKwlzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdDsKKwlp bnQgcmV0LCB2ZXI7CisJc3RydWN0IG1pcGlfZHNpX2RldmljZV9pbmZvIGluZm8gPSB7CisJCS50 eXBlID0gUlBJX0RTSV9EUklWRVJfTkFNRSwKKwkJLmNoYW5uZWwgPSAwLAorCQkubm9kZSA9IE5V TEwsCisJfTsKKworCXRzID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCp0cyksIEdGUF9LRVJO RUwpOworCWlmICghdHMpCisJCXJldHVybiAtRU5PTUVNOworCisJaTJjX3NldF9jbGllbnRkYXRh KGkyYywgdHMpOworCisJdHMtPmkyYyA9IGkyYzsKKworCXZlciA9IHJwaV90b3VjaHNjcmVlbl9p MmNfcmVhZCh0cywgUkVHX0lEKTsKKwlpZiAodmVyIDwgMCkgeworCQlkZXZfZXJyKGRldiwgIkF0 bWVsIEkyQyByZWFkIGZhaWxlZDogJWRcbiIsIHZlcik7CisJCXJldHVybiAtRU5PREVWOworCX0K KworCXN3aXRjaCAodmVyKSB7CisJY2FzZSAweGRlOiAvKiB2ZXIgMSAqLworCWNhc2UgMHhjMzog LyogdmVyIDIgKi8KKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZGV2X2VycihkZXYsICJVbmtub3du IEF0bWVsIGZpcm13YXJlIHJldmlzaW9uOiAweCUwMnhcbiIsIHZlcik7CisJCXJldHVybiAtRU5P REVWOworCX0KKworCS8qIFR1cm4gb2ZmIGF0IGJvb3QsIHNvIHdlIGNhbiBjbGVhbmx5IHNlcXVl bmNlIHBvd2VyaW5nIG9uLiAqLworCXJwaV90b3VjaHNjcmVlbl9pMmNfd3JpdGUodHMsIFJFR19Q T1dFUk9OLCAwKTsKKworCS8qIExvb2sgdXAgdGhlIERTSSBob3N0LiAgSXQgbmVlZHMgdG8gcHJv YmUgYmVmb3JlIHdlIGRvLiAqLworCWVuZHBvaW50ID0gb2ZfZ3JhcGhfZ2V0X25leHRfZW5kcG9p bnQoZGV2LT5vZl9ub2RlLCBOVUxMKTsKKwlkc2lfaG9zdF9ub2RlID0gb2ZfZ3JhcGhfZ2V0X3Jl bW90ZV9wb3J0X3BhcmVudChlbmRwb2ludCk7CisJaG9zdCA9IG9mX2ZpbmRfbWlwaV9kc2lfaG9z dF9ieV9ub2RlKGRzaV9ob3N0X25vZGUpOworCW9mX25vZGVfcHV0KGRzaV9ob3N0X25vZGUpOwor CWlmICghaG9zdCkgeworCQlvZl9ub2RlX3B1dChlbmRwb2ludCk7CisJCXJldHVybiAtRVBST0JF X0RFRkVSOworCX0KKworCWluZm8ubm9kZSA9IG9mX2dyYXBoX2dldF9yZW1vdGVfcG9ydChlbmRw b2ludCk7CisJb2Zfbm9kZV9wdXQoZW5kcG9pbnQpOworCisJdHMtPmRzaSA9IG1pcGlfZHNpX2Rl dmljZV9yZWdpc3Rlcl9mdWxsKGhvc3QsICZpbmZvKTsKKwlpZiAoSVNfRVJSKHRzLT5kc2kpKSB7 CisJCWRldl9lcnIoZGV2LCAiRFNJIGRldmljZSByZWdpc3RyYXRpb24gZmFpbGVkOiAlbGRcbiIs CisJCQlQVFJfRVJSKHRzLT5kc2kpKTsKKwkJcmV0dXJuIFBUUl9FUlIodHMtPmRzaSk7CisJfQor CisJdHMtPmJhc2UuZGV2ID0gZGV2OworCXRzLT5iYXNlLmZ1bmNzID0gJnJwaV90b3VjaHNjcmVl bl9mdW5jczsKKworCS8qIFRoaXMgYXBwZWFycyBsYXN0LCBhcyBpdCdzIHdoYXQgd2lsbCB1bmJs b2NrIHRoZSBEU0kgaG9zdAorCSAqIGRyaXZlcidzIGNvbXBvbmVudCBiaW5kIGZ1bmN0aW9uLgor CSAqLworCXJldCA9IGRybV9wYW5lbF9hZGQoJnRzLT5iYXNlKTsKKwlpZiAocmV0KQorCQlyZXR1 cm4gcmV0OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcnBpX3RvdWNoc2NyZWVuX3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQoreworCXN0cnVjdCBycGlfdG91Y2hzY3JlZW4g KnRzID0gaTJjX2dldF9jbGllbnRkYXRhKGkyYyk7CisKKwltaXBpX2RzaV9kZXRhY2godHMtPmRz aSk7CisKKwlkcm1fcGFuZWxfcmVtb3ZlKCZ0cy0+YmFzZSk7CisKKwltaXBpX2RzaV9kZXZpY2Vf dW5yZWdpc3Rlcih0cy0+ZHNpKTsKKwlrZnJlZSh0cy0+ZHNpKTsKKworCXJldHVybiAwOworfQor CitzdGF0aWMgaW50IHJwaV90b3VjaHNjcmVlbl9kc2lfcHJvYmUoc3RydWN0IG1pcGlfZHNpX2Rl dmljZSAqZHNpKQoreworCWludCByZXQ7CisKKwlkc2ktPm1vZGVfZmxhZ3MgPSAoTUlQSV9EU0lf TU9ERV9WSURFTyB8CisJCQkgICBNSVBJX0RTSV9NT0RFX1ZJREVPX1NZTkNfUFVMU0UgfAorCQkJ ICAgTUlQSV9EU0lfTU9ERV9MUE0pOworCWRzaS0+Zm9ybWF0ID0gTUlQSV9EU0lfRk1UX1JHQjg4 ODsKKwlkc2ktPmxhbmVzID0gMTsKKworCXJldCA9IG1pcGlfZHNpX2F0dGFjaChkc2kpOworCisJ aWYgKHJldCkKKwkJZGV2X2VycigmZHNpLT5kZXYsICJmYWlsZWQgdG8gYXR0YWNoIGRzaSB0byBo b3N0OiAlZFxuIiwgcmV0KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgbWlw aV9kc2lfZHJpdmVyIHJwaV90b3VjaHNjcmVlbl9kc2lfZHJpdmVyID0geworCS5kcml2ZXIubmFt ZSA9IFJQSV9EU0lfRFJJVkVSX05BTUUsCisJLnByb2JlID0gcnBpX3RvdWNoc2NyZWVuX2RzaV9w cm9iZSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJwaV90b3VjaHNj cmVlbl9vZl9pZHNbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gInJhc3BiZXJyeXBpLDdpbmNoLXRv dWNoc2NyZWVuLXBhbmVsIiB9LAorCXsgfSAvKiBzZW50aW5lbCAqLworfTsKK01PRFVMRV9ERVZJ Q0VfVEFCTEUob2YsIHJwaV90b3VjaHNjcmVlbl9vZl9pZHMpOworCitzdGF0aWMgc3RydWN0IGky Y19kcml2ZXIgcnBpX3RvdWNoc2NyZWVuX2RyaXZlciA9IHsKKwkuZHJpdmVyID0geworCQkubmFt ZSA9ICJycGlfdG91Y2hzY3JlZW4iLAorCQkub2ZfbWF0Y2hfdGFibGUgPSBycGlfdG91Y2hzY3Jl ZW5fb2ZfaWRzLAorCX0sCisJLnByb2JlID0gcnBpX3RvdWNoc2NyZWVuX3Byb2JlLAorCS5yZW1v dmUgPSBycGlfdG91Y2hzY3JlZW5fcmVtb3ZlLAorfTsKKworc3RhdGljIGludCBfX2luaXQgcnBp X3RvdWNoc2NyZWVuX2luaXQodm9pZCkKK3sKKwltaXBpX2RzaV9kcml2ZXJfcmVnaXN0ZXIoJnJw aV90b3VjaHNjcmVlbl9kc2lfZHJpdmVyKTsKKwlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnJwaV90 b3VjaHNjcmVlbl9kcml2ZXIpOworfQorbW9kdWxlX2luaXQocnBpX3RvdWNoc2NyZWVuX2luaXQp OworCitzdGF0aWMgdm9pZCBfX2V4aXQgcnBpX3RvdWNoc2NyZWVuX2V4aXQodm9pZCkKK3sKKwlp MmNfZGVsX2RyaXZlcigmcnBpX3RvdWNoc2NyZWVuX2RyaXZlcik7CisJbWlwaV9kc2lfZHJpdmVy X3VucmVnaXN0ZXIoJnJwaV90b3VjaHNjcmVlbl9kc2lfZHJpdmVyKTsKK30KK21vZHVsZV9leGl0 KHJwaV90b3VjaHNjcmVlbl9leGl0KTsKKworTU9EVUxFX0FVVEhPUigiRXJpYyBBbmhvbHQgPGVy aWNAYW5ob2x0Lm5ldD4iKTsKK01PRFVMRV9ERVNDUklQVElPTigiUmFzcGJlcnJ5IFBpIDctaW5j aCB0b3VjaHNjcmVlbiBkcml2ZXIiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKLS0gCjIu MTQuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==