From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jagan Teki Subject: [PATCH v4 2/2] drm/panel: Add Feiyang FY07024DI26A30-D MIPI-DSI LCD panel Date: Fri, 25 Jan 2019 00:13:13 +0530 Message-ID: <20190124184313.30193-2-jagan@amarulasolutions.com> References: <20190124184313.30193-1-jagan@amarulasolutions.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pf1-x443.google.com (mail-pf1-x443.google.com [IPv6:2607:f8b0:4864:20::443]) by gabe.freedesktop.org (Postfix) with ESMTPS id AA0776E37C for ; Thu, 24 Jan 2019 18:43:46 +0000 (UTC) Received: by mail-pf1-x443.google.com with SMTP id z9so3435858pfi.2 for ; Thu, 24 Jan 2019 10:43:46 -0800 (PST) In-Reply-To: <20190124184313.30193-1-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: Thierry Reding , David Airlie , Daniel Vetter , Sam Ravnborg Cc: Michael Trimarchi , linux-amarula@amarulasolutions.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Jagan Teki List-Id: dri-devel@lists.freedesktop.org RmVpeWFuZyBGWTA3MDI0REkyNkEzMC1EIGlzIDEwMjR4NjAwLCA0LWxhbmUgTUlQSS1EU0kgTENE IHBhbmVsLgoKQWRkIHBhbmVsIGRyaXZlciBmb3IgaXQuCgpTaWduZWQtb2ZmLWJ5OiBKYWdhbiBU ZWtpIDxqYWdhbkBhbWFydWxhc29sdXRpb25zLmNvbT4KLS0tCkNoYW5nZXMgZm9yIHY1OgotIHJl YmFzZSBvbiBtYXN0ZXIKLSBhZGp1c3QgdGhlIGhwb3JjaCB2YWx1ZXMgdG8gc2F0aXNmeSB0aGUg cmVmcmVzaApDaGFuZ2VzIGZvciB2NDoKLSB1c2Ugc2ltcGxlIHN0cnVjdHVyZSBmb3IgY29tbWFu ZCBpbml0Ci0gdXBkYXRlIHByb3BlciBjb21tZW50cyBvbiBwb3dlciwgcmVzZXQgZGVsYXkgc2Vx dW5jZQotIGZpeCB0byB1c2Ugc2V0X2Rpc3BsYXlfb2ZmIGluIGRpc2FibGUgZnVuY3Rpb24KLSBt b3ZlIG1vZGUgdHlwZSB0byBzdHJ1Y3R1cmUKLSBkcm9wIHJlZnJlcyByYXRlIHZhbHVlLCBsZXQg ZHJtIGNvbXB1dGUKQ2hhbmdlcyBmb3IgdjI6Ci0gbmV3IHBhdGNoLCBkZXJpdmVkIGZyb20gYW5v dGhlciBkc2kgc2VyaWVzCgogTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICA2ICsKIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnICAgICAgICAgICAg ICAgICB8ICAgOSArCiBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgICAgICAgICAgICAg ICAgfCAgIDEgKwogLi4uL2RybS9wYW5lbC9wYW5lbC1mZWl5YW5nLWZ5MDcwMjRkaTI2YTMwZC5j IHwgMjg2ICsrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAzMDIgaW5zZXJ0aW9u cygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1mZWl5 YW5nLWZ5MDcwMjRkaTI2YTMwZC5jCgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJ TkVSUwppbmRleCBlM2Y3ODViYWQ2OGIuLjVjODU5MWViNTg0MCAxMDA2NDQKLS0tIGEvTUFJTlRB SU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTQ4MzEsNiArNDgzMSwxMiBAQCBUOglnaXQgZ2l0 Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZHJtL2RybS1taXNjCiBTOglNYWludGFpbmVkCiBG Oglkcml2ZXJzL2dwdS9kcm0vdHZlMjAwLwogCitEUk0gRFJJVkVSIEZPUiBGRUlZQU5HIEZZMDcw MjRESTI2QTMwLUQgTUlQSS1EU0kgTENEIFBBTkVMUworTToJSmFnYW4gVGVraSA8amFnYW5AYW1h cnVsYXNvbHV0aW9ucy5jb20+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2dwdS9kcm0vcGFu ZWwvcGFuZWwtZmVpeWFuZy1meTA3MDI0ZGkyNmEzMGQuYworRjoJRG9jdW1lbnRhdGlvbi9kZXZp Y2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvZmVpeWFuZyxmeTA3MDI0ZGkyNmEzMGQudHh0 CisKIERSTSBEUklWRVIgRk9SIElMSVRFSyBJTEk5MjI1IFBBTkVMUwogTToJRGF2aWQgTGVjaG5l ciA8ZGF2aWRAbGVjaG5vbG9neS5jb20+CiBTOglNYWludGFpbmVkCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmln CmluZGV4IDE1MWRkZjcyMGI4My4uNTMwNGRiN2I3YjU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vcGFuZWwvS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwpA QCAtNDcsNiArNDcsMTUgQEAgY29uZmlnIERSTV9QQU5FTF9TSU1QTEUKIAkgIHRoYXQgaXQgY2Fu IGJlIGF1dG9tYXRpY2FsbHkgdHVybmVkIG9mZiB3aGVuIHRoZSBwYW5lbCBnb2VzIGludG8gYQog CSAgbG93IHBvd2VyIHN0YXRlLgogCitjb25maWcgRFJNX1BBTkVMX0ZFSVlBTkdfRlkwNzAyNERJ MjZBMzBECisJdHJpc3RhdGUgIkZlaXlhbmcgRlkwNzAyNERJMjZBMzAtRCBNSVBJLURTSSBMQ0Qg cGFuZWwiCisJZGVwZW5kcyBvbiBPRgorCWRlcGVuZHMgb24gRFJNX01JUElfRFNJCisJZGVwZW5k cyBvbiBCQUNLTElHSFRfQ0xBU1NfREVWSUNFCisJaGVscAorCSAgU2F5IFkgaWYgeW91IHdhbnQg dG8gZW5hYmxlIHN1cHBvcnQgZm9yIHBhbmVscyBiYXNlZCBvbiB0aGUKKwkgIEZlaXlhbmcgRlkw NzAyNERJMjZBMzAtRCBNSVBJLURTSSBpbnRlcmZhY2UuCisKIGNvbmZpZyBEUk1fUEFORUxfSUxJ VEVLX0lMOTMyMgogCXRyaXN0YXRlICJJbGl0ZWsgSUxJOTMyMiAzMjB4MjQwIFFWR0EgcGFuZWxz IgogCWRlcGVuZHMgb24gT0YgJiYgU1BJCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKaW5kZXggNTRkYjA5 MjFmMzI5Li5jODhkYWNmOWQ0MzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9N YWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKQEAgLTMsNiArMyw3 IEBAIG9iai0kKENPTkZJR19EUk1fUEFORUxfQVJNX1ZFUlNBVElMRSkgKz0gcGFuZWwtYXJtLXZl cnNhdGlsZS5vCiBvYmotJChDT05GSUdfRFJNX1BBTkVMX0JBTkFOQVBJX1MwNzBXVjIwX0lDTjYy MTEpICs9IHBhbmVsLWJhbmFuYXBpLXMwNzB3djIwLWljbjYyMTEubwogb2JqLSQoQ09ORklHX0RS TV9QQU5FTF9MVkRTKSArPSBwYW5lbC1sdmRzLm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0lN UExFKSArPSBwYW5lbC1zaW1wbGUubworb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9GRUlZQU5HX0ZZ MDcwMjRESTI2QTMwRCkgKz0gcGFuZWwtZmVpeWFuZy1meTA3MDI0ZGkyNmEzMGQubwogb2JqLSQo Q09ORklHX0RSTV9QQU5FTF9JTElURUtfSUw5MzIyKSArPSBwYW5lbC1pbGl0ZWstaWxpOTMyMi5v CiBvYmotJChDT05GSUdfRFJNX1BBTkVMX0lMSVRFS19JTEk5ODgxQykgKz0gcGFuZWwtaWxpdGVr LWlsaTk4ODFjLm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfSU5OT0xVWF9QMDc5WkNBKSArPSBw YW5lbC1pbm5vbHV4LXAwNzl6Y2EubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVs L3BhbmVsLWZlaXlhbmctZnkwNzAyNGRpMjZhMzBkLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwv cGFuZWwtZmVpeWFuZy1meTA3MDI0ZGkyNmEzMGQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLmY2NTU2NDdhZWFkZQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9wYW5lbC9wYW5lbC1mZWl5YW5nLWZ5MDcwMjRkaTI2YTMwZC5jCkBAIC0wLDAgKzEs Mjg2IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsKKy8qCisgKiBDb3B5 cmlnaHQgKEMpIDIwMTggQW1hcnVsYSBTb2x1dGlvbnMKKyAqIEF1dGhvcjogSmFnYW4gVGVraSA8 amFnYW5AYW1hcnVsYXNvbHV0aW9ucy5jb20+CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2JhY2ts aWdodC5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxl Lmg+CisjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+CisKKyNpbmNsdWRlIDxsaW51eC9ncGlv L2NvbnN1bWVyLmg+CisjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+CisKKyNp bmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fbWlwaV9kc2kuaD4KKyNpbmNs dWRlIDxkcm0vZHJtX3BhbmVsLmg+CisKKyNkZWZpbmUgRkVJWUFOR19JTklUX0NNRF9MRU4JMgor CitzdHJ1Y3QgZmVpeWFuZyB7CisJc3RydWN0IGRybV9wYW5lbAlwYW5lbDsKKwlzdHJ1Y3QgbWlw aV9kc2lfZGV2aWNlCSpkc2k7CisKKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZQkqYmFja2xpZ2h0 OworCXN0cnVjdCByZWd1bGF0b3IJKmR2ZGQ7CisJc3RydWN0IHJlZ3VsYXRvcgkqYXZkZDsKKwlz dHJ1Y3QgZ3Bpb19kZXNjCSpyZXNldDsKK307CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGZlaXlh bmcgKnBhbmVsX3RvX2ZlaXlhbmcoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJcmV0dXJu IGNvbnRhaW5lcl9vZihwYW5lbCwgc3RydWN0IGZlaXlhbmcsIHBhbmVsKTsKK30KKworc3RydWN0 IGZlaXlhbmdfaW5pdF9jbWQgeworCXU4IGRhdGFbRkVJWUFOR19JTklUX0NNRF9MRU5dOworfTsK Kworc3RhdGljIGNvbnN0IHN0cnVjdCBmZWl5YW5nX2luaXRfY21kIGZlaXlhbmdfaW5pdF9jbWRz W10gPSB7CisJeyAuZGF0YSA9IHsgMHg4MCwgMHg1OCB9IH0sCisJeyAuZGF0YSA9IHsgMHg4MSwg MHg0NyB9IH0sCisJeyAuZGF0YSA9IHsgMHg4MiwgMHhENCB9IH0sCisJeyAuZGF0YSA9IHsgMHg4 MywgMHg4OCB9IH0sCisJeyAuZGF0YSA9IHsgMHg4NCwgMHhBOSB9IH0sCisJeyAuZGF0YSA9IHsg MHg4NSwgMHhDMyB9IH0sCisJeyAuZGF0YSA9IHsgMHg4NiwgMHg4MiB9IH0sCit9OworCitzdGF0 aWMgaW50IGZlaXlhbmdfcHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1 Y3QgZmVpeWFuZyAqY3R4ID0gcGFuZWxfdG9fZmVpeWFuZyhwYW5lbCk7CisJc3RydWN0IG1pcGlf ZHNpX2RldmljZSAqZHNpID0gY3R4LT5kc2k7CisJdW5zaWduZWQgaW50IGk7CisJaW50IHJldDsK KworCXJldCA9IHJlZ3VsYXRvcl9lbmFibGUoY3R4LT5kdmRkKTsKKwlpZiAocmV0KQorCQlyZXR1 cm4gcmV0OworCisJLyogVDEgKGR2ZGQgc3RhcnQgKyBkdmRkIHJpc2UpIDAgPCBUMSA8PSAxMG1z ICovCisJbXNsZWVwKDEwKTsKKworCXJldCA9IHJlZ3VsYXRvcl9lbmFibGUoY3R4LT5hdmRkKTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJLyogVDMgKGR2ZGQgcmlzZSArIGF2ZGQgc3Rh cnQgKyBhdmRkIHJpc2UpIFQzID49IDIwbXMgKi8KKwltc2xlZXAoMjApOworCisJZ3Bpb2Rfc2V0 X3ZhbHVlKGN0eC0+cmVzZXQsIDEpOworCW1zbGVlcCg1MCk7CisKKwlncGlvZF9zZXRfdmFsdWUo Y3R4LT5yZXNldCwgMCk7CisJLyogVDUgKyBUNiAoYXZkZCByaXNlICsgdmlkZW8gJiBsb2dpYyBz aWduYWwgcmlzZSkKKwkgKiBUNSA+PSAxMG1zLCAwIDwgVDYgPD0gMTBtcworCSAqLworCW1zbGVl cCgyMCk7CisKKwlncGlvZF9zZXRfdmFsdWUoY3R4LT5yZXNldCwgMSk7CisKKwkvKiBUMTIgKHZp ZGVvICYgbG9naWMgc2lnbmFsIHJpc2UgKyBiYWNrbGlnaHQgcmlzZSkgVDEyID49IDIwMG1zICov CisJbXNsZWVwKDIwMCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShmZWl5YW5nX2lu aXRfY21kcyk7IGkrKykgeworCQljb25zdCBzdHJ1Y3QgZmVpeWFuZ19pbml0X2NtZCAqY21kID0K KwkJCQkJCSZmZWl5YW5nX2luaXRfY21kc1tpXTsKKworCQlyZXQgPSBtaXBpX2RzaV9kY3Nfd3Jp dGVfYnVmZmVyKGRzaSwgY21kLT5kYXRhLAorCQkJCQkJRkVJWUFOR19JTklUX0NNRF9MRU4pOwor CQlpZiAocmV0IDwgMCkKKwkJCXJldHVybiByZXQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgZmVpeWFuZ19lbmFibGUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3Ry dWN0IGZlaXlhbmcgKmN0eCA9IHBhbmVsX3RvX2ZlaXlhbmcocGFuZWwpOworCisJLyogVDEyICh2 aWRlbyAmIGxvZ2ljIHNpZ25hbCByaXNlICsgYmFja2xpZ2h0IHJpc2UpIFQxMiA+PSAyMDBtcyAq LworCW1zbGVlcCgyMDApOworCisJbWlwaV9kc2lfZGNzX3NldF9kaXNwbGF5X29uKGN0eC0+ZHNp KTsKKwliYWNrbGlnaHRfZW5hYmxlKGN0eC0+YmFja2xpZ2h0KTsKKworCXJldHVybiAwOworfQor CitzdGF0aWMgaW50IGZlaXlhbmdfZGlzYWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sK KwlzdHJ1Y3QgZmVpeWFuZyAqY3R4ID0gcGFuZWxfdG9fZmVpeWFuZyhwYW5lbCk7CisKKwliYWNr bGlnaHRfZGlzYWJsZShjdHgtPmJhY2tsaWdodCk7CisJcmV0dXJuIG1pcGlfZHNpX2Rjc19zZXRf ZGlzcGxheV9vZmYoY3R4LT5kc2kpOworfQorCitzdGF0aWMgaW50IGZlaXlhbmdfdW5wcmVwYXJl KHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBmZWl5YW5nICpjdHggPSBwYW5l bF90b19mZWl5YW5nKHBhbmVsKTsKKwlpbnQgcmV0OworCisJcmV0ID0gbWlwaV9kc2lfZGNzX3Nl dF9kaXNwbGF5X29mZihjdHgtPmRzaSk7CisJaWYgKHJldCA8IDApCisJCURSTV9ERVZfRVJST1Io cGFuZWwtPmRldiwgImZhaWxlZCB0byBzZXQgZGlzcGxheSBvZmY6ICVkXG4iLAorCQkJICAgICAg cmV0KTsKKworCXJldCA9IG1pcGlfZHNpX2Rjc19lbnRlcl9zbGVlcF9tb2RlKGN0eC0+ZHNpKTsK KwlpZiAocmV0IDwgMCkKKwkJRFJNX0RFVl9FUlJPUihwYW5lbC0+ZGV2LCAiZmFpbGVkIHRvIGVu dGVyIHNsZWVwIG1vZGU6ICVkXG4iLAorCQkJICAgICAgcmV0KTsKKworCS8qIFQxMyAoYmFja2xp Z2h0IGZhbGwgKyB2aWRlbyAmIGxvZ2ljIHNpZ25hbCBmYWxsKSBUMTMgPj0gMjAwbXMgKi8KKwlt c2xlZXAoMjAwKTsKKworCWdwaW9kX3NldF92YWx1ZShjdHgtPnJlc2V0LCAwKTsKKworCXJlZ3Vs YXRvcl9kaXNhYmxlKGN0eC0+YXZkZCk7CisKKwkvKiBUMTEgKGR2ZGQgcmlzZSB0byBmYWxsKSAw IDwgVDExIDw9IDEwbXMgICovCisJbXNsZWVwKDEwKTsKKworCXJlZ3VsYXRvcl9kaXNhYmxlKGN0 eC0+ZHZkZCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZGlz cGxheV9tb2RlIGZlaXlhbmdfZGVmYXVsdF9tb2RlID0geworCS5jbG9jayA9IDU1MDAwLAorCisJ LmhkaXNwbGF5ID0gMTAyNCwKKwkuaHN5bmNfc3RhcnQgPSAxMDI0ICsgMzEwLAorCS5oc3luY19l bmQgPSAxMDI0ICsgMzEwICsgMjAsCisJLmh0b3RhbCA9IDEwMjQgKyAzMTAgKyAyMCArIDkwLAor CisJLnZkaXNwbGF5ID0gNjAwLAorCS52c3luY19zdGFydCA9IDYwMCArIDEyLAorCS52c3luY19l bmQgPSA2MDAgKyAxMiArIDIsCisJLnZ0b3RhbCA9IDYwMCArIDEyICsgMiArIDIxLAorCisJLnR5 cGUgPSBEUk1fTU9ERV9UWVBFX0RSSVZFUiB8IERSTV9NT0RFX1RZUEVfUFJFRkVSUkVELAorfTsK Kworc3RhdGljIGludCBmZWl5YW5nX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkK K3sKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gcGFuZWwtPmNvbm5lY3RvcjsK KwlzdHJ1Y3QgZmVpeWFuZyAqY3R4ID0gcGFuZWxfdG9fZmVpeWFuZyhwYW5lbCk7CisJc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7CisKKwltb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKHBh bmVsLT5kcm0sICZmZWl5YW5nX2RlZmF1bHRfbW9kZSk7CisJaWYgKCFtb2RlKSB7CisJCURSTV9E RVZfRVJST1IoJmN0eC0+ZHNpLT5kZXYsICJmYWlsZWQgdG8gYWRkIG1vZGUgJXV4JXV4QCV1XG4i LAorCQkJICAgICAgZmVpeWFuZ19kZWZhdWx0X21vZGUuaGRpc3BsYXksCisJCQkgICAgICBmZWl5 YW5nX2RlZmF1bHRfbW9kZS52ZGlzcGxheSwKKwkJCSAgICAgIGZlaXlhbmdfZGVmYXVsdF9tb2Rl LnZyZWZyZXNoKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJZHJtX21vZGVfc2V0X25hbWUo bW9kZSk7CisKKwlkcm1fbW9kZV9wcm9iZWRfYWRkKGNvbm5lY3RvciwgbW9kZSk7CisKKwlyZXR1 cm4gMTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGFuZWxfZnVuY3MgZmVpeWFuZ19m dW5jcyA9IHsKKwkuZGlzYWJsZSA9IGZlaXlhbmdfZGlzYWJsZSwKKwkudW5wcmVwYXJlID0gZmVp eWFuZ191bnByZXBhcmUsCisJLnByZXBhcmUgPSBmZWl5YW5nX3ByZXBhcmUsCisJLmVuYWJsZSA9 IGZlaXlhbmdfZW5hYmxlLAorCS5nZXRfbW9kZXMgPSBmZWl5YW5nX2dldF9tb2RlcywKK307CisK K3N0YXRpYyBpbnQgZmVpeWFuZ19kc2lfcHJvYmUoc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNp KQoreworCXN0cnVjdCBmZWl5YW5nICpjdHg7CisJaW50IHJldDsKKworCWN0eCA9IGRldm1fa3ph bGxvYygmZHNpLT5kZXYsIHNpemVvZigqY3R4KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFjdHgpCisJ CXJldHVybiAtRU5PTUVNOworCW1pcGlfZHNpX3NldF9kcnZkYXRhKGRzaSwgY3R4KTsKKwljdHgt PmRzaSA9IGRzaTsKKworCWRybV9wYW5lbF9pbml0KCZjdHgtPnBhbmVsKTsKKwljdHgtPnBhbmVs LmRldiA9ICZkc2ktPmRldjsKKwljdHgtPnBhbmVsLmZ1bmNzID0gJmZlaXlhbmdfZnVuY3M7CisK KwljdHgtPmR2ZGQgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoJmRzaS0+ZGV2LCAiZHZkZCIpOworCWlm IChJU19FUlIoY3R4LT5kdmRkKSkgeworCQlEUk1fREVWX0VSUk9SKCZkc2ktPmRldiwgIkNvdWxk bid0IGdldCBkdmRkIHJlZ3VsYXRvclxuIik7CisJCXJldHVybiBQVFJfRVJSKGN0eC0+ZHZkZCk7 CisJfQorCisJY3R4LT5hdmRkID0gZGV2bV9yZWd1bGF0b3JfZ2V0KCZkc2ktPmRldiwgImF2ZGQi KTsKKwlpZiAoSVNfRVJSKGN0eC0+YXZkZCkpIHsKKwkJRFJNX0RFVl9FUlJPUigmZHNpLT5kZXYs ICJDb3VsZG4ndCBnZXQgYXZkZCByZWd1bGF0b3JcbiIpOworCQlyZXR1cm4gUFRSX0VSUihjdHgt PmF2ZGQpOworCX0KKworCWN0eC0+cmVzZXQgPSBkZXZtX2dwaW9kX2dldCgmZHNpLT5kZXYsICJy ZXNldCIsIEdQSU9EX09VVF9MT1cpOworCWlmIChJU19FUlIoY3R4LT5yZXNldCkpIHsKKwkJRFJN X0RFVl9FUlJPUigmZHNpLT5kZXYsICJDb3VsZG4ndCBnZXQgb3VyIHJlc2V0IEdQSU9cbiIpOwor CQlyZXR1cm4gUFRSX0VSUihjdHgtPnJlc2V0KTsKKwl9CisKKwljdHgtPmJhY2tsaWdodCA9IGRl dm1fb2ZfZmluZF9iYWNrbGlnaHQoJmRzaS0+ZGV2KTsKKwlpZiAoSVNfRVJSKGN0eC0+YmFja2xp Z2h0KSkKKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5iYWNrbGlnaHQpOworCisJcmV0ID0gZHJtX3Bh bmVsX2FkZCgmY3R4LT5wYW5lbCk7CisJaWYgKHJldCA8IDApCisJCWdvdG8gcHV0X2JhY2tsaWdo dDsKKworCWRzaS0+bW9kZV9mbGFncyA9IE1JUElfRFNJX01PREVfVklERU9fQlVSU1Q7CisJZHNp LT5mb3JtYXQgPSBNSVBJX0RTSV9GTVRfUkdCODg4OworCWRzaS0+bGFuZXMgPSA0OworCisJcmV0 ID0gbWlwaV9kc2lfYXR0YWNoKGRzaSk7CisJaWYgKHJldCA8IDApCisJCWdvdG8gcGFuZWxfcmVt b3ZlOworCisJcmV0dXJuIHJldDsKKworcGFuZWxfcmVtb3ZlOgorCWRybV9wYW5lbF9yZW1vdmUo JmN0eC0+cGFuZWwpOworcHV0X2JhY2tsaWdodDoKKwlpZiAoY3R4LT5iYWNrbGlnaHQpCisJCXB1 dF9kZXZpY2UoJmN0eC0+YmFja2xpZ2h0LT5kZXYpOworCisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIGludCBmZWl5YW5nX2RzaV9yZW1vdmUoc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpKQor eworCXN0cnVjdCBmZWl5YW5nICpjdHggPSBtaXBpX2RzaV9nZXRfZHJ2ZGF0YShkc2kpOworCisJ bWlwaV9kc2lfZGV0YWNoKGRzaSk7CisJZHJtX3BhbmVsX3JlbW92ZSgmY3R4LT5wYW5lbCk7CisK KwlpZiAoY3R4LT5iYWNrbGlnaHQpCisJCXB1dF9kZXZpY2UoJmN0eC0+YmFja2xpZ2h0LT5kZXYp OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGZl aXlhbmdfb2ZfbWF0Y2hbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gImZlaXlhbmcsZnkwNzAyNGRp MjZhMzBkIiwgfSwKKwl7IH0KK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBmZWl5YW5nX29m X21hdGNoKTsKKworc3RhdGljIHN0cnVjdCBtaXBpX2RzaV9kcml2ZXIgZmVpeWFuZ19kcml2ZXIg PSB7CisJLnByb2JlID0gZmVpeWFuZ19kc2lfcHJvYmUsCisJLnJlbW92ZSA9IGZlaXlhbmdfZHNp X3JlbW92ZSwKKwkuZHJpdmVyID0geworCQkubmFtZSA9ICJmZWl5YW5nLWZ5MDcwMjRkaTI2YTMw ZCIsCisJCS5vZl9tYXRjaF90YWJsZSA9IGZlaXlhbmdfb2ZfbWF0Y2gsCisJfSwKK307Cittb2R1 bGVfbWlwaV9kc2lfZHJpdmVyKGZlaXlhbmdfZHJpdmVyKTsKKworTU9EVUxFX0FVVEhPUigiSmFn YW4gVGVraSA8amFnYW5AYW1hcnVsYXNvbHV0aW9ucy5jb20+Iik7CitNT0RVTEVfREVTQ1JJUFRJ T04oIkZlaXlhbmcgRlkwNzAyNERJMjZBMzAtRCBNSVBJLURTSSBMQ0QgcGFuZWwiKTsKK01PRFVM RV9MSUNFTlNFKCJHUEwiKTsKLS0gCjIuMTguMC4zMjEuZ2ZmYzZmYTBlMwoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==