From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sibi Sankar Subject: [PATCH v4 2/3] drm/msm/dsi: add implementation for helper functions Date: Tue, 29 May 2018 19:50:32 +0530 Message-ID: <20180529142033.12989-3-sibis@codeaurora.org> References: <20180529142033.12989-1-sibis@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from smtp.codeaurora.org (smtp.codeaurora.org [198.145.29.96]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4A5606E416 for ; Tue, 29 May 2018 14:20:56 +0000 (UTC) In-Reply-To: <20180529142033.12989-1-sibis@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: architt@codeaurora.org, robdclark@gmail.com, jcrouse@codeaurora.org Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Sibi Sankar List-Id: dri-devel@lists.freedesktop.org QWRkIGRzaSBob3N0IGhlbHBlciBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiBmb3IgRFNJIHYyCkRT SSA2RyAxLnggYW5kIERTSSA2RyB2Mi4wKyBjb250cm9sbGVycwoKU2lnbmVkLW9mZi1ieTogU2li aSBTYW5rYXIgPHNpYmlzQGNvZGVhdXJvcmEub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20v ZHNpL2RzaS5oICAgICAgfCAgMTUgKysKIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9jZmcu YyAgfCAgNTYgKysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9ob3N0LmMgfCAy MTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDMgZmlsZXMgY2hhbmdlZCwgMjc4IGlu c2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZHNpL2RzaS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpLmgKaW5kZXggODBi ZTgzZThmZGVjLi5kZmEwNDlkODc2YmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZHNpL2RzaS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaS5oCkBAIC0xODMsNiAr MTgzLDIxIEBAIGludCBtc21fZHNpX2hvc3RfbW9kZXNldF9pbml0KHN0cnVjdCBtaXBpX2RzaV9o b3N0ICpob3N0LAogaW50IG1zbV9kc2lfaG9zdF9pbml0KHN0cnVjdCBtc21fZHNpICptc21fZHNp KTsKIGludCBtc21fZHNpX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpOwogaW50 IG1zbV9kc2lfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KTsKK2ludCBkc2lfbGlu a19jbGtfZW5hYmxlXzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KTsKK2ludCBkc2lf bGlua19jbGtfZW5hYmxlX3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KTsKK3ZvaWQg ZHNpX2xpbmtfY2xrX2Rpc2FibGVfNmcoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpOwor dm9pZCBkc2lfbGlua19jbGtfZGlzYWJsZV92MihzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9z dCk7CitpbnQgZHNpX3R4X2J1Zl9hbGxvY182ZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9z dCwgaW50IHNpemUpOworaW50IGRzaV90eF9idWZfYWxsb2NfdjIoc3RydWN0IG1zbV9kc2lfaG9z dCAqbXNtX2hvc3QsIGludCBzaXplKTsKK3ZvaWQgKmRzaV90eF9idWZfZ2V0XzZnKHN0cnVjdCBt c21fZHNpX2hvc3QgKm1zbV9ob3N0KTsKK3ZvaWQgKmRzaV90eF9idWZfZ2V0X3YyKHN0cnVjdCBt c21fZHNpX2hvc3QgKm1zbV9ob3N0KTsKK3ZvaWQgZHNpX3R4X2J1Zl9wdXRfNmcoc3RydWN0IG1z bV9kc2lfaG9zdCAqbXNtX2hvc3QpOworaW50IGRzaV9kbWFfYmFzZV9nZXRfNmcoc3RydWN0IG1z bV9kc2lfaG9zdCAqbXNtX2hvc3QsIHVpbnQ2NF90ICppb3ZhKTsKK2ludCBkc2lfZG1hX2Jhc2Vf Z2V0X3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0LCB1aW50NjRfdCAqaW92YSk7Citp bnQgZHNpX2Nsa19pbml0X3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KTsKK2ludCBk c2lfY2xrX2luaXRfNmdfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpOworaW50IGRz aV9jYWxjX2Nsa19yYXRlX3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KTsKK2ludCBk c2lfY2FsY19jbGtfcmF0ZV82ZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCk7CiAKIC8q IGRzaSBwaHkgKi8KIHN0cnVjdCBtc21fZHNpX3BoeTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZHNpL2RzaV9jZmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9jZmcu YwppbmRleCAwMzI3YmI1NGIwMWIuLmRjZGZiMWJiNTRmOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL21zbS9kc2kvZHNpX2NmZy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2Rz aV9jZmcuYwpAQCAtMTM2LDIwICsxMzYsNTggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtc21fZHNp X2NvbmZpZyBzZG04NDVfZHNpX2NmZyA9IHsKIAkubnVtX2RzaSA9IDIsCiB9OwogCitjb25zdCBz dGF0aWMgc3RydWN0IG1zbV9kc2lfaG9zdF9jZmdfb3BzIG1zbV9kc2lfdjJfaG9zdF9vcHMgPSB7 CisJLmxpbmtfY2xrX2VuYWJsZSA9IGRzaV9saW5rX2Nsa19lbmFibGVfdjIsCisJLmxpbmtfY2xr X2Rpc2FibGUgPSBkc2lfbGlua19jbGtfZGlzYWJsZV92MiwKKwkuY2xrX2luaXRfdmVyID0gZHNp X2Nsa19pbml0X3YyLAorCS50eF9idWZfYWxsb2MgPSBkc2lfdHhfYnVmX2FsbG9jX3YyLAorCS50 eF9idWZfZ2V0ID0gZHNpX3R4X2J1Zl9nZXRfdjIsCisJLnR4X2J1Zl9wdXQgPSBOVUxMLAorCS5k bWFfYmFzZV9nZXQgPSBkc2lfZG1hX2Jhc2VfZ2V0X3YyLAorCS5jYWxjX2Nsa19yYXRlID0gZHNp X2NhbGNfY2xrX3JhdGVfdjIsCit9OworCitjb25zdCBzdGF0aWMgc3RydWN0IG1zbV9kc2lfaG9z dF9jZmdfb3BzIG1zbV9kc2lfNmdfaG9zdF9vcHMgPSB7CisJLmxpbmtfY2xrX2VuYWJsZSA9IGRz aV9saW5rX2Nsa19lbmFibGVfNmcsCisJLmxpbmtfY2xrX2Rpc2FibGUgPSBkc2lfbGlua19jbGtf ZGlzYWJsZV82ZywKKwkuY2xrX2luaXRfdmVyID0gTlVMTCwKKwkudHhfYnVmX2FsbG9jID0gZHNp X3R4X2J1Zl9hbGxvY182ZywKKwkudHhfYnVmX2dldCA9IGRzaV90eF9idWZfZ2V0XzZnLAorCS50 eF9idWZfcHV0ID0gZHNpX3R4X2J1Zl9wdXRfNmcsCisJLmRtYV9iYXNlX2dldCA9IGRzaV9kbWFf YmFzZV9nZXRfNmcsCisJLmNhbGNfY2xrX3JhdGUgPSBkc2lfY2FsY19jbGtfcmF0ZV82ZywKK307 CisKK2NvbnN0IHN0YXRpYyBzdHJ1Y3QgbXNtX2RzaV9ob3N0X2NmZ19vcHMgbXNtX2RzaV82Z192 Ml9ob3N0X29wcyA9IHsKKwkubGlua19jbGtfZW5hYmxlID0gZHNpX2xpbmtfY2xrX2VuYWJsZV82 ZywKKwkubGlua19jbGtfZGlzYWJsZSA9IGRzaV9saW5rX2Nsa19kaXNhYmxlXzZnLAorCS5jbGtf aW5pdF92ZXIgPSBkc2lfY2xrX2luaXRfNmdfdjIsCisJLnR4X2J1Zl9hbGxvYyA9IGRzaV90eF9i dWZfYWxsb2NfNmcsCisJLnR4X2J1Zl9nZXQgPSBkc2lfdHhfYnVmX2dldF82ZywKKwkudHhfYnVm X3B1dCA9IGRzaV90eF9idWZfcHV0XzZnLAorCS5kbWFfYmFzZV9nZXQgPSBkc2lfZG1hX2Jhc2Vf Z2V0XzZnLAorCS5jYWxjX2Nsa19yYXRlID0gZHNpX2NhbGNfY2xrX3JhdGVfNmcsCit9OworCiBz dGF0aWMgY29uc3Qgc3RydWN0IG1zbV9kc2lfY2ZnX2hhbmRsZXIgZHNpX2NmZ19oYW5kbGVyc1td ID0gewotCXtNU01fRFNJX1ZFUl9NQUpPUl9WMiwgTVNNX0RTSV9WMl9WRVJfTUlOT1JfODA2NCwg JmFwcTgwNjRfZHNpX2NmZ30sCisJe01TTV9EU0lfVkVSX01BSk9SX1YyLCBNU01fRFNJX1YyX1ZF Ul9NSU5PUl84MDY0LAorCQkmYXBxODA2NF9kc2lfY2ZnLCAmbXNtX2RzaV92Ml9ob3N0X29wc30s CiAJe01TTV9EU0lfVkVSX01BSk9SXzZHLCBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8wLAotCQkJ CQkJJm1zbTg5NzRfYXBxODA4NF9kc2lfY2ZnfSwKKwkJJm1zbTg5NzRfYXBxODA4NF9kc2lfY2Zn LCAmbXNtX2RzaV82Z19ob3N0X29wc30sCiAJe01TTV9EU0lfVkVSX01BSk9SXzZHLCBNU01fRFNJ XzZHX1ZFUl9NSU5PUl9WMV8xLAotCQkJCQkJJm1zbTg5NzRfYXBxODA4NF9kc2lfY2ZnfSwKKwkJ Jm1zbTg5NzRfYXBxODA4NF9kc2lfY2ZnLCAmbXNtX2RzaV82Z19ob3N0X29wc30sCiAJe01TTV9E U0lfVkVSX01BSk9SXzZHLCBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8xXzEsCi0JCQkJCQkmbXNt ODk3NF9hcHE4MDg0X2RzaV9jZmd9LAorCQkmbXNtODk3NF9hcHE4MDg0X2RzaV9jZmcsICZtc21f ZHNpXzZnX2hvc3Rfb3BzfSwKIAl7TVNNX0RTSV9WRVJfTUFKT1JfNkcsIE1TTV9EU0lfNkdfVkVS X01JTk9SX1YxXzIsCi0JCQkJCQkmbXNtODk3NF9hcHE4MDg0X2RzaV9jZmd9LAotCXtNU01fRFNJ X1ZFUl9NQUpPUl82RywgTVNNX0RTSV82R19WRVJfTUlOT1JfVjFfMywgJm1zbTg5OTRfZHNpX2Nm Z30sCi0Je01TTV9EU0lfVkVSX01BSk9SXzZHLCBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8zXzEs ICZtc204OTE2X2RzaV9jZmd9LAotCXtNU01fRFNJX1ZFUl9NQUpPUl82RywgTVNNX0RTSV82R19W RVJfTUlOT1JfVjFfNF8xLCAmbXNtODk5Nl9kc2lfY2ZnfSwKLQl7TVNNX0RTSV9WRVJfTUFKT1Jf NkcsIE1TTV9EU0lfNkdfVkVSX01JTk9SX1YyXzJfMSwgJnNkbTg0NV9kc2lfY2ZnfSwKKwkJJm1z bTg5NzRfYXBxODA4NF9kc2lfY2ZnLCAmbXNtX2RzaV82Z19ob3N0X29wc30sCisJe01TTV9EU0lf VkVSX01BSk9SXzZHLCBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8zLAorCQkmbXNtODk5NF9kc2lf Y2ZnLCAmbXNtX2RzaV82Z19ob3N0X29wc30sCisJe01TTV9EU0lfVkVSX01BSk9SXzZHLCBNU01f RFNJXzZHX1ZFUl9NSU5PUl9WMV8zXzEsCisJCSZtc204OTE2X2RzaV9jZmcsICZtc21fZHNpXzZn X2hvc3Rfb3BzfSwKKwl7TVNNX0RTSV9WRVJfTUFKT1JfNkcsIE1TTV9EU0lfNkdfVkVSX01JTk9S X1YxXzRfMSwKKwkJJm1zbTg5OTZfZHNpX2NmZywgJm1zbV9kc2lfNmdfaG9zdF9vcHN9LAorCXtN U01fRFNJX1ZFUl9NQUpPUl82RywgTVNNX0RTSV82R19WRVJfTUlOT1JfVjJfMl8xLAorCQkmc2Rt ODQ1X2RzaV9jZmcsICZtc21fZHNpXzZnX3YyX2hvc3Rfb3BzfSwKIH07CiAKIGNvbnN0IHN0cnVj dCBtc21fZHNpX2NmZ19oYW5kbGVyICptc21fZHNpX2NmZ19nZXQodTMyIG1ham9yLCB1MzIgbWlu b3IpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfaG9zdC5jIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2hvc3QuYwppbmRleCBiOTE2ZjQ2NGY0ZWMuLjFmNDJj ODkxMTQyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2hvc3QuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfaG9zdC5jCkBAIC0zMzIsNiArMzMyLDU0 IEBAIHN0YXRpYyBpbnQgZHNpX3JlZ3VsYXRvcl9pbml0KHN0cnVjdCBtc21fZHNpX2hvc3QgKm1z bV9ob3N0KQogCXJldHVybiAwOwogfQogCitpbnQgZHNpX2Nsa19pbml0X3YyKHN0cnVjdCBtc21f ZHNpX2hvc3QgKm1zbV9ob3N0KQoreworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBt c21faG9zdC0+cGRldjsKKwlpbnQgcmV0ID0gMDsKKworCW1zbV9ob3N0LT5zcmNfY2xrID0gbXNt X2Nsa19nZXQocGRldiwgInNyYyIpOworCisJaWYgKElTX0VSUihtc21faG9zdC0+c3JjX2Nsaykp IHsKKwkJcmV0ID0gUFRSX0VSUihtc21faG9zdC0+c3JjX2Nsayk7CisJCXByX2VycigiJXM6IGNh bid0IGZpbmQgc3JjIGNsb2NrLiByZXQ9JWRcbiIsCisJCQlfX2Z1bmNfXywgcmV0KTsKKwkJbXNt X2hvc3QtPnNyY19jbGsgPSBOVUxMOworCQlyZXR1cm4gcmV0OworCX0KKworCW1zbV9ob3N0LT5l c2NfY2xrX3NyYyA9IGNsa19nZXRfcGFyZW50KG1zbV9ob3N0LT5lc2NfY2xrKTsKKwlpZiAoIW1z bV9ob3N0LT5lc2NfY2xrX3NyYykgeworCQlyZXQgPSAtRU5PREVWOworCQlwcl9lcnIoIiVzOiBj YW4ndCBnZXQgZXNjIGNsb2NrIHBhcmVudC4gcmV0PSVkXG4iLAorCQkJX19mdW5jX18sIHJldCk7 CisJCXJldHVybiByZXQ7CisJfQorCisJbXNtX2hvc3QtPmRzaV9jbGtfc3JjID0gY2xrX2dldF9w YXJlbnQobXNtX2hvc3QtPnNyY19jbGspOworCWlmICghbXNtX2hvc3QtPmRzaV9jbGtfc3JjKSB7 CisJCXJldCA9IC1FTk9ERVY7CisJCXByX2VycigiJXM6IGNhbid0IGdldCBzcmMgY2xvY2sgcGFy ZW50LiByZXQ9JWRcbiIsCisJCQlfX2Z1bmNfXywgcmV0KTsKKwl9CisKKwlyZXR1cm4gcmV0Owor fQorCitpbnQgZHNpX2Nsa19pbml0XzZnX3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0 KQoreworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBtc21faG9zdC0+cGRldjsKKwlp bnQgcmV0ID0gMDsKKworCW1zbV9ob3N0LT5ieXRlX2ludGZfY2xrID0gbXNtX2Nsa19nZXQocGRl diwgImJ5dGVfaW50ZiIpOworCWlmIChJU19FUlIobXNtX2hvc3QtPmJ5dGVfaW50Zl9jbGspKSB7 CisJCXJldCA9IFBUUl9FUlIobXNtX2hvc3QtPmJ5dGVfaW50Zl9jbGspOworCQlwcl9lcnIoIiVz OiBjYW4ndCBmaW5kIGJ5dGVfaW50ZiBjbG9jay4gcmV0PSVkXG4iLAorCQkJX19mdW5jX18sIHJl dCk7CisJfQorCisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGludCBkc2lfY2xrX2luaXQoc3Ry dWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCiB7CiAJc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldiA9IG1zbV9ob3N0LT5wZGV2OwpAQCAtNDk4LDcgKzU0Niw3IEBAIGludCBtc21fZHNpX3J1 bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZHNpX2J1c19jbGtfZW5h YmxlKG1zbV9ob3N0KTsKIH0KIAotc3RhdGljIGludCBkc2lfbGlua19jbGtfZW5hYmxlXzZnKHN0 cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQoraW50IGRzaV9saW5rX2Nsa19lbmFibGVfNmco c3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCiB7CiAJaW50IHJldDsKIApAQCAtNTY2LDcg KzYxNCw3IEBAIHN0YXRpYyBpbnQgZHNpX2xpbmtfY2xrX2VuYWJsZV82ZyhzdHJ1Y3QgbXNtX2Rz aV9ob3N0ICptc21faG9zdCkKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IGRzaV9saW5r X2Nsa19lbmFibGVfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCitpbnQgZHNpX2xp bmtfY2xrX2VuYWJsZV92MihzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKIHsKIAlpbnQg cmV0OwogCkBAIC02NDQsNiArNjkyLDIzIEBAIHN0YXRpYyBpbnQgZHNpX2xpbmtfY2xrX2VuYWJs ZShzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKIAkJcmV0dXJuIGRzaV9saW5rX2Nsa19l bmFibGVfdjIobXNtX2hvc3QpOwogfQogCit2b2lkIGRzaV9saW5rX2Nsa19kaXNhYmxlXzZnKHN0 cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQoreworCWNsa19kaXNhYmxlX3VucHJlcGFyZSht c21faG9zdC0+ZXNjX2Nsayk7CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1zbV9ob3N0LT5waXhl bF9jbGspOworCWlmIChtc21faG9zdC0+Ynl0ZV9pbnRmX2NsaykKKwkJY2xrX2Rpc2FibGVfdW5w cmVwYXJlKG1zbV9ob3N0LT5ieXRlX2ludGZfY2xrKTsKKwljbGtfZGlzYWJsZV91bnByZXBhcmUo bXNtX2hvc3QtPmJ5dGVfY2xrKTsKK30KKwordm9pZCBkc2lfbGlua19jbGtfZGlzYWJsZV92Mihz dHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKK3sKKwljbGtfZGlzYWJsZV91bnByZXBhcmUo bXNtX2hvc3QtPnBpeGVsX2Nsayk7CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1zbV9ob3N0LT5z cmNfY2xrKTsKKwljbGtfZGlzYWJsZV91bnByZXBhcmUobXNtX2hvc3QtPmVzY19jbGspOworCWNs a19kaXNhYmxlX3VucHJlcGFyZShtc21faG9zdC0+Ynl0ZV9jbGspOworfQorCiBzdGF0aWMgdm9p ZCBkc2lfbGlua19jbGtfZGlzYWJsZShzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKIHsK IAljb25zdCBzdHJ1Y3QgbXNtX2RzaV9jZmdfaGFuZGxlciAqY2ZnX2huZCA9IG1zbV9ob3N0LT5j ZmdfaG5kOwpAQCAtNjYyLDYgKzcyNyw4NCBAQCBzdGF0aWMgdm9pZCBkc2lfbGlua19jbGtfZGlz YWJsZShzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKIAl9CiB9CiAKK2ludCBkc2lfY2Fs Y19jbGtfcmF0ZV82ZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKK3sKKwlzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9IG1zbV9ob3N0LT5tb2RlOworCXU4IGxhbmVzID0gbXNt X2hvc3QtPmxhbmVzOworCXUzMiBicHAgPSBkc2lfZ2V0X2JwcChtc21faG9zdC0+Zm9ybWF0KTsK Kwl1MzIgcGNsa19yYXRlOworCisJcGNsa19yYXRlID0gbW9kZS0+Y2xvY2sgKiAxMDAwOworCWlm IChsYW5lcyA+IDApIHsKKwkJbXNtX2hvc3QtPmJ5dGVfY2xrX3JhdGUgPSAocGNsa19yYXRlICog YnBwKSAvICg4ICogbGFuZXMpOworCX0gZWxzZSB7CisJCXByX2VycigiJXM6IGZvcmNpbmcgbWRz c19kc2kgbGFuZXMgdG8gMVxuIiwgX19mdW5jX18pOworCQltc21faG9zdC0+Ynl0ZV9jbGtfcmF0 ZSA9IChwY2xrX3JhdGUgKiBicHApIC8gODsKKwl9CisKKwlEQkcoInBjbGs9JWQsIGJjbGs9JWQi LCBwY2xrX3JhdGUsIG1zbV9ob3N0LT5ieXRlX2Nsa19yYXRlKTsKKworCW1zbV9ob3N0LT5lc2Nf Y2xrX3JhdGUgPSBjbGtfZ2V0X3JhdGUobXNtX2hvc3QtPmVzY19jbGspOworCisJcmV0dXJuIDA7 Cit9CisKK2ludCBkc2lfY2FsY19jbGtfcmF0ZV92MihzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21f aG9zdCkKK3sKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9IG1zbV9ob3N0LT5tb2Rl OworCXU4IGxhbmVzID0gbXNtX2hvc3QtPmxhbmVzOworCXUzMiBicHAgPSBkc2lfZ2V0X2JwcCht c21faG9zdC0+Zm9ybWF0KTsKKwl1MzIgcGNsa19yYXRlOworCXVuc2lnbmVkIGludCBlc2NfbWh6 LCBlc2NfZGl2OworCXVuc2lnbmVkIGxvbmcgYnl0ZV9taHo7CisKKwlwY2xrX3JhdGUgPSBtb2Rl LT5jbG9jayAqIDEwMDA7CisJaWYgKGxhbmVzID4gMCkgeworCQltc21faG9zdC0+Ynl0ZV9jbGtf cmF0ZSA9IChwY2xrX3JhdGUgKiBicHApIC8gKDggKiBsYW5lcyk7CisJfSBlbHNlIHsKKwkJcHJf ZXJyKCIlczogZm9yY2luZyBtZHNzX2RzaSBsYW5lcyB0byAxXG4iLCBfX2Z1bmNfXyk7CisJCW1z bV9ob3N0LT5ieXRlX2Nsa19yYXRlID0gKHBjbGtfcmF0ZSAqIGJwcCkgLyA4OworCX0KKworCURC RygicGNsaz0lZCwgYmNsaz0lZCIsIHBjbGtfcmF0ZSwgbXNtX2hvc3QtPmJ5dGVfY2xrX3JhdGUp OworCisJbXNtX2hvc3QtPnNyY19jbGtfcmF0ZSA9IChwY2xrX3JhdGUgKiBicHApIC8gODsKKwor CS8qCisJICogZXNjIGNsb2NrIGlzIGJ5dGUgY2xvY2sgZm9sbG93ZWQgYnkgYSA0IGJpdCBkaXZp ZGVyLAorCSAqIHdlIG5lZWQgdG8gZmluZCBhbiBlc2NhcGUgY2xvY2sgZnJlcXVlbmN5IHdpdGhp biB0aGUKKwkgKiBtaXBpIERTSSBzcGVjIHJhbmdlIHdpdGhpbiB0aGUgbWF4aW11bSBkaXZpZGVy IGxpbWl0CisJICogV2UgaXRlcmF0ZSBoZXJlIGJldHdlZW4gYW4gZXNjYXBlIGNsb2NrIGZyZXF1 ZW5jZXkKKwkgKiBiZXR3ZWVuIDIwIE1oeiB0byA1IE1oeiBhbmQgcGljayB1cCB0aGUgZmlyc3Qg b25lCisJICogdGhhdCBjYW4gYmUgc3VwcG9ydGVkIGJ5IG91ciBkaXZpZGVyCisJICovCisKKwli eXRlX21oeiA9IG1zbV9ob3N0LT5ieXRlX2Nsa19yYXRlIC8gMTAwMDAwMDsKKworCWZvciAoZXNj X21oeiA9IDIwOyBlc2NfbWh6ID49IDU7IGVzY19taHotLSkgeworCQllc2NfZGl2ID0gRElWX1JP VU5EX1VQKGJ5dGVfbWh6LCBlc2NfbWh6KTsKKworCQkvKgorCQkgKiBUT0RPOiBJZGVhbGx5LCB3 ZSBzaG91bGRuJ3Qga25vdyB3aGF0IHNvcnQgb2YgZGl2aWRlcgorCQkgKiBpcyBhdmFpbGFibGUg aW4gbW1zc19jYywgd2UncmUganVzdCBhc3N1bWluZyB0aGF0CisJCSAqIGl0J2xsIGFsd2F5cyBi ZSBhIDQgYml0IGRpdmlkZXIuIE5lZWQgdG8gY29tZSB1cCB3aXRoCisJCSAqIGEgYmV0dGVyIHdh eSBoZXJlLgorCQkgKi8KKwkJaWYgKGVzY19kaXYgPj0gMSAmJiBlc2NfZGl2IDw9IDE2KQorCQkJ YnJlYWs7CisJfQorCisJaWYgKGVzY19taHogPCA1KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCW1z bV9ob3N0LT5lc2NfY2xrX3JhdGUgPSBtc21faG9zdC0+Ynl0ZV9jbGtfcmF0ZSAvIGVzY19kaXY7 CisKKwlEQkcoImVzYz0lZCwgc3JjPSVkIiwgbXNtX2hvc3QtPmVzY19jbGtfcmF0ZSwKKwkJbXNt X2hvc3QtPnNyY19jbGtfcmF0ZSk7CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBkc2lf Y2FsY19jbGtfcmF0ZShzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKIHsKIAlzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9IG1zbV9ob3N0LT5tb2RlOwpAQCAtMTAxNSw2ICsxMTU4 LDQxIEBAIHN0YXRpYyB2b2lkIGRzaV93YWl0NHZpZGVvX2VuZ19idXN5KHN0cnVjdCBtc21fZHNp X2hvc3QgKm1zbV9ob3N0KQogCX0KIH0KIAoraW50IGRzaV90eF9idWZfYWxsb2NfNmcoc3RydWN0 IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QsIGludCBzaXplKQoreworCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBtc21faG9zdC0+ZGV2OworCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBk ZXYtPmRldl9wcml2YXRlOworCXVpbnQ2NF90IGlvdmE7CisJdTggKmRhdGE7CisKKwlkYXRhID0g bXNtX2dlbV9rZXJuZWxfbmV3KGRldiwgc2l6ZSwgTVNNX0JPX1VOQ0FDSEVELAorCQkJCQlwcml2 LT5rbXMtPmFzcGFjZSwKKwkJCQkJJm1zbV9ob3N0LT50eF9nZW1fb2JqLCAmaW92YSk7CisKKwlp ZiAoSVNfRVJSKGRhdGEpKSB7CisJCW1zbV9ob3N0LT50eF9nZW1fb2JqID0gTlVMTDsKKwkJcmV0 dXJuIFBUUl9FUlIoZGF0YSk7CisJfQorCisJbXNtX2hvc3QtPnR4X3NpemUgPSBtc21faG9zdC0+ dHhfZ2VtX29iai0+c2l6ZTsKKworCXJldHVybiAwOworfQorCitpbnQgZHNpX3R4X2J1Zl9hbGxv Y192MihzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCwgaW50IHNpemUpCit7CisJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IG1zbV9ob3N0LT5kZXY7CisKKwltc21faG9zdC0+dHhfYnVmID0g ZG1hX2FsbG9jX2NvaGVyZW50KGRldi0+ZGV2LCBzaXplLAorCQkJCQkmbXNtX2hvc3QtPnR4X2J1 Zl9wYWRkciwgR0ZQX0tFUk5FTCk7CisJaWYgKCFtc21faG9zdC0+dHhfYnVmKQorCQlyZXR1cm4g LUVOT01FTTsKKworCW1zbV9ob3N0LT50eF9zaXplID0gc2l6ZTsKKworCXJldHVybiAwOworfQor CiAvKiBkc2lfY21kICovCiBzdGF0aWMgaW50IGRzaV90eF9idWZfYWxsb2Moc3RydWN0IG1zbV9k c2lfaG9zdCAqbXNtX2hvc3QsIGludCBzaXplKQogewpAQCAtMTA3OSw2ICsxMjU3LDIxIEBAIHN0 YXRpYyB2b2lkIGRzaV90eF9idWZfZnJlZShzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkK IAkJCW1zbV9ob3N0LT50eF9idWZfcGFkZHIpOwogfQogCit2b2lkICpkc2lfdHhfYnVmX2dldF82 ZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKK3sKKwlyZXR1cm4gbXNtX2dlbV9nZXRf dmFkZHIobXNtX2hvc3QtPnR4X2dlbV9vYmopOworfQorCit2b2lkICpkc2lfdHhfYnVmX2dldF92 MihzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKK3sKKwlyZXR1cm4gbXNtX2hvc3QtPnR4 X2J1ZjsKK30KKwordm9pZCBkc2lfdHhfYnVmX3B1dF82ZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICpt c21faG9zdCkKK3sKKwltc21fZ2VtX3B1dF92YWRkcihtc21faG9zdC0+dHhfZ2VtX29iaik7Cit9 CisKIC8qCiAgKiBwcmVwYXJlIGNtZCBidWZmZXIgdG8gYmUgdHhlZAogICovCkBAIC0xMTgwLDYg KzEzNzMsMjcgQEAgc3RhdGljIGludCBkc2lfbG9uZ19yZWFkX3Jlc3AodTggKmJ1ZiwgY29uc3Qg c3RydWN0IG1pcGlfZHNpX21zZyAqbXNnKQogCXJldHVybiBtc2ctPnJ4X2xlbjsKIH0KIAoraW50 IGRzaV9kbWFfYmFzZV9nZXRfNmcoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QsIHVpbnQ2 NF90ICpkbWFfYmFzZSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbXNtX2hvc3QtPmRl djsKKwlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwor CWlmICghZG1hX2Jhc2UpCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0dXJuIG1zbV9nZW1fZ2V0 X2lvdmEobXNtX2hvc3QtPnR4X2dlbV9vYmosCisJCQkJcHJpdi0+a21zLT5hc3BhY2UsIGRtYV9i YXNlKTsKK30KKworaW50IGRzaV9kbWFfYmFzZV9nZXRfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAq bXNtX2hvc3QsIHVpbnQ2NF90ICpkbWFfYmFzZSkKK3sKKwlpZiAoIWRtYV9iYXNlKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCSpkbWFfYmFzZSA9IG1zbV9ob3N0LT50eF9idWZfcGFkZHI7CisJcmV0 dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgZHNpX2NtZF9kbWFfdHgoc3RydWN0IG1zbV9kc2lfaG9z dCAqbXNtX2hvc3QsIGludCBsZW4pCiB7CiAJY29uc3Qgc3RydWN0IG1zbV9kc2lfY2ZnX2hhbmRs ZXIgKmNmZ19obmQgPSBtc21faG9zdC0+Y2ZnX2huZDsKLS0gClRoZSBRdWFsY29tbSBJbm5vdmF0 aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCmEg TGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=