From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH 21/60] drm/panel: Add driver for the Sharp LS037V7DW01 panel Date: Thu, 8 Aug 2019 18:31:25 +0300 Message-ID: <20190808153125.GQ6055@pendragon.ideasonboard.com> References: <20190707180852.5512-1-laurent.pinchart@ideasonboard.com> <20190707181937.6250-1-laurent.pinchart@ideasonboard.com> <20190707181937.6250-18-laurent.pinchart@ideasonboard.com> <20190708194452.GA5192@ravnborg.org> 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 [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by gabe.freedesktop.org (Postfix) with ESMTPS id B750D6E86D for ; Thu, 8 Aug 2019 15:31:30 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190708194452.GA5192@ravnborg.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sam Ravnborg Cc: Maxime Ripard , Sebastian Reichel , dri-devel@lists.freedesktop.org, Tomi Valkeinen , Thierry Reding , Sean Paul List-Id: dri-devel@lists.freedesktop.org SGkgU2FtLAoKT24gTW9uLCBKdWwgMDgsIDIwMTkgYXQgMDk6NDQ6NTJQTSArMDIwMCwgU2FtIFJh dm5ib3JnIHdyb3RlOgo+IEhpIExhdXJlbnQuCj4gCj4gVGhpcmQgcGFuZWwgZHJpdmVyIGluIGxp bmUgZm9yIHJldmlldy4KPiBSZXZpZXcgY29tbWVudHMgdGhhdCBhcmUgZHVwbGljYXRlcyBmcm9t IHRoZSBmaXJzdCB0d28gd2lsbCBoYXZlIG9ubHkgYQo+IGJyaWVmIHJlbWFyayAtIGlmIGFueS4K CkknbGwgYWRkcmVzcyB0aGVtIHRoZSBzYW1lIHdheS4gUGxlYXNlIGNvbnNpZGVyIGFsbCB1bmFu c3dlcmVkIGNvbW1lbnRzCmJlbG93IGFzIGFkZHJlc3NlZC4KCj4gT24gU3VuLCBKdWwgMDcsIDIw MTkgYXQgMDk6MTg6NThQTSArMDMwMCwgTGF1cmVudCBQaW5jaGFydCB3cm90ZToKPiA+IFRoaXMg cGFuZWwgaXMgdXNlZCBvbiB0aGUgU0RQMzQzMC4KPgo+IEFkZCBhIGxpdHRsZSBtb3JlIGNvbnRl eHQgYW5kIHB1dCBpdCBpbiBLY29uZmlnIGhlbHAuCj4gTWF5YmUgdGhpcyBpcyB0aGUgVEkgYm9h cmQsIGFuZCBtYXliZSBpdCBpcyBzb21ldGhpbmcgZWxzZS4KPiAKPiA+IFNpZ25lZC1vZmYtYnk6 IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KPiA+ IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnICAgICAgICAgICAgICAgICB8 ICAgNyArCj4gPiAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlICAgICAgICAgICAgICAg IHwgICAxICsKPiA+ICAuLi4vZ3B1L2RybS9wYW5lbC9wYW5lbC1zaGFycC1sczAzN3Y3ZHcwMS5j ICAgfCAyMzEgKysrKysrKysrKysrKysrKysrCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAyMzkgaW5z ZXJ0aW9ucygrKQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcGFuZWwv cGFuZWwtc2hhcnAtbHMwMzd2N2R3MDEuYwo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3BhbmVsL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwo+ID4g aW5kZXggZGE2MTNjMDRiODM1Li4wNGZkMTUyZWZlNGMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vcGFuZWwvS2NvbmZpZwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tj b25maWcKPiA+IEBAIC0yNzEsNiArMjcxLDEzIEBAIGNvbmZpZyBEUk1fUEFORUxfU0hBUlBfTFMw NDNUMUxFMDEKPiA+ICAJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0 IGZvciBTaGFycCBMUzA0M1QxTEUwMSBxSEQKPiA+ICAJICAoNTQweDk2MCkgRFNJIHBhbmVsIGFz IGZvdW5kIG9uIHRoZSBRdWFsY29tbSBBUFE4MDc0IERyYWdvbmJvYXJkCj4gPiAgCj4gPiArY29u ZmlnIERSTV9QQU5FTF9TSEFSUF9MUzAzN1Y3RFcwMQo+ID4gKwl0cmlzdGF0ZSAiU2hhcnAgTFMw MzdWN0RXMDEgVkdBIExDRCBwYW5lbCIKPiA+ICsJZGVwZW5kcyBvbiBHUElPTElCICYmIE9GICYm IFJFR1VMQVRPUgo+ID4gKwloZWxwCj4gPiArCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBl bmFibGUgc3VwcG9ydCBmb3IgU2hhcnAgTFMwMzdWN0RXMDEgVkdBCj4gPiArCSAgKDQ4MHg2NDAp IExDRCBwYW5lbC4KPiA+ICsKPiAKPiBBbHBoYWJldGljYWwgb3JkZXIsIHNvIGl0IGNvbWVzIGJl Zm9yZSBEUk1fUEFORUxfU0hBUlBfTFMwNDNUMUxFMDEKPiAKPiA+ICBjb25maWcgRFJNX1BBTkVM X1NJVFJPTklYX1NUNzcwMQo+ID4gIAl0cmlzdGF0ZSAiU2l0cm9uaXggU1Q3NzAxIHBhbmVsIGRy aXZlciIKPiA+ICAJZGVwZW5kcyBvbiBPRgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9wYW5lbC9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQo+ID4gaW5k ZXggZTgxZWQxNTM1MDI0Li4xMmRjZDc2ZWI4N2MgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vcGFuZWwvTWFrZWZpbGUKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtl ZmlsZQo+ID4gQEAgLTI3LDYgKzI3LDcgQEAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TQU1TVU5H X1M2RTYzTTApICs9IHBhbmVsLXNhbXN1bmctczZlNjNtMC5vCj4gPiAgb2JqLSQoQ09ORklHX0RS TV9QQU5FTF9TQU1TVU5HX1M2RThBQTApICs9IHBhbmVsLXNhbXN1bmctczZlOGFhMC5vCj4gPiAg b2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TRUlLT180M1dWRjFHKSArPSBwYW5lbC1zZWlrby00M3d2 ZjFnLm8KPiA+ICBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NIQVJQX0xRMTAxUjFTWDAxKSArPSBw YW5lbC1zaGFycC1scTEwMXIxc3gwMS5vCj4gPiArb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TSEFS UF9MUzAzN1Y3RFcwMSkgKz0gcGFuZWwtc2hhcnAtbHMwMzd2N2R3MDEubwo+ID4gIG9iai0kKENP TkZJR19EUk1fUEFORUxfU0hBUlBfTFMwNDNUMUxFMDEpICs9IHBhbmVsLXNoYXJwLWxzMDQzdDFs ZTAxLm8KPiAKPiBBbmQgaGVyZSBpdCBpcyByaWdodC4KPiAKPiA+IC0tLSAvZGV2L251bGwKPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zaGFycC1sczAzN3Y3ZHcwMS5jCj4g PiBAQCAtMCwwICsxLDIzMSBAQAo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wCj4gPiArLyoKPiA+ICsgKiBTaGFycCBMUzAzN1Y3RFcwMSBMQ0QgUGFuZWwgRHJpdmVyCj4g PiArICoKPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTkgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jw b3JhdGVkCj4gPiArICoKPiA+ICsgKiBCYXNlZCBvbiB0aGUgb21hcGRybS1zcGVjaWZpYyBwYW5l bC1zaGFycC1sczAzN3Y3ZHcwMSBkcml2ZXIKPiA+ICsgKgo+ID4gKyAqIENvcHlyaWdodCAoQykg MjAxMyBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQKPiA+ICsgKiBBdXRob3I6IFRvbWkg VmFsa2VpbmVuIDx0b21pLnZhbGtlaW5lbkB0aS5jb20+Cj4gCj4gQWRkIHlvdXIgY29weXJpZ2h0 PwoKQXMgd2l0aCB0aGUgcHJldmlvdXMgcGF0Y2hlcywgdGhlIGNvcHlyaWdodCBnb2VzIHRvIFRJ LgoKPiA+ICtzdHJ1Y3QgbHMwMzd2N2R3MDFfZGV2aWNlIHsKPiA+ICsJc3RydWN0IGRybV9wYW5l bCBwYW5lbDsKPiA+ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsKPiA+ICsKPiA+ICsJ c3RydWN0IHJlZ3VsYXRvciAqdmNjOwo+IAo+IFRoZSBwcm9wZXJ0eSBpcyBuYW1lZCBlbnZkZCAt IHNob3VsZCB0aGV5IHVzZSB0aGUgc2FtZSBuYW1lPwoKSSdsbCByZW5hbWUgdGhhdCB0byB2ZGQu Cgo+ID4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpyZXNiX2dwaW87CS8qIGxvdyA9IHJlc2V0IGFjdGl2 ZSBtaW4gMjAgdXMgKi8KPiA+ICsJc3RydWN0IGdwaW9fZGVzYyAqaW5pX2dwaW87CS8qIGhpZ2gg PSBwb3dlciBvbiAqLwo+ID4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICptb19ncGlvOwkvKiBsb3cgPSA0 ODB4NjQwLCBoaWdoID0gMjQweDMyMCAqLwo+ID4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpscl9ncGlv OwkvKiBoaWdoID0gY29udmVudGlvbmFsIGhvcml6b250YWwgc2Nhbm5pbmcgKi8KPiA+ICsJc3Ry dWN0IGdwaW9fZGVzYyAqdWRfZ3BpbzsJLyogaGlnaCA9IGNvbnZlbnRpb25hbCB2ZXJ0aWNhbCBz Y2FubmluZyAqLwo+ID4gK307Cj4gCj4gZGV2aWNlIHZlcnN1cyBwYW5lbCwgYnV0IGJpa2VzaGVk ZGluZywgc28gZmVlbCBmcmVlIHRvIGlnbm9yZS4KCkknbGwgcmVuYW1lIGl0LgoKPiA+ICsKPiA+ ICtzdGF0aWMgaW50IGxzMDM3djdkdzAxX2Rpc2FibGUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwp Cj4gPiArewo+ID4gKwlzdHJ1Y3QgbHMwMzd2N2R3MDFfZGV2aWNlICpsY2QgPSB0b19sczAzN3Y3 ZHcwMV9kZXZpY2UocGFuZWwpOwo+ID4gKwo+ID4gKwlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAo bGNkLT5pbmlfZ3BpbywgMCk7Cj4gPiArCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChsY2QtPnJl c2JfZ3BpbywgMCk7Cj4gPiArCj4gPiArCS8qIFdhaXQgYXQgbGVhc3QgNSB2c3luY3MgYWZ0ZXIg ZGlzYWJsaW5nIHRoZSBMQ0QuICovCj4gPiArCW1zbGVlcCgxMDApOwo+ID4gKwo+ID4gKwlyZXR1 cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBsczAzN3Y3ZHcwMV91bnByZXBhcmUo c3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gPiArewo+ID4gKwlzdHJ1Y3QgbHMwMzd2N2R3MDFf ZGV2aWNlICpsY2QgPSB0b19sczAzN3Y3ZHcwMV9kZXZpY2UocGFuZWwpOwo+ID4gKwo+ID4gKwlp ZiAobGNkLT52Y2MpCj4gPiArCQlyZWd1bGF0b3JfZGlzYWJsZShsY2QtPnZjYyk7Cj4gCj4gV2h5 IGlzIHRoZSBpZiAobGNkLXZjYykgbmVlZGVkPwo+IElmIEkgcmVhZCB0aGUgcHJvYmUgY29kZSBj b3JyZWN0IHRoZW4gd2UgZWl0aGVyIGdldCBhIHJlZ3VsYXRvciBvciB3ZQo+IGVycm9yIG91dC4K PiAKPiBTYW1lIGdvZXMgZm9yIGFsbCBvdGhlciBjaGVja3Mgb2YgbGNkLT52Y2MKPiAKPiA+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgbHMwMzd2N2R3MDFfbW9kZSA9IHsK PiA+ICsJLmNsb2NrID0gMTkyMDAsCj4gPiArCS5oZGlzcGxheSA9IDQ4MCwKPiA+ICsJLmhzeW5j X3N0YXJ0ID0gNDgwICsgMSwKPiA+ICsJLmhzeW5jX2VuZCA9IDQ4MCArIDEgKyAyLAo+ID4gKwku aHRvdGFsID0gNDgwICsgMSArIDIgKyAyOCwKPiA+ICsJLnZkaXNwbGF5ID0gNjQwLAo+ID4gKwku dnN5bmNfc3RhcnQgPSA2NDAgKyAxLAo+ID4gKwkudnN5bmNfZW5kID0gNjQwICsgMSArIDEsCj4g PiArCS52dG90YWwgPSA2NDAgKyAxICsgMSArIDEsCj4gPiArCS52cmVmcmVzaCA9IDU4LAo+ID4g KwkudHlwZSA9IERSTV9NT0RFX1RZUEVfRFJJVkVSIHwgRFJNX01PREVfVFlQRV9QUkVGRVJSRUQs Cj4gPiArCS5mbGFncyA9IERSTV9NT0RFX0ZMQUdfTkhTWU5DIHwgRFJNX01PREVfRkxBR19OVlNZ TkMsCj4gPiArfTsKPiA+ICsKPiA+ICtzdGF0aWMgaW50IGxzMDM3djdkdzAxX2dldF9tb2Rlcyhz dHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IgPSBwYW5lbC0+Y29ubmVjdG9yOwo+ID4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqbW9kZTsKPiA+ICsKPiA+ICsJbW9kZSA9IGRybV9tb2RlX2R1cGxpY2F0ZShwYW5lbC0+ ZHJtLCAmbHMwMzd2N2R3MDFfbW9kZSk7Cj4gPiArCWlmICghbW9kZSkKPiA+ICsJCXJldHVybiAt RU5PTUVNOwo+ID4gKwo+ID4gKwlkcm1fbW9kZV9zZXRfbmFtZShtb2RlKTsKPiA+ICsJZHJtX21v ZGVfcHJvYmVkX2FkZChjb25uZWN0b3IsIG1vZGUpOwo+ID4gKwo+ID4gKwljb25uZWN0b3ItPmRp c3BsYXlfaW5mby53aWR0aF9tbSA9IDU2Owo+ID4gKwljb25uZWN0b3ItPmRpc3BsYXlfaW5mby5o ZWlnaHRfbW0gPSA3NTsKPiA+ICsJLyoKPiA+ICsJICogRklYTUU6IEFjY29yZGluZyB0byB0aGUg ZGF0YXNoZWV0IHBpeGVsIGRhdGEgaXMgc2FtcGxlZCBvbiB0aGUKPiA+ICsJICogcmlzaW5nIGVk Z2Ugb2YgdGhlIGNsb2NrLCBidXQgdGhlIGNvZGUgcnVubmluZyBvbiB0aGUgU0RQMzQzMAo+ID4g KwkgKiBpbmRpY2F0ZXMgc2FtcGxpbmcgb24gdGhlIG5lZ2F0aXZlIGVkZ2UuIFRoaXMgc2hvdWxk IGJlIHRlc3RlZCBvbiBhCj4gPiArCSAqIHJlYWwgZGV2aWNlLgo+ID4gKwkgKi8KPiA+ICsJY29u bmVjdG9yLT5kaXNwbGF5X2luZm8uYnVzX2ZsYWdzID0gRFJNX0JVU19GTEFHX0RFX0hJR0gKPiA+ ICsJCQkJCSAgfCBEUk1fQlVTX0ZMQUdfU1lOQ19TQU1QTEVfUE9TRURHRQo+ID4gKwkJCQkJICB8 IERSTV9CVVNfRkxBR19QSVhEQVRBX1NBTVBMRV9ORUdFREdFOwo+ID4gKwo+ID4gKwlyZXR1cm4g MTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGFuZWxfZnVuY3Mg bHMwMzd2N2R3MDFfZnVuY3MgPSB7Cj4gPiArCS5kaXNhYmxlID0gbHMwMzd2N2R3MDFfZGlzYWJs ZSwKPiA+ICsJLnVucHJlcGFyZSA9IGxzMDM3djdkdzAxX3VucHJlcGFyZSwKPiA+ICsJLnByZXBh cmUgPSBsczAzN3Y3ZHcwMV9wcmVwYXJlLAo+ID4gKwkuZW5hYmxlID0gbHMwMzd2N2R3MDFfZW5h YmxlLAo+ID4gKwkuZ2V0X21vZGVzID0gbHMwMzd2N2R3MDFfZ2V0X21vZGVzLAo+ID4gK307Cj4g PiArCj4gPiArc3RhdGljIGludCBsczAzN3Y3ZHcwMV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2KQo+ID4gK3sKPiA+ICsJc3RydWN0IGxzMDM3djdkdzAxX2RldmljZSAqbGNkOwo+ ID4gKwo+ID4gKwlsY2QgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpsY2QpLCBH RlBfS0VSTkVMKTsKPiA+ICsJaWYgKGxjZCA9PSBOVUxMKQo+ID4gKwkJcmV0dXJuIC1FTk9NRU07 Cj4gPiArCj4gPiArCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGxjZCk7Cj4gPiArCWxjZC0+ cGRldiA9IHBkZXY7Cj4gPiArCj4gPiArCWxjZC0+dmNjID0gZGV2bV9yZWd1bGF0b3JfZ2V0KCZw ZGV2LT5kZXYsICJlbnZkZCIpOwo+ID4gKwlpZiAoSVNfRVJSKGxjZC0+dmNjKSkgewo+ID4gKwkJ ZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGdldCByZWd1bGF0b3JcbiIpOwo+ID4gKwkJ cmV0dXJuIFBUUl9FUlIobGNkLT52Y2MpOwo+ID4gKwl9Cj4gPiArCj4gPiArCWxjZC0+aW5pX2dw aW8gPSBkZXZtX2dwaW9kX2dldF9pbmRleCgmcGRldi0+ZGV2LCAiZW5hYmxlIiwgMCwKPiA+ICsJ CQkJCSAgICBHUElPRF9PVVRfTE9XKTsKPiA+ICsJaWYgKElTX0VSUihsY2QtPmluaV9ncGlvKSkg ewo+ID4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGdldCBlbmFibGUgZ3Bpb1xu Iik7Cj4gPiArCQlyZXR1cm4gUFRSX0VSUihsY2QtPmluaV9ncGlvKTsKPiA+ICsJfQo+IAo+IEkg ZmFpbCB0byBzZWUgd2h5IHRoZSBfaW5kZXgoKSB2YXJpYW50IGlzIHVzZWQgaGVyZS4KPiBCdXQg dGhlbiBJIGRpZCBub3QgY2hlY2sgdGhlIGJpbmRpbmcsIHNvIGl0IG1heSBvcmlnaW5hdGUgZnJv bSB0aGF0Lgo+IFNhbWUgZ29lcyBmb3IgaXJlc2V0IGdwaW8KPiAKPiA+ICsKPiA+ICsJbGNkLT5y ZXNiX2dwaW8gPSBkZXZtX2dwaW9kX2dldF9pbmRleCgmcGRldi0+ZGV2LCAicmVzZXQiLCAwLAo+ ID4gKwkJCQkJICAgICBHUElPRF9PVVRfTE9XKTsKPiA+ICsJaWYgKElTX0VSUihsY2QtPnJlc2Jf Z3BpbykpIHsKPiA+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byBnZXQgcmVzZXQg Z3Bpb1xuIik7Cj4gPiArCQlyZXR1cm4gUFRSX0VSUihsY2QtPnJlc2JfZ3Bpbyk7Cj4gPiArCX0K PiA+ICsKPiA+ICsJbGNkLT5tb19ncGlvID0gZGV2bV9ncGlvZF9nZXRfaW5kZXgoJnBkZXYtPmRl diwgIm1vZGUiLCAwLAo+ID4gKwkJCQkJICAgR1BJT0RfT1VUX0xPVyk7Cj4gPiArCWlmIChJU19F UlIobGNkLT5tb19ncGlvKSkgewo+ID4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRv IGdldCBtb2RlWzBdIGdwaW9cbiIpOwo+ID4gKwkJcmV0dXJuIFBUUl9FUlIobGNkLT5tb19ncGlv KTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlsY2QtPmxyX2dwaW8gPSBkZXZtX2dwaW9kX2dldF9pbmRl eCgmcGRldi0+ZGV2LCAibW9kZSIsIDEsCj4gPiArCQkJCQkgICBHUElPRF9PVVRfTE9XKTsKPiA+ ICsJaWYgKElTX0VSUihsY2QtPmxyX2dwaW8pKSB7Cj4gPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYs ICJmYWlsZWQgdG8gZ2V0IG1vZGVbMV0gZ3Bpb1xuIik7Cj4gPiArCQlyZXR1cm4gUFRSX0VSUihs Y2QtPmxyX2dwaW8pOwo+ID4gKwl9Cj4gPiArCj4gPiArCWxjZC0+dWRfZ3BpbyA9IGRldm1fZ3Bp b2RfZ2V0X2luZGV4KCZwZGV2LT5kZXYsICJtb2RlIiwgMiwKPiA+ICsJCQkJCSAgIEdQSU9EX09V VF9MT1cpOwo+ID4gKwlpZiAoSVNfRVJSKGxjZC0+dWRfZ3BpbykpIHsKPiA+ICsJCWRldl9lcnIo JnBkZXYtPmRldiwgImZhaWxlZCB0byBnZXQgbW9kZVsyXSBncGlvXG4iKTsKPiA+ICsJCXJldHVy biBQVFJfRVJSKGxjZC0+dWRfZ3Bpbyk7Cj4gPiArCX0KPiAKPiBEbyB3ZSBzZXQgbW8sIGxyICx1 ZCBncGlvIHdoZW4gd2UgY2FsbCBkZXZtX2dwaW9kX2dldCwgb3IgYXJlIHRoZXkKPiB1bnVzZWQ/ CgpUaGV5IGFyZSBzZXQgYnkgR1BJT0RfT1VUX0xPVy4KCj4gPiArCj4gPiArCWRybV9wYW5lbF9p bml0KCZsY2QtPnBhbmVsKTsKPiA+ICsJbGNkLT5wYW5lbC5kZXYgPSAmcGRldi0+ZGV2Owo+ID4g KwlsY2QtPnBhbmVsLmZ1bmNzID0gJmxzMDM3djdkdzAxX2Z1bmNzOwo+ID4gKwo+ID4gKwlyZXR1 cm4gZHJtX3BhbmVsX2FkZCgmbGNkLT5wYW5lbCk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBp bnQgbHMwMzd2N2R3MDFfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gPiAr ewo+ID4gKwlzdHJ1Y3QgbHMwMzd2N2R3MDFfZGV2aWNlICpsY2QgPSBwbGF0Zm9ybV9nZXRfZHJ2 ZGF0YShwZGV2KTsKPiA+ICsKPiA+ICsJZHJtX3BhbmVsX3JlbW92ZSgmbGNkLT5wYW5lbCk7Cj4g PiArCWxzMDM3djdkdzAxX2Rpc2FibGUoJmxjZC0+cGFuZWwpOwo+ID4gKwlsczAzN3Y3ZHcwMV91 bnByZXBhcmUoJmxjZC0+cGFuZWwpOwo+IAo+IFVzZSBkcm1fcGFuZWxfZGlzYWJsZSgpLCBkcm1f cGFuZWxfdW5wcmVwYXJlKCkKPiAKPiA+ICsKPiA+ICsJcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGxzMDM3djdkdzAxX29mX21hdGNo W10gPSB7Cj4gPiArCXsgLmNvbXBhdGlibGUgPSAic2hhcnAsbHMwMzd2N2R3MDEiLCB9LAo+ID4g Kwl7fSwKPiAKPiB7IC8qIHNlbnRpbmVsICovIH0sCj4gCj4gPiArfTsKPiA+ICsKPiA+ICtNT0RV TEVfREVWSUNFX1RBQkxFKG9mLCBsczAzN3Y3ZHcwMV9vZl9tYXRjaCk7Cj4gPiArCj4gPiArc3Rh dGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbHMwMzd2N2R3MDFfZHJpdmVyID0gewo+ID4gKwku cHJvYmUJCT0gbHMwMzd2N2R3MDFfcHJvYmUsCj4gPiArCS5yZW1vdmUJCT0gX19leGl0X3AobHMw Mzd2N2R3MDFfcmVtb3ZlKSwKPiA+ICsJLmRyaXZlcgkJPSB7Cj4gPiArCQkubmFtZSA9ICJwYW5l bC1zaGFycC1sczAzN3Y3ZHcwMSIsCj4gPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBsczAzN3Y3ZHcw MV9vZl9tYXRjaCwKPiA+ICsJfSwKPiA+ICt9Owo+ID4gKwo+ID4gK21vZHVsZV9wbGF0Zm9ybV9k cml2ZXIobHMwMzd2N2R3MDFfZHJpdmVyKTsKPiA+ICsKPiA+ICtNT0RVTEVfQVVUSE9SKCJUb21p IFZhbGtlaW5lbiA8dG9taS52YWxrZWluZW5AdGkuY29tPiIpOwo+ID4gK01PRFVMRV9ERVNDUklQ VElPTigiU2hhcnAgTFMwMzdWN0RXMDEgUGFuZWwgRHJpdmVyIik7Cj4gPiArTU9EVUxFX0xJQ0VO U0UoIkdQTCIpOwo+IAo+ICJHUEwgdjIiPwoKLS0gClJlZ2FyZHMsCgpMYXVyZW50IFBpbmNoYXJ0 Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==