From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jagan Teki Subject: [PATCH v11 6/7] drm/panel: Add Bananapi S070WV20-CT16 ICN6211 MIPI-DSI to RGB bridge Date: Thu, 3 Oct 2019 12:15:26 +0530 Message-ID: <20191003064527.15128-7-jagan@amarulasolutions.com> References: <20191003064527.15128-1-jagan@amarulasolutions.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191003064527.15128-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: Maxime Ripard , Chen-Yu Tsai , David Airlie , Daniel Vetter Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-sunxi , Jagan Teki , michael@amarulasolutions.com, linux-arm-kernel@lists.infradead.org, Icenowy Zheng List-Id: devicetree@vger.kernel.org QmFuYW5hcGkgUzA3MFdWMjAtQ1QxNiBJQ042MjExIGlzIDgwMHg0ODAsIDQtbGFuZSBNSVBJLURT SSB0byBSR0IgYnJpZGdlCnBhbmVsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNvbm5lY3QgdmlhIERT SSBwb3J0IG9uIEJQSS1NNjQgYm9hcmQsCnNvIGFkZCBhIGRyaXZlciBmb3IgaXQuCgpUaGUgc2Ft ZSBwYW5lbCBQQ0IgY29tZXMgd2l0aCBwYXJhbGxlbCBSQkcgd2hpY2ggaXMgc3VwcG9ydGVkIHZp YQpwYW5lbC1zaW1wbGUgZHJpdmVyIHdpdGggImJhbmFuYXBpLHMwNzB3djIwLWN0MTYiIGNvbXBh dGlibGUuCgpTaWduZWQtb2ZmLWJ5OiBKYWdhbiBUZWtpIDxqYWdhbkBhbWFydWxhc29sdXRpb25z LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyAgICAgICAgICAgICAgICAg fCAgIDkgKwogZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlICAgICAgICAgICAgICAgIHwg ICAxICsKIC4uLi9wYW5lbC9wYW5lbC1iYW5hbmFwaS1zMDcwd3YyMC1pY242MjExLmMgICB8IDI5 MyArKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMzAzIGluc2VydGlvbnMoKykK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtYmFuYW5hcGkt czA3MHd2MjAtaWNuNjIxMS5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tj b25maWcgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwppbmRleCBmMTUyYmM0ZWViNTMu LjkzYmNjYTU4MTAxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcK KysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKQEAgLTE4LDYgKzE4LDE1IEBAIGNv bmZpZyBEUk1fUEFORUxfQVJNX1ZFUlNBVElMRQogCSAgcmVmZXJlbmNlIGRlc2lnbnMuIFRoZSBw YW5lbCBpcyBkZXRlY3RlZCB1c2luZyBzcGVjaWFsIHJlZ2lzdGVycwogCSAgaW4gdGhlIFZlcnNh dGlsZSBmYW1pbHkgc3lzY29uIHJlZ2lzdGVycy4KIAorY29uZmlnIERSTV9QQU5FTF9CQU5BTkFQ SV9TMDcwV1YyMF9JQ042MjExCisJdHJpc3RhdGUgIkJhbmFuYXBpIFMwNzBXVjIwLUNUMTYgSUNO NjIxMSBNSVBJLURTSSB0byBSR0IgYnJpZGdlIHBhbmVsIGRyaXZlciIKKwlkZXBlbmRzIG9uIE9G CisJZGVwZW5kcyBvbiBEUk1fTUlQSV9EU0kKKwlkZXBlbmRzIG9uIEJBQ0tMSUdIVF9DTEFTU19E RVZJQ0UKKwloZWxwCisJICBTYXkgWSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3Ig cGFuZWxzIGJhc2VkIG9uIHRoZQorCSAgQmFuYW5hcGkgUzA3MFdWMjAtQ1QxNiBNSVBJLURTSSBj b250cm9sbGVyLgorCiBjb25maWcgRFJNX1BBTkVMX0xWRFMKIAl0cmlzdGF0ZSAiR2VuZXJpYyBM VkRTIHBhbmVsIGRyaXZlciIKIAlkZXBlbmRzIG9uIE9GCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcGFuZWwvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKaW5k ZXggYjZjZDM5ZmUwZjIwLi5hOTNhMzNjYTQ2MTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9wYW5lbC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKQEAg LTEsNSArMSw2IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiBvYmotJChD T05GSUdfRFJNX1BBTkVMX0FSTV9WRVJTQVRJTEUpICs9IHBhbmVsLWFybS12ZXJzYXRpbGUubwor b2JqLSQoQ09ORklHX0RSTV9QQU5FTF9CQU5BTkFQSV9TMDcwV1YyMF9JQ042MjExKSArPSBwYW5l bC1iYW5hbmFwaS1zMDcwd3YyMC1pY242MjExLm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfTFZE UykgKz0gcGFuZWwtbHZkcy5vCiBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NJTVBMRSkgKz0gcGFu ZWwtc2ltcGxlLm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfRkVJWUFOR19GWTA3MDI0REkyNkEz MEQpICs9IHBhbmVsLWZlaXlhbmctZnkwNzAyNGRpMjZhMzBkLm8KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1iYW5hbmFwaS1zMDcwd3YyMC1pY242MjExLmMgYi9kcml2 ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtYmFuYW5hcGktczA3MHd2MjAtaWNuNjIxMS5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTJhNWI2MDI3OGFmCi0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWJhbmFuYXBpLXMwNzB3djIw LWljbjYyMTEuYwpAQCAtMCwwICsxLDI5MyBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjArCisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFtYXJ1bGEgU29sdXRpb25zCisg KiBBdXRob3I6IEphZ2FuIFRla2kgPGphZ2FuQGFtYXJ1bGFzb2x1dGlvbnMuY29tPgorICovCisK KyNpbmNsdWRlIDxsaW51eC9iYWNrbGlnaHQuaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgor I2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgor CisjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L3JlZ3Vs YXRvci9jb25zdW1lci5oPgorCisjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2RzaS5oPgorI2luY2x1 ZGUgPGRybS9kcm1fbW9kZXMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+CisKK3N0cnVj dCBzMDcwd3YyMCB7CisJc3RydWN0IGRybV9wYW5lbAlwYW5lbDsKKwlzdHJ1Y3QgbWlwaV9kc2lf ZGV2aWNlCSpkc2k7CisKKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZQkqYmFja2xpZ2h0OworCXN0 cnVjdCByZWd1bGF0b3IJKnZkZDsKKwlzdHJ1Y3QgZ3Bpb19kZXNjCSplbmFibGVfZ3BpbzsKKwlz dHJ1Y3QgZ3Bpb19kZXNjCSpyZXNldF9ncGlvOworfTsKKworc3RhdGljIGlubGluZSBzdHJ1Y3Qg czA3MHd2MjAgKnBhbmVsX3RvX3MwNzB3djIwKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQorewor CXJldHVybiBjb250YWluZXJfb2YocGFuZWwsIHN0cnVjdCBzMDcwd3YyMCwgcGFuZWwpOworfQor CitzdHJ1Y3QgczA3MHd2MjBfaW5pdF9jbWQgeworCXNpemVfdCBsZW47CisJY29uc3QgY2hhciAq ZGF0YTsKK307CisKKyNkZWZpbmUgUzA3MFdWMjBfSU5JVF9DTUQoLi4uKSB7IFwKKwkubGVuID0g c2l6ZW9mKChjaGFyW10pe19fVkFfQVJHU19ffSksIFwKKwkuZGF0YSA9IChjaGFyW10pe19fVkFf QVJHU19ffSB9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgczA3MHd2MjBfaW5pdF9jbWQgczA3MHd2 MjBfaW5pdF9jbWRzW10gPSB7CisJUzA3MFdWMjBfSU5JVF9DTUQoMHg3QSwgMHhDMSksCisJUzA3 MFdWMjBfSU5JVF9DTUQoMHgyMCwgMHgyMCksCisJUzA3MFdWMjBfSU5JVF9DTUQoMHgyMSwgMHhF MCksCisJUzA3MFdWMjBfSU5JVF9DTUQoMHgyMiwgMHgxMyksCisJUzA3MFdWMjBfSU5JVF9DTUQo MHgyMywgMHgyOCksCisJUzA3MFdWMjBfSU5JVF9DTUQoMHgyNCwgMHgzMCksCisJUzA3MFdWMjBf SU5JVF9DTUQoMHgyNSwgMHgyOCksCisJUzA3MFdWMjBfSU5JVF9DTUQoMHgyNiwgMHgwMCksCisJ UzA3MFdWMjBfSU5JVF9DTUQoMHgyNywgMHgwRCksCisJUzA3MFdWMjBfSU5JVF9DTUQoMHgyOCwg MHgwMyksCisJUzA3MFdWMjBfSU5JVF9DTUQoMHgyOSwgMHgxRCksCisJUzA3MFdWMjBfSU5JVF9D TUQoMHgzNCwgMHg4MCksCisJUzA3MFdWMjBfSU5JVF9DTUQoMHgzNiwgMHgyOCksCisJUzA3MFdW MjBfSU5JVF9DTUQoMHhCNSwgMHhBMCksCisJUzA3MFdWMjBfSU5JVF9DTUQoMHg1QywgMHhGRiks CisJUzA3MFdWMjBfSU5JVF9DTUQoMHgyQSwgMHgwMSksCisJUzA3MFdWMjBfSU5JVF9DTUQoMHg1 NiwgMHg5MiksCisJUzA3MFdWMjBfSU5JVF9DTUQoMHg2QiwgMHg3MSksCisJUzA3MFdWMjBfSU5J VF9DTUQoMHg2OSwgMHgyQiksCisJUzA3MFdWMjBfSU5JVF9DTUQoMHgxMCwgMHg0MCksCisJUzA3 MFdWMjBfSU5JVF9DTUQoMHgxMSwgMHg5OCksCisJUzA3MFdWMjBfSU5JVF9DTUQoMHhCNiwgMHgy MCksCisJUzA3MFdWMjBfSU5JVF9DTUQoMHg1MSwgMHgyMCksCisJUzA3MFdWMjBfSU5JVF9DTUQo MHgwOSwgMHgxMCksCit9OworCitzdGF0aWMgaW50IHMwNzB3djIwX3ByZXBhcmUoc3RydWN0IGRy bV9wYW5lbCAqcGFuZWwpCit7CisJc3RydWN0IHMwNzB3djIwICpjdHggPSBwYW5lbF90b19zMDcw d3YyMChwYW5lbCk7CisJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gY3R4LT5kc2k7CisJ dW5zaWduZWQgaW50IGk7CisJaW50IHJldDsKKworCXJldCA9IHJlZ3VsYXRvcl9lbmFibGUoY3R4 LT52ZGQpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwltc2xlZXAoNTApOworCisJZ3Bp b2Rfc2V0X3ZhbHVlKGN0eC0+cmVzZXRfZ3BpbywgMSk7CisJbXNsZWVwKDUwKTsKKworCWdwaW9k X3NldF92YWx1ZShjdHgtPmVuYWJsZV9ncGlvLCAxKTsKKwltc2xlZXAoNTApOworCisJZ3Bpb2Rf c2V0X3ZhbHVlKGN0eC0+cmVzZXRfZ3BpbywgMCk7CisJbXNsZWVwKDUwKTsKKworCWdwaW9kX3Nl dF92YWx1ZShjdHgtPnJlc2V0X2dwaW8sIDEpOworCW1zbGVlcCgyMCk7CisKKwlmb3IgKGkgPSAw OyBpIDwgQVJSQVlfU0laRShzMDcwd3YyMF9pbml0X2NtZHMpOyBpKyspIHsKKwkJY29uc3Qgc3Ry dWN0IHMwNzB3djIwX2luaXRfY21kICpjbWQgPSAmczA3MHd2MjBfaW5pdF9jbWRzW2ldOworCisJ CXJldCA9IG1pcGlfZHNpX2dlbmVyaWNfd3JpdGUoZHNpLCBjbWQtPmRhdGEsIGNtZC0+bGVuKTsK KwkJaWYgKHJldCA8IDApCisJCQlyZXR1cm4gcmV0OworCisJCW1zbGVlcCgxMCk7CisJfQorCisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgczA3MHd2MjBfZW5hYmxlKHN0cnVjdCBkcm1fcGFu ZWwgKnBhbmVsKQoreworCXN0cnVjdCBzMDcwd3YyMCAqY3R4ID0gcGFuZWxfdG9fczA3MHd2MjAo cGFuZWwpOworCisJbXNsZWVwKDEyMCk7CisKKwltaXBpX2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb24o Y3R4LT5kc2kpOworCWJhY2tsaWdodF9lbmFibGUoY3R4LT5iYWNrbGlnaHQpOworCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgczA3MHd2MjBfZGlzYWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpw YW5lbCkKK3sKKwlzdHJ1Y3QgczA3MHd2MjAgKmN0eCA9IHBhbmVsX3RvX3MwNzB3djIwKHBhbmVs KTsKKworCWJhY2tsaWdodF9kaXNhYmxlKGN0eC0+YmFja2xpZ2h0KTsKKwlyZXR1cm4gbWlwaV9k c2lfZGNzX3NldF9kaXNwbGF5X29uKGN0eC0+ZHNpKTsKK30KKworc3RhdGljIGludCBzMDcwd3Yy MF91bnByZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3RydWN0IHMwNzB3djIw ICpjdHggPSBwYW5lbF90b19zMDcwd3YyMChwYW5lbCk7CisJaW50IHJldDsKKworCXJldCA9IG1p cGlfZHNpX2Rjc19zZXRfZGlzcGxheV9vZmYoY3R4LT5kc2kpOworCWlmIChyZXQgPCAwKQorCQlk ZXZfZXJyKHBhbmVsLT5kZXYsICJmYWlsZWQgdG8gc2V0IGRpc3BsYXkgb2ZmOiAlZFxuIiwgcmV0 KTsKKworCXJldCA9IG1pcGlfZHNpX2Rjc19lbnRlcl9zbGVlcF9tb2RlKGN0eC0+ZHNpKTsKKwlp ZiAocmV0IDwgMCkKKwkJZGV2X2VycihwYW5lbC0+ZGV2LCAiZmFpbGVkIHRvIGVudGVyIHNsZWVw IG1vZGU6ICVkXG4iLCByZXQpOworCisJbXNsZWVwKDEwMCk7CisKKwlncGlvZF9zZXRfdmFsdWUo Y3R4LT5yZXNldF9ncGlvLCAwKTsKKworCWdwaW9kX3NldF92YWx1ZShjdHgtPnJlc2V0X2dwaW8s IDEpOworCisJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+ZW5hYmxlX2dwaW8sIDApOworCisJZ3Bpb2Rf c2V0X3ZhbHVlKGN0eC0+cmVzZXRfZ3BpbywgMCk7CisKKwlyZWd1bGF0b3JfZGlzYWJsZShjdHgt PnZkZCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlIHMwNzB3djIwX2RlZmF1bHRfbW9kZSA9IHsKKwkuY2xvY2sgPSAzMDAwMCwKKwkudnJl ZnJlc2ggPSA2MCwKKworCS5oZGlzcGxheSA9IDgwMCwKKwkuaHN5bmNfc3RhcnQgPSA4MDAgKyA0 MCwKKwkuaHN5bmNfZW5kID0gODAwICsgNDAgKyA0OCwKKwkuaHRvdGFsID0gODAwICsgNDAgKyA0 OCArIDQwLAorCisJLnZkaXNwbGF5ID0gNDgwLAorCS52c3luY19zdGFydCA9IDQ4MCArIDEzLAor CS52c3luY19lbmQgPSA0ODAgKyAxMyArIDMsCisJLnZ0b3RhbCA9IDQ4MCArIDEzICsgMyArIDI5 LAorCisJLndpZHRoX21tCT0gODYsCisJLmhlaWdodF9tbQk9IDE1NCwKK307CisKK3N0YXRpYyBp bnQgczA3MHd2MjBfZ2V0X21vZGVzKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSBwYW5lbC0+Y29ubmVjdG9yOworCXN0cnVjdCBz MDcwd3YyMCAqY3R4ID0gcGFuZWxfdG9fczA3MHd2MjAocGFuZWwpOworCXN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICptb2RlOworCisJbW9kZSA9IGRybV9tb2RlX2R1cGxpY2F0ZShwYW5lbC0+ZHJt LCAmczA3MHd2MjBfZGVmYXVsdF9tb2RlKTsKKwlpZiAoIW1vZGUpIHsKKwkJZGV2X2VycigmY3R4 LT5kc2ktPmRldiwgImZhaWxlZCB0byBhZGQgbW9kZSAldXgldXhAJXVcbiIsCisJCQlzMDcwd3Yy MF9kZWZhdWx0X21vZGUuaGRpc3BsYXksCisJCQlzMDcwd3YyMF9kZWZhdWx0X21vZGUudmRpc3Bs YXksCisJCQlzMDcwd3YyMF9kZWZhdWx0X21vZGUudnJlZnJlc2gpOworCQlyZXR1cm4gLUVOT01F TTsKKwl9CisKKwlkcm1fbW9kZV9zZXRfbmFtZShtb2RlKTsKKworCW1vZGUtPnR5cGUgPSBEUk1f TU9ERV9UWVBFX0RSSVZFUiB8IERSTV9NT0RFX1RZUEVfUFJFRkVSUkVEOworCWRybV9tb2RlX3By b2JlZF9hZGQoY29ubmVjdG9yLCBtb2RlKTsKKworCXBhbmVsLT5jb25uZWN0b3ItPmRpc3BsYXlf aW5mby53aWR0aF9tbSA9IG1vZGUtPndpZHRoX21tOworCXBhbmVsLT5jb25uZWN0b3ItPmRpc3Bs YXlfaW5mby5oZWlnaHRfbW0gPSBtb2RlLT5oZWlnaHRfbW07CisKKwlyZXR1cm4gMTsKK30KKwor c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGFuZWxfZnVuY3MgczA3MHd2MjBfZnVuY3MgPSB7CisJ LmRpc2FibGUgPSBzMDcwd3YyMF9kaXNhYmxlLAorCS51bnByZXBhcmUgPSBzMDcwd3YyMF91bnBy ZXBhcmUsCisJLnByZXBhcmUgPSBzMDcwd3YyMF9wcmVwYXJlLAorCS5lbmFibGUgPSBzMDcwd3Yy MF9lbmFibGUsCisJLmdldF9tb2RlcyA9IHMwNzB3djIwX2dldF9tb2RlcywKK307CisKK3N0YXRp YyBpbnQgczA3MHd2MjBfZHNpX3Byb2JlKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKK3sK KwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wOworCXN0cnVjdCBzMDcwd3YyMCAqY3R4OworCWludCBy ZXQ7CisKKwljdHggPSBkZXZtX2t6YWxsb2MoJmRzaS0+ZGV2LCBzaXplb2YoKmN0eCksIEdGUF9L RVJORUwpOworCWlmICghY3R4KQorCQlyZXR1cm4gLUVOT01FTTsKKwltaXBpX2RzaV9zZXRfZHJ2 ZGF0YShkc2ksIGN0eCk7CisJY3R4LT5kc2kgPSBkc2k7CisKKwlkcm1fcGFuZWxfaW5pdCgmY3R4 LT5wYW5lbCk7CisJY3R4LT5wYW5lbC5kZXYgPSAmZHNpLT5kZXY7CisJY3R4LT5wYW5lbC5mdW5j cyA9ICZzMDcwd3YyMF9mdW5jczsKKworCWN0eC0+dmRkID0gZGV2bV9yZWd1bGF0b3JfZ2V0KCZk c2ktPmRldiwgInZkZCIpOworCWlmIChJU19FUlIoY3R4LT52ZGQpKSB7CisJCWRldl9lcnIoJmRz aS0+ZGV2LCAiQ291bGRuJ3QgZ2V0IHZkZCByZWd1bGF0b3JcbiIpOworCQlyZXR1cm4gUFRSX0VS UihjdHgtPnZkZCk7CisJfQorCisJY3R4LT5lbmFibGVfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KCZk c2ktPmRldiwgImVuYWJsZSIsIEdQSU9EX09VVF9MT1cpOworCWlmIChJU19FUlIoY3R4LT5lbmFi bGVfZ3BpbykpIHsKKwkJZGV2X2VycigmZHNpLT5kZXYsICJDb3VsZG4ndCBnZXQgb3VyIGVuYWJs ZSBHUElPXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5lbmFibGVfZ3Bpbyk7CisJfQorCisJ Y3R4LT5yZXNldF9ncGlvID0gZGV2bV9ncGlvZF9nZXQoJmRzaS0+ZGV2LCAicmVzZXQiLCBHUElP RF9PVVRfTE9XKTsKKwlpZiAoSVNfRVJSKGN0eC0+cmVzZXRfZ3BpbykpIHsKKwkJZGV2X2Vycigm ZHNpLT5kZXYsICJDb3VsZG4ndCBnZXQgb3VyIHJlc2V0IEdQSU9cbiIpOworCQlyZXR1cm4gUFRS X0VSUihjdHgtPnJlc2V0X2dwaW8pOworCX0KKworCW5wID0gb2ZfcGFyc2VfcGhhbmRsZShkc2kt PmRldi5vZl9ub2RlLCAiYmFja2xpZ2h0IiwgMCk7CisJaWYgKG5wKSB7CisJCWN0eC0+YmFja2xp Z2h0ID0gb2ZfZmluZF9iYWNrbGlnaHRfYnlfbm9kZShucCk7CisJCW9mX25vZGVfcHV0KG5wKTsK KworCQlpZiAoIWN0eC0+YmFja2xpZ2h0KQorCQkJcmV0dXJuIC1FUFJPQkVfREVGRVI7CisJfQor CisJcmV0ID0gZHJtX3BhbmVsX2FkZCgmY3R4LT5wYW5lbCk7CisJaWYgKHJldCA8IDApCisJCXJl dHVybiByZXQ7CisKKwlkc2ktPm1vZGVfZmxhZ3MgPSBNSVBJX0RTSV9NT0RFX1ZJREVPX1NZTkNf UFVMU0U7CisJZHNpLT5mb3JtYXQgPSBNSVBJX0RTSV9GTVRfUkdCODg4OworCWRzaS0+bGFuZXMg PSA0OworCisJcmV0dXJuIG1pcGlfZHNpX2F0dGFjaChkc2kpOworfQorCitzdGF0aWMgaW50IHMw NzB3djIwX2RzaV9yZW1vdmUoc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpKQoreworCXN0cnVj dCBzMDcwd3YyMCAqY3R4ID0gbWlwaV9kc2lfZ2V0X2RydmRhdGEoZHNpKTsKKworCW1pcGlfZHNp X2RldGFjaChkc2kpOworCWRybV9wYW5lbF9yZW1vdmUoJmN0eC0+cGFuZWwpOworCisJaWYgKGN0 eC0+YmFja2xpZ2h0KQorCQlwdXRfZGV2aWNlKCZjdHgtPmJhY2tsaWdodC0+ZGV2KTsKKworCXJl dHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzMDcwd3YyMF9v Zl9tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUgPSAiYmFuYW5hcGksczA3MHd2MjAtY3QxNi1p Y242MjExIiwgfSwKKwl7IH0KK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzMDcwd3YyMF9v Zl9tYXRjaCk7CisKK3N0YXRpYyBzdHJ1Y3QgbWlwaV9kc2lfZHJpdmVyIHMwNzB3djIwX2RyaXZl ciA9IHsKKwkucHJvYmUgPSBzMDcwd3YyMF9kc2lfcHJvYmUsCisJLnJlbW92ZSA9IHMwNzB3djIw X2RzaV9yZW1vdmUsCisJLmRyaXZlciA9IHsKKwkJLm5hbWUgPSAiYmFuYW5hcGktczA3MHd2MjAt Y3QxNi1pY242MjExIiwKKwkJLm9mX21hdGNoX3RhYmxlID0gczA3MHd2MjBfb2ZfbWF0Y2gsCisJ fSwKK307Cittb2R1bGVfbWlwaV9kc2lfZHJpdmVyKHMwNzB3djIwX2RyaXZlcik7CisKK01PRFVM RV9BVVRIT1IoIkphZ2FuIFRla2kgPGphZ2FuQGFtYXJ1bGFzb2x1dGlvbnMuY29tPiIpOworTU9E VUxFX0RFU0NSSVBUSU9OKCJCYW5hbmFwaSBTMDcwV1YyMC1DVDE2IElDTjYyMTEgTUlQSS1EU0kg dG8gUkdCIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Ci0tIAoyLjE4LjAuMzIxLmdmZmM2 ZmEwZTMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==