From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sam Ravnborg Subject: Re: [PATCH v3 6/9] drm/panel: Add driver for the Sharp LS037V7DW01 panel Date: Tue, 13 Aug 2019 18:55:44 +0200 Message-ID: <20190813165544.GB30320@ravnborg.org> References: <20190813133311.26441-1-laurent.pinchart@ideasonboard.com> <20190813133311.26441-7-laurent.pinchart@ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from asavdk3.altibox.net (asavdk3.altibox.net [109.247.116.14]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2B1C7897C5 for ; Tue, 13 Aug 2019 16:55:47 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190813133311.26441-7-laurent.pinchart@ideasonboard.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart Cc: Thierry Reding , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBBdWcgMTMsIDIwMTkgYXQgMDQ6MzM6MDhQTSArMDMwMCwgTGF1cmVudCBQaW5jaGFy dCB3cm90ZToKPiBUaGlzIHBhbmVsIGlzIHVzZWQgb24gdGhlIFRJIFNEUDM0MzAgYm9hcmQuCj4g Cj4gVGhlIGNvZGUgaXMgYmFzZWQgb24gdGhlIG9tYXBkcm0tc3BlY2lmaWMgcGFuZWwtc2hhcnAt bHMwMzd2N2R3MDEKPiBkcml2ZXIuCj4gCj4gU2lnbmVkLW9mZi1ieTogTGF1cmVudCBQaW5jaGFy dCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgpSZXZpZXdlZC1ieTogU2FtIFJh dm5ib3JnIDxzYW1AcmF2bmJvcmcub3JnPgoKPiAtLS0KPiBDaGFuZ2VzIHNpbmNlIHYxOgo+IAo+ IC0gTWVudGlvbiBib2FyZHMgdXNpbmcgdGhlIHBhbmVsIGluIEtjb25maWcKPiAtIFJlbmFtZWQg bHMwMzd2N2R3MDFfZGV2aWNlIHRvIGxzMDM3djdkdzAxX3BhbmVsCj4gLSBSZW5hbWVkIHZjYyB0 byB2ZGQKPiAtIENvbW1lbnRzIHVwZGF0ZXMKPiAtIFN0b3JlIHdpZHRoX21tIGFuZCBoZWlnaHRf bW0gaW4gZHJtX2Rpc3BsYXlfbW9kZQo+IC0gVXNlIGRybV9wYW5lbF9kaXNhYmxlKCkgaW4gLnJl bW92ZSgpIGhhbmRsZXIKPiAtIFVzZSBkZXZtX2dwaW9kX2dldCgpIHdoZXJlIGFwcGxpY2FibGUK PiAtIFJlbW92ZSBOVUxMLWNoZWNrIG9uIHZkZAo+IC0gT3JkZXIgS2NvbmZpZyBlbnRyaWVzIGFs cGhhYmV0aWNhbGx5Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnICAgICAg ICAgICAgICAgICB8ICAgNyArCj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZSAgICAg ICAgICAgICAgICB8ICAgMSArCj4gIC4uLi9ncHUvZHJtL3BhbmVsL3BhbmVsLXNoYXJwLWxzMDM3 djdkdzAxLmMgICB8IDIyNiArKysrKysrKysrKysrKysrKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCAy MzQgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3Bh bmVsL3BhbmVsLXNoYXJwLWxzMDM3djdkdzAxLmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3BhbmVsL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwo+IGlu ZGV4IGQyODEzM2M2YWEwYS4uOGQ5YThjZGI3MDRlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9wYW5lbC9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcK PiBAQCAtMjgyLDYgKzI4MiwxMyBAQCBjb25maWcgRFJNX1BBTkVMX1NIQVJQX0xRMTAxUjFTWDAx Cj4gIAkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6 IHRoZSBtb2R1bGUKPiAgCSAgd2lsbCBiZSBjYWxsZWQgcGFuZWwtc2hhcnAtbHExMDFyMXN4MDEu Cj4gIAo+ICtjb25maWcgRFJNX1BBTkVMX1NIQVJQX0xTMDM3VjdEVzAxCj4gKwl0cmlzdGF0ZSAi U2hhcnAgTFMwMzdWN0RXMDEgVkdBIExDRCBwYW5lbCIKPiArCWRlcGVuZHMgb24gR1BJT0xJQiAm JiBPRiAmJiBSRUdVTEFUT1IKPiArCWhlbHAKPiArCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0 byBlbmFibGUgc3VwcG9ydCBmb3IgU2hhcnAgTFMwMzdWN0RXMDEgVkdBCj4gKwkgICg0ODB4NjQw KSBMQ0QgcGFuZWwgKGZvdW5kIG9uIHRoZSBUSSBTRFAzNDMwIGJvYXJkKS4KPiArCj4gIGNvbmZp ZyBEUk1fUEFORUxfU0hBUlBfTFMwNDNUMUxFMDEKPiAgCXRyaXN0YXRlICJTaGFycCBMUzA0M1Qx TEUwMSBxSEQgdmlkZW8gbW9kZSBwYW5lbCIKPiAgCWRlcGVuZHMgb24gT0YKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVs L01ha2VmaWxlCj4gaW5kZXggODA1MmY5YTdhZDYwLi4xNGQxYzQ5ZWYzYWIgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L3BhbmVsL01ha2VmaWxlCj4gQEAgLTI5LDYgKzI5LDcgQEAgb2JqLSQoQ09ORklHX0RSTV9QQU5F TF9TQU1TVU5HX1M2RTYzTTApICs9IHBhbmVsLXNhbXN1bmctczZlNjNtMC5vCj4gIG9iai0kKENP TkZJR19EUk1fUEFORUxfU0FNU1VOR19TNkU4QUEwKSArPSBwYW5lbC1zYW1zdW5nLXM2ZThhYTAu bwo+ICBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NFSUtPXzQzV1ZGMUcpICs9IHBhbmVsLXNlaWtv LTQzd3ZmMWcubwo+ICBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NIQVJQX0xRMTAxUjFTWDAxKSAr PSBwYW5lbC1zaGFycC1scTEwMXIxc3gwMS5vCj4gK29iai0kKENPTkZJR19EUk1fUEFORUxfU0hB UlBfTFMwMzdWN0RXMDEpICs9IHBhbmVsLXNoYXJwLWxzMDM3djdkdzAxLm8KPiAgb2JqLSQoQ09O RklHX0RSTV9QQU5FTF9TSEFSUF9MUzA0M1QxTEUwMSkgKz0gcGFuZWwtc2hhcnAtbHMwNDN0MWxl MDEubwo+ICBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NJVFJPTklYX1NUNzcwMSkgKz0gcGFuZWwt c2l0cm9uaXgtc3Q3NzAxLm8KPiAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TSVRST05JWF9TVDc3 ODlWKSArPSBwYW5lbC1zaXRyb25peC1zdDc3ODl2Lm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3BhbmVsL3BhbmVsLXNoYXJwLWxzMDM3djdkdzAxLmMgYi9kcml2ZXJzL2dwdS9kcm0v cGFuZWwvcGFuZWwtc2hhcnAtbHMwMzd2N2R3MDEuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMDAwMDAwLi4yYWFlYTUwN2NjMWYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXNoYXJwLWxzMDM3djdkdzAxLmMKPiBAQCAtMCww ICsxLDIyNiBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ ICsgKiBTaGFycCBMUzAzN1Y3RFcwMSBMQ0QgUGFuZWwgRHJpdmVyCj4gKyAqCj4gKyAqIENvcHly aWdodCAoQykgMjAxOSBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQKPiArICoKPiArICog QmFzZWQgb24gdGhlIG9tYXBkcm0tc3BlY2lmaWMgcGFuZWwtc2hhcnAtbHMwMzd2N2R3MDEgZHJp dmVyCj4gKyAqCj4gKyAqIENvcHlyaWdodCAoQykgMjAxMyBUZXhhcyBJbnN0cnVtZW50cyBJbmNv cnBvcmF0ZWQKPiArICogQXV0aG9yOiBUb21pIFZhbGtlaW5lbiA8dG9taS52YWxrZWluZW5AdGku Y29tPgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ICsjaW5jbHVkZSA8 bGludXgvZ3Bpby9jb25zdW1lci5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9vZi5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KPiArCj4gKyNpbmNsdWRl IDxkcm0vZHJtX2Nvbm5lY3Rvci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9tb2Rlcy5oPgo+ICsj aW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgo+ICsKPiArc3RydWN0IGxzMDM3djdkdzAxX3BhbmVs IHsKPiArCXN0cnVjdCBkcm1fcGFuZWwgcGFuZWw7Cj4gKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2Owo+ICsKPiArCXN0cnVjdCByZWd1bGF0b3IgKnZkZDsKPiArCXN0cnVjdCBncGlvX2Rl c2MgKnJlc2JfZ3BpbzsJLyogbG93ID0gcmVzZXQgYWN0aXZlIG1pbiAyMCB1cyAqLwo+ICsJc3Ry dWN0IGdwaW9fZGVzYyAqaW5pX2dwaW87CS8qIGhpZ2ggPSBwb3dlciBvbiAqLwo+ICsJc3RydWN0 IGdwaW9fZGVzYyAqbW9fZ3BpbzsJLyogbG93ID0gNDgweDY0MCwgaGlnaCA9IDI0MHgzMjAgKi8K PiArCXN0cnVjdCBncGlvX2Rlc2MgKmxyX2dwaW87CS8qIGhpZ2ggPSBjb252ZW50aW9uYWwgaG9y aXpvbnRhbCBzY2FubmluZyAqLwo+ICsJc3RydWN0IGdwaW9fZGVzYyAqdWRfZ3BpbzsJLyogaGln aCA9IGNvbnZlbnRpb25hbCB2ZXJ0aWNhbCBzY2FubmluZyAqLwo+ICt9Owo+ICsKPiArI2RlZmlu ZSB0b19sczAzN3Y3ZHcwMV9kZXZpY2UocCkgXAo+ICsJY29udGFpbmVyX29mKHAsIHN0cnVjdCBs czAzN3Y3ZHcwMV9wYW5lbCwgcGFuZWwpCj4gKwo+ICtzdGF0aWMgaW50IGxzMDM3djdkdzAxX2Rp c2FibGUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXN0cnVjdCBsczAzN3Y3ZHcw MV9wYW5lbCAqbGNkID0gdG9fbHMwMzd2N2R3MDFfZGV2aWNlKHBhbmVsKTsKPiArCj4gKwlncGlv ZF9zZXRfdmFsdWVfY2Fuc2xlZXAobGNkLT5pbmlfZ3BpbywgMCk7Cj4gKwlncGlvZF9zZXRfdmFs dWVfY2Fuc2xlZXAobGNkLT5yZXNiX2dwaW8sIDApOwo+ICsKPiArCS8qIFdhaXQgYXQgbGVhc3Qg NSB2c3luY3MgYWZ0ZXIgZGlzYWJsaW5nIHRoZSBMQ0QuICovCj4gKwltc2xlZXAoMTAwKTsKPiAr Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBsczAzN3Y3ZHcwMV91bnByZXBh cmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXN0cnVjdCBsczAzN3Y3ZHcwMV9w YW5lbCAqbGNkID0gdG9fbHMwMzd2N2R3MDFfZGV2aWNlKHBhbmVsKTsKPiArCj4gKwlyZWd1bGF0 b3JfZGlzYWJsZShsY2QtPnZkZCk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGlu dCBsczAzN3Y3ZHcwMV9wcmVwYXJlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+ICt7Cj4gKwlz dHJ1Y3QgbHMwMzd2N2R3MDFfcGFuZWwgKmxjZCA9IHRvX2xzMDM3djdkdzAxX2RldmljZShwYW5l bCk7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IHJlZ3VsYXRvcl9lbmFibGUobGNkLT52ZGQp Owo+ICsJaWYgKHJldCA8IDApCj4gKwkJZGV2X2VycigmbGNkLT5wZGV2LT5kZXYsICIlczogZmFp bGVkIHRvIGVuYWJsZSByZWd1bGF0b3JcbiIsCj4gKwkJCV9fZnVuY19fKTsKPiArCj4gKwlyZXR1 cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGxzMDM3djdkdzAxX2VuYWJsZShzdHJ1Y3Qg ZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJc3RydWN0IGxzMDM3djdkdzAxX3BhbmVsICpsY2Qg PSB0b19sczAzN3Y3ZHcwMV9kZXZpY2UocGFuZWwpOwo+ICsKPiArCS8qIFdhaXQgY291cGxlIG9m IHZzeW5jcyBiZWZvcmUgZW5hYmxpbmcgdGhlIExDRC4gKi8KPiArCW1zbGVlcCg1MCk7Cj4gKwo+ ICsJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGxjZC0+cmVzYl9ncGlvLCAxKTsKPiArCWdwaW9k X3NldF92YWx1ZV9jYW5zbGVlcChsY2QtPmluaV9ncGlvLCAxKTsKPiArCj4gKwlyZXR1cm4gMDsK PiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIGxzMDM3djdk dzAxX21vZGUgPSB7Cj4gKwkuY2xvY2sgPSAxOTIwMCwKPiArCS5oZGlzcGxheSA9IDQ4MCwKPiAr CS5oc3luY19zdGFydCA9IDQ4MCArIDEsCj4gKwkuaHN5bmNfZW5kID0gNDgwICsgMSArIDIsCj4g KwkuaHRvdGFsID0gNDgwICsgMSArIDIgKyAyOCwKPiArCS52ZGlzcGxheSA9IDY0MCwKPiArCS52 c3luY19zdGFydCA9IDY0MCArIDEsCj4gKwkudnN5bmNfZW5kID0gNjQwICsgMSArIDEsCj4gKwku dnRvdGFsID0gNjQwICsgMSArIDEgKyAxLAo+ICsJLnZyZWZyZXNoID0gNTgsCj4gKwkudHlwZSA9 IERSTV9NT0RFX1RZUEVfRFJJVkVSIHwgRFJNX01PREVfVFlQRV9QUkVGRVJSRUQsCj4gKwkuZmxh Z3MgPSBEUk1fTU9ERV9GTEFHX05IU1lOQyB8IERSTV9NT0RFX0ZMQUdfTlZTWU5DLAo+ICsJLndp ZHRoX21tID0gNTYsCj4gKwkuaGVpZ2h0X21tID0gNzUsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50 IGxzMDM3djdkdzAxX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJ c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9IHBhbmVsLT5jb25uZWN0b3I7Cj4gKwlz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKPiArCj4gKwltb2RlID0gZHJtX21vZGVfZHVw bGljYXRlKHBhbmVsLT5kcm0sICZsczAzN3Y3ZHcwMV9tb2RlKTsKPiArCWlmICghbW9kZSkKPiAr CQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwlkcm1fbW9kZV9zZXRfbmFtZShtb2RlKTsKPiArCWRy bV9tb2RlX3Byb2JlZF9hZGQoY29ubmVjdG9yLCBtb2RlKTsKPiArCj4gKwljb25uZWN0b3ItPmRp c3BsYXlfaW5mby53aWR0aF9tbSA9IGxzMDM3djdkdzAxX21vZGUud2lkdGhfbW07Cj4gKwljb25u ZWN0b3ItPmRpc3BsYXlfaW5mby5oZWlnaHRfbW0gPSBsczAzN3Y3ZHcwMV9tb2RlLmhlaWdodF9t bTsKPiArCS8qCj4gKwkgKiBGSVhNRTogQWNjb3JkaW5nIHRvIHRoZSBkYXRhc2hlZXQgcGl4ZWwg ZGF0YSBpcyBzYW1wbGVkIG9uIHRoZQo+ICsJICogcmlzaW5nIGVkZ2Ugb2YgdGhlIGNsb2NrLCBi dXQgdGhlIGNvZGUgcnVubmluZyBvbiB0aGUgU0RQMzQzMAo+ICsJICogaW5kaWNhdGVzIHNhbXBs aW5nIG9uIHRoZSBuZWdhdGl2ZSBlZGdlLiBUaGlzIHNob3VsZCBiZSB0ZXN0ZWQgb24gYQo+ICsJ ICogcmVhbCBkZXZpY2UuCj4gKwkgKi8KPiArCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmJ1c19m bGFncyA9IERSTV9CVVNfRkxBR19ERV9ISUdICj4gKwkJCQkJICB8IERSTV9CVVNfRkxBR19TWU5D X1NBTVBMRV9QT1NFREdFCj4gKwkJCQkJICB8IERSTV9CVVNfRkxBR19QSVhEQVRBX1NBTVBMRV9O RUdFREdFOwo+ICsKPiArCXJldHVybiAxOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9wYW5lbF9mdW5jcyBsczAzN3Y3ZHcwMV9mdW5jcyA9IHsKPiArCS5kaXNhYmxlID0gbHMw Mzd2N2R3MDFfZGlzYWJsZSwKPiArCS51bnByZXBhcmUgPSBsczAzN3Y3ZHcwMV91bnByZXBhcmUs Cj4gKwkucHJlcGFyZSA9IGxzMDM3djdkdzAxX3ByZXBhcmUsCj4gKwkuZW5hYmxlID0gbHMwMzd2 N2R3MDFfZW5hYmxlLAo+ICsJLmdldF9tb2RlcyA9IGxzMDM3djdkdzAxX2dldF9tb2RlcywKPiAr fTsKPiArCj4gK3N0YXRpYyBpbnQgbHMwMzd2N2R3MDFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikKPiArewo+ICsJc3RydWN0IGxzMDM3djdkdzAxX3BhbmVsICpsY2Q7Cj4gKwo+ ICsJbGNkID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZigqbGNkKSwgR0ZQX0tFUk5F TCk7Cj4gKwlpZiAobGNkID09IE5VTEwpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJcGxh dGZvcm1fc2V0X2RydmRhdGEocGRldiwgbGNkKTsKPiArCWxjZC0+cGRldiA9IHBkZXY7Cj4gKwo+ ICsJbGNkLT52ZGQgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoJnBkZXYtPmRldiwgImVudmRkIik7Cj4g KwlpZiAoSVNfRVJSKGxjZC0+dmRkKSkgewo+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxl ZCB0byBnZXQgcmVndWxhdG9yXG4iKTsKPiArCQlyZXR1cm4gUFRSX0VSUihsY2QtPnZkZCk7Cj4g Kwl9Cj4gKwo+ICsJbGNkLT5pbmlfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KCZwZGV2LT5kZXYsICJl bmFibGUiLCBHUElPRF9PVVRfTE9XKTsKPiArCWlmIChJU19FUlIobGNkLT5pbmlfZ3BpbykpIHsK PiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gZ2V0IGVuYWJsZSBncGlvXG4iKTsK PiArCQlyZXR1cm4gUFRSX0VSUihsY2QtPmluaV9ncGlvKTsKPiArCX0KPiArCj4gKwlsY2QtPnJl c2JfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KCZwZGV2LT5kZXYsICJyZXNldCIsIEdQSU9EX09VVF9M T1cpOwo+ICsJaWYgKElTX0VSUihsY2QtPnJlc2JfZ3BpbykpIHsKPiArCQlkZXZfZXJyKCZwZGV2 LT5kZXYsICJmYWlsZWQgdG8gZ2V0IHJlc2V0IGdwaW9cbiIpOwo+ICsJCXJldHVybiBQVFJfRVJS KGxjZC0+cmVzYl9ncGlvKTsKPiArCX0KPiArCj4gKwlsY2QtPm1vX2dwaW8gPSBkZXZtX2dwaW9k X2dldF9pbmRleCgmcGRldi0+ZGV2LCAibW9kZSIsIDAsCj4gKwkJCQkJICAgIEdQSU9EX09VVF9M T1cpOwo+ICsJaWYgKElTX0VSUihsY2QtPm1vX2dwaW8pKSB7Cj4gKwkJZGV2X2VycigmcGRldi0+ ZGV2LCAiZmFpbGVkIHRvIGdldCBtb2RlWzBdIGdwaW9cbiIpOwo+ICsJCXJldHVybiBQVFJfRVJS KGxjZC0+bW9fZ3Bpbyk7Cj4gKwl9Cj4gKwo+ICsJbGNkLT5scl9ncGlvID0gZGV2bV9ncGlvZF9n ZXRfaW5kZXgoJnBkZXYtPmRldiwgIm1vZGUiLCAxLAo+ICsJCQkJCSAgICBHUElPRF9PVVRfTE9X KTsKPiArCWlmIChJU19FUlIobGNkLT5scl9ncGlvKSkgewo+ICsJCWRldl9lcnIoJnBkZXYtPmRl diwgImZhaWxlZCB0byBnZXQgbW9kZVsxXSBncGlvXG4iKTsKPiArCQlyZXR1cm4gUFRSX0VSUihs Y2QtPmxyX2dwaW8pOwo+ICsJfQo+ICsKPiArCWxjZC0+dWRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0 X2luZGV4KCZwZGV2LT5kZXYsICJtb2RlIiwgMiwKPiArCQkJCQkgICAgR1BJT0RfT1VUX0xPVyk7 Cj4gKwlpZiAoSVNfRVJSKGxjZC0+dWRfZ3BpbykpIHsKPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYs ICJmYWlsZWQgdG8gZ2V0IG1vZGVbMl0gZ3Bpb1xuIik7Cj4gKwkJcmV0dXJuIFBUUl9FUlIobGNk LT51ZF9ncGlvKTsKPiArCX0KPiArCj4gKwlkcm1fcGFuZWxfaW5pdCgmbGNkLT5wYW5lbCk7Cj4g KwlsY2QtPnBhbmVsLmRldiA9ICZwZGV2LT5kZXY7Cj4gKwlsY2QtPnBhbmVsLmZ1bmNzID0gJmxz MDM3djdkdzAxX2Z1bmNzOwo+ICsKPiArCXJldHVybiBkcm1fcGFuZWxfYWRkKCZsY2QtPnBhbmVs KTsKPiArfQo+ICsKPiArc3RhdGljIGludCBsczAzN3Y3ZHcwMV9yZW1vdmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKPiArewo+ICsJc3RydWN0IGxzMDM3djdkdzAxX3BhbmVsICpsY2Qg PSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPiArCj4gKwlkcm1fcGFuZWxfcmVtb3ZlKCZs Y2QtPnBhbmVsKTsKPiArCWRybV9wYW5lbF9kaXNhYmxlKCZsY2QtPnBhbmVsKTsKPiArCWRybV9w YW5lbF91bnByZXBhcmUoJmxjZC0+cGFuZWwpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBsczAzN3Y3ZHcwMV9vZl9tYXRjaFtd ID0gewo+ICsJeyAuY29tcGF0aWJsZSA9ICJzaGFycCxsczAzN3Y3ZHcwMSIsIH0sCj4gKwl7IC8q IHNlbnRpbmVsICovIH0sCj4gK307Cj4gKwo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBsczAz N3Y3ZHcwMV9vZl9tYXRjaCk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBs czAzN3Y3ZHcwMV9kcml2ZXIgPSB7Cj4gKwkucHJvYmUJCT0gbHMwMzd2N2R3MDFfcHJvYmUsCj4g KwkucmVtb3ZlCQk9IF9fZXhpdF9wKGxzMDM3djdkdzAxX3JlbW92ZSksCj4gKwkuZHJpdmVyCQk9 IHsKPiArCQkubmFtZSA9ICJwYW5lbC1zaGFycC1sczAzN3Y3ZHcwMSIsCj4gKwkJLm9mX21hdGNo X3RhYmxlID0gbHMwMzd2N2R3MDFfb2ZfbWF0Y2gsCj4gKwl9LAo+ICt9Owo+ICsKPiArbW9kdWxl X3BsYXRmb3JtX2RyaXZlcihsczAzN3Y3ZHcwMV9kcml2ZXIpOwo+ICsKPiArTU9EVUxFX0FVVEhP UigiVG9taSBWYWxrZWluZW4gPHRvbWkudmFsa2VpbmVuQHRpLmNvbT4iKTsKPiArTU9EVUxFX0RF U0NSSVBUSU9OKCJTaGFycCBMUzAzN1Y3RFcwMSBQYW5lbCBEcml2ZXIiKTsKPiArTU9EVUxFX0xJ Q0VOU0UoIkdQTCIpOwo+IC0tIAo+IFJlZ2FyZHMsCj4gCj4gTGF1cmVudCBQaW5jaGFydApfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=