From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sibi S Subject: [PATCH v2 2/3] drm/msm/dsi: add implementation for helper functions Date: Tue, 20 Mar 2018 01:11:02 +0530 Message-ID: <20180319194103.2454-3-sibis@codeaurora.org> References: <20180319194103.2454-1-sibis@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180319194103.2454-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 S , dri-devel@lists.freedesktop.org List-Id: linux-arm-msm@vger.kernel.org QWRkIGRzaSBob3N0IGhlbHBlciBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiBmb3IgRFNJIHYyCkRT SSA2RyAxLnggYW5kIERTSSA2RyB2Mi4wKyBjb250cm9sbGVycwoKU2lnbmVkLW9mZi1ieTogU2li aSBTIDxzaWJpc0Bjb2RlYXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9k c2kuaCAgICAgIHwgIDE1ICsrKwogZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2NmZy5jICB8 ICA1NiArKysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9ob3N0LmMgfCAyMzYg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogMyBmaWxlcyBjaGFuZ2VkLCAy OTYgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL21zbS9kc2kvZHNpLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2kuaAppbmRl eCA4MGJlODNlOGZkZWMuLmRmYTA0OWQ4NzZiZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L21zbS9kc2kvZHNpLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpLmgKQEAgLTE4 Myw2ICsxODMsMjEgQEAgaW50IG1zbV9kc2lfaG9zdF9tb2Rlc2V0X2luaXQoc3RydWN0IG1pcGlf ZHNpX2hvc3QgKmhvc3QsCiBpbnQgbXNtX2RzaV9ob3N0X2luaXQoc3RydWN0IG1zbV9kc2kgKm1z bV9kc2kpOwogaW50IG1zbV9kc2lfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldik7 CiBpbnQgbXNtX2RzaV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpOworaW50IGRz aV9saW5rX2Nsa19lbmFibGVfNmcoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpOworaW50 IGRzaV9saW5rX2Nsa19lbmFibGVfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpOwor dm9pZCBkc2lfbGlua19jbGtfZGlzYWJsZV82ZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9z dCk7Cit2b2lkIGRzaV9saW5rX2Nsa19kaXNhYmxlX3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1z bV9ob3N0KTsKK2ludCBkc2lfdHhfYnVmX2FsbG9jXzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1z bV9ob3N0LCBpbnQgc2l6ZSk7CitpbnQgZHNpX3R4X2J1Zl9hbGxvY192MihzdHJ1Y3QgbXNtX2Rz aV9ob3N0ICptc21faG9zdCwgaW50IHNpemUpOwordm9pZCAqZHNpX3R4X2J1Zl9nZXRfNmcoc3Ry dWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpOwordm9pZCAqZHNpX3R4X2J1Zl9nZXRfdjIoc3Ry dWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpOwordm9pZCBkc2lfdHhfYnVmX3B1dF82ZyhzdHJ1 Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCk7CitpbnQgZHNpX2RtYV9iYXNlX2dldF82ZyhzdHJ1 Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCwgdWludDY0X3QgKmlvdmEpOworaW50IGRzaV9kbWFf YmFzZV9nZXRfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QsIHVpbnQ2NF90ICppb3Zh KTsKK2ludCBkc2lfY2xrX2luaXRfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpOwor aW50IGRzaV9jbGtfaW5pdF82Z192MihzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCk7Citp bnQgZHNpX2NhbGNfY2xrX3JhdGVfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpOwor aW50IGRzaV9jYWxjX2Nsa19yYXRlXzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KTsK IAogLyogZHNpIHBoeSAqLwogc3RydWN0IG1zbV9kc2lfcGh5OwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21zbS9kc2kvZHNpX2NmZy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNp X2NmZy5jCmluZGV4IDAzMjdiYjU0YjAxYi4uZGNkZmIxYmI1NGY5IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfY2ZnLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9k c2kvZHNpX2NmZy5jCkBAIC0xMzYsMjAgKzEzNiw1OCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1z bV9kc2lfY29uZmlnIHNkbTg0NV9kc2lfY2ZnID0gewogCS5udW1fZHNpID0gMiwKIH07CiAKK2Nv bnN0IHN0YXRpYyBzdHJ1Y3QgbXNtX2RzaV9ob3N0X2NmZ19vcHMgbXNtX2RzaV92Ml9ob3N0X29w cyA9IHsKKwkubGlua19jbGtfZW5hYmxlID0gZHNpX2xpbmtfY2xrX2VuYWJsZV92MiwKKwkubGlu a19jbGtfZGlzYWJsZSA9IGRzaV9saW5rX2Nsa19kaXNhYmxlX3YyLAorCS5jbGtfaW5pdF92ZXIg PSBkc2lfY2xrX2luaXRfdjIsCisJLnR4X2J1Zl9hbGxvYyA9IGRzaV90eF9idWZfYWxsb2NfdjIs CisJLnR4X2J1Zl9nZXQgPSBkc2lfdHhfYnVmX2dldF92MiwKKwkudHhfYnVmX3B1dCA9IE5VTEws CisJLmRtYV9iYXNlX2dldCA9IGRzaV9kbWFfYmFzZV9nZXRfdjIsCisJLmNhbGNfY2xrX3JhdGUg PSBkc2lfY2FsY19jbGtfcmF0ZV92MiwKK307CisKK2NvbnN0IHN0YXRpYyBzdHJ1Y3QgbXNtX2Rz aV9ob3N0X2NmZ19vcHMgbXNtX2RzaV82Z19ob3N0X29wcyA9IHsKKwkubGlua19jbGtfZW5hYmxl ID0gZHNpX2xpbmtfY2xrX2VuYWJsZV82ZywKKwkubGlua19jbGtfZGlzYWJsZSA9IGRzaV9saW5r X2Nsa19kaXNhYmxlXzZnLAorCS5jbGtfaW5pdF92ZXIgPSBOVUxMLAorCS50eF9idWZfYWxsb2Mg PSBkc2lfdHhfYnVmX2FsbG9jXzZnLAorCS50eF9idWZfZ2V0ID0gZHNpX3R4X2J1Zl9nZXRfNmcs CisJLnR4X2J1Zl9wdXQgPSBkc2lfdHhfYnVmX3B1dF82ZywKKwkuZG1hX2Jhc2VfZ2V0ID0gZHNp X2RtYV9iYXNlX2dldF82ZywKKwkuY2FsY19jbGtfcmF0ZSA9IGRzaV9jYWxjX2Nsa19yYXRlXzZn LAorfTsKKworY29uc3Qgc3RhdGljIHN0cnVjdCBtc21fZHNpX2hvc3RfY2ZnX29wcyBtc21fZHNp XzZnX3YyX2hvc3Rfb3BzID0geworCS5saW5rX2Nsa19lbmFibGUgPSBkc2lfbGlua19jbGtfZW5h YmxlXzZnLAorCS5saW5rX2Nsa19kaXNhYmxlID0gZHNpX2xpbmtfY2xrX2Rpc2FibGVfNmcsCisJ LmNsa19pbml0X3ZlciA9IGRzaV9jbGtfaW5pdF82Z192MiwKKwkudHhfYnVmX2FsbG9jID0gZHNp X3R4X2J1Zl9hbGxvY182ZywKKwkudHhfYnVmX2dldCA9IGRzaV90eF9idWZfZ2V0XzZnLAorCS50 eF9idWZfcHV0ID0gZHNpX3R4X2J1Zl9wdXRfNmcsCisJLmRtYV9iYXNlX2dldCA9IGRzaV9kbWFf YmFzZV9nZXRfNmcsCisJLmNhbGNfY2xrX3JhdGUgPSBkc2lfY2FsY19jbGtfcmF0ZV82ZywKK307 CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXNtX2RzaV9jZmdfaGFuZGxlciBkc2lfY2ZnX2hhbmRs ZXJzW10gPSB7Ci0Je01TTV9EU0lfVkVSX01BSk9SX1YyLCBNU01fRFNJX1YyX1ZFUl9NSU5PUl84 MDY0LCAmYXBxODA2NF9kc2lfY2ZnfSwKKwl7TVNNX0RTSV9WRVJfTUFKT1JfVjIsIE1TTV9EU0lf VjJfVkVSX01JTk9SXzgwNjQsCisJCSZhcHE4MDY0X2RzaV9jZmcsICZtc21fZHNpX3YyX2hvc3Rf b3BzfSwKIAl7TVNNX0RTSV9WRVJfTUFKT1JfNkcsIE1TTV9EU0lfNkdfVkVSX01JTk9SX1YxXzAs Ci0JCQkJCQkmbXNtODk3NF9hcHE4MDg0X2RzaV9jZmd9LAorCQkmbXNtODk3NF9hcHE4MDg0X2Rz aV9jZmcsICZtc21fZHNpXzZnX2hvc3Rfb3BzfSwKIAl7TVNNX0RTSV9WRVJfTUFKT1JfNkcsIE1T TV9EU0lfNkdfVkVSX01JTk9SX1YxXzEsCi0JCQkJCQkmbXNtODk3NF9hcHE4MDg0X2RzaV9jZmd9 LAorCQkmbXNtODk3NF9hcHE4MDg0X2RzaV9jZmcsICZtc21fZHNpXzZnX2hvc3Rfb3BzfSwKIAl7 TVNNX0RTSV9WRVJfTUFKT1JfNkcsIE1TTV9EU0lfNkdfVkVSX01JTk9SX1YxXzFfMSwKLQkJCQkJ CSZtc204OTc0X2FwcTgwODRfZHNpX2NmZ30sCisJCSZtc204OTc0X2FwcTgwODRfZHNpX2NmZywg Jm1zbV9kc2lfNmdfaG9zdF9vcHN9LAogCXtNU01fRFNJX1ZFUl9NQUpPUl82RywgTVNNX0RTSV82 R19WRVJfTUlOT1JfVjFfMiwKLQkJCQkJCSZtc204OTc0X2FwcTgwODRfZHNpX2NmZ30sCi0Je01T TV9EU0lfVkVSX01BSk9SXzZHLCBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8zLCAmbXNtODk5NF9k c2lfY2ZnfSwKLQl7TVNNX0RTSV9WRVJfTUFKT1JfNkcsIE1TTV9EU0lfNkdfVkVSX01JTk9SX1Yx XzNfMSwgJm1zbTg5MTZfZHNpX2NmZ30sCi0Je01TTV9EU0lfVkVSX01BSk9SXzZHLCBNU01fRFNJ XzZHX1ZFUl9NSU5PUl9WMV80XzEsICZtc204OTk2X2RzaV9jZmd9LAotCXtNU01fRFNJX1ZFUl9N QUpPUl82RywgTVNNX0RTSV82R19WRVJfTUlOT1JfVjJfMl8xLCAmc2RtODQ1X2RzaV9jZmd9LAor CQkmbXNtODk3NF9hcHE4MDg0X2RzaV9jZmcsICZtc21fZHNpXzZnX2hvc3Rfb3BzfSwKKwl7TVNN X0RTSV9WRVJfTUFKT1JfNkcsIE1TTV9EU0lfNkdfVkVSX01JTk9SX1YxXzMsCisJCSZtc204OTk0 X2RzaV9jZmcsICZtc21fZHNpXzZnX2hvc3Rfb3BzfSwKKwl7TVNNX0RTSV9WRVJfTUFKT1JfNkcs IE1TTV9EU0lfNkdfVkVSX01JTk9SX1YxXzNfMSwKKwkJJm1zbTg5MTZfZHNpX2NmZywgJm1zbV9k c2lfNmdfaG9zdF9vcHN9LAorCXtNU01fRFNJX1ZFUl9NQUpPUl82RywgTVNNX0RTSV82R19WRVJf TUlOT1JfVjFfNF8xLAorCQkmbXNtODk5Nl9kc2lfY2ZnLCAmbXNtX2RzaV82Z19ob3N0X29wc30s CisJe01TTV9EU0lfVkVSX01BSk9SXzZHLCBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMl8yXzEsCisJ CSZzZG04NDVfZHNpX2NmZywgJm1zbV9kc2lfNmdfdjJfaG9zdF9vcHN9LAogfTsKIAogY29uc3Qg c3RydWN0IG1zbV9kc2lfY2ZnX2hhbmRsZXIgKm1zbV9kc2lfY2ZnX2dldCh1MzIgbWFqb3IsIHUz MiBtaW5vcikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9ob3N0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfaG9zdC5jCmluZGV4IDdhMDNhOTQ4OTcwOC4u NzhlYTQ1NDBmMGVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfaG9z dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9ob3N0LmMKQEAgLTMzMSw2ICsz MzEsNTQgQEAgc3RhdGljIGludCBkc2lfcmVndWxhdG9yX2luaXQoc3RydWN0IG1zbV9kc2lfaG9z dCAqbXNtX2hvc3QpCiAJcmV0dXJuIDA7CiB9CiAKK2ludCBkc2lfY2xrX2luaXRfdjIoc3RydWN0 IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCit7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl diA9IG1zbV9ob3N0LT5wZGV2OworCWludCByZXQgPSAwOworCisJbXNtX2hvc3QtPnNyY19jbGsg PSBtc21fY2xrX2dldChwZGV2LCAic3JjIik7CisKKwlpZiAoSVNfRVJSKG1zbV9ob3N0LT5zcmNf Y2xrKSkgeworCQlyZXQgPSBQVFJfRVJSKG1zbV9ob3N0LT5zcmNfY2xrKTsKKwkJcHJfZXJyKCIl czogY2FuJ3QgZmluZCBzcmMgY2xvY2suIHJldD0lZFxuIiwKKwkJCV9fZnVuY19fLCByZXQpOwor CQltc21faG9zdC0+c3JjX2NsayA9IE5VTEw7CisJCXJldHVybiByZXQ7CisJfQorCisJbXNtX2hv c3QtPmVzY19jbGtfc3JjID0gY2xrX2dldF9wYXJlbnQobXNtX2hvc3QtPmVzY19jbGspOworCWlm ICghbXNtX2hvc3QtPmVzY19jbGtfc3JjKSB7CisJCXJldCA9IC1FTk9ERVY7CisJCXByX2Vycigi JXM6IGNhbid0IGdldCBlc2MgY2xvY2sgcGFyZW50LiByZXQ9JWRcbiIsCisJCQlfX2Z1bmNfXywg cmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwltc21faG9zdC0+ZHNpX2Nsa19zcmMgPSBjbGtf Z2V0X3BhcmVudChtc21faG9zdC0+c3JjX2Nsayk7CisJaWYgKCFtc21faG9zdC0+ZHNpX2Nsa19z cmMpIHsKKwkJcmV0ID0gLUVOT0RFVjsKKwkJcHJfZXJyKCIlczogY2FuJ3QgZ2V0IHNyYyBjbG9j ayBwYXJlbnQuIHJldD0lZFxuIiwKKwkJCV9fZnVuY19fLCByZXQpOworCX0KKworCXJldHVybiBy ZXQ7Cit9CisKK2ludCBkc2lfY2xrX2luaXRfNmdfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNt X2hvc3QpCit7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IG1zbV9ob3N0LT5wZGV2 OworCWludCByZXQgPSAwOworCisJbXNtX2hvc3QtPmJ5dGVfaW50Zl9jbGsgPSBtc21fY2xrX2dl dChwZGV2LCAiYnl0ZV9pbnRmIik7CisJaWYgKElTX0VSUihtc21faG9zdC0+Ynl0ZV9pbnRmX2Ns aykpIHsKKwkJcmV0ID0gUFRSX0VSUihtc21faG9zdC0+Ynl0ZV9pbnRmX2Nsayk7CisJCXByX2Vy cigiJXM6IGNhbid0IGZpbmQgYnl0ZV9pbnRmIGNsb2NrLiByZXQ9JWRcbiIsCisJCQlfX2Z1bmNf XywgcmV0KTsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMgaW50IGRzaV9jbGtfaW5p dChzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKIHsKIAlzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2ID0gbXNtX2hvc3QtPnBkZXY7CkBAIC00OTcsNyArNTQ1LDcgQEAgaW50IG1zbV9k c2lfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkc2lfYnVzX2Ns a19lbmFibGUobXNtX2hvc3QpOwogfQogCi1zdGF0aWMgaW50IGRzaV9saW5rX2Nsa19lbmFibGVf Nmcoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCitpbnQgZHNpX2xpbmtfY2xrX2VuYWJs ZV82ZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKIHsKIAlpbnQgcmV0OwogCkBAIC01 NjUsNyArNjEzLDcgQEAgc3RhdGljIGludCBkc2lfbGlua19jbGtfZW5hYmxlXzZnKHN0cnVjdCBt c21fZHNpX2hvc3QgKm1zbV9ob3N0KQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgZHNp X2xpbmtfY2xrX2VuYWJsZV92MihzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKK2ludCBk c2lfbGlua19jbGtfZW5hYmxlX3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQogewog CWludCByZXQ7CiAKQEAgLTY0Myw2ICs2OTEsMjMgQEAgc3RhdGljIGludCBkc2lfbGlua19jbGtf ZW5hYmxlKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQogCQlyZXR1cm4gZHNpX2xpbmtf Y2xrX2VuYWJsZV92Mihtc21faG9zdCk7CiB9CiAKK3ZvaWQgZHNpX2xpbmtfY2xrX2Rpc2FibGVf Nmcoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCit7CisJY2xrX2Rpc2FibGVfdW5wcmVw YXJlKG1zbV9ob3N0LT5lc2NfY2xrKTsKKwljbGtfZGlzYWJsZV91bnByZXBhcmUobXNtX2hvc3Qt PnBpeGVsX2Nsayk7CisJaWYgKG1zbV9ob3N0LT5ieXRlX2ludGZfY2xrKQorCQljbGtfZGlzYWJs ZV91bnByZXBhcmUobXNtX2hvc3QtPmJ5dGVfaW50Zl9jbGspOworCWNsa19kaXNhYmxlX3VucHJl cGFyZShtc21faG9zdC0+Ynl0ZV9jbGspOworfQorCit2b2lkIGRzaV9saW5rX2Nsa19kaXNhYmxl X3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQoreworCWNsa19kaXNhYmxlX3VucHJl cGFyZShtc21faG9zdC0+cGl4ZWxfY2xrKTsKKwljbGtfZGlzYWJsZV91bnByZXBhcmUobXNtX2hv c3QtPnNyY19jbGspOworCWNsa19kaXNhYmxlX3VucHJlcGFyZShtc21faG9zdC0+ZXNjX2Nsayk7 CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1zbV9ob3N0LT5ieXRlX2Nsayk7Cit9CisKIHN0YXRp YyB2b2lkIGRzaV9saW5rX2Nsa19kaXNhYmxlKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0 KQogewogCWNvbnN0IHN0cnVjdCBtc21fZHNpX2NmZ19oYW5kbGVyICpjZmdfaG5kID0gbXNtX2hv c3QtPmNmZ19obmQ7CkBAIC02NjEsNiArNzI2LDk0IEBAIHN0YXRpYyB2b2lkIGRzaV9saW5rX2Ns a19kaXNhYmxlKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQogCX0KIH0KIAoraW50IGRz aV9jYWxjX2Nsa19yYXRlXzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQoreworCXN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gbXNtX2hvc3QtPm1vZGU7CisJdTggbGFuZXMg PSBtc21faG9zdC0+bGFuZXM7CisJdTMyIGJwcCA9IGRzaV9nZXRfYnBwKG1zbV9ob3N0LT5mb3Jt YXQpOworCXUzMiBwY2xrX3JhdGU7CisKKwlpZiAoIW1vZGUpIHsKKwkJcHJfZXJyKCIlczogbW9k ZSBub3Qgc2V0XG4iLCBfX2Z1bmNfXyk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXBjbGtf cmF0ZSA9IG1vZGUtPmNsb2NrICogMTAwMDsKKwlpZiAobGFuZXMgPiAwKSB7CisJCW1zbV9ob3N0 LT5ieXRlX2Nsa19yYXRlID0gKHBjbGtfcmF0ZSAqIGJwcCkgLyAoOCAqIGxhbmVzKTsKKwl9IGVs c2UgeworCQlwcl9lcnIoIiVzOiBmb3JjaW5nIG1kc3NfZHNpIGxhbmVzIHRvIDFcbiIsIF9fZnVu Y19fKTsKKwkJbXNtX2hvc3QtPmJ5dGVfY2xrX3JhdGUgPSAocGNsa19yYXRlICogYnBwKSAvIDg7 CisJfQorCisJREJHKCJwY2xrPSVkLCBiY2xrPSVkIiwgcGNsa19yYXRlLCBtc21faG9zdC0+Ynl0 ZV9jbGtfcmF0ZSk7CisKKwltc21faG9zdC0+ZXNjX2Nsa19yYXRlID0gY2xrX2dldF9yYXRlKG1z bV9ob3N0LT5lc2NfY2xrKTsKKworCXJldHVybiAwOworfQorCitpbnQgZHNpX2NhbGNfY2xrX3Jh dGVfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCit7CisJc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm1vZGUgPSBtc21faG9zdC0+bW9kZTsKKwl1OCBsYW5lcyA9IG1zbV9ob3N0LT5s YW5lczsKKwl1MzIgYnBwID0gZHNpX2dldF9icHAobXNtX2hvc3QtPmZvcm1hdCk7CisJdTMyIHBj bGtfcmF0ZTsKKwl1bnNpZ25lZCBpbnQgZXNjX21oeiwgZXNjX2RpdjsKKwl1bnNpZ25lZCBsb25n IGJ5dGVfbWh6OworCisJaWYgKCFtb2RlKSB7CisJCXByX2VycigiJXM6IG1vZGUgbm90IHNldFxu IiwgX19mdW5jX18pOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlwY2xrX3JhdGUgPSBtb2Rl 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 ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9IG1zbV9ob3N0LT5tb2RlOwpAQCAtMTAwOCw2ICsxMTYx LDQ5IEBAIHN0YXRpYyB2b2lkIGRzaV93YWl0NHZpZGVvX2VuZ19idXN5KHN0cnVjdCBtc21fZHNp X2hvc3QgKm1zbV9ob3N0KQogCX0KIH0KIAoraW50IGRzaV90eF9idWZfYWxsb2NfNmcoc3RydWN0 IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QsIGludCBzaXplKQoreworCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBtc21faG9zdC0+ZGV2OworCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBk ZXYtPmRldl9wcml2YXRlOworCWludCByZXQ7CisJdWludDY0X3QgaW92YTsKKworCW1zbV9ob3N0 LT50eF9nZW1fb2JqID0gbXNtX2dlbV9uZXcoZGV2LCBzaXplLCBNU01fQk9fVU5DQUNIRUQpOwor CWlmIChJU19FUlIobXNtX2hvc3QtPnR4X2dlbV9vYmopKSB7CisJCXJldCA9IFBUUl9FUlIobXNt X2hvc3QtPnR4X2dlbV9vYmopOworCQlwcl9lcnIoIiVzOiBmYWlsZWQgdG8gYWxsb2NhdGUgZ2Vt LCAlZFxuIiwKKwkJCV9fZnVuY19fLCByZXQpOworCQltc21faG9zdC0+dHhfZ2VtX29iaiA9IE5V TEw7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0gbXNtX2dlbV9nZXRfaW92YShtc21faG9z dC0+dHhfZ2VtX29iaiwKKwkJCXByaXYtPmttcy0+YXNwYWNlLCAmaW92YSk7CisJbXV0ZXhfdW5s b2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJaWYgKHJldCkgeworCQlwcl9lcnIoIiVzOiBmYWls ZWQgdG8gZ2V0IGlvdmEsICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9 CisKKwltc21faG9zdC0+dHhfc2l6ZSA9IG1zbV9ob3N0LT50eF9nZW1fb2JqLT5zaXplOworCisJ cmV0dXJuIDA7Cit9CisKK2ludCBkc2lfdHhfYnVmX2FsbG9jX3YyKHN0cnVjdCBtc21fZHNpX2hv c3QgKm1zbV9ob3N0LCBpbnQgc2l6ZSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbXNt X2hvc3QtPmRldjsKKworCW1zbV9ob3N0LT50eF9idWYgPSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2 LT5kZXYsIHNpemUsCisJCQkJCSZtc21faG9zdC0+dHhfYnVmX3BhZGRyLCBHRlBfS0VSTkVMKTsK KwlpZiAoIW1zbV9ob3N0LT50eF9idWYpCisJCXJldHVybiAtRU5PTUVNOworCisJbXNtX2hvc3Qt PnR4X3NpemUgPSBzaXplOworCisJcmV0dXJuIDA7Cit9CisKIC8qIGRzaV9jbWQgKi8KIHN0YXRp YyBpbnQgZHNpX3R4X2J1Zl9hbGxvYyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCwgaW50 IHNpemUpCiB7CkBAIC0xMDcyLDYgKzEyNjgsMjEgQEAgc3RhdGljIHZvaWQgZHNpX3R4X2J1Zl9m cmVlKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQogCQkJbXNtX2hvc3QtPnR4X2J1Zl9w YWRkcik7CiB9CiAKK3ZvaWQgKmRzaV90eF9idWZfZ2V0XzZnKHN0cnVjdCBtc21fZHNpX2hvc3Qg Km1zbV9ob3N0KQoreworCXJldHVybiBtc21fZ2VtX2dldF92YWRkcihtc21faG9zdC0+dHhfZ2Vt X29iaik7Cit9CisKK3ZvaWQgKmRzaV90eF9idWZfZ2V0X3YyKHN0cnVjdCBtc21fZHNpX2hvc3Qg Km1zbV9ob3N0KQoreworCXJldHVybiBtc21faG9zdC0+dHhfYnVmOworfQorCit2b2lkIGRzaV90 eF9idWZfcHV0XzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQoreworCW1zbV9nZW1f cHV0X3ZhZGRyKG1zbV9ob3N0LT50eF9nZW1fb2JqKTsKK30KKwogLyoKICAqIHByZXBhcmUgY21k IGJ1ZmZlciB0byBiZSB0eGVkCiAgKi8KQEAgLTExNzMsNiArMTM4NCwyNyBAQCBzdGF0aWMgaW50 IGRzaV9sb25nX3JlYWRfcmVzcCh1OCAqYnVmLCBjb25zdCBzdHJ1Y3QgbWlwaV9kc2lfbXNnICpt c2cpCiAJcmV0dXJuIG1zZy0+cnhfbGVuOwogfQogCitpbnQgZHNpX2RtYV9iYXNlX2dldF82Zyhz dHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCwgdWludDY0X3QgKmRtYV9iYXNlKQoreworCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBtc21faG9zdC0+ZGV2OworCXN0cnVjdCBtc21fZHJtX3By aXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCisJaWYgKCFkbWFfYmFzZSkKKwkJcmV0 dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4gbXNtX2dlbV9nZXRfaW92YShtc21faG9zdC0+dHhfZ2Vt X29iaiwKKwkJCQlwcml2LT5rbXMtPmFzcGFjZSwgZG1hX2Jhc2UpOworfQorCitpbnQgZHNpX2Rt YV9iYXNlX2dldF92MihzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCwgdWludDY0X3QgKmRt YV9iYXNlKQoreworCWlmICghZG1hX2Jhc2UpCisJCXJldHVybiAtRUlOVkFMOworCisJKmRtYV9i YXNlID0gbXNtX2hvc3QtPnR4X2J1Zl9wYWRkcjsKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGlu dCBkc2lfY21kX2RtYV90eChzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCwgaW50IGxlbikK IHsKIAljb25zdCBzdHJ1Y3QgbXNtX2RzaV9jZmdfaGFuZGxlciAqY2ZnX2huZCA9IG1zbV9ob3N0 LT5jZmdfaG5kOwotLSAKVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEg bWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwKYSBMaW51eCBGb3VuZGF0aW9uIENvbGxh Ym9yYXRpdmUgUHJvamVjdAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCg==