From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [PATCH v8 1/2] drm/bridge: Add sii902x driver Date: Wed, 15 Jun 2016 16:55:45 +0530 Message-ID: <57613B39.7040707@codeaurora.org> References: <1465890142-14464-1-git-send-email-boris.brezillon@free-electrons.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1465890142-14464-1-git-send-email-boris.brezillon@free-electrons.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Boris Brezillon , David Airlie , Daniel Vetter , dri-devel@lists.freedesktop.org Cc: Mark Rutland , Meng Yi , Xiubo Li , Pawel Moll , Ian Campbell , Emil Velikov , Alison Wang , Nicolas Ferre , devicetree@vger.kernel.org, Rob Herring , Alexandre Belloni , Kumar Gala , Jean-Christophe Plagniol-Villard , Jianwei Wang List-Id: devicetree@vger.kernel.org CgpPbiAwNi8xNC8yMDE2IDAxOjEyIFBNLCBCb3JpcyBCcmV6aWxsb24gd3JvdGU6Cj4gQWRkIGJh c2ljIHN1cHBvcnQgZm9yIHRoZSBzaWk5MDJ4IFJHQiAtPiBIRE1JIGJyaWRnZS4KPiBUaGlzIGRy aXZlciBkb2VzIG5vdCBzdXBwb3J0IGF1ZGlvIG91dHB1dCB5ZXQuCj4KClRoYW5rcyBmb3IgaW5j b3Jwb3JhdGluZyB0aGUgY29tbWVudHMuCgpBY2tlZC1ieTogQXJjaGl0IFRhbmVqYSA8YXJjaGl0 dEBjb2RlYXVyb3JhLm9yZz4KCj4gU2lnbmVkLW9mZi1ieTogQm9yaXMgQnJlemlsbG9uIDxib3Jp cy5icmV6aWxsb25AZnJlZS1lbGVjdHJvbnMuY29tPgo+IFRlc3RlZC1ieTogTmljb2xhcyBGZXJy ZSA8bmljb2xhcy5mZXJyZUBhdG1lbC5jb20+Cj4gLS0tCj4gQ2hhbmdlcyBpbiB2ODoKPiAtIHJl bW92ZSB1c2VsZXNzIGhlYWRlcnMgaW5jbHVzaW9uCj4gLSBmaXggbWFjcm8gbmFtZXMgKHMvU0lM L1NJSSkKPiAtIGRyb3AgdW5uZWVkZWQgaG90cGx1Z193b3JrIGZpZWxkIGZyb20gc3RydWN0IHNp aTkwMngKPiAtIGRyb3AgZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKCkgY2FsbCBpbiB0aGUgLT5k ZXN0cm95KCkgbWV0aG9kCj4gLSBhZGQgYSB0aW1lb3V0IHdoZW4gcG9sbGluZyBhIHJlZ2lzdGVy IHZhbHVlCj4KPiBDaGFuZ2VzIGluIHY2Ogo+IC0gdXNlIEhETUlfSU5GT0ZSQU1FX1NJWkUoQVZJ KQo+IC0gZml4IHJlc2V0X2dwaW8gaW5pdGlhbGl6YXRpb24KPiAtIHJlZHVjZSB0aGUgcmVzZXQg dGltZSBiYXNlZCBvbiBNaW5nIGZlZWRiYWNrCj4KPiBDaGFuZ2VzIGluIHY1Ogo+IC0gZHJvcCB0 aGUgYmVzdF9lbmNvZGVyKCkgaW1wbGVtZW50YXRpb24KPgo+IENoYW5nZXMgaW4gdjQ6Cj4gLSBt YWtlIHJlc2V0IEdQSU8gb3B0aW9uYWwKPiAtIG9ubHkgc3VwcG9ydCBhdHRhY2hpbmcgdG8gRFJN IGRldmljZXMgc3VwcG9ydGluZyBhdG9taWMgdXBkYXRlcwo+Cj4gQ2hhbmdlcyBpbiB2MzoKPiAt IGZpeCBnZXRfbW9kZXMoKSBpbXBsZW1lbnRhdGlvbiB0byBhdm9pZCB0dXJuaW5nIHRoZSBzY3Jl ZW4gaW4gcG93ZXIKPiAgICBzYXZlIG1vZGUKPiAtIHJlbmFtZSB0aGUgZHJpdmVyIChzaWw5MDJ4 IC0+IHNpaTkwMngpCj4KPiBDaGFuZ2VzIGluIHYyOgo+IC0gZml4IGVycm9ycyByZXBvcnRlZCBi eSB0aGUga2J1aWxkIHJvYm90Cj4KPiBmaXh1cCEgZHJtOiBicmlkZ2U6IEFkZCBzaWk5MDJ4IGRy aXZlcgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnICAgfCAgIDggKwo+ ICAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZSAgfCAgIDEgKwo+ICAgZHJpdmVycy9n cHUvZHJtL2JyaWRnZS9zaWk5MDJ4LmMgfCA0NjcgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCj4gICAzIGZpbGVzIGNoYW5nZWQsIDQ3NiBpbnNlcnRpb25zKCspCj4gICBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zaWk5MDJ4LmMKPgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcgYi9kcml2ZXJzL2dwdS9k cm0vYnJpZGdlL0tjb25maWcKPiBpbmRleCA4Zjc0MjNmLi5hMTQxOTIxNCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v YnJpZGdlL0tjb25maWcKPiBAQCAtNTAsNiArNTAsMTQgQEAgY29uZmlnIERSTV9QQVJBREVfUFM4 NjIyCj4gICAJLS0taGVscC0tLQo+ICAgCSAgUGFyYWRlIGVEUC1MVkRTIGJyaWRnZSBjaGlwIGRy aXZlci4KPgo+ICtjb25maWcgRFJNX1NJSTkwMlgKPiArCXRyaXN0YXRlICJTaWxpY29uIEltYWdl IHNpaTkwMnggUkdCL0hETUkgYnJpZGdlIgo+ICsJZGVwZW5kcyBvbiBPRgo+ICsJc2VsZWN0IERS TV9LTVNfSEVMUEVSCj4gKwlzZWxlY3QgUkVHTUFQX0kyQwo+ICsJLS0taGVscC0tLQo+ICsJICBT aWxpY29uIEltYWdlIHNpaTkwMnggYnJpZGdlIGNoaXAgZHJpdmVyLgo+ICsKPiAgIHNvdXJjZSAi ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9LY29uZmlnIgo+Cj4gICBlbmRtZW51Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUgYi9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL01ha2VmaWxlCj4gaW5kZXggOTZiMTNiMy4uYmZlYzlmOCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9NYWtlZmlsZQo+IEBAIC01LDQgKzUsNSBAQCBvYmotJChDT05GSUdfRFJNX0RX X0hETUkpICs9IGR3LWhkbWkubwo+ICAgb2JqLSQoQ09ORklHX0RSTV9EV19IRE1JX0FIQl9BVURJ TykgKz0gZHctaGRtaS1haGItYXVkaW8ubwo+ICAgb2JqLSQoQ09ORklHX0RSTV9OWFBfUFROMzQ2 MCkgKz0gbnhwLXB0bjM0NjAubwo+ICAgb2JqLSQoQ09ORklHX0RSTV9QQVJBREVfUFM4NjIyKSAr PSBwYXJhZGUtcHM4NjIyLm8KPiArb2JqLSQoQ09ORklHX0RSTV9TSUk5MDJYKSArPSBzaWk5MDJ4 Lm8KPiAgIG9iai0kKENPTkZJR19EUk1fQU5BTE9HSVhfRFApICs9IGFuYWxvZ2l4Lwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpaTkwMnguYyBiL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2Uvc2lpOTAyeC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw Li45MTI2ZDAzCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uv c2lpOTAyeC5jCj4gQEAgLTAsMCArMSw0NjcgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAy MDE2IEF0bWVsCj4gKyAqCQkgICAgICBCbyBTaGVuIDx2b2ljZS5zaGVuQGF0bWVsLmNvbT4KPiAr ICoKPiArICogQXV0aG9yczoJICAgICAgQm8gU2hlbiA8dm9pY2Uuc2hlbkBhdG1lbC5jb20+Cj4g KyAqCQkgICAgICBCb3JpcyBCcmV6aWxsb24gPGJvcmlzLmJyZXppbGxvbkBmcmVlLWVsZWN0cm9u cy5jb20+Cj4gKyAqCQkgICAgICBXdSwgU29uZ2p1biA8U29uZ2p1bi5XdUBhdG1lbC5jb20+Cj4g KyAqCj4gKyAqCj4gKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDExIEZyZWVzY2FsZSBTZW1pY29u ZHVjdG9yLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Cj4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Cj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gKyAqIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCj4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4g KyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KPiArI2luY2x1ZGUg PGxpbnV4L2kyYy5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRlIDxs aW51eC9yZWdtYXAuaD4KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICsjaW5jbHVkZSA8 ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVy Lmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4KPiArCj4gKyNkZWZpbmUgU0lJOTAyWF9U UElfVklERU9fREFUQQkJCTB4MAo+ICsKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9QSVhFTF9SRVBF VElUSU9OCQkweDgKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVklfUElYRUxfUkVQX0JVU18yNEJJ VCAgICAgQklUKDUpCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVZJX1BJWEVMX1JFUF9SSVNJTkdf RURHRSAgIEJJVCg0KQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FWSV9QSVhFTF9SRVBfNFgJCTMK PiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVklfUElYRUxfUkVQXzJYCQkxCj4gKyNkZWZpbmUgU0lJ OTAyWF9UUElfQVZJX1BJWEVMX1JFUF9OT05FCQkwCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQ0xL X1JBVElPX0hBTEYJCSgwIDw8IDYpCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQ0xLX1JBVElPXzFY CQkoMSA8PCA2KQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0NMS19SQVRJT18yWAkJKDIgPDwgNikK PiArI2RlZmluZSBTSUk5MDJYX1RQSV9DTEtfUkFUSU9fNFgJCSgzIDw8IDYpCj4gKwo+ICsjZGVm aW5lIFNJSTkwMlhfVFBJX0FWSV9JTl9GT1JNQVQJCTB4OQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJ X0FWSV9JTlBVVF9CSVRNT0RFXzEyQklUCUJJVCg3KQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FW SV9JTlBVVF9ESVRIRVIJCUJJVCg2KQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FWSV9JTlBVVF9S QU5HRV9MSU1JVEVECSgyIDw8IDIpCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVZJX0lOUFVUX1JB TkdFX0ZVTEwJKDEgPDwgMikKPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVklfSU5QVVRfUkFOR0Vf QVVUTwkoMCA8PCAyKQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FWSV9JTlBVVF9DT0xPUlNQQUNF X0JMQUNLCSgzIDw8IDApCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVZJX0lOUFVUX0NPTE9SU1BB Q0VfWVVWNDIyCSgyIDw8IDApCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVZJX0lOUFVUX0NPTE9S U1BBQ0VfWVVWNDQ0CSgxIDw8IDApCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVZJX0lOUFVUX0NP TE9SU1BBQ0VfUkdCCSgwIDw8IDApCj4gKwo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FWSV9JTkZP RlJBTUUJCTB4MGMKPiArCj4gKyNkZWZpbmUgU0lJOTAyWF9TWVNfQ1RSTF9EQVRBCQkJMHgxYQo+ ICsjZGVmaW5lIFNJSTkwMlhfU1lTX0NUUkxfUFdSX0RXTgkJQklUKDQpCj4gKyNkZWZpbmUgU0lJ OTAyWF9TWVNfQ1RSTF9BVl9NVVRFCQlCSVQoMykKPiArI2RlZmluZSBTSUk5MDJYX1NZU19DVFJM X0REQ19CVVNfUkVRCQlCSVQoMikKPiArI2RlZmluZSBTSUk5MDJYX1NZU19DVFJMX0REQ19CVVNf R1JURAkJQklUKDEpCj4gKyNkZWZpbmUgU0lJOTAyWF9TWVNfQ1RSTF9PVVRQVVRfTU9ERQkJQklU KDApCj4gKyNkZWZpbmUgU0lJOTAyWF9TWVNfQ1RSTF9PVVRQVVRfSERNSQkJMQo+ICsjZGVmaW5l IFNJSTkwMlhfU1lTX0NUUkxfT1VUUFVUX0RWSQkJMAo+ICsKPiArI2RlZmluZSBTSUk5MDJYX1JF R19DSElQSUQobikJCQkoMHgxYiArIChuKSkKPiArCj4gKyNkZWZpbmUgU0lJOTAyWF9QV1JfU1RB VEVfQ1RSTAkJCTB4MWUKPiArI2RlZmluZSBTSUk5MDJYX0FWSV9QT1dFUl9TVEFURV9NU0sJCUdF Tk1BU0soMSwgMCkKPiArI2RlZmluZSBTSUk5MDJYX0FWSV9QT1dFUl9TVEFURV9EKGwpCQkoKGwp ICYgU0lJOTAyWF9BVklfUE9XRVJfU1RBVEVfTVNLKQo+ICsKPiArI2RlZmluZSBTSUk5MDJYX0lO VF9FTkFCTEUJCQkweDNjCj4gKyNkZWZpbmUgU0lJOTAyWF9JTlRfU1RBVFVTCQkJMHgzZAo+ICsj ZGVmaW5lIFNJSTkwMlhfSE9UUExVR19FVkVOVAkJCUJJVCgwKQo+ICsjZGVmaW5lIFNJSTkwMlhf UExVR0dFRF9TVEFUVVMJCQlCSVQoMikKPiArCj4gKyNkZWZpbmUgU0lJOTAyWF9SRUdfVFBJX1JR QgkJCTB4YzcKPiArCj4gKyNkZWZpbmUgU0lJOTAyWF9JMkNfQlVTX0FDUVVJU0lUSU9OX1RJTUVP VVRfTVMJNTAwCj4gKwo+ICtzdHJ1Y3Qgc2lpOTAyeCB7Cj4gKwlzdHJ1Y3QgaTJjX2NsaWVudCAq aTJjOwo+ICsJc3RydWN0IHJlZ21hcCAqcmVnbWFwOwo+ICsJc3RydWN0IGRybV9icmlkZ2UgYnJp ZGdlOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgY29ubmVjdG9yOwo+ICsJc3RydWN0IGdwaW9f ZGVzYyAqcmVzZXRfZ3BpbzsKPiArfTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHNpaTkw MnggKmJyaWRnZV90b19zaWk5MDJ4KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gK3sKPiAr CXJldHVybiBjb250YWluZXJfb2YoYnJpZGdlLCBzdHJ1Y3Qgc2lpOTAyeCwgYnJpZGdlKTsKPiAr fQo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2lpOTAyeCAqY29ubmVjdG9yX3RvX3NpaTkw Mngoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbikKPiArewo+ICsJcmV0dXJuIGNvbnRhaW5lcl9v Zihjb24sIHN0cnVjdCBzaWk5MDJ4LCBjb25uZWN0b3IpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9p ZCBzaWk5MDJ4X3Jlc2V0KHN0cnVjdCBzaWk5MDJ4ICpzaWk5MDJ4KQo+ICt7Cj4gKwlpZiAoIXNp aTkwMngtPnJlc2V0X2dwaW8pCj4gKwkJcmV0dXJuOwo+ICsKPiArCWdwaW9kX3NldF92YWx1ZShz aWk5MDJ4LT5yZXNldF9ncGlvLCAxKTsKPiArCj4gKwkvKiBUaGUgZGF0YXNoZWV0IHNheXMgdHJl c2V0LW1pbiA9IDEwMHVzLiBNYWtlIGl0IDE1MHVzIHRvIGJlIHN1cmUuICovCj4gKwl1c2xlZXBf cmFuZ2UoMTUwLCAyMDApOwo+ICsKPiArCWdwaW9kX3NldF92YWx1ZShzaWk5MDJ4LT5yZXNldF9n cGlvLCAwKTsKPiArfQo+ICsKPiArc3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMKPiAr c2lpOTAyeF9jb25uZWN0b3JfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is IGJvb2wgZm9yY2UpCj4gK3sKPiArCXN0cnVjdCBzaWk5MDJ4ICpzaWk5MDJ4ID0gY29ubmVjdG9y X3RvX3NpaTkwMngoY29ubmVjdG9yKTsKPiArCXVuc2lnbmVkIGludCBzdGF0dXM7Cj4gKwo+ICsJ cmVnbWFwX3JlYWQoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX0lOVF9TVEFUVVMsICZzdGF0dXMp Owo+ICsKPiArCXJldHVybiAoc3RhdHVzICYgU0lJOTAyWF9QTFVHR0VEX1NUQVRVUykgPwo+ICsJ ICAgICAgIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkIDogY29ubmVjdG9yX3N0YXR1c19kaXNj b25uZWN0ZWQ7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9m dW5jcyBzaWk5MDJ4X2Nvbm5lY3Rvcl9mdW5jcyA9IHsKPiArCS5kcG1zID0gZHJtX2F0b21pY19o ZWxwZXJfY29ubmVjdG9yX2RwbXMsCj4gKwkuZGV0ZWN0ID0gc2lpOTAyeF9jb25uZWN0b3JfZGV0 ZWN0LAo+ICsJLmZpbGxfbW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3Jf bW9kZXMsCj4gKwkuZGVzdHJveSA9IGRybV9jb25uZWN0b3JfY2xlYW51cCwKPiArCS5yZXNldCA9 IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9yZXNldCwKPiArCS5hdG9taWNfZHVwbGljYXRl X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwKPiAr CS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0 cm95X3N0YXRlLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBzaWk5MDJ4X2dldF9tb2RlcyhzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlzdHJ1Y3Qgc2lpOTAyeCAqc2lp OTAyeCA9IGNvbm5lY3Rvcl90b19zaWk5MDJ4KGNvbm5lY3Rvcik7Cj4gKwlzdHJ1Y3QgcmVnbWFw ICpyZWdtYXAgPSBzaWk5MDJ4LT5yZWdtYXA7Cj4gKwl1MzIgYnVzX2Zvcm1hdCA9IE1FRElBX0JV U19GTVRfUkdCODg4XzFYMjQ7Cj4gKwl1bnNpZ25lZCBsb25nIHRpbWVvdXQ7Cj4gKwl1bnNpZ25l ZCBpbnQgc3RhdHVzOwo+ICsJc3RydWN0IGVkaWQgKmVkaWQ7Cj4gKwlpbnQgbnVtID0gMDsKPiAr CWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHJlZ21hcCwgU0lJOTAy WF9TWVNfQ1RSTF9EQVRBLAo+ICsJCQkJIFNJSTkwMlhfU1lTX0NUUkxfRERDX0JVU19SRVEsCj4g KwkJCQkgU0lJOTAyWF9TWVNfQ1RSTF9ERENfQlVTX1JFUSk7Cj4gKwlpZiAocmV0KQo+ICsJCXJl dHVybiByZXQ7Cj4gKwo+ICsJdGltZW91dCA9IGppZmZpZXMgKwo+ICsJCSAgbXNlY3NfdG9famlm ZmllcyhTSUk5MDJYX0kyQ19CVVNfQUNRVUlTSVRJT05fVElNRU9VVF9NUyk7Cj4gKwlkbyB7Cj4g KwkJcmV0ID0gcmVnbWFwX3JlYWQocmVnbWFwLCBTSUk5MDJYX1NZU19DVFJMX0RBVEEsICZzdGF0 dXMpOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiByZXQ7Cj4gKwl9IHdoaWxlICghKHN0YXR1 cyAmIFNJSTkwMlhfU1lTX0NUUkxfRERDX0JVU19HUlREKSAmJgo+ICsJCSB0aW1lX2JlZm9yZShq aWZmaWVzLCB0aW1lb3V0KSk7Cj4gKwo+ICsJaWYgKCEoc3RhdHVzICYgU0lJOTAyWF9TWVNfQ1RS TF9ERENfQlVTX0dSVEQpKSB7Cj4gKwkJZGV2X2Vycigmc2lpOTAyeC0+aTJjLT5kZXYsICJmYWls ZWQgdG8gYWNxdWlyZSB0aGUgaTJjIGJ1cyIpOwo+ICsJCXJldHVybiAtRVRJTUVET1VUOwo+ICsJ fQo+ICsKPiArCXJldCA9IHJlZ21hcF93cml0ZShyZWdtYXAsIFNJSTkwMlhfU1lTX0NUUkxfREFU QSwgc3RhdHVzKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwllZGlkID0g ZHJtX2dldF9lZGlkKGNvbm5lY3Rvciwgc2lpOTAyeC0+aTJjLT5hZGFwdGVyKTsKPiArCWRybV9t b2RlX2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eShjb25uZWN0b3IsIGVkaWQpOwo+ICsJ aWYgKGVkaWQpIHsKPiArCQludW0gPSBkcm1fYWRkX2VkaWRfbW9kZXMoY29ubmVjdG9yLCBlZGlk KTsKPiArCQlrZnJlZShlZGlkKTsKPiArCX0KPiArCj4gKwlyZXQgPSBkcm1fZGlzcGxheV9pbmZv X3NldF9idXNfZm9ybWF0cygmY29ubmVjdG9yLT5kaXNwbGF5X2luZm8sCj4gKwkJCQkJICAgICAg ICZidXNfZm9ybWF0LCAxKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwly ZXQgPSByZWdtYXBfcmVhZChyZWdtYXAsIFNJSTkwMlhfU1lTX0NUUkxfREFUQSwgJnN0YXR1cyk7 Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0ID0gcmVnbWFwX3VwZGF0 ZV9iaXRzKHJlZ21hcCwgU0lJOTAyWF9TWVNfQ1RSTF9EQVRBLAo+ICsJCQkJIFNJSTkwMlhfU1lT X0NUUkxfRERDX0JVU19SRVEgfAo+ICsJCQkJIFNJSTkwMlhfU1lTX0NUUkxfRERDX0JVU19HUlRE LCAwKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwl0aW1lb3V0ID0gamlm ZmllcyArCj4gKwkJICBtc2Vjc190b19qaWZmaWVzKFNJSTkwMlhfSTJDX0JVU19BQ1FVSVNJVElP Tl9USU1FT1VUX01TKTsKPiArCWRvIHsKPiArCQlyZXQgPSByZWdtYXBfcmVhZChyZWdtYXAsIFNJ STkwMlhfU1lTX0NUUkxfREFUQSwgJnN0YXR1cyk7Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJu IHJldDsKPiArCX0gd2hpbGUgKHN0YXR1cyAmIChTSUk5MDJYX1NZU19DVFJMX0REQ19CVVNfUkVR IHwKPiArCQkJICAgU0lJOTAyWF9TWVNfQ1RSTF9ERENfQlVTX0dSVEQpICYmCj4gKwkJIHRpbWVf YmVmb3JlKGppZmZpZXMsIHRpbWVvdXQpKTsKPiArCj4gKwlpZiAoc3RhdHVzICYgKFNJSTkwMlhf U1lTX0NUUkxfRERDX0JVU19SRVEgfAo+ICsJCSAgICAgIFNJSTkwMlhfU1lTX0NUUkxfRERDX0JV U19HUlREKSkgewo+ICsJCWRldl9lcnIoJnNpaTkwMngtPmkyYy0+ZGV2LCAiZmFpbGVkIHRvIHJl bGVhc2UgdGhlIGkyYyBidXMiKTsKPiArCQlyZXR1cm4gLUVUSU1FRE9VVDsKPiArCX0KPiArCj4g KwlyZXR1cm4gbnVtOwo+ICt9Cj4gKwo+ICtzdGF0aWMgZW51bSBkcm1fbW9kZV9zdGF0dXMgc2lp OTAyeF9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKwkJCQkJ ICAgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQo+ICt7Cj4gKwkvKiBUT0RPOiBj aGVjayBtb2RlICovCj4gKwo+ICsJcmV0dXJuIE1PREVfT0s7Cj4gK30KPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3Mgc2lpOTAyeF9jb25uZWN0b3Jf aGVscGVyX2Z1bmNzID0gewo+ICsJLmdldF9tb2RlcyA9IHNpaTkwMnhfZ2V0X21vZGVzLAo+ICsJ Lm1vZGVfdmFsaWQgPSBzaWk5MDJ4X21vZGVfdmFsaWQsCj4gK307Cj4gKwo+ICtzdGF0aWMgdm9p ZCBzaWk5MDJ4X2JyaWRnZV9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gK3sK PiArCXN0cnVjdCBzaWk5MDJ4ICpzaWk5MDJ4ID0gYnJpZGdlX3RvX3NpaTkwMngoYnJpZGdlKTsK PiArCj4gKwlyZWdtYXBfdXBkYXRlX2JpdHMoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX1NZU19D VFJMX0RBVEEsCj4gKwkJCSAgIFNJSTkwMlhfU1lTX0NUUkxfUFdSX0RXTiwKPiArCQkJICAgU0lJ OTAyWF9TWVNfQ1RSTF9QV1JfRFdOKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgc2lpOTAyeF9i cmlkZ2VfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gK3sKPiArCXN0cnVjdCBz aWk5MDJ4ICpzaWk5MDJ4ID0gYnJpZGdlX3RvX3NpaTkwMngoYnJpZGdlKTsKPiArCj4gKwlyZWdt YXBfdXBkYXRlX2JpdHMoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX1BXUl9TVEFURV9DVFJMLAo+ ICsJCQkgICBTSUk5MDJYX0FWSV9QT1dFUl9TVEFURV9NU0ssCj4gKwkJCSAgIFNJSTkwMlhfQVZJ X1BPV0VSX1NUQVRFX0QoMCkpOwo+ICsJcmVnbWFwX3VwZGF0ZV9iaXRzKHNpaTkwMngtPnJlZ21h cCwgU0lJOTAyWF9TWVNfQ1RSTF9EQVRBLAo+ICsJCQkgICBTSUk5MDJYX1NZU19DVFJMX1BXUl9E V04sIDApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBzaWk5MDJ4X2JyaWRnZV9tb2RlX3NldChz dHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ICsJCQkJICAgIHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlLAo+ICsJCQkJICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGopCj4gK3sK PiArCXN0cnVjdCBzaWk5MDJ4ICpzaWk5MDJ4ID0gYnJpZGdlX3RvX3NpaTkwMngoYnJpZGdlKTsK PiArCXN0cnVjdCByZWdtYXAgKnJlZ21hcCA9IHNpaTkwMngtPnJlZ21hcDsKPiArCXU4IGJ1ZltI RE1JX0lORk9GUkFNRV9TSVpFKEFWSSldOwo+ICsJc3RydWN0IGhkbWlfYXZpX2luZm9mcmFtZSBm cmFtZTsKPiArCWludCByZXQ7Cj4gKwo+ICsJYnVmWzBdID0gYWRqLT5jbG9jazsKPiArCWJ1Zlsx XSA9IGFkai0+Y2xvY2sgPj4gODsKPiArCWJ1ZlsyXSA9IGFkai0+dnJlZnJlc2g7Cj4gKwlidWZb M10gPSAweDAwOwo+ICsJYnVmWzRdID0gYWRqLT5oZGlzcGxheTsKPiArCWJ1Zls1XSA9IGFkai0+ aGRpc3BsYXkgPj4gODsKPiArCWJ1Zls2XSA9IGFkai0+dmRpc3BsYXk7Cj4gKwlidWZbN10gPSBh ZGotPnZkaXNwbGF5ID4+IDg7Cj4gKwlidWZbOF0gPSBTSUk5MDJYX1RQSV9DTEtfUkFUSU9fMVgg fCBTSUk5MDJYX1RQSV9BVklfUElYRUxfUkVQX05PTkUgfAo+ICsJCSBTSUk5MDJYX1RQSV9BVklf UElYRUxfUkVQX0JVU18yNEJJVDsKPiArCWJ1Zls5XSA9IFNJSTkwMlhfVFBJX0FWSV9JTlBVVF9S QU5HRV9BVVRPIHwKPiArCQkgU0lJOTAyWF9UUElfQVZJX0lOUFVUX0NPTE9SU1BBQ0VfUkdCOwo+ ICsKPiArCXJldCA9IHJlZ21hcF9idWxrX3dyaXRlKHJlZ21hcCwgU0lJOTAyWF9UUElfVklERU9f REFUQSwgYnVmLCAxMCk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybjsKPiArCj4gKwlyZXQgPSBk cm1faGRtaV9hdmlfaW5mb2ZyYW1lX2Zyb21fZGlzcGxheV9tb2RlKCZmcmFtZSwgYWRqKTsKPiAr CWlmIChyZXQgPCAwKSB7Cj4gKwkJRFJNX0VSUk9SKCJjb3VsZG4ndCBmaWxsIEFWSSBpbmZvZnJh bWVcbiIpOwo+ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwlyZXQgPSBoZG1pX2F2aV9pbmZvZnJh bWVfcGFjaygmZnJhbWUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwo+ICsJaWYgKHJldCA8IDApIHsKPiAr CQlEUk1fRVJST1IoImZhaWxlZCB0byBwYWNrIEFWSSBpbmZvZnJhbWU6ICVkXG4iLCByZXQpOwo+ ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwkvKiBEbyBub3Qgc2VuZCB0aGUgaW5mb2ZyYW1lIGhl YWRlciwgYnV0IGtlZXAgdGhlIENSQyBmaWVsZC4gKi8KPiArCXJlZ21hcF9idWxrX3dyaXRlKHJl Z21hcCwgU0lJOTAyWF9UUElfQVZJX0lORk9GUkFNRSwKPiArCQkJICBidWYgKyBIRE1JX0lORk9G UkFNRV9IRUFERVJfU0laRSAtIDEsCj4gKwkJCSAgSERNSV9BVklfSU5GT0ZSQU1FX1NJWkUgKyAx KTsKPiArfQo+ICsKPiArc3RhdGljIGludCBzaWk5MDJ4X2JyaWRnZV9hdHRhY2goc3RydWN0IGRy bV9icmlkZ2UgKmJyaWRnZSkKPiArewo+ICsJc3RydWN0IHNpaTkwMnggKnNpaTkwMnggPSBicmlk Z2VfdG9fc2lpOTAyeChicmlkZ2UpOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGJyaWRn ZS0+ZGV2Owo+ICsJaW50IHJldDsKPiArCj4gKwlkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoJnNp aTkwMngtPmNvbm5lY3RvciwKPiArCQkJCSAmc2lpOTAyeF9jb25uZWN0b3JfaGVscGVyX2Z1bmNz KTsKPiArCj4gKwlpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZHJtLCBEUklWRVJfQVRPTUlD KSkgewo+ICsJCWRldl9lcnIoJnNpaTkwMngtPmkyYy0+ZGV2LAo+ICsJCQkic2lpOTAyeCBkcml2 ZXIgaXMgb25seSBjb21wYXRpYmxlIHdpdGggRFJNIGRldmljZXMgc3VwcG9ydGluZyBhdG9taWMg dXBkYXRlcyIpOwo+ICsJCXJldHVybiAtRU5PVFNVUFA7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gZHJt X2Nvbm5lY3Rvcl9pbml0KGRybSwgJnNpaTkwMngtPmNvbm5lY3RvciwKPiArCQkJCSAmc2lpOTAy eF9jb25uZWN0b3JfZnVuY3MsCj4gKwkJCQkgRFJNX01PREVfQ09OTkVDVE9SX0hETUlBKTsKPiAr CWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlpZiAoc2lpOTAyeC0+aTJjLT5pcnEg PiAwKQo+ICsJCXNpaTkwMngtPmNvbm5lY3Rvci5wb2xsZWQgPSBEUk1fQ09OTkVDVE9SX1BPTExf SFBEOwo+ICsJZWxzZQo+ICsJCXNpaTkwMngtPmNvbm5lY3Rvci5wb2xsZWQgPSBEUk1fQ09OTkVD VE9SX1BPTExfQ09OTkVDVDsKPiArCj4gKwlkcm1fbW9kZV9jb25uZWN0b3JfYXR0YWNoX2VuY29k ZXIoJnNpaTkwMngtPmNvbm5lY3RvciwgYnJpZGdlLT5lbmNvZGVyKTsKPiArCj4gKwlyZXR1cm4g MDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNzIHNpaTkw MnhfYnJpZGdlX2Z1bmNzID0gewo+ICsJLmF0dGFjaCA9IHNpaTkwMnhfYnJpZGdlX2F0dGFjaCwK PiArCS5tb2RlX3NldCA9IHNpaTkwMnhfYnJpZGdlX21vZGVfc2V0LAo+ICsJLmRpc2FibGUgPSBz aWk5MDJ4X2JyaWRnZV9kaXNhYmxlLAo+ICsJLmVuYWJsZSA9IHNpaTkwMnhfYnJpZGdlX2VuYWJs ZSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX3JhbmdlIHNpaTkwMnhf dm9sYXRpbGVfcmFuZ2VzW10gPSB7Cj4gKwl7IC5yYW5nZV9taW4gPSAwLCAucmFuZ2VfbWF4ID0g MHhmZiB9LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfYWNjZXNzX3Rh YmxlIHNpaTkwMnhfdm9sYXRpbGVfdGFibGUgPSB7Cj4gKwkueWVzX3JhbmdlcyA9IHNpaTkwMnhf dm9sYXRpbGVfcmFuZ2VzLAo+ICsJLm5feWVzX3JhbmdlcyA9IEFSUkFZX1NJWkUoc2lpOTAyeF92 b2xhdGlsZV9yYW5nZXMpLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBf Y29uZmlnIHNpaTkwMnhfcmVnbWFwX2NvbmZpZyA9IHsKPiArCS5yZWdfYml0cyA9IDgsCj4gKwku dmFsX2JpdHMgPSA4LAo+ICsJLnZvbGF0aWxlX3RhYmxlID0gJnNpaTkwMnhfdm9sYXRpbGVfdGFi bGUsCj4gKwkuY2FjaGVfdHlwZSA9IFJFR0NBQ0hFX05PTkUsCj4gK307Cj4gKwo+ICtzdGF0aWMg aXJxcmV0dXJuX3Qgc2lpOTAyeF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGF0YSkKPiArewo+ ICsJc3RydWN0IHNpaTkwMnggKnNpaTkwMnggPSBkYXRhOwo+ICsJdW5zaWduZWQgaW50IHN0YXR1 cyA9IDA7Cj4gKwo+ICsJcmVnbWFwX3JlYWQoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX0lOVF9T VEFUVVMsICZzdGF0dXMpOwo+ICsJcmVnbWFwX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAy WF9JTlRfU1RBVFVTLCBzdGF0dXMpOwo+ICsKPiArCWlmICgoc3RhdHVzICYgU0lJOTAyWF9IT1RQ TFVHX0VWRU5UKSAmJiBzaWk5MDJ4LT5icmlkZ2UuZGV2KQo+ICsJCWRybV9oZWxwZXJfaHBkX2ly cV9ldmVudChzaWk5MDJ4LT5icmlkZ2UuZGV2KTsKPiArCj4gKwlyZXR1cm4gSVJRX0hBTkRMRUQ7 Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgc2lpOTAyeF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50LAo+ICsJCQkgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQo+ICt7Cj4gKwlz dHJ1Y3QgZGV2aWNlICpkZXYgPSAmY2xpZW50LT5kZXY7Cj4gKwl1bnNpZ25lZCBpbnQgc3RhdHVz ID0gMDsKPiArCXN0cnVjdCBzaWk5MDJ4ICpzaWk5MDJ4Owo+ICsJdTggY2hpcGlkWzRdOwo+ICsJ aW50IHJldDsKPiArCj4gKwlzaWk5MDJ4ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpzaWk5 MDJ4KSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIXNpaTkwMngpCj4gKwkJcmV0dXJuIC1FTk9NRU07 Cj4gKwo+ICsJc2lpOTAyeC0+aTJjID0gY2xpZW50Owo+ICsJc2lpOTAyeC0+cmVnbWFwID0gZGV2 bV9yZWdtYXBfaW5pdF9pMmMoY2xpZW50LCAmc2lpOTAyeF9yZWdtYXBfY29uZmlnKTsKPiArCWlm IChJU19FUlIoc2lpOTAyeC0+cmVnbWFwKSkKPiArCQlyZXR1cm4gUFRSX0VSUihzaWk5MDJ4LT5y ZWdtYXApOwo+ICsKPiArCXNpaTkwMngtPnJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRp b25hbChkZXYsICJyZXNldCIsCj4gKwkJCQkJCSAgICAgIEdQSU9EX09VVF9MT1cpOwo+ICsJaWYg KElTX0VSUihzaWk5MDJ4LT5yZXNldF9ncGlvKSkgewo+ICsJCWRldl9lcnIoZGV2LCAiRmFpbGVk IHRvIHJldHJpZXZlL3JlcXVlc3QgcmVzZXQgZ3BpbzogJWxkXG4iLAo+ICsJCQlQVFJfRVJSKHNp aTkwMngtPnJlc2V0X2dwaW8pKTsKPiArCQlyZXR1cm4gUFRSX0VSUihzaWk5MDJ4LT5yZXNldF9n cGlvKTsKPiArCX0KPiArCj4gKwlzaWk5MDJ4X3Jlc2V0KHNpaTkwMngpOwo+ICsKPiArCXJldCA9 IHJlZ21hcF93cml0ZShzaWk5MDJ4LT5yZWdtYXAsIFNJSTkwMlhfUkVHX1RQSV9SUUIsIDB4MCk7 Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0ID0gcmVnbWFwX2J1bGtf cmVhZChzaWk5MDJ4LT5yZWdtYXAsIFNJSTkwMlhfUkVHX0NISVBJRCgwKSwKPiArCQkJICAgICAg ICZjaGlwaWQsIDQpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoZGV2LCAicmVnbWFwX3Jl YWQgZmFpbGVkICVkXG4iLCByZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJaWYg KGNoaXBpZFswXSAhPSAweGIwKSB7Cj4gKwkJZGV2X2VycihkZXYsICJJbnZhbGlkIGNoaXBpZDog JTAyeCAoZXhwZWN0aW5nIDB4YjApXG4iLAo+ICsJCQljaGlwaWRbMF0pOwo+ICsJCXJldHVybiAt RUlOVkFMOwo+ICsJfQo+ICsKPiArCS8qIENsZWFyIGFsbCBwZW5kaW5nIGludGVycnVwdHMgKi8K PiArCXJlZ21hcF9yZWFkKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9JTlRfU1RBVFVTLCAmc3Rh dHVzKTsKPiArCXJlZ21hcF93cml0ZShzaWk5MDJ4LT5yZWdtYXAsIFNJSTkwMlhfSU5UX1NUQVRV Uywgc3RhdHVzKTsKPiArCj4gKwlpZiAoY2xpZW50LT5pcnEgPiAwKSB7Cj4gKwkJcmVnbWFwX3dy aXRlKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9JTlRfRU5BQkxFLAo+ICsJCQkgICAgIFNJSTkw MlhfSE9UUExVR19FVkVOVCk7Cj4gKwo+ICsJCXJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9p cnEoZGV2LCBjbGllbnQtPmlycSwgTlVMTCwKPiArCQkJCQkJc2lpOTAyeF9pbnRlcnJ1cHQsCj4g KwkJCQkJCUlSUUZfT05FU0hPVCwgZGV2X25hbWUoZGV2KSwKPiArCQkJCQkJc2lpOTAyeCk7Cj4g KwkJaWYgKHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlzaWk5MDJ4LT5icmlk Z2UuZnVuY3MgPSAmc2lpOTAyeF9icmlkZ2VfZnVuY3M7Cj4gKwlzaWk5MDJ4LT5icmlkZ2Uub2Zf bm9kZSA9IGRldi0+b2Zfbm9kZTsKPiArCXJldCA9IGRybV9icmlkZ2VfYWRkKCZzaWk5MDJ4LT5i cmlkZ2UpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGFkZCBk cm1fYnJpZGdlXG4iKTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCWkyY19zZXRfY2xp ZW50ZGF0YShjbGllbnQsIHNpaTkwMngpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW50IHNpaTkwMnhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gKwo+ ICt7Cj4gKwlzdHJ1Y3Qgc2lpOTAyeCAqc2lpOTAyeCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGll bnQpOwo+ICsKPiArCWRybV9icmlkZ2VfcmVtb3ZlKCZzaWk5MDJ4LT5icmlkZ2UpOwo+ICsKPiAr CXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBz aWk5MDJ4X2R0X2lkc1tdID0gewo+ICsJeyAuY29tcGF0aWJsZSA9ICJzaWwsc2lpOTAyMiIsIH0s Cj4gKwl7IH0KPiArfTsKPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc2lpOTAyeF9kdF9pZHMp Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHNpaTkwMnhfaTJjX2lk c1tdID0gewo+ICsJeyAic2lpOTAyMiIsIDAgfSwKPiArCXsgfSwKPiArfTsKPiArTU9EVUxFX0RF VklDRV9UQUJMRShpMmMsIHNpaTkwMnhfaTJjX2lkcyk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGky Y19kcml2ZXIgc2lpOTAyeF9kcml2ZXIgPSB7Cj4gKwkucHJvYmUgPSBzaWk5MDJ4X3Byb2JlLAo+ ICsJLnJlbW92ZSA9IHNpaTkwMnhfcmVtb3ZlLAo+ICsJLmRyaXZlciA9IHsKPiArCQkubmFtZSA9 ICJzaWk5MDJ4IiwKPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBzaWk5MDJ4X2R0X2lkcywKPiArCX0s Cj4gKwkuaWRfdGFibGUgPSBzaWk5MDJ4X2kyY19pZHMsCj4gK307Cj4gK21vZHVsZV9pMmNfZHJp dmVyKHNpaTkwMnhfZHJpdmVyKTsKPiArCj4gK01PRFVMRV9BVVRIT1IoIkJvcmlzIEJyZXppbGxv biA8Ym9yaXMuYnJlemlsbG9uQGZyZWUtZWxlY3Ryb25zLmNvbT4iKTsKPiArTU9EVUxFX0RFU0NS SVBUSU9OKCJTSUk5MDJ4IFJHQiAtPiBIRE1JIGJyaWRnZXMiKTsKPiArTU9EVUxFX0xJQ0VOU0Uo IkdQTCIpOwo+CgotLSAKVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEg bWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYSAKRm9ydW0sIGhvc3RlZCBieSBUaGUgTGludXggRm91 bmRhdGlvbgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK