From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v4 3/4] drm/bridge: Add ti-tfp410 DVI transmitter driver Date: Wed, 23 Nov 2016 13:08:34 +0200 Message-ID: <87shqiwj0t.fsf@intel.com> References: <2943f3cb3ea913686bc63e8496df63c82ce0f334.1479825908.git.jsarha@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jyri Sarha , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org Cc: khilman@baylibre.com, tomi.valkeinen@ti.com, laurent.pinchart@ideasonboard.com, bgolaszewski@baylibre.com List-Id: devicetree@vger.kernel.org T24gV2VkLCAyMyBOb3YgMjAxNiwgSnlyaSBTYXJoYSA8anNhcmhhQHRpLmNvbT4gd3JvdGU6Cj4g T24gMTEvMjIvMTYgMTY6NDksIEp5cmkgU2FyaGEgd3JvdGU6Cj4+IEFkZCB2ZXJ5IGJhc2ljIHRp LXRmcDQxMCBEVkkgdHJhbnNtaXR0ZXIgZHJpdmVyLiBUaGUgb25seSBmZWF0dXJlCj4+IHNlcGFy YXRpbmcgdGhpcyBmcm9tIGEgY29tcGxldGVseSBkdW1teSBicmlkZ2UgaXMgdGhlIEVESUQgcmVh ZAo+PiBzdXBwb3J0IHRyb3VnaCBEREMgSTJDLiBFdmVuIHRoYXQgZnVuY3Rpb25hbGl0eSBzaG91 bGQgYmUgaW4gYQo+PiBzZXBhcmF0ZSBnZW5lcmljIGNvbm5lY3RvciBkcml2ZXIuIEhvd2V2ZXIs IGJlY2F1c2Ugb2YgbWlzc2luZyBEUk0KPj4gaW5mcmFzdHJ1Y3R1cmUgc3VwcG9ydCB0aGUgY29u bmVjdG9yIGlzIGltcGxlbWVudGVkIHdpdGhpbiB0aGUgYnJpZGdlCj4+IGRyaXZlci4gU29tZSB0 ZnA0MTAgSFcgc3BlY2lmaWMgZmVhdHVyZXMgbWF5IGJlIGFkZGVkIGxhdGVyIGlmIG5lZWRlZCwK Pj4gYmVjYXVzZSB0aGVyZSBpcyBhIHNldCBvZiByZWdpc3RlcnMgYmVoaW5kIGkyYyBpZiBpdCBp cyBjb25uZWN0ZWQuCj4+IAo+PiBUaGlzIGltcGxlbWVudGF0aW9uIGlzIHRlc3RlZCBhZ2FpbnN0 IG15IG5ldyB0aWxjZGMgYnJpZGdlIHN1cHBvcnQKPj4gYW5kIGl0IHdvcmtzIHdpdGggQmVhZ2xl Qm9uZSBEVkktRCBDYXBlIFJldiBBMy4gQSBEVCBiaW5kaW5nIGRvY3VtZW50Cj4+IGlzIGFsc28g dXBkYXRlZC4KPj4gCj4+IFNpZ25lZC1vZmYtYnk6IEp5cmkgU2FyaGEgPGpzYXJoYUB0aS5jb20+ Cj4+IC0tLQo+PiAgLi4uL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL3RpLHRmcDQxMC50eHQgICAg ICAgICAgfCAgIDkgKy0KPj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZyAgICAgICAg ICAgICAgICAgICAgIHwgICA3ICsKPj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKPj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvdGkt dGZwNDEwLmMgICAgICAgICAgICAgICAgIHwgMzExICsrKysrKysrKysrKysrKysrKysrKwo+PiAg NCBmaWxlcyBjaGFuZ2VkLCAzMjYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RpLXRmcDQxMC5jCj4+IAo+ PiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkv YnJpZGdlL3RpLHRmcDQxMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv ZGlzcGxheS9icmlkZ2UvdGksdGZwNDEwLnR4dAo+PiBpbmRleCAyY2JlMzJhLi41NGQ3ZTMxIDEw MDY0NAo+PiAtLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9i cmlkZ2UvdGksdGZwNDEwLnR4dAo+PiArKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu ZGluZ3MvZGlzcGxheS9icmlkZ2UvdGksdGZwNDEwLnR4dAo+PiBAQCAtNiwxMCArNiwxNSBAQCBS ZXF1aXJlZCBwcm9wZXJ0aWVzOgo+PiAgCj4+ICBPcHRpb25hbCBwcm9wZXJ0aWVzOgo+PiAgLSBw b3dlcmRvd24tZ3Bpb3M6IHBvd2VyLWRvd24gZ3Bpbwo+PiArLSByZWc6IEkyQyBhZGRyZXNzLiBJ ZiBhbmQgb25seSBpZiBwcmVzZW50IHRoZSBkZXZpY2Ugbm9kZQo+PiArICAgICAgIHNob3VsZCBi ZSBwbGFjZWQgaW50byB0aGUgaTJjIGNvbnRyb2xsZXIgbm9kZSB3aGVyZSB0aGUKPj4gKyAgICAg ICB0ZnA0MTAgaTJjIGlzIGNvbm5lY3RlZCB0by4KPj4gIAo+PiAgUmVxdWlyZWQgbm9kZXM6Cj4+ IC0tIFZpZGVvIHBvcnQgMCBmb3IgRFBJIGlucHV0Cj4+IC0tIFZpZGVvIHBvcnQgMSBmb3IgRFZJ IG91dHB1dAo+PiArLSBWaWRlbyBwb3J0IDAgZm9yIERQSSBpbnB1dCBbMV0uCj4+ICstIFZpZGVv IHBvcnQgMSBmb3IgRFZJIG91dHB1dCBbMV0uCj4+ICsKPj4gK1sxXTogRG9jdW1lbnRhdGlvbi9k ZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3ZpZGVvLWludGVyZmFjZXMudHh0Cj4+ICAKPj4gIEV4 YW1wbGUKPj4gIC0tLS0tLS0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uv 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+ PiBpbmRleCAwMDAwMDAwLi41OGUyNmNjCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS90aS10ZnA0MTAuYwo+PiBAQCAtMCwwICsxLDMxMSBAQAo+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+PiArCX0KPj4gKwo+ PiArCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX3Vua25vd247Cj4+ICt9Cj4+ICsKPj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyB0ZnA0MTBfY29uX2Z1bmNzID0gewo+ PiArCS5kcG1zCQkJPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHBtcywKPj4gKwkuZGV0 ZWN0CQkJPSB0ZnA0MTBfY29ubmVjdG9yX2RldGVjdCwKPj4gKwkuZmlsbF9tb2RlcwkJPSBkcm1f aGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMsCj4+ICsJLmRlc3Ryb3kJCT0gZHJt X2Nvbm5lY3Rvcl9jbGVhbnVwLAo+PiArCS5yZXNldAkJCT0gZHJtX2F0b21pY19oZWxwZXJfY29u bmVjdG9yX3Jlc2V0LAo+PiArCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlCT0gZHJtX2F0b21pY19o ZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwKPj4gKwkuYXRvbWljX2Rlc3Ryb3lfc3Rh dGUJPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKPj4gK307Cj4+ ICsKPj4gK3N0YXRpYyBpbnQgdGZwNDEwX2F0dGFjaChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdl KQo+PiArewo+PiArCXN0cnVjdCB0ZnA0MTAgKmR2aSA9IGRybV9icmlkZ2VfdG9fdGZwNDEwKGJy aWRnZSk7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCWlmICghYnJpZGdlLT5lbmNvZGVyKSB7Cj4+ ICsJCWRldl9lcnIoZHZpLT5kZXYsICJNaXNzaW5nIGVuY29kZXJcbiIpOwo+PiArCQlyZXR1cm4g LUVOT0RFVjsKPj4gKwl9Cj4+ICsKPj4gKwlkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoJmR2aS0+ Y29ubmVjdG9yLAo+PiArCQkJCSAmdGZwNDEwX2Nvbl9oZWxwZXJfZnVuY3MpOwo+PiArCXJldCA9 IGRybV9jb25uZWN0b3JfaW5pdChicmlkZ2UtPmRldiwgJmR2aS0+Y29ubmVjdG9yLAo+PiArCQkJ CSAmdGZwNDEwX2Nvbl9mdW5jcywgRFJNX01PREVfQ09OTkVDVE9SX0hETUlBKTsKPj4gKwlpZiAo cmV0KSB7Cj4+ICsJCWRldl9lcnIoZHZpLT5kZXYsICJkcm1fY29ubmVjdG9yX2luaXQoKSBmYWls ZWQ6ICVkXG4iLCByZXQpOwo+PiArCQlyZXR1cm4gcmV0Owo+PiArCX0KPj4gKwo+PiArCWRybV9t b2RlX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2RlcigmZHZpLT5jb25uZWN0b3IsCj4+ICsJCQkJCSAg YnJpZGdlLT5lbmNvZGVyKTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9icmlkZ2VfZnVuY3MgdGZwNDEwX2JyaWRnZV9mdW5jcyA9IHsK Pj4gKwkuYXR0YWNoCQk9IHRmcDQxMF9hdHRhY2gsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaW50 IHRmcDQxMF9nZXRfY29ubmVjdG9yX2RkYyhzdHJ1Y3QgdGZwNDEwICpkdmkpCj4+ICt7Cj4+ICsJ c3RydWN0IGRldmljZV9ub2RlICplcCA9IE5VTEwsICpjb25uZWN0b3Jfbm9kZSA9IE5VTEw7Cj4+ ICsJc3RydWN0IGRldmljZV9ub2RlICpkZGNfcGhhbmRsZSA9IE5VTEw7Cj4+ICsJaW50IHJldCA9 IDA7Cj4+ICsKPj4gKwkvKiBwb3J0QDEgaXMgdGhlIGNvbm5lY3RvciBub2RlICovCj4+ICsJZXAg PSBvZl9ncmFwaF9nZXRfZW5kcG9pbnRfYnlfcmVncyhkdmktPmRldi0+b2Zfbm9kZSwgMSwgLTEp Owo+PiArCWlmICghZXApCj4+ICsJCWdvdG8gZmFpbDsKPj4gKwo+PiArCWNvbm5lY3Rvcl9ub2Rl ID0gb2ZfZ3JhcGhfZ2V0X3JlbW90ZV9wb3J0X3BhcmVudChlcCk7Cj4+ICsJaWYgKCFjb25uZWN0 b3Jfbm9kZSkKPj4gKwkJZ290byBmYWlsOwo+PiArCj4+ICsJZGRjX3BoYW5kbGUgPSBvZl9wYXJz ZV9waGFuZGxlKGNvbm5lY3Rvcl9ub2RlLCAiZGRjLWkyYy1idXMiLCAwKTsKPj4gKwlpZiAoIWRk Y19waGFuZGxlKQo+PiArCQlnb3RvIGZhaWw7Cj4+ICsKPj4gKwlkdmktPmRkYyA9IG9mX2dldF9p MmNfYWRhcHRlcl9ieV9ub2RlKGRkY19waGFuZGxlKTsKPj4gKwlpZiAoZHZpLT5kZGMpCj4+ICsJ CWRldl9pbmZvKGR2aS0+ZGV2LCAiQ29ubmVjdG9yJ3MgZGRjIGkyYyBidXMgZm91bmRcbiIpOwo+ PiArCWVsc2UKPj4gKwkJcmV0ID0gLUVQUk9CRV9ERUZFUjsKPj4gKwo+PiArZmFpbDoKPj4gKwlv Zl9ub2RlX3B1dChlcCk7Cj4+ICsJb2Zfbm9kZV9wdXQoY29ubmVjdG9yX25vZGUpOwo+PiArCW9m X25vZGVfcHV0KGRkY19waGFuZGxlKTsKPj4gKwlyZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ICtz dGF0aWMgaW50IHRmcDQxMF9pbml0KHN0cnVjdCBkZXZpY2UgKmRldikKPj4gK3sKPj4gKwlzdHJ1 Y3QgdGZwNDEwICpkdmk7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCWlmICghZGV2LT5vZl9ub2Rl KSB7Cj4+ICsJCWRldl9lcnIoZGV2LCAiZGV2aWNlLXRyZWUgZGF0YSBpcyBtaXNzaW5nXG4iKTsK Pj4gKwkJcmV0dXJuIC1FTlhJTzsKPj4gKwl9Cj4+ICsKPj4gKwlkdmkgPSBkZXZtX2t6YWxsb2Mo ZGV2LCBzaXplb2YoKmR2aSksIEdGUF9LRVJORUwpOwo+PiArCWlmICghZHZpKQo+PiArCQlyZXR1 cm4gLUVOT01FTTsKPj4gKwlkZXZfc2V0X2RydmRhdGEoZGV2LCBkdmkpOwo+PiArCj4+ICsJZHZp LT5icmlkZ2UuZnVuY3MgPSAmdGZwNDEwX2JyaWRnZV9mdW5jczsKPj4gKwlkdmktPmJyaWRnZS5v Zl9ub2RlID0gZGV2LT5vZl9ub2RlOwo+PiArCWR2aS0+ZGV2ID0gZGV2Owo+PiArCj4+ICsJcmV0 ID0gdGZwNDEwX2dldF9jb25uZWN0b3JfZGRjKGR2aSk7Cj4+ICsJaWYgKHJldCkKPj4gKwkJZ290 byBmYWlsOwo+PiArCj4+ICsJcmV0ID0gZHJtX2JyaWRnZV9hZGQoJmR2aS0+YnJpZGdlKTsKPj4g KwlpZiAocmV0KSB7Cj4+ICsJCWRldl9lcnIoZGV2LCAiZHJtX2JyaWRnZV9hZGQoKSBmYWlsZWQ6 ICVkXG4iLCByZXQpOwo+PiArCQlnb3RvIGZhaWw7Cj4+ICsJfQo+PiArCj4+ICsJcmV0dXJuIDA7 Cj4+ICtmYWlsOgo+PiArCWkyY19wdXRfYWRhcHRlcihkdmktPmRkYyk7Cj4+ICsJcmV0dXJuIHJl dDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCB0ZnA0MTBfZmluaShzdHJ1Y3QgZGV2aWNlICpk ZXYpCj4+ICt7Cj4+ICsJc3RydWN0IHRmcDQxMCAqZHZpID0gZGV2X2dldF9kcnZkYXRhKGRldik7 Cj4+ICsKPj4gKwlkcm1fYnJpZGdlX3JlbW92ZSgmZHZpLT5icmlkZ2UpOwo+PiArCj4+ICsJaWYg KGR2aS0+ZGRjKQo+PiArCQlpMmNfcHV0X2FkYXB0ZXIoZHZpLT5kZGMpOwo+PiArCj4+ICsJcmV0 dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgdGZwNDEwX3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCj4+ICt7Cj4+ICsJcmV0dXJuIHRmcDQxMF9pbml0KCZwZGV2LT5k ZXYpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHRmcDQxMF9yZW1vdmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKPj4gK3sKPj4gKwlyZXR1cm4gdGZwNDEwX2ZpbmkoJnBkZXYtPmRl dik7Cj4+ICt9Cj4+ICsKPgo+IEFyZ2guLi4gSSB0aGluayBJIHNob3VsZCBzdGlsbCBwdXQgYWxs IGkyYyBjb2RlIGJldHdlZW4KPiAjaWYgZGVmaW5lZChDT05GSUdfSTJDKSB8fCBkZWZpbmVkKENP TkZJR19JMkNfTU9EVUxFKQoKSVRZTQoKI2lmIElTX0VOQUJMRUQoQ09ORklHX0kyQykKCkJSLApK YW5pLgoKCj4KPiAjZW5kaWYKPgo+IE90aGVyd2lzZSBJIHRoaW5rIHRoaXMgaXMgbm93IGZpbmFs bHkgcmVhZHkuCj4KPj4gKy8qIFRoZXJlIGlzIGN1cnJlbnRseSBubyBpMmMgZnVuY3Rpb25hbGl0 eS4gKi8KPj4gK3N0YXRpYyBpbnQgdGZwNDEwX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50LAo+PiArCQkJICAgIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCkKPj4gK3sK Pj4gKwlpbnQgcmVnOwo+PiArCj4+ICsJaWYgKCFjbGllbnQtPmRldi5vZl9ub2RlIHx8Cj4+ICsJ ICAgIG9mX3Byb3BlcnR5X3JlYWRfdTMyKGNsaWVudC0+ZGV2Lm9mX25vZGUsICJyZWciLCAmcmVn KSkgewo+PiArCQlkZXZfZXJyKCZjbGllbnQtPmRldiwKPj4gKwkJCSJDYW4ndCBnZXQgaTJjIHJl ZyBwcm9wZXJ0eSBmcm9tIGRldmljZS10cmVlXG4iKTsKPj4gKwkJcmV0dXJuIC1FTlhJTzsKPj4g Kwl9Cj4+ICsKPj4gKwlyZXR1cm4gdGZwNDEwX2luaXQoJmNsaWVudC0+ZGV2KTsKPj4gK30KPj4g Kwo+PiArc3RhdGljIGludCB0ZnA0MTBfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50KQo+PiArewo+PiArCXJldHVybiB0ZnA0MTBfZmluaSgmY2xpZW50LT5kZXYpOwo+PiArfQo+ PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB0ZnA0MTBfbWF0Y2hbXSA9 IHsKPj4gKwl7IC5jb21wYXRpYmxlID0gInRpLHRmcDQxMCIgfSwKPj4gKwl7fSwKPj4gK307Cj4+ ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB0ZnA0MTBfbWF0Y2gpOwo+PiArCj4+ICtzdHJ1Y3Qg cGxhdGZvcm1fZHJpdmVyIHRmcDQxMF9wbGF0Zm9ybV9kcml2ZXIgPSB7Cj4+ICsJLnByb2JlCT0g dGZwNDEwX3Byb2JlLAo+PiArCS5yZW1vdmUJPSB0ZnA0MTBfcmVtb3ZlLAo+PiArCS5kcml2ZXIJ PSB7Cj4+ICsJCS5uYW1lCQk9ICJ0ZnA0MTAtYnJpZGdlIiwKPj4gKwkJLm9mX21hdGNoX3RhYmxl CT0gdGZwNDEwX21hdGNoLAo+PiArCX0sCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGkyY19kZXZpY2VfaWQgdGZwNDEwX2kyY19pZHNbXSA9IHsKPj4gKwl7ICJ0ZnA0MTAiLCAw IH0sCj4+ICsJeyB9Cj4+ICt9Owo+PiArTU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIHRmcDQxMF9p MmNfaWRzKTsKPj4gKwo+PiArc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHRmcDQxMF9pMmNfZHJp dmVyID0gewo+PiArCS5kcml2ZXIgPSB7Cj4+ICsJCS5uYW1lCT0gInRmcDQxMCIsCj4+ICsJCS5v Zl9tYXRjaF90YWJsZSA9IG9mX21hdGNoX3B0cih0ZnA0MTBfbWF0Y2gpLAo+PiArCX0sCj4+ICsJ LmlkX3RhYmxlCT0gdGZwNDEwX2kyY19pZHMsCj4+ICsJLnByb2JlCQk9IHRmcDQxMF9pMmNfcHJv YmUsCj4+ICsJLnJlbW92ZQkJPSB0ZnA0MTBfaTJjX3JlbW92ZSwKPj4gK307Cj4+ICsKPj4gK3N0 YXRpYyBzdHJ1Y3Qgewo+PiArCXVpbnQgaTJjOjE7Cj4+ICsJdWludCBwbGF0Zm9ybToxOwo+PiAr fSAgdGZwNDEwX3JlZ2lzdGVyZWRfZHJpdmVyOwo+PiArCj4+ICtzdGF0aWMgaW50IF9faW5pdCB0 ZnA0MTBfbW9kdWxlX2luaXQodm9pZCkKPj4gK3sKPj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJcmV0 ID0gaTJjX2FkZF9kcml2ZXIoJnRmcDQxMF9pMmNfZHJpdmVyKTsKPj4gKwlpZiAocmV0KQo+PiAr CQlwcl9lcnIoIiVzOiByZWdpc3RlcmluZyBpMmMgZHJpdmVyIGZhaWxlZDogJWQiLAo+PiArCQkg ICAgICAgX19mdW5jX18sIHJldCk7Cj4+ICsJZWxzZQo+PiArCQl0ZnA0MTBfcmVnaXN0ZXJlZF9k cml2ZXIuaTJjID0gMTsKPj4gKwo+PiArCXJldCA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3Rlcigm dGZwNDEwX3BsYXRmb3JtX2RyaXZlcik7Cj4+ICsJaWYgKHJldCkKPj4gKwkJcHJfZXJyKCIlczog cmVnaXN0ZXJpbmcgcGxhdGZvcm0gZHJpdmVyIGZhaWxlZDogJWQiLAo+PiArCQkgICAgICAgX19m dW5jX18sIHJldCk7Cj4+ICsJZWxzZQo+PiArCQl0ZnA0MTBfcmVnaXN0ZXJlZF9kcml2ZXIucGxh dGZvcm0gPSAxOwo+PiArCj4+ICsJaWYgKHRmcDQxMF9yZWdpc3RlcmVkX2RyaXZlci5pMmMgfHwK Pj4gKwkgICAgdGZwNDEwX3JlZ2lzdGVyZWRfZHJpdmVyLnBsYXRmb3JtKQo+PiArCQlyZXR1cm4g MDsKPj4gKwo+PiArCXJldHVybiByZXQ7Cj4+ICt9Cj4+ICttb2R1bGVfaW5pdCh0ZnA0MTBfbW9k dWxlX2luaXQpOwo+PiArCj4+ICtzdGF0aWMgdm9pZCBfX2V4aXQgdGZwNDEwX21vZHVsZV9leGl0 KHZvaWQpCj4+ICt7Cj4+ICsJaWYgKHRmcDQxMF9yZWdpc3RlcmVkX2RyaXZlci5pMmMpCj4+ICsJ CWkyY19kZWxfZHJpdmVyKCZ0ZnA0MTBfaTJjX2RyaXZlcik7Cj4+ICsJaWYgKHRmcDQxMF9yZWdp c3RlcmVkX2RyaXZlci5wbGF0Zm9ybSkKPj4gKwkJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIo JnRmcDQxMF9wbGF0Zm9ybV9kcml2ZXIpOwo+PiArfQo+PiArbW9kdWxlX2V4aXQodGZwNDEwX21v ZHVsZV9leGl0KTsKPj4gKwo+PiArTU9EVUxFX0FVVEhPUigiSnlyaSBTYXJoYSA8anNhcmhhQHRp LmNvbT4iKTsKPj4gK01PRFVMRV9ERVNDUklQVElPTigiVEkgVEZQNDEwIERWSSBicmlkZ2UgZHJp dmVyIik7Cj4+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7Cj4+IAo+Cj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0 Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCgotLSAKSmFuaSBOaWt1bGEsIElu dGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=