From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH v4 05/13] drm/bridge: Repurpose lvds-encoder.c Date: Tue, 19 Nov 2019 02:00:47 +0200 Message-ID: <20191119000047.GE5171@pendragon.ideasonboard.com> References: <1573660292-10629-1-git-send-email-fabrizio.castro@bp.renesas.com> <1573660292-10629-6-git-send-email-fabrizio.castro@bp.renesas.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id A45006E432 for ; Tue, 19 Nov 2019 00:01:03 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1573660292-10629-6-git-send-email-fabrizio.castro@bp.renesas.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Fabrizio Castro Cc: Mark Rutland , devicetree@vger.kernel.org, Chris Paterson , Geert Uytterhoeven , Simon Horman , Neil Armstrong , David Airlie , Kieran Bingham , Magnus Damm , dri-devel@lists.freedesktop.org, Biju Das , linux-renesas-soc@vger.kernel.org, Rob Herring , Jacopo Mondi , Peter Rosin List-Id: dri-devel@lists.freedesktop.org SGkgRmFicml6aW8sCgpUaGFuayB5b3UgZm9yIHRoZSBwYXRjaC4KCk9uIFdlZCwgTm92IDEzLCAy MDE5IGF0IDAzOjUxOjI0UE0gKzAwMDAsIEZhYnJpemlvIENhc3RybyB3cm90ZToKPiBsdmRzLWVu Y29kZXIuYyBpbXBsZW1lbnRhdGlvbiBpcyBhbHNvIHN1aXRhYmxlIGZvciBMVkRTIGRlY29kZXJz LAo+IG5vdCBqdXN0IExWRFMgZW5jb2RlcnMuCj4gSW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBk cml2ZXIgZm9yIGFkZHJlc3Npbmcgc3VwcG9ydCBmb3IKPiB0cmFuc3BhcmVudCBMVkRTIGRlY29k ZXJzLCByZXB1cnBvc2UgbHZkcy1lbmNvZGVyLmMgZm9yIHRoZSBncmVhdGVyCj4gZ29vZCB3aXRo IHRoaXMgcGF0Y2guCj4gCj4gVGhpcyBwYXRjaCBvbmx5ICJyZWJyYW5kcyIgdGhlIGx2ZHMtZW5j b2Rlci5jIGRyaXZlciwgdG8gbWFrZSBpdAo+IHN1aXRhYmxlIGZvciBob3N0aW5nIExWRFMgZGVj b2RlcnMgc3VwcG9ydC4gVGhlIGFjdHVhbCBzdXBwb3J0IGZvcgo+IExWRFMgZGVjb2RlcnMgd2ls bCBjb21lIHdpdGggYSBsYXRlciBwYXRjaC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBGYWJyaXppbyBD YXN0cm8gPGZhYnJpemlvLmNhc3Ryb0BicC5yZW5lc2FzLmNvbT4KClJldmlld2VkLWJ5OiBMYXVy ZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+Cgo+IC0tLQo+ IHYzLT52NDoKPiAqIFRoZSBwYXRjaCBub3cgb25seSByZW5hbWVzIHRoZSBkcml2ZXIgKHdpdGgg cmVsYXRlZCBkYXRhIHN0cnVjdHVyZXMKPiAgIGFuZCBidWlsZCBvcHRpb25zKSwgY2hhbmdlcyB0 aGUgZGVzY3JpcHRpb24gb2YgdGhlIG1vZHVsZSwgYW5kCj4gICByZWZyZXNoZXMgdGhlIGNvcHly aWdodAo+IHYyLT52MzoKPiAqIE5vIGNoYW5nZQo+IHYxLT52MjoKPiAqIE5vIGNoYW5nZQo+IC0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcgICAgICAgICAgICAgICAgICAgICB8 ICA4ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUgICAgICAgICAgICAgICAg ICAgIHwgIDIgKy0KPiAgLi4uL2RybS9icmlkZ2Uve2x2ZHMtZW5jb2Rlci5jID0+IGx2ZHMtY29k ZWMuY30gICAgfCA5NyArKysrKysrKysrKy0tLS0tLS0tLS0tCj4gIDMgZmlsZXMgY2hhbmdlZCwg NTMgaW5zZXJ0aW9ucygrKSwgNTQgZGVsZXRpb25zKC0pCj4gIHJlbmFtZSBkcml2ZXJzL2dwdS9k cm0vYnJpZGdlL3tsdmRzLWVuY29kZXIuYyA9PiBsdmRzLWNvZGVjLmN9ICg0NSUpCj4gCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvS2NvbmZpZwo+IGluZGV4IDM0MzYyOTcuLmZiYmVhNDYgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Jy aWRnZS9LY29uZmlnCj4gQEAgLTQ1LDE0ICs0NSwxNCBAQCBjb25maWcgRFJNX0RVTUJfVkdBX0RB Qwo+ICAJICBTdXBwb3J0IGZvciBub24tcHJvZ3JhbW1hYmxlIFJHQiB0byBWR0EgREFDIGJyaWRn ZXMsIHN1Y2ggYXMgQURJCj4gIAkgIEFEVjcxMjMsIFRJIFRIUzgxMzQgYW5kIFRIUzgxMzUgb3Ig cGFzc2l2ZSByZXNpc3RvciBsYWRkZXIgREFDcy4KPiAgCj4gLWNvbmZpZyBEUk1fTFZEU19FTkNP REVSCj4gLQl0cmlzdGF0ZSAiVHJhbnNwYXJlbnQgcGFyYWxsZWwgdG8gTFZEUyBlbmNvZGVyIHN1 cHBvcnQiCj4gK2NvbmZpZyBEUk1fTFZEU19DT0RFQwo+ICsJdHJpc3RhdGUgIlRyYW5zcGFyZW50 IExWRFMgZW5jb2RlcnMgYW5kIGRlY29kZXJzIHN1cHBvcnQiCj4gIAlkZXBlbmRzIG9uIE9GCj4g IAlzZWxlY3QgRFJNX0tNU19IRUxQRVIKPiAgCXNlbGVjdCBEUk1fUEFORUxfQlJJREdFCj4gIAlo ZWxwCj4gLQkgIFN1cHBvcnQgZm9yIHRyYW5zcGFyZW50IHBhcmFsbGVsIHRvIExWRFMgZW5jb2Rl cnMgdGhhdCBkb24ndCByZXF1aXJlCj4gLQkgIGFueSBjb25maWd1cmF0aW9uLgo+ICsJICBTdXBw b3J0IGZvciB0cmFuc3BhcmVudCBMVkRTIGVuY29kZXJzIGFuZCBkZWNvZGVycyB0aGF0IGRvbid0 Cj4gKwkgIHJlcXVpcmUgYW55IGNvbmZpZ3VyYXRpb24uCj4gIAo+ICBjb25maWcgRFJNX01FR0FD SElQU19TVERQWFhYWF9HRV9CODUwVjNfRlcKPiAgCXRyaXN0YXRlICJNZWdhQ2hpcHMgc3RkcDQw MjgtZ2UtYjg1MHYzLWZ3IGFuZCBzdGRwMjY5MC1nZS1iODUwdjMtZnciCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdl L01ha2VmaWxlCj4gaW5kZXggNDkzNGZjZi4uOGE5MTc4YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9N YWtlZmlsZQo+IEBAIC0yLDcgKzIsNyBAQAo+ICBvYmotJChDT05GSUdfRFJNX0FOQUxPR0lYX0FO WDc4WFgpICs9IGFuYWxvZ2l4LWFueDc4eHgubwo+ICBvYmotJChDT05GSUdfRFJNX0NETlNfRFNJ KSArPSBjZG5zLWRzaS5vCj4gIG9iai0kKENPTkZJR19EUk1fRFVNQl9WR0FfREFDKSArPSBkdW1i LXZnYS1kYWMubwo+IC1vYmotJChDT05GSUdfRFJNX0xWRFNfRU5DT0RFUikgKz0gbHZkcy1lbmNv ZGVyLm8KPiArb2JqLSQoQ09ORklHX0RSTV9MVkRTX0NPREVDKSArPSBsdmRzLWNvZGVjLm8KPiAg b2JqLSQoQ09ORklHX0RSTV9NRUdBQ0hJUFNfU1REUFhYWFhfR0VfQjg1MFYzX0ZXKSArPSBtZWdh Y2hpcHMtc3RkcHh4eHgtZ2UtYjg1MHYzLWZ3Lm8KPiAgb2JqLSQoQ09ORklHX0RSTV9OWFBfUFRO MzQ2MCkgKz0gbnhwLXB0bjM0NjAubwo+ICBvYmotJChDT05GSUdfRFJNX1BBUkFERV9QUzg2MjIp ICs9IHBhcmFkZS1wczg2MjIubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdl L2x2ZHMtZW5jb2Rlci5jIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9sdmRzLWNvZGVjLmMKPiBz aW1pbGFyaXR5IGluZGV4IDQ1JQo+IHJlbmFtZSBmcm9tIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uv bHZkcy1lbmNvZGVyLmMKPiByZW5hbWUgdG8gZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9sdmRzLWNv ZGVjLmMKPiBpbmRleCBlMjEzMmE4Li5iNTgwMWEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9icmlkZ2UvbHZkcy1lbmNvZGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdl L2x2ZHMtY29kZWMuYwo+IEBAIC0xLDUgKzEsNiBAQAo+ICAvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMC1vci1sYXRlcgo+ICAvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTkgUmVu ZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbgo+ICAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTGF1 cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgo+ICAgKi8K PiAgCj4gQEAgLTEyLDY1ICsxMyw2MiBAQAo+ICAjaW5jbHVkZSA8ZHJtL2RybV9icmlkZ2UuaD4K PiAgI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KPiAgCj4gLXN0cnVjdCBsdmRzX2VuY29kZXIg ewo+ICtzdHJ1Y3QgbHZkc19jb2RlYyB7Cj4gIAlzdHJ1Y3QgZHJtX2JyaWRnZSBicmlkZ2U7Cj4g IAlzdHJ1Y3QgZHJtX2JyaWRnZSAqcGFuZWxfYnJpZGdlOwo+ICAJc3RydWN0IGdwaW9fZGVzYyAq cG93ZXJkb3duX2dwaW87Cj4gIH07Cj4gIAo+IC1zdGF0aWMgaW50IGx2ZHNfZW5jb2Rlcl9hdHRh Y2goc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiArc3RhdGljIGludCBsdmRzX2NvZGVjX2F0 dGFjaChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ICB7Cj4gLQlzdHJ1Y3QgbHZkc19lbmNv ZGVyICpsdmRzX2VuY29kZXIgPSBjb250YWluZXJfb2YoYnJpZGdlLAo+IC0JCQkJCQkJIHN0cnVj dCBsdmRzX2VuY29kZXIsCj4gLQkJCQkJCQkgYnJpZGdlKTsKPiArCXN0cnVjdCBsdmRzX2NvZGVj ICpsdmRzX2NvZGVjID0gY29udGFpbmVyX29mKGJyaWRnZSwKPiArCQkJCQkJICAgICBzdHJ1Y3Qg bHZkc19jb2RlYywgYnJpZGdlKTsKPiAgCj4gLQlyZXR1cm4gZHJtX2JyaWRnZV9hdHRhY2goYnJp ZGdlLT5lbmNvZGVyLCBsdmRzX2VuY29kZXItPnBhbmVsX2JyaWRnZSwKPiArCXJldHVybiBkcm1f YnJpZGdlX2F0dGFjaChicmlkZ2UtPmVuY29kZXIsIGx2ZHNfY29kZWMtPnBhbmVsX2JyaWRnZSwK PiAgCQkJCSBicmlkZ2UpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBsdmRzX2VuY29kZXJfZW5h YmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gK3N0YXRpYyB2b2lkIGx2ZHNfY29kZWNf ZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gIHsKPiAtCXN0cnVjdCBsdmRzX2Vu Y29kZXIgKmx2ZHNfZW5jb2RlciA9IGNvbnRhaW5lcl9vZihicmlkZ2UsCj4gLQkJCQkJCQkgc3Ry dWN0IGx2ZHNfZW5jb2RlciwKPiAtCQkJCQkJCSBicmlkZ2UpOwo+ICsJc3RydWN0IGx2ZHNfY29k ZWMgKmx2ZHNfY29kZWMgPSBjb250YWluZXJfb2YoYnJpZGdlLAo+ICsJCQkJCQkgICAgIHN0cnVj dCBsdmRzX2NvZGVjLCBicmlkZ2UpOwo+ICAKPiAtCWlmIChsdmRzX2VuY29kZXItPnBvd2VyZG93 bl9ncGlvKQo+IC0JCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChsdmRzX2VuY29kZXItPnBvd2Vy ZG93bl9ncGlvLCAwKTsKPiArCWlmIChsdmRzX2NvZGVjLT5wb3dlcmRvd25fZ3BpbykKPiArCQln cGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAobHZkc19jb2RlYy0+cG93ZXJkb3duX2dwaW8sIDApOwo+ ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBsdmRzX2VuY29kZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX2Jy aWRnZSAqYnJpZGdlKQo+ICtzdGF0aWMgdm9pZCBsdmRzX2NvZGVjX2Rpc2FibGUoc3RydWN0IGRy bV9icmlkZ2UgKmJyaWRnZSkKPiAgewo+IC0Jc3RydWN0IGx2ZHNfZW5jb2RlciAqbHZkc19lbmNv ZGVyID0gY29udGFpbmVyX29mKGJyaWRnZSwKPiAtCQkJCQkJCSBzdHJ1Y3QgbHZkc19lbmNvZGVy LAo+IC0JCQkJCQkJIGJyaWRnZSk7Cj4gKwlzdHJ1Y3QgbHZkc19jb2RlYyAqbHZkc19jb2RlYyA9 IGNvbnRhaW5lcl9vZihicmlkZ2UsCj4gKwkJCQkJCSAgICAgc3RydWN0IGx2ZHNfY29kZWMsIGJy aWRnZSk7Cj4gIAo+IC0JaWYgKGx2ZHNfZW5jb2Rlci0+cG93ZXJkb3duX2dwaW8pCj4gLQkJZ3Bp b2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGx2ZHNfZW5jb2Rlci0+cG93ZXJkb3duX2dwaW8sIDEpOwo+ ICsJaWYgKGx2ZHNfY29kZWMtPnBvd2VyZG93bl9ncGlvKQo+ICsJCWdwaW9kX3NldF92YWx1ZV9j YW5zbGVlcChsdmRzX2NvZGVjLT5wb3dlcmRvd25fZ3BpbywgMSk7Cj4gIH0KPiAgCj4gIHN0YXRp YyBzdHJ1Y3QgZHJtX2JyaWRnZV9mdW5jcyBmdW5jcyA9IHsKPiAtCS5hdHRhY2ggPSBsdmRzX2Vu Y29kZXJfYXR0YWNoLAo+IC0JLmVuYWJsZSA9IGx2ZHNfZW5jb2Rlcl9lbmFibGUsCj4gLQkuZGlz YWJsZSA9IGx2ZHNfZW5jb2Rlcl9kaXNhYmxlLAo+ICsJLmF0dGFjaCA9IGx2ZHNfY29kZWNfYXR0 YWNoLAo+ICsJLmVuYWJsZSA9IGx2ZHNfY29kZWNfZW5hYmxlLAo+ICsJLmRpc2FibGUgPSBsdmRz X2NvZGVjX2Rpc2FibGUsCj4gIH07Cj4gIAo+IC1zdGF0aWMgaW50IGx2ZHNfZW5jb2Rlcl9wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICtzdGF0aWMgaW50IGx2ZHNfY29kZWNf cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgewo+ICAJc3RydWN0IGRldmlj ZSAqZGV2ID0gJnBkZXYtPmRldjsKPiAgCXN0cnVjdCBkZXZpY2Vfbm9kZSAqcG9ydDsKPiAgCXN0 cnVjdCBkZXZpY2Vfbm9kZSAqZW5kcG9pbnQ7Cj4gIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKnBhbmVs X25vZGU7Cj4gIAlzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbDsKPiAtCXN0cnVjdCBsdmRzX2VuY29k ZXIgKmx2ZHNfZW5jb2RlcjsKPiArCXN0cnVjdCBsdmRzX2NvZGVjICpsdmRzX2NvZGVjOwo+ICAK PiAtCWx2ZHNfZW5jb2RlciA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqbHZkc19lbmNvZGVy KSwgR0ZQX0tFUk5FTCk7Cj4gLQlpZiAoIWx2ZHNfZW5jb2RlcikKPiArCWx2ZHNfY29kZWMgPSBk ZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmx2ZHNfY29kZWMpLCBHRlBfS0VSTkVMKTsKPiArCWlm ICghbHZkc19jb2RlYykKPiAgCQlyZXR1cm4gLUVOT01FTTsKPiAgCj4gLQlsdmRzX2VuY29kZXIt PnBvd2VyZG93bl9ncGlvID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGV2LCAicG93ZXJkb3du IiwKPiAtCQkJCQkJCSAgICAgICBHUElPRF9PVVRfSElHSCk7Cj4gLQlpZiAoSVNfRVJSKGx2ZHNf ZW5jb2Rlci0+cG93ZXJkb3duX2dwaW8pKSB7Cj4gLQkJaW50IGVyciA9IFBUUl9FUlIobHZkc19l bmNvZGVyLT5wb3dlcmRvd25fZ3Bpbyk7Cj4gKwlsdmRzX2NvZGVjLT5wb3dlcmRvd25fZ3BpbyA9 IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgInBvd2VyZG93biIsCj4gKwkJCQkJCQkgICAg IEdQSU9EX09VVF9ISUdIKTsKPiArCWlmIChJU19FUlIobHZkc19jb2RlYy0+cG93ZXJkb3duX2dw aW8pKSB7Cj4gKwkJaW50IGVyciA9IFBUUl9FUlIobHZkc19jb2RlYy0+cG93ZXJkb3duX2dwaW8p Owo+ICAKPiAgCQlpZiAoZXJyICE9IC1FUFJPQkVfREVGRVIpCj4gIAkJCWRldl9lcnIoZGV2LCAi cG93ZXJkb3duIEdQSU8gZmFpbHVyZTogJWRcbiIsIGVycik7Cj4gQEAgLTEwNSw1MSArMTAzLDUy IEBAIHN0YXRpYyBpbnQgbHZkc19lbmNvZGVyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCj4gIAkJcmV0dXJuIFBUUl9FUlIocGFuZWwpOwo+ICAJfQo+ICAKPiAtCWx2ZHNfZW5j b2Rlci0+cGFuZWxfYnJpZGdlID0KPiArCWx2ZHNfY29kZWMtPnBhbmVsX2JyaWRnZSA9Cj4gIAkJ ZGV2bV9kcm1fcGFuZWxfYnJpZGdlX2FkZF90eXBlZChkZXYsIHBhbmVsLAo+ICAJCQkJCQlEUk1f TU9ERV9DT05ORUNUT1JfTFZEUyk7Cj4gLQlpZiAoSVNfRVJSKGx2ZHNfZW5jb2Rlci0+cGFuZWxf YnJpZGdlKSkKPiAtCQlyZXR1cm4gUFRSX0VSUihsdmRzX2VuY29kZXItPnBhbmVsX2JyaWRnZSk7 Cj4gKwlpZiAoSVNfRVJSKGx2ZHNfY29kZWMtPnBhbmVsX2JyaWRnZSkpCj4gKwkJcmV0dXJuIFBU Ul9FUlIobHZkc19jb2RlYy0+cGFuZWxfYnJpZGdlKTsKPiAgCj4gLQkvKiBUaGUgcGFuZWxfYnJp ZGdlIGJyaWRnZSBpcyBhdHRhY2hlZCB0byB0aGUgcGFuZWwncyBvZl9ub2RlLAo+ICsJLyoKPiAr CSAqIFRoZSBwYW5lbF9icmlkZ2UgYnJpZGdlIGlzIGF0dGFjaGVkIHRvIHRoZSBwYW5lbCdzIG9m X25vZGUsCj4gIAkgKiBidXQgd2UgbmVlZCBhIGJyaWRnZSBhdHRhY2hlZCB0byBvdXIgb2Zfbm9k ZSBmb3Igb3VyIHVzZXIKPiAgCSAqIHRvIGxvb2sgdXAuCj4gIAkgKi8KPiAtCWx2ZHNfZW5jb2Rl ci0+YnJpZGdlLm9mX25vZGUgPSBkZXYtPm9mX25vZGU7Cj4gLQlsdmRzX2VuY29kZXItPmJyaWRn ZS5mdW5jcyA9ICZmdW5jczsKPiAtCWRybV9icmlkZ2VfYWRkKCZsdmRzX2VuY29kZXItPmJyaWRn ZSk7Cj4gKwlsdmRzX2NvZGVjLT5icmlkZ2Uub2Zfbm9kZSA9IGRldi0+b2Zfbm9kZTsKPiArCWx2 ZHNfY29kZWMtPmJyaWRnZS5mdW5jcyA9ICZmdW5jczsKPiArCWRybV9icmlkZ2VfYWRkKCZsdmRz X2NvZGVjLT5icmlkZ2UpOwo+ICAKPiAtCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGx2ZHNf ZW5jb2Rlcik7Cj4gKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBsdmRzX2NvZGVjKTsKPiAg Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBsdmRzX2VuY29kZXJfcmVtb3Zl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3N0YXRpYyBpbnQgbHZkc19jb2RlY19y ZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgewo+IC0Jc3RydWN0IGx2ZHNf ZW5jb2RlciAqbHZkc19lbmNvZGVyID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4gKwlz dHJ1Y3QgbHZkc19jb2RlYyAqbHZkc19jb2RlYyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYp Owo+ICAKPiAtCWRybV9icmlkZ2VfcmVtb3ZlKCZsdmRzX2VuY29kZXItPmJyaWRnZSk7Cj4gKwlk cm1fYnJpZGdlX3JlbW92ZSgmbHZkc19jb2RlYy0+YnJpZGdlKTsKPiAgCj4gIAlyZXR1cm4gMDsK PiAgfQo+ICAKPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbHZkc19lbmNvZGVy X21hdGNoW10gPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGx2ZHNfY29k ZWNfbWF0Y2hbXSA9IHsKPiAgCXsgLmNvbXBhdGlibGUgPSAibHZkcy1lbmNvZGVyIiB9LAo+ICAJ eyAuY29tcGF0aWJsZSA9ICJ0aGluZSx0aGM2M2x2ZG04M2QiIH0sCj4gIAl7fSwKPiAgfTsKPiAt TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbHZkc19lbmNvZGVyX21hdGNoKTsKPiArTU9EVUxFX0RF VklDRV9UQUJMRShvZiwgbHZkc19jb2RlY19tYXRjaCk7Cj4gIAo+IC1zdGF0aWMgc3RydWN0IHBs YXRmb3JtX2RyaXZlciBsdmRzX2VuY29kZXJfZHJpdmVyID0gewo+IC0JLnByb2JlCT0gbHZkc19l bmNvZGVyX3Byb2JlLAo+IC0JLnJlbW92ZQk9IGx2ZHNfZW5jb2Rlcl9yZW1vdmUsCj4gK3N0YXRp YyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGx2ZHNfY29kZWNfZHJpdmVyID0gewo+ICsJLnByb2Jl CT0gbHZkc19jb2RlY19wcm9iZSwKPiArCS5yZW1vdmUJPSBsdmRzX2NvZGVjX3JlbW92ZSwKPiAg CS5kcml2ZXIJCT0gewo+IC0JCS5uYW1lCQk9ICJsdmRzLWVuY29kZXIiLAo+IC0JCS5vZl9tYXRj aF90YWJsZQk9IGx2ZHNfZW5jb2Rlcl9tYXRjaCwKPiArCQkubmFtZQkJPSAibHZkcy1jb2RlYyIs Cj4gKwkJLm9mX21hdGNoX3RhYmxlCT0gbHZkc19jb2RlY19tYXRjaCwKPiAgCX0sCj4gIH07Cj4g LW1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobHZkc19lbmNvZGVyX2RyaXZlcik7Cj4gK21vZHVsZV9w bGF0Zm9ybV9kcml2ZXIobHZkc19jb2RlY19kcml2ZXIpOwo+ICAKPiAgTU9EVUxFX0FVVEhPUigi TGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPiIpOwo+ IC1NT0RVTEVfREVTQ1JJUFRJT04oIlRyYW5zcGFyZW50IHBhcmFsbGVsIHRvIExWRFMgZW5jb2Rl ciIpOwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkxWRFMgZW5jb2RlcnMgYW5kIGRlY29kZXJzIik7 Cj4gIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKCi0tIApSZWdhcmRzLAoKTGF1cmVudCBQaW5jaGFy dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=