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: [v3] USB: serial: ftdi_sio: Add support for CBUS GPIO From: Loic Poulain Message-Id: <1533377835-22700-1-git-send-email-loic.poulain@linaro.org> Date: Sat, 4 Aug 2018 12:17:15 +0200 To: johan@kernel.org Cc: linux-usb@vger.kernel.org, andy.shevchenko@gmail.com, ajaykuee@gmail.com, daniel.thompson@linaro.org, Loic Poulain List-ID: U29tZSBGVERJIGRldmljZXMgbGlrZSBGVFggb3IgRlQyMzJSIHN1cHBvcnQgQ0JVUyBCaXQgQmFu ZyBtb2RlIG9uIENCVVMKcGlucywgYWxsb3dpbmcgaG9zdCB0byBjb250cm9sIHRoZW0gdmlhIHNp bXBsZSBVU0IgY29udHJvbCB0cmFuc2ZlcnMuClRvIG1ha2UgdXNlIG9mIGEgQ0JVUyBwaW4gaW4g Qml0IEJhbmcgbW9kZSwgdGhlIHBpbiBtdXN0IGJlIGNvbmZpZ3VyZWQKdG8gSS9PIG1vZGUgaW4g dGhlIEZUREkgRUVQUk9NLiBUaGlzIG1vZGUgcGVyZmVjdGx5IGNvZXhpc3RzIHdpdGggcmVndWxh cgpVU0IgdG8gU2VyaWFsIGZ1bmN0aW9uLgoKSW4gdGhpcyBpbXBsZW1lbnRhdGlvbiwgYSBHUElP IGNvbnRyb2xsZXIgaXMgcmVnaXN0ZXJlZCBvbiBGVERJIHByb2JlCmlmIGF0IGxlYXN0IG9uZSBD QlVTIHBpbiBpcyBjb25maWd1cmVkIGZvciBJL08gbW9kZS4gRm9yIG5vdywgb25seQpGVFggZGV2 aWNlcyBhcmUgc3VwcG9ydGVkLgoKVGhpcyBwYXRjaCBpcyBiYXNlZCBvbiBwcmV2aW91cyBTdGVm YW4gQWduZXIgaW1wbGVtZW50YXRpb24gdGVudGF0aXZlCm9uIExLTUwgWzFdLgoKWzFdIE1lc3Nh Z2UtSWQ6IDE0MzQ4MzgzNzctODA0Mi0xLWdpdC1zZW5kLWVtYWlsLXN0ZWZhbkBhZ25lci5jaAoK U2lnbmVkLW9mZi1ieTogTG9pYyBQb3VsYWluIDxsb2ljLnBvdWxhaW5AbGluYXJvLm9yZz4KLS0t CnYyOiBVc2UgbWVzc2FnZS1pZCBmb3IgTEtNTCByZWZlcmVuY2UKICAgIFJld29yayByZWFkX2Vl cHJvbSBhY2NvcmRpbmcgdG8gQW5keSdzIGNvbW1lbnQgYW5kIHJldHVybiByZWFkIGNvdW50CiAg ICBSZW1vdmUgbm9pc3kgbWVzc2FnZXMKICAgIENvbW1lbnQgc3R5bGUgYWxpZ25tZW50CiAgICBB ZGQgZGVmaW5lcyBmb3IgbWFnaWMgdmFsdWVzCiAgICBDYW5ub3QgdXNlIGRldm0sIGJlY2F1c2Ug Z3Bpb2NoaXAgaXMgbGlua2VkIHRvIHRoZSBwb3J0IG5vdCB0byB0aGUgdWRldgp2MzoKICAgRml4 IHR5cG8gaW4gQ0JVUyBtYXNrIGRlc2NyaXB0aW9uIGNvbW1lbnQKCiBkcml2ZXJzL3VzYi9zZXJp YWwvS2NvbmZpZyAgICB8ICAgOSArKwogZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmMgfCAy MzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL3Vz Yi9zZXJpYWwvZnRkaV9zaW8uaCB8ICA4MyArKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdl ZCwgMzMwIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvS2Nv bmZpZyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnCmluZGV4IDUzM2YxMjcuLjY0YzlmMmUg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnCisrKyBiL2RyaXZlcnMvdXNi L3NlcmlhbC9LY29uZmlnCkBAIC0xODEsNiArMTgxLDE1IEBAIGNvbmZpZyBVU0JfU0VSSUFMX0ZU RElfU0lPCiAJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBo ZXJlOiB0aGUKIAkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBmdGRpX3Npby4KIAorY29uZmlnIFVT Ql9TRVJJQUxfRlRESV9TSU9fQ0JVU19HUElPCisJYm9vbCAiVVNCIEZEVEkgQ0JVUyBHUElPIHN1 cHBvcnQiCisJZGVwZW5kcyBvbiBVU0JfU0VSSUFMX0ZURElfU0lPCisJZGVwZW5kcyBvbiBHUElP TElCCisJaGVscAorCSAgU2F5IHllcyBoZXJlIHRvIGFkZCBzdXBwb3J0IGZvciB0aGUgQ0JVUyBi aXQtYmFuZyBtb2RlLCBhbGxvd2luZyBDQlVTCisJICBwaW5zIHRvIGFjdCBhcyBHUElPcy4gTm90 ZSB0aGF0IHBpbnMgbXVzdCBmaXJzdCBiZSBjb25maWd1cmVkIGZvciBHUElPCisJICBpbiB0aGUg ZGV2aWNlJ3MgRUVQUk9NLiBUaGUgRlQyMzJSIGFuZCBGVC1YIHNlcmllcyBzdXBwb3J0IHRoaXMg bW9kZS4KKwogY29uZmlnIFVTQl9TRVJJQUxfVklTT1IKIAl0cmlzdGF0ZSAiVVNCIEhhbmRzcHJp bmcgVmlzb3IgLyBQYWxtIG01MHggLyBTb255IENsaWUgRHJpdmVyIgogCWhlbHAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2Z0 ZGlfc2lvLmMKaW5kZXggYjVjZWYzMi4uZTkwY2FlNiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Iv c2VyaWFsL2Z0ZGlfc2lvLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmMKQEAg LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxsaW51eC90dHkuaD4KICNpbmNsdWRlIDxsaW51eC90 dHlfZHJpdmVyLmg+CiAjaW5jbHVkZSA8bGludXgvdHR5X2ZsaXAuaD4KKyNpbmNsdWRlIDxsaW51 eC9ncGlvL2RyaXZlci5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxp bnV4L3NwaW5sb2NrLmg+CiAjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KQEAgLTQwLDEyICs0MSwy MSBAQAogI2luY2x1ZGUgPGxpbnV4L3VzYi5oPgogI2luY2x1ZGUgPGxpbnV4L3NlcmlhbC5oPgog I2luY2x1ZGUgPGxpbnV4L3VzYi9zZXJpYWwuaD4KKwogI2luY2x1ZGUgImZ0ZGlfc2lvLmgiCiAj aW5jbHVkZSAiZnRkaV9zaW9faWRzLmgiCiAKICNkZWZpbmUgRFJJVkVSX0FVVEhPUiAiR3JlZyBL cm9haC1IYXJ0bWFuIDxncmVnQGtyb2FoLmNvbT4sIEJpbGwgUnlkZXIgPGJyeWRlckBzZ2kuY29t PiwgS3ViYSBPYmVyIDxrdWJhQG1hcmVpbWJyaXVtLm9yZz4sIEFuZHJlYXMgTW9ociwgSm9oYW4g SG92b2xkIDxqaG92b2xkQGdtYWlsLmNvbT4iCiAjZGVmaW5lIERSSVZFUl9ERVNDICJVU0IgRlRE SSBTZXJpYWwgQ29udmVydGVycyBEcml2ZXIiCiAKKyNkZWZpbmUgRlRESV9DQlVTX1BJTl9DT1VO VCA0CisKK3N0cnVjdCBmdGRpX2dwaW9jaGlwIHsKKwlzdHJ1Y3QgZ3Bpb19jaGlwIGdjOworCXN0 cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQ7CisJdW5zaWduZWQgaW50IGNidXNfbWFwW0ZURElf Q0JVU19QSU5fQ09VTlRdOworCXVuc2lnbmVkIGxvbmcgY2J1c19tYXNrOworfTsKIAogc3RydWN0 IGZ0ZGlfcHJpdmF0ZSB7CiAJZW51bSBmdGRpX2NoaXBfdHlwZSBjaGlwX3R5cGU7CkBAIC03Miw2 ICs4Miw4IEBAIHN0cnVjdCBmdGRpX3ByaXZhdGUgewogCXVuc2lnbmVkIGludCBsYXRlbmN5OwkJ LyogbGF0ZW5jeSBzZXR0aW5nIGluIHVzZSAqLwogCXVuc2lnbmVkIHNob3J0IG1heF9wYWNrZXRf c2l6ZTsKIAlzdHJ1Y3QgbXV0ZXggY2ZnX2xvY2s7IC8qIEF2b2lkIG1lc3MgYnkgcGFyYWxsZWwg Y2FsbHMgb2YgY29uZmlnIGlvY3RsKCkgYW5kIGNoYW5nZV9zcGVlZCgpICovCisKKwlzdHJ1Y3Qg ZnRkaV9ncGlvY2hpcCAqZmdjOwogfTsKIAogLyogc3RydWN0IGZ0ZGlfc2lvX3F1aXJrIGlzIHVz ZWQgYnkgZGV2aWNlcyByZXF1aXJpbmcgc3BlY2lhbCBhdHRlbnRpb24uICovCkBAIC0xNTI4LDYg KzE1NDAsMjI0IEBAIHN0YXRpYyBpbnQgZ2V0X2xzcl9pbmZvKHN0cnVjdCB1c2Jfc2VyaWFsX3Bv cnQgKnBvcnQsCiAJcmV0dXJuIDA7CiB9CiAKKyNpZmRlZiBDT05GSUdfVVNCX1NFUklBTF9GVERJ X1NJT19DQlVTX0dQSU8KKworI2RlZmluZSBGVFhfQ0JVU19NVVhfRUVQUk9NX0FERFIgMHgxYQor CitzdGF0aWMgaW50IGZ0ZGlfcmVhZF9lZXByb20oc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYsIHVu c2lnbmVkIGludCBvZmYsCisJCQkgICAgdm9pZCAqdmFsLCBzaXplX3QgYnl0ZXMpCit7CisJdW5z aWduZWQgaW50IHJlYWQgPSAwOworCisJaWYgKGJ5dGVzICUgMikgLyogMTYtYml0IHdvcmQgZWVw cm9tICovCisJCWJ5dGVzLS07CisKKwl3aGlsZSAocmVhZCA8IGJ5dGVzKSB7CisJCWludCBydjsK KworCQlydiA9IHVzYl9jb250cm9sX21zZyh1ZGV2LCB1c2JfcmN2Y3RybHBpcGUodWRldiwgMCks CisJCQkJICAgICBGVERJX1NJT19SRUFEX0VFUFJPTV9SRVFVRVNULAorCQkJCSAgICAgRlRESV9T SU9fUkVBRF9FRVBST01fUkVRVUVTVF9UWVBFLAorCQkJCSAgICAgMCwgKG9mZiArIHJlYWQpIC8g MiwgdmFsICsgcmVhZCwgMiwKKwkJCQkgICAgIFdEUl9USU1FT1VUKTsKKwkJaWYgKHJ2IDwgMCkK KwkJCWJyZWFrOworCisJCXJlYWQgKz0gMjsKKwl9CisKKwlyZXR1cm4gcmVhZDsKK30KKworc3Rh dGljIGludCBmdGRpX3NldF9iaXRtb2RlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQsIHU4 IGJpdG1hc2ssCisJCQkgICAgdTggYml0bW9kZSkKK3sKKwlzdHJ1Y3QgZnRkaV9wcml2YXRlICpw cml2ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQpOworCV9fdTE2IHVyYl92YWx1ZSA9 IDA7CisKKwl1cmJfdmFsdWUgPSBiaXRtb2RlIDw8IDggfCBiaXRtYXNrOworCisJaWYgKHVzYl9j b250cm9sX21zZyhwb3J0LT5zZXJpYWwtPmRldiwKKwkJCSAgICB1c2Jfc25kY3RybHBpcGUocG9y dC0+c2VyaWFsLT5kZXYsIDApLAorCQkJICAgIEZURElfU0lPX1NFVF9CSVRNT0RFX1JFUVVFU1Qs CisJCQkgICAgRlRESV9TSU9fU0VUX0JJVE1PREVfUkVRVUVTVF9UWVBFLAorCQkJICAgIHVyYl92 YWx1ZSwgcHJpdi0+aW50ZXJmYWNlLCBOVUxMLCAwLAorCQkJICAgIFdEUl9TSE9SVF9USU1FT1VU KSA8IDApIHsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bnQgZnRkaV9yZWFkX3BpbnMoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCwgdTggKnZhbCkK K3sKKwlzdHJ1Y3QgZnRkaV9wcml2YXRlICpwcml2ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRh KHBvcnQpOworCXVuc2lnbmVkIGNoYXIgKmJ1ZjsKKworCWJ1ZiA9IGttYWxsb2MoMSwgR0ZQX0tF Uk5FTCk7CisJaWYgKCFidWYpCisJCXJldHVybiAtRU5PTUVNOworCisJaWYgKHVzYl9jb250cm9s X21zZyhwb3J0LT5zZXJpYWwtPmRldiwKKwkJCSAgICB1c2JfcmN2Y3RybHBpcGUocG9ydC0+c2Vy aWFsLT5kZXYsIDApLAorCQkJICAgIEZURElfU0lPX1JFQURfUElOU19SRVFVRVNULAorCQkJICAg IEZURElfU0lPX1JFQURfUElOU19SRVFVRVNUX1RZUEUsCisJCQkgICAgMCwgcHJpdi0+aW50ZXJm YWNlLCBidWYsIDEsIFdEUl9USU1FT1VUKSA8IDApIHsKKwkJa2ZyZWUoYnVmKTsKKwkJcmV0dXJu IC1FSU87CisJfQorCisJKnZhbCA9IGJ1ZlswXTsKKwlrZnJlZShidWYpOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgZnRkaV9jYnVzX2dwaW9fZGlyX291dChzdHJ1Y3QgZ3Bpb19jaGlw ICpnYywgdW5zaWduZWQgZ3BpbywgaW50IHZhbCkKK3sKKwlzdHJ1Y3QgZnRkaV9ncGlvY2hpcCAq ZmdjID0gZ3Bpb2NoaXBfZ2V0X2RhdGEoZ2MpOworCXVuc2lnbmVkIGludCBjYnVzX2lkeCA9IGZn Yy0+Y2J1c19tYXBbZ3Bpb107CisKKwkvKgorCSAqIENCVVMgbWFzayBpcyBhbiA4LWJpdCByZWdp c3RlciBjb250cm9sbGluZyB0aGUgZGlyZWN0aW9uIGFuZCB2YWx1ZQorCSAqIG9mIENCVVMgcGlu cyBpbiBCaXQtQmFuZyBtb2RlLiBjZiBhcHBsaWNhdGlvbiBub3RlIEFOXzM3My9BTl8yMzJSLTAx LgorCSAqIHwgYml0IDcgfCBiaXQgNiB8IGJpdCA1IHwgYml0IDQgfCBiaXQgMyB8IGJpdCAyIHwg Yml0IDEgfCBiaXQgMCB8CisJICogfCBDQlVTMyB8IENCVVMyIHwgQ0JVUzEgfCBDQlVTMCB8IENC VVMzIHwgQ0JVUzIgfCBDQlVTMSB8IENCVVMwIHwKKwkgKiB8ICBJL08gIHwgIEkvTyAgfCAgSS9P ICB8ICBJL08gIHwgSGkvTG8gfCBIaS9MbyB8IEhpL0xvIHwgSGkvTG8gfAorCSAqLworCXNldF9i aXQoY2J1c19pZHggKyA0LCAmZmdjLT5jYnVzX21hc2spOyAvKiBkaXJlY3Rpb24gKi8KKwlzZXRf Yml0KGNidXNfaWR4LCAmZmdjLT5jYnVzX21hc2spOyAvKiB2YWx1ZSAqLworCisJcmV0dXJuIGZ0 ZGlfc2V0X2JpdG1vZGUoZmdjLT5wb3J0LCBmZ2MtPmNidXNfbWFzaywKKwkJCQlGVERJX1NJT19C SVRNT0RFX0NCVVMpOworfQorCitzdGF0aWMgaW50IGZ0ZGlfY2J1c19ncGlvX2Rpcl9pbihzdHJ1 Y3QgZ3Bpb19jaGlwICpnYywgdW5zaWduZWQgZ3BpbykKK3sKKwlzdHJ1Y3QgZnRkaV9ncGlvY2hp cCAqZmdjID0gZ3Bpb2NoaXBfZ2V0X2RhdGEoZ2MpOworCXVuc2lnbmVkIGludCBjYnVzX2lkeCA9 IGZnYy0+Y2J1c19tYXBbZ3Bpb107CisKKwljbGVhcl9iaXQoY2J1c19pZHggKyA0LCAmZmdjLT5j YnVzX21hc2spOworCisJcmV0dXJuIGZ0ZGlfc2V0X2JpdG1vZGUoZmdjLT5wb3J0LCBmZ2MtPmNi dXNfbWFzaywKKwkJCQlGVERJX1NJT19CSVRNT0RFX0NCVVMpOworfQorCitzdGF0aWMgaW50IGZ0 ZGlfY2J1c19ncGlvX2dldChzdHJ1Y3QgZ3Bpb19jaGlwICpnYywgdW5zaWduZWQgZ3BpbykKK3sK KwlzdHJ1Y3QgZnRkaV9ncGlvY2hpcCAqZmdjID0gZ3Bpb2NoaXBfZ2V0X2RhdGEoZ2MpOworCXVu c2lnbmVkIGludCBjYnVzX2lkeCA9IGZnYy0+Y2J1c19tYXBbZ3Bpb107CisJdTggdmFsID0gMDsK KwlpbnQgcnY7CisKKwlydiA9IGZ0ZGlfcmVhZF9waW5zKGZnYy0+cG9ydCwgJnZhbCk7CisJaWYg KHJ2KQorCQlyZXR1cm4gcnY7CisKKwlyZXR1cm4gISEodmFsICYgQklUKGNidXNfaWR4KSk7Cit9 CisKK3N0YXRpYyB2b2lkIGZ0ZGlfY2J1c19ncGlvX3NldChzdHJ1Y3QgZ3Bpb19jaGlwICpnYywg dW5zaWduZWQgZ3BpbywgaW50IHZhbCkKK3sKKwlzdHJ1Y3QgZnRkaV9ncGlvY2hpcCAqZmdjID0g Z3Bpb2NoaXBfZ2V0X2RhdGEoZ2MpOworCisJaWYgKHZhbCkKKwkJc2V0X2JpdChmZ2MtPmNidXNf bWFwW2dwaW9dLCAmZmdjLT5jYnVzX21hc2spOworCWVsc2UKKwkJY2xlYXJfYml0KGZnYy0+Y2J1 c19tYXBbZ3Bpb10sICZmZ2MtPmNidXNfbWFzayk7CisKKwlmdGRpX3NldF9iaXRtb2RlKGZnYy0+ cG9ydCwgZmdjLT5jYnVzX21hc2ssIEZURElfU0lPX0JJVE1PREVfQ0JVUyk7Cit9CisKK3N0YXRp YyBpbnQgZnRkaV9yZWdpc3Rlcl9jYnVzX2dwaW9jaGlwKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQg KnBvcnQpCit7CisJc3RydWN0IGZ0ZGlfcHJpdmF0ZSAqcHJpdiA9IHVzYl9nZXRfc2VyaWFsX3Bv cnRfZGF0YShwb3J0KTsKKwlzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHBvcnQtPnNlcmlhbC0+ ZGV2OworCXN0cnVjdCBmdGRpX2dwaW9jaGlwICpmZ2M7CisJaW50IHJ2ID0gMDsKKworCWZnYyA9 IGt6YWxsb2Moc2l6ZW9mKCpmZ2MpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWZnYykKKwkJcmV0dXJu IC1FTk9NRU07CisKKwlpZiAocHJpdi0+Y2hpcF90eXBlID09IEZUWCkgeworCQl1bnNpZ25lZCBj aGFyICpjYnVzX211eDsKKwkJdW5zaWduZWQgaW50IGk7CisKKwkJLyoKKwkJICogRWFjaCBpbmRp dmlkdWFsIENCVVMgcGluIGlzIGNvbnRyb2xsZWQgYnkgYSBzZXBhcmF0ZSA4LWJpdAorCQkgKiBN VVggY29udHJvbCB2YWx1ZSBzdG9yZWQgaW4gdGhlIEVFUFJPTSwgc3RhcnRpbmcgYXQgMHgxYToK KwkJICogfCAweDFhIENCVVMwIHwgMHgxYiBDQlVTMSB8IDB4MWMgQ0JVUzIgfCAweDFkIENCVVMz IHwgLi4uCisJCSAqIGNmIGFwcGxpY2F0aW9uIG5vdGUgQU5fMjAxLgorCQkgKi8KKworCQljYnVz X211eCA9IGttYWxsb2MoRlRESV9DQlVTX1BJTl9DT1VOVCwgR0ZQX0tFUk5FTCk7CisJCWlmICgh Y2J1c19tdXgpCisJCQlyZXR1cm4gLUVOT01FTTsKKworCQlydiA9IGZ0ZGlfcmVhZF9lZXByb20o dWRldiwgRlRYX0NCVVNfTVVYX0VFUFJPTV9BRERSLCBjYnVzX211eCwKKwkJCQkgICAgICBGVERJ X0NCVVNfUElOX0NPVU5UKTsKKwkJaWYgKHJ2IDwgMCkgeworCQkJZGV2X2VycigmdWRldi0+ZGV2 LCAiVW5hYmxlIHRvIHJlYWQgQ0JVUyBjb25maWdcbiIpOworCQkJa2ZyZWUoY2J1c19tdXgpOwor CQkJZ290byBleGl0X3JlbGVhc2U7CisJCX0KKworCQlmb3IgKGkgPSAwOyBpIDwgcnY7IGkrKykg eworCQkJaWYgKGNidXNfbXV4W2ldID09IEZUWF9DQlVTX01VWF9JTykKKwkJCQlmZ2MtPmNidXNf bWFwW2ZnYy0+Z2MubmdwaW8rK10gPSBpOworCQl9CisKKwkJcnYgPSAwOworCQlrZnJlZShjYnVz X211eCk7CisJfQorCisJaWYgKCFmZ2MtPmdjLm5ncGlvKQorCQlnb3RvIGV4aXRfcmVsZWFzZTsK KworCWZnYy0+Z2MubGFiZWwgPSAiZnRkaS1jYnVzLWdwaW8iOworCWZnYy0+Z2MuZGlyZWN0aW9u X2lucHV0ID0gZnRkaV9jYnVzX2dwaW9fZGlyX2luOworCWZnYy0+Z2MuZGlyZWN0aW9uX291dHB1 dCA9IGZ0ZGlfY2J1c19ncGlvX2Rpcl9vdXQ7CisJZmdjLT5nYy5zZXQgPSBmdGRpX2NidXNfZ3Bp b19zZXQ7CisJZmdjLT5nYy5nZXQgPSBmdGRpX2NidXNfZ3Bpb19nZXQ7CisJZmdjLT5nYy5jYW5f c2xlZXAgPSB0cnVlOworCWZnYy0+Z2MucGFyZW50ID0gJnVkZXYtPmRldjsKKwlmZ2MtPmdjLmJh c2UgPSAtMTsKKwlmZ2MtPmdjLm93bmVyID0gVEhJU19NT0RVTEU7CisJZmdjLT5wb3J0ID0gcG9y dDsKKworCXJ2ID0gZ3Bpb2NoaXBfYWRkX2RhdGEoJmZnYy0+Z2MsIGZnYyk7CisJaWYgKHJ2KSB7 CisJCWRldl9lcnIoJnVkZXYtPmRldiwgIlVuYWJsZSB0byBhZGQgZ3Bpb2NoaXBcbiIpOworCQln b3RvIGV4aXRfcmVsZWFzZTsKKwl9CisKKwlwcml2LT5mZ2MgPSBmZ2M7CisKKwlkZXZfaW5mbygm dWRldi0+ZGV2LAorCQkgIkZUREkgVVNCIEdQSU8gY29udHJvbGxlciBSZWdpc3RlcmVkLCBiYXNl PSVkLCBuZ3Bpbz0ldVxuIiwKKwkJIGZnYy0+Z2MuYmFzZSwgZmdjLT5nYy5uZ3Bpbyk7CisKKwly ZXR1cm4gMDsKKworZXhpdF9yZWxlYXNlOgorCWtmcmVlKGZnYyk7CisJcmV0dXJuIHJ2OworfQor CitzdGF0aWMgdm9pZCBmdGRpX3VucmVnaXN0ZXJfY2J1c19ncGlvY2hpcChzdHJ1Y3QgdXNiX3Nl cmlhbF9wb3J0ICpwb3J0KQoreworCXN0cnVjdCBmdGRpX3ByaXZhdGUgKnByaXYgPSB1c2JfZ2V0 X3NlcmlhbF9wb3J0X2RhdGEocG9ydCk7CisJc3RydWN0IGZ0ZGlfZ3Bpb2NoaXAgKmZnYyA9IHBy aXYtPmZnYzsKKworCWlmICghZmdjKQorCQlyZXR1cm47CisKKwlncGlvY2hpcF9yZW1vdmUoJmZn Yy0+Z2MpOworCWtmcmVlKGZnYyk7Cit9CisKKyNlbmRpZiAvKiAgQ09ORklHX1VTQl9TRVJJQUxf RlRESV9TSU9fQ0JVU19HUElPICovCiAKIC8qIERldGVybWluZSB0eXBlIG9mIEZUREkgY2hpcCBi YXNlZCBvbiBVU0IgY29uZmlnIGFuZCBkZXNjcmlwdG9yLiAqLwogc3RhdGljIHZvaWQgZnRkaV9k ZXRlcm1pbmVfdHlwZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQpAQCAtMTgxMyw2ICsy MDQzLDEwIEBAIHN0YXRpYyBpbnQgZnRkaV9zaW9fcG9ydF9wcm9iZShzdHJ1Y3QgdXNiX3Nlcmlh bF9wb3J0ICpwb3J0KQogCQlwcml2LT5sYXRlbmN5ID0gMTY7CiAJd3JpdGVfbGF0ZW5jeV90aW1l cihwb3J0KTsKIAljcmVhdGVfc3lzZnNfYXR0cnMocG9ydCk7CisjaWZkZWYgQ09ORklHX1VTQl9T RVJJQUxfRlRESV9TSU9fQ0JVU19HUElPCisJZnRkaV9yZWdpc3Rlcl9jYnVzX2dwaW9jaGlwKHBv cnQpOworI2VuZGlmCisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTkzMCw2ICsyMTY0LDEwIEBAIHN0 YXRpYyBpbnQgZnRkaV9zaW9fcG9ydF9yZW1vdmUoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9y dCkKIHsKIAlzdHJ1Y3QgZnRkaV9wcml2YXRlICpwcml2ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9k YXRhKHBvcnQpOwogCisjaWZkZWYgQ09ORklHX1VTQl9TRVJJQUxfRlRESV9TSU9fQ0JVU19HUElP CisJZnRkaV91bnJlZ2lzdGVyX2NidXNfZ3Bpb2NoaXAocG9ydCk7CisjZW5kaWYKKwogCXJlbW92 ZV9zeXNmc19hdHRycyhwb3J0KTsKIAogCWtmcmVlKHByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmggYi9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uaApp bmRleCBkY2QwYjZlLi4zYmQyNDhmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRk aV9zaW8uaAorKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uaApAQCAtMzYsNiArMzYs MTAgQEAKICNkZWZpbmUgRlRESV9TSU9fU0VUX0VSUk9SX0NIQVIJCTcgLyogU2V0IHRoZSBlcnJv ciBjaGFyYWN0ZXIgKi8KICNkZWZpbmUgRlRESV9TSU9fU0VUX0xBVEVOQ1lfVElNRVIJOSAvKiBT ZXQgdGhlIGxhdGVuY3kgdGltZXIgKi8KICNkZWZpbmUgRlRESV9TSU9fR0VUX0xBVEVOQ1lfVElN RVIJMTAgLyogR2V0IHRoZSBsYXRlbmN5IHRpbWVyICovCisjZGVmaW5lIEZURElfU0lPX1NFVF9C SVRNT0RFCQkxMSAvKiBTZXQgdGhlIGJpdG1vZGUgKi8KKyNkZWZpbmUgRlRESV9TSU9fUkVBRF9Q SU5TCQkxMiAvKiBSZWFkIHBpbnMgaW4gYml0bW9kZSAqLworI2RlZmluZSBGVERJX1NJT19SRUFE X0VFUFJPTQkJMHg5MCAvKiBSZWFkIGVlcHJvbSAqLworI2RlZmluZSBGVERJX1NJT19XUklURV9F RVBST00JCTB4OTEgLyogV3JpdGUgZWVwcm9tICovCiAKIC8qIEludGVyZmFjZSBpbmRpY2VzIGZv ciBGVDIyMzIsIEZUMjIzMkggYW5kIEZUNDIzMkggZGV2aWNlcyAqLwogI2RlZmluZSBJTlRFUkZB Q0VfQQkJMQpAQCAtNDAwLDYgKzQwNCw2MCBAQCBlbnVtIGZ0ZGlfc2lvX2JhdWRyYXRlIHsKICAq CiAgKi8KIAorIC8qIEZURElfU0lPX1JFQURfRUVQUk9NICovCisjZGVmaW5lIEZURElfU0lPX1JF QURfRUVQUk9NX1JFUVVFU1RfVFlQRSAweGMwCisjZGVmaW5lIEZURElfU0lPX1JFQURfRUVQUk9N X1JFUVVFU1QgRlRESV9TSU9fUkVBRF9FRVBST00KKy8qCisgKiAgQm1SZXF1ZXN0VHlwZTogICAx MTAwIDAwMDBiCisgKiAgYlJlcXVlc3Q6ICAgICAgICBGVERJX1NJT19SRUFEX0VFUFJPTQorICog IHdWYWx1ZTogICAgICAgICAgMAorICogIHdJbmRleDogICAgICAgICAgV29yZCBJbmRleAorICog IHdMZW5ndGg6ICAgICAgICAgMgorICogIERhdGE6ICAgICAgICAgICAgcmV0dXJuIGRhdGEgKGEg d29yZCkKKyAqCisgKi8KKworLyogRlRESV9TSU9fV1JJVEVfRUVQUk9NICovCisjZGVmaW5lIEZU RElfU0lPX1dSSVRFX0VFUFJPTV9SRVFVRVNUX1RZUEUgMHg0MAorI2RlZmluZSBGVERJX1NJT19X UklURV9FRVBST01fUkVRVUVTVCBGVERJX1NJT19XUklURV9FRVBST00KKy8qCisgKiAgQm1SZXF1 ZXN0VHlwZTogICAwMTAwIDAwMDBiCisgKiAgYlJlcXVlc3Q6ICAgICAgICBGVERJX1NJT19XUklU RV9FRVBST00KKyAqICB3VmFsdWU6ICAgICAgICAgIERhdGEgKHdvcmQpCisgKiAgd0luZGV4OiAg ICAgICAgICBXb3JkIEluZGV4CisgKiAgd0xlbmd0aDogICAgICAgICAwCisgKiAgRGF0YTogICAg ICAgICAgICBOb25lCisgKgorICovCisKKyAvKiBGVERJX1NJT19TRVRfQklUTU9ERSAqLworI2Rl ZmluZSBGVERJX1NJT19TRVRfQklUTU9ERV9SRVFVRVNUX1RZUEUgMHg0MAorI2RlZmluZSBGVERJ X1NJT19TRVRfQklUTU9ERV9SRVFVRVNUIEZURElfU0lPX1NFVF9CSVRNT0RFCisjZGVmaW5lIEZU RElfU0lPX0JJVE1PREVfUkVTRVQgMHgwMAorI2RlZmluZSBGVERJX1NJT19CSVRNT0RFX0NCVVMg MHgyMAorLyoKKyAqICBCbVJlcXVlc3RUeXBlOiAgIDAxMDAgMDAwMGIKKyAqICBiUmVxdWVzdDog ICAgICAgIEZURElfU0lPX1NFVF9CSVRNT0RFCisgKiAgd1ZhbHVlOiAgICAgICAgICBbMC03XSBi aXRtYXNrLCBbOC0xNV0gYml0bW9kZQorICogIHdJbmRleDogICAgICAgICAgUG9ydAorICogIHdM ZW5ndGg6ICAgICAgICAgMAorICogIERhdGE6ICAgICAgICAgICAgTm9uZQorICoKKyAqLworCisv KiBGVERJX1NJT19SRUFEX1BJTlMgKi8KKyNkZWZpbmUgRlRESV9TSU9fUkVBRF9QSU5TX1JFUVVF U1RfVFlQRSAweEMwCisjZGVmaW5lIEZURElfU0lPX1JFQURfUElOU19SRVFVRVNUIEZURElfU0lP X1JFQURfUElOUworLyoKKyAqICBCbVJlcXVlc3RUeXBlOiAgIDExMDAgMDAwMGIKKyAqICBiUmVx dWVzdDogICAgICAgIEZURElfU0lPX1JFQURfUElOUworICogIHdWYWx1ZTogICAgICAgICAgMAor ICogIHdJbmRleDogICAgICAgICAgUG9ydAorICogIHdMZW5ndGg6ICAgICAgICAgMgorICogIERh dGE6ICAgICAgICAgICAgcmV0dXJuIGRhdGEgKGEgd29yZCkKKyAqCisgKi8KKwogLyogRlRESV9T SU9fR0VUX01PREVNX1NUQVRVUyAqLwogLyogUmV0cmlldmUgdGhlIGN1cnJlbnQgdmFsdWUgb2Yg dGhlIG1vZGVtIHN0YXR1cyByZWdpc3RlciAqLwogCkBAIC01NjMsMyArNjIxLDI4IEBAIGVudW0g ZnRkaV9zaW9fYmF1ZHJhdGUgewogICogQjIuLjcJTGVuZ3RoIG9mIG1lc3NhZ2UgLSAobm90IGlu Y2x1ZGluZyBCeXRlIDApCiAgKgogICovCisKK2VudW0gZnRkaV9mdHhfY2J1c19tdXggeworCUZU WF9DQlVTX01VWF9UUklTVEFURSwKKwlGVFhfQ0JVU19NVVhfUlhMRUQsCisJRlRYX0NCVVNfTVVY X1RYTEVELAorCUZUWF9DQlVTX01VWF9UWFJYTEVELAorCUZUWF9DQlVTX01VWF9QV1JFTiwKKwlG VFhfQ0JVU19NVVhfU0xFRVAsCisJRlRYX0NCVVNfTVVYX0RSSVZFMCwKKwlGVFhfQ0JVU19NVVhf RFJJVkUxLAorCUZUWF9DQlVTX01VWF9JTywKKwlGVFhfQ0JVU19NVVhfVFhERU4sCisJRlRYX0NC VVNfTVVYX0NMSzI0LAorCUZUWF9DQlVTX01VWF9DTEsxMiwKKwlGVFhfQ0JVU19NVVhfQ0xLNiwK KwlGVFhfQ0JVU19NVVhfQkNEX0NIQVJHRVIsCisJRlRYX0NCVVNfTVVYX0JDRF9DSEFSR0VSX04s CisJRlRYX0NCVVNfTVVYX0kyQ19UWEUsCisJRlRYX0NCVVNfTVVYX0kyQ19SWEYsCisJRlRYX0NC VVNfTVVYX1ZCVVNfU0VOU0UsCisJRlRYX0NCVVNfTVVYX0JJVEJBTkdfV1IsCisJRlRYX0NCVVNf TVVYX0JJVEJBTkdfUkQsCisJRlRYX0NCVVNfTVVYX1RJTUVTVEFNUCwKKwlGVFhfQ0JVU19NVVhf S0VFUF9BV0FLRQorfTsK