From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Anholt Subject: [PATCH 09/11] drm/panel: Add support for the Raspberry Pi 7" Touchscreen. Date: Wed, 14 Dec 2016 11:46:19 -0800 Message-ID: <20161214194621.16499-10-eric@anholt.net> References: <20161214194621.16499-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 222976E8A2 for ; Wed, 14 Dec 2016 19:46:38 +0000 (UTC) In-Reply-To: <20161214194621.16499-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: Florian Fainelli , Michael Turquette , Stephen Boyd , Rob Herring , Mark Rutland , dri-devel@lists.freedesktop.org, Thierry Reding Cc: Stephen Warren , Lee Jones , linux-kernel@vger.kernel.org, bcm-kernel-feedback-list@broadcom.com, linux-rpi-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org VGhpcyBkcml2ZXIgY29tbXVuaWNhdGVzIHdpdGggdGhlIEF0bWVsIG1pY3JvY29udHJvbGxlciBm b3Igc2VxdWVuY2luZwp0aGUgcG93ZXJvbiBvZiB0aGUgVEMzNTg3NjIgRFNJLURQSSBicmlkZ2Ug YW5kIGNvbnRyb2xsaW5nIHRoZQpiYWNrbGlnaHQgUFdNLgoKVGhlIGZvbGxvd2luZyBsaW5lcyBh cmUgcmVxdWlyZWQgaW4gY29uZmlnLnR4dCwgdG8ga2VlcCB0aGUgZmlybXdhcmUKZnJvbSB0cnlp bmcgdG8gYmFzaCBvdXIgSTJDIGxpbmVzIGFuZCBzdGVhbCB0aGUgRFNJIGludGVycnVwdHM6Cgog ICAgZGlzYWJsZV90b3VjaHNjcmVlbj0xCiAgICBpZ25vcmVfbGNkPTIKICAgIG1hc2tfZ3B1X2lu dGVycnVwdDE9MHgxMDAwCgpUaGlzIG1lYW5zIHRoYXQgdGhlIGZpcm13YXJlIHdvbid0IHBvd2Vy IG9uIHRoZSBwYW5lbCBhdCBib290IHRpbWUgKG5vCnJhaW5ib3cpIGFuZCB0aGUgdG91Y2hzY3Jl ZW4gaW5wdXQgd29uJ3Qgd29yay4gIFRoZSBuYXRpdmUgaW5wdXQKZHJpdmVyIGZvciB0aGUgdG91 Y2hzY3JlZW4gc3RpbGwgbmVlZHMgdG8gYmUgd3JpdHRlbi4KClNpZ25lZC1vZmYtYnk6IEVyaWMg QW5ob2x0IDxlcmljQGFuaG9sdC5uZXQ+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25m aWcgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKwogZHJpdmVycy9ncHUvZHJtL3BhbmVsL01h a2VmaWxlICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL2dwdS9kcm0vcGFuZWwvcGFu ZWwtcmFzcGJlcnJ5cGktdG91Y2hzY3JlZW4uYyAgfCA1MDkgKysrKysrKysrKysrKysrKysrKysr CiAzIGZpbGVzIGNoYW5nZWQsIDUxOCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXJhc3BiZXJyeXBpLXRvdWNoc2NyZWVuLmMKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2Ry bS9wYW5lbC9LY29uZmlnCmluZGV4IDYyYWJhOTc2ZTc0NC4uZGU3YTU2YWI3NThiIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0v cGFuZWwvS2NvbmZpZwpAQCAtNTIsNiArNTIsMTQgQEAgY29uZmlnIERSTV9QQU5FTF9QQU5BU09O SUNfVlZYMTBGMDM0TjAwCiAJICBXVVhHQSAoMTkyMHgxMjAwKSBOb3ZhdGVrIE5UMTM5Ny1iYXNl ZCBEU0kgcGFuZWwgYXMgZm91bmQgaW4gc29tZQogCSAgWHBlcmlhIFoyIHRhYmxldHMKIAorY29u ZmlnIERSTV9QQU5FTF9SQVNQQkVSUllQSV9UT1VDSFNDUkVFTgorCXRyaXN0YXRlICJSYXNwYmVy cnkgUGkgNy1pbmNoIHRvdWNoc2NyZWVuIHBhbmVsIgorCWRlcGVuZHMgb24gRFJNX01JUElfRFNJ CisJaGVscAorCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3Ig dGhlIFJhc3BiZXJyeQorCSAgUGkgNyIgVG91Y2hzY3JlZW4uICBUbyBjb21waWxlIHRoaXMgZHJp dmVyIGFzIGEgbW9kdWxlLAorCSAgY2hvb3NlIE0gaGVyZS4KKwogY29uZmlnIERSTV9QQU5FTF9T QU1TVU5HX1M2RThBQTAKIAl0cmlzdGF0ZSAiU2Ftc3VuZyBTNkU4QUEwIERTSSB2aWRlbyBtb2Rl IHBhbmVsIgogCWRlcGVuZHMgb24gT0YKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5l bC9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQppbmRleCBhNWM3ZWMw MjM2ZTAuLmU4YTdlZDI4MGZmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01h a2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQpAQCAtMiw2ICsyLDcg QEAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TSU1QTEUpICs9IHBhbmVsLXNpbXBsZS5vCiBvYmot JChDT05GSUdfRFJNX1BBTkVMX0pESV9MVDA3ME1FMDUwMDApICs9IHBhbmVsLWpkaS1sdDA3MG1l MDUwMDAubwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9MR19MRzQ1NzMpICs9IHBhbmVsLWxnLWxn NDU3My5vCiBvYmotJChDT05GSUdfRFJNX1BBTkVMX1BBTkFTT05JQ19WVlgxMEYwMzROMDApICs9 IHBhbmVsLXBhbmFzb25pYy12dngxMGYwMzRuMDAubworb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9S QVNQQkVSUllQSV9UT1VDSFNDUkVFTikgKz0gcGFuZWwtcmFzcGJlcnJ5cGktdG91Y2hzY3JlZW4u bwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TQU1TVU5HX0xEOTA0MCkgKz0gcGFuZWwtc2Ftc3Vu Zy1sZDkwNDAubwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TQU1TVU5HX1M2RThBQTApICs9IHBh bmVsLXNhbXN1bmctczZlOGFhMC5vCiBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NIQVJQX0xRMTAx UjFTWDAxKSArPSBwYW5lbC1zaGFycC1scTEwMXIxc3gwMS5vCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vcGFuZWwvcGFuZWwtcmFzcGJlcnJ5cGktdG91Y2hzY3JlZW4uYyBiL2RyaXZlcnMv Z3B1L2RybS9wYW5lbC9wYW5lbC1yYXNwYmVycnlwaS10b3VjaHNjcmVlbi5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDJjYmY5ZTBhMDY3Ci0tLSAvZGV2L251bGwK KysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXJhc3BiZXJyeXBpLXRvdWNoc2NyZWVu LmMKQEAgLTAsMCArMSw1MDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNiBCcm9hZGNvbQor ICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIChkZXJp dmVkIGZyb20gcGFuZWwtc2ltcGxlLmMpIGFyZToKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs IE5WSURJQSBDb3Jwb3JhdGlvbi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUGVybWlz c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0 YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu dGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0 aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0 ZSwgc3ViIGxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hl ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGlu Y2x1ZGluZyB0aGUKKyAqIG5leHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zCisgKiBvZiB0aGUgU29mdHdhcmUuCisgKgor ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNI QUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisvKioKKyAqIERPQzogUmFz cGJlcnJ5IFBpIDciIHRvdWNoc2NyZWVuIHBhbmVsIGRyaXZlci4KKyAqCisgKiBUaGUgNyIgdG91 Y2hzY3JlZW4gY29uc2lzdHMgb2YgYSBEUEkgTENEIHBhbmVsLCBhIFRvc2hpYmEKKyAqIFRDMzU4 NzYyWEJHIERTSS1EUEkgYnJpZGdlLCBhbmQgYW4gSTJDLWNvbm5lY3RlZCBBdG1lbCBBVFRJTlk4 OC1NVVIKKyAqIGNvbnRyb2xsaW5nIHBvd2VyIG1hbmFnZW1lbnQsIHRoZSBMQ0QgUFdNLCBhbmQg dGhlIHRvdWNoc2NyZWVuLgorICoKKyAqIFRoaXMgZHJpdmVyIHByZXNlbnRzIHRoaXMgZGV2aWNl IGFzIGEgTUlQSSBEU0kgcGFuZWwgdG8gdGhlIERSTQorICogZHJpdmVyLCBhbmQgc2hvdWxkIGV4 cG9zZSB0aGUgdG91Y2hzY3JlZW4gYXMgYSBISUQgZGV2aWNlLgorICovCisKKyNpbmNsdWRlIDxs aW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgorI2luY2x1ZGUgPGxpbnV4L2Zi Lmg+CisjaW5jbHVkZSA8bGludXgvZ3Bpby5oPgorI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3Vt ZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4K KyNpbmNsdWRlIDxsaW51eC9vZi5oPgorI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgorI2lu Y2x1ZGUgPGxpbnV4L29mX2dyYXBoLmg+CisjaW5jbHVkZSA8bGludXgvcG0uaD4KKworI2luY2x1 ZGUgPGRybS9kcm1fcGFuZWwuaD4KKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRy bS9kcm1fY3J0Yy5oPgorI2luY2x1ZGUgPGRybS9kcm1fbWlwaV9kc2kuaD4KKyNpbmNsdWRlIDxk cm0vZHJtX3BhbmVsLmg+CisKKy8qIEkyQyByZWdpc3RlcnMgb2YgdGhlIEF0bWVsIG1pY3JvY29u dHJvbGxlci4gKi8KK2VudW0gUkVHX0FERFIgeworCVJFR19JRCA9IDB4ODAsCisJUkVHX1BPUlRB LCAvLyBCSVQoMikgZm9yIGhvcml6b250YWwgZmxpcCwgQklUKDMpIGZvciB2ZXJ0aWNhbCBmbGlw CisJUkVHX1BPUlRCLAorCVJFR19QT1JUQywKKwlSRUdfUE9SVEQsCisJUkVHX1BPV0VST04sCisJ UkVHX1BXTSwKKwlSRUdfRERSQSwKKwlSRUdfRERSQiwKKwlSRUdfRERSQywKKwlSRUdfRERSRCwK KwlSRUdfVEVTVCwKKwlSRUdfV1JfQUREUkwsCisJUkVHX1dSX0FERFJILAorCVJFR19SRUFESCwK KwlSRUdfUkVBREwsCisJUkVHX1dSSVRFSCwKKwlSRUdfV1JJVEVMLAorCVJFR19JRDIsCit9Owor CisvKiBXZSBvbmx5IHR1cm4gdGhlIFBXTSBvbiBvciBvZmYsIHdpdGhvdXQgdmFyeWluZyB2YWx1 ZXMuICovCisjZGVmaW5lIFJQSV9UT1VDSFNDUkVFTl9NQVhfQlJJR0hUTkVTUyAxCisKKy8qIERT SSBELVBIWSBMYXllciBSZWdpc3RlcnMgKi8KKyNkZWZpbmUgRDBXX0RQSFlDT05UVFgJCTB4MDAw NAorI2RlZmluZSBDTFdfRFBIWUNPTlRSWAkJMHgwMDIwCisjZGVmaW5lIEQwV19EUEhZQ09OVFJY CQkweDAwMjQKKyNkZWZpbmUgRDFXX0RQSFlDT05UUlgJCTB4MDAyOAorI2RlZmluZSBDT01fRFBI WUNPTlRSWAkJMHgwMDM4CisjZGVmaW5lIENMV19DTlRSTAkJMHgwMDQwCisjZGVmaW5lIEQwV19D TlRSTAkJMHgwMDQ0CisjZGVmaW5lIEQxV19DTlRSTAkJMHgwMDQ4CisjZGVmaW5lIERGVE1PREVf Q05UUkwJCTB4MDA1NAorCisvKiBEU0kgUFBJIExheWVyIFJlZ2lzdGVycyAqLworI2RlZmluZSBQ UElfU1RBUlRQUEkJCTB4MDEwNAorI2RlZmluZSBQUElfQlVTWVBQSQkJMHgwMTA4CisjZGVmaW5l IFBQSV9MSU5FSU5JVENOVAkJMHgwMTEwCisjZGVmaW5lIFBQSV9MUFRYVElNRUNOVAkJMHgwMTE0 CisvLyNkZWZpbmUgUFBJX0xBTkVFTkFCTEUJCTB4MDEzNAorLy8jZGVmaW5lIFBQSV9UWF9SWF9U QQkJMHgwMTNDCisjZGVmaW5lIFBQSV9DTFNfQVRNUgkJMHgwMTQwCisjZGVmaW5lIFBQSV9EMFNf QVRNUgkJMHgwMTQ0CisjZGVmaW5lIFBQSV9EMVNfQVRNUgkJMHgwMTQ4CisjZGVmaW5lIFBQSV9E MFNfQ0xSU0lQT0NPVU5UCTB4MDE2NAorI2RlZmluZSBQUElfRDFTX0NMUlNJUE9DT1VOVAkweDAx NjgKKyNkZWZpbmUgQ0xTX1BSRQkJCTB4MDE4MAorI2RlZmluZSBEMFNfUFJFCQkJMHgwMTg0Cisj ZGVmaW5lIEQxU19QUkUJCQkweDAxODgKKyNkZWZpbmUgQ0xTX1BSRVAJCTB4MDFBMAorI2RlZmlu ZSBEMFNfUFJFUAkJMHgwMUE0CisjZGVmaW5lIEQxU19QUkVQCQkweDAxQTgKKyNkZWZpbmUgQ0xT X1pFUk8JCTB4MDFDMAorI2RlZmluZSBEMFNfWkVSTwkJMHgwMUM0CisjZGVmaW5lIEQxU19aRVJP CQkweDAxQzgKKyNkZWZpbmUgUFBJX0NMUkZMRwkJMHgwMUUwCisjZGVmaW5lIFBQSV9DTFJTSVBP CQkweDAxRTQKKyNkZWZpbmUgSFNUSU1FT1VUCQkweDAxRjAKKyNkZWZpbmUgSFNUSU1FT1VURU5B QkxFCQkweDAxRjQKKworLyogRFNJIFByb3RvY29sIExheWVyIFJlZ2lzdGVycyAqLworI2RlZmlu ZSBEU0lfU1RBUlREU0kJCTB4MDIwNAorI2RlZmluZSBEU0lfQlVTWURTSQkJMHgwMjA4CisjZGVm aW5lIERTSV9MQU5FRU5BQkxFCQkweDAyMTAKKyMgZGVmaW5lIERTSV9MQU5FRU5BQkxFX0NMT0NL CQlCSVQoMCkKKyMgZGVmaW5lIERTSV9MQU5FRU5BQkxFX0QwCQlCSVQoMSkKKyMgZGVmaW5lIERT SV9MQU5FRU5BQkxFX0QxCQlCSVQoMikKKworI2RlZmluZSBEU0lfTEFORVNUQVRVUzAJCTB4MDIx NAorI2RlZmluZSBEU0lfTEFORVNUQVRVUzEJCTB4MDIxOAorI2RlZmluZSBEU0lfSU5UU1RBVFVT CQkweDAyMjAKKyNkZWZpbmUgRFNJX0lOVE1BU0sJCTB4MDIyNAorI2RlZmluZSBEU0lfSU5UQ0xS CQkweDAyMjgKKyNkZWZpbmUgRFNJX0xQVFhUTwkJMHgwMjMwCisjZGVmaW5lIERTSV9NT0RFCQkw eDAyNjAKKyNkZWZpbmUgRFNJX1BBWUxPQUQwCQkweDAyNjgKKyNkZWZpbmUgRFNJX1BBWUxPQUQx CQkweDAyNkMKKyNkZWZpbmUgRFNJX1NIT1JUUEtUREFUCQkweDAyNzAKKyNkZWZpbmUgRFNJX1NI T1JUUEtUUkVRCQkweDAyNzQKKyNkZWZpbmUgRFNJX0JUQVNUQQkJMHgwMjc4CisjZGVmaW5lIERT SV9CVEFDTFIJCTB4MDI3QworCisvKiBEU0kgR2VuZXJhbCBSZWdpc3RlcnMgKi8KKyNkZWZpbmUg RFNJRVJSQ05UCQkweDAzMDAKKyNkZWZpbmUgRFNJU0lHTU9ECQkweDAzMDQKKworLyogRFNJIEFw cGxpY2F0aW9uIExheWVyIFJlZ2lzdGVycyAqLworI2RlZmluZSBBUExDVFJMCQkJMHgwNDAwCisj ZGVmaW5lIEFQTFNUQVQJCQkweDA0MDQKKyNkZWZpbmUgQVBMRVJSCQkJMHgwNDA4CisjZGVmaW5l IFBXUk1PRAkJCTB4MDQwQworI2RlZmluZSBSRFBLVExOCQkJMHgwNDEwCisjZGVmaW5lIFBYTEZN VAkJCTB4MDQxNAorI2RlZmluZSBNRU1XUkNNRAkJMHgwNDE4CisKKy8qIExDREMvRFBJIEhvc3Qg UmVnaXN0ZXJzICovCisjZGVmaW5lIExDRENUUkwJCQkweDA0MjAKKyNkZWZpbmUgSFNSCQkJMHgw NDI0CisjZGVmaW5lIEhESVNQUgkJCTB4MDQyOAorI2RlZmluZSBWU1IJCQkweDA0MkMKKyNkZWZp bmUgVkRJU1BSCQkJMHgwNDMwCisjZGVmaW5lIFZGVUVOCQkJMHgwNDM0CisKKy8qIERCSS1CIEhv c3QgUmVnaXN0ZXJzICovCisjZGVmaW5lIERCSUJDVFJMCQkweDA0NDAKKworLyogU1BJIE1hc3Rl ciBSZWdpc3RlcnMgKi8KKyNkZWZpbmUgU1BJQ01SCQkJMHgwNDUwCisjZGVmaW5lIFNQSVRDUgkJ CTB4MDQ1NAorCisvKiBTeXN0ZW0gQ29udHJvbGxlciBSZWdpc3RlcnMgKi8KKyNkZWZpbmUgU1lT U1RBVAkJCTB4MDQ2MAorI2RlZmluZSBTWVNDVFJMCQkJMHgwNDY0CisjZGVmaW5lIFNZU1BMTDEJ CQkweDA0NjgKKyNkZWZpbmUgU1lTUExMMgkJCTB4MDQ2QworI2RlZmluZSBTWVNQTEwzCQkJMHgw NDcwCisjZGVmaW5lIFNZU1BNQ1RSTAkJMHgwNDdDCisKKy8qIEdQSU8gUmVnaXN0ZXJzICovCisj ZGVmaW5lIEdQSU9DCQkJMHgwNDgwCisjZGVmaW5lIEdQSU9PCQkJMHgwNDg0CisjZGVmaW5lIEdQ SU9JCQkJMHgwNDg4CisKKy8qIEkyQyBSZWdpc3RlcnMgKi8KKyNkZWZpbmUgSTJDQ0xLQ1RSTAkJ MHgwNDkwCisKKy8qIENoaXAvUmV2IFJlZ2lzdGVycyAqLworI2RlZmluZSBJRFJFRwkJCTB4MDRB MAorCisvKiBEZWJ1ZyBSZWdpc3RlcnMgKi8KKyNkZWZpbmUgV0NNRFFVRVVFCQkweDA1MDAKKyNk ZWZpbmUgUkNNRFFVRVVFCQkweDA1MDQKKworc3RydWN0IHJwaV90b3VjaHNjcmVlbiB7CisJc3Ry dWN0IGRybV9wYW5lbCBiYXNlOworCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaTsKKwlzdHJ1 Y3QgaTJjX2NsaWVudCAqYnJpZGdlX2kyYzsKKworCS8qIFZlcnNpb24gb2YgdGhlIGZpcm13YXJl IG9uIHRoZSBicmlkZ2UgY2hpcCAqLworCWludCBhdG1lbF92ZXI7Cit9OworCitzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgcnBpX3RvdWNoc2NyZWVuX21vZGVzW10gPSB7CisJ eworCQkvKiBUaGUgRFNJIFBMTCBjYW4gb25seSBpbnRlZ2VyIGRpdmlkZSBmcm9tIHRoZSAyR2h6 CisJCSAqIFBMTEQsIGdpdmluZyB1cyBmZXcgY2hvaWNlcy4gIFdlIHBpY2sgYSBkaXZpZGUgYnkg MworCQkgKiBhcyBvdXIgRFNJIEhTIGNsb2NrLCBnaXZpbmcgdXMgYSBwaXhlbCBjbG9jayBvZgor CQkgKiB0aGF0IGRpdmlkZWQgYnkgMjQgYml0cy4gIFBhZCBvdXQgSEZQIHRvIGdldCBvdXIKKwkJ ICogcGFuZWwgdG8gcmVmcmVzaCBhdCA2MEh6LCBldmVuIGlmIHRoYXQgZG9lc24ndAorCQkgKiBt YXRjaCB0aGUgZGF0YXNoZWV0LgorCQkgKi8KKyNkZWZpbmUgUElYRUxfQ0xPQ0sgKCgyMDAwMDAw MDAwIC8gMykgLyAyNCkKKyNkZWZpbmUgVlJFRlJFU0ggICAgNjAKKyNkZWZpbmUgVlRPVEFMICAg ICAgKDQ4MCArIDcgKyAyICsgMjEpCisjZGVmaW5lIEhBQ1QgICAgICAgIDgwMAorI2RlZmluZSBI U1cgICAgICAgICAyCisjZGVmaW5lIEhCUCAgICAgICAgIDQ2CisjZGVmaW5lIEhGUCAgICAgICAg ICgoUElYRUxfQ0xPQ0sgLyAoVlRPVEFMICogVlJFRlJFU0gpKSAtIChIQUNUICsgSFNXICsgSEJQ KSkKKworCQkuY2xvY2sgPSBQSVhFTF9DTE9DSyAvIDEwMDAsCisJCS5oZGlzcGxheSA9IEhBQ1Qs CisJCS5oc3luY19zdGFydCA9IEhBQ1QgKyBIRlAsCisJCS5oc3luY19lbmQgPSBIQUNUICsgSEZQ ICsgSFNXLAorCQkuaHRvdGFsID0gSEFDVCArIEhGUCArIEhTVyArIEhCUCwKKwkJLnZkaXNwbGF5 ID0gNDgwLAorCQkudnN5bmNfc3RhcnQgPSA0ODAgKyA3LAorCQkudnN5bmNfZW5kID0gNDgwICsg NyArIDIsCisJCS52dG90YWwgPSBWVE9UQUwsCisJCS52cmVmcmVzaCA9IDYwLAorCX0sCit9Owor CitzdGF0aWMgc3RydWN0IHJwaV90b3VjaHNjcmVlbiAqcGFuZWxfdG9fdHMoc3RydWN0IGRybV9w YW5lbCAqcGFuZWwpCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihwYW5lbCwgc3RydWN0IHJwaV90 b3VjaHNjcmVlbiwgYmFzZSk7Cit9CisKK3N0YXRpYyB1OCBycGlfdG91Y2hzY3JlZW5faTJjX3Jl YWQoc3RydWN0IHJwaV90b3VjaHNjcmVlbiAqdHMsIHU4IHJlZykKK3sKKwlyZXR1cm4gaTJjX3Nt YnVzX3JlYWRfYnl0ZV9kYXRhKHRzLT5icmlkZ2VfaTJjLCByZWcpOworfQorCitzdGF0aWMgdm9p ZCBycGlfdG91Y2hzY3JlZW5faTJjX3dyaXRlKHN0cnVjdCBycGlfdG91Y2hzY3JlZW4gKnRzLAor CQkJCSAgICAgIHU4IHJlZywgdTggdmFsKQoreworCWludCByZXQ7CisKKwlyZXQgPSBpMmNfc21i dXNfd3JpdGVfYnl0ZV9kYXRhKHRzLT5icmlkZ2VfaTJjLCByZWcsIHZhbCk7CisJaWYgKHJldCkK KwkJZGV2X2VycigmdHMtPmRzaS0+ZGV2LCAiSTJDIHdyaXRlIGZhaWxlZDogJWRcbiIsIHJldCk7 Cit9CisKK3N0YXRpYyBpbnQgcnBpX3RvdWNoc2NyZWVuX3dyaXRlKHN0cnVjdCBycGlfdG91Y2hz Y3JlZW4gKnRzLCB1MTYgcmVnLCB1MzIgdmFsKQoreworI2lmIDAKKwkvKiBUaGUgZmlybXdhcmUg dXNlcyBMUCBEU0kgdHJhbnNhY3Rpb25zIGxpa2UgdGhpcyB0byBicmluZyB1cAorCSAqIHRoZSBo YXJkd2FyZSwgd2hpY2ggc2hvdWxkIGJlIGZhc3RlciB0aGFuIHVzaW5nIEkyQyB0byB0aGVuCisJ ICogcGFzcyB0byB0aGUgVG9zaGliYS4gIEhvd2V2ZXIsIEkgd2FzIHVuYWJsZSB0byBnZXQgaXQg dG8KKwkgKiB3b3JrLgorCSAqLworCXU4IG1zZ1tdID0geworCQlyZWcsCisJCXJlZyA+PiA4LAor CQl2YWwsCisJCXZhbCA+PiA4LAorCQl2YWwgPj4gMTYsCisJCXZhbCA+PiAyNCwKKwl9OworCisJ bWlwaV9kc2lfZGNzX3dyaXRlX2J1ZmZlcih0cy0+ZHNpLCBtc2csIHNpemVvZihtc2cpKTsKKyNl bHNlCisJcnBpX3RvdWNoc2NyZWVuX2kyY193cml0ZSh0cywgUkVHX1dSX0FERFJILCByZWcgPj4g OCk7CisJcnBpX3RvdWNoc2NyZWVuX2kyY193cml0ZSh0cywgUkVHX1dSX0FERFJMLCByZWcpOwor CXJwaV90b3VjaHNjcmVlbl9pMmNfd3JpdGUodHMsIFJFR19XUklURUgsIHZhbCA+PiA4KTsKKwly cGlfdG91Y2hzY3JlZW5faTJjX3dyaXRlKHRzLCBSRUdfV1JJVEVMLCB2YWwpOworI2VuZGlmCisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBycGlfdG91Y2hzY3JlZW5fZGlzYWJsZShzdHJ1 Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3QgcnBpX3RvdWNoc2NyZWVuICp0cyA9IHBh bmVsX3RvX3RzKHBhbmVsKTsKKworCXJwaV90b3VjaHNjcmVlbl9pMmNfd3JpdGUodHMsIFJFR19Q V00sIDApOworCisJcnBpX3RvdWNoc2NyZWVuX2kyY193cml0ZSh0cywgUkVHX1BPV0VST04sIDAp OworCXVkZWxheSgxKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJwaV90b3VjaHNj cmVlbl9ub29wKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IHJwaV90b3VjaHNjcmVlbl9lbmFibGUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwp Cit7CisJc3RydWN0IHJwaV90b3VjaHNjcmVlbiAqdHMgPSBwYW5lbF90b190cyhwYW5lbCk7CisJ aW50IGk7CisKKwlycGlfdG91Y2hzY3JlZW5faTJjX3dyaXRlKHRzLCBSRUdfUE9XRVJPTiwgMSk7 CisJLyogV2FpdCBmb3IgblBXUkRXTiB0byBnbyBsb3cgdG8gaW5kaWNhdGUgcG93ZXJvbiBpcyBk b25lLiAqLworCWZvciAoaSA9IDA7IGkgPCAxMDA7IGkrKykgeworCQlpZiAocnBpX3RvdWNoc2Ny ZWVuX2kyY19yZWFkKHRzLCBSRUdfUE9SVEIpICYgMSkKKwkJCWJyZWFrOworCX0KKworCXJwaV90 b3VjaHNjcmVlbl93cml0ZSh0cywgRFNJX0xBTkVFTkFCTEUsCisJCQkgICAgICBEU0lfTEFORUVO QUJMRV9DTE9DSyB8CisJCQkgICAgICBEU0lfTEFORUVOQUJMRV9EMCB8CisJCQkgICAgICAodHMt PmRzaS0+bGFuZXMgPiAxID8gRFNJX0xBTkVFTkFCTEVfRDEgOiAwKSk7CisJcnBpX3RvdWNoc2Ny ZWVuX3dyaXRlKHRzLCBQUElfRDBTX0NMUlNJUE9DT1VOVCwgMHgwNSk7CisJcnBpX3RvdWNoc2Ny ZWVuX3dyaXRlKHRzLCBQUElfRDFTX0NMUlNJUE9DT1VOVCwgMHgwNSk7CisJcnBpX3RvdWNoc2Ny ZWVuX3dyaXRlKHRzLCBQUElfRDBTX0FUTVIsIDB4MDApOworCXJwaV90b3VjaHNjcmVlbl93cml0 ZSh0cywgUFBJX0QxU19BVE1SLCAweDAwKTsKKwlycGlfdG91Y2hzY3JlZW5fd3JpdGUodHMsIFBQ SV9MUFRYVElNRUNOVCwgMHgwMyk7CisKKwlycGlfdG91Y2hzY3JlZW5fd3JpdGUodHMsIFNQSUNN UiwgMHgwMCk7CisJcnBpX3RvdWNoc2NyZWVuX3dyaXRlKHRzLCBMQ0RDVFJMLCAweDAwMTAwMTUw KTsKKwlycGlfdG91Y2hzY3JlZW5fd3JpdGUodHMsIFNZU0NUUkwsIDB4MDQwZik7CisJbXNsZWVw KDEwMCk7CisKKwlycGlfdG91Y2hzY3JlZW5fd3JpdGUodHMsIFBQSV9TVEFSVFBQSSwgMHgwMSk7 CisJcnBpX3RvdWNoc2NyZWVuX3dyaXRlKHRzLCBEU0lfU1RBUlREU0ksIDB4MDEpOworCW1zbGVl cCgxMDApOworCisJLyogVHVybiBvbiB0aGUgYmFja2tsaWdodC4gKi8KKwlycGlfdG91Y2hzY3Jl ZW5faTJjX3dyaXRlKHRzLCBSRUdfUFdNLCAyNTUpOworCisJcnBpX3RvdWNoc2NyZWVuX2kyY193 cml0ZSh0cywgUkVHX1BPUlRBLCBCSVQoMykpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bnQgcnBpX3RvdWNoc2NyZWVuX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sK KwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gcGFuZWwtPmNvbm5lY3RvcjsKKwlz dHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gcGFuZWwtPmRybTsKKwl1bnNpZ25lZCBpbnQgaSwgbnVt ID0gMDsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHJwaV90b3VjaHNjcmVlbl9tb2Rl cyk7IGkrKykgeworCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbSA9ICZycGlfdG91 Y2hzY3JlZW5fbW9kZXNbaV07CisJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOworCisJ CW1vZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUoZHJtLCBtKTsKKwkJaWYgKCFtb2RlKSB7CisJCQlk ZXZfZXJyKGRybS0+ZGV2LCAiZmFpbGVkIHRvIGFkZCBtb2RlICV1eCV1QCV1XG4iLAorCQkJCW0t PmhkaXNwbGF5LCBtLT52ZGlzcGxheSwgbS0+dnJlZnJlc2gpOworCQkJY29udGludWU7CisJCX0K KworCQltb2RlLT50eXBlIHw9IERSTV9NT0RFX1RZUEVfRFJJVkVSOworCisJCWlmIChpID09IDAp CisJCQltb2RlLT50eXBlIHw9IERSTV9NT0RFX1RZUEVfUFJFRkVSUkVEOworCisJCWRybV9tb2Rl X3NldF9uYW1lKG1vZGUpOworCisJCWRybV9tb2RlX3Byb2JlZF9hZGQoY29ubmVjdG9yLCBtb2Rl KTsKKwkJbnVtKys7CisJfQorCisJY29ubmVjdG9yLT5kaXNwbGF5X2luZm8uYnBjID0gODsKKwlj b25uZWN0b3ItPmRpc3BsYXlfaW5mby53aWR0aF9tbSA9IDE1NDsKKwljb25uZWN0b3ItPmRpc3Bs YXlfaW5mby5oZWlnaHRfbW0gPSA4NjsKKworCXJldHVybiBudW07Cit9CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZHJtX3BhbmVsX2Z1bmNzIHJwaV90b3VjaHNjcmVlbl9mdW5jcyA9IHsKKwkuZGlz YWJsZSA9IHJwaV90b3VjaHNjcmVlbl9kaXNhYmxlLAorCS51bnByZXBhcmUgPSBycGlfdG91Y2hz Y3JlZW5fbm9vcCwKKwkucHJlcGFyZSA9IHJwaV90b3VjaHNjcmVlbl9ub29wLAorCS5lbmFibGUg PSBycGlfdG91Y2hzY3JlZW5fZW5hYmxlLAorCS5nZXRfbW9kZXMgPSBycGlfdG91Y2hzY3JlZW5f Z2V0X21vZGVzLAorfTsKKworc3RhdGljIHN0cnVjdCBpMmNfY2xpZW50ICpycGlfdG91Y2hzY3Jl ZW5fZ2V0X2kyYyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJCQkgIGNvbnN0IGNoYXIgKm5hbWUp Cit7CisJc3RydWN0IGRldmljZV9ub2RlICpub2RlOworCXN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQ7CisKKwlub2RlID0gb2ZfcGFyc2VfcGhhbmRsZShkZXYtPm9mX25vZGUsIG5hbWUsIDApOwor CWlmICghbm9kZSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7CisKKwljbGllbnQgPSBvZl9m aW5kX2kyY19kZXZpY2VfYnlfbm9kZShub2RlKTsKKworCW9mX25vZGVfcHV0KG5vZGUpOworCisJ cmV0dXJuIGNsaWVudDsKK30KKworc3RhdGljIGludCBycGlfdG91Y2hzY3JlZW5fZHNpX3Byb2Jl KHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKK3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAm ZHNpLT5kZXY7CisJc3RydWN0IHJwaV90b3VjaHNjcmVlbiAqdHM7CisJaW50IHJldCwgdmVyOwor CisJdHMgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnRzKSwgR0ZQX0tFUk5FTCk7CisJaWYg KCF0cykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlkZXZfc2V0X2RydmRhdGEoZGV2LCB0cyk7CisK Kwl0cy0+ZHNpID0gZHNpOworCWRzaS0+bW9kZV9mbGFncyA9IChNSVBJX0RTSV9NT0RFX1ZJREVP IHwKKwkJCSAgIE1JUElfRFNJX01PREVfVklERU9fU1lOQ19QVUxTRSB8CisJCQkgICBNSVBJX0RT SV9NT0RFX0xQTSk7CisJZHNpLT5mb3JtYXQgPSBNSVBJX0RTSV9GTVRfUkdCODg4OworCWRzaS0+ bGFuZXMgPSAxOworCisJdHMtPmJyaWRnZV9pMmMgPQorCQlycGlfdG91Y2hzY3JlZW5fZ2V0X2ky YyhkZXYsICJyYXNwYmVycnlwaSx0b3VjaHNjcmVlbi1icmlkZ2UiKTsKKwlpZiAoIXRzLT5icmlk Z2VfaTJjKSB7CisJCXJldCA9IC1FUFJPQkVfREVGRVI7CisJCXJldHVybiByZXQ7CisJfQorCisJ dmVyID0gcnBpX3RvdWNoc2NyZWVuX2kyY19yZWFkKHRzLCBSRUdfSUQpOworCWlmICh2ZXIgPCAw KSB7CisJCWRldl9lcnIoZGV2LCAiQXRtZWwgSTJDIHJlYWQgZmFpbGVkOiAlZFxuIiwgdmVyKTsK KwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJc3dpdGNoICh2ZXIpIHsKKwljYXNlIDB4ZGU6CisJ CXRzLT5hdG1lbF92ZXIgPSAxOworCQlicmVhazsKKwljYXNlIDB4YzM6CisJCXRzLT5hdG1lbF92 ZXIgPSAyOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlkZXZfZXJyKGRldiwgIlVua25vd24gQXRt ZWwgZmlybXdhcmUgcmV2aXNpb246IDB4JTAyeFxuIiwgdmVyKTsKKwkJcmV0dXJuIC1FTk9ERVY7 CisJfQorCisJLyogVHVybiBvZmYgYXQgYm9vdCwgc28gd2UgY2FuIGNsZWFubHkgc2VxdWVuY2Ug cG93ZXJpbmcgb24uICovCisJcnBpX3RvdWNoc2NyZWVuX2kyY193cml0ZSh0cywgUkVHX1BPV0VS T04sIDApOworCisJZHJtX3BhbmVsX2luaXQoJnRzLT5iYXNlKTsKKwl0cy0+YmFzZS5kZXYgPSBk ZXY7CisJdHMtPmJhc2UuZnVuY3MgPSAmcnBpX3RvdWNoc2NyZWVuX2Z1bmNzOworCisJcmV0ID0g ZHJtX3BhbmVsX2FkZCgmdHMtPmJhc2UpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGVycl9yZWxl YXNlX2JyaWRnZTsKKworCXJldHVybiBtaXBpX2RzaV9hdHRhY2goZHNpKTsKKworZXJyX3JlbGVh c2VfYnJpZGdlOgorCXB1dF9kZXZpY2UoJnRzLT5icmlkZ2VfaTJjLT5kZXYpOworCXJldHVybiBy ZXQ7Cit9CisKK3N0YXRpYyBpbnQgcnBpX3RvdWNoc2NyZWVuX2RzaV9yZW1vdmUoc3RydWN0IG1p cGlfZHNpX2RldmljZSAqZHNpKQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZkc2ktPmRldjsK KwlzdHJ1Y3QgcnBpX3RvdWNoc2NyZWVuICp0cyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCWlu dCByZXQ7CisKKwlyZXQgPSBtaXBpX2RzaV9kZXRhY2goZHNpKTsKKwlpZiAocmV0IDwgMCkgewor CQlkZXZfZXJyKCZkc2ktPmRldiwgImZhaWxlZCB0byBkZXRhY2ggZnJvbSBEU0kgaG9zdDogJWRc biIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJZHJtX3BhbmVsX2RldGFjaCgmdHMtPmJh c2UpOworCWRybV9wYW5lbF9yZW1vdmUoJnRzLT5iYXNlKTsKKworCXB1dF9kZXZpY2UoJnRzLT5i cmlkZ2VfaTJjLT5kZXYpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHJwaV90b3Vj aHNjcmVlbl9kc2lfc2h1dGRvd24oc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpKQoreworCXN0 cnVjdCBkZXZpY2UgKmRldiA9ICZkc2ktPmRldjsKKwlzdHJ1Y3QgcnBpX3RvdWNoc2NyZWVuICp0 cyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCisJcnBpX3RvdWNoc2NyZWVuX2kyY193cml0ZSh0 cywgUkVHX1BPV0VST04sIDApOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9p ZCBycGlfdG91Y2hzY3JlZW5fb2ZfbWF0Y2hbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gInJhc3Bi ZXJyeXBpLHRvdWNoc2NyZWVuIiB9LAorCXsgfSAvKiBzZW50aW5lbCAqLworfTsKK01PRFVMRV9E RVZJQ0VfVEFCTEUob2YsIHJwaV90b3VjaHNjcmVlbl9vZl9tYXRjaCk7CisKK3N0YXRpYyBzdHJ1 Y3QgbWlwaV9kc2lfZHJpdmVyIHJwaV90b3VjaHNjcmVlbl9kcml2ZXIgPSB7CisJLmRyaXZlciA9 IHsKKwkJLm5hbWUgPSAicmFzcGJlcnJ5cGktdG91Y2hzY3JlZW4iLAorCQkub2ZfbWF0Y2hfdGFi bGUgPSBycGlfdG91Y2hzY3JlZW5fb2ZfbWF0Y2gsCisJfSwKKwkucHJvYmUgPSBycGlfdG91Y2hz Y3JlZW5fZHNpX3Byb2JlLAorCS5yZW1vdmUgPSBycGlfdG91Y2hzY3JlZW5fZHNpX3JlbW92ZSwK Kwkuc2h1dGRvd24gPSBycGlfdG91Y2hzY3JlZW5fZHNpX3NodXRkb3duLAorfTsKK21vZHVsZV9t aXBpX2RzaV9kcml2ZXIocnBpX3RvdWNoc2NyZWVuX2RyaXZlcik7CisKK01PRFVMRV9BVVRIT1Io IkVyaWMgQW5ob2x0IDxlcmljQGFuaG9sdC5uZXQ+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIlJh c3BiZXJyeSBQaSA3LWluY2ggdG91Y2hzY3JlZW4gZHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgi R1BMIHYyIik7Ci0tIAoyLjExLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo=