From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jyri Sarha Subject: Re: [v3,2/3] drm/bridge: Add ti-tfp410 DVI transmitter driver Date: Fri, 18 Nov 2016 23:33:35 +0200 Message-ID: References: <6eaa1b5d467cd354f7d5dc5ff8da1b9bf732ff11.1479388871.git.jsarha@ti.com> <09499db556b444f9aa88aadf0cae4f2d@rwthex-s1-b.rwth-ad.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <09499db556b444f9aa88aadf0cae4f2d@rwthex-s1-b.rwth-ad.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Christopher Spinrath , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org Cc: khilman@baylibre.com, tomi.valkeinen@ti.com, laurent.pinchart@ideasonboard.com, bcousson@baylibre.com, bgolaszewski@baylibre.com List-Id: devicetree@vger.kernel.org T24gMTEvMTgvMTYgMDc6MDAsIENocmlzdG9waGVyIFNwaW5yYXRoIHdyb3RlOgo+IEhpIEp5cmks Cj4gCj4gT24gMTEvMTcvMjAxNiAwMjoyOCBQTSwgSnlyaSBTYXJoYSB3cm90ZToKPj4gQWRkIHZl cnkgYmFzaWMgdGktZnRwNDEwIERWSSB0cmFuc21pdHRlciBkcml2ZXIuIFRoZSBvbmx5IGZlYXR1 cmUKPiAKPiBzL2Z0cC90ZnAgPwo+IAoKTXkgZmluZ2VycyBqdXN0IHdhbnQgdHlwZSB0aGVzZSB0 aHJlZSBsZXR0ZXIgaXMgdGhhdCBvcmRlciwgd29uZGVyIHdoeSA6KS4KCj4+IHNlcGFyYXRpbmcg dGhpcyBmcm9tIGEgY29tcGxldGVseSBkdW1teSBicmlkZ2UgaXMgdGhlIEVESUQgcmVhZAo+PiBz dXBwb3J0IHRyb3VnaCBEREMgSTJDLiBFdmVuIHRoYXQgZnVuY3Rpb25hbGl0eSBzaG91bGQgYmUg aW4gYQo+PiBzZXBhcmF0ZSBnZW5lcmljIGNvbm5lY3RvciBkcml2ZXIuIEhvd2V2ZXIsIGJlY2F1 c2Ugb2YgbWlzc2luZyBEUk0KPj4gaW5mcmFzdHJ1Y3R1cmUgc3VwcG9ydCB0aGUgY29ubmVjdG9y IGlzIGltcGxlbWVudGVkIHdpdGhpbiB0aGUgYnJpZGdlCj4+IGRyaXZlci4gU29tZSB0ZnA0MTAg SFcgc3BlY2lmaWMgZmVhdHVyZXMgbWF5IGJlIGFkZGVkIGxhdGVyIGlmIG5lZWRlZCwKPj4gYmVj YXVzZSB0aGVyZSBpcyBhIHNldCBvZiByZWdpc3RlcnMgYmVoaW5kIGkyYyBpZiBpdCBpcyBjb25u ZWN0ZWQuCj4+Cj4+IFRoaXMgaW1wbGVtZW50YXRpb24gaXMgdGVzdGVkIGFnYWluc3QgbXkgbmV3 IHRpbGNkYyBicmlkZ2Ugc3VwcG9ydAo+PiBhbmQgaXQgd29ya3Mgd2l0aCBCZWFnbGVCb25lIERW SS1EIENhcGUgUmV2IEEzLiBBIERUIGJpbmRpbmcgZG9jdW1lbnQKPj4gaXMgYWxzbyBhZGRlZC4K Pj4KPj4gU2lnbmVkLW9mZi1ieTogSnlyaSBTYXJoYSA8anNhcmhhQHRpLmNvbT4KPiAKPiBUaGFu a3MgZm9yIHdvcmtpbmcgb24gdGhpcy4gSSBoYXZlIHRlc3RlZCB0aGUgZHJpdmVyIG9uIG15IFV0 aWxpdGUgUHJvCj4gd2hpY2ggaXMgYmFzZWQgb24gdGhlIGlteDZxIFNvQyBhbmQgaGFzIGEgdGZw NDEwIGNoaXAgaG9va2VkIHVwIHRvIGl0cwo+IHBhcmFsbGVsIHJnYjI0IGludGVyZmFjZS4gU28g eW91IGNhbiBhZGQgbXkKPiAKPiBUZXN0ZWQtQnk6IENocmlzdG9waGVyIFNwaW5yYXRoIDxjaHJp c3RvcGhlci5zcGlucmF0aEByd3RoLWFhY2hlbi5kZT4KPiAKClRoYW5rcywgSSdsbCBhZGRyZXNz IHRoZXNlIGNvbW1lbnRzIGFuZCByZXNlbmQgdGhlIGNvcnJlY3RlZCBwYXRjaGVzCmJlZm9yZSBz ZW5kaW5nIGEgcHVsbCByZXF1ZXN0LgoKPiBIb3dldmVyLCBJIGhhdmUgdHdvIG1vcmUgY29tbWVu dHMgYmVsb3cuCj4gCj4+IC0tLQo+PiAgLi4uL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL3RpLHRm cDQxMC50eHQgICAgICAgICAgfCAgNDAgKysrCj4+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tj b25maWcgICAgICAgICAgICAgICAgICAgICB8ICAgNyArCj4+ICBkcml2ZXJzL2dwdS9kcm0vYnJp ZGdlL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICB8ICAgMSArCj4+ICBkcml2ZXJzL2dwdS9k cm0vYnJpZGdlL3RpLXRmcDQxMC5jICAgICAgICAgICAgICAgICB8IDI4NyArKysrKysrKysrKysr KysrKysrKysKPj4gIDQgZmlsZXMgY2hhbmdlZCwgMzM1IGluc2VydGlvbnMoKykKPj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9i cmlkZ2UvdGksdGZwNDEwLnR4dAo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvdGktdGZwNDEwLmMKPj4KPj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2 aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS90aSx0ZnA0MTAudHh0IGIvRG9jdW1lbnRh dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL3RpLHRmcDQxMC50eHQKPj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMC4uNjE3NGIxOAo+PiAtLS0gL2Rl di9udWxsCj4+ICsrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5 L2JyaWRnZS90aSx0ZnA0MTAudHh0Cj4gCj4gVGhlcmUgYWxyZWFkeSBpcyBhIGJpbmRpbmcgZG9j dW1lbnRhdGlvbiBmb3IgdGhlIHRmcDQxMCBpbgo+IAo+ICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0 cmVlL2JpbmRpbmdzL2Rpc3BsYXkvdGkvdGksdGZwNDEwLnR4dCAuCj4gCj4gSXQgaXMgdXNlZCBi eSB0aGUgb21hcCBkcm0gZHJpdmVyLiBJTUhPIHlvdSBzaG91bGQgZXh0ZW5kLCBtb3ZlIG9yCj4g ZGVwcmVjYXRlIHRoYXQgb25lLiBOb3RlIHRoYXQgaXQgZGVzY3JpYmVzIGFuIG9wdGlvbmFsIHBv d2VyZG93bi1ncGlvcwo+IHByb3BlcnR5Lgo+IAoKR29vZCB0aGF0IHlvdSBub3RpY2VkIHRoYXQu IEd1ZXNzIHdlIG5lZWQgdG8gdW5pZnkgdGhvc2UuIFByb2JhYmx5IHRvCnRoZSBuZXcgbG9jYXRp b24gdW5kZXIgYnJpZGdlIGRpcmVjdG9yeS4KCj4+IEBAIC0wLDAgKzEsNDAgQEAKPj4gK1RGUDQx MCBEVkkgYnJpZGdlIGJpbmRpbmdzCj4+ICsKPj4gK1JlcXVpcmVkIHByb3BlcnRpZXM6Cj4+ICsJ LSBjb21wYXRpYmxlOiAidGksdGZwNDEwIgo+PiArCj4+ICtPcHRpb25hbCBwcm9wZXJ0aWVzCj4+ ICsJLSByZWc6IEkyQyBhZGRyZXNzLiBJZiBhbmQgb25seSBpZiBwcmVzZW50IHRoZSBkZXZpY2Ug bm9kZQo+PiArCSAgc2hvdWxkIGJlIHBsYWNlZCBpbnRvIHRoZSBpMmMgY29udHJvbGxlciBub2Rl IHdoZXJlIHRoZQo+PiArCSAgdGZwNDEwIGkyYyBpcyBjb25uZWN0ZWQgdG8uCj4+ICsKPj4gK1Jl cXVpcmVkIHN1Ym5vZGVzOgo+PiArCS0gcG9ydEAwOiBWaWRlbyBpbnB1dCBwb3J0IG5vZGUgdG8g Y29ubmVjdCB0aGUgYnJpZGdlIHRvIGEKPj4gKwkgIGRpc3BsYXkgY29udHJvbGxlciBvdXRwdXQg WzFdLgo+PiArCS0gcG9ydEAxOiBWaWRlbyBvdXRwdXQgcG9ydCBub2RlIHRvIGNvbm5lY3QgdGhl IGJyaWRnZSB0byBhCj4+ICsJICBjb25uZWN0b3IgaW5wdXQgWzFdLgo+PiArCj4+ICtbMV06IERv Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS92aWRlby1pbnRlcmZhY2VzLnR4 dAo+PiArCj4+ICtFeGFtcGxlOgo+PiArCWhkbWktYnJpZGdlIHsKPj4gKwkJY29tcGF0aWJsZSA9 ICJ0aSx0ZnA0MTAiOwo+PiArCQlwb3J0cyB7Cj4+ICsJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsK Pj4gKwkJCSNzaXplLWNlbGxzID0gPDA+Owo+PiArCj4+ICsJCQlwb3J0QDAgewo+PiArCQkJCXJl ZyA9IDwwPjsKPj4gKwkJCQlicmlkZ2VfaW46IGVuZHBvaW50IHsKPj4gKwkJCQkJcmVtb3RlLWVu ZHBvaW50ID0gPCZkY19vdXQ+Owo+PiArCQkJCX07Cj4+ICsJCQl9Owo+PiArCj4+ICsJCQlwb3J0 QDEgewo+PiArCQkJCXJlZyA9IDwxPjsKPj4gKwkJCQlicmlkZ2Vfb3V0OiBlbmRwb2ludCB7Cj4+ ICsJCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmaGRtaV9pbj47Cj4+ICsJCQkJfTsKPj4gKwkJCX07 Cj4+ICsJCX07Cj4+ICsJfTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uv S2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZwo+PiBpbmRleCBiZDZhY2M4 Li5hNDI0ZTAzIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcK Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnCj4+IEBAIC04MSw2ICs4MSwx MyBAQCBjb25maWcgRFJNX1RPU0hJQkFfVEMzNTg3NjcKPj4gIAktLS1oZWxwLS0tCj4+ICAJICBU b3NoaWJhIFRDMzU4NzY3IGVEUCBicmlkZ2UgY2hpcCBkcml2ZXIuCj4+ICAKPj4gK2NvbmZpZyBE Uk1fVElfVEZQNDEwCj4+ICsJdHJpc3RhdGUgIlRJIFRGUDQxMCBEVkkvSERNSSBicmlkZ2UiCj4+ ICsJZGVwZW5kcyBvbiBPRgo+PiArCXNlbGVjdCBEUk1fS01TX0hFTFBFUgo+PiArCS0tLWhlbHAt LS0KPj4gKwkgIFRleGFzIEluc3RydW1lbnRzIFRGUDQxMCBEVkkvSERNSSBUcmFuc21pdHRlciBk cml2ZXIKPj4gKwo+PiAgc291cmNlICJkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L0tj b25maWciCj4+ICAKPj4gIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL0tj b25maWciCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlIGIv ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZQo+PiBpbmRleCA5N2VkMWE1Li44YjA2NWQ5 IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKPj4gQEAgLTExLDMgKzExLDQgQEAgb2Jq LSQoQ09ORklHX0RSTV9TSUk5MDJYKSArPSBzaWk5MDJ4Lm8KPj4gIG9iai0kKENPTkZJR19EUk1f VE9TSElCQV9UQzM1ODc2NykgKz0gdGMzNTg3Njcubwo+PiAgb2JqLSQoQ09ORklHX0RSTV9BTkFM T0dJWF9EUCkgKz0gYW5hbG9naXgvCj4+ICBvYmotJChDT05GSUdfRFJNX0kyQ19BRFY3NTExKSAr PSBhZHY3NTExLwo+PiArb2JqLSQoQ09ORklHX0RSTV9USV9URlA0MTApICs9IHRpLXRmcDQxMC5v Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RpLXRmcDQxMC5jIGIvZHJp dmVycy9ncHUvZHJtL2JyaWRnZS90aS10ZnA0MTAuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ PiBpbmRleCAwMDAwMDAwLi42NGY1NGU0Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS90aS10ZnA0MTAuYwo+PiBAQCAtMCwwICsxLDI4NyBAQAo+PiArLyoK Pj4gKyAqIENvcHlyaWdodCAoQykgMjAxNiBUZXhhcyBJbnN0cnVtZW50cwo+PiArICogQXV0aG9y OiBKeXJpIFNhcmhhIDxqc2FyaGFAdGkuY29tPgo+PiArICoKPj4gKyAqIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0 Cj4+ICsgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkKPj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24uCj4+ICsgKgo+PiArICovCj4+ICsKPj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4K Pj4gKyNpbmNsdWRlIDxsaW51eC9vZl9ncmFwaC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L3BsYXRm b3JtX2RldmljZS5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgo+PiArCj4+ICsjaW5jbHVk ZSA8ZHJtL2RybVAuaD4KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPj4g KyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVs cGVyLmg+Cj4+ICsKPj4gK3N0cnVjdCB0ZnA0MTAgewo+PiArCXN0cnVjdCBkcm1fYnJpZGdlCWJy aWRnZTsKPj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcgljb25uZWN0b3I7Cj4+ICsKPj4gKwlzdHJ1 Y3QgaTJjX2FkYXB0ZXIJKmRkYzsKPj4gKwo+PiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPj4gK307 Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHRmcDQxMCAqCj4+ICtkcm1fYnJpZGdlX3Rv X3RmcDQxMChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+PiArewo+PiArCXJldHVybiBjb250 YWluZXJfb2YoYnJpZGdlLCBzdHJ1Y3QgdGZwNDEwLCBicmlkZ2UpOwo+PiArfQo+PiArCj4+ICtz dGF0aWMgaW5saW5lIHN0cnVjdCB0ZnA0MTAgKgo+PiArZHJtX2Nvbm5lY3Rvcl90b190ZnA0MTAo c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPj4gK3sKPj4gKwlyZXR1cm4gY29udGFp bmVyX29mKGNvbm5lY3Rvciwgc3RydWN0IHRmcDQxMCwgY29ubmVjdG9yKTsKPj4gK30KPj4gKwo+ PiArc3RhdGljIGludCB0ZnA0MTBfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IpCj4+ICt7Cj4+ICsJc3RydWN0IHRmcDQxMCAqZHZpID0gZHJtX2Nvbm5lY3Rvcl90b190 ZnA0MTAoY29ubmVjdG9yKTsKPj4gKwlzdHJ1Y3QgZWRpZCAqZWRpZDsKPj4gKwlpbnQgcmV0Owo+ PiArCj4+ICsJaWYgKCFkdmktPmRkYykKPj4gKwkJZ290byBmYWxsYmFjazsKPj4gKwo+PiArCWVk aWQgPSBkcm1fZ2V0X2VkaWQoY29ubmVjdG9yLCBkdmktPmRkYyk7Cj4+ICsJaWYgKCFlZGlkKSB7 Cj4+ICsJCURSTV9JTkZPKCJFRElEIHJlYWQgZmFpbGVkLiBGYWxsYmFjayB0byBzdGFuZGFyZCBt b2Rlc1xuIik7Cj4+ICsJCWdvdG8gZmFsbGJhY2s7Cj4+ICsJfQo+PiArCj4+ICsJZHJtX21vZGVf Y29ubmVjdG9yX3VwZGF0ZV9lZGlkX3Byb3BlcnR5KGNvbm5lY3RvciwgZWRpZCk7Cj4+ICsKPj4g KwlyZXR1cm4gZHJtX2FkZF9lZGlkX21vZGVzKGNvbm5lY3RvciwgZWRpZCk7Cj4+ICtmYWxsYmFj azoKPj4gKwkvKiBObyBFRElELCBmYWxsYmFjayBvbiB0aGUgWEdBIHN0YW5kYXJkIG1vZGVzICov Cj4+ICsJcmV0ID0gZHJtX2FkZF9tb2Rlc19ub2VkaWQoY29ubmVjdG9yLCAxOTIwLCAxMjAwKTsK Pj4gKwo+PiArCS8qIEFuZCBwcmVmZXIgYSBtb2RlIHByZXR0eSBtdWNoIGFueXRoaW5nIGNhbiBo YW5kbGUgKi8KPj4gKwlkcm1fc2V0X3ByZWZlcnJlZF9tb2RlKGNvbm5lY3RvciwgMTAyNCwgNzY4 KTsKPj4gKwo+PiArCXJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgdGZwNDEwX2Nvbl9oZWxwZXJfZnVuY3MgPSB7 Cj4+ICsJLmdldF9tb2Rlcwk9IHRmcDQxMF9nZXRfbW9kZXMsCj4+ICt9Owo+PiArCj4+ICtzdGF0 aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cwo+PiArdGZwNDEwX2Nvbm5lY3Rvcl9kZXRlY3Qo c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKPj4gK3sKPj4gKwlz dHJ1Y3QgdGZwNDEwICpkdmkgPSBkcm1fY29ubmVjdG9yX3RvX3RmcDQxMChjb25uZWN0b3IpOwo+ PiArCj4+ICsJaWYgKGR2aS0+ZGRjKSB7Cj4+ICsJCWlmIChkcm1fcHJvYmVfZGRjKGR2aS0+ZGRj KSkKPj4gKwkJCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsKPj4gKwkJZWxzZQo+ PiArCQkJcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkOwo+PiArCX0KPiAKPiBJ IHdvbmRlciB3aGF0IGhhcHBlbnMgaWYgYSBkaXNwbGF5IHdpdGggbm9uZSBvciBkZWZlY3QgZGRj L2VkaWQgaXMKPiBhdHRhY2hlZD8gVGhlIGR1bWItdmdhLWRhYyBicmlkZ2UgZHJpdmVyIHJlcG9y dHMKPiBjb25uZWN0b3Jfc3RhdHVzX3Vua25vd24gaW4gdGhlIGNhc2UgZHJtX3Byb2JlX2RkYyBm YWlscy4KPiAKCklmIHRoZXJlIGlzIHN1Y2ggYSBwcm9ibGVtIHdpdGggRFZJL0hETUkgZGV2aWNl LCB0aGVuIHRoZSBkZXZpY2UgaXMKY2xlYXJseSBicm9rZW4uIEluIHN1Y2ggYSBjYXNlIG9uZSBj YW4gaGFjayBhIGN1c3RvbSBkdGQgZmlsZSB3aXRob3V0CmRkYy1pMmMtYnVzLiBUaGUgc2l0dWF0 aW9uIHdpdGggVkdBIGlzIHNsaWdodGx5IGRpZmZlcmVudC4gVGhlcmUgbWF5CnN0aWxsIGJlIHNv bWUgcGVyZmVjdGx5IGxlZ2l0aW1hdGUgbGVnYWN5IFZHQSBkZXZpY2VzIHRoYXQgZG8gbm90CnN1 cHBvcnQgZGRjLgoKSSBkbyBub3QgaGF2ZSBhIHN0cm9uZyBvcGluaW9uIGFib3V0IHRoaXMsIGJ1 dCB3b3VsZCBsaWtlIHRvIHdhaXQgaWYKYW55Ym9keSBpcyBib3RoZXJlZCBhYm91dCB0aGlzIGJl aGF2aW91ciBhbmQgZml4IGl0IG9ubHkgaWYgdGhlcmUgaXMgYQpwcm9ibGVtLgoKPiBDaGVlcnMs Cj4gQ2hyaXN0b3BoZXIKPiAKPj4gKwo+PiArCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX3Vua25v d247Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5j cyB0ZnA0MTBfY29uX2Z1bmNzID0gewo+PiArCS5kcG1zCQkJPSBkcm1fYXRvbWljX2hlbHBlcl9j b25uZWN0b3JfZHBtcywKPj4gKwkuZGV0ZWN0CQkJPSB0ZnA0MTBfY29ubmVjdG9yX2RldGVjdCwK Pj4gKwkuZmlsbF9tb2RlcwkJPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9k ZXMsCj4+ICsJLmRlc3Ryb3kJCT0gZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwLAo+PiArCS5yZXNldAkJ CT0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LAo+PiArCS5hdG9taWNfZHVwbGlj YXRlX3N0YXRlCT0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwK Pj4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUJPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3Jf ZGVzdHJveV9zdGF0ZSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbnQgdGZwNDEwX2F0dGFjaChz dHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+PiArewo+PiArCXN0cnVjdCB0ZnA0MTAgKmR2aSA9 IGRybV9icmlkZ2VfdG9fdGZwNDEwKGJyaWRnZSk7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCWlm ICghYnJpZGdlLT5lbmNvZGVyKSB7Cj4+ICsJCWRldl9lcnIoZHZpLT5kZXYsICJNaXNzaW5nIGVu Y29kZXJcbiIpOwo+PiArCQlyZXR1cm4gLUVOT0RFVjsKPj4gKwl9Cj4+ICsKPj4gKwlkcm1fY29u bmVjdG9yX2hlbHBlcl9hZGQoJmR2aS0+Y29ubmVjdG9yLAo+PiArCQkJCSAmdGZwNDEwX2Nvbl9o ZWxwZXJfZnVuY3MpOwo+PiArCXJldCA9IGRybV9jb25uZWN0b3JfaW5pdChicmlkZ2UtPmRldiwg JmR2aS0+Y29ubmVjdG9yLAo+PiArCQkJCSAmdGZwNDEwX2Nvbl9mdW5jcywgRFJNX01PREVfQ09O TkVDVE9SX0hETUlBKTsKPj4gKwlpZiAocmV0KSB7Cj4+ICsJCWRldl9lcnIoZHZpLT5kZXYsICJk cm1fY29ubmVjdG9yX2luaXQoKSBmYWlsZWQ6ICVkXG4iLCByZXQpOwo+PiArCQlyZXR1cm4gcmV0 Owo+PiArCX0KPj4gKwo+PiArCWRybV9tb2RlX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2RlcigmZHZp LT5jb25uZWN0b3IsCj4+ICsJCQkJCSAgYnJpZGdlLT5lbmNvZGVyKTsKPj4gKwo+PiArCXJldHVy biAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9icmlkZ2VfZnVuY3Mg dGZwNDEwX2JyaWRnZV9mdW5jcyA9IHsKPj4gKwkuYXR0YWNoCQk9IHRmcDQxMF9hdHRhY2gsCj4+ ICt9Owo+PiArCj4+ICtzdGF0aWMgaW50IHRmcDQxMF9nZXRfY29ubmVjdG9yX2RkYyhzdHJ1Y3Qg dGZwNDEwICpkdmkpCj4+ICt7Cj4+ICsJc3RydWN0IGRldmljZV9ub2RlICplcCA9IE5VTEwsICpj b25uZWN0b3Jfbm9kZSA9IE5VTEw7Cj4+ICsJc3RydWN0IGRldmljZV9ub2RlICpkZGNfcGhhbmRs ZSA9IE5VTEw7Cj4+ICsJaW50IHJldCA9IDA7Cj4+ICsKPj4gKwkvKiBwb3J0QDEgaXMgdGhlIGNv bm5lY3RvciBub2RlICovCj4+ICsJZXAgPSBvZl9ncmFwaF9nZXRfZW5kcG9pbnRfYnlfcmVncyhk dmktPmRldi0+b2Zfbm9kZSwgMSwgLTEpOwo+PiArCWlmICghZXApCj4+ICsJCWdvdG8gZmFpbDsK Pj4gKwo+PiArCWNvbm5lY3Rvcl9ub2RlID0gb2ZfZ3JhcGhfZ2V0X3JlbW90ZV9wb3J0X3BhcmVu dChlcCk7Cj4+ICsJaWYgKCFjb25uZWN0b3Jfbm9kZSkKPj4gKwkJZ290byBmYWlsOwo+PiArCj4+ ICsJZGRjX3BoYW5kbGUgPSBvZl9wYXJzZV9waGFuZGxlKGNvbm5lY3Rvcl9ub2RlLCAiZGRjLWky Yy1idXMiLCAwKTsKPj4gKwlpZiAoIWRkY19waGFuZGxlKQo+PiArCQlnb3RvIGZhaWw7Cj4+ICsK Pj4gKwlkdmktPmRkYyA9IG9mX2dldF9pMmNfYWRhcHRlcl9ieV9ub2RlKGRkY19waGFuZGxlKTsK Pj4gKwlpZiAoZHZpLT5kZGMpCj4+ICsJCWRldl9pbmZvKGR2aS0+ZGV2LCAiQ29ubmVjdG9yJ3Mg ZGRjIGkyYyBidXMgZm91bmRcbiIpOwo+PiArCWVsc2UKPj4gKwkJcmV0ID0gLUVQUk9CRV9ERUZF UjsKPj4gKwo+PiArZmFpbDoKPj4gKwlvZl9ub2RlX3B1dChlcCk7Cj4+ICsJb2Zfbm9kZV9wdXQo Y29ubmVjdG9yX25vZGUpOwo+PiArCW9mX25vZGVfcHV0KGRkY19waGFuZGxlKTsKPj4gKwlyZXR1 cm4gcmV0Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHRmcDQxMF9pbml0KHN0cnVjdCBkZXZp Y2UgKmRldikKPj4gK3sKPj4gKwlzdHJ1Y3QgdGZwNDEwICpkdmk7Cj4+ICsJaW50IHJldDsKPj4g Kwo+PiArCWlmICghZGV2LT5vZl9ub2RlKSB7Cj4+ICsJCWRldl9lcnIoZGV2LCAiZGV2aWNlLXRy ZWUgZGF0YSBpcyBtaXNzaW5nXG4iKTsKPj4gKwkJcmV0dXJuIC1FTlhJTzsKPj4gKwl9Cj4+ICsK Pj4gKwlkdmkgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmR2aSksIEdGUF9LRVJORUwpOwo+ PiArCWlmICghZHZpKQo+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4gKwlkZXZfc2V0X2RydmRhdGEo ZGV2LCBkdmkpOwo+PiArCj4+ICsJZHZpLT5icmlkZ2UuZnVuY3MgPSAmdGZwNDEwX2JyaWRnZV9m dW5jczsKPj4gKwlkdmktPmJyaWRnZS5vZl9ub2RlID0gZGV2LT5vZl9ub2RlOwo+PiArCWR2aS0+ ZGV2ID0gZGV2Owo+PiArCj4+ICsJcmV0ID0gdGZwNDEwX2dldF9jb25uZWN0b3JfZGRjKGR2aSk7 Cj4+ICsJaWYgKHJldCkKPj4gKwkJZ290byBmYWlsOwo+PiArCj4+ICsJcmV0ID0gZHJtX2JyaWRn ZV9hZGQoJmR2aS0+YnJpZGdlKTsKPj4gKwlpZiAocmV0KSB7Cj4+ICsJCWRldl9lcnIoZGV2LCAi ZHJtX2JyaWRnZV9hZGQoKSBmYWlsZWQ6ICVkXG4iLCByZXQpOwo+PiArCQlnb3RvIGZhaWw7Cj4+ ICsJfQo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICtmYWlsOgo+PiArCWkyY19wdXRfYWRhcHRlcihk dmktPmRkYyk7Cj4+ICsJcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCB0ZnA0 MTBfZmluaShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+ICt7Cj4+ICsJc3RydWN0IHRmcDQxMCAqZHZp ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4+ICsKPj4gKwlkcm1fYnJpZGdlX3JlbW92ZSgmZHZp LT5icmlkZ2UpOwo+PiArCj4+ICsJaWYgKGR2aS0+ZGRjKQo+PiArCQlpMmNfcHV0X2FkYXB0ZXIo ZHZpLT5kZGMpOwo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQg dGZwNDEwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+ICt7Cj4+ICsJcmV0 dXJuIHRmcDQxMF9pbml0KCZwZGV2LT5kZXYpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHRm cDQxMF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4gK3sKPj4gKwlyZXR1 cm4gdGZwNDEwX2ZpbmkoJnBkZXYtPmRldik7Cj4+ICt9Cj4+ICsKPj4gKy8qIFRoZXJlIGlzIGN1 cnJlbnRseSBubyBpMmMgZnVuY3Rpb25hbGl0eS4gKi8KPj4gK3N0YXRpYyBpbnQgdGZwNDEwX2ky Y19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAo+PiArCQkJICAgIGNvbnN0IHN0cnVj dCBpMmNfZGV2aWNlX2lkICppZCkKPj4gK3sKPj4gKwlpbnQgcmVnOwo+PiArCj4+ICsJaWYgKCFj bGllbnQtPmRldi5vZl9ub2RlIHx8Cj4+ICsJICAgIG9mX3Byb3BlcnR5X3JlYWRfdTMyKGNsaWVu dC0+ZGV2Lm9mX25vZGUsICJyZWciLCAmcmVnKSkgewo+PiArCQlkZXZfZXJyKCZjbGllbnQtPmRl diwKPj4gKwkJCSJDYW4ndCBnZXQgaTJjIHJlZyBwcm9wZXJ0eSBmcm9tIGRldmljZS10cmVlXG4i KTsKPj4gKwkJcmV0dXJuIC1FTlhJTzsKPj4gKwl9Cj4+ICsKPj4gKwlyZXR1cm4gdGZwNDEwX2lu aXQoJmNsaWVudC0+ZGV2KTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCB0ZnA0MTBfaTJjX3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+PiArewo+PiArCXJldHVybiB0ZnA0MTBf ZmluaSgmY2xpZW50LT5kZXYpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9m X2RldmljZV9pZCB0ZnA0MTBfbWF0Y2hbXSA9IHsKPj4gKwl7IC5jb21wYXRpYmxlID0gInRpLHRm cDQxMCIgfSwKPj4gKwl7fSwKPj4gK307Cj4+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB0ZnA0 MTBfbWF0Y2gpOwo+PiArCj4+ICtzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHRmcDQxMF9wbGF0Zm9y bV9kcml2ZXIgPSB7Cj4+ICsJLnByb2JlCT0gdGZwNDEwX3Byb2JlLAo+PiArCS5yZW1vdmUJPSB0 ZnA0MTBfcmVtb3ZlLAo+PiArCS5kcml2ZXIJPSB7Cj4+ICsJCS5uYW1lCQk9ICJ0ZnA0MTAtYnJp ZGdlIiwKPj4gKwkJLm9mX21hdGNoX3RhYmxlCT0gdGZwNDEwX21hdGNoLAo+PiArCX0sCj4+ICt9 Owo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgdGZwNDEwX2kyY19p ZHNbXSA9IHsKPj4gKwl7ICJ0ZnA0MTAiLCAwIH0sCj4+ICsJeyB9Cj4+ICt9Owo+PiArTU9EVUxF X0RFVklDRV9UQUJMRShpMmMsIHRmcDQxMF9pMmNfaWRzKTsKPj4gKwo+PiArc3RhdGljIHN0cnVj dCBpMmNfZHJpdmVyIHRmcDQxMF9pMmNfZHJpdmVyID0gewo+PiArCS5kcml2ZXIgPSB7Cj4+ICsJ CS5uYW1lCT0gInRmcDQxMCIsCj4+ICsJCS5vZl9tYXRjaF90YWJsZSA9IG9mX21hdGNoX3B0cih0 ZnA0MTBfbWF0Y2gpLAo+PiArCX0sCj4+ICsJLmlkX3RhYmxlCT0gdGZwNDEwX2kyY19pZHMsCj4+ ICsJLnByb2JlCQk9IHRmcDQxMF9pMmNfcHJvYmUsCj4+ICsJLnJlbW92ZQkJPSB0ZnA0MTBfaTJj X3JlbW92ZSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbnQgX19pbml0IHRmcDQxMF9tb2R1bGVf aW5pdCh2b2lkKQo+PiArewo+PiArCWkyY19hZGRfZHJpdmVyKCZ0ZnA0MTBfaTJjX2RyaXZlcik7 Cj4+ICsJcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZ0ZnA0MTBfcGxhdGZvcm1fZHJpdmVyKTsK Pj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArbW9kdWxlX2luaXQodGZwNDEwX21vZHVsZV9p bml0KTsKPj4gKwo+PiArc3RhdGljIHZvaWQgX19leGl0IHRmcDQxMF9tb2R1bGVfZXhpdCh2b2lk KQo+PiArewo+PiArCWkyY19kZWxfZHJpdmVyKCZ0ZnA0MTBfaTJjX2RyaXZlcik7Cj4+ICsJcGxh dGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJnRmcDQxMF9wbGF0Zm9ybV9kcml2ZXIpOwo+PiArfQo+ PiArbW9kdWxlX2V4aXQodGZwNDEwX21vZHVsZV9leGl0KTsKPj4gKwo+PiArTU9EVUxFX0FVVEhP UigiSnlyaSBTYXJoYSA8anNhcmhhQHRpLmNvbT4iKTsKPj4gK01PRFVMRV9ERVNDUklQVElPTigi VEkgVEZQNDEwIERWSSBicmlkZ2UgZHJpdmVyIik7Cj4+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7 Cj4+Cj4+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK