From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bibby Hsieh Subject: [PATCH v5 07/11] drm/mediatek: separate hdmi phy to different file Date: Wed, 3 Oct 2018 11:41:47 +0800 Message-ID: <20181003034151.31452-8-bibby.hsieh@mediatek.com> References: <20181003034151.31452-1-bibby.hsieh@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181003034151.31452-1-bibby.hsieh@mediatek.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: David Airlie , Matthias Brugger , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org Cc: chunhui dai , linux-kernel@vger.kernel.org, Cawa Cheng , Mao Huang , Thierry Reding , Yingjoe Chen , Sascha Hauer , linux-arm-kernel@lists.infradead.org List-Id: linux-mediatek@lists.infradead.org RnJvbTogY2h1bmh1aSBkYWkgPGNodW5odWkuZGFpQG1lZGlhdGVrLmNvbT4KCkRpZmZlcmVudCBJ QyBoYXMgZGlmZmVyZW50IHBoeSBzZXR0aW5nIG9mIEhETUkuClRoaXMgcGF0Y2ggc2VwYXJhdGVz IHRoZSBwaHkgaGFyZHdhcmUgcmVsYXRlIHBhcnQgZm9yIG10ODE3My4KClNpZ25lZC1vZmYtYnk6 IGNodW5odWkgZGFpIDxjaHVuaHVpLmRhaUBtZWRpYXRlay5jb20+ClJldmlld2VkLWJ5OiBDSyBI dSA8Y2suaHVAbWVkaWF0ZWsuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtl ZmlsZSAgICAgICAgICAgICAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf aGRtaS5jICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19o ZG1pLmggICAgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19o ZG1pX3BoeS5jICAgICAgICB8IDIzMiArKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmggICAgICAgIHwgIDU4ICsrKysrKysKIGRy aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbXQ4MTczX2hkbWlfcGh5LmMgfCAyMjYgKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDMwMiBpbnNlcnRpb25zKCspLCAy MjMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19oZG1pX3BoeS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21l ZGlhdGVrL210a19oZG1pX3BoeS5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL01ha2VmaWxlCmluZGV4IGNl ODNjMzk2YTc0Mi4uNjFjZjBkMmFiMjhhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVk aWF0ZWsvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL01ha2VmaWxlCkBA IC0xLDQgKzEsNSBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorCiBtZWRp YXRlay1kcm0teSA6PSBtdGtfZGlzcF9jb2xvci5vIFwKIAkJICBtdGtfZGlzcF9vdmwubyBcCiAJ CSAgbXRrX2Rpc3BfcmRtYS5vIFwKQEAgLTE4LDYgKzE5LDcgQEAgb2JqLSQoQ09ORklHX0RSTV9N RURJQVRFSykgKz0gbWVkaWF0ZWstZHJtLm8KIG1lZGlhdGVrLWRybS1oZG1pLW9ianMgOj0gbXRr X2NlYy5vIFwKIAkJCSAgbXRrX2hkbWkubyBcCiAJCQkgIG10a19oZG1pX2RkYy5vIFwKLQkJCSAg bXRrX210ODE3M19oZG1pX3BoeS5vCisJCQkgIG10a19tdDgxNzNfaGRtaV9waHkubyBcCisJCQkg IG10a19oZG1pX3BoeS5vCiAKLW9iai0kKENPTkZJR19EUk1fTUVESUFURUtfSERNSSkgKz0gbWVk aWF0ZWstZHJtLWhkbWkubworb2JqLSQoQ09ORklHX0RSTV9NRURJQVRFS19IRE1JKSArPSBtZWRp YXRlay1kcm0taGRtaS5vClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVk aWF0ZWsvbXRrX2hkbWkuYwppbmRleCAyZDQ1ZDFkZDk1NTQuLjJjYTlmNmE2NGRhYiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL21lZGlhdGVrL210a19oZG1pLmMKQEAgLTIzMyw2ICsyMzMsNyBAQCBzdGF0aWMgdm9p ZCBtdGtfaGRtaV9od192aWRfYmxhY2soc3RydWN0IG10a19oZG1pICpoZG1pLCBib29sIGJsYWNr KQogc3RhdGljIHZvaWQgbXRrX2hkbWlfaHdfbWFrZV9yZWdfd3JpdGFibGUoc3RydWN0IG10a19o ZG1pICpoZG1pLCBib29sIGVuYWJsZSkKIHsKIAlzdHJ1Y3QgYXJtX3NtY2NjX3JlcyByZXM7CisJ c3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHkgPSBwaHlfZ2V0X2RydmRhdGEoaGRtaS0+cGh5 KTsKIAogCS8qCiAJICogTVQ4MTczIEhETUkgaGFyZHdhcmUgaGFzIGFuIG91dHB1dCBjb250cm9s IGJpdCB0byBlbmFibGUvZGlzYWJsZSBIRE1JCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvbXRrX2hkbWkuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaS5o CmluZGV4IDYzNzFiM2RlMWZmNi4uM2U5ZmI4ZDE5ODAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWkuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2hkbWkuaApAQCAtMTMsMTEgKzEzLDExIEBACiAgKi8KICNpZm5kZWYgX01US19IRE1JX0NU UkxfSAogI2RlZmluZSBfTVRLX0hETUlfQ1RSTF9ICisjaW5jbHVkZSAibXRrX2hkbWlfcGh5Lmgi CiAKIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXI7CiAKIGV4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJp dmVyIG10a19jZWNfZHJpdmVyOwogZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2hk bWlfZGRjX2RyaXZlcjsKLWV4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19oZG1pX3Bo eV9kcml2ZXI7CiAKICNlbmRpZiAvKiBfTVRLX0hETUlfQ1RSTF9IICovCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmMgYi9kcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi41MTRmM2U5YTg3NjcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmMKQEAgLTAsMCArMSwyMzIgQEAKKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE4IE1lZGlhVGVr IEluYy4KKyAqIEF1dGhvcjogSmllIFFpdSA8amllLnFpdUBtZWRpYXRlay5jb20+CisgKi8KKwor I2luY2x1ZGUgIm10a19oZG1pX3BoeS5oIgorCitzdGF0aWMgaW50IG10a19oZG1pX3BoeV9wb3dl cl9vbihzdHJ1Y3QgcGh5ICpwaHkpOworc3RhdGljIGludCBtdGtfaGRtaV9waHlfcG93ZXJfb2Zm KHN0cnVjdCBwaHkgKnBoeSk7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5X29wcyBtdGtfaGRt aV9waHlfZGV2X29wcyA9IHsKKwkucG93ZXJfb24gPSBtdGtfaGRtaV9waHlfcG93ZXJfb24sCisJ LnBvd2VyX29mZiA9IG10a19oZG1pX3BoeV9wb3dlcl9vZmYsCisJLm93bmVyID0gVEhJU19NT0RV TEUsCit9OworCitsb25nIG10a19oZG1pX3BsbF9yb3VuZF9yYXRlKHN0cnVjdCBjbGtfaHcgKmh3 LCB1bnNpZ25lZCBsb25nIHJhdGUsCisJCQkgICAgIHVuc2lnbmVkIGxvbmcgKnBhcmVudF9yYXRl KQoreworCXN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5ID0gdG9fbXRrX2hkbWlfcGh5KGh3 KTsKKworCWhkbWlfcGh5LT5wbGxfcmF0ZSA9IHJhdGU7CisJaWYgKHJhdGUgPD0gNzQyNTAwMDAp CisJCSpwYXJlbnRfcmF0ZSA9IHJhdGU7CisJZWxzZQorCQkqcGFyZW50X3JhdGUgPSByYXRlIC8g MjsKKworCXJldHVybiByYXRlOworfQorCit1bnNpZ25lZCBsb25nIG10a19oZG1pX3BsbF9yZWNh bGNfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywKKwkJCQkgICAgICAgdW5zaWduZWQgbG9uZyBwYXJl bnRfcmF0ZSkKK3sKKwlzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSA9IHRvX210a19oZG1p X3BoeShodyk7CisKKwlyZXR1cm4gaGRtaV9waHktPnBsbF9yYXRlOworfQorCit2b2lkIG10a19o ZG1pX3BoeV9jbGVhcl9iaXRzKHN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5LCB1MzIgb2Zm c2V0LAorCQkJICAgICB1MzIgYml0cykKK3sKKwl2b2lkIF9faW9tZW0gKnJlZyA9IGhkbWlfcGh5 LT5yZWdzICsgb2Zmc2V0OworCXUzMiB0bXA7CisKKwl0bXAgPSByZWFkbChyZWcpOworCXRtcCAm PSB+Yml0czsKKwl3cml0ZWwodG1wLCByZWcpOworfQorCit2b2lkIG10a19oZG1pX3BoeV9zZXRf Yml0cyhzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSwgdTMyIG9mZnNldCwKKwkJCSAgIHUz MiBiaXRzKQoreworCXZvaWQgX19pb21lbSAqcmVnID0gaGRtaV9waHktPnJlZ3MgKyBvZmZzZXQ7 CisJdTMyIHRtcDsKKworCXRtcCA9IHJlYWRsKHJlZyk7CisJdG1wIHw9IGJpdHM7CisJd3JpdGVs KHRtcCwgcmVnKTsKK30KKwordm9pZCBtdGtfaGRtaV9waHlfbWFzayhzdHJ1Y3QgbXRrX2hkbWlf cGh5ICpoZG1pX3BoeSwgdTMyIG9mZnNldCwKKwkJICAgICAgIHUzMiB2YWwsIHUzMiBtYXNrKQor eworCXZvaWQgX19pb21lbSAqcmVnID0gaGRtaV9waHktPnJlZ3MgKyBvZmZzZXQ7CisJdTMyIHRt cDsKKworCXRtcCA9IHJlYWRsKHJlZyk7CisJdG1wID0gKHRtcCAmIH5tYXNrKSB8ICh2YWwgJiBt YXNrKTsKKwl3cml0ZWwodG1wLCByZWcpOworfQorCitpbmxpbmUgc3RydWN0IG10a19oZG1pX3Bo eSAqdG9fbXRrX2hkbWlfcGh5KHN0cnVjdCBjbGtfaHcgKmh3KQoreworCXJldHVybiBjb250YWlu ZXJfb2YoaHcsIHN0cnVjdCBtdGtfaGRtaV9waHksIHBsbF9odyk7Cit9CisKK3N0YXRpYyBpbnQg bXRrX2hkbWlfcGh5X3Bvd2VyX29uKHN0cnVjdCBwaHkgKnBoeSkKK3sKKwlzdHJ1Y3QgbXRrX2hk bWlfcGh5ICpoZG1pX3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOworCWludCByZXQ7CisKKwly ZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoaGRtaV9waHktPnBsbCk7CisJaWYgKHJldCA8IDApCisJ CXJldHVybiByZXQ7CisKKwloZG1pX3BoeS0+Y29uZi0+aGRtaV9waHlfZW5hYmxlX3RtZHMoaGRt aV9waHkpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG10a19oZG1pX3BoeV9wb3dlcl9v ZmYoc3RydWN0IHBoeSAqcGh5KQoreworCXN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5ID0g cGh5X2dldF9kcnZkYXRhKHBoeSk7CisKKwloZG1pX3BoeS0+Y29uZi0+aGRtaV9waHlfZGlzYWJs ZV90bWRzKGhkbWlfcGh5KTsKKwljbGtfZGlzYWJsZV91bnByZXBhcmUoaGRtaV9waHktPnBsbCk7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBwaHlfb3BzICoKK210a19o ZG1pX3BoeV9kZXZfZ2V0X29wcyhjb25zdCBzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSkK K3sKKwlpZiAoaGRtaV9waHkgJiYgaGRtaV9waHktPmNvbmYgJiYKKwkgICAgaGRtaV9waHktPmNv bmYtPmhkbWlfcGh5X2VuYWJsZV90bWRzICYmCisJICAgIGhkbWlfcGh5LT5jb25mLT5oZG1pX3Bo eV9kaXNhYmxlX3RtZHMpCisJCXJldHVybiAmbXRrX2hkbWlfcGh5X2Rldl9vcHM7CisKKwlkZXZf ZXJyKGhkbWlfcGh5LT5kZXYsICJGYWlsZWQgdG8gZ2V0IGRldiBvcHMgb2YgcGh5XG4iKTsKKwkJ cmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkIG10a19oZG1pX3BoeV9jbGtfZ2V0X29wcyhz dHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSwKKwkJCQkgICAgIGNvbnN0IHN0cnVjdCBjbGtf b3BzICoqb3BzKQoreworCWlmIChoZG1pX3BoeSAmJiBoZG1pX3BoeS0+Y29uZiAmJiBoZG1pX3Bo eS0+Y29uZi0+aGRtaV9waHlfY2xrX29wcykKKwkJKm9wcyA9IGhkbWlfcGh5LT5jb25mLT5oZG1p X3BoeV9jbGtfb3BzOworCWVsc2UKKwkJZGV2X2VycihoZG1pX3BoeS0+ZGV2LCAiRmFpbGVkIHRv IGdldCBjbGsgb3BzIG9mIHBoeVxuIik7Cit9CisKK3N0YXRpYyBpbnQgbXRrX2hkbWlfcGh5X3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGRldmljZSAqZGV2 ID0gJnBkZXYtPmRldjsKKwlzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeTsKKwlzdHJ1Y3Qg cmVzb3VyY2UgKm1lbTsKKwlzdHJ1Y3QgY2xrICpyZWZfY2xrOworCWNvbnN0IGNoYXIgKnJlZl9j bGtfbmFtZTsKKwlzdHJ1Y3QgY2xrX2luaXRfZGF0YSBjbGtfaW5pdCA9IHsKKwkJLm51bV9wYXJl bnRzID0gMSwKKwkJLnBhcmVudF9uYW1lcyA9IChjb25zdCBjaGFyICogY29uc3QgKikmcmVmX2Ns a19uYW1lLAorCQkuZmxhZ3MgPSBDTEtfU0VUX1JBVEVfUEFSRU5UIHwgQ0xLX1NFVF9SQVRFX0dB VEUsCisJfTsKKworCXN0cnVjdCBwaHkgKnBoeTsKKwlzdHJ1Y3QgcGh5X3Byb3ZpZGVyICpwaHlf cHJvdmlkZXI7CisJaW50IHJldDsKKworCWhkbWlfcGh5ID0gZGV2bV9remFsbG9jKGRldiwgc2l6 ZW9mKCpoZG1pX3BoeSksIEdGUF9LRVJORUwpOworCWlmICghaGRtaV9waHkpCisJCXJldHVybiAt RU5PTUVNOworCisJbWVtID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0Vf TUVNLCAwKTsKKwloZG1pX3BoeS0+cmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIG1l bSk7CisJaWYgKElTX0VSUihoZG1pX3BoeS0+cmVncykpIHsKKwkJcmV0ID0gUFRSX0VSUihoZG1p X3BoeS0+cmVncyk7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGdldCBtZW1vcnkgcmVzb3Vy Y2U6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJlZl9jbGsgPSBkZXZtX2Ns a19nZXQoZGV2LCAicGxsX3JlZiIpOworCWlmIChJU19FUlIocmVmX2NsaykpIHsKKwkJcmV0ID0g UFRSX0VSUihyZWZfY2xrKTsKKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIGdldCBQ TEwgcmVmZXJlbmNlIGNsb2NrOiAlZFxuIiwKKwkJCXJldCk7CisJCXJldHVybiByZXQ7CisJfQor CXJlZl9jbGtfbmFtZSA9IF9fY2xrX2dldF9uYW1lKHJlZl9jbGspOworCisJcmV0ID0gb2ZfcHJv cGVydHlfcmVhZF9zdHJpbmcoZGV2LT5vZl9ub2RlLCAiY2xvY2stb3V0cHV0LW5hbWVzIiwKKwkJ CQkgICAgICAmY2xrX2luaXQubmFtZSk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2VycihkZXYs ICJGYWlsZWQgdG8gcmVhZCBjbG9jay1vdXRwdXQtbmFtZXM6ICVkXG4iLCByZXQpOworCQlyZXR1 cm4gcmV0OworCX0KKworCWhkbWlfcGh5LT5kZXYgPSBkZXY7CisJaGRtaV9waHktPmNvbmYgPQor CQkoc3RydWN0IG10a19oZG1pX3BoeV9jb25mICopb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRl dik7CisJbXRrX2hkbWlfcGh5X2Nsa19nZXRfb3BzKGhkbWlfcGh5LCAmY2xrX2luaXQub3BzKTsK KwloZG1pX3BoeS0+cGxsX2h3LmluaXQgPSAmY2xrX2luaXQ7CisJaGRtaV9waHktPnBsbCA9IGRl dm1fY2xrX3JlZ2lzdGVyKGRldiwgJmhkbWlfcGh5LT5wbGxfaHcpOworCWlmIChJU19FUlIoaGRt aV9waHktPnBsbCkpIHsKKwkJcmV0ID0gUFRSX0VSUihoZG1pX3BoeS0+cGxsKTsKKwkJZGV2X2Vy cihkZXYsICJGYWlsZWQgdG8gcmVnaXN0ZXIgUExMOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJl dDsKKwl9CisKKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihkZXYtPm9mX25vZGUsICJtZWRp YXRlayxpYmlhcyIsCisJCQkJICAgJmhkbWlfcGh5LT5pYmlhcyk7CisJaWYgKHJldCA8IDApIHsK KwkJZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIGdldCBpYmlhczogJWRcbiIsIHJldCk7 CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIoZGV2LT5v Zl9ub2RlLCAibWVkaWF0ZWssaWJpYXNfdXAiLAorCQkJCSAgICZoZG1pX3BoeS0+aWJpYXNfdXAp OworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgIkZhaWxlZCB0byBnZXQg aWJpYXMgdXA6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCWRldl9pbmZvKGRl diwgIlVzaW5nIGRlZmF1bHQgVFggRFJWIGltcGVkYW5jZTogNC4yay8zNlxuIik7CisJaGRtaV9w aHktPmRydl9pbXBfY2xrID0gMHgzMDsKKwloZG1pX3BoeS0+ZHJ2X2ltcF9kMiA9IDB4MzA7CisJ aGRtaV9waHktPmRydl9pbXBfZDEgPSAweDMwOworCWhkbWlfcGh5LT5kcnZfaW1wX2QwID0gMHgz MDsKKworCXBoeSA9IGRldm1fcGh5X2NyZWF0ZShkZXYsIE5VTEwsIG10a19oZG1pX3BoeV9kZXZf Z2V0X29wcyhoZG1pX3BoeSkpOworCWlmIChJU19FUlIocGh5KSkgeworCQlkZXZfZXJyKGRldiwg IkZhaWxlZCB0byBjcmVhdGUgSERNSSBQSFlcbiIpOworCQlyZXR1cm4gUFRSX0VSUihwaHkpOwor CX0KKwlwaHlfc2V0X2RydmRhdGEocGh5LCBoZG1pX3BoeSk7CisKKwlwaHlfcHJvdmlkZXIgPSBk ZXZtX29mX3BoeV9wcm92aWRlcl9yZWdpc3RlcihkZXYsIG9mX3BoeV9zaW1wbGVfeGxhdGUpOwor CWlmIChJU19FUlIocGh5X3Byb3ZpZGVyKSkgeworCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBy ZWdpc3RlciBIRE1JIFBIWVxuIik7CisJCXJldHVybiBQVFJfRVJSKHBoeV9wcm92aWRlcik7CisJ fQorCisJcmV0dXJuIG9mX2Nsa19hZGRfcHJvdmlkZXIoZGV2LT5vZl9ub2RlLCBvZl9jbGtfc3Jj X3NpbXBsZV9nZXQsCisJCQkJICAgaGRtaV9waHktPnBsbCk7Cit9CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10a19oZG1pX3BoeV9tYXRjaFtdID0geworCXsgLmNvbXBhdGli bGUgPSAibWVkaWF0ZWssbXQ4MTczLWhkbWktcGh5IiwKKwkgIC5kYXRhID0gJm10a19oZG1pX3Bo eV84MTczX2NvbmYsCisJfSwKKwl7fSwKK307CisKK3N0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRr X2hkbWlfcGh5X2RyaXZlciA9IHsKKwkucHJvYmUgPSBtdGtfaGRtaV9waHlfcHJvYmUsCisJLmRy aXZlciA9IHsKKwkJLm5hbWUgPSAibWVkaWF0ZWstaGRtaS1waHkiLAorCQkub2ZfbWF0Y2hfdGFi bGUgPSBtdGtfaGRtaV9waHlfbWF0Y2gsCisJfSwKK307CisKK01PRFVMRV9ERVNDUklQVElPTigi TWVkaWFUZWsgSERNSSBQSFkgRHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmggYi9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi4wOWI4ZjUyNWU2YjgKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmgKQEAgLTAsMCArMSw1OCBAQAorLyog U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KKy8qCisgKiBDb3B5cmlnaHQgKGMp IDIwMTggTWVkaWFUZWsgSW5jLgorICogQXV0aG9yOiBDaHVuaHVpIERhaSA8Y2h1bmh1aS5kYWlA bWVkaWF0ZWsuY29tPgorICovCisKKyNpZm5kZWYgX01US19IRE1JX1BIWV9ICisjZGVmaW5lIF9N VEtfSERNSV9QSFlfSAorI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L2Ns ay1wcm92aWRlci5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgv aW8uaD4KKyNpbmNsdWRlIDxsaW51eC9tZmQvc3lzY29uLmg+CisjaW5jbHVkZSA8bGludXgvbW9k dWxlLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvcGh5 L3BoeS5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxp bnV4L3R5cGVzLmg+CisKK3N0cnVjdCBtdGtfaGRtaV9waHk7CisKK3N0cnVjdCBtdGtfaGRtaV9w aHlfY29uZiB7CisJY29uc3Qgc3RydWN0IGNsa19vcHMgKmhkbWlfcGh5X2Nsa19vcHM7CisJdm9p ZCAoKmhkbWlfcGh5X2VuYWJsZV90bWRzKShzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSk7 CisJdm9pZCAoKmhkbWlfcGh5X2Rpc2FibGVfdG1kcykoc3RydWN0IG10a19oZG1pX3BoeSAqaGRt aV9waHkpOworfTsKKworc3RydWN0IG10a19oZG1pX3BoeSB7CisJdm9pZCBfX2lvbWVtICpyZWdz OworCXN0cnVjdCBkZXZpY2UgKmRldjsKKwlzdHJ1Y3QgbXRrX2hkbWlfcGh5X2NvbmYgKmNvbmY7 CisJc3RydWN0IGNsayAqcGxsOworCXN0cnVjdCBjbGtfaHcgcGxsX2h3OworCXVuc2lnbmVkIGxv bmcgcGxsX3JhdGU7CisJdW5zaWduZWQgY2hhciBkcnZfaW1wX2NsazsKKwl1bnNpZ25lZCBjaGFy IGRydl9pbXBfZDI7CisJdW5zaWduZWQgY2hhciBkcnZfaW1wX2QxOworCXVuc2lnbmVkIGNoYXIg ZHJ2X2ltcF9kMDsKKwl1bnNpZ25lZCBpbnQgaWJpYXM7CisJdW5zaWduZWQgaW50IGliaWFzX3Vw OworfTsKKwordm9pZCBtdGtfaGRtaV9waHlfY2xlYXJfYml0cyhzdHJ1Y3QgbXRrX2hkbWlfcGh5 ICpoZG1pX3BoeSwgdTMyIG9mZnNldCwKKwkJCSAgICAgdTMyIGJpdHMpOwordm9pZCBtdGtfaGRt aV9waHlfc2V0X2JpdHMoc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHksIHUzMiBvZmZzZXQs CisJCQkgICB1MzIgYml0cyk7Cit2b2lkIG10a19oZG1pX3BoeV9tYXNrKHN0cnVjdCBtdGtfaGRt aV9waHkgKmhkbWlfcGh5LCB1MzIgb2Zmc2V0LAorCQkgICAgICAgdTMyIHZhbCwgdTMyIG1hc2sp Oworc3RydWN0IG10a19oZG1pX3BoeSAqdG9fbXRrX2hkbWlfcGh5KHN0cnVjdCBjbGtfaHcgKmh3 KTsKK2xvbmcgbXRrX2hkbWlfcGxsX3JvdW5kX3JhdGUoc3RydWN0IGNsa19odyAqaHcsIHVuc2ln bmVkIGxvbmcgcmF0ZSwKKwkJCSAgICAgdW5zaWduZWQgbG9uZyAqcGFyZW50X3JhdGUpOwordW5z aWduZWQgbG9uZyBtdGtfaGRtaV9wbGxfcmVjYWxjX3JhdGUoc3RydWN0IGNsa19odyAqaHcsCisJ CQkJICAgICAgIHVuc2lnbmVkIGxvbmcgcGFyZW50X3JhdGUpOworCitleHRlcm4gc3RydWN0IHBs YXRmb3JtX2RyaXZlciBtdGtfaGRtaV9waHlfZHJpdmVyOworZXh0ZXJuIHN0cnVjdCBtdGtfaGRt aV9waHlfY29uZiBtdGtfaGRtaV9waHlfODE3M19jb25mOworCisjZW5kaWYgLyogX01US19IRE1J X1BIWV9IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX210ODE3 M19oZG1pX3BoeS5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19tdDgxNzNfaGRtaV9w aHkuYwppbmRleCA1MWNiOWNmYjY2NDYuLmVkNTkxNmIyNzY1OCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL21lZGlhdGVrL210a19tdDgxNzNfaGRtaV9waHkuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX210ODE3M19oZG1pX3BoeS5jCkBAIC0xMiwxNSArMTIsNyBAQAog ICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICAqLwogCi0j aW5jbHVkZSA8bGludXgvY2xrLmg+Ci0jaW5jbHVkZSA8bGludXgvY2xrLXByb3ZpZGVyLmg+Ci0j aW5jbHVkZSA8bGludXgvZGVsYXkuaD4KLSNpbmNsdWRlIDxsaW51eC9pby5oPgotI2luY2x1ZGUg PGxpbnV4L21mZC9zeXNjb24uaD4KLSNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KLSNpbmNsdWRl IDxsaW51eC9waHkvcGh5Lmg+Ci0jaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Ci0j aW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlICJtdGtfaGRtaV9waHkuaCIKIAogI2Rl ZmluZSBIRE1JX0NPTjAJCTB4MDAKICNkZWZpbmUgUkdfSERNSVRYX1BMTF9FTgkJQklUKDMxKQpA QCAtMTIzLDIwICsxMTUsNiBAQAogI2RlZmluZSBSR1NfSERNSVRYXzVUMV9FREcJCSgweGYgPDwg NCkKICNkZWZpbmUgUkdTX0hETUlUWF9QTFVHX1RTVAkJQklUKDApCiAKLXN0cnVjdCBtdGtfaGRt aV9waHkgewotCXZvaWQgX19pb21lbSAqcmVnczsKLQlzdHJ1Y3QgZGV2aWNlICpkZXY7Ci0Jc3Ry dWN0IGNsayAqcGxsOwotCXN0cnVjdCBjbGtfaHcgcGxsX2h3OwotCXVuc2lnbmVkIGxvbmcgcGxs X3JhdGU7Ci0JdTggZHJ2X2ltcF9jbGs7Ci0JdTggZHJ2X2ltcF9kMjsKLQl1OCBkcnZfaW1wX2Qx OwotCXU4IGRydl9pbXBfZDA7Ci0JdTMyIGliaWFzOwotCXUzMiBpYmlhc191cDsKLX07Ci0KIHN0 YXRpYyBjb25zdCB1OCBQUkVESVZbM11bNF0gPSB7CiAJezB4MCwgMHgwLCAweDAsIDB4MH0sCS8q IDI3TWh6ICovCiAJezB4MSwgMHgxLCAweDEsIDB4MX0sCS8qIDc0TWh6ICovCkBAIC0xODUsNDQg KzE2Myw2IEBAIHN0YXRpYyBjb25zdCB1OCBIVFBMTEJSWzNdWzRdID0gewogCXsweDEsIDB4Miwg MHgyLCAweDF9CS8qIDE0OE1oeiAqLwogfTsKIAotc3RhdGljIHZvaWQgbXRrX2hkbWlfcGh5X2Ns ZWFyX2JpdHMoc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHksIHUzMiBvZmZzZXQsCi0JCQkJ ICAgIHUzMiBiaXRzKQotewotCXZvaWQgX19pb21lbSAqcmVnID0gaGRtaV9waHktPnJlZ3MgKyBv ZmZzZXQ7Ci0JdTMyIHRtcDsKLQotCXRtcCA9IHJlYWRsKHJlZyk7Ci0JdG1wICY9IH5iaXRzOwot CXdyaXRlbCh0bXAsIHJlZyk7Ci19Ci0KLXN0YXRpYyB2b2lkIG10a19oZG1pX3BoeV9zZXRfYml0 cyhzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSwgdTMyIG9mZnNldCwKLQkJCQkgIHUzMiBi aXRzKQotewotCXZvaWQgX19pb21lbSAqcmVnID0gaGRtaV9waHktPnJlZ3MgKyBvZmZzZXQ7Ci0J dTMyIHRtcDsKLQotCXRtcCA9IHJlYWRsKHJlZyk7Ci0JdG1wIHw9IGJpdHM7Ci0Jd3JpdGVsKHRt cCwgcmVnKTsKLX0KLQotc3RhdGljIHZvaWQgbXRrX2hkbWlfcGh5X21hc2soc3RydWN0IG10a19o ZG1pX3BoeSAqaGRtaV9waHksIHUzMiBvZmZzZXQsCi0JCQkgICAgICB1MzIgdmFsLCB1MzIgbWFz aykKLXsKLQl2b2lkIF9faW9tZW0gKnJlZyA9IGhkbWlfcGh5LT5yZWdzICsgb2Zmc2V0OwotCXUz MiB0bXA7Ci0KLQl0bXAgPSByZWFkbChyZWcpOwotCXRtcCA9ICh0bXAgJiB+bWFzaykgfCAodmFs ICYgbWFzayk7Ci0Jd3JpdGVsKHRtcCwgcmVnKTsKLX0KLQotc3RhdGljIGlubGluZSBzdHJ1Y3Qg bXRrX2hkbWlfcGh5ICp0b19tdGtfaGRtaV9waHkoc3RydWN0IGNsa19odyAqaHcpCi17Ci0JcmV0 dXJuIGNvbnRhaW5lcl9vZihodywgc3RydWN0IG10a19oZG1pX3BoeSwgcGxsX2h3KTsKLX0KLQog c3RhdGljIGludCBtdGtfaGRtaV9wbGxfcHJlcGFyZShzdHJ1Y3QgY2xrX2h3ICpodykKIHsKIAlz dHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSA9IHRvX210a19oZG1pX3BoeShodyk7CkBAIC0z NDUsMjkgKzI4NSw3IEBAIHN0YXRpYyBpbnQgbXRrX2hkbWlfcGxsX3NldF9yYXRlKHN0cnVjdCBj bGtfaHcgKmh3LCB1bnNpZ25lZCBsb25nIHJhdGUsCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBs b25nIG10a19oZG1pX3BsbF9yb3VuZF9yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LCB1bnNpZ25lZCBs b25nIHJhdGUsCi0JCQkJICAgIHVuc2lnbmVkIGxvbmcgKnBhcmVudF9yYXRlKQotewotCXN0cnVj dCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5ID0gdG9fbXRrX2hkbWlfcGh5KGh3KTsKLQotCWhkbWlf cGh5LT5wbGxfcmF0ZSA9IHJhdGU7Ci0JaWYgKHJhdGUgPD0gNzQyNTAwMDApCi0JCSpwYXJlbnRf cmF0ZSA9IHJhdGU7Ci0JZWxzZQotCQkqcGFyZW50X3JhdGUgPSByYXRlIC8gMjsKLQotCXJldHVy biByYXRlOwotfQotCi1zdGF0aWMgdW5zaWduZWQgbG9uZyBtdGtfaGRtaV9wbGxfcmVjYWxjX3Jh dGUoc3RydWN0IGNsa19odyAqaHcsCi0JCQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgcGFyZW50X3Jh dGUpCi17Ci0Jc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHkgPSB0b19tdGtfaGRtaV9waHko aHcpOwotCi0JcmV0dXJuIGhkbWlfcGh5LT5wbGxfcmF0ZTsKLX0KLQotc3RhdGljIGNvbnN0IHN0 cnVjdCBjbGtfb3BzIG10a19oZG1pX3BsbF9vcHMgPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IGNs a19vcHMgbXRrX2hkbWlfcGh5X3BsbF9vcHMgPSB7CiAJLnByZXBhcmUgPSBtdGtfaGRtaV9wbGxf cHJlcGFyZSwKIAkudW5wcmVwYXJlID0gbXRrX2hkbWlfcGxsX3VucHJlcGFyZSwKIAkuc2V0X3Jh dGUgPSBtdGtfaGRtaV9wbGxfc2V0X3JhdGUsCkBAIC0zOTAsMTQyICszMDgsMTAgQEAgc3RhdGlj IHZvaWQgbXRrX2hkbWlfcGh5X2Rpc2FibGVfdG1kcyhzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1p X3BoeSkKIAkJCQlSR19IRE1JVFhfU0VSX0VOKTsKIH0KIAotc3RhdGljIGludCBtdGtfaGRtaV9w aHlfcG93ZXJfb24oc3RydWN0IHBoeSAqcGh5KQotewotCXN0cnVjdCBtdGtfaGRtaV9waHkgKmhk bWlfcGh5ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7Ci0JaW50IHJldDsKLQotCXJldCA9IGNsa19w cmVwYXJlX2VuYWJsZShoZG1pX3BoeS0+cGxsKTsKLQlpZiAocmV0IDwgMCkKLQkJcmV0dXJuIHJl dDsKLQotCW10a19oZG1pX3BoeV9lbmFibGVfdG1kcyhoZG1pX3BoeSk7Ci0KLQlyZXR1cm4gMDsK LX0KLQotc3RhdGljIGludCBtdGtfaGRtaV9waHlfcG93ZXJfb2ZmKHN0cnVjdCBwaHkgKnBoeSkK LXsKLQlzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkp OwotCi0JbXRrX2hkbWlfcGh5X2Rpc2FibGVfdG1kcyhoZG1pX3BoeSk7Ci0JY2xrX2Rpc2FibGVf dW5wcmVwYXJlKGhkbWlfcGh5LT5wbGwpOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBjb25z dCBzdHJ1Y3QgcGh5X29wcyBtdGtfaGRtaV9waHlfb3BzID0gewotCS5wb3dlcl9vbiA9IG10a19o ZG1pX3BoeV9wb3dlcl9vbiwKLQkucG93ZXJfb2ZmID0gbXRrX2hkbWlfcGh5X3Bvd2VyX29mZiwK LQkub3duZXIgPSBUSElTX01PRFVMRSwKLX07Ci0KLXN0YXRpYyBpbnQgbXRrX2hkbWlfcGh5X3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCi17Ci0Jc3RydWN0IGRldmljZSAqZGV2 ID0gJnBkZXYtPmRldjsKLQlzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeTsKLQlzdHJ1Y3Qg cmVzb3VyY2UgKm1lbTsKLQlzdHJ1Y3QgY2xrICpyZWZfY2xrOwotCWNvbnN0IGNoYXIgKnJlZl9j bGtfbmFtZTsKLQlzdHJ1Y3QgY2xrX2luaXRfZGF0YSBjbGtfaW5pdCA9IHsKLQkJLm9wcyA9ICZt dGtfaGRtaV9wbGxfb3BzLAotCQkubnVtX3BhcmVudHMgPSAxLAotCQkucGFyZW50X25hbWVzID0g KGNvbnN0IGNoYXIgKiBjb25zdCAqKSZyZWZfY2xrX25hbWUsCi0JCS5mbGFncyA9IENMS19TRVRf UkFURV9QQVJFTlQgfCBDTEtfU0VUX1JBVEVfR0FURSwKLQl9OwotCXN0cnVjdCBwaHkgKnBoeTsK LQlzdHJ1Y3QgcGh5X3Byb3ZpZGVyICpwaHlfcHJvdmlkZXI7Ci0JaW50IHJldDsKLQotCWhkbWlf cGh5ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpoZG1pX3BoeSksIEdGUF9LRVJORUwpOwot CWlmICghaGRtaV9waHkpCi0JCXJldHVybiAtRU5PTUVNOwotCi0JbWVtID0gcGxhdGZvcm1fZ2V0 X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKLQloZG1pX3BoeS0+cmVncyA9IGRl dm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIG1lbSk7Ci0JaWYgKElTX0VSUihoZG1pX3BoeS0+cmVn cykpIHsKLQkJcmV0ID0gUFRSX0VSUihoZG1pX3BoeS0+cmVncyk7Ci0JCWRldl9lcnIoZGV2LCAi RmFpbGVkIHRvIGdldCBtZW1vcnkgcmVzb3VyY2U6ICVkXG4iLCByZXQpOwotCQlyZXR1cm4gcmV0 OwotCX0KLQotCXJlZl9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAicGxsX3JlZiIpOwotCWlmIChJ U19FUlIocmVmX2NsaykpIHsKLQkJcmV0ID0gUFRSX0VSUihyZWZfY2xrKTsKLQkJZGV2X2Vycigm cGRldi0+ZGV2LCAiRmFpbGVkIHRvIGdldCBQTEwgcmVmZXJlbmNlIGNsb2NrOiAlZFxuIiwKLQkJ CXJldCk7Ci0JCXJldHVybiByZXQ7Ci0JfQotCXJlZl9jbGtfbmFtZSA9IF9fY2xrX2dldF9uYW1l KHJlZl9jbGspOwotCi0JcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF9zdHJpbmcoZGV2LT5vZl9ub2Rl LCAiY2xvY2stb3V0cHV0LW5hbWVzIiwKLQkJCQkgICAgICAmY2xrX2luaXQubmFtZSk7Ci0JaWYg KHJldCA8IDApIHsKLQkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gcmVhZCBjbG9jay1vdXRwdXQt bmFtZXM6ICVkXG4iLCByZXQpOwotCQlyZXR1cm4gcmV0OwotCX0KLQotCWhkbWlfcGh5LT5wbGxf aHcuaW5pdCA9ICZjbGtfaW5pdDsKLQloZG1pX3BoeS0+cGxsID0gZGV2bV9jbGtfcmVnaXN0ZXIo ZGV2LCAmaGRtaV9waHktPnBsbF9odyk7Ci0JaWYgKElTX0VSUihoZG1pX3BoeS0+cGxsKSkgewot CQlyZXQgPSBQVFJfRVJSKGhkbWlfcGh5LT5wbGwpOwotCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0 byByZWdpc3RlciBQTEw6ICVkXG4iLCByZXQpOwotCQlyZXR1cm4gcmV0OwotCX0KLQotCXJldCA9 IG9mX3Byb3BlcnR5X3JlYWRfdTMyKGRldi0+b2Zfbm9kZSwgIm1lZGlhdGVrLGliaWFzIiwKLQkJ CQkgICAmaGRtaV9waHktPmliaWFzKTsKLQlpZiAocmV0IDwgMCkgewotCQlkZXZfZXJyKCZwZGV2 LT5kZXYsICJGYWlsZWQgdG8gZ2V0IGliaWFzOiAlZFxuIiwgcmV0KTsKLQkJcmV0dXJuIHJldDsK LQl9Ci0KLQlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihkZXYtPm9mX25vZGUsICJtZWRpYXRl ayxpYmlhc191cCIsCi0JCQkJICAgJmhkbWlfcGh5LT5pYmlhc191cCk7Ci0JaWYgKHJldCA8IDAp IHsKLQkJZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIGdldCBpYmlhcyB1cDogJWRcbiIs IHJldCk7Ci0JCXJldHVybiByZXQ7Ci0JfQotCi0JZGV2X2luZm8oZGV2LCAiVXNpbmcgZGVmYXVs dCBUWCBEUlYgaW1wZWRhbmNlOiA0LjJrLzM2XG4iKTsKLQloZG1pX3BoeS0+ZHJ2X2ltcF9jbGsg PSAweDMwOwotCWhkbWlfcGh5LT5kcnZfaW1wX2QyID0gMHgzMDsKLQloZG1pX3BoeS0+ZHJ2X2lt cF9kMSA9IDB4MzA7Ci0JaGRtaV9waHktPmRydl9pbXBfZDAgPSAweDMwOwotCi0JcGh5ID0gZGV2 bV9waHlfY3JlYXRlKGRldiwgTlVMTCwgJm10a19oZG1pX3BoeV9vcHMpOwotCWlmIChJU19FUlIo cGh5KSkgewotCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBjcmVhdGUgSERNSSBQSFlcbiIpOwot CQlyZXR1cm4gUFRSX0VSUihwaHkpOwotCX0KLQlwaHlfc2V0X2RydmRhdGEocGh5LCBoZG1pX3Bo eSk7Ci0KLQlwaHlfcHJvdmlkZXIgPSBkZXZtX29mX3BoeV9wcm92aWRlcl9yZWdpc3RlcihkZXYs IG9mX3BoeV9zaW1wbGVfeGxhdGUpOwotCWlmIChJU19FUlIocGh5X3Byb3ZpZGVyKSkKLQkJcmV0 dXJuIFBUUl9FUlIocGh5X3Byb3ZpZGVyKTsKLQotCWhkbWlfcGh5LT5kZXYgPSBkZXY7Ci0JcmV0 dXJuIG9mX2Nsa19hZGRfcHJvdmlkZXIoZGV2LT5vZl9ub2RlLCBvZl9jbGtfc3JjX3NpbXBsZV9n ZXQsCi0JCQkJICAgaGRtaV9waHktPnBsbCk7Ci19Ci0KLXN0YXRpYyBpbnQgbXRrX2hkbWlfcGh5 X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQotewotCXJldHVybiAwOwotfQot Ci1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdGtfaGRtaV9waHlfbWF0Y2hbXSA9 IHsKLQl7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1oZG1pLXBoeSIsIH0sCi0Je30s Ci19OwotCi1zdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19oZG1pX3BoeV9kcml2ZXIgPSB7Ci0J LnByb2JlID0gbXRrX2hkbWlfcGh5X3Byb2JlLAotCS5yZW1vdmUgPSBtdGtfaGRtaV9waHlfcmVt b3ZlLAotCS5kcml2ZXIgPSB7Ci0JCS5uYW1lID0gIm1lZGlhdGVrLWhkbWktcGh5IiwKLQkJLm9m X21hdGNoX3RhYmxlID0gbXRrX2hkbWlfcGh5X21hdGNoLAotCX0sCitzdHJ1Y3QgbXRrX2hkbWlf cGh5X2NvbmYgbXRrX2hkbWlfcGh5XzgxNzNfY29uZiA9IHsKKwkuaGRtaV9waHlfY2xrX29wcyA9 ICZtdGtfaGRtaV9waHlfcGxsX29wcywKKwkuaGRtaV9waHlfZW5hYmxlX3RtZHMgPSBtdGtfaGRt aV9waHlfZW5hYmxlX3RtZHMsCisJLmhkbWlfcGh5X2Rpc2FibGVfdG1kcyA9IG10a19oZG1pX3Bo eV9kaXNhYmxlX3RtZHMsCiB9OwogCiBNT0RVTEVfQVVUSE9SKCJKaWUgUWl1IDxqaWUucWl1QG1l ZGlhdGVrLmNvbT4iKTsKLS0gCjIuMTIuNS4yLmdiZGYyM2FiCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK