From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [2/4] usb: chipidea: imx: add HSIC support From: Peter Chen Message-Id: <20181016045846.2345-3-peter.chen@nxp.com> Date: Tue, 16 Oct 2018 05:01:22 +0000 To: "linux-usb@vger.kernel.org" , "frieder.schrempf@exceet.de" Cc: dl-linux-imx , "robh+dt@kernel.org" , "devicetree@vger.kernel.org" , Peter Chen List-ID: VG8gc3VwcG9ydCBpbXggSFNJQywgdGhlcmUgYXJlIHNvbWUgc3BlY2lhbCByZXF1aXJlbWVudDoK LSBUaGUgSFNJQyBwYWQgaXMgMS4ydiwgaXQgbWF5IG5lZWQgdG8gc3VwcGx5IGZyb20gZXh0ZXJu YWwKLSBUaGUgZGF0YS9zdHJvYmUgcGluIG5lZWRzIHRvIGJlIHB1bGxlZCBkb3duIGZpcnN0LCBh bmQgYWZ0ZXIKICBob3N0IG1vZGUgaXMgaW5pdGlhbGl6ZWQsIHRoZSBzdHJvYmUgcGluIG5lZWRz IHRvIGJlIHB1bGxlZCB1cAotIER1cmluZyB0aGUgVVNCIHN1c3BlbmQvcmVzdW1lLCBzcGVjaWFs IHNldHRpbmcgaXMgbmVlZGVkCgpTaWduZWQtb2ZmLWJ5OiBQZXRlciBDaGVuIDxwZXRlci5jaGVu QG54cC5jb20+Ci0tLQogZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYyB8IDE1MyAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiBkcml2ZXJzL3VzYi9jaGlwaWRl YS9jaV9oZHJjX2lteC5oIHwgICA5ICsrLQogZHJpdmVycy91c2IvY2hpcGlkZWEvdXNibWlzY19p bXguYyB8IDEzMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5n ZWQsIDI3NCBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lf aGRyY19pbXguYwppbmRleCAwOWIzN2MwZDA3NWQuLmQ1NjY3NzFmYzc3YSAxMDA2NDQKLS0tIGEv ZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYworKysgYi9kcml2ZXJzL3VzYi9jaGlw aWRlYS9jaV9oZHJjX2lteC5jCkBAIC04NSw2ICs4NSw5IEBAIHN0cnVjdCBjaV9oZHJjX2lteF9k YXRhIHsKIAlib29sIHN1cHBvcnRzX3J1bnRpbWVfcG07CiAJYm9vbCBvdmVycmlkZV9waHlfY29u dHJvbDsKIAlib29sIGluX2xwbTsKKwlzdHJ1Y3QgcGluY3RybCAqcGluY3RybDsKKwlzdHJ1Y3Qg cGluY3RybF9zdGF0ZSAqcGluY3RybF9oc2ljX2FjdGl2ZTsKKwlzdHJ1Y3QgcmVndWxhdG9yICpo c2ljX3BhZF9yZWd1bGF0b3I7CiAJLyogU29DIGJlZm9yZSBpLm14NiAoZXhjZXB0IGlteDIzL2lt eDI4KSBuZWVkcyB0aHJlZSBjbGtzICovCiAJYm9vbCBuZWVkX3RocmVlX2Nsa3M7CiAJc3RydWN0 IGNsayAqY2xrX2lwZzsKQEAgLTI0NSwxOSArMjQ4LDU4IEBAIHN0YXRpYyB2b2lkIGlteF9kaXNh YmxlX3VucHJlcGFyZV9jbGtzKHN0cnVjdCBkZXZpY2UgKmRldikKIAl9CiB9CiAKK3N0YXRpYyBp bnQgY2lfaGRyY19pbXhfbm90aWZ5X2V2ZW50KHN0cnVjdCBjaV9oZHJjICpjaSwgdW5zaWduZWQg aW50IGV2ZW50KQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9IGNpLT5kZXYtPnBhcmVudDsKKwlz dHJ1Y3QgY2lfaGRyY19pbXhfZGF0YSAqZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCWlu dCByZXQgPSAwOworCisJc3dpdGNoIChldmVudCkgeworCWNhc2UgQ0lfSERSQ19JTVhfSFNJQ19B Q1RJVkVfRVZFTlQ6CisJCWlmICghSVNfRVJSKGRhdGEtPnBpbmN0cmwpICYmCisJCQkhSVNfRVJS KGRhdGEtPnBpbmN0cmxfaHNpY19hY3RpdmUpKSB7CisJCQlyZXQgPSBwaW5jdHJsX3NlbGVjdF9z dGF0ZShkYXRhLT5waW5jdHJsLAorCQkJCQlkYXRhLT5waW5jdHJsX2hzaWNfYWN0aXZlKTsKKwkJ CWlmIChyZXQpCisJCQkJZGV2X2VycihkZXYsCisJCQkJCSJoc2ljX2FjdGl2ZSBzZWxlY3QgZmFp bGVkLCBlcnI9JWRcbiIsCisJCQkJCXJldCk7CisJCQlyZXR1cm4gcmV0OworCQl9CisJCWJyZWFr OworCWNhc2UgQ0lfSERSQ19JTVhfSFNJQ19TVVNQRU5EX0VWRU5UOgorCQlpZiAoZGF0YS0+dXNi bWlzY19kYXRhKSB7CisJCQlyZXQgPSBpbXhfdXNibWlzY19oc2ljX3NldF9jb25uZWN0KGRhdGEt PnVzYm1pc2NfZGF0YSk7CisJCQlpZiAocmV0KQorCQkJCWRldl9lcnIoZGV2LAorCQkJCQkiaHNp Y19zZXRfY29ubmVjdCBmYWlsZWQsIGVycj0lZFxuIiwKKwkJCQkJcmV0KTsKKwkJCXJldHVybiBy ZXQ7CisJCX0KKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorCisJcmV0dXJuIHJl dDsKK30KKwogc3RhdGljIGludCBjaV9oZHJjX2lteF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2KQogewogCXN0cnVjdCBjaV9oZHJjX2lteF9kYXRhICpkYXRhOwogCXN0cnVjdCBj aV9oZHJjX3BsYXRmb3JtX2RhdGEgcGRhdGEgPSB7CiAJCS5uYW1lCQk9IGRldl9uYW1lKCZwZGV2 LT5kZXYpLAogCQkuY2Fwb2Zmc2V0CT0gREVGX0NBUE9GRlNFVCwKKwkJLm5vdGlmeV9ldmVudAk9 IGNpX2hkcmNfaW14X25vdGlmeV9ldmVudCwKIAl9OwogCWludCByZXQ7CiAJY29uc3Qgc3RydWN0 IG9mX2RldmljZV9pZCAqb2ZfaWQ7CiAJY29uc3Qgc3RydWN0IGNpX2hkcmNfaW14X3BsYXRmb3Jt X2ZsYWcgKmlteF9wbGF0Zm9ybV9mbGFnOwogCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwZGV2 LT5kZXYub2Zfbm9kZTsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OworCXN0cnVj dCBwaW5jdHJsX3N0YXRlICpwaW5jdHJsX2hzaWNfaWRsZTsKIAotCW9mX2lkID0gb2ZfbWF0Y2hf ZGV2aWNlKGNpX2hkcmNfaW14X2R0X2lkcywgJnBkZXYtPmRldik7CisJb2ZfaWQgPSBvZl9tYXRj aF9kZXZpY2UoY2lfaGRyY19pbXhfZHRfaWRzLCBkZXYpOwogCWlmICghb2ZfaWQpCiAJCXJldHVy biAtRU5PREVWOwogCkBAIC0yNjgsMTkgKzMxMCw0OCBAQCBzdGF0aWMgaW50IGNpX2hkcmNfaW14 X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCXJldHVybiAtRU5PTUVNOwog CiAJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgZGF0YSk7Ci0JZGF0YS0+dXNibWlzY19kYXRh ID0gdXNibWlzY19nZXRfaW5pdF9kYXRhKCZwZGV2LT5kZXYpOworCWRhdGEtPnVzYm1pc2NfZGF0 YSA9IHVzYm1pc2NfZ2V0X2luaXRfZGF0YShkZXYpOwogCWlmIChJU19FUlIoZGF0YS0+dXNibWlz Y19kYXRhKSkKIAkJcmV0dXJuIFBUUl9FUlIoZGF0YS0+dXNibWlzY19kYXRhKTsKIAotCXJldCA9 IGlteF9nZXRfY2xrcygmcGRldi0+ZGV2KTsKKwlkYXRhLT5waW5jdHJsID0gZGV2bV9waW5jdHJs X2dldChkZXYpOworCWlmIChJU19FUlIoZGF0YS0+cGluY3RybCkpIHsKKwkJZGV2X2RiZyhkZXYs ICJwaW5jdHJsIGdldCBmYWlsZWQsIGVycj0lbGRcbiIsCisJCQkJCQlQVFJfRVJSKGRhdGEtPnBp bmN0cmwpKTsKKwl9IGVsc2UgeworCQlwaW5jdHJsX2hzaWNfaWRsZSA9IHBpbmN0cmxfbG9va3Vw X3N0YXRlKGRhdGEtPnBpbmN0cmwsICJpZGxlIik7CisJCWlmIChJU19FUlIocGluY3RybF9oc2lj X2lkbGUpKSB7CisJCQlkZXZfZGJnKGRldiwKKwkJCQkicGluY3RybF9oc2ljX2lkbGUgbG9va3Vw IGZhaWxlZCwgZXJyPSVsZFxuIiwKKwkJCQkJCVBUUl9FUlIocGluY3RybF9oc2ljX2lkbGUpKTsK KwkJfSBlbHNlIHsKKwkJCXJldCA9IHBpbmN0cmxfc2VsZWN0X3N0YXRlKGRhdGEtPnBpbmN0cmws CisJCQkJCQlwaW5jdHJsX2hzaWNfaWRsZSk7CisJCQlpZiAocmV0KSB7CisJCQkJZGV2X2Vycihk ZXYsCisJCQkJCSJoc2ljX2lkbGUgc2VsZWN0IGZhaWxlZCwgZXJyPSVkXG4iLAorCQkJCQkJCQkJ cmV0KTsKKwkJCQlyZXR1cm4gcmV0OworCQkJfQorCQl9CisKKwkJZGF0YS0+cGluY3RybF9oc2lj X2FjdGl2ZSA9IHBpbmN0cmxfbG9va3VwX3N0YXRlKGRhdGEtPnBpbmN0cmwsCisJCQkJCQkJCSJh Y3RpdmUiKTsKKwkJaWYgKElTX0VSUihkYXRhLT5waW5jdHJsX2hzaWNfYWN0aXZlKSkKKwkJCWRl dl9kYmcoZGV2LAorCQkJCSJwaW5jdHJsX2hzaWNfYWN0aXZlIGxvb2t1cCBmYWlsZWQsIGVycj0l bGRcbiIsCisJCQkJCVBUUl9FUlIoZGF0YS0+cGluY3RybF9oc2ljX2FjdGl2ZSkpOworCX0KKwor CXJldCA9IGlteF9nZXRfY2xrcyhkZXYpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQly ZXQgPSBpbXhfcHJlcGFyZV9lbmFibGVfY2xrcygmcGRldi0+ZGV2KTsKKwlyZXQgPSBpbXhfcHJl cGFyZV9lbmFibGVfY2xrcyhkZXYpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlkYXRh LT5waHkgPSBkZXZtX3VzYl9nZXRfcGh5X2J5X3BoYW5kbGUoJnBkZXYtPmRldiwgImZzbCx1c2Jw aHkiLCAwKTsKKwlkYXRhLT5waHkgPSBkZXZtX3VzYl9nZXRfcGh5X2J5X3BoYW5kbGUoZGV2LCAi ZnNsLHVzYnBoeSIsIDApOwogCWlmIChJU19FUlIoZGF0YS0+cGh5KSkgewogCQlyZXQgPSBQVFJf RVJSKGRhdGEtPnBoeSk7CiAJCS8qIFJldHVybiAtRUlOVkFMIGlmIG5vIHVzYnBoeSBpcyBhdmFp bGFibGUgKi8KQEAgLTMwMyw0MiArMzc0LDcyIEBAIHN0YXRpYyBpbnQgY2lfaGRyY19pbXhfcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlpZiAocGRhdGEuZmxhZ3MgJiBDSV9I RFJDX1NVUFBPUlRTX1JVTlRJTUVfUE0pCiAJCWRhdGEtPnN1cHBvcnRzX3J1bnRpbWVfcG0gPSB0 cnVlOwogCisJaWYgKG9mX3VzYl9nZXRfcGh5X21vZGUoZGV2LT5vZl9ub2RlKSA9PSBVU0JQSFlf SU5URVJGQUNFX01PREVfSFNJQykgeworCQlwZGF0YS5mbGFncyB8PSBDSV9IRFJDX0lNWF9JU19I U0lDOworCQlkYXRhLT51c2JtaXNjX2RhdGEtPmhzaWMgPSAxOworCQlkYXRhLT5oc2ljX3BhZF9y ZWd1bGF0b3IgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoZGV2LCAiaHNpYyIpOworCQlpZiAoUFRSX0VS UihkYXRhLT5oc2ljX3BhZF9yZWd1bGF0b3IpID09IC1FUFJPQkVfREVGRVIpIHsKKwkJCXJldCA9 IC1FUFJPQkVfREVGRVI7CisJCQlnb3RvIGVycl9jbGs7CisJCX0gZWxzZSBpZiAoUFRSX0VSUihk YXRhLT5oc2ljX3BhZF9yZWd1bGF0b3IpID09IC1FTk9ERVYpIHsKKwkJCS8qIG5vIHBhZCByZWd1 YWxhdG9yIGlzIG5lZWRlZCAqLworCQkJZGF0YS0+aHNpY19wYWRfcmVndWxhdG9yID0gTlVMTDsK KwkJfSBlbHNlIGlmIChJU19FUlIoZGF0YS0+aHNpY19wYWRfcmVndWxhdG9yKSkgeworCQkJZGV2 X2VycihkZXYsICJHZXQgaHNpYyBwYWQgcmVndWxhdG9yIGVycm9yOiAlbGRcbiIsCisJCQkJCVBU Ul9FUlIoZGF0YS0+aHNpY19wYWRfcmVndWxhdG9yKSk7CisJCQlyZXQgPSBQVFJfRVJSKGRhdGEt PmhzaWNfcGFkX3JlZ3VsYXRvcik7CisJCQlnb3RvIGVycl9jbGs7CisJCX0KKworCQlpZiAoZGF0 YS0+aHNpY19wYWRfcmVndWxhdG9yKSB7CisJCQlyZXQgPSByZWd1bGF0b3JfZW5hYmxlKGRhdGEt PmhzaWNfcGFkX3JlZ3VsYXRvcik7CisJCQlpZiAocmV0KSB7CisJCQkJZGV2X2VycihkZXYsCisJ CQkJCSJGYWlsIHRvIGVuYWJsZSBoc2ljIHBhZCByZWd1bGF0b3JcbiIpOworCQkJCWdvdG8gZXJy X2NsazsKKwkJCX0KKwkJfQorCX0KKwogCXJldCA9IGlteF91c2JtaXNjX2luaXQoZGF0YS0+dXNi bWlzY19kYXRhKTsKIAlpZiAocmV0KSB7Ci0JCWRldl9lcnIoJnBkZXYtPmRldiwgInVzYm1pc2Mg aW5pdCBmYWlsZWQsIHJldD0lZFxuIiwgcmV0KTsKLQkJZ290byBlcnJfY2xrOworCQlkZXZfZXJy KGRldiwgInVzYm1pc2MgaW5pdCBmYWlsZWQsIHJldD0lZFxuIiwgcmV0KTsKKwkJZ290byBkaXNh YmxlX2hzaWNfcmVndWxhdG9yOwogCX0KIAotCWRhdGEtPmNpX3BkZXYgPSBjaV9oZHJjX2FkZF9k ZXZpY2UoJnBkZXYtPmRldiwKKwlkYXRhLT5jaV9wZGV2ID0gY2lfaGRyY19hZGRfZGV2aWNlKGRl diwKIAkJCQlwZGV2LT5yZXNvdXJjZSwgcGRldi0+bnVtX3Jlc291cmNlcywKIAkJCQkmcGRhdGEp OwogCWlmIChJU19FUlIoZGF0YS0+Y2lfcGRldikpIHsKIAkJcmV0ID0gUFRSX0VSUihkYXRhLT5j aV9wZGV2KTsKIAkJaWYgKHJldCAhPSAtRVBST0JFX0RFRkVSKQotCQkJZGV2X2VycigmcGRldi0+ ZGV2LAotCQkJCSJjaV9oZHJjX2FkZF9kZXZpY2UgZmFpbGVkLCBlcnI9JWRcbiIsIHJldCk7Ci0J CWdvdG8gZXJyX2NsazsKKwkJCWRldl9lcnIoZGV2LCAiY2lfaGRyY19hZGRfZGV2aWNlIGZhaWxl ZCwgZXJyPSVkXG4iLAorCQkJCQlyZXQpOworCQlnb3RvIGRpc2FibGVfaHNpY19yZWd1bGF0b3I7 CiAJfQogCiAJcmV0ID0gaW14X3VzYm1pc2NfaW5pdF9wb3N0KGRhdGEtPnVzYm1pc2NfZGF0YSk7 CiAJaWYgKHJldCkgewotCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJ1c2JtaXNjIHBvc3QgZmFpbGVk LCByZXQ9JWRcbiIsIHJldCk7CisJCWRldl9lcnIoZGV2LCAidXNibWlzYyBwb3N0IGZhaWxlZCwg cmV0PSVkXG4iLCByZXQpOwogCQlnb3RvIGRpc2FibGVfZGV2aWNlOwogCX0KIAogCWlmIChkYXRh LT5zdXBwb3J0c19ydW50aW1lX3BtKSB7Ci0JCXBtX3J1bnRpbWVfc2V0X2FjdGl2ZSgmcGRldi0+ ZGV2KTsKLQkJcG1fcnVudGltZV9lbmFibGUoJnBkZXYtPmRldik7CisJCXBtX3J1bnRpbWVfc2V0 X2FjdGl2ZShkZXYpOworCQlwbV9ydW50aW1lX2VuYWJsZShkZXYpOwogCX0KIAotCWRldmljZV9z ZXRfd2FrZXVwX2NhcGFibGUoJnBkZXYtPmRldiwgdHJ1ZSk7CisJZGV2aWNlX3NldF93YWtldXBf Y2FwYWJsZShkZXYsIHRydWUpOwogCiAJcmV0dXJuIDA7CiAKIGRpc2FibGVfZGV2aWNlOgogCWNp X2hkcmNfcmVtb3ZlX2RldmljZShkYXRhLT5jaV9wZGV2KTsKK2Rpc2FibGVfaHNpY19yZWd1bGF0 b3I6CisJaWYgKGRhdGEtPmhzaWNfcGFkX3JlZ3VsYXRvcikKKwkJcmV0ID0gcmVndWxhdG9yX2Rp c2FibGUoZGF0YS0+aHNpY19wYWRfcmVndWxhdG9yKTsKIGVycl9jbGs6Ci0JaW14X2Rpc2FibGVf dW5wcmVwYXJlX2Nsa3MoJnBkZXYtPmRldik7CisJaW14X2Rpc2FibGVfdW5wcmVwYXJlX2Nsa3Mo ZGV2KTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0zNTUsNiArNDU2LDggQEAgc3RhdGljIGludCBj aV9oZHJjX2lteF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlpZiAoZGF0 YS0+b3ZlcnJpZGVfcGh5X2NvbnRyb2wpCiAJCXVzYl9waHlfc2h1dGRvd24oZGF0YS0+cGh5KTsK IAlpbXhfZGlzYWJsZV91bnByZXBhcmVfY2xrcygmcGRldi0+ZGV2KTsKKwlpZiAoZGF0YS0+aHNp Y19wYWRfcmVndWxhdG9yKQorCQlyZWd1bGF0b3JfZGlzYWJsZShkYXRhLT5oc2ljX3BhZF9yZWd1 bGF0b3IpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0zNjcsOSArNDcwLDE5IEBAIHN0YXRpYyB2b2lk IGNpX2hkcmNfaW14X3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiBzdGF0 aWMgaW50IF9fbWF5YmVfdW51c2VkIGlteF9jb250cm9sbGVyX3N1c3BlbmQoc3RydWN0IGRldmlj ZSAqZGV2KQogewogCXN0cnVjdCBjaV9oZHJjX2lteF9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZk YXRhKGRldik7CisJaW50IHJldCA9IDA7CiAKIAlkZXZfZGJnKGRldiwgImF0ICVzXG4iLCBfX2Z1 bmNfXyk7CiAKKwlpZiAoZGF0YS0+dXNibWlzY19kYXRhKSB7CisJCXJldCA9IGlteF91c2JtaXNj X2hzaWNfc2V0X2NsayhkYXRhLT51c2JtaXNjX2RhdGEsIGZhbHNlKTsKKwkJaWYgKHJldCkgewor CQkJZGV2X2VycihkZXYsCisJCQkJInVzYm1pc2MgaHNpY19zZXRfY2xrIGZhaWxlZCwgcmV0PSVk XG4iLCByZXQpOworCQkJcmV0dXJuIHJldDsKKwkJfQorCX0KKwogCWlteF9kaXNhYmxlX3VucHJl cGFyZV9jbGtzKGRldik7CiAJZGF0YS0+aW5fbHBtID0gdHJ1ZTsKIApAQCAtNDAwLDggKzUxMywx NiBAQCBzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGlteF9jb250cm9sbGVyX3Jlc3VtZShzdHJ1 Y3QgZGV2aWNlICpkZXYpCiAJCWdvdG8gY2xrX2Rpc2FibGU7CiAJfQogCisJcmV0ID0gaW14X3Vz Ym1pc2NfaHNpY19zZXRfY2xrKGRhdGEtPnVzYm1pc2NfZGF0YSwgdHJ1ZSk7CisJaWYgKHJldCkg eworCQlkZXZfZXJyKGRldiwgInVzYm1pc2MgaHNpY19zZXRfY2xrIGZhaWxlZCwgcmV0PSVkXG4i LCByZXQpOworCQlnb3RvIGhzaWNfc2V0X2Nsa19mYWlsOworCX0KKwogCXJldHVybiAwOwogCito c2ljX3NldF9jbGtfZmFpbDoKKwlpbXhfdXNibWlzY19zZXRfd2FrZXVwKGRhdGEtPnVzYm1pc2Nf ZGF0YSwgdHJ1ZSk7CiBjbGtfZGlzYWJsZToKIAlpbXhfZGlzYWJsZV91bnByZXBhcmVfY2xrcyhk ZXYpOwogCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9o ZHJjX2lteC5oIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguaAppbmRleCAyMDQy NzVmNDc1NzMuLmZjZWNhYjQ3ODkzNCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEv Y2lfaGRyY19pbXguaAorKysgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5oCkBA IC0xNCwxMCArMTQsMTMgQEAgc3RydWN0IGlteF91c2JtaXNjX2RhdGEgewogCXVuc2lnbmVkIGlu dCBvY19wb2xhcml0eToxOyAvKiBvdmVyIGN1cnJlbnQgcG9sYXJpdHkgaWYgb2MgZW5hYmxlZCAq LwogCXVuc2lnbmVkIGludCBldmRvOjE7IC8qIHNldCBleHRlcm5hbCB2YnVzIGRpdmlkZXIgb3B0 aW9uICovCiAJdW5zaWduZWQgaW50IHVscGk6MTsgLyogY29ubmVjdGVkIHRvIGFuIFVMUEkgcGh5 ICovCisJdW5zaWduZWQgaW50IGhzaWM6MTsgLyogSFNJQyBjb250cm9sbGxlciAqLwogfTsKIAot aW50IGlteF91c2JtaXNjX2luaXQoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKik7Ci1pbnQgaW14 X3VzYm1pc2NfaW5pdF9wb3N0KHN0cnVjdCBpbXhfdXNibWlzY19kYXRhICopOwotaW50IGlteF91 c2JtaXNjX3NldF93YWtldXAoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKiwgYm9vbCk7CitpbnQg aW14X3VzYm1pc2NfaW5pdChzdHJ1Y3QgaW14X3VzYm1pc2NfZGF0YSAqZGF0YSk7CitpbnQgaW14 X3VzYm1pc2NfaW5pdF9wb3N0KHN0cnVjdCBpbXhfdXNibWlzY19kYXRhICpkYXRhKTsKK2ludCBp bXhfdXNibWlzY19zZXRfd2FrZXVwKHN0cnVjdCBpbXhfdXNibWlzY19kYXRhICpkYXRhLCBib29s IGVuYWJsZWQpOworaW50IGlteF91c2JtaXNjX2hzaWNfc2V0X2Nvbm5lY3Qoc3RydWN0IGlteF91 c2JtaXNjX2RhdGEgKmRhdGEpOworaW50IGlteF91c2JtaXNjX2hzaWNfc2V0X2NsayhzdHJ1Y3Qg aW14X3VzYm1pc2NfZGF0YSAqZGF0YSwgYm9vbCBvbik7CiAKICNlbmRpZiAvKiBfX0RSSVZFUl9V U0JfQ0hJUElERUFfQ0lfSERSQ19JTVhfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2hp cGlkZWEvdXNibWlzY19pbXguYyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL3VzYm1pc2NfaW14LmMK aW5kZXggZGVmODBmZjU0N2U0Li5hNjZhMTUwNzUyMDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNi L2NoaXBpZGVhL3VzYm1pc2NfaW14LmMKKysrIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvdXNibWlz Y19pbXguYwpAQCAtNjQsMTAgKzY0LDIyIEBACiAjZGVmaW5lIE1YNl9CTV9PVkVSX0NVUl9ESVMJ CUJJVCg3KQogI2RlZmluZSBNWDZfQk1fT1ZFUl9DVVJfUE9MQVJJVFkJQklUKDgpCiAjZGVmaW5l IE1YNl9CTV9XQUtFVVBfRU5BQkxFCQlCSVQoMTApCisjZGVmaW5lIE1YNl9CTV9VVE1JX09OX0NM T0NLCQlCSVQoMTMpCiAjZGVmaW5lIE1YNl9CTV9JRF9XQUtFVVAJCUJJVCgxNikKICNkZWZpbmUg TVg2X0JNX1ZCVVNfV0FLRVVQCQlCSVQoMTcpCiAjZGVmaW5lIE1YNlNYX0JNX0RQRE1fV0FLRVVQ X0VOCQlCSVQoMjkpCiAjZGVmaW5lIE1YNl9CTV9XQUtFVVBfSU5UUgkJQklUKDMxKQorCisjZGVm aW5lIE1YNl9VU0JfSFNJQ19DVFJMX09GRlNFVAkweDEwCisvKiBTZW5kIHJlc3VtZSBzaWduYWwg d2l0aG91dCA0ODBNaHogUEhZIGNsb2NrICovCisjZGVmaW5lIE1YNlNYX0JNX0hTSUNfQVVUT19S RVNVTUUJQklUKDIzKQorLyogc2V0IGJlZm9yZSBwb3J0c2Muc3VzcGVuZE0gPSAxICovCisjZGVm aW5lIE1YNl9CTV9IU0lDX0RFVl9DT05OCQlCSVQoMjEpCisvKiBIU0lDIGVuYWJsZSAqLworI2Rl ZmluZSBNWDZfQk1fSFNJQ19FTgkJCUJJVCgxMikKKy8qIEZvcmNlIEhTSUMgbW9kdWxlIDQ4ME0g Y2xvY2sgb24sIGV2ZW4gd2hlbiBpbiBIb3N0IGlzIGluIHN1c3BlbmQgbW9kZSAqLworI2RlZmlu ZSBNWDZfQk1fSFNJQ19DTEtfT04JCUJJVCgxMSkKKwogI2RlZmluZSBNWDZfVVNCX09URzFfUEhZ X0NUUkwJCTB4MTgKIC8qIEZvciBpbXg2ZHFsLCBpdCBpcyBob3N0LW9ubHkgY29udHJvbGxlciwg Zm9yIGxhdGVyIGlteDYsIGl0IGlzIG90ZydzICovCiAjZGVmaW5lIE1YNl9VU0JfT1RHMl9QSFlf Q1RSTAkJMHgxYwpAQCAtOTQsNiArMTA2LDEwIEBAIHN0cnVjdCB1c2JtaXNjX29wcyB7CiAJaW50 ICgqcG9zdCkoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKmRhdGEpOwogCS8qIEl0J3MgY2FsbGVk IHdoZW4gd2UgbmVlZCB0byBlbmFibGUvZGlzYWJsZSB1c2Igd2FrZXVwICovCiAJaW50ICgqc2V0 X3dha2V1cCkoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKmRhdGEsIGJvb2wgZW5hYmxlZCk7CisJ LyogSXQncyBjYWxsZWQgYmVmb3JlIHNldHRpbmcgcG9ydHNjLnN1c3BlbmRNICovCisJaW50ICgq aHNpY19zZXRfY29ubmVjdCkoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKmRhdGEpOworCS8qIEl0 J3MgY2FsbGVkIGR1cmluZyBzdXNwZW5kL3Jlc3VtZSAqLworCWludCAoKmhzaWNfc2V0X2Nsayko c3RydWN0IGlteF91c2JtaXNjX2RhdGEgKmRhdGEsIGJvb2wgZW5hYmxlZCk7CiB9OwogCiBzdHJ1 Y3QgaW14X3VzYm1pc2MgewpAQCAtMzUzLDYgKzM2OSwxOCBAQCBzdGF0aWMgaW50IHVzYm1pc2Nf aW14NnFfaW5pdChzdHJ1Y3QgaW14X3VzYm1pc2NfZGF0YSAqZGF0YSkKIAl3cml0ZWwocmVnIHwg TVg2X0JNX05PTl9CVVJTVF9TRVRUSU5HLAogCQkJdXNibWlzYy0+YmFzZSArIGRhdGEtPmluZGV4 ICogNCk7CiAKKwkvKiBGb3IgSFNJQyBjb250cm9sbGVyICovCisJaWYgKGRhdGEtPmhzaWMpIHsK KwkJcmVnID0gcmVhZGwodXNibWlzYy0+YmFzZSArIGRhdGEtPmluZGV4ICogNCk7CisJCXdyaXRl bChyZWcgfCBNWDZfQk1fVVRNSV9PTl9DTE9DSywKKwkJCXVzYm1pc2MtPmJhc2UgKyBkYXRhLT5p bmRleCAqIDQpOworCQlyZWcgPSByZWFkbCh1c2JtaXNjLT5iYXNlICsgTVg2X1VTQl9IU0lDX0NU UkxfT0ZGU0VUCisJCQkrIChkYXRhLT5pbmRleCAtIDIpICogNCk7CisJCXJlZyB8PSBNWDZfQk1f SFNJQ19FTiB8IE1YNl9CTV9IU0lDX0NMS19PTjsKKwkJd3JpdGVsKHJlZywgdXNibWlzYy0+YmFz ZSArIE1YNl9VU0JfSFNJQ19DVFJMX09GRlNFVAorCQkJKyAoZGF0YS0+aW5kZXggLSAyKSAqIDQp OworCX0KKwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVzYm1pc2MtPmxvY2ssIGZsYWdzKTsK IAogCXVzYm1pc2NfaW14NnFfc2V0X3dha2V1cChkYXRhLCBmYWxzZSk7CkBAIC0zNjAsNiArMzg4 LDcwIEBAIHN0YXRpYyBpbnQgdXNibWlzY19pbXg2cV9pbml0KHN0cnVjdCBpbXhfdXNibWlzY19k YXRhICpkYXRhKQogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IHVzYm1pc2NfaW14Nl9oc2lj X3NldF9jb25uZWN0KHN0cnVjdCBpbXhfdXNibWlzY19kYXRhICpkYXRhKQoreworCXVuc2lnbmVk IGxvbmcgZmxhZ3M7CisJdTMyIHZhbCwgb2Zmc2V0OworCXN0cnVjdCBpbXhfdXNibWlzYyAqdXNi bWlzYyA9IGRldl9nZXRfZHJ2ZGF0YShkYXRhLT5kZXYpOworCWludCByZXQgPSAwOworCisJc3Bp bl9sb2NrX2lycXNhdmUoJnVzYm1pc2MtPmxvY2ssIGZsYWdzKTsKKwlpZiAoZGF0YS0+aW5kZXgg PT0gMiB8fCBkYXRhLT5pbmRleCA9PSAzKSB7CisJCW9mZnNldCA9IChkYXRhLT5pbmRleCAtIDIp ICogNDsKKwl9IGVsc2UgaWYgKGRhdGEtPmluZGV4ID09IDApIHsKKwkJLyoKKwkJICogRm9yIGNv bnRyb2xsZXJzIGxhdGVyIHRoYW4gaW14N2QgKGlteDdkIGlzIGluY2x1ZGVkKSwKKwkJICogZWFj aCBjb250cm9sbGVyIGhhcyBpdHMgb3duIG5vbiBjb3JlIHJlZ2lzdGVyIHJlZ2lvbi4KKwkJICog QW5kIHRoZSBjb250cm9sbGVycyBiZWZvcmUgdGhhbiBpbXg3ZCwgdGhlIDFzdCBjb250cm9sbGVy CisJCSAqIGlzIG5vdCBIU0lDIGNvbnRyb2xsZXIuCisJCSAqLworCQlvZmZzZXQgPSAwOworCX0g ZWxzZSB7CisJCWRldl9lcnIoZGF0YS0+ZGV2LCAiaW5kZXggaXMgZXJyb3IgZm9yIHVzYm1pc2Nc biIpOworCQlvZmZzZXQgPSAwOworCQlyZXQgPSAtRUlOVkFMOworCX0KKworCXZhbCA9IHJlYWRs KHVzYm1pc2MtPmJhc2UgKyBNWDZfVVNCX0hTSUNfQ1RSTF9PRkZTRVQgKyBvZmZzZXQpOworCWlm ICghKHZhbCAmIE1YNl9CTV9IU0lDX0RFVl9DT05OKSkKKwkJd3JpdGVsKHZhbCB8IE1YNl9CTV9I U0lDX0RFVl9DT05OLAorCQkJdXNibWlzYy0+YmFzZSArIE1YNl9VU0JfSFNJQ19DVFJMX09GRlNF VCArIG9mZnNldCk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdXNibWlzYy0+bG9jaywgZmxh Z3MpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCB1c2JtaXNjX2lteDZfaHNpY19z ZXRfY2xrKHN0cnVjdCBpbXhfdXNibWlzY19kYXRhICpkYXRhLCBib29sIG9uKQoreworCXVuc2ln bmVkIGxvbmcgZmxhZ3M7CisJdTMyIHZhbCwgb2Zmc2V0OworCXN0cnVjdCBpbXhfdXNibWlzYyAq dXNibWlzYyA9IGRldl9nZXRfZHJ2ZGF0YShkYXRhLT5kZXYpOworCWludCByZXQgPSAwOworCisJ c3Bpbl9sb2NrX2lycXNhdmUoJnVzYm1pc2MtPmxvY2ssIGZsYWdzKTsKKwlpZiAoZGF0YS0+aW5k ZXggPT0gMiB8fCBkYXRhLT5pbmRleCA9PSAzKSB7CisJCW9mZnNldCA9IChkYXRhLT5pbmRleCAt IDIpICogNDsKKwl9IGVsc2UgaWYgKGRhdGEtPmluZGV4ID09IDApIHsKKwkJb2Zmc2V0ID0gMDsK Kwl9IGVsc2UgeworCQlkZXZfZXJyKGRhdGEtPmRldiwgImluZGV4IGlzIGVycm9yIGZvciB1c2Jt aXNjXG4iKTsKKwkJb2Zmc2V0ID0gMDsKKwkJcmV0ID0gLUVJTlZBTDsKKwl9CisKKwl2YWwgPSBy ZWFkbCh1c2JtaXNjLT5iYXNlICsgTVg2X1VTQl9IU0lDX0NUUkxfT0ZGU0VUICsgb2Zmc2V0KTsK Kwl2YWwgfD0gTVg2X0JNX0hTSUNfRU4gfCBNWDZfQk1fSFNJQ19DTEtfT047CisJaWYgKG9uKQor CQl2YWwgfD0gTVg2X0JNX0hTSUNfQ0xLX09OOworCWVsc2UKKwkJdmFsICY9IH5NWDZfQk1fSFNJ Q19DTEtfT047CisJd3JpdGVsKHZhbCwgdXNibWlzYy0+YmFzZSArIE1YNl9VU0JfSFNJQ19DVFJM X09GRlNFVCArIG9mZnNldCk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdXNibWlzYy0+bG9j aywgZmxhZ3MpOworCisJcmV0dXJuIDA7Cit9CisKKwogc3RhdGljIGludCB1c2JtaXNjX2lteDZz eF9pbml0KHN0cnVjdCBpbXhfdXNibWlzY19kYXRhICpkYXRhKQogewogCXZvaWQgX19pb21lbSAq cmVnID0gTlVMTDsKQEAgLTM4NSw2ICs0NzcsMTMgQEAgc3RhdGljIGludCB1c2JtaXNjX2lteDZz eF9pbml0KHN0cnVjdCBpbXhfdXNibWlzY19kYXRhICpkYXRhKQogCQlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZ1c2JtaXNjLT5sb2NrLCBmbGFncyk7CiAJfQogCisJLyogRm9yIEhTSUMgY29udHJv bGxlciAqLworCWlmIChkYXRhLT5oc2ljKSB7CisJCXZhbCA9IHJlYWRsKHVzYm1pc2MtPmJhc2Ug KyBNWDZfVVNCX0hTSUNfQ1RSTF9PRkZTRVQpOworCQl2YWwgfD0gTVg2U1hfQk1fSFNJQ19BVVRP X1JFU1VNRTsKKwkJd3JpdGVsKHZhbCwgdXNibWlzYy0+YmFzZSArIE1YNl9VU0JfSFNJQ19DVFJM X09GRlNFVCk7CisJfQorCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTQ1NCw2ICs1NTMsNyBAQCBzdGF0 aWMgaW50IHVzYm1pc2NfaW14N2RfaW5pdChzdHJ1Y3QgaW14X3VzYm1pc2NfZGF0YSAqZGF0YSkK IAlyZWcgJj0gfk1YN0RfVVNCX1ZCVVNfV0FLRVVQX1NPVVJDRV9NQVNLOwogCXdyaXRlbChyZWcg fCBNWDdEX1VTQl9WQlVTX1dBS0VVUF9TT1VSQ0VfQlZBTElELAogCQkgdXNibWlzYy0+YmFzZSAr IE1YN0RfVVNCTkNfVVNCX0NUUkwyKTsKKwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVzYm1p c2MtPmxvY2ssIGZsYWdzKTsKIAogCXVzYm1pc2NfaW14N2Rfc2V0X3dha2V1cChkYXRhLCBmYWxz ZSk7CkBAIC00ODEsNiArNTgxLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JtaXNjX29wcyBp bXg1M191c2JtaXNjX29wcyA9IHsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNibWlzY19vcHMgaW14 NnFfdXNibWlzY19vcHMgPSB7CiAJLnNldF93YWtldXAgPSB1c2JtaXNjX2lteDZxX3NldF93YWtl dXAsCiAJLmluaXQgPSB1c2JtaXNjX2lteDZxX2luaXQsCisJLmhzaWNfc2V0X2Nvbm5lY3QgPSB1 c2JtaXNjX2lteDZfaHNpY19zZXRfY29ubmVjdCwKKwkuaHNpY19zZXRfY2xrICAgPSB1c2JtaXNj X2lteDZfaHNpY19zZXRfY2xrLAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JtaXNjX29w cyB2ZjYxMF91c2JtaXNjX29wcyA9IHsKQEAgLTQ5MCw2ICs1OTIsOCBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IHVzYm1pc2Nfb3BzIHZmNjEwX3VzYm1pc2Nfb3BzID0gewogc3RhdGljIGNvbnN0IHN0 cnVjdCB1c2JtaXNjX29wcyBpbXg2c3hfdXNibWlzY19vcHMgPSB7CiAJLnNldF93YWtldXAgPSB1 c2JtaXNjX2lteDZxX3NldF93YWtldXAsCiAJLmluaXQgPSB1c2JtaXNjX2lteDZzeF9pbml0LAor CS5oc2ljX3NldF9jb25uZWN0ID0gdXNibWlzY19pbXg2X2hzaWNfc2V0X2Nvbm5lY3QsCisJLmhz aWNfc2V0X2NsayA9IHVzYm1pc2NfaW14Nl9oc2ljX3NldF9jbGssCiB9OwogCiBzdGF0aWMgY29u c3Qgc3RydWN0IHVzYm1pc2Nfb3BzIGlteDdkX3VzYm1pc2Nfb3BzID0gewpAQCAtNTQ2LDYgKzY1 MCwzMyBAQCBpbnQgaW14X3VzYm1pc2Nfc2V0X3dha2V1cChzdHJ1Y3QgaW14X3VzYm1pc2NfZGF0 YSAqZGF0YSwgYm9vbCBlbmFibGVkKQogfQogRVhQT1JUX1NZTUJPTF9HUEwoaW14X3VzYm1pc2Nf c2V0X3dha2V1cCk7CiAKK2ludCBpbXhfdXNibWlzY19oc2ljX3NldF9jb25uZWN0KHN0cnVjdCBp bXhfdXNibWlzY19kYXRhICpkYXRhKQoreworCXN0cnVjdCBpbXhfdXNibWlzYyAqdXNibWlzYzsK KworCWlmICghZGF0YSkKKwkJcmV0dXJuIDA7CisKKwl1c2JtaXNjID0gZGV2X2dldF9kcnZkYXRh KGRhdGEtPmRldik7CisJaWYgKCF1c2JtaXNjLT5vcHMtPmhzaWNfc2V0X2Nvbm5lY3QgfHwgIWRh dGEtPmhzaWMpCisJCXJldHVybiAwOworCXJldHVybiB1c2JtaXNjLT5vcHMtPmhzaWNfc2V0X2Nv bm5lY3QoZGF0YSk7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChpbXhfdXNibWlzY19oc2ljX3NldF9j b25uZWN0KTsKKworaW50IGlteF91c2JtaXNjX2hzaWNfc2V0X2NsayhzdHJ1Y3QgaW14X3VzYm1p c2NfZGF0YSAqZGF0YSwgYm9vbCBvbikKK3sKKwlzdHJ1Y3QgaW14X3VzYm1pc2MgKnVzYm1pc2M7 CisKKwlpZiAoIWRhdGEpCisJCXJldHVybiAwOworCisJdXNibWlzYyA9IGRldl9nZXRfZHJ2ZGF0 YShkYXRhLT5kZXYpOworCWlmICghdXNibWlzYy0+b3BzLT5oc2ljX3NldF9jbGsgfHwgIWRhdGEt PmhzaWMpCisJCXJldHVybiAwOworCXJldHVybiB1c2JtaXNjLT5vcHMtPmhzaWNfc2V0X2Nsayhk YXRhLCBvbik7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChpbXhfdXNibWlzY19oc2ljX3NldF9jbGsp Owogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdXNibWlzY19pbXhfZHRfaWRzW10g PSB7CiAJewogCQkuY29tcGF0aWJsZSA9ICJmc2wsaW14MjUtdXNibWlzYyIsCg==