From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH v5 5/9] drm/bridge: tc358764: Add DSI to LVDS bridge driver Date: Fri, 27 Jul 2018 13:30:00 +0300 Message-ID: <2379711.GqVgyly0te@avalon> References: <20180725154644.25412-1-a.hajda@samsung.com> <20180727071753eucas1p2aae43a4241ce25bd96f416dc67f43424~FKJYOb-Aa2025020250eucas1p2C@eucas1p2.samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180727071753eucas1p2aae43a4241ce25bd96f416dc67f43424~FKJYOb-Aa2025020250eucas1p2C@eucas1p2.samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Andrzej Hajda Cc: Maciej Purski , linux-samsung-soc@vger.kernel.org, Bartlomiej Zolnierkiewicz , dri-devel@lists.freedesktop.org, Rob Herring , Thierry Reding , Krzysztof Kozlowski , Marek Szyprowski List-Id: linux-samsung-soc@vger.kernel.org SGkgQW5kcnplaiwKCk9uIEZyaWRheSwgMjcgSnVseSAyMDE4IDEwOjE3OjUwIEVFU1QgQW5kcnpl aiBIYWpkYSB3cm90ZToKPiBPbiAyNi4wNy4yMDE4IDA5OjM2LCBBcmNoaXQgVGFuZWphIHdyb3Rl Ogo+ID4gT24gV2VkbmVzZGF5IDI1IEp1bHkgMjAxOCAwOToxNiBQTSwgQW5kcnplaiBIYWpkYSB3 cm90ZToKPiA+PiBBZGQgYSBkcm1fYnJpZGdlIGRyaXZlciBmb3IgdGhlIFRvc2hpYmEgVEMzNTg3 NjQgRFNJIHRvIExWRFMgYnJpZGdlLgo+ID4+IAo+ID4+IENoYW5nZXMgaW4gdjQ6Cj4gPj4gLSBy ZW1vdmVkIGxpY2Vuc2UgYmxvYiwKPiA+PiAtIG9yZGVyZWQgaW5jbHVkZXMsCj4gPj4gLSBhZGRl ZCBlcnJvciBoYW5kbGluZywKPiA+PiAtIGZpeGVkIHJlc2V0IEdQSU8gaGFuZGxpbmcsCj4gPj4g LSBhZGRlZCBtaXNzaW5nIGNhbGxzIHRvIHRoZSBwYW5lbCwKPiA+PiAtIGN1c3RvbSBPRiBncmFw aCBjb2RlIHJlcGxhY2VkIHdpdGggaGVscGVycywKPiA+PiAtIHJlbW92ZWQgdGMzNTg3NjRfcG93 ZXJvZmYgZnJvbSByZW1vdmUgY2FsbGJhY2suCj4gPj4gdjU6Cj4gPj4gLSBmaXhlZCBzdXBwbHkg bmFtZXMsCj4gPj4gLSBmaXhlZCBicm9rZW4gY29uc29sZSAtIGFkZGVkIGNvbm5lY3RvciB0byBm Yl9oZWxwZXIsCj4gPj4gLSBhZGRlZCBkZXRhY2ggY2FsbGJhY2sgLSB1bmJpbmRpbmcgd29ya3Ms Cj4gPj4gLSBmaXhlZCB0eXBvIGluIGVycm9yIGNoZWNraW5nIGNvZGUsCj4gPj4gLSByZW1vdmVk IHNwYXJzZSBicmlkZ2UtPmVuY29kZXIgY2hlY2sgLSBjb3JlIGRvZXMgaXQgYWxyZWFkeS4KPiA+ PiAKPiA+PiBTaWduZWQtb2ZmLWJ5OiBBbmRyemVqIEhhamRhIDxhLmhhamRhQHNhbXN1bmcuY29t Pgo+ID4+IFNpZ25lZC1vZmYtYnk6IE1hY2llaiBQdXJza2kgPG0ucHVyc2tpQHNhbXN1bmcuY29t Pgo+ID4+IFsgYS5oYWpkYUBzYW1zdW5nLmNvbTogdjQsIHY1IF0KPiA+PiBTaWduZWQtb2ZmLWJ5 OiBBbmRyemVqIEhhamRhIDxhLmhhamRhQHNhbXN1bmcuY29tPgo+ID4+IC0tLQo+ID4+IAo+ID4+ ICAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnICAgIHwgICA4ICsKPiA+PiAgIGRyaXZl cnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUgICB8ICAgMSArCj4gPj4gICBkcml2ZXJzL2dwdS9k cm0vYnJpZGdlL3RjMzU4NzY0LmMgfCA0OTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Cj4gPj4gICAzIGZpbGVzIGNoYW5nZWQsIDUwOCBpbnNlcnRpb25zKCspCj4gPj4gICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90YzM1ODc2NC5jCj4gPj4gCj4gPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZwo+ID4+IGIvZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnIGluZGV4IGZhMmM3OTk3ZTJmZC4uZjNkYThhNzE2ODMz IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZwo+ID4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZwo+ID4+IEBAIC0xMTAsNiArMTEwLDE0 IEBAIGNvbmZpZyBEUk1fVEhJTkVfVEhDNjNMVkQxMDI0Cj4gPj4gCj4gPj4gICAJLS0taGVscC0t LQo+ID4+ICAgCQo+ID4+ICAgCSAgVGhpbmUgVEhDNjNMVkQxMDI0IExWRFMvcGFyYWxsZWwgY29u dmVydGVyIGRyaXZlci4KPiA+PiAKPiA+PiArY29uZmlnIERSTV9UT1NISUJBX1RDMzU4NzY0Cj4g Pj4gKwl0cmlzdGF0ZSAiVEMzNTg3NjQgRFNJL0xWRFMgYnJpZGdlIgo+ID4+ICsJZGVwZW5kcyBv biBEUk0gJiYgRFJNX1BBTkVMCj4gPj4gKwlkZXBlbmRzIG9uIE9GCj4gPj4gKwlzZWxlY3QgRFJN X01JUElfRFNJCj4gPj4gKwloZWxwCj4gPj4gKwkgIFRvc2hpYmEgVEMzNTg3NjQgRFNJL0xWRFMg YnJpZGdlIGRyaXZlci4KPiA+PiArCj4gPj4gCj4gPj4gICBjb25maWcgRFJNX1RPU0hJQkFfVEMz NTg3NjcKPiA+PiAgIAo+ID4+ICAgCXRyaXN0YXRlICJUb3NoaWJhIFRDMzU4NzY3IGVEUCBicmlk Z2UiCj4gPj4gICAJZGVwZW5kcyBvbiBPRgo+ID4+IAo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlCj4gPj4gYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01h a2VmaWxlIGluZGV4IDM1Zjg4ZDQ4ZWMyMC4uYmY3YzBjZWNmMjI3Cj4gPj4gMTAwNjQ0Cj4gPj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZQo+ID4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKPiA+PiBAQCAtMTAsNiArMTAsNyBAQCBvYmotJChDT05G SUdfRFJNX1NJTF9TSUk4NjIwKSArPSBzaWwtc2lpODYyMC5vCj4gPj4gCj4gPj4gICBvYmotJChD T05GSUdfRFJNX1NJSTkwMlgpICs9IHNpaTkwMngubwo+ID4+ICAgb2JqLSQoQ09ORklHX0RSTV9T SUk5MjM0KSArPSBzaWk5MjM0Lm8KPiA+PiAgIG9iai0kKENPTkZJR19EUk1fVEhJTkVfVEhDNjNM VkQxMDI0KSArPSB0aGM2M2x2ZDEwMjQubwo+ID4+IAo+ID4+ICtvYmotJChDT05GSUdfRFJNX1RP U0hJQkFfVEMzNTg3NjQpICs9IHRjMzU4NzY0Lm8KPiA+PiAKPiA+PiAgIG9iai0kKENPTkZJR19E Uk1fVE9TSElCQV9UQzM1ODc2NykgKz0gdGMzNTg3Njcubwo+ID4+ICAgb2JqLSQoQ09ORklHX0RS TV9BTkFMT0dJWF9EUCkgKz0gYW5hbG9naXgvCj4gPj4gICBvYmotJChDT05GSUdfRFJNX0kyQ19B RFY3NTExKSArPSBhZHY3NTExLwo+ID4+IAo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYnJpZGdlL3RjMzU4NzY0LmMKPiA+PiBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvdGMzNTg3 NjQuYyBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4+IGluZGV4IDAwMDAwMDAwMDAwMC4uNzc5YmM1 ZmNlMjJhCj4gPj4gLS0tIC9kZXYvbnVsbAo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlk Z2UvdGMzNTg3NjQuYwo+ID4+IEBAIC0wLDAgKzEsNDk5IEBACj4gPj4gKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gPj4gKy8qCj4gPj4gKyAqIENvcHlyaWdodCAoQykgMjAx OCBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkCj4gPj4gKyAqCj4gPj4gKyAqIEF1dGhvcnM6 Cj4gPj4gKyAqCUFuZHJ6ZWogSGFqZGEgPGEuaGFqZGFAc2Ftc3VuZy5jb20+Cj4gPj4gKyAqCU1h Y2llaiBQdXJza2kgPG0ucHVyc2tpQHNhbXN1bmcuY29tPgo+ID4+ICsgKi8KPiA+PiArCj4gPj4g KyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiA+PiArI2luY2x1ZGUgPGRybS9k cm1fY3J0Yy5oPgo+ID4+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+ID4+ICsj aW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KPiA+PiArI2luY2x1ZGUgPGRybS9kcm1fbWlw aV9kc2kuaD4KPiA+PiArI2luY2x1ZGUgPGRybS9kcm1fb2YuaD4KPiA+PiArI2luY2x1ZGUgPGRy bS9kcm1fcGFuZWwuaD4KPiA+PiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gPj4gKyNpbmNsdWRl IDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+Cj4gPj4gKyNpbmNsdWRlIDxsaW51eC9vZl9ncmFwaC5o Pgo+ID4+ICsjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+Cj4gPj4gKyNpbmNs dWRlIDx2aWRlby9taXBpX2Rpc3BsYXkuaD4KPiA+PiArCj4gPj4gKyNkZWZpbmUgRkxEX01BU0so c3RhcnQsIGVuZCkgICAgKCgoMSA8PCAoKHN0YXJ0KSAtIChlbmQpICsgMSkpIC0gMSkgPDwKPiA+ PiAoZW5kKSkgKyNkZWZpbmUgRkxEX1ZBTCh2YWwsIHN0YXJ0LCBlbmQpICgoKHZhbCkgPDwgKGVu ZCkpICYKPiA+PiBGTERfTUFTSyhzdGFydCwgZW5kKSkgKwo+ID4+ICsvKiBQUEkgbGF5ZXIgcmVn aXN0ZXJzICovCj4gPj4gKyNkZWZpbmUgUFBJX1NUQVJUUFBJCQkweDAxMDQgLyogU1RBUlQgY29u dHJvbCBiaXQgKi8KPiA+PiArI2RlZmluZSBQUElfTFBUWFRJTUVDTlQJCTB4MDExNCAvKiBMUFRY IHRpbWluZyBzaWduYWwgKi8KPiA+PiArI2RlZmluZSBQUElfTEFORUVOQUJMRQkJMHgwMTM0IC8q IEVuYWJsZXMgZWFjaCBsYW5lICovCj4gPj4gKyNkZWZpbmUgUFBJX1RYX1JYX1RBCQkweDAxM0Mg LyogQlRBIHRpbWluZyBwYXJhbWV0ZXJzICovCj4gPj4gKyNkZWZpbmUgUFBJX0QwU19DTFJTSVBP Q09VTlQJMHgwMTY0IC8qIEFzc2VydGlvbiB0aW1lciBmb3IgTGFuZSAwICovCj4gPj4gKyNkZWZp bmUgUFBJX0QxU19DTFJTSVBPQ09VTlQJMHgwMTY4IC8qIEFzc2VydGlvbiB0aW1lciBmb3IgTGFu ZSAxICovCj4gPj4gKyNkZWZpbmUgUFBJX0QyU19DTFJTSVBPQ09VTlQJMHgwMTZDIC8qIEFzc2Vy dGlvbiB0aW1lciBmb3IgTGFuZSAyICovCj4gPj4gKyNkZWZpbmUgUFBJX0QzU19DTFJTSVBPQ09V TlQJMHgwMTcwIC8qIEFzc2VydGlvbiB0aW1lciBmb3IgTGFuZSAzICovCj4gPj4gKyNkZWZpbmUg UFBJX1NUQVJUX0ZVTkNUSU9OCTEKPiA+PiArCj4gPj4gKy8qIERTSSBsYXllciByZWdpc3RlcnMg Ki8KPiA+PiArI2RlZmluZSBEU0lfU1RBUlREU0kJCTB4MDIwNCAvKiBTVEFSVCBjb250cm9sIGJp dCBvZiBEU0ktVFggKi8KPiA+PiArI2RlZmluZSBEU0lfTEFORUVOQUJMRQkJMHgwMjEwIC8qIEVu YWJsZXMgZWFjaCBsYW5lICovCj4gPj4gKyNkZWZpbmUgRFNJX1JYX1NUQVJUCQkxCj4gPj4gKwo+ ID4+ICsvKiBWaWRlbyBwYXRoIHJlZ2lzdGVycyAqLwo+ID4+ICsjZGVmaW5lIFZQX0NUUkwJCQkw eDA0NTAgLyogVmlkZW8gUGF0aCBDb250cm9sICovCj4gPj4gKyNkZWZpbmUgVlBfQ1RSTF9NU0Yo dikJCUZMRF9WQUwodiwgMCwgMCkgLyogTWFnaWMgc3F1YXJlIGluIFJHQjY2NiAKKi8KPiA+PiAr I2RlZmluZSBWUF9DVFJMX1ZUR0VOKHYpCUZMRF9WQUwodiwgNCwgNCkgLyogVXNlIGNoaXAgY2xv Y2sgZm9yIHRpbWluZwo+ID4+ICovCj4gPj4gKyNkZWZpbmUgVlBfQ1RSTF9FVlRNT0RFKHYpCUZM RF9WQUwodiwgNSwgNSkgLyogRXZlbnQgbW9kZSAqLwo+ID4+ICsjZGVmaW5lIFZQX0NUUkxfUkdC ODg4KHYpCUZMRF9WQUwodiwgOCwgOCkgLyogUkdCODg4IG1vZGUgKi8KPiA+PiArI2RlZmluZSBW UF9DVFJMX1ZTREVMQVkodikJRkxEX1ZBTCh2LCAzMSwgMjApIC8qIFZTWU5DIGRlbGF5ICovCj4g Pj4gKyNkZWZpbmUgVlBfQ1RSTF9IU1BPTAkJQklUKDE3KSAvKiBQb2xhcml0eSBvZiBIU1lOQyBz aWduYWwgKi8KPiA+PiArI2RlZmluZSBWUF9DVFJMX0RFUE9MCQlCSVQoMTgpIC8qIFBvbGFyaXR5 IG9mIERFIHNpZ25hbCAqLwo+ID4+ICsjZGVmaW5lIFZQX0NUUkxfVlNQT0wJCUJJVCgxOSkgLyog UG9sYXJpdHkgb2YgVlNZTkMgc2lnbmFsICovCj4gPj4gKyNkZWZpbmUgVlBfSFRJTTEJCTB4MDQ1 NCAvKiBIb3Jpem9udGFsIFRpbWluZyBDb250cm9sIDEgKi8KPiA+PiArI2RlZmluZSBWUF9IVElN MV9IQlAodikJCUZMRF9WQUwodiwgMjQsIDE2KQo+ID4+ICsjZGVmaW5lIFZQX0hUSU0xX0hTWU5D KHYpCUZMRF9WQUwodiwgOCwgMCkKPiA+PiArI2RlZmluZSBWUF9IVElNMgkJMHgwNDU4IC8qIEhv cml6b250YWwgVGltaW5nIENvbnRyb2wgMiAqLwo+ID4+ICsjZGVmaW5lIFZQX0hUSU0yX0hGUCh2 KQkJRkxEX1ZBTCh2LCAyNCwgMTYpCj4gPj4gKyNkZWZpbmUgVlBfSFRJTTJfSEFDVCh2KQlGTERf VkFMKHYsIDEwLCAwKQo+ID4+ICsjZGVmaW5lIFZQX1ZUSU0xCQkweDA0NUMgLyogVmVydGljYWwg VGltaW5nIENvbnRyb2wgMSAqLwo+ID4+ICsjZGVmaW5lIFZQX1ZUSU0xX1ZCUCh2KQkJRkxEX1ZB TCh2LCAyMywgMTYpCj4gPj4gKyNkZWZpbmUgVlBfVlRJTTFfVlNZTkModikJRkxEX1ZBTCh2LCA3 LCAwKQo+ID4+ICsjZGVmaW5lIFZQX1ZUSU0yCQkweDA0NjAgLyogVmVydGljYWwgVGltaW5nIENv bnRyb2wgMiAqLwo+ID4+ICsjZGVmaW5lIFZQX1ZUSU0yX1ZGUCh2KQkJRkxEX1ZBTCh2LCAyMywg MTYpCj4gPj4gKyNkZWZpbmUgVlBfVlRJTTJfVkFDVCh2KQlGTERfVkFMKHYsIDEwLCAwKQo+ID4+ ICsjZGVmaW5lIFZQX1ZGVUVOCQkweDA0NjQgLyogVmlkZW8gRnJhbWUgVGltaW5nIFVwZGF0ZSBF bmFibGUgKi8KPiA+PiArCj4gPj4gKy8qIExWRFMgcmVnaXN0ZXJzICovCj4gPj4gKyNkZWZpbmUg TFZfTVgwMDAzCQkweDA0ODAgLyogTXV4IGlucHV0IGJpdCAwIHRvIDMgKi8KPiA+PiArI2RlZmlu ZSBMVl9NWDA0MDcJCTB4MDQ4NCAvKiBNdXggaW5wdXQgYml0IDQgdG8gNyAqLwo+ID4+ICsjZGVm aW5lIExWX01YMDgxMQkJMHgwNDg4IC8qIE11eCBpbnB1dCBiaXQgOCB0byAxMSAqLwo+ID4+ICsj ZGVmaW5lIExWX01YMTIxNQkJMHgwNDhDIC8qIE11eCBpbnB1dCBiaXQgMTIgdG8gMTUgKi8KPiA+ PiArI2RlZmluZSBMVl9NWDE2MTkJCTB4MDQ5MCAvKiBNdXggaW5wdXQgYml0IDE2IHRvIDE5ICov Cj4gPj4gKyNkZWZpbmUgTFZfTVgyMDIzCQkweDA0OTQgLyogTXV4IGlucHV0IGJpdCAyMCB0byAy MyAqLwo+ID4+ICsjZGVmaW5lIExWX01YMjQyNwkJMHgwNDk4IC8qIE11eCBpbnB1dCBiaXQgMjQg dG8gMjcgKi8KPiA+PiArI2RlZmluZSBMVl9NWChiMCwgYjEsIGIyLCBiMykJKEZMRF9WQUwoYjAs IDQsIDApIHwgRkxEX1ZBTChiMSwgMTIsIDgpIAp8Cj4gPj4gXAo+ID4+ICsJCQkJRkxEX1ZBTChi MiwgMjAsIDE2KSB8IEZMRF9WQUwoYjMsIDI4LCAyNCkpCj4gPj4gKwo+ID4+ICsvKiBJbnB1dCBi aXQgbnVtYmVycyB1c2VkIGluIG11eCByZWdpc3RlcnMgKi8KPiA+PiArZW51bSB7Cj4gPj4gKwlM VklfUjAsCj4gPj4gKwlMVklfUjEsCj4gPj4gKwlMVklfUjIsCj4gPj4gKwlMVklfUjMsCj4gPj4g KwlMVklfUjQsCj4gPj4gKwlMVklfUjUsCj4gPj4gKwlMVklfUjYsCj4gPj4gKwlMVklfUjcsCj4g Pj4gKwlMVklfRzAsCj4gPj4gKwlMVklfRzEsCj4gPj4gKwlMVklfRzIsCj4gPj4gKwlMVklfRzMs Cj4gPj4gKwlMVklfRzQsCj4gPj4gKwlMVklfRzUsCj4gPj4gKwlMVklfRzYsCj4gPj4gKwlMVklf RzcsCj4gPj4gKwlMVklfQjAsCj4gPj4gKwlMVklfQjEsCj4gPj4gKwlMVklfQjIsCj4gPj4gKwlM VklfQjMsCj4gPj4gKwlMVklfQjQsCj4gPj4gKwlMVklfQjUsCj4gPj4gKwlMVklfQjYsCj4gPj4g KwlMVklfQjcsCj4gPj4gKwlMVklfSFMsCj4gPj4gKwlMVklfVlMsCj4gPj4gKwlMVklfREUsCj4g Pj4gKwlMVklfTDAKPiA+PiArfTsKPiA+PiArCj4gPj4gKyNkZWZpbmUgTFZfQ0ZHCQkJMHgwNDlD IC8qIExWRFMgQ29uZmlndXJhdGlvbiAqLwo+ID4+ICsjZGVmaW5lIExWX1BIWTAJCQkweDA0QTAg LyogTFZEUyBQSFkgMCAqLwo+ID4+ICsjZGVmaW5lIExWX1BIWTBfUlNUKHYpCQlGTERfVkFMKHYs IDIyLCAyMikgLyogUEhZIHJlc2V0ICovCj4gPj4gKyNkZWZpbmUgTFZfUEhZMF9JUyh2KQkJRkxE X1ZBTCh2LCAxNSwgMTQpCj4gPj4gKyNkZWZpbmUgTFZfUEhZMF9ORCh2KQkJRkxEX1ZBTCh2LCA0 LCAwKSAvKiBGcmVxdWVuY3kgcmFuZ2Ugc2VsZWN0ICovCj4gPj4gKyNkZWZpbmUgTFZfUEhZMF9Q UkJTX09OKHYpCUZMRF9WQUwodiwgMjAsIDE2KSAvKiBDbG9jay9EYXRhIEZsYWcgcGlucyAKKi8K PiA+PiArCj4gPj4gKy8qIFN5c3RlbSByZWdpc3RlcnMgKi8KPiA+PiArI2RlZmluZSBTWVNfUlNU CQkJMHgwNTA0IC8qIFN5c3RlbSBSZXNldCAqLwo+ID4+ICsjZGVmaW5lIFNZU19JRAkJCTB4MDU4 MCAvKiBTeXN0ZW0gSUQgKi8KPiA+PiArCj4gPj4gKyNkZWZpbmUgU1lTX1JTVF9JMkNTCQlCSVQo MCkgLyogUmVzZXQgSTJDLVNsYXZlIGNvbnRyb2xsZXIgKi8KPiA+PiArI2RlZmluZSBTWVNfUlNU X0kyQ00JCUJJVCgxKSAvKiBSZXNldCBJMkMtTWFzdGVyIGNvbnRyb2xsZXIgKi8KPiA+PiArI2Rl ZmluZSBTWVNfUlNUX0xDRAkJQklUKDIpIC8qIFJlc2V0IExDRCBjb250cm9sbGVyICovCj4gPj4g KyNkZWZpbmUgU1lTX1JTVF9CTQkJQklUKDMpIC8qIFJlc2V0IEJ1cyBNYW5hZ2VtZW50IGNvbnRy b2xsZXIgKi8KPiA+PiArI2RlZmluZSBTWVNfUlNUX0RTSVJYCQlCSVQoNCkgLyogUmVzZXQgRFNJ LVJYIGFuZCBBcHAgY29udHJvbGxlciAqLwo+ID4+ICsjZGVmaW5lIFNZU19SU1RfUkVHCQlCSVQo NSkgLyogUmVzZXQgUmVnaXN0ZXIgbW9kdWxlICovCj4gPj4gKwo+ID4+ICsjZGVmaW5lIExQWF9Q RVJJT0QJCTIKPiA+PiArI2RlZmluZSBUVEFfU1VSRQkJMwo+ID4+ICsjZGVmaW5lIFRUQV9HRVQJ CQkweDIwMDAwCj4gPj4gKwo+ID4+ICsvKiBMYW5lIGVuYWJsZSBQUEkgYW5kIERTSSByZWdpc3Rl ciBiaXRzICovCj4gPj4gKyNkZWZpbmUgTEFORUVOQUJMRV9DTEVOCQlCSVQoMCkKPiA+PiArI2Rl ZmluZSBMQU5FRU5BQkxFX0wwRU4JCUJJVCgxKQo+ID4+ICsjZGVmaW5lIExBTkVFTkFCTEVfTDFF TgkJQklUKDIpCj4gPj4gKyNkZWZpbmUgTEFORUVOQUJMRV9MMkVOCQlCSVQoMykKPiA+PiArI2Rl ZmluZSBMQU5FRU5BQkxFX0wzRU4JCUJJVCg0KQo+ID4+ICsKPiA+PiArLyogTFZDRkcgZmllbGRz ICovCj4gPj4gKyNkZWZpbmUgTFZfQ0ZHX0xWRU4JCUJJVCgwKQo+ID4+ICsjZGVmaW5lIExWX0NG R19MVkRMSU5LCQlCSVQoMSkKPiA+PiArI2RlZmluZSBMVl9DRkdfQ0xLUE9MMQkJQklUKDIpCj4g Pj4gKyNkZWZpbmUgTFZfQ0ZHX0NMS1BPTDIJCUJJVCgzKQo+ID4+ICsKPiA+PiArc3RhdGljIGNv bnN0IGNoYXIgKiBjb25zdCB0YzM1ODc2NF9zdXBwbGllc1tdID0gewo+ID4+ICsJInZkZGMiLCAi dmRkaW8iLCAidmRkbHZkcyIKPiA+PiArfTsKPiA+PiArCj4gPj4gK3N0cnVjdCB0YzM1ODc2NCB7 Cj4gPj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gPj4gKwlzdHJ1Y3QgZHJtX2JyaWRnZSBicmlk Z2U7Cj4gPj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7Cj4gPj4gKwlzdHJ1Y3Qg cmVndWxhdG9yX2J1bGtfZGF0YSBzdXBwbGllc1tBUlJBWV9TSVpFKHRjMzU4NzY0X3N1cHBsaWVz KV07Cj4gPj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvX3Jlc2V0Owo+ID4+ICsJc3RydWN0IGRy bV9wYW5lbCAqcGFuZWw7Cj4gPj4gKwlpbnQgZXJyb3I7Cj4gPj4gK307Cj4gPj4gKwo+ID4+ICtz dGF0aWMgaW50IHRjMzU4NzY0X2NsZWFyX2Vycm9yKHN0cnVjdCB0YzM1ODc2NCAqY3R4KQo+ID4+ ICt7Cj4gPj4gKwlpbnQgcmV0ID0gY3R4LT5lcnJvcjsKPiA+PiArCj4gPj4gKwljdHgtPmVycm9y ID0gMDsKPiA+PiArCXJldHVybiByZXQ7Cj4gPj4gK30KPiA+PiArCj4gPj4gK3N0YXRpYyB2b2lk IHRjMzU4NzY0X3JlYWQoc3RydWN0IHRjMzU4NzY0ICpjdHgsIHUxNiBhZGRyLCB1MzIgKnZhbCkK PiA+PiArewo+ID4+ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gdG9fbWlwaV9kc2lf ZGV2aWNlKGN0eC0+ZGV2KTsKPiA+PiArCXNzaXplX3QgcmV0Owo+ID4+ICsKPiA+PiArCWlmIChj dHgtPmVycm9yKQo+ID4+ICsJCXJldHVybjsKPiA+PiArCj4gPj4gKwljcHVfdG9fbGUxNnMoJmFk ZHIpOwo+ID4+ICsJcmV0ID0gbWlwaV9kc2lfZ2VuZXJpY19yZWFkKGRzaSwgJmFkZHIsIHNpemVv ZihhZGRyKSwgdmFsLAo+ID4+IHNpemVvZigqdmFsKSk7Cj4gPj4gKwlpZiAocmV0ID49IDApCj4g Pj4gKwkJbGUzMl90b19jcHVzKHZhbCk7Cj4gPj4gKwo+ID4+ICsJZGV2X2RiZyhjdHgtPmRldiwg InJlYWQ6ICVkLCBhZGRyOiAlZFxuIiwgYWRkciwgKnZhbCk7Cj4gPj4gK30KPiA+PiArCj4gPj4g K3N0YXRpYyB2b2lkIHRjMzU4NzY0X3dyaXRlKHN0cnVjdCB0YzM1ODc2NCAqY3R4LCB1MTYgYWRk ciwgdTMyIHZhbCkKPiA+PiArewo+ID4+ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0g dG9fbWlwaV9kc2lfZGV2aWNlKGN0eC0+ZGV2KTsKPiA+PiArCXNzaXplX3QgcmV0Owo+ID4+ICsJ dTggZGF0YVs2XTsKPiA+PiArCj4gPj4gKwlpZiAoY3R4LT5lcnJvcikKPiA+PiArCQlyZXR1cm47 Cj4gPj4gKwo+ID4+ICsJZGF0YVswXSA9IGFkZHI7Cj4gPj4gKwlkYXRhWzFdID0gYWRkciA+PiA4 Owo+ID4+ICsJZGF0YVsyXSA9IHZhbDsKPiA+PiArCWRhdGFbM10gPSB2YWwgPj4gODsKPiA+PiAr CWRhdGFbNF0gPSB2YWwgPj4gMTY7Cj4gPj4gKwlkYXRhWzVdID0gdmFsID4+IDI0Owo+ID4+ICsK PiA+PiArCXJldCA9IG1pcGlfZHNpX2dlbmVyaWNfd3JpdGUoZHNpLCBkYXRhLCBzaXplb2YoZGF0 YSkpOwo+ID4+ICsJaWYgKHJldCA8IDApCj4gPj4gKwkJY3R4LT5lcnJvciA9IHJldDsKPiA+PiAr fQo+ID4+ICsKPiA+PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgdGMzNTg3NjQgKmJyaWRnZV90b190 YzM1ODc2NChzdHJ1Y3QgZHJtX2JyaWRnZQo+ID4+ICpicmlkZ2UpICt7Cj4gPj4gKwlyZXR1cm4g Y29udGFpbmVyX29mKGJyaWRnZSwgc3RydWN0IHRjMzU4NzY0LCBicmlkZ2UpOwo+ID4+ICt9Cj4g Pj4gKwo+ID4+ICtzdGF0aWMgaW5saW5lCj4gPj4gK3N0cnVjdCB0YzM1ODc2NCAqY29ubmVjdG9y X3RvX3RjMzU4NzY0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPj4gK3sKPiA+ PiArCXJldHVybiBjb250YWluZXJfb2YoY29ubmVjdG9yLCBzdHJ1Y3QgdGMzNTg3NjQsIGNvbm5l Y3Rvcik7Cj4gPj4gK30KPiA+PiArCj4gPj4gK3N0YXRpYyBpbnQgdGMzNTg3NjRfaW5pdChzdHJ1 Y3QgdGMzNTg3NjQgKmN0eCkKPiA+PiArewo+ID4+ICsJdTMyIHYgPSAwOwo+ID4+ICsKPiA+PiAr CXRjMzU4NzY0X3JlYWQoY3R4LCBTWVNfSUQsICZ2KTsKPiA+PiArCWlmIChjdHgtPmVycm9yKQo+ ID4+ICsJCXJldHVybiB0YzM1ODc2NF9jbGVhcl9lcnJvcihjdHgpOwo+ID4+ICsJZGV2X2luZm8o Y3R4LT5kZXYsICJJRDogJSN4XG4iLCB2KTsKPiA+PiArCj4gPj4gKwkvKiBjb25maWd1cmUgUFBJ IGNvdW50ZXJzICovCj4gPj4gKwl0YzM1ODc2NF93cml0ZShjdHgsIFBQSV9UWF9SWF9UQSwgVFRB X0dFVCB8IFRUQV9TVVJFKTsKPiA+PiArCXRjMzU4NzY0X3dyaXRlKGN0eCwgUFBJX0xQVFhUSU1F Q05ULCBMUFhfUEVSSU9EKTsKPiA+PiArCXRjMzU4NzY0X3dyaXRlKGN0eCwgUFBJX0QwU19DTFJT SVBPQ09VTlQsIDUpOwo+ID4+ICsJdGMzNTg3NjRfd3JpdGUoY3R4LCBQUElfRDFTX0NMUlNJUE9D T1VOVCwgNSk7Cj4gPj4gKwl0YzM1ODc2NF93cml0ZShjdHgsIFBQSV9EMlNfQ0xSU0lQT0NPVU5U LCA1KTsKPiA+PiArCXRjMzU4NzY0X3dyaXRlKGN0eCwgUFBJX0QzU19DTFJTSVBPQ09VTlQsIDUp Owo+ID4+ICsKPiA+PiArCS8qIGVuYWJsZSBmb3VyIGRhdGEgbGFuZXMgYW5kIGNsb2NrIGxhbmUg Ki8KPiA+PiArCXRjMzU4NzY0X3dyaXRlKGN0eCwgUFBJX0xBTkVFTkFCTEUsIExBTkVFTkFCTEVf TDNFTiB8IExBTkVFTkFCTEVfTDJFTiB8Cj4gPj4gKwkJICAgICAgIExBTkVFTkFCTEVfTDFFTiB8 IExBTkVFTkFCTEVfTDBFTiB8IExBTkVFTkFCTEVfQ0xFTik7Cj4gPj4gKwl0YzM1ODc2NF93cml0 ZShjdHgsIERTSV9MQU5FRU5BQkxFLCBMQU5FRU5BQkxFX0wzRU4gfCBMQU5FRU5BQkxFX0wyRU4g fAo+ID4+ICsJCSAgICAgICBMQU5FRU5BQkxFX0wxRU4gfCBMQU5FRU5BQkxFX0wwRU4gfCBMQU5F RU5BQkxFX0NMRU4pOwo+ID4+ICsKPiA+PiArCS8qIHN0YXJ0ICovCj4gPj4gKwl0YzM1ODc2NF93 cml0ZShjdHgsIFBQSV9TVEFSVFBQSSwgUFBJX1NUQVJUX0ZVTkNUSU9OKTsKPiA+PiArCXRjMzU4 NzY0X3dyaXRlKGN0eCwgRFNJX1NUQVJURFNJLCBEU0lfUlhfU1RBUlQpOwo+ID4+ICsKPiA+PiAr CS8qIGNvbmZpZ3VyZSB2aWRlbyBwYXRoICovCj4gPj4gKwl0YzM1ODc2NF93cml0ZShjdHgsIFZQ X0NUUkwsIFZQX0NUUkxfVlNERUxBWSgxNSkgfCBWUF9DVFJMX1JHQjg4OCgxKSB8Cj4gPj4gKwkJ ICAgICAgIFZQX0NUUkxfRVZUTU9ERSgxKSB8IFZQX0NUUkxfSFNQT0wgfCBWUF9DVFJMX1ZTUE9M KTsKPiA+PiArCj4gPj4gKwkvKiByZXNldCBQSFkgKi8KPiA+PiArCXRjMzU4NzY0X3dyaXRlKGN0 eCwgTFZfUEhZMCwgTFZfUEhZMF9SU1QoMSkgfAo+ID4+ICsJCSAgICAgICBMVl9QSFkwX1BSQlNf T04oNCkgfCBMVl9QSFkwX0lTKDIpIHwgTFZfUEhZMF9ORCg2KSk7Cj4gPj4gKwl0YzM1ODc2NF93 cml0ZShjdHgsIExWX1BIWTAsIExWX1BIWTBfUFJCU19PTig0KSB8IExWX1BIWTBfSVMoMikgfAo+ ID4+ICsJCSAgICAgICBMVl9QSFkwX05EKDYpKTsKPiA+PiArCj4gPj4gKwkvKiByZXNldCBicmlk Z2UgKi8KPiA+PiArCXRjMzU4NzY0X3dyaXRlKGN0eCwgU1lTX1JTVCwgU1lTX1JTVF9MQ0QpOwo+ ID4+ICsKPiA+PiArCS8qIHNldCBiaXQgb3JkZXIgKi8KPiA+PiArCXRjMzU4NzY0X3dyaXRlKGN0 eCwgTFZfTVgwMDAzLCBMVl9NWChMVklfUjAsIExWSV9SMSwgTFZJX1IyLCBMVklfUjMpKTsKPiA+ PiArCXRjMzU4NzY0X3dyaXRlKGN0eCwgTFZfTVgwNDA3LCBMVl9NWChMVklfUjQsIExWSV9SNywg TFZJX1I1LCBMVklfRzApKTsKPiA+PiArCXRjMzU4NzY0X3dyaXRlKGN0eCwgTFZfTVgwODExLCBM Vl9NWChMVklfRzEsIExWSV9HMiwgTFZJX0c2LCBMVklfRzcpKTsKPiA+PiArCXRjMzU4NzY0X3dy aXRlKGN0eCwgTFZfTVgxMjE1LCBMVl9NWChMVklfRzMsIExWSV9HNCwgTFZJX0c1LCBMVklfQjAp KTsKPiA+PiArCXRjMzU4NzY0X3dyaXRlKGN0eCwgTFZfTVgxNjE5LCBMVl9NWChMVklfQjYsIExW SV9CNywgTFZJX0IxLCBMVklfQjIpKTsKPiA+PiArCXRjMzU4NzY0X3dyaXRlKGN0eCwgTFZfTVgy MDIzLCBMVl9NWChMVklfQjMsIExWSV9CNCwgTFZJX0I1LCBMVklfTDApKTsKPiA+PiArCXRjMzU4 NzY0X3dyaXRlKGN0eCwgTFZfTVgyNDI3LCBMVl9NWChMVklfSFMsIExWSV9WUywgTFZJX0RFLCBM VklfUjYpKTsKPiA+PiArCXRjMzU4NzY0X3dyaXRlKGN0eCwgTFZfQ0ZHLCBMVl9DRkdfQ0xLUE9M MiB8IExWX0NGR19DTEtQT0wxIHwKPiA+PiArCQkgICAgICAgTFZfQ0ZHX0xWRU4pOwo+ID4+ICsK PiA+PiArCXJldHVybiB0YzM1ODc2NF9jbGVhcl9lcnJvcihjdHgpOwo+ID4+ICt9Cj4gPj4gKwo+ ID4+ICtzdGF0aWMgdm9pZCB0YzM1ODc2NF9yZXNldChzdHJ1Y3QgdGMzNTg3NjQgKmN0eCkKPiA+ PiArewo+ID4+ICsJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+Z3Bpb19yZXNldCwgMSk7Cj4gPj4gKwl1 c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7Cj4gPj4gKwlncGlvZF9zZXRfdmFsdWUoY3R4LT5ncGlv X3Jlc2V0LCAwKTsKPiA+PiArCXVzbGVlcF9yYW5nZSgxMDAwLCAyMDAwKTsKPiA+PiArfQo+ID4+ ICsKPiA+PiArc3RhdGljIGludCB0YzM1ODc2NF9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvcikKPiA+PiArewo+ID4+ICsJc3RydWN0IHRjMzU4NzY0ICpjdHggPSBjb25u ZWN0b3JfdG9fdGMzNTg3NjQoY29ubmVjdG9yKTsKPiA+PiArCj4gPj4gKwlyZXR1cm4gZHJtX3Bh bmVsX2dldF9tb2RlcyhjdHgtPnBhbmVsKTsKPiA+PiArfQo+ID4+ICsKPiA+PiArc3RhdGljIGNv bnN0Cj4gPj4gK3N0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyB0YzM1ODc2NF9jb25u ZWN0b3JfaGVscGVyX2Z1bmNzID0gewo+ID4+ICsJLmdldF9tb2RlcyA9IHRjMzU4NzY0X2dldF9t b2RlcywKPiA+PiArfTsKPiA+PiArCj4gPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9mdW5jcyB0YzM1ODc2NF9jb25uZWN0b3JfZnVuY3MgPSB7Cj4gPj4gKwkuZmlsbF9tb2Rl cyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKPiA+PiArCS5kZXN0 cm95ID0gZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwLAo+ID4+ICsJLnJlc2V0ID0gZHJtX2F0b21pY19o ZWxwZXJfY29ubmVjdG9yX3Jlc2V0LAo+ID4+ICsJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBk cm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAo+ID4+ICsJLmF0b21p Y19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3Rh dGUsCj4gPj4gK307Cj4gPj4gKwo+ID4+ICtzdGF0aWMgdm9pZCB0YzM1ODc2NF9kaXNhYmxlKHN0 cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gPj4gK3sKPiA+PiArCXN0cnVjdCB0YzM1ODc2NCAq Y3R4ID0gYnJpZGdlX3RvX3RjMzU4NzY0KGJyaWRnZSk7Cj4gPj4gKwlpbnQgcmV0ID0gZHJtX3Bh bmVsX2Rpc2FibGUoYnJpZGdlX3RvX3RjMzU4NzY0KGJyaWRnZSktPnBhbmVsKTsKPiA+PiArCj4g Pj4gKwlpZiAocmV0IDwgMCkKPiA+PiArCQlkZXZfZXJyKGN0eC0+ZGV2LCAiZXJyb3IgZGlzYWJs aW5nIHBhbmVsICglZClcbiIsIHJldCk7Cj4gPj4gK30KPiA+PiArCj4gPj4gK3N0YXRpYyB2b2lk IHRjMzU4NzY0X3Bvc3RfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ID4+ICt7 Cj4gPj4gKwlzdHJ1Y3QgdGMzNTg3NjQgKmN0eCA9IGJyaWRnZV90b190YzM1ODc2NChicmlkZ2Up Owo+ID4+ICsJaW50IHJldDsKPiA+PiArCj4gPj4gKwlyZXQgPSBkcm1fcGFuZWxfdW5wcmVwYXJl KGN0eC0+cGFuZWwpOwo+ID4+ICsJaWYgKHJldCA8IDApCj4gPj4gKwkJZGV2X2VycihjdHgtPmRl diwgImVycm9yIHVucHJlcGFyaW5nIHBhbmVsICglZClcbiIsIHJldCk7Cj4gPj4gKwl0YzM1ODc2 NF9yZXNldChjdHgpOwo+ID4+ICsJdXNsZWVwX3JhbmdlKDEwMDAwLCAxNTAwMCk7Cj4gPj4gKwly ZXQgPSByZWd1bGF0b3JfYnVsa19kaXNhYmxlKEFSUkFZX1NJWkUoY3R4LT5zdXBwbGllcyksIGN0 eC0+c3VwcGxpZXMpOwo+ID4+ICsJaWYgKHJldCA8IDApCj4gPj4gKwkJZGV2X2VycihjdHgtPmRl diwgImVycm9yIGRpc2FibGluZyByZWd1bGF0b3JzICglZClcbiIsIHJldCk7Cj4gPj4gK30KPiA+ PiArCj4gPj4gK3N0YXRpYyB2b2lkIHRjMzU4NzY0X3ByZV9lbmFibGUoc3RydWN0IGRybV9icmlk Z2UgKmJyaWRnZSkKPiA+PiArewo+ID4+ICsJc3RydWN0IHRjMzU4NzY0ICpjdHggPSBicmlkZ2Vf dG9fdGMzNTg3NjQoYnJpZGdlKTsKPiA+PiArCWludCByZXQ7Cj4gPj4gKwo+ID4+ICsJcmV0ID0g cmVndWxhdG9yX2J1bGtfZW5hYmxlKEFSUkFZX1NJWkUoY3R4LT5zdXBwbGllcyksIGN0eC0+c3Vw cGxpZXMpOwo+ID4+ICsJaWYgKHJldCA8IDApCj4gPj4gKwkJZGV2X2VycihjdHgtPmRldiwgImVy cm9yIGVuYWJsaW5nIHJlZ3VsYXRvcnMgKCVkKVxuIiwgcmV0KTsKPiA+PiArCXVzbGVlcF9yYW5n ZSgxMDAwMCwgMTUwMDApOwo+ID4+ICsJdGMzNTg3NjRfcmVzZXQoY3R4KTsKPiA+PiArCXJldCA9 IHRjMzU4NzY0X2luaXQoY3R4KTsKPiA+PiArCWlmIChyZXQgPCAwKQo+ID4+ICsJCWRldl9lcnIo Y3R4LT5kZXYsICJlcnJvciBpbml0aWFsaXppbmcgYnJpZGdlICglZClcbiIsIHJldCk7Cj4gPj4g KwlyZXQgPSBkcm1fcGFuZWxfcHJlcGFyZShjdHgtPnBhbmVsKTsKPiA+PiArCWlmIChyZXQgPCAw KQo+ID4+ICsJCWRldl9lcnIoY3R4LT5kZXYsICJlcnJvciBwcmVwYXJpbmcgcGFuZWwgKCVkKVxu IiwgcmV0KTsKPiA+PiArfQo+ID4+ICsKPiA+PiArc3RhdGljIHZvaWQgdGMzNTg3NjRfZW5hYmxl KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gPj4gK3sKPiA+PiArCXN0cnVjdCB0YzM1ODc2 NCAqY3R4ID0gYnJpZGdlX3RvX3RjMzU4NzY0KGJyaWRnZSk7Cj4gPj4gKwlpbnQgcmV0ID0gZHJt X3BhbmVsX2VuYWJsZShjdHgtPnBhbmVsKTsKPiA+PiArCj4gPj4gKwlpZiAocmV0IDwgMCkKPiA+ PiArCQlkZXZfZXJyKGN0eC0+ZGV2LCAiZXJyb3IgZW5hYmxpbmcgcGFuZWwgKCVkKVxuIiwgcmV0 KTsKPiA+PiArfQo+ID4+ICsKPiA+PiArc3RhdGljIGludCB0YzM1ODc2NF9hdHRhY2goc3RydWN0 IGRybV9icmlkZ2UgKmJyaWRnZSkKPiA+PiArewo+ID4+ICsJc3RydWN0IHRjMzU4NzY0ICpjdHgg PSBicmlkZ2VfdG9fdGMzNTg3NjQoYnJpZGdlKTsKPiA+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpk cm0gPSBicmlkZ2UtPmRldjsKPiA+PiArCWludCByZXQ7Cj4gPj4gKwo+ID4+ICsJY3R4LT5jb25u ZWN0b3IucG9sbGVkID0gRFJNX0NPTk5FQ1RPUl9QT0xMX0hQRDsKPiA+PiArCXJldCA9IGRybV9j b25uZWN0b3JfaW5pdChkcm0sICZjdHgtPmNvbm5lY3RvciwKPiA+PiArCQkJCSAmdGMzNTg3NjRf Y29ubmVjdG9yX2Z1bmNzLAo+ID4+ICsJCQkJIERSTV9NT0RFX0NPTk5FQ1RPUl9MVkRTKTsKPiA+ PiArCWlmIChyZXQpIHsKPiA+PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBpbml0aWFsaXplIGNv bm5lY3RvclxuIik7Cj4gPj4gKwkJcmV0dXJuIHJldDsKPiA+PiArCX0KPiA+PiArCj4gPj4gKwlk cm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoJmN0eC0+Y29ubmVjdG9yLAo+ID4+ICsJCQkJICZ0YzM1 ODc2NF9jb25uZWN0b3JfaGVscGVyX2Z1bmNzKTsKPiA+PiArCWRybV9tb2RlX2Nvbm5lY3Rvcl9h dHRhY2hfZW5jb2RlcigmY3R4LT5jb25uZWN0b3IsIGJyaWRnZS0+ZW5jb2Rlcik7Cj4gPj4gKwlk cm1fcGFuZWxfYXR0YWNoKGN0eC0+cGFuZWwsICZjdHgtPmNvbm5lY3Rvcik7Cj4gPj4gKwljdHgt PmNvbm5lY3Rvci5mdW5jcy0+cmVzZXQoJmN0eC0+Y29ubmVjdG9yKTsKPiA+PiArCWRybV9mYl9o ZWxwZXJfYWRkX29uZV9jb25uZWN0b3IoZHJtLT5mYl9oZWxwZXIsICZjdHgtPmNvbm5lY3Rvcik7 Cj4gPj4gKwlkcm1fY29ubmVjdG9yX3JlZ2lzdGVyKCZjdHgtPmNvbm5lY3Rvcik7Cj4gPiAKPiA+ IEFyZW4ndCBkcm1fY29ubmVjdG9yX3JlZ2lzdGVyKCkvdW5yZWdpc3RlciBjYWxscyBtYW5hZ2Vk IGJ5IHRoZSBkcm0KPiA+IGNvcmU/Cj4gCj4gZHJtIGNvcmUgcmVnaXN0ZXJzIGNvbm5lY3RvcnMg ZHVyaW5nIGluaXRpYWxpemF0aW9uIGJ1dCB0YzM1ODc2NF9hdHRhY2gKPiBjYW4gYmUgY2FsbGVk IGFmdGVyIGJyaWRnZSBwcm9iZSwgYWxzbyBhZnRlciBkcm0gaW5pdGlhbGl6YXRpb24sIGluIHN1 Y2gKPiBjYXNlIGNvbm5lY3RvciBzaG91bGQgYmUgZHluYW1pY2FsbHkgYWxsb2NhdGVkL2RlLWFs bG9jYXRlZC4KClRoaXMgcmVhbGx5LCByZWFsbHksIHJlYWxseSBjYWxscyBmb3IgKk5PVCogY3Jl YXRpbmcgZHJtX2Nvbm5lY3RvciBpbnN0YW5jZXMgCmluIGJyaWRnZSBkcml2ZXJzLiBUaGlzIGhh cyBiZWVuIGFuIGlzc3VlIHNpbmNlIHRoZSBiZWdpbm5pbmcgYW5kIHdlIG5lZWQgdG8gCmZpeCBp dC4gQ29ubmVjdG9ycyBzaG91bGQgYmUgY3JlYXRlZCBieSBkaXNwbGF5IGRyaXZlcnMsIGFuZCBj b25uZWN0b3IgCm9wZXJhdGlvbnMgaW1wbGVtZW50ZWQgdXNpbmcgb3BlcmF0aW9ucyBwcm92aWRl ZCBieSBicmlkZ2VzLgoKRnV0aGVybW9yZSwgcmVnaXN0ZXJpbmcgYW5kIHVucmVnaXN0ZXJpbmcg Y29ubmVjdG9ycyBhZnRlciBwcm9iZSB0aW1lIGlzbid0IApzdXBwb3J0ZWQgaW4gdGhlIERSTSBj b3JlLCB0aGlzIHdpbGwgbGVhZCB0byBuYXN0eSByYWNlcyB3aXRoIHVzZXJzcGFjZS4gVGhpcyAK aXMgYWxzbyBzb21ldGhpbmcgdGhhdCB3ZSBzaG91bGQgZml4LCBidXQgaXQgd2lsbCBiZSBtdWNo IG1vcmUgZGlmZmljdWx0IHRvIAp0YWNrbGUuCgo+ID4gT3RoZXJ3aXNlOgo+ID4gUmV2aWV3ZWQt Ynk6IEFyY2hpdCBUYW5lamEgPGFyY2hpdHRAY29kZWF1cm9yYS5vcmc+Cj4gCj4gVGhhbmtzIGZv ciB0aGUgcmV2aWV3LCBxdWV1ZWQgdG8gZHJtLW1pc2MtbmV4dC4KCldpdGggdGhlIGFib3ZlIGlz c3VlcyA/IDotKAoKPiA+PiArCj4gPj4gKwlyZXR1cm4gMDsKPiA+PiArfQo+ID4+ICsKPiA+PiAr c3RhdGljIHZvaWQgdGMzNTg3NjRfZGV0YWNoKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4g Pj4gK3sKPiA+PiArCXN0cnVjdCB0YzM1ODc2NCAqY3R4ID0gYnJpZGdlX3RvX3RjMzU4NzY0KGJy aWRnZSk7Cj4gPj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gYnJpZGdlLT5kZXY7Cj4gPj4g Kwo+ID4+ICsJZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKCZjdHgtPmNvbm5lY3Rvcik7Cj4gPj4g Kwlkcm1fZmJfaGVscGVyX3JlbW92ZV9vbmVfY29ubmVjdG9yKGRybS0+ZmJfaGVscGVyLCAmY3R4 LT5jb25uZWN0b3IpOwo+ID4+ICsJZHJtX3BhbmVsX2RldGFjaChjdHgtPnBhbmVsKTsKPiA+PiAr CWN0eC0+cGFuZWwgPSBOVUxMOwo+ID4+ICsJZHJtX2Nvbm5lY3Rvcl91bnJlZmVyZW5jZSgmY3R4 LT5jb25uZWN0b3IpOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9icmlkZ2VfZnVuY3MgdGMzNTg3NjRfYnJpZGdlX2Z1bmNzID0gewo+ID4+ICsJLmRpc2FibGUg PSB0YzM1ODc2NF9kaXNhYmxlLAo+ID4+ICsJLnBvc3RfZGlzYWJsZSA9IHRjMzU4NzY0X3Bvc3Rf ZGlzYWJsZSwKPiA+PiArCS5lbmFibGUgPSB0YzM1ODc2NF9lbmFibGUsCj4gPj4gKwkucHJlX2Vu YWJsZSA9IHRjMzU4NzY0X3ByZV9lbmFibGUsCj4gPj4gKwkuYXR0YWNoID0gdGMzNTg3NjRfYXR0 YWNoLAo+ID4+ICsJLmRldGFjaCA9IHRjMzU4NzY0X2RldGFjaCwKPiA+PiArfTsKPiA+PiArCj4g Pj4gK3N0YXRpYyBpbnQgdGMzNTg3NjRfcGFyc2VfZHQoc3RydWN0IHRjMzU4NzY0ICpjdHgpCj4g Pj4gK3sKPiA+PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGN0eC0+ZGV2Owo+ID4+ICsJaW50IHJl dDsKPiA+PiArCj4gPj4gKwljdHgtPmdwaW9fcmVzZXQgPSBkZXZtX2dwaW9kX2dldChkZXYsICJy ZXNldCIsIEdQSU9EX09VVF9MT1cpOwo+ID4+ICsJaWYgKElTX0VSUihjdHgtPmdwaW9fcmVzZXQp KSB7Cj4gPj4gKwkJZGV2X2VycihkZXYsICJubyByZXNldCBHUElPIHBpbiBwcm92aWRlZFxuIik7 Cj4gPj4gKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5ncGlvX3Jlc2V0KTsKPiA+PiArCX0KPiA+PiAr Cj4gPj4gKwlyZXQgPSBkcm1fb2ZfZmluZF9wYW5lbF9vcl9icmlkZ2UoY3R4LT5kZXYtPm9mX25v ZGUsIDEsIDAsICZjdHgtPnBhbmVsLAo+ID4+ICsJCQkJCSAgTlVMTCk7Cj4gPj4gKwlpZiAocmV0 ICYmIHJldCAhPSAtRVBST0JFX0RFRkVSKQo+ID4+ICsJCWRldl9lcnIoZGV2LCAiY2Fubm90IGZp bmQgcGFuZWwgKCVkKVxuIiwgcmV0KTsKPiA+PiArCj4gPj4gKwlyZXR1cm4gcmV0Owo+ID4+ICt9 Cj4gPj4gKwo+ID4+ICtzdGF0aWMgaW50IHRjMzU4NzY0X2NvbmZpZ3VyZV9yZWd1bGF0b3JzKHN0 cnVjdCB0YzM1ODc2NCAqY3R4KQo+ID4+ICt7Cj4gPj4gKwlpbnQgaSwgcmV0Owo+ID4+ICsKPiA+ PiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMpOyArK2kpCj4gPj4g KwkJY3R4LT5zdXBwbGllc1tpXS5zdXBwbHkgPSB0YzM1ODc2NF9zdXBwbGllc1tpXTsKPiA+PiAr Cj4gPj4gKwlyZXQgPSBkZXZtX3JlZ3VsYXRvcl9idWxrX2dldChjdHgtPmRldiwgQVJSQVlfU0la RShjdHgtPnN1cHBsaWVzKSwKPiA+PiArCQkJCSAgICAgIGN0eC0+c3VwcGxpZXMpOwo+ID4+ICsJ aWYgKHJldCA8IDApCj4gPj4gKwkJZGV2X2VycihjdHgtPmRldiwgImZhaWxlZCB0byBnZXQgcmVn dWxhdG9yczogJWRcbiIsIHJldCk7Cj4gPj4gKwo+ID4+ICsJcmV0dXJuIHJldDsKPiA+PiArfQo+ ID4+ICsKPiA+PiArc3RhdGljIGludCB0YzM1ODc2NF9wcm9iZShzdHJ1Y3QgbWlwaV9kc2lfZGV2 aWNlICpkc2kpCj4gPj4gK3sKPiA+PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZkc2ktPmRldjsK PiA+PiArCXN0cnVjdCB0YzM1ODc2NCAqY3R4Owo+ID4+ICsJaW50IHJldDsKPiA+PiArCj4gPj4g KwljdHggPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2Yoc3RydWN0IHRjMzU4NzY0KSwgR0ZQX0tF Uk5FTCk7Cj4gPj4gKwlpZiAoIWN0eCkKPiA+PiArCQlyZXR1cm4gLUVOT01FTTsKPiA+PiArCj4g Pj4gKwltaXBpX2RzaV9zZXRfZHJ2ZGF0YShkc2ksIGN0eCk7Cj4gPj4gKwo+ID4+ICsJY3R4LT5k ZXYgPSBkZXY7Cj4gPj4gKwo+ID4+ICsJZHNpLT5sYW5lcyA9IDQ7Cj4gPj4gKwlkc2ktPmZvcm1h dCA9IE1JUElfRFNJX0ZNVF9SR0I4ODg7Cj4gPj4gKwlkc2ktPm1vZGVfZmxhZ3MgPSBNSVBJX0RT SV9NT0RFX1ZJREVPIHwgTUlQSV9EU0lfTU9ERV9WSURFT19CVVJTVAo+ID4+ICsJCXwgTUlQSV9E U0lfTU9ERV9WSURFT19BVVRPX1ZFUlQgfCBNSVBJX0RTSV9NT0RFX0xQTTsKPiA+PiArCj4gPj4g KwlyZXQgPSB0YzM1ODc2NF9wYXJzZV9kdChjdHgpOwo+ID4+ICsJaWYgKHJldCA8IDApCj4gPj4g KwkJcmV0dXJuIHJldDsKPiA+PiArCj4gPj4gKwlyZXQgPSB0YzM1ODc2NF9jb25maWd1cmVfcmVn dWxhdG9ycyhjdHgpOwo+ID4+ICsJaWYgKHJldCA8IDApCj4gPj4gKwkJcmV0dXJuIHJldDsKPiA+ PiArCj4gPj4gKwljdHgtPmJyaWRnZS5mdW5jcyA9ICZ0YzM1ODc2NF9icmlkZ2VfZnVuY3M7Cj4g Pj4gKwljdHgtPmJyaWRnZS5vZl9ub2RlID0gZGV2LT5vZl9ub2RlOwo+ID4+ICsKPiA+PiArCWRy bV9icmlkZ2VfYWRkKCZjdHgtPmJyaWRnZSk7Cj4gPj4gKwo+ID4+ICsJcmV0ID0gbWlwaV9kc2lf YXR0YWNoKGRzaSk7Cj4gPj4gKwlpZiAocmV0IDwgMCkgewo+ID4+ICsJCWRybV9icmlkZ2VfcmVt b3ZlKCZjdHgtPmJyaWRnZSk7Cj4gPj4gKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gYXR0YWNo IGRzaVxuIik7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJcmV0dXJuIHJldDsKPiA+PiArfQo+ID4+ ICsKPiA+PiArc3RhdGljIGludCB0YzM1ODc2NF9yZW1vdmUoc3RydWN0IG1pcGlfZHNpX2Rldmlj ZSAqZHNpKQo+ID4+ICt7Cj4gPj4gKwlzdHJ1Y3QgdGMzNTg3NjQgKmN0eCA9IG1pcGlfZHNpX2dl dF9kcnZkYXRhKGRzaSk7Cj4gPj4gKwo+ID4+ICsJbWlwaV9kc2lfZGV0YWNoKGRzaSk7Cj4gPj4g Kwlkcm1fYnJpZGdlX3JlbW92ZSgmY3R4LT5icmlkZ2UpOwo+ID4+ICsKPiA+PiArCXJldHVybiAw Owo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB0 YzM1ODc2NF9vZl9tYXRjaFtdID0gewo+ID4+ICsJeyAuY29tcGF0aWJsZSA9ICJ0b3NoaWJhLHRj MzU4NzY0IiB9LAo+ID4+ICsJeyB9Cj4gPj4gK307Cj4gPj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUo b2YsIHRjMzU4NzY0X29mX21hdGNoKTsKPiA+PiArCj4gPj4gK3N0YXRpYyBzdHJ1Y3QgbWlwaV9k c2lfZHJpdmVyIHRjMzU4NzY0X2RyaXZlciA9IHsKPiA+PiArCS5wcm9iZSA9IHRjMzU4NzY0X3By b2JlLAo+ID4+ICsJLnJlbW92ZSA9IHRjMzU4NzY0X3JlbW92ZSwKPiA+PiArCS5kcml2ZXIgPSB7 Cj4gPj4gKwkJLm5hbWUgPSAidGMzNTg3NjQiLAo+ID4+ICsJCS5vd25lciA9IFRISVNfTU9EVUxF LAo+ID4+ICsJCS5vZl9tYXRjaF90YWJsZSA9IHRjMzU4NzY0X29mX21hdGNoLAo+ID4+ICsJfSwK PiA+PiArfTsKPiA+PiArbW9kdWxlX21pcGlfZHNpX2RyaXZlcih0YzM1ODc2NF9kcml2ZXIpOwo+ ID4+ICsKPiA+PiArTU9EVUxFX0FVVEhPUigiQW5kcnplaiBIYWpkYSA8YS5oYWpkYUBzYW1zdW5n LmNvbT4iKTsKPiA+PiArTU9EVUxFX0FVVEhPUigiTWFjaWVqIFB1cnNraSA8bS5wdXJza2lAc2Ft c3VuZy5jb20+Iik7Cj4gPj4gK01PRFVMRV9ERVNDUklQVElPTigiTUlQSS1EU0kgYmFzZWQgRHJp dmVyIGZvciBUQzM1ODc2NCBEU0kvTFZEUwo+ID4+IEJyaWRnZSIpOwo+ID4+ICtNT0RVTEVfTElD RU5TRSgiR1BMIHYyIik7CgotLSAKUmVnYXJkcywKCkxhdXJlbnQgUGluY2hhcnQKCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==