From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [PATCH v2 08/10] drm/bridge: tc358764: Add DSI to LVDS bridge driver Date: Thu, 31 May 2018 12:21:22 +0530 Message-ID: <9eec949c-f2b8-4d8d-e30e-ade5159255d6@codeaurora.org> References: <1527682561-1386-1-git-send-email-m.purski@samsung.com> <1527682561-1386-9-git-send-email-m.purski@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1527682561-1386-9-git-send-email-m.purski@samsung.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Maciej Purski , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org Cc: Mark Rutland , Laurent Pinchart , Bartlomiej Zolnierkiewicz , David Airlie , Seung-Woo Kim , Krzysztof Kozlowski , Kyungmin Park , Rob Herring , Thierry Reding , Kukjin Kim , Marek Szyprowski List-Id: devicetree@vger.kernel.org SGksCgpPbiBXZWRuZXNkYXkgMzAgTWF5IDIwMTggMDU6NDUgUE0sIE1hY2llaiBQdXJza2kgd3Jv dGU6Cj4gRnJvbTogQW5kcnplaiBIYWpkYSA8YS5oYWpkYUBzYW1zdW5nLmNvbT4KPiAKPiBBZGQg YSBkcm1fYnJpZGdlIGRyaXZlciBmb3IgdGhlIFRvc2hpYmEgVEMzNTg3NjQgRFNJIHRvIExWRFMg YnJpZGdlLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEFuZHJ6ZWogSGFqZGEgPGEuaGFqZGFAc2Ftc3Vu Zy5jb20+Cj4gU2lnbmVkLW9mZi1ieTogTWFjaWVqIFB1cnNraSA8bS5wdXJza2lAc2Ftc3VuZy5j b20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcgICAgfCAgIDkgKwo+ ICAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZSAgIHwgICAxICsKPiAgIGRyaXZlcnMv Z3B1L2RybS9icmlkZ2UvdGMzNTg3NjQuYyB8IDU0NyArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwo+ICAgMyBmaWxlcyBjaGFuZ2VkLCA1NTcgaW5zZXJ0aW9ucygrKQo+ICAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvdGMzNTg3NjQuYwo+IAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcgYi9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL0tjb25maWcKPiBpbmRleCBmYTJjNzk5Li45YmQzZWI4IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvS2NvbmZpZwo+IEBAIC0xMTAsNiArMTEwLDE1IEBAIGNvbmZpZyBEUk1fVEhJTkVf VEhDNjNMVkQxMDI0Cj4gICAJLS0taGVscC0tLQo+ICAgCSAgVGhpbmUgVEhDNjNMVkQxMDI0IExW RFMvcGFyYWxsZWwgY29udmVydGVyIGRyaXZlci4KPiAgIAo+ICtjb25maWcgRFJNX1RPU0hJQkFf VEMzNTg3NjQKPiArCXRyaXN0YXRlICJUQzM1ODc2NCBEU0kvTFZEUyBicmlkZ2UiCj4gKwlkZXBl bmRzIG9uIERSTSAmJiBEUk1fUEFORUwKPiArCWRlcGVuZHMgb24gT0YKPiArCXNlbGVjdCBEUk1f TUlQSV9EU0kKPiArCXNlbGVjdCBWSURFT01PREVfSEVMUEVSUwoKSSBkb24ndCBzZWUgdmlkZW9t b2RlIHVzYWdlIGluIHRoZSBkcml2ZXIsIGNhbiB3ZSBkcm9wIHRoaXMgaWYgaXQgaXNuJ3QKdXNl ZD8KCj4gKwloZWxwCj4gKwkgIFRvc2hpYmEgVEMzNTg3NjQgRFNJL0xWRFMgYnJpZGdlIGRyaXZl cgo+ICsKPiAgIGNvbmZpZyBEUk1fVE9TSElCQV9UQzM1ODc2Nwo+ICAgCXRyaXN0YXRlICJUb3No aWJhIFRDMzU4NzY3IGVEUCBicmlkZ2UiCj4gICAJZGVwZW5kcyBvbiBPRgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRn ZS9NYWtlZmlsZQo+IGluZGV4IDM1Zjg4ZDQuLmJmN2MwY2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uv TWFrZWZpbGUKPiBAQCAtMTAsNiArMTAsNyBAQCBvYmotJChDT05GSUdfRFJNX1NJTF9TSUk4NjIw KSArPSBzaWwtc2lpODYyMC5vCj4gICBvYmotJChDT05GSUdfRFJNX1NJSTkwMlgpICs9IHNpaTkw Mngubwo+ICAgb2JqLSQoQ09ORklHX0RSTV9TSUk5MjM0KSArPSBzaWk5MjM0Lm8KPiAgIG9iai0k KENPTkZJR19EUk1fVEhJTkVfVEhDNjNMVkQxMDI0KSArPSB0aGM2M2x2ZDEwMjQubwo+ICtvYmot JChDT05GSUdfRFJNX1RPU0hJQkFfVEMzNTg3NjQpICs9IHRjMzU4NzY0Lm8KPiAgIG9iai0kKENP TkZJR19EUk1fVE9TSElCQV9UQzM1ODc2NykgKz0gdGMzNTg3Njcubwo+ICAgb2JqLSQoQ09ORklH X0RSTV9BTkFMT0dJWF9EUCkgKz0gYW5hbG9naXgvCj4gICBvYmotJChDT05GSUdfRFJNX0kyQ19B RFY3NTExKSArPSBhZHY3NTExLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdl L3RjMzU4NzY0LmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RjMzU4NzY0LmMKPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjMxMDllYmEKPiAtLS0gL2Rldi9udWxsCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90YzM1ODc2NC5jCj4gQEAgLTAsMCArMSw1NDcg QEAKCldlJ2QgbmVlZCBhIFNQRFggbGljZW5zZSBoZXJlPwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQg KEMpIDIwMTggU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZAo+ICsgKgo+ICsgKiBBdXRob3Jz Ogo+ICsgKglBbmRyemVqIEhhamRhIDxhLmhhamRhQHNhbXN1bmcuY29tPgo+ICsgKglNYWNpZWog UHVyc2tpIDxtLnB1cnNraUBzYW1zdW5nLmNvbT4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiAr ICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2 ZXJzaW9uIDIgYXMKPiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4gKyAqIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCj4gKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLgo+ICsgKgo+ICsgKi8KPiArCj4gKyNp bmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJt UC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2RzaS5oPgo+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9wYW5lbC5oPgo+ICsKPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgo+ICsjaW5jbHVkZSA8 ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3Vt ZXIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX2dyYXBoLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9y ZWd1bGF0b3IvY29uc3VtZXIuaD4KPiArCj4gKyNpbmNsdWRlIDx2aWRlby9taXBpX2Rpc3BsYXku aD4KPiArI2luY2x1ZGUgPHZpZGVvL29mX3ZpZGVvbW9kZS5oPgo+ICsjaW5jbHVkZSA8dmlkZW8v dmlkZW9tb2RlLmg+Cj4gKwo+ICsjZGVmaW5lIEZMRF9NQVNLKHN0YXJ0LCBlbmQpICAgICgoKDEg PDwgKChzdGFydCkgLSAoZW5kKSArIDEpKSAtIDEpIDw8IChlbmQpKQo+ICsjZGVmaW5lIEZMRF9W QUwodmFsLCBzdGFydCwgZW5kKSAoKCh2YWwpIDw8IChlbmQpKSAmIEZMRF9NQVNLKHN0YXJ0LCBl bmQpKQo+ICsKPiArLyogUFBJIGxheWVyIHJlZ2lzdGVycyAqLwo+ICsjZGVmaW5lIFBQSV9TVEFS VFBQSQkJMHgwMTA0IC8qIFNUQVJUIGNvbnRyb2wgYml0ICovCj4gKyNkZWZpbmUgUFBJX0xQVFhU SU1FQ05UCQkweDAxMTQgLyogTFBUWCB0aW1pbmcgc2lnbmFsICovCj4gKyNkZWZpbmUgUFBJX0xB TkVFTkFCTEUJCTB4MDEzNCAvKiBFbmFibGVzIGVhY2ggbGFuZSAqLwo+ICsjZGVmaW5lIFBQSV9U WF9SWF9UQQkJMHgwMTNDIC8qIEJUQSB0aW1pbmcgcGFyYW1ldGVycyAqLwo+ICsjZGVmaW5lIFBQ SV9EMFNfQ0xSU0lQT0NPVU5UCTB4MDE2NCAvKiBBc3NlcnRpb24gdGltZXIgZm9yIExhbmUgMCAq Lwo+ICsjZGVmaW5lIFBQSV9EMVNfQ0xSU0lQT0NPVU5UCTB4MDE2OCAvKiBBc3NlcnRpb24gdGlt ZXIgZm9yIExhbmUgMSAqLwo+ICsjZGVmaW5lIFBQSV9EMlNfQ0xSU0lQT0NPVU5UCTB4MDE2QyAv KiBBc3NlcnRpb24gdGltZXIgZm9yIExhbmUgMiAqLwo+ICsjZGVmaW5lIFBQSV9EM1NfQ0xSU0lQ T0NPVU5UCTB4MDE3MCAvKiBBc3NlcnRpb24gdGltZXIgZm9yIExhbmUgMyAqLwo+ICsjZGVmaW5l IFBQSV9TVEFSVF9GVU5DVElPTgkxCj4gKwo+ICsvKiBEU0kgbGF5ZXIgcmVnaXN0ZXJzICovCj4g KyNkZWZpbmUgRFNJX1NUQVJURFNJCQkweDAyMDQgLyogU1RBUlQgY29udHJvbCBiaXQgb2YgRFNJ LVRYICovCj4gKyNkZWZpbmUgRFNJX0xBTkVFTkFCTEUJCTB4MDIxMCAvKiBFbmFibGVzIGVhY2gg bGFuZSAqLwo+ICsjZGVmaW5lIERTSV9SWF9TVEFSVAkJMQo+ICsKPiArLyogVmlkZW8gcGF0aCBy ZWdpc3RlcnMgKi8KPiArI2RlZmluZSBWUF9DVFJMCQkJMHgwNDUwIC8qIFZpZGVvIFBhdGggQ29u dHJvbCAqLwo+ICsjZGVmaW5lIFZQX0NUUkxfTVNGKHYpCQlGTERfVkFMKHYsIDAsIDApIC8qIE1h Z2ljIHNxdWFyZSBpbiBSR0I2NjYgKi8KPiArI2RlZmluZSBWUF9DVFJMX1ZUR0VOKHYpCUZMRF9W QUwodiwgNCwgNCkgLyogVXNlIGNoaXAgY2xvY2sgZm9yIHRpbWluZyAqLwo+ICsjZGVmaW5lIFZQ X0NUUkxfRVZUTU9ERSh2KQlGTERfVkFMKHYsIDUsIDUpIC8qIEV2ZW50IG1vZGUgKi8KPiArI2Rl ZmluZSBWUF9DVFJMX1JHQjg4OCh2KQlGTERfVkFMKHYsIDgsIDgpIC8qIFJHQjg4OCBtb2RlICov Cj4gKyNkZWZpbmUgVlBfQ1RSTF9WU0RFTEFZKHYpCUZMRF9WQUwodiwgMzEsIDIwKSAvKiBWU1lO QyBkZWxheSAqLwo+ICsjZGVmaW5lIFZQX0NUUkxfSFNQT0wJCUJJVCgxNykgLyogUG9sYXJpdHkg b2YgSFNZTkMgc2lnbmFsICovCj4gKyNkZWZpbmUgVlBfQ1RSTF9ERVBPTAkJQklUKDE4KSAvKiBQ b2xhcml0eSBvZiBERSBzaWduYWwgKi8KPiArI2RlZmluZSBWUF9DVFJMX1ZTUE9MCQlCSVQoMTkp IC8qIFBvbGFyaXR5IG9mIFZTWU5DIHNpZ25hbCAqLwo+ICsjZGVmaW5lIFZQX0hUSU0xCQkweDA0 NTQgLyogSG9yaXpvbnRhbCBUaW1pbmcgQ29udHJvbCAxICovCj4gKyNkZWZpbmUgVlBfSFRJTTFf SEJQKHYpCQlGTERfVkFMKHYsIDI0LCAxNikKPiArI2RlZmluZSBWUF9IVElNMV9IU1lOQyh2KQlG TERfVkFMKHYsIDgsIDApCj4gKyNkZWZpbmUgVlBfSFRJTTIJCTB4MDQ1OCAvKiBIb3Jpem9udGFs IFRpbWluZyBDb250cm9sIDIgKi8KPiArI2RlZmluZSBWUF9IVElNMl9IRlAodikJCUZMRF9WQUwo diwgMjQsIDE2KQo+ICsjZGVmaW5lIFZQX0hUSU0yX0hBQ1QodikJRkxEX1ZBTCh2LCAxMCwgMCkK PiArI2RlZmluZSBWUF9WVElNMQkJMHgwNDVDIC8qIFZlcnRpY2FsIFRpbWluZyBDb250cm9sIDEg Ki8KPiArI2RlZmluZSBWUF9WVElNMV9WQlAodikJCUZMRF9WQUwodiwgMjMsIDE2KQo+ICsjZGVm aW5lIFZQX1ZUSU0xX1ZTWU5DKHYpCUZMRF9WQUwodiwgNywgMCkKPiArI2RlZmluZSBWUF9WVElN MgkJMHgwNDYwIC8qIFZlcnRpY2FsIFRpbWluZyBDb250cm9sIDIgKi8KPiArI2RlZmluZSBWUF9W VElNMl9WRlAodikJCUZMRF9WQUwodiwgMjMsIDE2KQo+ICsjZGVmaW5lIFZQX1ZUSU0yX1ZBQ1Qo dikJRkxEX1ZBTCh2LCAxMCwgMCkKPiArI2RlZmluZSBWUF9WRlVFTgkJMHgwNDY0IC8qIFZpZGVv IEZyYW1lIFRpbWluZyBVcGRhdGUgRW5hYmxlICovCj4gKwo+ICsvKiBMVkRTIHJlZ2lzdGVycyAq Lwo+ICsjZGVmaW5lIExWX01YMDAwMwkJMHgwNDgwIC8qIE11eCBpbnB1dCBiaXQgMCB0byAzICov Cj4gKyNkZWZpbmUgTFZfTVgwNDA3CQkweDA0ODQgLyogTXV4IGlucHV0IGJpdCA0IHRvIDcgKi8K PiArI2RlZmluZSBMVl9NWDA4MTEJCTB4MDQ4OCAvKiBNdXggaW5wdXQgYml0IDggdG8gMTEgKi8K PiArI2RlZmluZSBMVl9NWDEyMTUJCTB4MDQ4QyAvKiBNdXggaW5wdXQgYml0IDEyIHRvIDE1ICov Cj4gKyNkZWZpbmUgTFZfTVgxNjE5CQkweDA0OTAgLyogTXV4IGlucHV0IGJpdCAxNiB0byAxOSAq Lwo+ICsjZGVmaW5lIExWX01YMjAyMwkJMHgwNDk0IC8qIE11eCBpbnB1dCBiaXQgMjAgdG8gMjMg Ki8KPiArI2RlZmluZSBMVl9NWDI0MjcJCTB4MDQ5OCAvKiBNdXggaW5wdXQgYml0IDI0IHRvIDI3 ICovCj4gKyNkZWZpbmUgTFZfTVgoYjAsIGIxLCBiMiwgYjMpCShGTERfVkFMKGIwLCA0LCAwKSB8 IEZMRF9WQUwoYjEsIDEyLCA4KSB8IFwKPiArCQkJCUZMRF9WQUwoYjIsIDIwLCAxNikgfCBGTERf VkFMKGIzLCAyOCwgMjQpKQo+ICsKPiArLyogSW5wdXQgYml0IG51bWJlcnMgdXNlZCBpbiBtdXgg cmVnaXN0ZXJzICovCj4gK2VudW0gewo+ICsJTFZJX1IwLAo+ICsJTFZJX1IxLAo+ICsJTFZJX1Iy LAo+ICsJTFZJX1IzLAo+ICsJTFZJX1I0LAo+ICsJTFZJX1I1LAo+ICsJTFZJX1I2LAo+ICsJTFZJ X1I3LAo+ICsJTFZJX0cwLAo+ICsJTFZJX0cxLAo+ICsJTFZJX0cyLAo+ICsJTFZJX0czLAo+ICsJ TFZJX0c0LAo+ICsJTFZJX0c1LAo+ICsJTFZJX0c2LAo+ICsJTFZJX0c3LAo+ICsJTFZJX0IwLAo+ ICsJTFZJX0IxLAo+ICsJTFZJX0IyLAo+ICsJTFZJX0IzLAo+ICsJTFZJX0I0LAo+ICsJTFZJX0I1 LAo+ICsJTFZJX0I2LAo+ICsJTFZJX0I3LAo+ICsJTFZJX0hTLAo+ICsJTFZJX1ZTLAo+ICsJTFZJ X0RFLAo+ICsJTFZJX0wwCj4gK307Cj4gKwo+ICsjZGVmaW5lIExWX0NGRwkJCTB4MDQ5QyAvKiBM VkRTIENvbmZpZ3VyYXRpb24gKi8KPiArI2RlZmluZSBMVl9QSFkwCQkJMHgwNEEwIC8qIExWRFMg UEhZIDAgKi8KPiArI2RlZmluZSBMVl9QSFkwX1JTVCh2KQkJRkxEX1ZBTCh2LCAyMiwgMjIpIC8q IFBIWSByZXNldCAqLwo+ICsjZGVmaW5lIExWX1BIWTBfSVModikJCUZMRF9WQUwodiwgMTUsIDE0 KQo+ICsjZGVmaW5lIExWX1BIWTBfTkQodikJCUZMRF9WQUwodiwgNCwgMCkgLyogRnJlcXVlbmN5 IHJhbmdlIHNlbGVjdCAqLwo+ICsjZGVmaW5lIExWX1BIWTBfUFJCU19PTih2KQlGTERfVkFMKHYs IDIwLCAxNikgLyogQ2xvY2svRGF0YSBGbGFnIHBpbnMgKi8KPiArCj4gKy8qIFN5c3RlbSByZWdp c3RlcnMgKi8KPiArI2RlZmluZSBTWVNfUlNUCQkJMHgwNTA0IC8qIFN5c3RlbSBSZXNldCAqLwo+ ICsjZGVmaW5lIFNZU19JRAkJCTB4MDU4MCAvKiBTeXN0ZW0gSUQgKi8KPiArCj4gKyNkZWZpbmUg U1lTX1JTVF9JMkNTCQlCSVQoMCkgLyogUmVzZXQgSTJDLVNsYXZlIGNvbnRyb2xsZXIgKi8KPiAr I2RlZmluZSBTWVNfUlNUX0kyQ00JCUJJVCgxKSAvKiBSZXNldCBJMkMtTWFzdGVyIGNvbnRyb2xs ZXIgKi8KPiArI2RlZmluZSBTWVNfUlNUX0xDRAkJQklUKDIpIC8qIFJlc2V0IExDRCBjb250cm9s bGVyICovCj4gKyNkZWZpbmUgU1lTX1JTVF9CTQkJQklUKDMpIC8qIFJlc2V0IEJ1cyBNYW5hZ2Vt ZW50IGNvbnRyb2xsZXIgKi8KPiArI2RlZmluZSBTWVNfUlNUX0RTSVJYCQlCSVQoNCkgLyogUmVz ZXQgRFNJLVJYIGFuZCBBcHAgY29udHJvbGxlciAqLwo+ICsjZGVmaW5lIFNZU19SU1RfUkVHCQlC SVQoNSkgLyogUmVzZXQgUmVnaXN0ZXIgbW9kdWxlICovCj4gKwo+ICsjZGVmaW5lIExQWF9QRVJJ T0QJCTIKPiArI2RlZmluZSBUVEFfU1VSRQkJMwo+ICsjZGVmaW5lIFRUQV9HRVQJCQkweDIwMDAw Cj4gKwo+ICsvKiBMYW5lIGVuYWJsZSBQUEkgYW5kIERTSSByZWdpc3RlciBiaXRzICovCj4gKyNk ZWZpbmUgTEFORUVOQUJMRV9DTEVOCQlCSVQoMCkKPiArI2RlZmluZSBMQU5FRU5BQkxFX0wwRU4J CUJJVCgxKQo+ICsjZGVmaW5lIExBTkVFTkFCTEVfTDFFTgkJQklUKDIpCj4gKyNkZWZpbmUgTEFO RUVOQUJMRV9MMkVOCQlCSVQoMykKPiArI2RlZmluZSBMQU5FRU5BQkxFX0wzRU4JCUJJVCg0KQo+ ICsKPiArLyogTFZDRkcgZmllbGRzICovCj4gKyNkZWZpbmUgTFZfQ0ZHX0xWRU4JCUJJVCgwKQo+ ICsjZGVmaW5lIExWX0NGR19MVkRMSU5LCQlCSVQoMSkKPiArI2RlZmluZSBMVl9DRkdfQ0xLUE9M MQkJQklUKDIpCj4gKyNkZWZpbmUgTFZfQ0ZHX0NMS1BPTDIJCUJJVCgzKQo+ICsKPiArc3RhdGlj IGNvbnN0IGNoYXIgKiBjb25zdCB0YzM1ODc2NF9zdXBwbGllc1tdID0gewo+ICsJInZkZGMiLCAi dmRkaW8iLCAidmRkbWlwaSIsICJ2ZGRsdmRzMTMzIiwgInZkZGx2ZHMxMTIiCj4gK307Cj4gKwo+ ICtzdHJ1Y3QgdGMzNTg3NjQgewo+ICsJc3RydWN0IGRldmljZSAqZGV2Owo+ICsJc3RydWN0IGRy bV9icmlkZ2UgYnJpZGdlOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgY29ubmVjdG9yOwo+ICsJ c3RydWN0IHJlZ3VsYXRvcl9idWxrX2RhdGEgc3VwcGxpZXNbQVJSQVlfU0laRSh0YzM1ODc2NF9z dXBwbGllcyldOwo+ICsJc3RydWN0IGdwaW9fZGVzYyAqZ3Bpb19yZXNldDsKPiArCj4gKwlzdHJ1 Y3QgZHJtX3BhbmVsICpwYW5lbDsKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgdGMzNTg3NjRfcmVh ZChzdHJ1Y3QgdGMzNTg3NjQgKmN0eCwgdTE2IGFkZHIsIHUzMiAqdmFsKQo+ICt7Cj4gKwlzdHJ1 Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kgPSB0b19taXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYpOwo+ ICsJY29uc3Qgc3RydWN0IG1pcGlfZHNpX2hvc3Rfb3BzICpvcHMgPSBkc2ktPmhvc3QtPm9wczsK PiArCXN0cnVjdCBtaXBpX2RzaV9tc2cgbXNnID0gewo+ICsJCS50eXBlID0gTUlQSV9EU0lfR0VO RVJJQ19SRUFEX1JFUVVFU1RfMl9QQVJBTSwKPiArCQkuY2hhbm5lbCA9IGRzaS0+Y2hhbm5lbCwK PiArCQkuZmxhZ3MgPSBNSVBJX0RTSV9NU0dfVVNFX0xQTSwKPiArCQkudHhfYnVmID0gJmFkZHIs Cj4gKwkJLnR4X2xlbiA9IDIsCj4gKwkJLnJ4X2J1ZiA9IHZhbCwKPiArCQkucnhfbGVuID0gNAo+ ICsJfTsKPiArCXNzaXplX3QgcmV0Owo+ICsKPiArCWlmICghb3BzIHx8ICFvcHMtPnRyYW5zZmVy KQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWNwdV90b19sZTE2cygmYWRkcik7Cj4gKwo+ ICsJcmV0ID0gb3BzLT50cmFuc2Zlcihkc2ktPmhvc3QsICZtc2cpOwo+ICsJaWYgKHJldCA+PSAw KQo+ICsJCWxlMzJfdG9fY3B1cyh2YWwpOyA+ICsKPiArCWRldl9kYmcoY3R4LT5kZXYsICJyZWFk OiAlZCwgYWRkcjogJWRcbiIsIGFkZHIsICp2YWwpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgdGMzNTg3NjRfd3JpdGUoc3RydWN0IHRjMzU4NzY0ICpjdHgsIHUx NiBhZGRyLCB1MzIgdmFsKQo+ICt7Cj4gKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kgPSB0 b19taXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYpOwo+ICsJY29uc3Qgc3RydWN0IG1pcGlfZHNpX2hv c3Rfb3BzICpvcHMgPSBkc2ktPmhvc3QtPm9wczsKPiArCXU4IGRhdGFbNl07Cj4gKwlpbnQgcmV0 Owo+ICsJc3RydWN0IG1pcGlfZHNpX21zZyBtc2cgPSB7Cj4gKwkJLnR5cGUgPSBNSVBJX0RTSV9H RU5FUklDX0xPTkdfV1JJVEUsCj4gKwkJLmNoYW5uZWwgPSBkc2ktPmNoYW5uZWwsCj4gKwkJLmZs YWdzID0gTUlQSV9EU0lfTVNHX1VTRV9MUE0gfCBNSVBJX0RTSV9NU0dfUkVRX0FDSywKPiArCQku dHhfYnVmID0gZGF0YSwKPiArCQkudHhfbGVuID0gNgo+ICsJfTsKPiArCj4gKwlpZiAoIW9wcyB8 fCAhb3BzLT50cmFuc2ZlcikKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlkYXRhWzBdID0g YWRkcjsKPiArCWRhdGFbMV0gPSBhZGRyID4+IDg7Cj4gKwlkYXRhWzJdID0gdmFsOwo+ICsJZGF0 YVszXSA9IHZhbCA+PiA4Owo+ICsJZGF0YVs0XSA9IHZhbCA+PiAxNjsKPiArCWRhdGFbNV0gPSB2 YWwgPj4gMjQ7Cj4gKwo+ICsJcmV0ID0gb3BzLT50cmFuc2Zlcihkc2ktPmhvc3QsICZtc2cpOwo+ ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHRjMzU4 NzY0ICpicmlkZ2VfdG9fdGMzNTg3NjQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiArewo+ ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihicmlkZ2UsIHN0cnVjdCB0YzM1ODc2NCwgYnJpZGdlKTsK PiArfQo+ICsKPiArc3RhdGljIGlubGluZQo+ICtzdHJ1Y3QgdGMzNTg3NjQgKmNvbm5lY3Rvcl90 b190YzM1ODc2NChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlyZXR1 cm4gY29udGFpbmVyX29mKGNvbm5lY3Rvciwgc3RydWN0IHRjMzU4NzY0LCBjb25uZWN0b3IpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHRjMzU4NzY0X2luaXQoc3RydWN0IHRjMzU4NzY0ICpjdHgp Cj4gK3sKPiArCXUzMiB2ID0gMDsKPiArCj4gKwl0YzM1ODc2NF9yZWFkKGN0eCwgU1lTX0lELCAm dik7Cj4gKwlkZXZfaW5mbyhjdHgtPmRldiwgIklEOiAlI3hcbiIsIHYpOwo+ICsKPiArCS8qIGNv bmZpZ3VyZSBQUEkgY291bnRlcnMgKi8KPiArCXRjMzU4NzY0X3dyaXRlKGN0eCwgUFBJX1RYX1JY X1RBLCBUVEFfR0VUIHwgVFRBX1NVUkUpOwo+ICsJdGMzNTg3NjRfd3JpdGUoY3R4LCBQUElfTFBU WFRJTUVDTlQsIExQWF9QRVJJT0QpOwo+ICsJdGMzNTg3NjRfd3JpdGUoY3R4LCBQUElfRDBTX0NM UlNJUE9DT1VOVCwgNSk7Cj4gKwl0YzM1ODc2NF93cml0ZShjdHgsIFBQSV9EMVNfQ0xSU0lQT0NP VU5ULCA1KTsKPiArCXRjMzU4NzY0X3dyaXRlKGN0eCwgUFBJX0QyU19DTFJTSVBPQ09VTlQsIDUp Owo+ICsJdGMzNTg3NjRfd3JpdGUoY3R4LCBQUElfRDNTX0NMUlNJUE9DT1VOVCwgNSk7Cj4gKwo+ ICsJLyogZW5hYmxlIGZvdXIgZGF0YSBsYW5lcyBhbmQgY2xvY2sgbGFuZSAqLwo+ICsJdGMzNTg3 NjRfd3JpdGUoY3R4LCBQUElfTEFORUVOQUJMRSwgTEFORUVOQUJMRV9MM0VOIHwgTEFORUVOQUJM RV9MMkVOIHwKPiArCQkgICAgICAgTEFORUVOQUJMRV9MMUVOIHwgTEFORUVOQUJMRV9MMEVOIHwg TEFORUVOQUJMRV9DTEVOKTsKPiArCXRjMzU4NzY0X3dyaXRlKGN0eCwgRFNJX0xBTkVFTkFCTEUs IExBTkVFTkFCTEVfTDNFTiB8IExBTkVFTkFCTEVfTDJFTiB8Cj4gKwkJICAgICAgIExBTkVFTkFC TEVfTDFFTiB8IExBTkVFTkFCTEVfTDBFTiB8IExBTkVFTkFCTEVfQ0xFTik7Cj4gKwo+ICsJLyog c3RhcnQgKi8KPiArCXRjMzU4NzY0X3dyaXRlKGN0eCwgUFBJX1NUQVJUUFBJLCBQUElfU1RBUlRf RlVOQ1RJT04pOwo+ICsJdGMzNTg3NjRfd3JpdGUoY3R4LCBEU0lfU1RBUlREU0ksIERTSV9SWF9T VEFSVCk7Cj4gKwo+ICsJLyogY29uZmlndXJlIHZpZGVvIHBhdGggKi8KPiArCXRjMzU4NzY0X3dy aXRlKGN0eCwgVlBfQ1RSTCwgVlBfQ1RSTF9WU0RFTEFZKDE1KSB8IFZQX0NUUkxfUkdCODg4KDEp IHwKPiArCQkgICAgICAgVlBfQ1RSTF9FVlRNT0RFKDEpIHwgVlBfQ1RSTF9IU1BPTCB8IFZQX0NU UkxfVlNQT0wpOwoKQ291bGQgd2Ugc3BlY2lmeSBzb21ld2hlcmUgdGhhdAo+ICsKPiArCS8qIHJl c2V0IFBIWSAqLwo+ICsJdGMzNTg3NjRfd3JpdGUoY3R4LCBMVl9QSFkwLCBMVl9QSFkwX1JTVCgx KSB8Cj4gKwkJICAgICAgIExWX1BIWTBfUFJCU19PTig0KSB8IExWX1BIWTBfSVMoMikgfCBMVl9Q SFkwX05EKDYpKTsKPiArCXRjMzU4NzY0X3dyaXRlKGN0eCwgTFZfUEhZMCwgTFZfUEhZMF9QUkJT X09OKDQpIHwgTFZfUEhZMF9JUygyKSB8Cj4gKwkJICAgICAgIExWX1BIWTBfTkQoNikpOwo+ICsK PiArCS8qIHJlc2V0IGJyaWRnZSAqLwo+ICsJdGMzNTg3NjRfd3JpdGUoY3R4LCBTWVNfUlNULCBT WVNfUlNUX0xDRCk7Cj4gKwo+ICsJLyogc2V0IGJpdCBvcmRlciAqLwo+ICsJdGMzNTg3NjRfd3Jp dGUoY3R4LCBMVl9NWDAwMDMsIExWX01YKExWSV9SMCwgTFZJX1IxLCBMVklfUjIsIExWSV9SMykp Owo+ICsJdGMzNTg3NjRfd3JpdGUoY3R4LCBMVl9NWDA0MDcsIExWX01YKExWSV9SNCwgTFZJX1I3 LCBMVklfUjUsIExWSV9HMCkpOwo+ICsJdGMzNTg3NjRfd3JpdGUoY3R4LCBMVl9NWDA4MTEsIExW X01YKExWSV9HMSwgTFZJX0cyLCBMVklfRzYsIExWSV9HNykpOwo+ICsJdGMzNTg3NjRfd3JpdGUo Y3R4LCBMVl9NWDEyMTUsIExWX01YKExWSV9HMywgTFZJX0c0LCBMVklfRzUsIExWSV9CMCkpOwo+ ICsJdGMzNTg3NjRfd3JpdGUoY3R4LCBMVl9NWDE2MTksIExWX01YKExWSV9CNiwgTFZJX0I3LCBM VklfQjEsIExWSV9CMikpOwo+ICsJdGMzNTg3NjRfd3JpdGUoY3R4LCBMVl9NWDIwMjMsIExWX01Y KExWSV9CMywgTFZJX0I0LCBMVklfQjUsIExWSV9MMCkpOwo+ICsJdGMzNTg3NjRfd3JpdGUoY3R4 LCBMVl9NWDI0MjcsIExWX01YKExWSV9IUywgTFZJX1ZTLCBMVklfREUsIExWSV9SNikpOwo+ICsJ dGMzNTg3NjRfd3JpdGUoY3R4LCBMVl9DRkcsIExWX0NGR19DTEtQT0wyIHwgTFZfQ0ZHX0NMS1BP TDEgfAo+ICsJCSAgICAgICBMVl9DRkdfTFZFTik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkIHRjMzU4NzY0X3Jlc2V0KHN0cnVjdCB0YzM1ODc2NCAqY3R4KQo+ICt7 Cj4gKwltc2xlZXAoMjApOwo+ICsJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+Z3Bpb19yZXNldCwgMCk7 Cj4gKwltc2xlZXAoMjApOwo+ICsJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+Z3Bpb19yZXNldCwgMSk7 Cj4gKwltc2xlZXAoNDApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB0YzM1ODc2NF9wb3dlcm9m ZihzdHJ1Y3QgdGMzNTg3NjQgKmN0eCkKPiArewo+ICsJaW50IHJldDsKPiArCj4gKwl0YzM1ODc2 NF9yZXNldChjdHgpOwo+ICsKPiArCWRybV9wYW5lbF9kaXNhYmxlKGN0eC0+cGFuZWwpOwo+ICsJ bXNsZWVwKDQwKTsKPiArCj4gKwlyZXQgPSByZWd1bGF0b3JfYnVsa19kaXNhYmxlKEFSUkFZX1NJ WkUoY3R4LT5zdXBwbGllcyksIGN0eC0+c3VwcGxpZXMpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJ ZGV2X2VycihjdHgtPmRldiwgImVycm9yIGRpc2FibGluZyByZWd1bGF0b3JzICglZClcbiIsIHJl dCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdGMzNTg3NjRfZ2V0X21vZGVzKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXN0cnVjdCB0YzM1ODc2NCAqY3R4ID0gY29u bmVjdG9yX3RvX3RjMzU4NzY0KGNvbm5lY3Rvcik7Cj4gKwo+ICsJaWYgKGN0eC0+cGFuZWwgJiYg Y3R4LT5wYW5lbC0+ZnVuY3MgJiYgY3R4LT5wYW5lbC0+ZnVuY3MtPmdldF9tb2RlcykKPiArCQly ZXR1cm4gY3R4LT5wYW5lbC0+ZnVuY3MtPmdldF9tb2RlcyhjdHgtPnBhbmVsKTsKPiArCj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0Cj4gK3N0cnVjdCBkcm1fY29ubmVjdG9y X2hlbHBlcl9mdW5jcyB0YzM1ODc2NF9jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0gewo+ICsJLmdl dF9tb2RlcyA9IHRjMzU4NzY0X2dldF9tb2RlcywKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyB0YzM1ODc2NF9jb25uZWN0b3JfZnVuY3MgPSB7Cj4g KwkuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywK PiArCS5kZXN0cm95ID0gZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwLAo+ICsJLnJlc2V0ID0gZHJtX2F0 b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LAo+ICsJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUg PSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAo+ICsJLmF0b21p Y19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3Rh dGUsCj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZCB0YzM1ODc2NF9kaXNhYmxlKHN0cnVjdCBkcm1f YnJpZGdlICpicmlkZ2UpCj4gK3sKPiArCXN0cnVjdCB0YzM1ODc2NCAqY3R4ID0gYnJpZGdlX3Rv X3RjMzU4NzY0KGJyaWRnZSk7Cj4gKwo+ICsJdGMzNTg3NjRfcG93ZXJvZmYoY3R4KTsKPiArfQo+ ICsKPiArc3RhdGljIHZvaWQgdGMzNTg3NjRfcHJlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAq YnJpZGdlKQo+ICt7Cj4gKwlzdHJ1Y3QgdGMzNTg3NjQgKmN0eCA9IGJyaWRnZV90b190YzM1ODc2 NChicmlkZ2UpOwo+ICsJaW50IHJldCA9IHJlZ3VsYXRvcl9idWxrX2VuYWJsZShBUlJBWV9TSVpF KGN0eC0+c3VwcGxpZXMpLAo+ICsJCQkJCWN0eC0+c3VwcGxpZXMpOwo+ICsJaWYgKHJldCA8IDAp Cj4gKwkJZGV2X2VycihjdHgtPmRldiwgImVycm9yIGVuYWJsaW5nIHJlZ3VsYXRvcnMgKCVkKVxu IiwgcmV0KTsKPiArCj4gKwl0YzM1ODc2NF9yZXNldChjdHgpOwo+ICsJdGMzNTg3NjRfaW5pdChj dHgpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB0YzM1ODc2NF9lbmFibGUoc3RydWN0IGRybV9i cmlkZ2UgKmJyaWRnZSkKPiArewo+ICsJc3RydWN0IHRjMzU4NzY0ICpjdHggPSBicmlkZ2VfdG9f dGMzNTg3NjQoYnJpZGdlKTsKPiArCWludCByZXQ7Cj4gKwo+ICsJZHJtX3BhbmVsX3ByZXBhcmUo Y3R4LT5wYW5lbCk7Cj4gKwo+ICsJcmV0ID0gZHJtX3BhbmVsX2VuYWJsZShjdHgtPnBhbmVsKTsK PiArCWlmIChyZXQgPCAwKQo+ICsJCXByX2VycigicGFuZWwgZW5hYmxlIGZhaWxlZFxuIik7Cj4g Kwo+ICsJbXNsZWVwKDQwKTsKPiArfQo+ICsKPiArc3RhdGljIGludCB0YzM1ODc2NF9hdHRhY2go c3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiArewo+ICsJc3RydWN0IHRjMzU4NzY0ICpjdHgg PSBicmlkZ2VfdG9fdGMzNTg3NjQoYnJpZGdlKTsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0g PSBicmlkZ2UtPmRldjsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKCFicmlkZ2UtPmVuY29kZXIp IHsKPiArCQlEUk1fRVJST1IoIkVuY29kZXIgbm90IGZvdW5kXG4iKTsKPiArCQlyZXR1cm4gLUVO T0RFVjsKPiArCX0KPiArCj4gKwljdHgtPmNvbm5lY3Rvci5wb2xsZWQgPSBEUk1fQ09OTkVDVE9S X1BPTExfSFBEOwo+ICsJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9pbml0KGRybSwgJmN0eC0+Y29ubmVj dG9yLAo+ICsJCQkJICZ0YzM1ODc2NF9jb25uZWN0b3JfZnVuY3MsCj4gKwkJCQkgRFJNX01PREVf Q09OTkVDVE9SX0xWRFMpOwo+ICsJaWYgKHJldCkgewo+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRv IGluaXRpYWxpemUgY29ubmVjdG9yXG4iKTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiAr CWRybV9jb25uZWN0b3JfaGVscGVyX2FkZCgmY3R4LT5jb25uZWN0b3IsCj4gKwkJCQkgJnRjMzU4 NzY0X2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MpOwo+ICsKPiArCWRybV9tb2RlX2Nvbm5lY3Rvcl9h dHRhY2hfZW5jb2RlcigmY3R4LT5jb25uZWN0b3IsIGJyaWRnZS0+ZW5jb2Rlcik7Cj4gKwo+ICsJ aWYgKGN0eC0+cGFuZWwpCj4gKwkJZHJtX3BhbmVsX2F0dGFjaChjdHgtPnBhbmVsLCAmY3R4LT5j b25uZWN0b3IpOwo+ICsKPiArCWRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9yZXNldCgmY3R4 LT5jb25uZWN0b3IpOwo+ICsJZHJtX2Nvbm5lY3Rvcl9yZWdpc3RlcigmY3R4LT5jb25uZWN0b3Ip Owo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9i cmlkZ2VfZnVuY3MgdGMzNTg3NjRfYnJpZGdlX2Z1bmNzID0gewo+ICsJLmRpc2FibGUgPSB0YzM1 ODc2NF9kaXNhYmxlLAo+ICsJLmVuYWJsZSA9IHRjMzU4NzY0X2VuYWJsZSwKPiArCS5wcmVfZW5h YmxlID0gdGMzNTg3NjRfcHJlX2VuYWJsZSwKPiArCS5hdHRhY2ggPSB0YzM1ODc2NF9hdHRhY2gs Cj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRldmljZV9ub2RlICp0YzM1ODc2NF9vZl9maW5k X3BhbmVsX25vZGUoc3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlX25v ZGUgKm5wLCAqZXA7Cj4gKwo+ICsJZXAgPSBvZl9ncmFwaF9nZXRfZW5kcG9pbnRfYnlfcmVncyhk ZXYtPm9mX25vZGUsIDEsIDApOwo+ICsJaWYgKCFlcCkgewo+ICsJCXByX2VycigiZmFpbGUgdG8g Z2V0IGVuZHBvaW50XG4iKTsKPiArCQlyZXR1cm4gTlVMTDsKPiArCX0KPiArCj4gKwlucCA9IG9m X2dyYXBoX2dldF9yZW1vdGVfcG9ydF9wYXJlbnQoZXApOwo+ICsKPiArCXJldHVybiBucDsKPiAr fQo+ICsKPiArc3RhdGljIGludCB0YzM1ODc2NF9wYXJzZV9kdChzdHJ1Y3QgdGMzNTg3NjQgKmN0 eCkKPiArewo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gY3R4LT5kZXY7Cj4gKwlzdHJ1Y3QgZGV2 aWNlX25vZGUgKm5wID0gZGV2LT5vZl9ub2RlOwo+ICsJc3RydWN0IGRldmljZV9ub2RlICpsdmRz Owo+ICsKPiArCWN0eC0+Z3Bpb19yZXNldCA9IGRldm1fZ3Bpb2RfZ2V0X2Zyb21fb2Zfbm9kZShk ZXYsIG5wLCAicmVzZXQiLCAwLAo+ICsJCQkJCQkgICAgICBHUElPRF9PVVRfTE9XLAo+ICsJCQkJ CQkgICAgICAidGMzNTg3NjQtcmVzZXQiKTsKPiArCWlmIChJU19FUlIoY3R4LT5ncGlvX3Jlc2V0 KSkgewo+ICsJCWRldl9lcnIoZGV2LCAibm8gcmVzZXQgR1BJTyBwaW4gcHJvdmlkZWRcbiIpOwo+ ICsJCXJldHVybiBQVFJfRVJSKGN0eC0+Z3Bpb19yZXNldCk7Cj4gKwl9Cj4gKwo+ICsJbHZkcyA9 IHRjMzU4NzY0X29mX2ZpbmRfcGFuZWxfbm9kZShjdHgtPmRldik7Cj4gKwlpZiAoIWx2ZHMpIHsK PiArCQlkZXZfZXJyKGRldiwgImNhbm5vdCBmaW5kIHBhbmVsIG5vZGVcbiIpOwo+ICsJCXJldHVy biAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCWN0eC0+cGFuZWwgPSBvZl9kcm1fZmluZF9wYW5lbChs dmRzKTsKPiArCWlmICghY3R4LT5wYW5lbCkgewo+ICsJCWRldl9lcnIoZGV2LCAicGFuZWwgbm90 IHJlZ2lzdGVyZWRcbiIpOwo+ICsJCXJldHVybiAtRVBST0JFX0RFRkVSOwo+ICsJfQo+ICsKPiAr CXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHRjMzU4NzY0X2NvbmZpZ3VyZV9yZWd1 bGF0b3JzKHN0cnVjdCB0YzM1ODc2NCAqY3R4KQo+ICt7Cj4gKwlpbnQgaSwgcmV0Owo+ICsKPiAr CWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMpOyArK2kpCj4gKwkJY3R4 LT5zdXBwbGllc1tpXS5zdXBwbHkgPSB0YzM1ODc2NF9zdXBwbGllc1tpXTsKPiArCj4gKwlyZXQg PSBkZXZtX3JlZ3VsYXRvcl9idWxrX2dldChjdHgtPmRldiwgQVJSQVlfU0laRShjdHgtPnN1cHBs aWVzKSwKPiArCQkJCSAgICAgIGN0eC0+c3VwcGxpZXMpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJ ZGV2X2VycihjdHgtPmRldiwgImZhaWxlZCB0byBnZXQgcmVndWxhdG9yczogJWRcbiIsIHJldCk7 Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCB0YzM1ODc2NF9wcm9i ZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmRl diA9ICZkc2ktPmRldjsKPiArCXN0cnVjdCB0YzM1ODc2NCAqY3R4Owo+ICsJaW50IHJldDsKPiAr Cj4gKwljdHggPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2Yoc3RydWN0IHRjMzU4NzY0KSwgR0ZQ X0tFUk5FTCk7Cj4gKwlpZiAoIWN0eCkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwltaXBp X2RzaV9zZXRfZHJ2ZGF0YShkc2ksIGN0eCk7Cj4gKwo+ICsJY3R4LT5kZXYgPSBkZXY7Cj4gKwo+ ICsJZHNpLT5sYW5lcyA9IDQ7Cj4gKwlkc2ktPmZvcm1hdCA9IE1JUElfRFNJX0ZNVF9SR0I4ODg7 Cj4gKwlkc2ktPm1vZGVfZmxhZ3MgPSBNSVBJX0RTSV9NT0RFX1ZJREVPIHwgTUlQSV9EU0lfTU9E RV9WSURFT19CVVJTVAo+ICsJCXwgTUlQSV9EU0lfTU9ERV9WSURFT19BVVRPX1ZFUlQ7CgppZiB5 b3UgdXNlIHRoZSBtaXBpX2RzaV9kZXZpY2VfdHJhbnNmZXIoKSBoZWxwZXIsIEkgZ3Vlc3MgeW91 J2QgbmVlZCB0bwphZGQgdGhlIExQTSBmbGFnIGhlcmUuCgpMb29rcyBnb29kIHRvIG1lIG90aGVy d2lzZS4gT25jZSB0aGUgRFQgcG9ydCBpc3N1ZSBpcyBjb25jbHVkZWQ6CgpSZXZpZXdlZC1ieTog QXJjaGl0IFRhbmVqYSA8YXJjaGl0dEBjb2RlYXVyb3JhLm9yZz4KCj4gKwo+ICsJcmV0ID0gdGMz NTg3NjRfcGFyc2VfZHQoY3R4KTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4g Kwo+ICsJcmV0ID0gdGMzNTg3NjRfY29uZmlndXJlX3JlZ3VsYXRvcnMoY3R4KTsKPiArCWlmIChy ZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJY3R4LT5icmlkZ2UuZnVuY3MgPSAmdGMz NTg3NjRfYnJpZGdlX2Z1bmNzOwo+ICsJY3R4LT5icmlkZ2Uub2Zfbm9kZSA9IGRldi0+b2Zfbm9k ZTsKPiArCj4gKwlkcm1fYnJpZGdlX2FkZCgmY3R4LT5icmlkZ2UpOwo+ICsKPiArCXJldCA9IG1p cGlfZHNpX2F0dGFjaChkc2kpOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlkcm1fYnJpZGdlX3Jl bW92ZSgmY3R4LT5icmlkZ2UpOwo+ICsJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGF0dGFjaCBk c2lcbiIpOwo+ICsJfQo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg dGMzNTg3NjRfcmVtb3ZlKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKPiArewo+ICsJc3Ry dWN0IHRjMzU4NzY0ICpjdHggPSBtaXBpX2RzaV9nZXRfZHJ2ZGF0YShkc2kpOwo+ICsKPiArCXRj MzU4NzY0X3Bvd2Vyb2ZmKGN0eCk7Cj4gKwo+ICsJbWlwaV9kc2lfZGV0YWNoKGRzaSk7Cj4gKwlk cm1fYnJpZGdlX3JlbW92ZSgmY3R4LT5icmlkZ2UpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB0YzM1ODc2NF9vZl9tYXRjaFtd ID0gewo+ICsJeyAuY29tcGF0aWJsZSA9ICJ0b3NoaWJhLHRjMzU4NzY0IiB9LAo+ICsJeyB9Cj4g K307Cj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHRjMzU4NzY0X29mX21hdGNoKTsKPiArCj4g K3N0YXRpYyBzdHJ1Y3QgbWlwaV9kc2lfZHJpdmVyIHRjMzU4NzY0X2RyaXZlciA9IHsKPiArCS5w cm9iZSA9IHRjMzU4NzY0X3Byb2JlLAo+ICsJLnJlbW92ZSA9IHRjMzU4NzY0X3JlbW92ZSwKPiAr CS5kcml2ZXIgPSB7Cj4gKwkJLm5hbWUgPSAidGMzNTg3NjQiLAo+ICsJCS5vd25lciA9IFRISVNf TU9EVUxFLAo+ICsJCS5vZl9tYXRjaF90YWJsZSA9IHRjMzU4NzY0X29mX21hdGNoLAo+ICsJfSwK PiArfTsKPiArbW9kdWxlX21pcGlfZHNpX2RyaXZlcih0YzM1ODc2NF9kcml2ZXIpOwo+ICsKPiAr TU9EVUxFX0FVVEhPUigiQW5kcnplaiBIYWpkYSA8YS5oYWpkYUBzYW1zdW5nLmNvbT4iKTsKPiAr TU9EVUxFX0FVVEhPUigiTWFjaWVqIFB1cnNraSA8bS5wdXJza2lAc2Ftc3VuZy5jb20+Iik7Cj4g K01PRFVMRV9ERVNDUklQVElPTigiTUlQSS1EU0kgYmFzZWQgRHJpdmVyIGZvciBUQzM1ODc2NCBE U0kvTFZEUyBCcmlkZ2UiKTsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwo+IApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK