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: [v5,2/4] usb: chipidea: imx: add HSIC support From: Peter Chen Message-Id: <20181211020624.9433-3-peter.chen@nxp.com> Date: Tue, 11 Dec 2018 02:08:57 +0000 To: "linux-usb@vger.kernel.org" Cc: dl-linux-imx , "robh+dt@kernel.org" , "devicetree@vger.kernel.org" , "frieder.schrempf@exceet.de" , "festevam@gmail.com" , Peter Chen List-ID: VG8gc3VwcG9ydCBpbXggSFNJQywgdGhlcmUgYXJlIHNvbWUgc3BlY2lhbCByZXF1aXJlbWVudDoK LSBUaGUgSFNJQyBwYWQgaXMgMS4ydiwgaXQgbWF5IG5lZWQgdG8gc3VwcGx5IGZyb20gZXh0ZXJu YWwKLSBUaGUgZGF0YS9zdHJvYmUgcGluIG5lZWRzIHRvIGJlIHB1bGxlZCBkb3duIGZpcnN0LCBh bmQgYWZ0ZXIKICBob3N0IG1vZGUgaXMgaW5pdGlhbGl6ZWQsIHRoZSBzdHJvYmUgcGluIG5lZWRz IHRvIGJlIHB1bGxlZCB1cAotIER1cmluZyB0aGUgVVNCIHN1c3BlbmQvcmVzdW1lLCBzcGVjaWFs IHNldHRpbmcgaXMgbmVlZGVkCgpSZXZpZXdlZC1ieTogRnJpZWRlciBTY2hyZW1wZiA8ZnJpZWRl ci5zY2hyZW1wZkBrb250cm9uLmRlPgpUZXN0ZWQtYnk6IEZyaWVkZXIgU2NocmVtcGYgPGZyaWVk ZXIuc2NocmVtcGZAa29udHJvbi5kZT4KU2lnbmVkLW9mZi1ieTogUGV0ZXIgQ2hlbiA8cGV0ZXIu Y2hlbkBueHAuY29tPgotLS0KIGRyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmMgfCAx NDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogZHJpdmVycy91c2IvY2hp cGlkZWEvY2lfaGRyY19pbXguaCB8ICAgOSArKy0KIGRyaXZlcnMvdXNiL2NoaXBpZGVhL3VzYm1p c2NfaW14LmMgfCAxNDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBm aWxlcyBjaGFuZ2VkLCAyNzAgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYyBiL2RyaXZlcnMvdXNiL2No aXBpZGVhL2NpX2hkcmNfaW14LmMKaW5kZXggMDliMzdjMGQwNzVkLi41Njc4MWMzMjlkYjAgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmMKKysrIGIvZHJpdmVy cy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYwpAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUg PGxpbnV4L3VzYi9jaGlwaWRlYS5oPgogI2luY2x1ZGUgPGxpbnV4L3VzYi9vZi5oPgogI2luY2x1 ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L3BpbmN0cmwvY29uc3VtZXIuaD4KIAog I2luY2x1ZGUgImNpLmgiCiAjaW5jbHVkZSAiY2lfaGRyY19pbXguaCIKQEAgLTg1LDYgKzg2LDkg QEAgc3RydWN0IGNpX2hkcmNfaW14X2RhdGEgewogCWJvb2wgc3VwcG9ydHNfcnVudGltZV9wbTsK IAlib29sIG92ZXJyaWRlX3BoeV9jb250cm9sOwogCWJvb2wgaW5fbHBtOworCXN0cnVjdCBwaW5j dHJsICpwaW5jdHJsOworCXN0cnVjdCBwaW5jdHJsX3N0YXRlICpwaW5jdHJsX2hzaWNfYWN0aXZl OworCXN0cnVjdCByZWd1bGF0b3IgKmhzaWNfcGFkX3JlZ3VsYXRvcjsKIAkvKiBTb0MgYmVmb3Jl IGkubXg2IChleGNlcHQgaW14MjMvaW14MjgpIG5lZWRzIHRocmVlIGNsa3MgKi8KIAlib29sIG5l ZWRfdGhyZWVfY2xrczsKIAlzdHJ1Y3QgY2xrICpjbGtfaXBnOwpAQCAtMjQ1LDE5ICsyNDksNDkg QEAgc3RhdGljIHZvaWQgaW14X2Rpc2FibGVfdW5wcmVwYXJlX2Nsa3Moc3RydWN0IGRldmljZSAq ZGV2KQogCX0KIH0KIAorc3RhdGljIGludCBjaV9oZHJjX2lteF9ub3RpZnlfZXZlbnQoc3RydWN0 IGNpX2hkcmMgKmNpLCB1bnNpZ25lZCBpbnQgZXZlbnQpCit7CisJc3RydWN0IGRldmljZSAqZGV2 ID0gY2ktPmRldi0+cGFyZW50OworCXN0cnVjdCBjaV9oZHJjX2lteF9kYXRhICpkYXRhID0gZGV2 X2dldF9kcnZkYXRhKGRldik7CisJaW50IHJldCA9IDA7CisKKwlzd2l0Y2ggKGV2ZW50KSB7CisJ Y2FzZSBDSV9IRFJDX0lNWF9IU0lDX0FDVElWRV9FVkVOVDoKKwkJcmV0ID0gcGluY3RybF9zZWxl Y3Rfc3RhdGUoZGF0YS0+cGluY3RybCwKKwkJCQlkYXRhLT5waW5jdHJsX2hzaWNfYWN0aXZlKTsK KwkJaWYgKHJldCkKKwkJCWRldl9lcnIoZGV2LCAiaHNpY19hY3RpdmUgc2VsZWN0IGZhaWxlZCwg ZXJyPSVkXG4iLAorCQkJCXJldCk7CisJCWJyZWFrOworCWNhc2UgQ0lfSERSQ19JTVhfSFNJQ19T VVNQRU5EX0VWRU5UOgorCQlyZXQgPSBpbXhfdXNibWlzY19oc2ljX3NldF9jb25uZWN0KGRhdGEt PnVzYm1pc2NfZGF0YSk7CisJCWlmIChyZXQpCisJCQlkZXZfZXJyKGRldiwKKwkJCQkiaHNpY19z ZXRfY29ubmVjdCBmYWlsZWQsIGVycj0lZFxuIiwgcmV0KTsKKwkJYnJlYWs7CisJZGVmYXVsdDoK KwkJYnJlYWs7CisJfQorCisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGludCBjaV9oZHJjX2lt eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogewogCXN0cnVjdCBjaV9oZHJj X2lteF9kYXRhICpkYXRhOwogCXN0cnVjdCBjaV9oZHJjX3BsYXRmb3JtX2RhdGEgcGRhdGEgPSB7 CiAJCS5uYW1lCQk9IGRldl9uYW1lKCZwZGV2LT5kZXYpLAogCQkuY2Fwb2Zmc2V0CT0gREVGX0NB UE9GRlNFVCwKKwkJLm5vdGlmeV9ldmVudAk9IGNpX2hkcmNfaW14X25vdGlmeV9ldmVudCwKIAl9 OwogCWludCByZXQ7CiAJY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqb2ZfaWQ7CiAJY29uc3Qg c3RydWN0IGNpX2hkcmNfaW14X3BsYXRmb3JtX2ZsYWcgKmlteF9wbGF0Zm9ybV9mbGFnOwogCXN0 cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwZGV2LT5kZXYub2Zfbm9kZTsKKwlzdHJ1Y3QgZGV2aWNl ICpkZXYgPSAmcGRldi0+ZGV2OworCXN0cnVjdCBwaW5jdHJsX3N0YXRlICpwaW5jdHJsX2hzaWNf aWRsZTsKIAotCW9mX2lkID0gb2ZfbWF0Y2hfZGV2aWNlKGNpX2hkcmNfaW14X2R0X2lkcywgJnBk ZXYtPmRldik7CisJb2ZfaWQgPSBvZl9tYXRjaF9kZXZpY2UoY2lfaGRyY19pbXhfZHRfaWRzLCBk ZXYpOwogCWlmICghb2ZfaWQpCiAJCXJldHVybiAtRU5PREVWOwogCkBAIC0yNjgsMTkgKzMwMiw3 MyBAQCBzdGF0aWMgaW50IGNpX2hkcmNfaW14X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwg ZGF0YSk7Ci0JZGF0YS0+dXNibWlzY19kYXRhID0gdXNibWlzY19nZXRfaW5pdF9kYXRhKCZwZGV2 LT5kZXYpOworCWRhdGEtPnVzYm1pc2NfZGF0YSA9IHVzYm1pc2NfZ2V0X2luaXRfZGF0YShkZXYp OwogCWlmIChJU19FUlIoZGF0YS0+dXNibWlzY19kYXRhKSkKIAkJcmV0dXJuIFBUUl9FUlIoZGF0 YS0+dXNibWlzY19kYXRhKTsKIAotCXJldCA9IGlteF9nZXRfY2xrcygmcGRldi0+ZGV2KTsKKwlp ZiAob2ZfdXNiX2dldF9waHlfbW9kZShkZXYtPm9mX25vZGUpID09IFVTQlBIWV9JTlRFUkZBQ0Vf TU9ERV9IU0lDKSB7CisJCXBkYXRhLmZsYWdzIHw9IENJX0hEUkNfSU1YX0lTX0hTSUM7CisJCWRh dGEtPnVzYm1pc2NfZGF0YS0+aHNpYyA9IDE7CisJCWRhdGEtPnBpbmN0cmwgPSBkZXZtX3BpbmN0 cmxfZ2V0KGRldik7CisJCWlmIChJU19FUlIoZGF0YS0+cGluY3RybCkpIHsKKwkJCWRldl9lcnIo ZGV2LCAicGluY3RybCBnZXQgZmFpbGVkLCBlcnI9JWxkXG4iLAorCQkJCQlQVFJfRVJSKGRhdGEt PnBpbmN0cmwpKTsKKwkJCXJldHVybiBQVFJfRVJSKGRhdGEtPnBpbmN0cmwpOworCQl9CisKKwkJ cGluY3RybF9oc2ljX2lkbGUgPSBwaW5jdHJsX2xvb2t1cF9zdGF0ZShkYXRhLT5waW5jdHJsLCAi aWRsZSIpOworCQlpZiAoSVNfRVJSKHBpbmN0cmxfaHNpY19pZGxlKSkgeworCQkJZGV2X2Vycihk ZXYsCisJCQkJInBpbmN0cmxfaHNpY19pZGxlIGxvb2t1cCBmYWlsZWQsIGVycj0lbGRcbiIsCisJ CQkJCVBUUl9FUlIocGluY3RybF9oc2ljX2lkbGUpKTsKKwkJCXJldHVybiBQVFJfRVJSKHBpbmN0 cmxfaHNpY19pZGxlKTsKKwkJfQorCisJCXJldCA9IHBpbmN0cmxfc2VsZWN0X3N0YXRlKGRhdGEt PnBpbmN0cmwsIHBpbmN0cmxfaHNpY19pZGxlKTsKKwkJaWYgKHJldCkgeworCQkJZGV2X2Vycihk ZXYsICJoc2ljX2lkbGUgc2VsZWN0IGZhaWxlZCwgZXJyPSVkXG4iLCByZXQpOworCQkJcmV0dXJu IHJldDsKKwkJfQorCisJCWRhdGEtPnBpbmN0cmxfaHNpY19hY3RpdmUgPSBwaW5jdHJsX2xvb2t1 cF9zdGF0ZShkYXRhLT5waW5jdHJsLAorCQkJCQkJCQkiYWN0aXZlIik7CisJCWlmIChJU19FUlIo ZGF0YS0+cGluY3RybF9oc2ljX2FjdGl2ZSkpIHsKKwkJCWRldl9lcnIoZGV2LAorCQkJCSJwaW5j dHJsX2hzaWNfYWN0aXZlIGxvb2t1cCBmYWlsZWQsIGVycj0lbGRcbiIsCisJCQkJCVBUUl9FUlIo ZGF0YS0+cGluY3RybF9oc2ljX2FjdGl2ZSkpOworCQkJcmV0dXJuIFBUUl9FUlIoZGF0YS0+cGlu Y3RybF9oc2ljX2FjdGl2ZSk7CisJCX0KKworCQlkYXRhLT5oc2ljX3BhZF9yZWd1bGF0b3IgPSBk ZXZtX3JlZ3VsYXRvcl9nZXQoZGV2LCAiaHNpYyIpOworCQlpZiAoUFRSX0VSUihkYXRhLT5oc2lj X3BhZF9yZWd1bGF0b3IpID09IC1FUFJPQkVfREVGRVIpIHsKKwkJCXJldHVybiAtRVBST0JFX0RF RkVSOworCQl9IGVsc2UgaWYgKFBUUl9FUlIoZGF0YS0+aHNpY19wYWRfcmVndWxhdG9yKSA9PSAt RU5PREVWKSB7CisJCQkvKiBubyBwYWQgcmVndWFsYXRvciBpcyBuZWVkZWQgKi8KKwkJCWRhdGEt PmhzaWNfcGFkX3JlZ3VsYXRvciA9IE5VTEw7CisJCX0gZWxzZSBpZiAoSVNfRVJSKGRhdGEtPmhz aWNfcGFkX3JlZ3VsYXRvcikpIHsKKwkJCWRldl9lcnIoZGV2LCAiR2V0IEhTSUMgcGFkIHJlZ3Vs YXRvciBlcnJvcjogJWxkXG4iLAorCQkJCQlQVFJfRVJSKGRhdGEtPmhzaWNfcGFkX3JlZ3VsYXRv cikpOworCQkJcmV0dXJuIFBUUl9FUlIoZGF0YS0+aHNpY19wYWRfcmVndWxhdG9yKTsKKwkJfQor CisJCWlmIChkYXRhLT5oc2ljX3BhZF9yZWd1bGF0b3IpIHsKKwkJCXJldCA9IHJlZ3VsYXRvcl9l bmFibGUoZGF0YS0+aHNpY19wYWRfcmVndWxhdG9yKTsKKwkJCWlmIChyZXQpIHsKKwkJCQlkZXZf ZXJyKGRldiwKKwkJCQkJIkZhaWxlZCB0byBlbmFibGUgSFNJQyBwYWQgcmVndWxhdG9yXG4iKTsK KwkJCQlyZXR1cm4gcmV0OworCQkJfQorCQl9CisJfQorCXJldCA9IGlteF9nZXRfY2xrcyhkZXYp OwogCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJCWdvdG8gZGlzYWJsZV9oc2ljX3JlZ3VsYXRv cjsKIAotCXJldCA9IGlteF9wcmVwYXJlX2VuYWJsZV9jbGtzKCZwZGV2LT5kZXYpOworCXJldCA9 IGlteF9wcmVwYXJlX2VuYWJsZV9jbGtzKGRldik7CiAJaWYgKHJldCkKLQkJcmV0dXJuIHJldDsK KwkJZ290byBkaXNhYmxlX2hzaWNfcmVndWxhdG9yOwogCi0JZGF0YS0+cGh5ID0gZGV2bV91c2Jf Z2V0X3BoeV9ieV9waGFuZGxlKCZwZGV2LT5kZXYsICJmc2wsdXNicGh5IiwgMCk7CisJZGF0YS0+ cGh5ID0gZGV2bV91c2JfZ2V0X3BoeV9ieV9waGFuZGxlKGRldiwgImZzbCx1c2JwaHkiLCAwKTsK IAlpZiAoSVNfRVJSKGRhdGEtPnBoeSkpIHsKIAkJcmV0ID0gUFRSX0VSUihkYXRhLT5waHkpOwog CQkvKiBSZXR1cm4gLUVJTlZBTCBpZiBubyB1c2JwaHkgaXMgYXZhaWxhYmxlICovCkBAIC0zMDUs NDAgKzM5Myw0MyBAQCBzdGF0aWMgaW50IGNpX2hkcmNfaW14X3Byb2JlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpCiAKIAlyZXQgPSBpbXhfdXNibWlzY19pbml0KGRhdGEtPnVzYm1pc2Nf ZGF0YSk7CiAJaWYgKHJldCkgewotCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJ1c2JtaXNjIGluaXQg ZmFpbGVkLCByZXQ9JWRcbiIsIHJldCk7CisJCWRldl9lcnIoZGV2LCAidXNibWlzYyBpbml0IGZh aWxlZCwgcmV0PSVkXG4iLCByZXQpOwogCQlnb3RvIGVycl9jbGs7CiAJfQogCi0JZGF0YS0+Y2lf cGRldiA9IGNpX2hkcmNfYWRkX2RldmljZSgmcGRldi0+ZGV2LAorCWRhdGEtPmNpX3BkZXYgPSBj aV9oZHJjX2FkZF9kZXZpY2UoZGV2LAogCQkJCXBkZXYtPnJlc291cmNlLCBwZGV2LT5udW1fcmVz b3VyY2VzLAogCQkJCSZwZGF0YSk7CiAJaWYgKElTX0VSUihkYXRhLT5jaV9wZGV2KSkgewogCQly ZXQgPSBQVFJfRVJSKGRhdGEtPmNpX3BkZXYpOwogCQlpZiAocmV0ICE9IC1FUFJPQkVfREVGRVIp Ci0JCQlkZXZfZXJyKCZwZGV2LT5kZXYsCi0JCQkJImNpX2hkcmNfYWRkX2RldmljZSBmYWlsZWQs IGVycj0lZFxuIiwgcmV0KTsKKwkJCWRldl9lcnIoZGV2LCAiY2lfaGRyY19hZGRfZGV2aWNlIGZh aWxlZCwgZXJyPSVkXG4iLAorCQkJCQlyZXQpOwogCQlnb3RvIGVycl9jbGs7CiAJfQogCiAJcmV0 ID0gaW14X3VzYm1pc2NfaW5pdF9wb3N0KGRhdGEtPnVzYm1pc2NfZGF0YSk7CiAJaWYgKHJldCkg ewotCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJ1c2JtaXNjIHBvc3QgZmFpbGVkLCByZXQ9JWRcbiIs IHJldCk7CisJCWRldl9lcnIoZGV2LCAidXNibWlzYyBwb3N0IGZhaWxlZCwgcmV0PSVkXG4iLCBy ZXQpOwogCQlnb3RvIGRpc2FibGVfZGV2aWNlOwogCX0KIAogCWlmIChkYXRhLT5zdXBwb3J0c19y dW50aW1lX3BtKSB7Ci0JCXBtX3J1bnRpbWVfc2V0X2FjdGl2ZSgmcGRldi0+ZGV2KTsKLQkJcG1f cnVudGltZV9lbmFibGUoJnBkZXYtPmRldik7CisJCXBtX3J1bnRpbWVfc2V0X2FjdGl2ZShkZXYp OworCQlwbV9ydW50aW1lX2VuYWJsZShkZXYpOwogCX0KIAotCWRldmljZV9zZXRfd2FrZXVwX2Nh cGFibGUoJnBkZXYtPmRldiwgdHJ1ZSk7CisJZGV2aWNlX3NldF93YWtldXBfY2FwYWJsZShkZXYs IHRydWUpOwogCiAJcmV0dXJuIDA7CiAKIGRpc2FibGVfZGV2aWNlOgogCWNpX2hkcmNfcmVtb3Zl X2RldmljZShkYXRhLT5jaV9wZGV2KTsKIGVycl9jbGs6Ci0JaW14X2Rpc2FibGVfdW5wcmVwYXJl X2Nsa3MoJnBkZXYtPmRldik7CisJaW14X2Rpc2FibGVfdW5wcmVwYXJlX2Nsa3MoZGV2KTsKK2Rp c2FibGVfaHNpY19yZWd1bGF0b3I6CisJaWYgKGRhdGEtPmhzaWNfcGFkX3JlZ3VsYXRvcikKKwkJ cmV0ID0gcmVndWxhdG9yX2Rpc2FibGUoZGF0YS0+aHNpY19wYWRfcmVndWxhdG9yKTsKIAlyZXR1 cm4gcmV0OwogfQogCkBAIC0zNTUsNiArNDQ2LDggQEAgc3RhdGljIGludCBjaV9oZHJjX2lteF9y ZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlpZiAoZGF0YS0+b3ZlcnJpZGVf cGh5X2NvbnRyb2wpCiAJCXVzYl9waHlfc2h1dGRvd24oZGF0YS0+cGh5KTsKIAlpbXhfZGlzYWJs ZV91bnByZXBhcmVfY2xrcygmcGRldi0+ZGV2KTsKKwlpZiAoZGF0YS0+aHNpY19wYWRfcmVndWxh dG9yKQorCQlyZWd1bGF0b3JfZGlzYWJsZShkYXRhLT5oc2ljX3BhZF9yZWd1bGF0b3IpOwogCiAJ cmV0dXJuIDA7CiB9CkBAIC0zNjcsOSArNDYwLDE2IEBAIHN0YXRpYyB2b2lkIGNpX2hkcmNfaW14 X3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiBzdGF0aWMgaW50IF9fbWF5 YmVfdW51c2VkIGlteF9jb250cm9sbGVyX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQogewog CXN0cnVjdCBjaV9oZHJjX2lteF9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJ aW50IHJldCA9IDA7CiAKIAlkZXZfZGJnKGRldiwgImF0ICVzXG4iLCBfX2Z1bmNfXyk7CiAKKwly ZXQgPSBpbXhfdXNibWlzY19oc2ljX3NldF9jbGsoZGF0YS0+dXNibWlzY19kYXRhLCBmYWxzZSk7 CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRldiwgInVzYm1pc2MgaHNpY19zZXRfY2xrIGZhaWxl ZCwgcmV0PSVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKwogCWlteF9kaXNhYmxlX3Vu cHJlcGFyZV9jbGtzKGRldik7CiAJZGF0YS0+aW5fbHBtID0gdHJ1ZTsKIApAQCAtNDAwLDggKzUw MCwxNiBAQCBzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGlteF9jb250cm9sbGVyX3Jlc3VtZShz dHJ1Y3QgZGV2aWNlICpkZXYpCiAJCWdvdG8gY2xrX2Rpc2FibGU7CiAJfQogCisJcmV0ID0gaW14 X3VzYm1pc2NfaHNpY19zZXRfY2xrKGRhdGEtPnVzYm1pc2NfZGF0YSwgdHJ1ZSk7CisJaWYgKHJl dCkgeworCQlkZXZfZXJyKGRldiwgInVzYm1pc2MgaHNpY19zZXRfY2xrIGZhaWxlZCwgcmV0PSVk XG4iLCByZXQpOworCQlnb3RvIGhzaWNfc2V0X2Nsa19mYWlsOworCX0KKwogCXJldHVybiAwOwog Citoc2ljX3NldF9jbGtfZmFpbDoKKwlpbXhfdXNibWlzY19zZXRfd2FrZXVwKGRhdGEtPnVzYm1p c2NfZGF0YSwgdHJ1ZSk7CiBjbGtfZGlzYWJsZToKIAlpbXhfZGlzYWJsZV91bnByZXBhcmVfY2xr cyhkZXYpOwogCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9j aV9oZHJjX2lteC5oIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguaAppbmRleCAy MDQyNzVmNDc1NzMuLmZjZWNhYjQ3ODkzNCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY2hpcGlk ZWEvY2lfaGRyY19pbXguaAorKysgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5o CkBAIC0xNCwxMCArMTQsMTMgQEAgc3RydWN0IGlteF91c2JtaXNjX2RhdGEgewogCXVuc2lnbmVk IGludCBvY19wb2xhcml0eToxOyAvKiBvdmVyIGN1cnJlbnQgcG9sYXJpdHkgaWYgb2MgZW5hYmxl ZCAqLwogCXVuc2lnbmVkIGludCBldmRvOjE7IC8qIHNldCBleHRlcm5hbCB2YnVzIGRpdmlkZXIg b3B0aW9uICovCiAJdW5zaWduZWQgaW50IHVscGk6MTsgLyogY29ubmVjdGVkIHRvIGFuIFVMUEkg cGh5ICovCisJdW5zaWduZWQgaW50IGhzaWM6MTsgLyogSFNJQyBjb250cm9sbGxlciAqLwogfTsK IAotaW50IGlteF91c2JtaXNjX2luaXQoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKik7Ci1pbnQg aW14X3VzYm1pc2NfaW5pdF9wb3N0KHN0cnVjdCBpbXhfdXNibWlzY19kYXRhICopOwotaW50IGlt eF91c2JtaXNjX3NldF93YWtldXAoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKiwgYm9vbCk7Citp bnQgaW14X3VzYm1pc2NfaW5pdChzdHJ1Y3QgaW14X3VzYm1pc2NfZGF0YSAqZGF0YSk7CitpbnQg aW14X3VzYm1pc2NfaW5pdF9wb3N0KHN0cnVjdCBpbXhfdXNibWlzY19kYXRhICpkYXRhKTsKK2lu dCBpbXhfdXNibWlzY19zZXRfd2FrZXVwKHN0cnVjdCBpbXhfdXNibWlzY19kYXRhICpkYXRhLCBi b29sIGVuYWJsZWQpOworaW50IGlteF91c2JtaXNjX2hzaWNfc2V0X2Nvbm5lY3Qoc3RydWN0IGlt eF91c2JtaXNjX2RhdGEgKmRhdGEpOworaW50IGlteF91c2JtaXNjX2hzaWNfc2V0X2NsayhzdHJ1 Y3QgaW14X3VzYm1pc2NfZGF0YSAqZGF0YSwgYm9vbCBvbik7CiAKICNlbmRpZiAvKiBfX0RSSVZF Ul9VU0JfQ0hJUElERUFfQ0lfSERSQ19JTVhfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Iv Y2hpcGlkZWEvdXNibWlzY19pbXguYyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL3VzYm1pc2NfaW14 LmMKaW5kZXggZGVmODBmZjU0N2U0Li40M2ExNWE2ZTg2ZjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv dXNiL2NoaXBpZGVhL3VzYm1pc2NfaW14LmMKKysrIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvdXNi bWlzY19pbXguYwpAQCAtNjQsMTAgKzY0LDIyIEBACiAjZGVmaW5lIE1YNl9CTV9PVkVSX0NVUl9E SVMJCUJJVCg3KQogI2RlZmluZSBNWDZfQk1fT1ZFUl9DVVJfUE9MQVJJVFkJQklUKDgpCiAjZGVm aW5lIE1YNl9CTV9XQUtFVVBfRU5BQkxFCQlCSVQoMTApCisjZGVmaW5lIE1YNl9CTV9VVE1JX09O X0NMT0NLCQlCSVQoMTMpCiAjZGVmaW5lIE1YNl9CTV9JRF9XQUtFVVAJCUJJVCgxNikKICNkZWZp bmUgTVg2X0JNX1ZCVVNfV0FLRVVQCQlCSVQoMTcpCiAjZGVmaW5lIE1YNlNYX0JNX0RQRE1fV0FL RVVQX0VOCQlCSVQoMjkpCiAjZGVmaW5lIE1YNl9CTV9XQUtFVVBfSU5UUgkJQklUKDMxKQorCisj ZGVmaW5lIE1YNl9VU0JfSFNJQ19DVFJMX09GRlNFVAkweDEwCisvKiBTZW5kIHJlc3VtZSBzaWdu YWwgd2l0aG91dCA0ODBNaHogUEhZIGNsb2NrICovCisjZGVmaW5lIE1YNlNYX0JNX0hTSUNfQVVU T19SRVNVTUUJQklUKDIzKQorLyogc2V0IGJlZm9yZSBwb3J0c2Muc3VzcGVuZE0gPSAxICovCisj ZGVmaW5lIE1YNl9CTV9IU0lDX0RFVl9DT05OCQlCSVQoMjEpCisvKiBIU0lDIGVuYWJsZSAqLwor I2RlZmluZSBNWDZfQk1fSFNJQ19FTgkJCUJJVCgxMikKKy8qIEZvcmNlIEhTSUMgbW9kdWxlIDQ4 ME0gY2xvY2sgb24sIGV2ZW4gd2hlbiBpbiBIb3N0IGlzIGluIHN1c3BlbmQgbW9kZSAqLworI2Rl ZmluZSBNWDZfQk1fSFNJQ19DTEtfT04JCUJJVCgxMSkKKwogI2RlZmluZSBNWDZfVVNCX09URzFf UEhZX0NUUkwJCTB4MTgKIC8qIEZvciBpbXg2ZHFsLCBpdCBpcyBob3N0LW9ubHkgY29udHJvbGxl ciwgZm9yIGxhdGVyIGlteDYsIGl0IGlzIG90ZydzICovCiAjZGVmaW5lIE1YNl9VU0JfT1RHMl9Q SFlfQ1RSTAkJMHgxYwpAQCAtOTQsNiArMTA2LDEwIEBAIHN0cnVjdCB1c2JtaXNjX29wcyB7CiAJ aW50ICgqcG9zdCkoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKmRhdGEpOwogCS8qIEl0J3MgY2Fs bGVkIHdoZW4gd2UgbmVlZCB0byBlbmFibGUvZGlzYWJsZSB1c2Igd2FrZXVwICovCiAJaW50ICgq c2V0X3dha2V1cCkoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKmRhdGEsIGJvb2wgZW5hYmxlZCk7 CisJLyogSXQncyBjYWxsZWQgYmVmb3JlIHNldHRpbmcgcG9ydHNjLnN1c3BlbmRNICovCisJaW50 ICgqaHNpY19zZXRfY29ubmVjdCkoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKmRhdGEpOworCS8q IEl0J3MgY2FsbGVkIGR1cmluZyBzdXNwZW5kL3Jlc3VtZSAqLworCWludCAoKmhzaWNfc2V0X2Ns aykoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKmRhdGEsIGJvb2wgZW5hYmxlZCk7CiB9OwogCiBz dHJ1Y3QgaW14X3VzYm1pc2MgewpAQCAtMzUzLDYgKzM2OSwxOCBAQCBzdGF0aWMgaW50IHVzYm1p c2NfaW14NnFfaW5pdChzdHJ1Y3QgaW14X3VzYm1pc2NfZGF0YSAqZGF0YSkKIAl3cml0ZWwocmVn IHwgTVg2X0JNX05PTl9CVVJTVF9TRVRUSU5HLAogCQkJdXNibWlzYy0+YmFzZSArIGRhdGEtPmlu ZGV4ICogNCk7CiAKKwkvKiBGb3IgSFNJQyBjb250cm9sbGVyICovCisJaWYgKGRhdGEtPmhzaWMp IHsKKwkJcmVnID0gcmVhZGwodXNibWlzYy0+YmFzZSArIGRhdGEtPmluZGV4ICogNCk7CisJCXdy aXRlbChyZWcgfCBNWDZfQk1fVVRNSV9PTl9DTE9DSywKKwkJCXVzYm1pc2MtPmJhc2UgKyBkYXRh LT5pbmRleCAqIDQpOworCQlyZWcgPSByZWFkbCh1c2JtaXNjLT5iYXNlICsgTVg2X1VTQl9IU0lD X0NUUkxfT0ZGU0VUCisJCQkrIChkYXRhLT5pbmRleCAtIDIpICogNCk7CisJCXJlZyB8PSBNWDZf Qk1fSFNJQ19FTiB8IE1YNl9CTV9IU0lDX0NMS19PTjsKKwkJd3JpdGVsKHJlZywgdXNibWlzYy0+ YmFzZSArIE1YNl9VU0JfSFNJQ19DVFJMX09GRlNFVAorCQkJKyAoZGF0YS0+aW5kZXggLSAyKSAq IDQpOworCX0KKwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVzYm1pc2MtPmxvY2ssIGZsYWdz KTsKIAogCXVzYm1pc2NfaW14NnFfc2V0X3dha2V1cChkYXRhLCBmYWxzZSk7CkBAIC0zNjAsNiAr Mzg4LDc5IEBAIHN0YXRpYyBpbnQgdXNibWlzY19pbXg2cV9pbml0KHN0cnVjdCBpbXhfdXNibWlz Y19kYXRhICpkYXRhKQogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IHVzYm1pc2NfaW14Nl9o c2ljX2dldF9yZWdfb2Zmc2V0KHN0cnVjdCBpbXhfdXNibWlzY19kYXRhICpkYXRhKQoreworCWlu dCBvZmZzZXQsIHJldCA9IDA7CisKKwlpZiAoZGF0YS0+aW5kZXggPT0gMiB8fCBkYXRhLT5pbmRl eCA9PSAzKSB7CisJCW9mZnNldCA9IChkYXRhLT5pbmRleCAtIDIpICogNDsKKwl9IGVsc2UgaWYg KGRhdGEtPmluZGV4ID09IDApIHsKKwkJLyoKKwkJICogRm9yIFNvQ3MgbGlrZSBpLk1YN0QgYW5k IGxhdGVyLCBlYWNoIFVTQiBjb250cm9sbGVyIGhhcworCQkgKiBpdHMgb3duIG5vbi1jb3JlIHJl Z2lzdGVyIHJlZ2lvbi4gRm9yIFNvQ3MgYmVmb3JlIGkuTVg3RCwKKwkJICogdGhlIGZpcnN0IHR3 byBVU0IgY29udHJvbGxlcnMgYXJlIG5vbi1IU0lDIGNvbnRyb2xsZXJzLgorCQkgKi8KKwkJb2Zm c2V0ID0gMDsKKwl9IGVsc2UgeworCQlkZXZfZXJyKGRhdGEtPmRldiwgImluZGV4IGlzIGVycm9y IGZvciB1c2JtaXNjXG4iKTsKKwkJcmV0ID0gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gcmV0ID8g cmV0IDogb2Zmc2V0OworfQorCitzdGF0aWMgaW50IHVzYm1pc2NfaW14Nl9oc2ljX3NldF9jb25u ZWN0KHN0cnVjdCBpbXhfdXNibWlzY19kYXRhICpkYXRhKQoreworCXVuc2lnbmVkIGxvbmcgZmxh Z3M7CisJdTMyIHZhbDsKKwlzdHJ1Y3QgaW14X3VzYm1pc2MgKnVzYm1pc2MgPSBkZXZfZ2V0X2Ry dmRhdGEoZGF0YS0+ZGV2KTsKKwlpbnQgb2Zmc2V0OworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnVz Ym1pc2MtPmxvY2ssIGZsYWdzKTsKKwlvZmZzZXQgPSB1c2JtaXNjX2lteDZfaHNpY19nZXRfcmVn X29mZnNldChkYXRhKTsKKwlpZiAob2Zmc2V0IDwgMCkgeworCQlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZ1c2JtaXNjLT5sb2NrLCBmbGFncyk7CisJCXJldHVybiBvZmZzZXQ7CisJfQorCisJdmFs ID0gcmVhZGwodXNibWlzYy0+YmFzZSArIE1YNl9VU0JfSFNJQ19DVFJMX09GRlNFVCArIG9mZnNl dCk7CisJaWYgKCEodmFsICYgTVg2X0JNX0hTSUNfREVWX0NPTk4pKQorCQl3cml0ZWwodmFsIHwg TVg2X0JNX0hTSUNfREVWX0NPTk4sCisJCQl1c2JtaXNjLT5iYXNlICsgTVg2X1VTQl9IU0lDX0NU UkxfT0ZGU0VUICsgb2Zmc2V0KTsKKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVzYm1pc2Mt PmxvY2ssIGZsYWdzKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHVzYm1pc2NfaW14 Nl9oc2ljX3NldF9jbGsoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKmRhdGEsIGJvb2wgb24pCit7 CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwl1MzIgdmFsOworCXN0cnVjdCBpbXhfdXNibWlzYyAq dXNibWlzYyA9IGRldl9nZXRfZHJ2ZGF0YShkYXRhLT5kZXYpOworCWludCBvZmZzZXQ7CisKKwlz cGluX2xvY2tfaXJxc2F2ZSgmdXNibWlzYy0+bG9jaywgZmxhZ3MpOworCW9mZnNldCA9IHVzYm1p c2NfaW14Nl9oc2ljX2dldF9yZWdfb2Zmc2V0KGRhdGEpOworCWlmIChvZmZzZXQgPCAwKSB7CisJ CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVzYm1pc2MtPmxvY2ssIGZsYWdzKTsKKwkJcmV0dXJu IG9mZnNldDsKKwl9CisKKwl2YWwgPSByZWFkbCh1c2JtaXNjLT5iYXNlICsgTVg2X1VTQl9IU0lD X0NUUkxfT0ZGU0VUICsgb2Zmc2V0KTsKKwl2YWwgfD0gTVg2X0JNX0hTSUNfRU4gfCBNWDZfQk1f SFNJQ19DTEtfT047CisJaWYgKG9uKQorCQl2YWwgfD0gTVg2X0JNX0hTSUNfQ0xLX09OOworCWVs c2UKKwkJdmFsICY9IH5NWDZfQk1fSFNJQ19DTEtfT047CisKKwl3cml0ZWwodmFsLCB1c2JtaXNj LT5iYXNlICsgTVg2X1VTQl9IU0lDX0NUUkxfT0ZGU0VUICsgb2Zmc2V0KTsKKwlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZ1c2JtaXNjLT5sb2NrLCBmbGFncyk7CisKKwlyZXR1cm4gMDsKK30KKwor CiBzdGF0aWMgaW50IHVzYm1pc2NfaW14NnN4X2luaXQoc3RydWN0IGlteF91c2JtaXNjX2RhdGEg KmRhdGEpCiB7CiAJdm9pZCBfX2lvbWVtICpyZWcgPSBOVUxMOwpAQCAtMzg1LDYgKzQ4NiwxMyBA QCBzdGF0aWMgaW50IHVzYm1pc2NfaW14NnN4X2luaXQoc3RydWN0IGlteF91c2JtaXNjX2RhdGEg KmRhdGEpCiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVzYm1pc2MtPmxvY2ssIGZsYWdzKTsK IAl9CiAKKwkvKiBGb3IgSFNJQyBjb250cm9sbGVyICovCisJaWYgKGRhdGEtPmhzaWMpIHsKKwkJ dmFsID0gcmVhZGwodXNibWlzYy0+YmFzZSArIE1YNl9VU0JfSFNJQ19DVFJMX09GRlNFVCk7CisJ CXZhbCB8PSBNWDZTWF9CTV9IU0lDX0FVVE9fUkVTVU1FOworCQl3cml0ZWwodmFsLCB1c2JtaXNj LT5iYXNlICsgTVg2X1VTQl9IU0lDX0NUUkxfT0ZGU0VUKTsKKwl9CisKIAlyZXR1cm4gMDsKIH0K IApAQCAtNDU0LDYgKzU2Miw3IEBAIHN0YXRpYyBpbnQgdXNibWlzY19pbXg3ZF9pbml0KHN0cnVj dCBpbXhfdXNibWlzY19kYXRhICpkYXRhKQogCXJlZyAmPSB+TVg3RF9VU0JfVkJVU19XQUtFVVBf U09VUkNFX01BU0s7CiAJd3JpdGVsKHJlZyB8IE1YN0RfVVNCX1ZCVVNfV0FLRVVQX1NPVVJDRV9C VkFMSUQsCiAJCSB1c2JtaXNjLT5iYXNlICsgTVg3RF9VU0JOQ19VU0JfQ1RSTDIpOworCiAJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmdXNibWlzYy0+bG9jaywgZmxhZ3MpOwogCiAJdXNibWlzY19p bXg3ZF9zZXRfd2FrZXVwKGRhdGEsIGZhbHNlKTsKQEAgLTQ4MSw2ICs1OTAsOCBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IHVzYm1pc2Nfb3BzIGlteDUzX3VzYm1pc2Nfb3BzID0gewogc3RhdGljIGNv bnN0IHN0cnVjdCB1c2JtaXNjX29wcyBpbXg2cV91c2JtaXNjX29wcyA9IHsKIAkuc2V0X3dha2V1 cCA9IHVzYm1pc2NfaW14NnFfc2V0X3dha2V1cCwKIAkuaW5pdCA9IHVzYm1pc2NfaW14NnFfaW5p dCwKKwkuaHNpY19zZXRfY29ubmVjdCA9IHVzYm1pc2NfaW14Nl9oc2ljX3NldF9jb25uZWN0LAor CS5oc2ljX3NldF9jbGsgICA9IHVzYm1pc2NfaW14Nl9oc2ljX3NldF9jbGssCiB9OwogCiBzdGF0 aWMgY29uc3Qgc3RydWN0IHVzYm1pc2Nfb3BzIHZmNjEwX3VzYm1pc2Nfb3BzID0gewpAQCAtNDkw LDYgKzYwMSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNibWlzY19vcHMgdmY2MTBfdXNibWlz Y19vcHMgPSB7CiBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYm1pc2Nfb3BzIGlteDZzeF91c2JtaXNj X29wcyA9IHsKIAkuc2V0X3dha2V1cCA9IHVzYm1pc2NfaW14NnFfc2V0X3dha2V1cCwKIAkuaW5p dCA9IHVzYm1pc2NfaW14NnN4X2luaXQsCisJLmhzaWNfc2V0X2Nvbm5lY3QgPSB1c2JtaXNjX2lt eDZfaHNpY19zZXRfY29ubmVjdCwKKwkuaHNpY19zZXRfY2xrID0gdXNibWlzY19pbXg2X2hzaWNf c2V0X2NsaywKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNibWlzY19vcHMgaW14N2RfdXNi bWlzY19vcHMgPSB7CkBAIC01NDYsNiArNjU5LDMzIEBAIGludCBpbXhfdXNibWlzY19zZXRfd2Fr ZXVwKHN0cnVjdCBpbXhfdXNibWlzY19kYXRhICpkYXRhLCBib29sIGVuYWJsZWQpCiB9CiBFWFBP UlRfU1lNQk9MX0dQTChpbXhfdXNibWlzY19zZXRfd2FrZXVwKTsKIAoraW50IGlteF91c2JtaXNj X2hzaWNfc2V0X2Nvbm5lY3Qoc3RydWN0IGlteF91c2JtaXNjX2RhdGEgKmRhdGEpCit7CisJc3Ry dWN0IGlteF91c2JtaXNjICp1c2JtaXNjOworCisJaWYgKCFkYXRhKQorCQlyZXR1cm4gMDsKKwor CXVzYm1pc2MgPSBkZXZfZ2V0X2RydmRhdGEoZGF0YS0+ZGV2KTsKKwlpZiAoIXVzYm1pc2MtPm9w cy0+aHNpY19zZXRfY29ubmVjdCB8fCAhZGF0YS0+aHNpYykKKwkJcmV0dXJuIDA7CisJcmV0dXJu IHVzYm1pc2MtPm9wcy0+aHNpY19zZXRfY29ubmVjdChkYXRhKTsKK30KK0VYUE9SVF9TWU1CT0xf R1BMKGlteF91c2JtaXNjX2hzaWNfc2V0X2Nvbm5lY3QpOworCitpbnQgaW14X3VzYm1pc2NfaHNp Y19zZXRfY2xrKHN0cnVjdCBpbXhfdXNibWlzY19kYXRhICpkYXRhLCBib29sIG9uKQoreworCXN0 cnVjdCBpbXhfdXNibWlzYyAqdXNibWlzYzsKKworCWlmICghZGF0YSkKKwkJcmV0dXJuIDA7CisK Kwl1c2JtaXNjID0gZGV2X2dldF9kcnZkYXRhKGRhdGEtPmRldik7CisJaWYgKCF1c2JtaXNjLT5v cHMtPmhzaWNfc2V0X2NsayB8fCAhZGF0YS0+aHNpYykKKwkJcmV0dXJuIDA7CisJcmV0dXJuIHVz Ym1pc2MtPm9wcy0+aHNpY19zZXRfY2xrKGRhdGEsIG9uKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BM KGlteF91c2JtaXNjX2hzaWNfc2V0X2Nsayk7CiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rldmlj ZV9pZCB1c2JtaXNjX2lteF9kdF9pZHNbXSA9IHsKIAl7CiAJCS5jb21wYXRpYmxlID0gImZzbCxp bXgyNS11c2JtaXNjIiwK