From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sam Ravnborg Subject: Re: [PATCH v2 4/4] drm/panel: Add Novatek NT35596 panel driver Date: Sun, 31 Mar 2019 09:23:33 +0200 Message-ID: <20190331072333.GA29704@ravnborg.org> References: <20190321135955.25661-1-jagan@amarulasolutions.com> <20190321135955.25661-5-jagan@amarulasolutions.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20190321135955.25661-5-jagan@amarulasolutions.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jagan Teki Cc: Mark Rutland , devicetree@vger.kernel.org, Ryan Pannell , David Airlie , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Rob Herring , Thierry Reding , Michael Trimarchi , linux-amarula@amarulasolutions.com List-Id: devicetree@vger.kernel.org SGkgSmFnYW4uCgpUaGFua3MgZm9yIHRoaXMgbmV3IHBhbmVsIGRyaXZlci4KCkEgZmV3IG5vdGVz LCBwbGVhc2Ugc2VlIGlubGluZSBjb21tZW50cyBiZWxvdy4KCk9uIFRodSwgTWFyIDIxLCAyMDE5 IGF0IDA3OjI5OjU1UE0gKzA1MzAsIEphZ2FuIFRla2kgd3JvdGU6Cj4gTm92YXRlayBOVDM1NTk2 IGlzIGEgc2luZ2xlLWNoaXAgSUMgc29sdXRpb24gZm9yIHNtYWxsIG9yIG1lZGl1bS1zaXplZAo+ IExUUFMgVEZUIExDRCBwYW5lbHMuIE5UMzU1OTYgcHJvdmlkZXMgIHNldmVyYWwgc3lzdGVtIGlu dGVyZmFjZXMgbGlrZQo+IE1JUEkvU1BJL0kyQy4KPiAKPiBDdXJyZW50bHkgYWRkZWQgc3VwcG9y dCBmb3IgTWljcm90ZWNoIE1URjA1MEZIREktMDMgaXMgMTA4MHgxOTIwLAo+IDQtbGFuZSBNSVBJ IERTSSBMQ0QgcGFuZWwgd2hpY2ggaGFzIGluYnVpbHQgTlQzNTU5NiBJQyBjaGlwLgo+IAo+IE5U MzU1OTYgc3VwcG9ydCBzZXZlcmFsIHJlZ3VsYXRvcnMgb24gdGhlIGNoaXAsIGFtb25nIHRob3Nl IG9ubHkgNAo+IHJlZ3VsYXRvcnMgbGlrZSBWQ0ksIFZEREkvRFZERCwgQVZERCwgQVZFRSBhcmUg dXNlZCBmb3IgcG93ZXItb24KPiBzZXF1ZW5jZS4KPiAKPiBUaGlzIGRyaXZlciBhZGRlZCBjb2Rl IGZvciAzLXJlZ3VsYXRvciBiYXNlZCBwb3dlci1vbiBzZXF1ZW5jZSBhcwo+IG9mIG5vdyBzaW5j ZSBNVEYwNTBGSERJLTAzIHBhbmVsIHN1cHBvcnQgaXQuIFRoaXMgcG93ZXItb24gc2VxdWVuY2UK PiBtYXkgYmUgbW92ZWQgdG8gcGFuZWxfZGVzYyBpbiBmdXR1cmUsIGlmIGFueSBuZXcgcGFuZWwg d291bGQgY29tZQo+IHVwIHdpdGggb3RoZXIgdHlwZSBvZiBzZXF1ZW5jZS4KPiAKPiBTaWduZWQt b2ZmLWJ5OiBKYWdhbiBUZWtpIDxqYWdhbkBhbWFydWxhc29sdXRpb25zLmNvbT4KPiAtLS0KPiBk aWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwo+IGluZGV4IGE2ZDE4YWNkYTc4 YS4uNGRlODAyMjJjZmZiIDEwMDY0NAo+IC0tLSBhL01BSU5UQUlORVJTCj4gKysrIGIvTUFJTlRB SU5FUlMKPiBAQCAtNDkyMiw2ICs0OTIyLDEyIEBAIFM6CU1haW50YWluZWQKPiAgRjoJZHJpdmVy cy9ncHUvZHJtL3Rpbnlkcm0vaHg4MzU3ZC5jCj4gIEY6CURvY3VtZW50YXRpb24vZGV2aWNldHJl ZS9iaW5kaW5ncy9kaXNwbGF5L2hpbWF4LGh4ODM1N2QudHh0Cj4gIAo+ICtEUk0gRFJJVkVSIEZP UiBOT1ZBVEVLIE5UMzU1OTYgTUlQSS1EU0kgTENEIFBBTkVMUwo+ICtNOglKYWdhbiBUZWtpIDxq YWdhbkBhbWFydWxhc29sdXRpb25zLmNvbT4KPiArUzoJTWFpbnRhaW5lZAo+ICtGOglkcml2ZXJz L2dwdS9kcm0vcGFuZWwvcGFuZWwtbm92YXRlay1udDM1NTk2LmMKPiArRjoJRG9jdW1lbnRhdGlv bi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvbm92YXRlayxudDM1NTk2LnR4dAo+ ICsKCkkgcmVjYWxsIHRoZSBlbnRyaWVzIGluIE1BSU5UQUlORVJTIGNvbWUgaW4gYWxwaGFiZXRp YyBvcmRlcgpiYXNlZCBvbiB0aGVpciBoZWFkbGluZS4KU28gdGhpcyBpcyB0aGUgd3Jvbmcgb3Jk ZXIgYXMgIkkiIGNvbWVzIGJlZm9yZSAiTiI6CkRSTSBEUklWRVIgRk9SIE5PVkFURUsgTlQzNTU5 NiBNSVBJLURTSSBMQ0QgUEFORUxTCkRSTSBEUklWRVIgRk9SIElOVEVMIEk4MTAgVklERU8gQ0FS RFMKClBsZWFzZSBtb3ZlCgo+ICsjZGVmaW5lIE5UMzU1OTZfQ01EX0xFTgkJCTIKPiArCj4gK3N0 cnVjdCBudDM1NTk2X3BhbmVsX2Rlc2Mgewo+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUJKm1vZGU7Cj4gKwl1bnNpZ25lZCBpbnQJCQlsYW5lczsKPiArCXVuc2lnbmVkIGxvbmcJCQlm bGFnczsKPiArCWVudW0gbWlwaV9kc2lfcGl4ZWxfZm9ybWF0CWZvcm1hdDsKPiArCWNvbnN0IHN0 cnVjdCBudDM1NTk2X2luaXRfY21kCSpwYW5lbF9jbWRzOwo+ICsJdW5zaWduZWQgaW50CQkJbnVt X3BhbmVsX2NtZHM7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgbnQzNTU5NiB7Cj4gKwlzdHJ1Y3QgZHJt X3BhbmVsCQlwYW5lbDsKPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UJCSpkc2k7Cj4gKwljb25z dCBzdHJ1Y3QgbnQzNTU5Nl9wYW5lbF9kZXNjICpkZXNjOwo+ICsKPiArCXN0cnVjdCBiYWNrbGln aHRfZGV2aWNlCQkqYmFja2xpZ2h0Owo+ICsJc3RydWN0IHJlZ3VsYXRvcgkJKmR2ZGQ7Cj4gKwlz dHJ1Y3QgcmVndWxhdG9yCQkqYXZkZDsKPiArCXN0cnVjdCByZWd1bGF0b3IJCSphdmVlOwo+ICsJ c3RydWN0IGdwaW9fZGVzYwkJKnJlc2V0Owo+ICsKCj4gKwlib29sCQkJCXByZXBhcmVkOwo+ICsJ Ym9vbAkJCQllbmFibGVkOwpXZSBzaG91bGQgbW92ZSB0aGVzZSBmbGFncyB0byB0aGUgY29yZSBh cyBtb3JlIGFuZCBtb3JlCmRyaXZlcnMgc2VlbXMgdG8gbmVlZWQgdGhlbS4KU29tZXRoaW5nIHlv dSBjb3VsZCB0YWtlIGEgc2hvdCBhdD8KCj4gK307Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVj dCBudDM1NTk2ICpwYW5lbF90b19udDM1NTk2KHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+ICt7 Cj4gKwlyZXR1cm4gY29udGFpbmVyX29mKHBhbmVsLCBzdHJ1Y3QgbnQzNTU5NiwgcGFuZWwpOwo+ ICt9Cj4gKwo+ICtzdHJ1Y3QgbnQzNTU5Nl9pbml0X2NtZCB7Cj4gKwl1OCBkYXRhW05UMzU1OTZf Q01EX0xFTl07Cj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG50MzU1OTZfaW5pdF9j bWQgbWljcm90ZWNoX210ZjA1MGZoZGlfY21kc1tdID0gewo+ICsJeyAuZGF0YSA9IHsgMHhGRiwg MHhFRSB9IH0sCi4uLgo+ICsJLyogRXhpdCBDTUQxLCBUdXJuLW9mZiBUZWFyIE9OICovCj4gKwl7 IC5kYXRhID0geyAweEZGLCAweDAwIH0gfSwKPiArCXsgLmRhdGEgPSB7IDB4MzUsIDB4MDAgfSB9 LAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBudDM1NTk2X3Bvd2VyX29uKHN0cnVjdCBudDM1NTk2 ICpudDM1NTk2KQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IHJlZ3VsYXRvcl9lbmFi bGUobnQzNTU5Ni0+ZHZkZCk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJ LyogVF9wb3dlcl9yYW1wX3VwIGZvciBWRERJICovCj4gKwltc2xlZXAoMik7Cj4gKwo+ICsJcmV0 ID0gcmVndWxhdG9yX2VuYWJsZShudDM1NTk2LT5hdmRkKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0 dXJuIHJldDsKPiArCj4gKwkvKiBUX3Bvd2VyX3JhbXBfdXAgZm9yIEFWREQvQVZFRSAqLwo+ICsJ bXNsZWVwKDUpOwo+ICsKPiArCXJldCA9IHJlZ3VsYXRvcl9lbmFibGUobnQzNTU5Ni0+YXZlZSk7 Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJbXNsZWVwKDEwKTsKPiArCj4g KwlncGlvZF9zZXRfdmFsdWUobnQzNTU5Ni0+cmVzZXQsIDApOwo+ICsKPiArCW1zbGVlcCgxMjAp Owo+ICsKPiArCWdwaW9kX3NldF92YWx1ZShudDM1NTk2LT5yZXNldCwgMSk7Cj4gKwo+ICsJLyog d2FpdCBmb3IgMTIwbXMgYWZ0ZXIgcmVzZXQgZGVhc3NlcnQgKi8KPiArCW1zbGVlcCgxMjApOwo+ ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG50MzU1OTZfcG93ZXJfb2Zm KHN0cnVjdCBudDM1NTk2ICpudDM1NTk2KQoKVGhpcyBmdW5jdGlvbiBuZXZlciBmYWlscy4gU2hv dWxkIHlvdSBjaGVjayByZWd1bGF0b3JfZGlzYWJsZSgpPwooTXN0IGRyaXZlcnMgc2tpcHMgY2hl Y2sgb2YgcmVndWxhdG9yX2Rpc2FibGUoKSBhbmQgaXQgc2VlbXMgc2FmZQp0byBza2lwIGl0IGhl cmUgdG9vLgoKTWFrZSBpdCBhIHZvaWQgZnVuY3Rpb24gaWYgaXQgY2Fubm90IGVycm9yIG91dC4K Cj4gK3sKPiArCWdwaW9kX3NldF92YWx1ZShudDM1NTk2LT5yZXNldCwgMCk7Cj4gKwo+ICsJbXNs ZWVwKDEwKTsKPiArCj4gKwlyZWd1bGF0b3JfZGlzYWJsZShudDM1NTk2LT5hdmVlKTsKPiArCj4g KwkvKiBUX3Bvd2VyX3JhbXBfZG93biBmb3IgQVZFRS9BVkREICovCj4gKwltc2xlZXAoNSk7Cj4g Kwo+ICsJcmVndWxhdG9yX2Rpc2FibGUobnQzNTU5Ni0+YXZkZCk7Cj4gKwo+ICsJLyogVF9wb3dl cl9yYW1wX2Rvd24gZm9yIFZEREkgKi8KPiArCW1zbGVlcCgyKTsKPiArCj4gKwlyZWd1bGF0b3Jf ZGlzYWJsZShudDM1NTk2LT5kdmRkKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3Rh dGljIGludCBudDM1NTk2X3ByZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiAr CXN0cnVjdCBudDM1NTk2ICpudDM1NTk2ID0gcGFuZWxfdG9fbnQzNTU5NihwYW5lbCk7Cj4gKwlz dHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kgPSBudDM1NTk2LT5kc2k7Cj4gKwljb25zdCBzdHJ1 Y3QgbnQzNTU5Nl9wYW5lbF9kZXNjICpkZXNjID0gbnQzNTU5Ni0+ZGVzYzsKPiArCWludCByZXQs IGk7Cj4gKwo+ICsJaWYgKG50MzU1OTYtPnByZXBhcmVkKQo+ICsJCXJldHVybiAwOwo+ICsKPiAr CXJldCA9IG50MzU1OTZfcG93ZXJfb24obnQzNTU5Nik7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVy biByZXQ7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IGRlc2MtPm51bV9wYW5lbF9jbWRzOyBpKysp IHsKPiArCQljb25zdCBzdHJ1Y3QgbnQzNTU5Nl9pbml0X2NtZCAqY21kID0gJmRlc2MtPnBhbmVs X2NtZHNbaV07Cj4gKwo+ICsJCXJldCA9IG1pcGlfZHNpX2Rjc193cml0ZV9idWZmZXIoZHNpLCBj bWQtPmRhdGEsCj4gKwkJCQkJCU5UMzU1OTZfQ01EX0xFTik7Cj4gKwkJaWYgKHJldCA8IDApIHsK PiArCQkJRFJNX0RFVl9FUlJPUihwYW5lbC0+ZGV2LAo+ICsJCQkJICAgICAgImZhaWxlZCB0byB3 cml0ZSBjbWQgJWQ6ICVkXG4iLCBpLCByZXQpOwo+ICsJCQlnb3RvIHBvd2VyX29mZjsKPiArCQl9 Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gbWlwaV9kc2lfZGNzX2V4aXRfc2xlZXBfbW9kZShkc2kpOwo+ ICsJaWYgKHJldCA8IDApIHsKPiArCQlEUk1fREVWX0VSUk9SKHBhbmVsLT5kZXYsCj4gKwkJCSAg ICAgICJmYWlsZWQgdG8gZXhpdCBmcm9tIHNsZWVwIG1vZGU6ICVkXG4iLCByZXQpOwo+ICsJCWdv dG8gcG93ZXJfb2ZmOwo+ICsJfQo+ICsKPiArCS8qIHdhaXQgZm9yIDEyMG1zIGFmdGVyIHNlbmRp bmcgZXhpdCBzbGVlcCBtb2RlICovCj4gKwltc2xlZXAoMTIwKTsKPiArCj4gKwlyZXQgPSBtaXBp X2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb24oZHNpKTsKPiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJRFJN X0RFVl9FUlJPUihwYW5lbC0+ZGV2LAo+ICsJCQkgICAgICAiZmFpbGVkIHRvIHNldCBkaXNwbGF5 IG9uOiAlZFxuIiwgcmV0KTsKPiArCQlnb3RvIHBvd2VyX29mZjsKSW4gdGhlIHVucHJlcGFyZSBm dW5jdGlvbiB3ZSB0YWtlIGNhcmUgdG8gZXh0ZXIgc2VsbHAgbW9kZSBiZWZvcmUgd2UgcG93ZXIg b2ZmLgpTaG91bGQgd2Ugbm90IGRvIHRoZSBzYW1lIGhlcmUgaW4gdGhpcyBlcnJvciBjYXNlLiBX ZSBtYW5hZ2VkIHRvIGV4aXQKc2xlZXAgbW9kZSBqdXN0IGFib3ZlIChvciBzbyB3ZSB0aGluayBh dCBsZWFzdCkuCgo+ICsJfQo+ICsKPiArCW50MzU1OTYtPnByZXBhcmVkID0gdHJ1ZTsKPiArCj4g KwlyZXR1cm4gMDsKPiArCj4gK3Bvd2VyX29mZjoKPiArCWlmIChudDM1NTk2X3Bvd2VyX29mZihu dDM1NTk2KSkKPiArCQlEUk1fREVWX0VSUk9SKHBhbmVsLT5kZXYsICJmYWlsZWQgdG8gcG93ZXIg b2ZmXG4iKTsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbnQzNTU5Nl9l bmFibGUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXN0cnVjdCBudDM1NTk2ICpu dDM1NTk2ID0gcGFuZWxfdG9fbnQzNTU5NihwYW5lbCk7Cj4gKwo+ICsJaWYgKG50MzU1OTYtPmVu YWJsZWQpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJYmFja2xpZ2h0X2VuYWJsZShudDM1NTk2LT5i YWNrbGlnaHQpOwo+ICsKPiArCW50MzU1OTYtPmVuYWJsZWQgPSB0cnVlOwo+ICsKPiArCXJldHVy biAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG50MzU1OTZfZGlzYWJsZShzdHJ1Y3QgZHJtX3Bh bmVsICpwYW5lbCkKPiArewo+ICsJc3RydWN0IG50MzU1OTYgKm50MzU1OTYgPSBwYW5lbF90b19u dDM1NTk2KHBhbmVsKTsKPiArCj4gKwlpZiAoIW50MzU1OTYtPmVuYWJsZWQpCj4gKwkJcmV0dXJu IDA7Cj4gKwo+ICsJYmFja2xpZ2h0X2Rpc2FibGUobnQzNTU5Ni0+YmFja2xpZ2h0KTsKPiArCj4g KwludDM1NTk2LT5lbmFibGVkID0gZmFsc2U7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgbnQzNTU5Nl91bnByZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4g K3sKPiArCXN0cnVjdCBudDM1NTk2ICpudDM1NTk2ID0gcGFuZWxfdG9fbnQzNTU5NihwYW5lbCk7 Cj4gKwo+ICsJaWYgKCFudDM1NTk2LT5wcmVwYXJlZCkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlt aXBpX2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb2ZmKG50MzU1OTYtPmRzaSk7Cj4gKwo+ICsJbWlwaV9k c2lfZGNzX2VudGVyX3NsZWVwX21vZGUobnQzNTU5Ni0+ZHNpKTsKPiArCj4gKwkvKiB3YWl0IGZv ciAxMjBtcyBhZnRlciBzZW5kaW5nIGVudGVyIHNsZWVwIG1vZGUgKi8KPiArCW1zbGVlcCgxMjAp Owo+ICsKPiArCW50MzU1OTZfcG93ZXJfb2ZmKG50MzU1OTYpOwo+ICsKPiArCW50MzU1OTYtPnBy ZXBhcmVkID0gZmFsc2U7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg bnQzNTU5Nl9nZXRfbW9kZXMoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXN0cnVj dCBudDM1NTk2ICpudDM1NTk2ID0gcGFuZWxfdG9fbnQzNTU5NihwYW5lbCk7Cj4gKwljb25zdCBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZGVzY19tb2RlID0gbnQzNTU5Ni0+ZGVzYy0+bW9kZTsK PiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwo+ICsKPiArCW1vZGUgPSBkcm1fbW9k ZV9kdXBsaWNhdGUocGFuZWwtPmRybSwgZGVzY19tb2RlKTsKPiArCWlmICghbW9kZSkgewo+ICsJ CURSTV9ERVZfRVJST1IoJm50MzU1OTYtPmRzaS0+ZGV2LAo+ICsJCQkgICAgICAiZmFpbGVkIHRv IGFkZCBtb2RlICV1eCV1eEAldVxuIiwKUGxlYXNlIHJlbW92ZSB0aGUgZXh0cmEgIngiIGhlcmUg ICAgICAgICAgICAgICAgICAgICAgIF4KV2Ugd2FudCBpdCB0byBwcmludCAiZmFpbGVkIHRvIGFk ZCBtb2RlIDEwODB4MTkyMEA1MCIgYW5kIG5vdAogICAgICAgICAgICAgICAgICAgICJmYWlsZWQg dG8gYWRkIG1vZGUgMTA4MHgxOTIweEA1MCIuCgo+ICsJCQkgICAgICBkZXNjX21vZGUtPmhkaXNw bGF5LAo+ICsJCQkgICAgICBkZXNjX21vZGUtPnZkaXNwbGF5LAo+ICsJCQkgICAgICBkZXNjX21v ZGUtPnZyZWZyZXNoKTsKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCX0KPiArCj4gKwlkcm1fbW9k ZV9zZXRfbmFtZShtb2RlKTsKPiArCWRybV9tb2RlX3Byb2JlZF9hZGQocGFuZWwtPmNvbm5lY3Rv ciwgbW9kZSk7Cj4gKwo+ICsJcGFuZWwtPmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLndpZHRoX21t ID0gZGVzY19tb2RlLT53aWR0aF9tbTsKPiArCXBhbmVsLT5jb25uZWN0b3ItPmRpc3BsYXlfaW5m by5oZWlnaHRfbW0gPSBkZXNjX21vZGUtPmhlaWdodF9tbTsKPiArCj4gKwlyZXR1cm4gMTsKPiAr fQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGFuZWxfZnVuY3MgbnQzNTU5Nl9mdW5j cyA9IHsKPiArCS5kaXNhYmxlCT0gbnQzNTU5Nl9kaXNhYmxlLAo+ICsJLnVucHJlcGFyZQk9IG50 MzU1OTZfdW5wcmVwYXJlLAo+ICsJLnByZXBhcmUJPSBudDM1NTk2X3ByZXBhcmUsCj4gKwkuZW5h YmxlCQk9IG50MzU1OTZfZW5hYmxlLAo+ICsJLmdldF9tb2Rlcwk9IG50MzU1OTZfZ2V0X21vZGVz LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIG1pY3Jv dGVjaF9tdGYwNTBmaGRpX21vZGUgPSB7Cj4gKwkuY2xvY2sJCT0gMTQ3MDAwLAo+ICsKPiArCS5o ZGlzcGxheQk9IDEwODAsCj4gKwkuaHN5bmNfc3RhcnQJPSAxMDgwICsgNDA4LAo+ICsJLmhzeW5j X2VuZAk9IDEwODAgKyA0MDggKyA0LAo+ICsJLmh0b3RhbAkJPSAxMDgwICsgNDA4ICsgNCArIDM4 LAo+ICsKPiArCS52ZGlzcGxheQk9IDE5MjAsCj4gKwkudnN5bmNfc3RhcnQJPSAxOTIwICsgOSwK PiArCS52c3luY19lbmQJPSAxOTIwICsgOSArIDEyLAo+ICsJLnZ0b3RhbAkJPSAxOTIwICsgOSAr IDEyICsgOSwKPiArCS52cmVmcmVzaAk9IDUwLAo+ICsKPiArCS53aWR0aF9tbQk9IDY0LAo+ICsJ LmhlaWdodF9tbQk9IDExOCwKPiArCj4gKwkudHlwZSA9IERSTV9NT0RFX1RZUEVfRFJJVkVSIHwg RFJNX01PREVfVFlQRV9QUkVGRVJSRUQsCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IG50MzU1OTZfcGFuZWxfZGVzYyBtaWNyb3RlY2hfbXRmMDUwZmhkaV9kZXNjID0gewo+ICsJLm1v ZGUJCT0gJm1pY3JvdGVjaF9tdGYwNTBmaGRpX21vZGUsCj4gKwkubGFuZXMJCT0gNCwKPiArCS5m bGFncwkJPSBNSVBJX0RTSV9NT0RFX1ZJREVPX0JVUlNULAo+ICsJLmZvcm1hdAkJPSBNSVBJX0RT SV9GTVRfUkdCODg4LAo+ICsJLnBhbmVsX2NtZHMJPSBtaWNyb3RlY2hfbXRmMDUwZmhkaV9jbWRz LAo+ICsJLm51bV9wYW5lbF9jbWRzCT0gQVJSQVlfU0laRShtaWNyb3RlY2hfbXRmMDUwZmhkaV9j bWRzKSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgbnQzNTU5Nl9kc2lfcHJvYmUoc3RydWN0IG1p cGlfZHNpX2RldmljZSAqZHNpKQo+ICt7Cj4gKwljb25zdCBzdHJ1Y3QgbnQzNTU5Nl9wYW5lbF9k ZXNjICpkZXNjOwo+ICsJc3RydWN0IG50MzU1OTYgKm50MzU1OTY7Cj4gKwlpbnQgcmV0Owo+ICsK PiArCW50MzU1OTYgPSBkZXZtX2t6YWxsb2MoJmRzaS0+ZGV2LCBzaXplb2YoKm50MzU1OTYpLCBH RlBfS0VSTkVMKTsKPiArCWlmICghbnQzNTU5NikKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4g KwlkZXNjID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKCZkc2ktPmRldik7Cj4gKwlkc2ktPm1v ZGVfZmxhZ3MgPSBkZXNjLT5mbGFnczsKPiArCWRzaS0+Zm9ybWF0ID0gZGVzYy0+Zm9ybWF0Owo+ ICsJZHNpLT5sYW5lcyA9IGRlc2MtPmxhbmVzOwo+ICsKPiArCWRybV9wYW5lbF9pbml0KCZudDM1 NTk2LT5wYW5lbCk7Cj4gKwludDM1NTk2LT5wYW5lbC5kZXYgPSAmZHNpLT5kZXY7Cj4gKwludDM1 NTk2LT5wYW5lbC5mdW5jcyA9ICZudDM1NTk2X2Z1bmNzOwo+ICsKPiArCW50MzU1OTYtPmR2ZGQg PSBkZXZtX3JlZ3VsYXRvcl9nZXQoJmRzaS0+ZGV2LCAiZHZkZCIpOwo+ICsJaWYgKElTX0VSUihu dDM1NTk2LT5kdmRkKSkgewo+ICsJCURSTV9ERVZfRVJST1IoJmRzaS0+ZGV2LCAiQ291bGRuJ3Qg Z2V0IGR2ZGQgcmVndWxhdG9yXG4iKTsKPiArCQlyZXR1cm4gUFRSX0VSUihudDM1NTk2LT5kdmRk KTsKPiArCX0KSXQgd291bGQgYmUgbml2ZSB0byBoYXZlIHRoZSBlcnJvciBjb2RlIGluIHRoZSBh Ym92ZSBlcnJvciBsb2dnaW5nLgpTYW1lIGdvZXMgZm9yIHRoZSByZW1haW5pbmcgZ2V0IG9wZXJh dGlvc24gYmVsb3cuCgo+ICsKPiArCW50MzU1OTYtPmF2ZGQgPSBkZXZtX3JlZ3VsYXRvcl9nZXQo JmRzaS0+ZGV2LCAiYXZkZCIpOwo+ICsJaWYgKElTX0VSUihudDM1NTk2LT5hdmRkKSkgewo+ICsJ CURSTV9ERVZfRVJST1IoJmRzaS0+ZGV2LCAiQ291bGRuJ3QgZ2V0IGF2ZGQgcmVndWxhdG9yXG4i KTsKPiArCQlyZXR1cm4gUFRSX0VSUihudDM1NTk2LT5hdmRkKTsKPiArCX0KPiArCj4gKwludDM1 NTk2LT5hdmVlID0gZGV2bV9yZWd1bGF0b3JfZ2V0KCZkc2ktPmRldiwgImF2ZWUiKTsKPiArCWlm IChJU19FUlIobnQzNTU5Ni0+YXZlZSkpIHsKPiArCQlEUk1fREVWX0VSUk9SKCZkc2ktPmRldiwg IkNvdWxkbid0IGdldCBhdmVlIHJlZ3VsYXRvclxuIik7Cj4gKwkJcmV0dXJuIFBUUl9FUlIobnQz NTU5Ni0+YXZlZSk7Cj4gKwl9Cj4gKwo+ICsJbnQzNTU5Ni0+cmVzZXQgPSBkZXZtX2dwaW9kX2dl dCgmZHNpLT5kZXYsICJyZXNldCIsIEdQSU9EX09VVF9MT1cpOwo+ICsJaWYgKElTX0VSUihudDM1 NTk2LT5yZXNldCkpIHsKPiArCQlEUk1fREVWX0VSUk9SKCZkc2ktPmRldiwgIkNvdWxkbid0IGdl dCBvdXIgcmVzZXQgR1BJT1xuIik7Cj4gKwkJcmV0dXJuIFBUUl9FUlIobnQzNTU5Ni0+cmVzZXQp Owo+ICsJfQo+ICsKPiArCW50MzU1OTYtPmJhY2tsaWdodCA9IGRldm1fb2ZfZmluZF9iYWNrbGln aHQoJmRzaS0+ZGV2KTsKPiArCWlmIChJU19FUlIobnQzNTU5Ni0+YmFja2xpZ2h0KSkKPiArCQly ZXR1cm4gUFRSX0VSUihudDM1NTk2LT5iYWNrbGlnaHQpOwo+ICsKPiArCXJldCA9IGRybV9wYW5l bF9hZGQoJm50MzU1OTYtPnBhbmVsKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7 Cj4gKwo+ICsJbWlwaV9kc2lfc2V0X2RydmRhdGEoZHNpLCBudDM1NTk2KTsKPiArCW50MzU1OTYt PmRzaSA9IGRzaTsKPiArCW50MzU1OTYtPmRlc2MgPSBkZXNjOwo+ICsKPiArCXJldHVybiBtaXBp X2RzaV9hdHRhY2goZHNpKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBudDM1NTk2X2RzaV9yZW1v dmUoc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpKQo+ICt7Cj4gKwlzdHJ1Y3QgbnQzNTU5NiAq bnQzNTU5NiA9IG1pcGlfZHNpX2dldF9kcnZkYXRhKGRzaSk7Cj4gKwo+ICsJbWlwaV9kc2lfZGV0 YWNoKGRzaSk7Cj4gKwlkcm1fcGFuZWxfcmVtb3ZlKCZudDM1NTk2LT5wYW5lbCk7Cj4gKwo+ICsJ cmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG50 MzU1OTZfb2ZfbWF0Y2hbXSA9IHsKPiArCXsKPiArCQkuY29tcGF0aWJsZSA9ICJtaWNyb3RlY2gs bXRmMDUwZmhkaS0wMyIsCj4gKwkJLmRhdGEgPSAmbWljcm90ZWNoX210ZjA1MGZoZGlfZGVzYywK PiArCX0sCj4gKwl7IC8qIHNlbnRpbmVsICovIH0KPiArfTsKPiArTU9EVUxFX0RFVklDRV9UQUJM RShvZiwgbnQzNTU5Nl9vZl9tYXRjaCk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IG1pcGlfZHNpX2Ry aXZlciBudDM1NTk2X2RyaXZlciA9IHsKPiArCS5wcm9iZSA9IG50MzU1OTZfZHNpX3Byb2JlLAo+ ICsJLnJlbW92ZSA9IG50MzU1OTZfZHNpX3JlbW92ZSwKPiArCS5kcml2ZXIgPSB7Cj4gKwkJLm5h bWUgPSAibm92YXRlay1udDM1NTk2IiwKPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBudDM1NTk2X29m X21hdGNoLAo+ICsJfSwKPiArfTsKPiArbW9kdWxlX21pcGlfZHNpX2RyaXZlcihudDM1NTk2X2Ry aXZlcik7Cj4gKwo+ICtNT0RVTEVfQVVUSE9SKCJKYWdhbiBUZWtpIDxqYWdhbkBhbWFydWxhc29s dXRpb25zLmNvbT4iKTsKPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJOb3ZhdGVrIE5UMzU1OTYgTUlQ SS1EU0kgTENEIHBhbmVsIik7Cj4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKUGxlYXNlIGNoZWNr IHRoYXQgdGhpcyBsaWNlbnNlIG1hdGhlcyB5b3VyIFNQRFggaWRlbnRpZmllci4KCglTYW0KX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs