From: Sibi Sankar Subject: [PATCH v3 2/3] drm/msm/dsi: add implementation for helper functions Date: Mon, 9 Apr 2018 20:04:33 +0530 Message-ID: <20180409143434.28269-3-sibis@codeaurora.org> References: <20180409143434.28269-1-sibis@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180409143434.28269-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, Sibi Sankar , dri-devel@lists.freedesktop.org List-Id: linux-arm-msm@vger.kernel.org QWRkIGRzaSBob3N0IGhlbHBlciBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiBmb3IgRFNJIHYyCkRT SSA2RyAxLnggYW5kIERTSSA2RyB2Mi4wKyBjb250cm9sbGVycwoKU2lnbmVkLW9mZi1ieTogU2li aSBTYW5rYXIgPHNpYmlzQGNvZGVhdXJvcmEub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20v ZHNpL2RzaS5oICAgICAgfCAgMTUgKysrCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfY2Zn LmMgIHwgIDU2ICsrKysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9ob3N0LmMg fCAyMTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogMyBmaWxlcyBjaGFu Z2VkLCAyNzggaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21zbS9kc2kvZHNpLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2ku aAppbmRleCA4MGJlODNlOGZkZWMuLmRmYTA0OWQ4NzZiZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL21zbS9kc2kvZHNpLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpLmgK QEAgLTE4Myw2ICsxODMsMjEgQEAgaW50IG1zbV9kc2lfaG9zdF9tb2Rlc2V0X2luaXQoc3RydWN0 IG1pcGlfZHNpX2hvc3QgKmhvc3QsCiBpbnQgbXNtX2RzaV9ob3N0X2luaXQoc3RydWN0IG1zbV9k c2kgKm1zbV9kc2kpOwogaW50IG1zbV9kc2lfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2Ug KmRldik7CiBpbnQgbXNtX2RzaV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwor aW50IGRzaV9saW5rX2Nsa19lbmFibGVfNmcoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3Qp OworaW50IGRzaV9saW5rX2Nsa19lbmFibGVfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hv c3QpOwordm9pZCBkc2lfbGlua19jbGtfZGlzYWJsZV82ZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICpt c21faG9zdCk7Cit2b2lkIGRzaV9saW5rX2Nsa19kaXNhYmxlX3YyKHN0cnVjdCBtc21fZHNpX2hv c3QgKm1zbV9ob3N0KTsKK2ludCBkc2lfdHhfYnVmX2FsbG9jXzZnKHN0cnVjdCBtc21fZHNpX2hv c3QgKm1zbV9ob3N0LCBpbnQgc2l6ZSk7CitpbnQgZHNpX3R4X2J1Zl9hbGxvY192MihzdHJ1Y3Qg bXNtX2RzaV9ob3N0ICptc21faG9zdCwgaW50IHNpemUpOwordm9pZCAqZHNpX3R4X2J1Zl9nZXRf Nmcoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpOwordm9pZCAqZHNpX3R4X2J1Zl9nZXRf djIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpOwordm9pZCBkc2lfdHhfYnVmX3B1dF82 ZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCk7CitpbnQgZHNpX2RtYV9iYXNlX2dldF82 ZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCwgdWludDY0X3QgKmlvdmEpOworaW50IGRz aV9kbWFfYmFzZV9nZXRfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QsIHVpbnQ2NF90 ICppb3ZhKTsKK2ludCBkc2lfY2xrX2luaXRfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hv c3QpOworaW50IGRzaV9jbGtfaW5pdF82Z192MihzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9z dCk7CitpbnQgZHNpX2NhbGNfY2xrX3JhdGVfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hv c3QpOworaW50IGRzaV9jYWxjX2Nsa19yYXRlXzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9o b3N0KTsKIAogLyogZHNpIHBoeSAqLwogc3RydWN0IG1zbV9kc2lfcGh5OwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2NmZy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9k c2kvZHNpX2NmZy5jCmluZGV4IDAzMjdiYjU0YjAxYi4uZGNkZmIxYmI1NGY5IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfY2ZnLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kc2kvZHNpX2NmZy5jCkBAIC0xMzYsMjAgKzEzNiw1OCBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IG1zbV9kc2lfY29uZmlnIHNkbTg0NV9kc2lfY2ZnID0gewogCS5udW1fZHNpID0gMiwKIH07 CiAKK2NvbnN0IHN0YXRpYyBzdHJ1Y3QgbXNtX2RzaV9ob3N0X2NmZ19vcHMgbXNtX2RzaV92Ml9o b3N0X29wcyA9IHsKKwkubGlua19jbGtfZW5hYmxlID0gZHNpX2xpbmtfY2xrX2VuYWJsZV92MiwK KwkubGlua19jbGtfZGlzYWJsZSA9IGRzaV9saW5rX2Nsa19kaXNhYmxlX3YyLAorCS5jbGtfaW5p dF92ZXIgPSBkc2lfY2xrX2luaXRfdjIsCisJLnR4X2J1Zl9hbGxvYyA9IGRzaV90eF9idWZfYWxs b2NfdjIsCisJLnR4X2J1Zl9nZXQgPSBkc2lfdHhfYnVmX2dldF92MiwKKwkudHhfYnVmX3B1dCA9 IE5VTEwsCisJLmRtYV9iYXNlX2dldCA9IGRzaV9kbWFfYmFzZV9nZXRfdjIsCisJLmNhbGNfY2xr X3JhdGUgPSBkc2lfY2FsY19jbGtfcmF0ZV92MiwKK307CisKK2NvbnN0IHN0YXRpYyBzdHJ1Y3Qg bXNtX2RzaV9ob3N0X2NmZ19vcHMgbXNtX2RzaV82Z19ob3N0X29wcyA9IHsKKwkubGlua19jbGtf ZW5hYmxlID0gZHNpX2xpbmtfY2xrX2VuYWJsZV82ZywKKwkubGlua19jbGtfZGlzYWJsZSA9IGRz aV9saW5rX2Nsa19kaXNhYmxlXzZnLAorCS5jbGtfaW5pdF92ZXIgPSBOVUxMLAorCS50eF9idWZf YWxsb2MgPSBkc2lfdHhfYnVmX2FsbG9jXzZnLAorCS50eF9idWZfZ2V0ID0gZHNpX3R4X2J1Zl9n ZXRfNmcsCisJLnR4X2J1Zl9wdXQgPSBkc2lfdHhfYnVmX3B1dF82ZywKKwkuZG1hX2Jhc2VfZ2V0 ID0gZHNpX2RtYV9iYXNlX2dldF82ZywKKwkuY2FsY19jbGtfcmF0ZSA9IGRzaV9jYWxjX2Nsa19y YXRlXzZnLAorfTsKKworY29uc3Qgc3RhdGljIHN0cnVjdCBtc21fZHNpX2hvc3RfY2ZnX29wcyBt c21fZHNpXzZnX3YyX2hvc3Rfb3BzID0geworCS5saW5rX2Nsa19lbmFibGUgPSBkc2lfbGlua19j bGtfZW5hYmxlXzZnLAorCS5saW5rX2Nsa19kaXNhYmxlID0gZHNpX2xpbmtfY2xrX2Rpc2FibGVf NmcsCisJLmNsa19pbml0X3ZlciA9IGRzaV9jbGtfaW5pdF82Z192MiwKKwkudHhfYnVmX2FsbG9j ID0gZHNpX3R4X2J1Zl9hbGxvY182ZywKKwkudHhfYnVmX2dldCA9IGRzaV90eF9idWZfZ2V0XzZn LAorCS50eF9idWZfcHV0ID0gZHNpX3R4X2J1Zl9wdXRfNmcsCisJLmRtYV9iYXNlX2dldCA9IGRz aV9kbWFfYmFzZV9nZXRfNmcsCisJLmNhbGNfY2xrX3JhdGUgPSBkc2lfY2FsY19jbGtfcmF0ZV82 ZywKK307CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXNtX2RzaV9jZmdfaGFuZGxlciBkc2lfY2Zn X2hhbmRsZXJzW10gPSB7Ci0Je01TTV9EU0lfVkVSX01BSk9SX1YyLCBNU01fRFNJX1YyX1ZFUl9N SU5PUl84MDY0LCAmYXBxODA2NF9kc2lfY2ZnfSwKKwl7TVNNX0RTSV9WRVJfTUFKT1JfVjIsIE1T TV9EU0lfVjJfVkVSX01JTk9SXzgwNjQsCisJCSZhcHE4MDY0X2RzaV9jZmcsICZtc21fZHNpX3Yy X2hvc3Rfb3BzfSwKIAl7TVNNX0RTSV9WRVJfTUFKT1JfNkcsIE1TTV9EU0lfNkdfVkVSX01JTk9S X1YxXzAsCi0JCQkJCQkmbXNtODk3NF9hcHE4MDg0X2RzaV9jZmd9LAorCQkmbXNtODk3NF9hcHE4 MDg0X2RzaV9jZmcsICZtc21fZHNpXzZnX2hvc3Rfb3BzfSwKIAl7TVNNX0RTSV9WRVJfTUFKT1Jf NkcsIE1TTV9EU0lfNkdfVkVSX01JTk9SX1YxXzEsCi0JCQkJCQkmbXNtODk3NF9hcHE4MDg0X2Rz aV9jZmd9LAorCQkmbXNtODk3NF9hcHE4MDg0X2RzaV9jZmcsICZtc21fZHNpXzZnX2hvc3Rfb3Bz fSwKIAl7TVNNX0RTSV9WRVJfTUFKT1JfNkcsIE1TTV9EU0lfNkdfVkVSX01JTk9SX1YxXzFfMSwK LQkJCQkJCSZtc204OTc0X2FwcTgwODRfZHNpX2NmZ30sCisJCSZtc204OTc0X2FwcTgwODRfZHNp X2NmZywgJm1zbV9kc2lfNmdfaG9zdF9vcHN9LAogCXtNU01fRFNJX1ZFUl9NQUpPUl82RywgTVNN X0RTSV82R19WRVJfTUlOT1JfVjFfMiwKLQkJCQkJCSZtc204OTc0X2FwcTgwODRfZHNpX2NmZ30s Ci0Je01TTV9EU0lfVkVSX01BSk9SXzZHLCBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8zLCAmbXNt ODk5NF9kc2lfY2ZnfSwKLQl7TVNNX0RTSV9WRVJfTUFKT1JfNkcsIE1TTV9EU0lfNkdfVkVSX01J Tk9SX1YxXzNfMSwgJm1zbTg5MTZfZHNpX2NmZ30sCi0Je01TTV9EU0lfVkVSX01BSk9SXzZHLCBN U01fRFNJXzZHX1ZFUl9NSU5PUl9WMV80XzEsICZtc204OTk2X2RzaV9jZmd9LAotCXtNU01fRFNJ X1ZFUl9NQUpPUl82RywgTVNNX0RTSV82R19WRVJfTUlOT1JfVjJfMl8xLCAmc2RtODQ1X2RzaV9j Zmd9LAorCQkmbXNtODk3NF9hcHE4MDg0X2RzaV9jZmcsICZtc21fZHNpXzZnX2hvc3Rfb3BzfSwK Kwl7TVNNX0RTSV9WRVJfTUFKT1JfNkcsIE1TTV9EU0lfNkdfVkVSX01JTk9SX1YxXzMsCisJCSZt c204OTk0X2RzaV9jZmcsICZtc21fZHNpXzZnX2hvc3Rfb3BzfSwKKwl7TVNNX0RTSV9WRVJfTUFK T1JfNkcsIE1TTV9EU0lfNkdfVkVSX01JTk9SX1YxXzNfMSwKKwkJJm1zbTg5MTZfZHNpX2NmZywg Jm1zbV9kc2lfNmdfaG9zdF9vcHN9LAorCXtNU01fRFNJX1ZFUl9NQUpPUl82RywgTVNNX0RTSV82 R19WRVJfTUlOT1JfVjFfNF8xLAorCQkmbXNtODk5Nl9kc2lfY2ZnLCAmbXNtX2RzaV82Z19ob3N0 X29wc30sCisJe01TTV9EU0lfVkVSX01BSk9SXzZHLCBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMl8y XzEsCisJCSZzZG04NDVfZHNpX2NmZywgJm1zbV9kc2lfNmdfdjJfaG9zdF9vcHN9LAogfTsKIAog Y29uc3Qgc3RydWN0IG1zbV9kc2lfY2ZnX2hhbmRsZXIgKm1zbV9kc2lfY2ZnX2dldCh1MzIgbWFq b3IsIHUzMiBtaW5vcikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9o b3N0LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfaG9zdC5jCmluZGV4IDdhMDNhOTQ4 OTcwOC4uNDZlOTkyZjcwNmQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9k c2lfaG9zdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9ob3N0LmMKQEAgLTMz MSw2ICszMzEsNTQgQEAgc3RhdGljIGludCBkc2lfcmVndWxhdG9yX2luaXQoc3RydWN0IG1zbV9k c2lfaG9zdCAqbXNtX2hvc3QpCiAJcmV0dXJuIDA7CiB9CiAKK2ludCBkc2lfY2xrX2luaXRfdjIo c3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCit7CisJc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldiA9IG1zbV9ob3N0LT5wZGV2OworCWludCByZXQgPSAwOworCisJbXNtX2hvc3QtPnNy Y19jbGsgPSBtc21fY2xrX2dldChwZGV2LCAic3JjIik7CisKKwlpZiAoSVNfRVJSKG1zbV9ob3N0 LT5zcmNfY2xrKSkgeworCQlyZXQgPSBQVFJfRVJSKG1zbV9ob3N0LT5zcmNfY2xrKTsKKwkJcHJf ZXJyKCIlczogY2FuJ3QgZmluZCBzcmMgY2xvY2suIHJldD0lZFxuIiwKKwkJCV9fZnVuY19fLCBy ZXQpOworCQltc21faG9zdC0+c3JjX2NsayA9IE5VTEw7CisJCXJldHVybiByZXQ7CisJfQorCisJ bXNtX2hvc3QtPmVzY19jbGtfc3JjID0gY2xrX2dldF9wYXJlbnQobXNtX2hvc3QtPmVzY19jbGsp OworCWlmICghbXNtX2hvc3QtPmVzY19jbGtfc3JjKSB7CisJCXJldCA9IC1FTk9ERVY7CisJCXBy X2VycigiJXM6IGNhbid0IGdldCBlc2MgY2xvY2sgcGFyZW50LiByZXQ9JWRcbiIsCisJCQlfX2Z1 bmNfXywgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwltc21faG9zdC0+ZHNpX2Nsa19zcmMg PSBjbGtfZ2V0X3BhcmVudChtc21faG9zdC0+c3JjX2Nsayk7CisJaWYgKCFtc21faG9zdC0+ZHNp X2Nsa19zcmMpIHsKKwkJcmV0ID0gLUVOT0RFVjsKKwkJcHJfZXJyKCIlczogY2FuJ3QgZ2V0IHNy YyBjbG9jayBwYXJlbnQuIHJldD0lZFxuIiwKKwkJCV9fZnVuY19fLCByZXQpOworCX0KKworCXJl dHVybiByZXQ7Cit9CisKK2ludCBkc2lfY2xrX2luaXRfNmdfdjIoc3RydWN0IG1zbV9kc2lfaG9z dCAqbXNtX2hvc3QpCit7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IG1zbV9ob3N0 LT5wZGV2OworCWludCByZXQgPSAwOworCisJbXNtX2hvc3QtPmJ5dGVfaW50Zl9jbGsgPSBtc21f Y2xrX2dldChwZGV2LCAiYnl0ZV9pbnRmIik7CisJaWYgKElTX0VSUihtc21faG9zdC0+Ynl0ZV9p bnRmX2NsaykpIHsKKwkJcmV0ID0gUFRSX0VSUihtc21faG9zdC0+Ynl0ZV9pbnRmX2Nsayk7CisJ CXByX2VycigiJXM6IGNhbid0IGZpbmQgYnl0ZV9pbnRmIGNsb2NrLiByZXQ9JWRcbiIsCisJCQlf X2Z1bmNfXywgcmV0KTsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMgaW50IGRzaV9j bGtfaW5pdChzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKIHsKIAlzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2ID0gbXNtX2hvc3QtPnBkZXY7CkBAIC00OTcsNyArNTQ1LDcgQEAgaW50 IG1zbV9kc2lfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkc2lf YnVzX2Nsa19lbmFibGUobXNtX2hvc3QpOwogfQogCi1zdGF0aWMgaW50IGRzaV9saW5rX2Nsa19l bmFibGVfNmcoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCitpbnQgZHNpX2xpbmtfY2xr X2VuYWJsZV82ZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKIHsKIAlpbnQgcmV0Owog CkBAIC01NjUsNyArNjEzLDcgQEAgc3RhdGljIGludCBkc2lfbGlua19jbGtfZW5hYmxlXzZnKHN0 cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBp bnQgZHNpX2xpbmtfY2xrX2VuYWJsZV92MihzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkK K2ludCBkc2lfbGlua19jbGtfZW5hYmxlX3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0 KQogewogCWludCByZXQ7CiAKQEAgLTY0Myw2ICs2OTEsMjMgQEAgc3RhdGljIGludCBkc2lfbGlu a19jbGtfZW5hYmxlKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQogCQlyZXR1cm4gZHNp X2xpbmtfY2xrX2VuYWJsZV92Mihtc21faG9zdCk7CiB9CiAKK3ZvaWQgZHNpX2xpbmtfY2xrX2Rp c2FibGVfNmcoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCit7CisJY2xrX2Rpc2FibGVf dW5wcmVwYXJlKG1zbV9ob3N0LT5lc2NfY2xrKTsKKwljbGtfZGlzYWJsZV91bnByZXBhcmUobXNt X2hvc3QtPnBpeGVsX2Nsayk7CisJaWYgKG1zbV9ob3N0LT5ieXRlX2ludGZfY2xrKQorCQljbGtf ZGlzYWJsZV91bnByZXBhcmUobXNtX2hvc3QtPmJ5dGVfaW50Zl9jbGspOworCWNsa19kaXNhYmxl X3VucHJlcGFyZShtc21faG9zdC0+Ynl0ZV9jbGspOworfQorCit2b2lkIGRzaV9saW5rX2Nsa19k aXNhYmxlX3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQoreworCWNsa19kaXNhYmxl X3VucHJlcGFyZShtc21faG9zdC0+cGl4ZWxfY2xrKTsKKwljbGtfZGlzYWJsZV91bnByZXBhcmUo bXNtX2hvc3QtPnNyY19jbGspOworCWNsa19kaXNhYmxlX3VucHJlcGFyZShtc21faG9zdC0+ZXNj X2Nsayk7CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1zbV9ob3N0LT5ieXRlX2Nsayk7Cit9CisK IHN0YXRpYyB2b2lkIGRzaV9saW5rX2Nsa19kaXNhYmxlKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1z bV9ob3N0KQogewogCWNvbnN0IHN0cnVjdCBtc21fZHNpX2NmZ19oYW5kbGVyICpjZmdfaG5kID0g bXNtX2hvc3QtPmNmZ19obmQ7CkBAIC02NjEsNiArNzI2LDg0IEBAIHN0YXRpYyB2b2lkIGRzaV9s aW5rX2Nsa19kaXNhYmxlKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQogCX0KIH0KIAor aW50IGRzaV9jYWxjX2Nsa19yYXRlXzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQor eworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gbXNtX2hvc3QtPm1vZGU7CisJdTgg bGFuZXMgPSBtc21faG9zdC0+bGFuZXM7CisJdTMyIGJwcCA9IGRzaV9nZXRfYnBwKG1zbV9ob3N0 LT5mb3JtYXQpOworCXUzMiBwY2xrX3JhdGU7CisKKwlwY2xrX3JhdGUgPSBtb2RlLT5jbG9jayAq IDEwMDA7CisJaWYgKGxhbmVzID4gMCkgeworCQltc21faG9zdC0+Ynl0ZV9jbGtfcmF0ZSA9IChw Y2xrX3JhdGUgKiBicHApIC8gKDggKiBsYW5lcyk7CisJfSBlbHNlIHsKKwkJcHJfZXJyKCIlczog Zm9yY2luZyBtZHNzX2RzaSBsYW5lcyB0byAxXG4iLCBfX2Z1bmNfXyk7CisJCW1zbV9ob3N0LT5i eXRlX2Nsa19yYXRlID0gKHBjbGtfcmF0ZSAqIGJwcCkgLyA4OworCX0KKworCURCRygicGNsaz0l ZCwgYmNsaz0lZCIsIHBjbGtfcmF0ZSwgbXNtX2hvc3QtPmJ5dGVfY2xrX3JhdGUpOworCisJbXNt X2hvc3QtPmVzY19jbGtfcmF0ZSA9IGNsa19nZXRfcmF0ZShtc21faG9zdC0+ZXNjX2Nsayk7CisK KwlyZXR1cm4gMDsKK30KKworaW50IGRzaV9jYWxjX2Nsa19yYXRlX3YyKHN0cnVjdCBtc21fZHNp X2hvc3QgKm1zbV9ob3N0KQoreworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gbXNt X2hvc3QtPm1vZGU7CisJdTggbGFuZXMgPSBtc21faG9zdC0+bGFuZXM7CisJdTMyIGJwcCA9IGRz aV9nZXRfYnBwKG1zbV9ob3N0LT5mb3JtYXQpOworCXUzMiBwY2xrX3JhdGU7CisJdW5zaWduZWQg aW50IGVzY19taHosIGVzY19kaXY7CisJdW5zaWduZWQgbG9uZyBieXRlX21oejsKKworCXBjbGtf cmF0ZSA9IG1vZGUtPmNsb2NrICogMTAwMDsKKwlpZiAobGFuZXMgPiAwKSB7CisJCW1zbV9ob3N0 LT5ieXRlX2Nsa19yYXRlID0gKHBjbGtfcmF0ZSAqIGJwcCkgLyAoOCAqIGxhbmVzKTsKKwl9IGVs c2UgeworCQlwcl9lcnIoIiVzOiBmb3JjaW5nIG1kc3NfZHNpIGxhbmVzIHRvIDFcbiIsIF9fZnVu Y19fKTsKKwkJbXNtX2hvc3QtPmJ5dGVfY2xrX3JhdGUgPSAocGNsa19yYXRlICogYnBwKSAvIDg7 CisJfQorCisJREJHKCJwY2xrPSVkLCBiY2xrPSVkIiwgcGNsa19yYXRlLCBtc21faG9zdC0+Ynl0 ZV9jbGtfcmF0ZSk7CisKKwltc21faG9zdC0+c3JjX2Nsa19yYXRlID0gKHBjbGtfcmF0ZSAqIGJw cCkgLyA4OworCisJLyoKKwkgKiBlc2MgY2xvY2sgaXMgYnl0ZSBjbG9jayBmb2xsb3dlZCBieSBh IDQgYml0IGRpdmlkZXIsCisJICogd2UgbmVlZCB0byBmaW5kIGFuIGVzY2FwZSBjbG9jayBmcmVx dWVuY3kgd2l0aGluIHRoZQorCSAqIG1pcGkgRFNJIHNwZWMgcmFuZ2Ugd2l0aGluIHRoZSBtYXhp bXVtIGRpdmlkZXIgbGltaXQKKwkgKiBXZSBpdGVyYXRlIGhlcmUgYmV0d2VlbiBhbiBlc2NhcGUg Y2xvY2sgZnJlcXVlbmNleQorCSAqIGJldHdlZW4gMjAgTWh6IHRvIDUgTWh6IGFuZCBwaWNrIHVw IHRoZSBmaXJzdCBvbmUKKwkgKiB0aGF0IGNhbiBiZSBzdXBwb3J0ZWQgYnkgb3VyIGRpdmlkZXIK KwkgKi8KKworCWJ5dGVfbWh6ID0gbXNtX2hvc3QtPmJ5dGVfY2xrX3JhdGUgLyAxMDAwMDAwOwor CisJZm9yIChlc2NfbWh6ID0gMjA7IGVzY19taHogPj0gNTsgZXNjX21oei0tKSB7CisJCWVzY19k aXYgPSBESVZfUk9VTkRfVVAoYnl0ZV9taHosIGVzY19taHopOworCisJCS8qCisJCSAqIFRPRE86 IElkZWFsbHksIHdlIHNob3VsZG4ndCBrbm93IHdoYXQgc29ydCBvZiBkaXZpZGVyCisJCSAqIGlz IGF2YWlsYWJsZSBpbiBtbXNzX2NjLCB3ZSdyZSBqdXN0IGFzc3VtaW5nIHRoYXQKKwkJICogaXQn bGwgYWx3YXlzIGJlIGEgNCBiaXQgZGl2aWRlci4gTmVlZCB0byBjb21lIHVwIHdpdGgKKwkJICog YSBiZXR0ZXIgd2F5IGhlcmUuCisJCSAqLworCQlpZiAoZXNjX2RpdiA+PSAxICYmIGVzY19kaXYg PD0gMTYpCisJCQlicmVhazsKKwl9CisKKwlpZiAoZXNjX21oeiA8IDUpCisJCXJldHVybiAtRUlO VkFMOworCisJbXNtX2hvc3QtPmVzY19jbGtfcmF0ZSA9IG1zbV9ob3N0LT5ieXRlX2Nsa19yYXRl IC8gZXNjX2RpdjsKKworCURCRygiZXNjPSVkLCBzcmM9JWQiLCBtc21faG9zdC0+ZXNjX2Nsa19y YXRlLAorCQltc21faG9zdC0+c3JjX2Nsa19yYXRlKTsKKworCXJldHVybiAwOworfQorCiBzdGF0 aWMgaW50IGRzaV9jYWxjX2Nsa19yYXRlKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQog ewogCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gbXNtX2hvc3QtPm1vZGU7CkBAIC0x MDA4LDYgKzExNTEsNDEgQEAgc3RhdGljIHZvaWQgZHNpX3dhaXQ0dmlkZW9fZW5nX2J1c3koc3Ry dWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCiAJfQogfQogCitpbnQgZHNpX3R4X2J1Zl9hbGxv Y182ZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCwgaW50IHNpemUpCit7CisJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IG1zbV9ob3N0LT5kZXY7CisJc3RydWN0IG1zbV9kcm1fcHJpdmF0 ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJdWludDY0X3QgaW92YTsKKwl1OCAqZGF0YTsK KworCWRhdGEgPSBtc21fZ2VtX2tlcm5lbF9uZXcoZGV2LCBzaXplLCBNU01fQk9fVU5DQUNIRUQs CisJCQkJCXByaXYtPmttcy0+YXNwYWNlLAorCQkJCQkmbXNtX2hvc3QtPnR4X2dlbV9vYmosICZp b3ZhKTsKKworCWlmIChJU19FUlIoZGF0YSkpIHsKKwkJbXNtX2hvc3QtPnR4X2dlbV9vYmogPSBO VUxMOworCQlyZXR1cm4gUFRSX0VSUihkYXRhKTsKKwl9CisKKwltc21faG9zdC0+dHhfc2l6ZSA9 IG1zbV9ob3N0LT50eF9nZW1fb2JqLT5zaXplOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBkc2lf dHhfYnVmX2FsbG9jX3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0LCBpbnQgc2l6ZSkK K3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbXNtX2hvc3QtPmRldjsKKworCW1zbV9ob3N0 LT50eF9idWYgPSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2LT5kZXYsIHNpemUsCisJCQkJCSZtc21f aG9zdC0+dHhfYnVmX3BhZGRyLCBHRlBfS0VSTkVMKTsKKwlpZiAoIW1zbV9ob3N0LT50eF9idWYp CisJCXJldHVybiAtRU5PTUVNOworCisJbXNtX2hvc3QtPnR4X3NpemUgPSBzaXplOworCisJcmV0 dXJuIDA7Cit9CisKIC8qIGRzaV9jbWQgKi8KIHN0YXRpYyBpbnQgZHNpX3R4X2J1Zl9hbGxvYyhz dHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCwgaW50IHNpemUpCiB7CkBAIC0xMDcyLDYgKzEy NTAsMjEgQEAgc3RhdGljIHZvaWQgZHNpX3R4X2J1Zl9mcmVlKHN0cnVjdCBtc21fZHNpX2hvc3Qg Km1zbV9ob3N0KQogCQkJbXNtX2hvc3QtPnR4X2J1Zl9wYWRkcik7CiB9CiAKK3ZvaWQgKmRzaV90 eF9idWZfZ2V0XzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQoreworCXJldHVybiBt c21fZ2VtX2dldF92YWRkcihtc21faG9zdC0+dHhfZ2VtX29iaik7Cit9CisKK3ZvaWQgKmRzaV90 eF9idWZfZ2V0X3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQoreworCXJldHVybiBt c21faG9zdC0+dHhfYnVmOworfQorCit2b2lkIGRzaV90eF9idWZfcHV0XzZnKHN0cnVjdCBtc21f ZHNpX2hvc3QgKm1zbV9ob3N0KQoreworCW1zbV9nZW1fcHV0X3ZhZGRyKG1zbV9ob3N0LT50eF9n ZW1fb2JqKTsKK30KKwogLyoKICAqIHByZXBhcmUgY21kIGJ1ZmZlciB0byBiZSB0eGVkCiAgKi8K QEAgLTExNzMsNiArMTM2NiwyNyBAQCBzdGF0aWMgaW50IGRzaV9sb25nX3JlYWRfcmVzcCh1OCAq YnVmLCBjb25zdCBzdHJ1Y3QgbWlwaV9kc2lfbXNnICptc2cpCiAJcmV0dXJuIG1zZy0+cnhfbGVu OwogfQogCitpbnQgZHNpX2RtYV9iYXNlX2dldF82ZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21f aG9zdCwgdWludDY0X3QgKmRtYV9iYXNlKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBt c21faG9zdC0+ZGV2OworCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9w cml2YXRlOworCisJaWYgKCFkbWFfYmFzZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4g bXNtX2dlbV9nZXRfaW92YShtc21faG9zdC0+dHhfZ2VtX29iaiwKKwkJCQlwcml2LT5rbXMtPmFz cGFjZSwgZG1hX2Jhc2UpOworfQorCitpbnQgZHNpX2RtYV9iYXNlX2dldF92MihzdHJ1Y3QgbXNt X2RzaV9ob3N0ICptc21faG9zdCwgdWludDY0X3QgKmRtYV9iYXNlKQoreworCWlmICghZG1hX2Jh c2UpCisJCXJldHVybiAtRUlOVkFMOworCisJKmRtYV9iYXNlID0gbXNtX2hvc3QtPnR4X2J1Zl9w YWRkcjsKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBkc2lfY21kX2RtYV90eChzdHJ1Y3Qg bXNtX2RzaV9ob3N0ICptc21faG9zdCwgaW50IGxlbikKIHsKIAljb25zdCBzdHJ1Y3QgbXNtX2Rz aV9jZmdfaGFuZGxlciAqY2ZnX2huZCA9IG1zbV9ob3N0LT5jZmdfaG5kOwotLSAKVGhlIFF1YWxj b21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9y YSBGb3J1bSwKYSBMaW51eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdAoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==