From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jyri Sarha Subject: Re: [PATCH v3 2/3] drm/bridge: Add ti-tfp410 DVI transmitter driver Date: Thu, 17 Nov 2016 15:39:26 +0200 Message-ID: <5969991d-c4cd-4ac5-9025-dfcd2b6b914d@ti.com> References: <6eaa1b5d467cd354f7d5dc5ff8da1b9bf732ff11.1479388871.git.jsarha@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <6eaa1b5d467cd354f7d5dc5ff8da1b9bf732ff11.1479388871.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: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org Cc: bcousson@baylibre.com, khilman@baylibre.com, bgolaszewski@baylibre.com, tomi.valkeinen@ti.com, laurent.pinchart@ideasonboard.com List-Id: devicetree@vger.kernel.org T24gMTEvMTcvMTYgMTU6MjgsIEp5cmkgU2FyaGEgd3JvdGU6Cj4gQWRkIHZlcnkgYmFzaWMgdGkt ZnRwNDEwIERWSSB0cmFuc21pdHRlciBkcml2ZXIuIFRoZSBvbmx5IGZlYXR1cmUKPiBzZXBhcmF0 aW5nIHRoaXMgZnJvbSBhIGNvbXBsZXRlbHkgZHVtbXkgYnJpZGdlIGlzIHRoZSBFRElEIHJlYWQK PiBzdXBwb3J0IHRyb3VnaCBEREMgSTJDLiBFdmVuIHRoYXQgZnVuY3Rpb25hbGl0eSBzaG91bGQg YmUgaW4gYQo+IHNlcGFyYXRlIGdlbmVyaWMgY29ubmVjdG9yIGRyaXZlci4gSG93ZXZlciwgYmVj YXVzZSBvZiBtaXNzaW5nIERSTQo+IGluZnJhc3RydWN0dXJlIHN1cHBvcnQgdGhlIGNvbm5lY3Rv ciBpcyBpbXBsZW1lbnRlZCB3aXRoaW4gdGhlIGJyaWRnZQo+IGRyaXZlci4gU29tZSB0ZnA0MTAg SFcgc3BlY2lmaWMgZmVhdHVyZXMgbWF5IGJlIGFkZGVkIGxhdGVyIGlmIG5lZWRlZCwKPiBiZWNh dXNlIHRoZXJlIGlzIGEgc2V0IG9mIHJlZ2lzdGVycyBiZWhpbmQgaTJjIGlmIGl0IGlzIGNvbm5l Y3RlZC4KPiAKPiBUaGlzIGltcGxlbWVudGF0aW9uIGlzIHRlc3RlZCBhZ2FpbnN0IG15IG5ldyB0 aWxjZGMgYnJpZGdlIHN1cHBvcnQKPiBhbmQgaXQgd29ya3Mgd2l0aCBCZWFnbGVCb25lIERWSS1E IENhcGUgUmV2IEEzLiBBIERUIGJpbmRpbmcgZG9jdW1lbnQKPiBpcyBhbHNvIGFkZGVkLgo+IAo+ IFNpZ25lZC1vZmYtYnk6IEp5cmkgU2FyaGEgPGpzYXJoYUB0aS5jb20+Cj4gLS0tCj4gIC4uLi9i aW5kaW5ncy9kaXNwbGF5L2JyaWRnZS90aSx0ZnA0MTAudHh0ICAgICAgICAgIHwgIDQwICsrKwo+ ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcgICAgICAgICAgICAgICAgICAgICB8ICAg NyArCj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAg IHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90aS10ZnA0MTAuYyAgICAgICAgICAg ICAgICAgfCAyODcgKysrKysrKysrKysrKysrKysrKysrCj4gIDQgZmlsZXMgY2hhbmdlZCwgMzM1 IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vZGV2aWNl dHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS90aSx0ZnA0MTAudHh0Cj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RpLXRmcDQxMC5jCj4gCj4gZGlmZiAtLWdp dCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS90aSx0 ZnA0MTAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYnJp ZGdlL3RpLHRmcDQxMC50eHQKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAu LjYxNzRiMTgKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl L2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL3RpLHRmcDQxMC50eHQKPiBAQCAtMCwwICsxLDQwIEBA Cj4gK1RGUDQxMCBEVkkgYnJpZGdlIGJpbmRpbmdzCj4gKwo+ICtSZXF1aXJlZCBwcm9wZXJ0aWVz Ogo+ICsJLSBjb21wYXRpYmxlOiAidGksdGZwNDEwIgo+ICsKPiArT3B0aW9uYWwgcHJvcGVydGll cwo+ICsJLSByZWc6IEkyQyBhZGRyZXNzLiBJZiBhbmQgb25seSBpZiBwcmVzZW50IHRoZSBkZXZp Y2Ugbm9kZQo+ICsJICBzaG91bGQgYmUgcGxhY2VkIGludG8gdGhlIGkyYyBjb250cm9sbGVyIG5v ZGUgd2hlcmUgdGhlCj4gKwkgIHRmcDQxMCBpMmMgaXMgY29ubmVjdGVkIHRvLgo+ICsKPiArUmVx dWlyZWQgc3Vibm9kZXM6Cj4gKwktIHBvcnRAMDogVmlkZW8gaW5wdXQgcG9ydCBub2RlIHRvIGNv bm5lY3QgdGhlIGJyaWRnZSB0byBhCj4gKwkgIGRpc3BsYXkgY29udHJvbGxlciBvdXRwdXQgWzFd Lgo+ICsJLSBwb3J0QDE6IFZpZGVvIG91dHB1dCBwb3J0IG5vZGUgdG8gY29ubmVjdCB0aGUgYnJp ZGdlIHRvIGEKPiArCSAgY29ubmVjdG9yIGlucHV0IFsxXS4KPiArCj4gK1sxXTogRG9jdW1lbnRh dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3ZpZGVvLWludGVyZmFjZXMudHh0Cj4gKwo+ ICtFeGFtcGxlOgo+ICsJaGRtaS1icmlkZ2Ugewo+ICsJCWNvbXBhdGlibGUgPSAidGksdGZwNDEw IjsKPiArCQlwb3J0cyB7Cj4gKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ICsJCQkjc2l6ZS1j ZWxscyA9IDwwPjsKPiArCj4gKwkJCXBvcnRAMCB7Cj4gKwkJCQlyZWcgPSA8MD47Cj4gKwkJCQli cmlkZ2VfaW46IGVuZHBvaW50IHsKPiArCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmRjX291dD47 Cj4gKwkJCQl9Owo+ICsJCQl9Owo+ICsKPiArCQkJcG9ydEAxIHsKPiArCQkJCXJlZyA9IDwxPjsK PiArCQkJCWJyaWRnZV9vdXQ6IGVuZHBvaW50IHsKPiArCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8 JmhkbWlfaW4+Owo+ICsJCQkJfTsKPiArCQkJfTsKPiArCQl9Owo+ICsJfTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRn ZS9LY29uZmlnCj4gaW5kZXggYmQ2YWNjOC4uYTQyNGUwMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vYnJpZGdlL0tjb25maWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tj b25maWcKPiBAQCAtODEsNiArODEsMTMgQEAgY29uZmlnIERSTV9UT1NISUJBX1RDMzU4NzY3Cj4g IAktLS1oZWxwLS0tCj4gIAkgIFRvc2hpYmEgVEMzNTg3NjcgZURQIGJyaWRnZSBjaGlwIGRyaXZl ci4KPiAgCj4gK2NvbmZpZyBEUk1fVElfVEZQNDEwCj4gKwl0cmlzdGF0ZSAiVEkgVEZQNDEwIERW SS9IRE1JIGJyaWRnZSIKPiArCWRlcGVuZHMgb24gT0YKPiArCXNlbGVjdCBEUk1fS01TX0hFTFBF Ugo+ICsJLS0taGVscC0tLQo+ICsJICBUZXhhcyBJbnN0cnVtZW50cyBURlA0MTAgRFZJL0hETUkg VHJhbnNtaXR0ZXIgZHJpdmVyCj4gKwo+ICBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uv YW5hbG9naXgvS2NvbmZpZyIKPiAgCj4gIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9h ZHY3NTExL0tjb25maWciCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFr ZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlCj4gaW5kZXggOTdlZDFhNS4u OGIwNjVkOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZQo+IEBAIC0xMSwzICsxMSw0IEBA IG9iai0kKENPTkZJR19EUk1fU0lJOTAyWCkgKz0gc2lpOTAyeC5vCj4gIG9iai0kKENPTkZJR19E Uk1fVE9TSElCQV9UQzM1ODc2NykgKz0gdGMzNTg3Njcubwo+ICBvYmotJChDT05GSUdfRFJNX0FO QUxPR0lYX0RQKSArPSBhbmFsb2dpeC8KPiAgb2JqLSQoQ09ORklHX0RSTV9JMkNfQURWNzUxMSkg Kz0gYWR2NzUxMS8KPiArb2JqLSQoQ09ORklHX0RSTV9USV9URlA0MTApICs9IHRpLXRmcDQxMC5v Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvdGktdGZwNDEwLmMgYi9kcml2 ZXJzL2dwdS9kcm0vYnJpZGdlL3RpLXRmcDQxMC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp bmRleCAwMDAwMDAwLi42NGY1NGU0Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9icmlkZ2UvdGktdGZwNDEwLmMKPiBAQCAtMCwwICsxLDI4NyBAQAo+ICsvKgo+ICsgKiBD b3B5cmlnaHQgKEMpIDIwMTYgVGV4YXMgSW5zdHJ1bWVudHMKPiArICogQXV0aG9yOiBKeXJpIFNh cmhhIDxqc2FyaGFAdGkuY29tPgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAo+ICsgKiB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBh cyBwdWJsaXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoK PiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC9vZl9ncmFwaC5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9pMmMuaD4KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICsjaW5j bHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMu aD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KPiArCj4gK3N0cnVjdCB0ZnA0 MTAgewo+ICsJc3RydWN0IGRybV9icmlkZ2UJYnJpZGdlOwo+ICsJc3RydWN0IGRybV9jb25uZWN0 b3IJY29ubmVjdG9yOwo+ICsKPiArCXN0cnVjdCBpMmNfYWRhcHRlcgkqZGRjOwo+ICsKPiArCXN0 cnVjdCBkZXZpY2UgKmRldjsKPiArfTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHRmcDQx MCAqCj4gK2RybV9icmlkZ2VfdG9fdGZwNDEwKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4g K3sKPiArCXJldHVybiBjb250YWluZXJfb2YoYnJpZGdlLCBzdHJ1Y3QgdGZwNDEwLCBicmlkZ2Up Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCB0ZnA0MTAgKgo+ICtkcm1fY29ubmVj dG9yX3RvX3RmcDQxMChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwly ZXR1cm4gY29udGFpbmVyX29mKGNvbm5lY3Rvciwgc3RydWN0IHRmcDQxMCwgY29ubmVjdG9yKTsK PiArfQo+ICsKPiArc3RhdGljIGludCB0ZnA0MTBfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXN0cnVjdCB0ZnA0MTAgKmR2aSA9IGRybV9jb25uZWN0 b3JfdG9fdGZwNDEwKGNvbm5lY3Rvcik7Cj4gKwlzdHJ1Y3QgZWRpZCAqZWRpZDsKPiArCWludCBy ZXQ7Cj4gKwo+ICsJaWYgKCFkdmktPmRkYykKPiArCQlnb3RvIGZhbGxiYWNrOwo+ICsKPiArCWVk aWQgPSBkcm1fZ2V0X2VkaWQoY29ubmVjdG9yLCBkdmktPmRkYyk7Cj4gKwlpZiAoIWVkaWQpIHsK PiArCQlEUk1fSU5GTygiRURJRCByZWFkIGZhaWxlZC4gRmFsbGJhY2sgdG8gc3RhbmRhcmQgbW9k ZXNcbiIpOwo+ICsJCWdvdG8gZmFsbGJhY2s7Cj4gKwl9Cj4gKwo+ICsJZHJtX21vZGVfY29ubmVj dG9yX3VwZGF0ZV9lZGlkX3Byb3BlcnR5KGNvbm5lY3RvciwgZWRpZCk7Cj4gKwo+ICsJcmV0dXJu IGRybV9hZGRfZWRpZF9tb2Rlcyhjb25uZWN0b3IsIGVkaWQpOwo+ICtmYWxsYmFjazoKPiArCS8q IE5vIEVESUQsIGZhbGxiYWNrIG9uIHRoZSBYR0Egc3RhbmRhcmQgbW9kZXMgKi8KPiArCXJldCA9 IGRybV9hZGRfbW9kZXNfbm9lZGlkKGNvbm5lY3RvciwgMTkyMCwgMTIwMCk7Cj4gKwo+ICsJLyog QW5kIHByZWZlciBhIG1vZGUgcHJldHR5IG11Y2ggYW55dGhpbmcgY2FuIGhhbmRsZSAqLwo+ICsJ ZHJtX3NldF9wcmVmZXJyZWRfbW9kZShjb25uZWN0b3IsIDEwMjQsIDc2OCk7Cj4gKwo+ICsJcmV0 dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hl bHBlcl9mdW5jcyB0ZnA0MTBfY29uX2hlbHBlcl9mdW5jcyA9IHsKPiArCS5nZXRfbW9kZXMJPSB0 ZnA0MTBfZ2V0X21vZGVzLAo+ICt9Owo+ICsKPiArc3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9z dGF0dXMKPiArdGZwNDEwX2Nvbm5lY3Rvcl9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvciwgYm9vbCBmb3JjZSkKPiArewo+ICsJc3RydWN0IHRmcDQxMCAqZHZpID0gZHJtX2Nv bm5lY3Rvcl90b190ZnA0MTAoY29ubmVjdG9yKTsKPiArCj4gKwlpZiAoZHZpLT5kZGMpIHsKPiAr CQlpZiAoZHJtX3Byb2JlX2RkYyhkdmktPmRkYykpCj4gKwkJCXJldHVybiBjb25uZWN0b3Jfc3Rh dHVzX2Nvbm5lY3RlZDsKPiArCQllbHNlCj4gKwkJCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Rp c2Nvbm5lY3RlZDsKPiArCX0KPiArCj4gKwlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c191bmtub3du Owo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3MgdGZw NDEwX2Nvbl9mdW5jcyA9IHsKPiArCS5kcG1zCQkJPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0 b3JfZHBtcywKPiArCS5kZXRlY3QJCQk9IHRmcDQxMF9jb25uZWN0b3JfZGV0ZWN0LAo+ICsJLmZp bGxfbW9kZXMJCT0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAo+ICsJ LmRlc3Ryb3kJCT0gZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwLAo+ICsJLnJlc2V0CQkJPSBkcm1fYXRv bWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQsCj4gKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZQk9 IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUsCj4gKwkuYXRvbWlj X2Rlc3Ryb3lfc3RhdGUJPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0 ZSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgdGZwNDEwX2F0dGFjaChzdHJ1Y3QgZHJtX2JyaWRn ZSAqYnJpZGdlKQo+ICt7Cj4gKwlzdHJ1Y3QgdGZwNDEwICpkdmkgPSBkcm1fYnJpZGdlX3RvX3Rm cDQxMChicmlkZ2UpOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoIWJyaWRnZS0+ZW5jb2Rlcikg ewo+ICsJCWRldl9lcnIoZHZpLT5kZXYsICJNaXNzaW5nIGVuY29kZXJcbiIpOwo+ICsJCXJldHVy biAtRU5PREVWOwo+ICsJfQo+ICsKPiArCWRybV9jb25uZWN0b3JfaGVscGVyX2FkZCgmZHZpLT5j b25uZWN0b3IsCj4gKwkJCQkgJnRmcDQxMF9jb25faGVscGVyX2Z1bmNzKTsKPiArCXJldCA9IGRy bV9jb25uZWN0b3JfaW5pdChicmlkZ2UtPmRldiwgJmR2aS0+Y29ubmVjdG9yLAo+ICsJCQkJICZ0 ZnA0MTBfY29uX2Z1bmNzLCBEUk1fTU9ERV9DT05ORUNUT1JfSERNSUEpOwo+ICsJaWYgKHJldCkg ewo+ICsJCWRldl9lcnIoZHZpLT5kZXYsICJkcm1fY29ubmVjdG9yX2luaXQoKSBmYWlsZWQ6ICVk XG4iLCByZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJZHJtX21vZGVfY29ubmVj dG9yX2F0dGFjaF9lbmNvZGVyKCZkdmktPmNvbm5lY3RvciwKPiArCQkJCQkgIGJyaWRnZS0+ZW5j b2Rlcik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX2JyaWRnZV9mdW5jcyB0ZnA0MTBfYnJpZGdlX2Z1bmNzID0gewo+ICsJLmF0dGFjaAkJPSB0 ZnA0MTBfYXR0YWNoLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCB0ZnA0MTBfZ2V0X2Nvbm5lY3Rv cl9kZGMoc3RydWN0IHRmcDQxMCAqZHZpKQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKmVw ID0gTlVMTCwgKmNvbm5lY3Rvcl9ub2RlID0gTlVMTDsKPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAq ZGRjX3BoYW5kbGUgPSBOVUxMOwo+ICsJaW50IHJldCA9IDA7Cj4gKwo+ICsJLyogcG9ydEAxIGlz IHRoZSBjb25uZWN0b3Igbm9kZSAqLwo+ICsJZXAgPSBvZl9ncmFwaF9nZXRfZW5kcG9pbnRfYnlf cmVncyhkdmktPmRldi0+b2Zfbm9kZSwgMSwgLTEpOwo+ICsJaWYgKCFlcCkKPiArCQlnb3RvIGZh aWw7Cj4gKwo+ICsJY29ubmVjdG9yX25vZGUgPSBvZl9ncmFwaF9nZXRfcmVtb3RlX3BvcnRfcGFy ZW50KGVwKTsKPiArCWlmICghY29ubmVjdG9yX25vZGUpCj4gKwkJZ290byBmYWlsOwo+ICsKPiAr CWRkY19waGFuZGxlID0gb2ZfcGFyc2VfcGhhbmRsZShjb25uZWN0b3Jfbm9kZSwgImRkYy1pMmMt YnVzIiwgMCk7Cj4gKwlpZiAoIWRkY19waGFuZGxlKQo+ICsJCWdvdG8gZmFpbDsKPiArCj4gKwlk dmktPmRkYyA9IG9mX2dldF9pMmNfYWRhcHRlcl9ieV9ub2RlKGRkY19waGFuZGxlKTsKPiArCWlm IChkdmktPmRkYykKPiArCQlkZXZfaW5mbyhkdmktPmRldiwgIkNvbm5lY3RvcidzIGRkYyBpMmMg YnVzIGZvdW5kXG4iKTsKPiArCWVsc2UKPiArCQlyZXQgPSAtRVBST0JFX0RFRkVSOwo+ICsKPiAr ZmFpbDoKPiArCW9mX25vZGVfcHV0KGVwKTsKPiArCW9mX25vZGVfcHV0KGNvbm5lY3Rvcl9ub2Rl KTsKPiArCW9mX25vZGVfcHV0KGRkY19waGFuZGxlKTsKPiArCXJldHVybiByZXQ7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQgdGZwNDEwX2luaXQoc3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKwlz dHJ1Y3QgdGZwNDEwICpkdmk7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmICghZGV2LT5vZl9ub2Rl KSB7Cj4gKwkJZGV2X2VycihkZXYsICJkZXZpY2UtdHJlZSBkYXRhIGlzIG1pc3NpbmdcbiIpOwo+ ICsJCXJldHVybiAtRU5YSU87Cj4gKwl9Cj4gKwo+ICsJZHZpID0gZGV2bV9remFsbG9jKGRldiwg c2l6ZW9mKCpkdmkpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghZHZpKQo+ICsJCXJldHVybiAtRU5P TUVNOwo+ICsJZGV2X3NldF9kcnZkYXRhKGRldiwgZHZpKTsKPiArCj4gKwlkdmktPmJyaWRnZS5m dW5jcyA9ICZ0ZnA0MTBfYnJpZGdlX2Z1bmNzOwo+ICsJZHZpLT5icmlkZ2Uub2Zfbm9kZSA9IGRl di0+b2Zfbm9kZTsKPiArCWR2aS0+ZGV2ID0gZGV2Owo+ICsKPiArCXJldCA9IHRmcDQxMF9nZXRf Y29ubmVjdG9yX2RkYyhkdmkpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGZhaWw7Cj4gKwo+ICsJ cmV0ID0gZHJtX2JyaWRnZV9hZGQoJmR2aS0+YnJpZGdlKTsKPiArCWlmIChyZXQpIHsKPiArCQlk ZXZfZXJyKGRldiwgImRybV9icmlkZ2VfYWRkKCkgZmFpbGVkOiAlZFxuIiwgcmV0KTsKPiArCQln b3RvIGZhaWw7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK2ZhaWw6Cj4gKwlpMmNfcHV0X2Fk YXB0ZXIoZHZpLT5kZGMpOwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCB0 ZnA0MTBfZmluaShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCB0ZnA0MTAgKmR2 aSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsKPiArCWRybV9icmlkZ2VfcmVtb3ZlKCZkdmkt PmJyaWRnZSk7Cj4gKwo+ICsJaWYgKGR2aS0+ZGRjKQo+ICsJCWkyY19wdXRfYWRhcHRlcihkdmkt PmRkYyk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdGZwNDEwX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiArCXJldHVybiB0ZnA0MTBf aW5pdCgmcGRldi0+ZGV2KTsKPiArfQo+ICsKPiArc3RhdGljIGludCB0ZnA0MTBfcmVtb3ZlKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiArCXJldHVybiB0ZnA0MTBfZmluaSgm cGRldi0+ZGV2KTsKPiArfQo+ICsKPiArLyogVGhlcmUgaXMgY3VycmVudGx5IG5vIGkyYyBmdW5j dGlvbmFsaXR5LiAqLwo+ICtzdGF0aWMgaW50IHRmcDQxMF9pMmNfcHJvYmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCwKPiArCQkJICAgIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCkK PiArewo+ICsJaW50IHJlZzsKPiArCj4gKwlpZiAoIWNsaWVudC0+ZGV2Lm9mX25vZGUgfHwKPiAr CSAgICBvZl9wcm9wZXJ0eV9yZWFkX3UzMihjbGllbnQtPmRldi5vZl9ub2RlLCAicmVnIiwgJnJl ZykpIHsKPiArCQlkZXZfZXJyKCZjbGllbnQtPmRldiwKPiArCQkJIkNhbid0IGdldCBpMmMgcmVn IHByb3BlcnR5IGZyb20gZGV2aWNlLXRyZWVcbiIpOwo+ICsJCXJldHVybiAtRU5YSU87Cj4gKwl9 Cj4gKwo+ICsJcmV0dXJuIHRmcDQxMF9pbml0KCZjbGllbnQtPmRldik7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgdGZwNDEwX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiAr ewo+ICsJcmV0dXJuIHRmcDQxMF9maW5pKCZjbGllbnQtPmRldik7Cj4gK30KPiArCj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHRmcDQxMF9tYXRjaFtdID0gewo+ICsJeyAuY29t cGF0aWJsZSA9ICJ0aSx0ZnA0MTAiIH0sCj4gKwl7fSwKPiArfTsKPiArTU9EVUxFX0RFVklDRV9U QUJMRShvZiwgdGZwNDEwX21hdGNoKTsKPiArCj4gK3N0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgdGZw NDEwX3BsYXRmb3JtX2RyaXZlciA9IHsKPiArCS5wcm9iZQk9IHRmcDQxMF9wcm9iZSwKPiArCS5y ZW1vdmUJPSB0ZnA0MTBfcmVtb3ZlLAo+ICsJLmRyaXZlcgk9IHsKPiArCQkubmFtZQkJPSAidGZw NDEwLWJyaWRnZSIsCj4gKwkJLm9mX21hdGNoX3RhYmxlCT0gdGZwNDEwX21hdGNoLAo+ICsJfSwK PiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCB0ZnA0MTBfaTJj X2lkc1tdID0gewo+ICsJeyAidGZwNDEwIiwgMCB9LAo+ICsJeyB9Cj4gK307Cj4gK01PRFVMRV9E RVZJQ0VfVEFCTEUoaTJjLCB0ZnA0MTBfaTJjX2lkcyk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGky Y19kcml2ZXIgdGZwNDEwX2kyY19kcml2ZXIgPSB7Cj4gKwkuZHJpdmVyID0gewo+ICsJCS5uYW1l CT0gInRmcDQxMCIsCj4gKwkJLm9mX21hdGNoX3RhYmxlID0gb2ZfbWF0Y2hfcHRyKHRmcDQxMF9t YXRjaCksCj4gKwl9LAo+ICsJLmlkX3RhYmxlCT0gdGZwNDEwX2kyY19pZHMsCj4gKwkucHJvYmUJ CT0gdGZwNDEwX2kyY19wcm9iZSwKPiArCS5yZW1vdmUJCT0gdGZwNDEwX2kyY19yZW1vdmUsCj4g K307Cj4gKwo+ICtzdGF0aWMgaW50IF9faW5pdCB0ZnA0MTBfbW9kdWxlX2luaXQodm9pZCkKPiAr ewo+ICsJaTJjX2FkZF9kcml2ZXIoJnRmcDQxMF9pMmNfZHJpdmVyKTsKPiArCXBsYXRmb3JtX2Ry aXZlcl9yZWdpc3RlcigmdGZwNDEwX3BsYXRmb3JtX2RyaXZlcik7CgpPb3BzLCBmb3Jnb3QgdG8g aGFuZGxlIHRoZSByZXR1cm4gdmFsdWVzLiBUaGlzIGlzIGhvdyBJIGZpeGVkIGl0OgpzdGF0aWMg aW50IF9faW5pdCB0ZnA0MTBfbW9kdWxlX2luaXQodm9pZCkKewoJaW50IHJldDsKCglyZXQgPSBp MmNfYWRkX2RyaXZlcigmdGZwNDEwX2kyY19kcml2ZXIpOwoJaWYgKHJldCkKCQlyZXR1cm4gcmV0 OwoKCXJldCA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmdGZwNDEwX3BsYXRmb3JtX2RyaXZl cik7CglpZiAocmV0KQoJCWkyY19kZWxfZHJpdmVyKCZ0ZnA0MTBfaTJjX2RyaXZlcik7CgkKCXJl dHVybiByZXQ7Cn0KCj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArbW9kdWxlX2luaXQodGZwNDEw X21vZHVsZV9pbml0KTsKPiArCj4gK3N0YXRpYyB2b2lkIF9fZXhpdCB0ZnA0MTBfbW9kdWxlX2V4 aXQodm9pZCkKPiArewo+ICsJaTJjX2RlbF9kcml2ZXIoJnRmcDQxMF9pMmNfZHJpdmVyKTsKPiAr CXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZ0ZnA0MTBfcGxhdGZvcm1fZHJpdmVyKTsKPiAr fQo+ICttb2R1bGVfZXhpdCh0ZnA0MTBfbW9kdWxlX2V4aXQpOwo+ICsKPiArTU9EVUxFX0FVVEhP UigiSnlyaSBTYXJoYSA8anNhcmhhQHRpLmNvbT4iKTsKPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJU SSBURlA0MTAgRFZJIGJyaWRnZSBkcml2ZXIiKTsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwo+ IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==