From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH 2/3] drm/bridge: Add ti-ftp410 HDMI transmitter driver Date: Thu, 03 Nov 2016 19:46:54 +0200 Message-ID: <12424154.kJqhEf2pOz@avalon> References: <9b6a6a4405de344cb9fbea735fea37adee1d726e.1478103726.git.jsarha@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <9b6a6a4405de344cb9fbea735fea37adee1d726e.1478103726.git.jsarha@ti.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jyri Sarha Cc: devicetree@vger.kernel.org, bcousson@baylibre.com, khilman@baylibre.com, dri-devel@lists.freedesktop.org, bgolaszewski@baylibre.com, tomi.valkeinen@ti.com List-Id: devicetree@vger.kernel.org SGkgSnlyaSwKClRoYW5rIHlvdSBmb3IgdGhlIHBhdGNoLgoKT24gV2VkbmVzZGF5IDAyIE5vdiAy MDE2IDE4OjMyOjE2IEp5cmkgU2FyaGEgd3JvdGU6Cj4gQWRkIHZlcnkgYmFzaWMgdGktZnRwNDEw IEhETUkgdHJhbnNtaXR0ZXIgZHJpdmVyLiBUaGUgb25seSBmZWF0dXJlCj4gc2VwYXJhdGluZyB0 aGlzIGZyb20gYSBjb21wbGV0ZWx5IGR1bW15IGJyaWRnZSBpcyB0aGUgRERDIGkyYwo+IHN1cHBv cnQuIEhvd2V2ZXIsIG90aGVyIEhXIHNwZWNpZmljIGZlYXR1cmVzIG1heSBiZSBhZGRlZCBsYXRl ciB3aGVuCj4gbmVlZGVkLiBGb3IgaW5zdGFuY2UgdGhlcmUgaXMgYSBzZXQgb2YgcmVnaXN0ZXJz IGJlaGluZCBpMmMgaWYgaXQgaXMKPiBjb25uZWN0ZWQuIFRoZSBpbXBsZW1lbnRhdGlvbnMgaXMg dGVzdGVkIGFnYWluc3QgbXkgbmV3IHRpbGNkYyBicmlkZ2UKPiBzdXBwb3J0IGFuZCB3b3JrcyB3 aXRoIEJlYWdsZUJvbmUgRFZJLUQgQ2FwZSBSZXYgQTMuIEEgRFQgYmluZGluZwo+IGRvY3VtZW50 IGlzIGFsc28gYWRkZWQuCj4gCj4gU2lnbmVkLW9mZi1ieTogSnlyaSBTYXJoYSA8anNhcmhhQHRp LmNvbT4KPiAtLS0KPiAgLi4uL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL3RpLHRmcDQxMC50eHQg ICAgICAgICAgfCAgMzAgKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcgICAg ICAgICAgICAgICAgICAgICB8ICAgNyArCj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZp bGUgICAgICAgICAgICAgICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90 aS10ZnA0MTAuYyAgICAgICAgICAgICAgICAgfCAxOTkgKysrKysrKysrKysrKysrKysrCj4gIDQg ZmlsZXMgY2hhbmdlZCwgMjM3IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0Cj4g RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL3RpLHRmcDQx MC50eHQgY3JlYXRlIG1vZGUKPiAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90aS10ZnA0 MTAuYwo+IAo+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv ZGlzcGxheS9icmlkZ2UvdGksdGZwNDEwLnR4dAo+IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl L2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL3RpLHRmcDQxMC50eHQgbmV3IGZpbGUKPiBtb2RlIDEw MDY0NAo+IGluZGV4IDAwMDAwMDAuLmRjOTM3MTMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvRG9j dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL3RpLHRmcDQxMC50 eHQKPiBAQCAtMCwwICsxLDMwIEBACj4gK1RGUDQxMCBIRE1JL0RWSSBicmlkZ2UgYmluZGluZ3MK CkknZCBuYW1lIHRoZSBkb2N1bWVudCAiVEkgVEZQNDEwIERWSSBUcmFuc21pdHRlciIuIERWSSBi cmlkZ2UgZG9lc24ndCB0ZWxsIAp3aGV0aGVyIHRoZSBkZXZpY2UgaXMgYSByZWNlaXZlciBvciB0 cmFuc21pdHRlci4KCj4gK1JlcXVpcmVkIHByb3BlcnRpZXM6Cj4gKwktIGNvbXBhdGlibGU6ICJ0 aSx0ZnA0MTAiCgpUaGUgZGV2aWNlIGlzIGFuIEkyQyBzbGF2ZSwgaXQgc2hvdWxkIGhhdmUgYSBy ZWcgcHJvcGVydHkuIEdpdmVuIHRoYXQgdGhlIGNoaXAgCmNhbiBiZSB1c2VkIHdpdGhvdXQgYmVp bmcgY29udHJvbGxlZCB0aHJvdWdoIEkyQywgdGhlIHJlZyBwcm9wZXJ0eSBzaG91bGQgYmUgCm9w dGlvbmFsLiBZb3Ugc2hvdWxkIGRvY3VtZW50IHRoaXMgY2xlYXJseSwgYW5kIGV4cGxhaW4gaG93 IHRoZSBEVCBub2RlIGNhbiBiZSAKaW5zdGFudGlhdGVkIGFzIGEgY2hpbGQgb2YgYW4gSTJDIGNv bnRyb2xsZXIgd2hlbiB0aGUgSTJDIGludGVyZmFjZSBpcyB1c2VkLCAKb3IgaW4gb3RoZXIgcGFy dHMgb2YgdGhlIGRldmljZSB0cmVlIG90aGVyd2lzZS4KCj4gK09wdGlvbmFsIHByb3BlcnRpZXM6 Cj4gKwktIGRkYy1pMmM6IHBoYW5kbGUgb2YgYW4gSTJDIGNvbnRyb2xsZXIgdXNlZCBmb3IgRERD IEVESUQgcHJvYmluZwoKVGhlIFRGUDQxMCBkb2Vzbid0IGhhbmRsZSBEREMsIHRoaXMgcHJvcGVy dHkgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIGNvbm5lY3RvciAKbm9kZS4KCj4gK09wdGlvbmFsIHN1 Ym5vZGVzOgo+ICsJLSB2aWRlbyBpbnB1dDogdGhpcyBzdWJub2RlIGNhbiBjb250YWluIGEgdmlk ZW8gaW5wdXQgcG9ydCBub2RlCj4gKwkgIHRvIGNvbm5lY3QgdGhlIGJyaWRnZSB0byBhIGRpc3Bs YXkgY29udHJvbGxlciBvdXRwdXQgKFNlZSB0aGlzCj4gKwkgIGRvY3VtZW50YXRpb24gWzFdKS4K CllvdSBhbHNvIG5lZWQgYW4gb3V0cHV0IHBvcnQgZm9yIHRoZSBEVkkgb3V0cHV0LiBUaG9zZSB0 d28gcG9ydHMgc2hvdWxkIGJlIApyZXF1aXJlZCwgbm90IG9wdGlvbmFsLgoKPiArWzFdOiBEb2N1 bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvdmlkZW8taW50ZXJmYWNlcy50eHQK PiArCj4gK0V4YW1wbGU6Cj4gKwloZG1pLWJyaWRnZSB7Cj4gKwkJY29tcGF0aWJsZSA9ICJ0aSx0 ZnA0MTAiOwo+ICsJCXBvcnRzIHsKPiArCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4gKwkJCSNz aXplLWNlbGxzID0gPDA+Owo+ICsKPiArCQkJcG9ydEAwIHsKPiArCQkJCXJlZyA9IDwwPjsKPiAr CQkJCWJyaWRnZV9pbjogZW5kcG9pbnQgewo+ICsJCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmZGNf b3V0PjsKPiArCQkJCX07Cj4gKwkJCX07Cj4gKwkJfTsKPiArCX07CgoKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9L Y29uZmlnCj4gaW5kZXggYmQ2YWNjOC4uYTQyNGUwMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL0tjb25maWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25m aWcKPiBAQCAtODEsNiArODEsMTMgQEAgY29uZmlnIERSTV9UT1NISUJBX1RDMzU4NzY3Cj4gIAkt LS1oZWxwLS0tCj4gIAkgIFRvc2hpYmEgVEMzNTg3NjcgZURQIGJyaWRnZSBjaGlwIGRyaXZlci4K PiAKPiArY29uZmlnIERSTV9USV9URlA0MTAKPiArCXRyaXN0YXRlICJUSSBURlA0MTAgRFZJL0hE TUkgYnJpZGdlIgo+ICsJZGVwZW5kcyBvbiBPRgo+ICsJc2VsZWN0IERSTV9LTVNfSEVMUEVSCj4g KwktLS1oZWxwLS0tCj4gKwkgIFRleGFzIEluc3RydW1lbnRzIFRGUDQxMCBEVkkvSERNSSBUcmFu c21pdHRlciBkcml2ZXIKPiArCj4gIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFs b2dpeC9LY29uZmlnIgo+IAo+ICBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUx MS9LY29uZmlnIgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxl Cj4gYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlIGluZGV4IDk3ZWQxYTUuLjhiMDY1 ZDkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZQo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKPiBAQCAtMTEsMyArMTEsNCBAQCBvYmot JChDT05GSUdfRFJNX1NJSTkwMlgpICs9IHNpaTkwMngubwo+ICBvYmotJChDT05GSUdfRFJNX1RP U0hJQkFfVEMzNTg3NjcpICs9IHRjMzU4NzY3Lm8KPiAgb2JqLSQoQ09ORklHX0RSTV9BTkFMT0dJ WF9EUCkgKz0gYW5hbG9naXgvCj4gIG9iai0kKENPTkZJR19EUk1fSTJDX0FEVjc1MTEpICs9IGFk djc1MTEvCj4gK29iai0kKENPTkZJR19EUk1fVElfVEZQNDEwKSArPSB0aS10ZnA0MTAubwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RpLXRmcDQxMC5jCj4gYi9kcml2ZXJz L2dwdS9kcm0vYnJpZGdlL3RpLXRmcDQxMC5jIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMC4uYjA3NTNkMgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v YnJpZGdlL3RpLXRmcDQxMC5jCj4gQEAgLTAsMCArMSwxOTkgQEAKPiArLyoKPiArICogQ29weXJp Z2h0IChDKSAyMDE2IFRleGFzIEluc3RydW1lbnRzCj4gKyAqIEF1dGhvcjogSnlyaSBTYXJoYSA8 anNhcmhhQHRpLmNvbT4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKPiArICogdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVi bGlzaGVkCj4gYnkgKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gKyAqCj4gKyAq Lwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2Zf Z3JhcGguaD4KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9hdG9taWNfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPiArI2luY2x1 ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KPiArCj4gK3N0cnVjdCB0ZnA0MTAgewo+ICsJc3Ry dWN0IGRybV9icmlkZ2UJYnJpZGdlOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3IJY29ubmVjdG9y Owo+ICsKPiArCXN0cnVjdCBpMmNfYWRhcHRlcgkqZGRjOwo+ICsKPiArCXN0cnVjdCBkZXZpY2Ug KmRldjsKPiArfTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHRmcDQxMCAqCj4gK2RybV9i cmlkZ2VfdG9fdGZwNDEwKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gK3sKPiArCXJldHVy biBjb250YWluZXJfb2YoYnJpZGdlLCBzdHJ1Y3QgdGZwNDEwLCBicmlkZ2UpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW5saW5lIHN0cnVjdCB0ZnA0MTAgKgo+ICtkcm1fY29ubmVjdG9yX3RvX3RmcDQx MChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlyZXR1cm4gY29udGFp bmVyX29mKGNvbm5lY3Rvciwgc3RydWN0IHRmcDQxMCwgY29ubmVjdG9yKTsKPiArfQo+ICsKPiAr c3RhdGljIGludCB0ZnA0MTBfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IpCj4gK3sKPiArCXN0cnVjdCB0ZnA0MTAgKmhkbWkgPSBkcm1fY29ubmVjdG9yX3RvX3RmcDQx MChjb25uZWN0b3IpOwo+ICsJc3RydWN0IGVkaWQgKmVkaWQ7Cj4gKwlpbnQgcmV0Owo+ICsKPiAr CWlmICghaGRtaS0+ZGRjKQo+ICsJCWdvdG8gZmFsbGJhY2s7Cj4gKwo+ICsJZWRpZCA9IGRybV9n ZXRfZWRpZChjb25uZWN0b3IsIGhkbWktPmRkYyk7Cj4gKwlpZiAoIWVkaWQpIHsKPiArCQlEUk1f SU5GTygiRURJRCByZWFkIGZhaWxlZC4gRmFsbGJhY2sgdG8gc3RhbmRhcmQgbW9kZXNcbiIpOwo+ ICsJCWdvdG8gZmFsbGJhY2s7Cj4gKwl9Cj4gKwo+ICsJZHJtX21vZGVfY29ubmVjdG9yX3VwZGF0 ZV9lZGlkX3Byb3BlcnR5KGNvbm5lY3RvciwgZWRpZCk7Cj4gKwo+ICsJcmV0dXJuIGRybV9hZGRf ZWRpZF9tb2Rlcyhjb25uZWN0b3IsIGVkaWQpOwo+ICtmYWxsYmFjazoKPiArCS8qIE5vIEVESUQs IGZhbGxiYWNrIG9uIHRoZSBYR0Egc3RhbmRhcmQgbW9kZXMgKi8KPiArCXJldCA9IGRybV9hZGRf bW9kZXNfbm9lZGlkKGNvbm5lY3RvciwgMTkyMCwgMTIwMCk7Cj4gKwo+ICsJLyogQW5kIHByZWZl ciBhIG1vZGUgcHJldHR5IG11Y2ggYW55dGhpbmcgY2FuIGhhbmRsZSAqLwo+ICsJZHJtX3NldF9w cmVmZXJyZWRfbW9kZShjb25uZWN0b3IsIDEwMjQsIDc2OCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsK PiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5j cyB0ZnA0MTBfY29uX2hlbHBlcl9mdW5jcyA9IHsKPiArCS5nZXRfbW9kZXMJPSB0ZnA0MTBfZ2V0 X21vZGVzLAo+ICt9Owo+ICsKPiArc3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMKPiAr dGZwNDEwX2Nvbm5lY3Rvcl9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwg Ym9vbCBmb3JjZSkKPiArewo+ICsJc3RydWN0IHRmcDQxMCAqaGRtaSA9IGRybV9jb25uZWN0b3Jf dG9fdGZwNDEwKGNvbm5lY3Rvcik7Cj4gKwo+ICsJaWYgKGhkbWktPmRkYykgewo+ICsJCWlmIChk cm1fcHJvYmVfZGRjKGhkbWktPmRkYykpCj4gKwkJCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Nv bm5lY3RlZDsKPiArCQllbHNlCj4gKwkJCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5l Y3RlZDsKPiArCX0KPiArCj4gKwlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c191bmtub3duOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3MgdGZwNDEwX2Nv bl9mdW5jcyA9IHsKPiArCS5kcG1zCQkJPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHBt cywKPiArCS5kZXRlY3QJCQk9IHRmcDQxMF9jb25uZWN0b3JfZGV0ZWN0LAo+ICsJLmZpbGxfbW9k ZXMJCT0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAo+ICsJLmRlc3Ry b3kJCT0gZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwLAo+ICsJLnJlc2V0CQkJPSBkcm1fYXRvbWljX2hl bHBlcl9jb25uZWN0b3JfcmVzZXQsCj4gKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZQk9IGRybV9h dG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUsCj4gKwkuYXRvbWljX2Rlc3Ry b3lfc3RhdGUJPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKPiAr fTsKPiArCj4gK3N0YXRpYyBpbnQgdGZwNDEwX2F0dGFjaChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlKQo+ICt7Cj4gKwlzdHJ1Y3QgdGZwNDEwICpoZG1pID0gZHJtX2JyaWRnZV90b190ZnA0MTAo YnJpZGdlKTsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKCFicmlkZ2UtPmVuY29kZXIpIHsKPiAr CQlkZXZfZXJyKGhkbWktPmRldiwgIk1pc3NpbmcgZW5jb2RlclxuIik7Cj4gKwkJcmV0dXJuIC1F Tk9ERVY7Cj4gKwl9Cj4gKwo+ICsJZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKCZoZG1pLT5jb25u ZWN0b3IsCj4gKwkJCQkgJnRmcDQxMF9jb25faGVscGVyX2Z1bmNzKTsKPiArCXJldCA9IGRybV9j b25uZWN0b3JfaW5pdChicmlkZ2UtPmRldiwgJmhkbWktPmNvbm5lY3RvciwKPiArCQkJCSAmdGZw NDEwX2Nvbl9mdW5jcywgRFJNX01PREVfQ09OTkVDVE9SX0hETUlBKTsKPiArCWlmIChyZXQpIHsK PiArCQlkZXZfZXJyKGhkbWktPmRldiwgImRybV9jb25uZWN0b3JfaW5pdCgpIGZhaWxlZDogJWRc biIsIHJldCk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlkcm1fbW9kZV9jb25uZWN0 b3JfYXR0YWNoX2VuY29kZXIoJmhkbWktPmNvbm5lY3RvciwKPiArCQkJCQkgIGJyaWRnZS0+ZW5j b2Rlcik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX2JyaWRnZV9mdW5jcyB0ZnA0MTBfYnJpZGdlX2Z1bmNzID0gewo+ICsJLmF0dGFjaAkJPSB0 ZnA0MTBfYXR0YWNoLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCB0ZnA0MTBfcHJvYmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsJc3RydWN0IGRldmljZV9ub2RlICpkZGNf cGhhbmRsZTsKPiArCXN0cnVjdCB0ZnA0MTAgKmhkbWk7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlm ICghcGRldi0+ZGV2Lm9mX25vZGUpIHsKPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJkZXZpY2Ut dHJlZSBkYXRhIGlzIG1pc3NpbmdcbiIpOwo+ICsJCXJldHVybiAtRU5YSU87Cj4gKwl9Cj4gKwo+ ICsJaGRtaSA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKmhkbWkpLCBHRlBfS0VS TkVMKTsKPiArCWlmICghaGRtaSkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCXBsYXRmb3JtX3Nl dF9kcnZkYXRhKHBkZXYsIGhkbWkpOwo+ICsKPiArCWRkY19waGFuZGxlID0gb2ZfcGFyc2VfcGhh bmRsZShwZGV2LT5kZXYub2Zfbm9kZSwgImRkYy1pMmMiLCAwKTsKPiArCWlmIChkZGNfcGhhbmRs ZSkgewo+ICsJCWhkbWktPmRkYyA9IG9mX2dldF9pMmNfYWRhcHRlcl9ieV9ub2RlKGRkY19waGFu ZGxlKTsKPiArCQlvZl9ub2RlX3B1dChkZGNfcGhhbmRsZSk7Cj4gKwkJaWYgKCFoZG1pLT5kZGMp Cj4gKwkJCXJldHVybiAtRVBST0JFX0RFRkVSOwo+ICsJfSBlbHNlIHsKPiArCQlkZXZfaW5mbygm cGRldi0+ZGV2LAo+ICsJCQkgIk5vIGRkYyBpMmMgYnVzLCBkaXNhYmxpbmcgRURJRCByZWFkb3V0 XG4iKTsKPiArCX0KPiArCj4gKwloZG1pLT5icmlkZ2UuZnVuY3MgPSAmdGZwNDEwX2JyaWRnZV9m dW5jczsKPiArCWhkbWktPmJyaWRnZS5vZl9ub2RlID0gcGRldi0+ZGV2Lm9mX25vZGU7Cj4gKwlo ZG1pLT5kZXYgPSAmcGRldi0+ZGV2Owo+ICsKPiArCXJldCA9IGRybV9icmlkZ2VfYWRkKCZoZG1p LT5icmlkZ2UpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgImRybV9i cmlkZ2VfYWRkKCkgZmFpbGVkOiAlZFxuIiwgcmV0KTsKPiArCQlnb3RvIGZhaWw7Cj4gKwl9Cj4g Kwo+ICsJcmV0dXJuIDA7Cj4gK2ZhaWw6Cj4gKwlpMmNfcHV0X2FkYXB0ZXIoaGRtaS0+ZGRjKTsK PiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdGZwNDEwX3JlbW92ZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgdGZwNDEwICpoZG1pID0g cGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4gKwo+ICsJZHJtX2JyaWRnZV9yZW1vdmUoJmhk bWktPmJyaWRnZSk7Cj4gKwo+ICsJaWYgKGhkbWktPmRkYykKPiArCQlpMmNfcHV0X2FkYXB0ZXIo aGRtaS0+ZGRjKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBvZl9kZXZpY2VfaWQgdGZwNDEwX21hdGNoW10gPSB7Cj4gKwl7IC5jb21wYXRpYmxlID0g InRpLHRmcDQxMCIgfSwKPiArCXt9LAo+ICt9Owo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB0 ZnA0MTBfbWF0Y2gpOwo+ICsKPiArc3RydWN0IHBsYXRmb3JtX2RyaXZlciB0ZnA0MTBfZHJpdmVy ID0gewo+ICsJLnByb2JlCT0gdGZwNDEwX3Byb2JlLAo+ICsJLnJlbW92ZQk9IHRmcDQxMF9yZW1v dmUsCj4gKwkuZHJpdmVyCT0gewo+ICsJCS5uYW1lCQk9ICJ0ZnA0MTAtYnJpZGdlIiwKPiArCQku b2ZfbWF0Y2hfdGFibGUJPSB0ZnA0MTBfbWF0Y2gsCj4gKwl9LAo+ICt9Owo+ICttb2R1bGVfcGxh dGZvcm1fZHJpdmVyKHRmcDQxMF9kcml2ZXIpOwo+ICsKPiArTU9EVUxFX0FVVEhPUigiSnlyaSBT YXJoYSA8anNhcmhhQHRpLmNvbT4iKTsKPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJUSSBURlA0MTAg SERNSSBicmlkZ2UgZHJpdmVyIik7Cj4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKCi0tIApSZWdh cmRzLAoKTGF1cmVudCBQaW5jaGFydAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVsCg==