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: USB: serial: ftdi_sio: Add support for CBUS GPIO From: Loic Poulain Message-Id: <1533138384-11258-1-git-send-email-loic.poulain@linaro.org> Date: Wed, 1 Aug 2018 17:46:24 +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 YW4gQWduZXIgaW1wbGVtZW50YXRpb24gdGVudGF0aXZlCm9uIExLTUwgKFtQQVRDSCAwLzJdIEZU REkgQ0JVUyBHUElPIHN1cHBvcnQpLgoKU2lnbmVkLW9mZi1ieTogTG9pYyBQb3VsYWluIDxsb2lj LnBvdWxhaW5AbGluYXJvLm9yZz4KLS0tCiBkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZyAgICB8 ICAgOSArKwogZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmMgfCAyMjIgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9z aW8uaCB8ICA4MyArKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDMxNCBpbnNlcnRp b25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWcgYi9kcml2ZXJz L3VzYi9zZXJpYWwvS2NvbmZpZwppbmRleCA1MzNmMTI3Li42NGM5ZjJlIDEwMDY0NAotLS0gYS9k cml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZp ZwpAQCAtMTgxLDYgKzE4MSwxNSBAQCBjb25maWcgVVNCX1NFUklBTF9GVERJX1NJTwogCSAgVG8g Y29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCiAJICBt b2R1bGUgd2lsbCBiZSBjYWxsZWQgZnRkaV9zaW8uCiAKK2NvbmZpZyBVU0JfU0VSSUFMX0ZURElf U0lPX0NCVVNfR1BJTworCWJvb2wgIlVTQiBGRFRJIENCVVMgR1BJTyBzdXBwb3J0IgorCWRlcGVu ZHMgb24gVVNCX1NFUklBTF9GVERJX1NJTworCWRlcGVuZHMgb24gR1BJT0xJQgorCWhlbHAKKwkg IFNheSB5ZXMgaGVyZSB0byBhZGQgc3VwcG9ydCBmb3IgdGhlIENCVVMgYml0LWJhbmcgbW9kZSwg YWxsb3dpbmcgQ0JVUworCSAgcGlucyB0byBhY3QgYXMgR1BJT3MuIE5vdGUgdGhhdCBwaW5zIG11 c3QgZmlyc3QgYmUgY29uZmlndXJlZCBmb3IgR1BJTworCSAgaW4gdGhlIGRldmljZSdzIEVFUFJP TS4gVGhlIEZUMjMyUiBhbmQgRlQtWCBzZXJpZXMgc3VwcG9ydCB0aGlzIG1vZGUuCisKIGNvbmZp ZyBVU0JfU0VSSUFMX1ZJU09SCiAJdHJpc3RhdGUgIlVTQiBIYW5kc3ByaW5nIFZpc29yIC8gUGFs bSBtNTB4IC8gU29ueSBDbGllIERyaXZlciIKIAloZWxwCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Vz Yi9zZXJpYWwvZnRkaV9zaW8uYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jCmluZGV4 IGI1Y2VmMzIuLjNjZmI1ZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Np by5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jCkBAIC0zMyw2ICszMyw3IEBA CiAjaW5jbHVkZSA8bGludXgvdHR5Lmg+CiAjaW5jbHVkZSA8bGludXgvdHR5X2RyaXZlci5oPgog I2luY2x1ZGUgPGxpbnV4L3R0eV9mbGlwLmg+CisjaW5jbHVkZSA8bGludXgvZ3Bpby9kcml2ZXIu aD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5o PgogI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+CkBAIC00MCwxMiArNDEsMTkgQEAKICNpbmNsdWRl IDxsaW51eC91c2IuaD4KICNpbmNsdWRlIDxsaW51eC9zZXJpYWwuaD4KICNpbmNsdWRlIDxsaW51 eC91c2Ivc2VyaWFsLmg+CisKICNpbmNsdWRlICJmdGRpX3Npby5oIgogI2luY2x1ZGUgImZ0ZGlf c2lvX2lkcy5oIgogCiAjZGVmaW5lIERSSVZFUl9BVVRIT1IgIkdyZWcgS3JvYWgtSGFydG1hbiA8 Z3JlZ0Brcm9haC5jb20+LCBCaWxsIFJ5ZGVyIDxicnlkZXJAc2dpLmNvbT4sIEt1YmEgT2JlciA8 a3ViYUBtYXJlaW1icml1bS5vcmc+LCBBbmRyZWFzIE1vaHIsIEpvaGFuIEhvdm9sZCA8amhvdm9s ZEBnbWFpbC5jb20+IgogI2RlZmluZSBEUklWRVJfREVTQyAiVVNCIEZUREkgU2VyaWFsIENvbnZl cnRlcnMgRHJpdmVyIgogCitzdHJ1Y3QgZnRkaV9ncGlvY2hpcCB7CisJc3RydWN0IGdwaW9fY2hp cCBnYzsKKwl1bnNpZ25lZCBpbnQgY2J1c19tYXBbNF07CisJdW5zaWduZWQgbG9uZyBjYnVzX21h c2s7CisJc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydDsKK307CiAKIHN0cnVjdCBmdGRpX3By aXZhdGUgewogCWVudW0gZnRkaV9jaGlwX3R5cGUgY2hpcF90eXBlOwpAQCAtNzIsNiArODAsOCBA QCBzdHJ1Y3QgZnRkaV9wcml2YXRlIHsKIAl1bnNpZ25lZCBpbnQgbGF0ZW5jeTsJCS8qIGxhdGVu Y3kgc2V0dGluZyBpbiB1c2UgKi8KIAl1bnNpZ25lZCBzaG9ydCBtYXhfcGFja2V0X3NpemU7CiAJ c3RydWN0IG11dGV4IGNmZ19sb2NrOyAvKiBBdm9pZCBtZXNzIGJ5IHBhcmFsbGVsIGNhbGxzIG9m IGNvbmZpZyBpb2N0bCgpIGFuZCBjaGFuZ2Vfc3BlZWQoKSAqLworCisJc3RydWN0IGZ0ZGlfZ3Bp b2NoaXAgKmZnYzsKIH07CiAKIC8qIHN0cnVjdCBmdGRpX3Npb19xdWlyayBpcyB1c2VkIGJ5IGRl dmljZXMgcmVxdWlyaW5nIHNwZWNpYWwgYXR0ZW50aW9uLiAqLwpAQCAtMTUyOCw2ICsxNTM4LDIx MSBAQCBzdGF0aWMgaW50IGdldF9sc3JfaW5mbyhzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0 LAogCXJldHVybiAwOwogfQogCisjaWZkZWYgQ09ORklHX1VTQl9TRVJJQUxfRlRESV9TSU9fQ0JV U19HUElPCisKK3N0YXRpYyBpbnQgZnRkaV9yZWFkX2VlcHJvbShzdHJ1Y3QgdXNiX2RldmljZSAq dWRldiwgdW5zaWduZWQgaW50IG9mZiwKKwkJCSAgICB2b2lkICp2YWwsIHNpemVfdCBieXRlcykK K3sKKwlpZiAoYnl0ZXMgJSAyKSAvKiAxNi1iaXQgZWVwcm9tICovCisJCXJldHVybiAtRUlOVkFM OworCisJd2hpbGUgKGJ5dGVzKSB7CisJCWludCBydjsKKworCQlydiA9IHVzYl9jb250cm9sX21z Zyh1ZGV2LCB1c2JfcmN2Y3RybHBpcGUodWRldiwgMCksCisJCQkJICAgICBGVERJX1NJT19SRUFE X0VFUFJPTV9SRVFVRVNULAorCQkJCSAgICAgRlRESV9TSU9fUkVBRF9FRVBST01fUkVRVUVTVF9U WVBFLAorCQkJCSAgICAgMCwgb2ZmIC8gMiwgdmFsLCAyLCBXRFJfVElNRU9VVCk7CisJCWlmIChy diA8IDApCisJCQlyZXR1cm4gcnY7CisKKwkJb2ZmICs9IDI7CisJCXZhbCArPSAyOworCQlieXRl cyAtPSAyOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGZ0ZGlfc2V0X2JpdG1v ZGUoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCwgdTggYml0bWFzaywKKwkJCSAgICB1OCBi aXRtb2RlKQoreworCXN0cnVjdCBmdGRpX3ByaXZhdGUgKnByaXYgPSB1c2JfZ2V0X3NlcmlhbF9w b3J0X2RhdGEocG9ydCk7CisJX191MTYgdXJiX3ZhbHVlID0gMDsKKworCXVyYl92YWx1ZSA9IGJp dG1vZGUgPDwgOCB8IGJpdG1hc2s7CisKKwlpZiAodXNiX2NvbnRyb2xfbXNnKHBvcnQtPnNlcmlh bC0+ZGV2LAorCQkJICAgICB1c2Jfc25kY3RybHBpcGUocG9ydC0+c2VyaWFsLT5kZXYsIDApLAor CQkJICAgICBGVERJX1NJT19TRVRfQklUTU9ERV9SRVFVRVNULAorCQkJICAgICBGVERJX1NJT19T RVRfQklUTU9ERV9SRVFVRVNUX1RZUEUsCisJCQkgICAgIHVyYl92YWx1ZSwgcHJpdi0+aW50ZXJm YWNlLAorCQkJICAgICBOVUxMLCAwLCBXRFJfU0hPUlRfVElNRU9VVCkgPCAwKSB7CisJCXJldHVy biAtRUlPOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGZ0ZGlfcmVhZF9waW5z KHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQsIHU4ICp2YWwpCit7CisJc3RydWN0IGZ0ZGlf cHJpdmF0ZSAqcHJpdiA9IHVzYl9nZXRfc2VyaWFsX3BvcnRfZGF0YShwb3J0KTsKKwl1bnNpZ25l ZCBjaGFyICpidWY7CisKKwlidWYgPSBrbWFsbG9jKDEsIEdGUF9LRVJORUwpOworCWlmICghYnVm KQorCQlyZXR1cm4gLUVOT01FTTsKKworCWlmICh1c2JfY29udHJvbF9tc2cocG9ydC0+c2VyaWFs LT5kZXYsCisJCQkgICAgIHVzYl9yY3ZjdHJscGlwZShwb3J0LT5zZXJpYWwtPmRldiwgMCksCisJ CQkgICAgIEZURElfU0lPX1JFQURfUElOU19SRVFVRVNULAorCQkJICAgICBGVERJX1NJT19SRUFE X1BJTlNfUkVRVUVTVF9UWVBFLAorCQkJICAgICAwLCBwcml2LT5pbnRlcmZhY2UsIGJ1ZiwgMSwg V0RSX1RJTUVPVVQpIDwgMCkgeworCQlrZnJlZShidWYpOworCQlyZXR1cm4gLUVJTzsKKwl9CisK KwkqdmFsID0gYnVmWzBdOworCWtmcmVlKGJ1Zik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGludCBmdGRpX2NidXNfZ3Bpb19kaXJfaW4oc3RydWN0IGdwaW9fY2hpcCAqZ2MsIHVuc2lnbmVk IGdwaW8pCit7CisJc3RydWN0IGZ0ZGlfZ3Bpb2NoaXAgKmZnYyA9IGdwaW9jaGlwX2dldF9kYXRh KGdjKTsKKwl1bnNpZ25lZCBpbnQgY2J1c19pZHggPSBmZ2MtPmNidXNfbWFwW2dwaW9dOworCisJ Y2xlYXJfYml0KGNidXNfaWR4ICsgNCwgJmZnYy0+Y2J1c19tYXNrKTsKKworCXJldHVybiBmdGRp X3NldF9iaXRtb2RlKGZnYy0+cG9ydCwgZmdjLT5jYnVzX21hc2ssCisJCQkJRlRESV9TSU9fQklU TU9ERV9DQlVTKTsKK30KKworc3RhdGljIGludCBmdGRpX2NidXNfZ3Bpb19kaXJfb3V0KHN0cnVj dCBncGlvX2NoaXAgKmdjLCB1bnNpZ25lZCBncGlvLCBpbnQgdmFsKQoreworCXN0cnVjdCBmdGRp X2dwaW9jaGlwICpmZ2MgPSBncGlvY2hpcF9nZXRfZGF0YShnYyk7CisJdW5zaWduZWQgaW50IGNi dXNfaWR4ID0gZmdjLT5jYnVzX21hcFtncGlvXTsKKworCXNldF9iaXQoY2J1c19pZHggKyA0LCAm ZmdjLT5jYnVzX21hc2spOyAvKiBkaXJlY3Rpb24gKi8KKwlzZXRfYml0KGNidXNfaWR4LCAmZmdj LT5jYnVzX21hc2spOyAvKiB2YWx1ZSAqLworCisJcmV0dXJuIGZ0ZGlfc2V0X2JpdG1vZGUoZmdj LT5wb3J0LCBmZ2MtPmNidXNfbWFzaywKKwkJCQlGVERJX1NJT19CSVRNT0RFX0NCVVMpOworfQor CitzdGF0aWMgaW50IGZ0ZGlfY2J1c19ncGlvX2dldChzdHJ1Y3QgZ3Bpb19jaGlwICpnYywgdW5z aWduZWQgZ3BpbykKK3sKKwlzdHJ1Y3QgZnRkaV9ncGlvY2hpcCAqZmdjID0gZ3Bpb2NoaXBfZ2V0 X2RhdGEoZ2MpOworCXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gZmdjLT5wb3J0LT5zZXJpYWwt PmRldjsKKwl1bnNpZ25lZCBpbnQgY2J1c19pZHggPSBmZ2MtPmNidXNfbWFwW2dwaW9dOworCXU4 IHZhbCA9IDA7CisJaW50IHJ2OworCisJcnYgPSBmdGRpX3JlYWRfcGlucyhmZ2MtPnBvcnQsICZ2 YWwpOworCWlmIChydikKKwkJZGV2X2VycigmdWRldi0+ZGV2LCAiVW5hYmxlIHRvIHJlYWQgQ0JV UyBHUElPIHBpbnMsICVkXG4iLCBydik7CisKKwlyZXR1cm4gISEodmFsICYgQklUKGNidXNfaWR4 KSk7Cit9CisKK3N0YXRpYyB2b2lkIGZ0ZGlfY2J1c19ncGlvX3NldChzdHJ1Y3QgZ3Bpb19jaGlw ICpnYywgdW5zaWduZWQgZ3BpbywgaW50IHZhbCkKK3sKKwlzdHJ1Y3QgZnRkaV9ncGlvY2hpcCAq ZmdjID0gZ3Bpb2NoaXBfZ2V0X2RhdGEoZ2MpOworCXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0g ZmdjLT5wb3J0LT5zZXJpYWwtPmRldjsKKwlpbnQgcnY7CisKKwlpZiAodmFsKQorCQlzZXRfYml0 KGZnYy0+Y2J1c19tYXBbZ3Bpb10sICZmZ2MtPmNidXNfbWFzayk7CisJZWxzZQorCQljbGVhcl9i aXQoZmdjLT5jYnVzX21hcFtncGlvXSwgJmZnYy0+Y2J1c19tYXNrKTsKKworCXJ2ID0gZnRkaV9z ZXRfYml0bW9kZShmZ2MtPnBvcnQsIGZnYy0+Y2J1c19tYXNrLCBGVERJX1NJT19CSVRNT0RFX0NC VVMpOworCWlmIChydikKKwkJZGV2X2VycigmdWRldi0+ZGV2LCAiVW5hYmxlIHNldCBDQlVTIEJp dC1CYW5nIG1vZGUsICVkXG4iLCBydik7Cit9CisKK3N0YXRpYyBpbnQgZnRkaV9yZWdpc3Rlcl9j YnVzX2dwaW9jaGlwKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpCit7CisJc3RydWN0IGZ0 ZGlfcHJpdmF0ZSAqcHJpdiA9IHVzYl9nZXRfc2VyaWFsX3BvcnRfZGF0YShwb3J0KTsKKwlzdHJ1 Y3QgdXNiX2RldmljZSAqdWRldiA9IHBvcnQtPnNlcmlhbC0+ZGV2OworCXN0cnVjdCBmdGRpX2dw aW9jaGlwICpmZ2M7CisJaW50IHJ2OworCisJZmdjID0ga3phbGxvYyhzaXplb2YoKmZnYyksIEdG UF9LRVJORUwpOworCWlmICghZmdjKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWlmIChwcml2LT5j aGlwX3R5cGUgPT0gRlRYKSB7CisJCXVuc2lnbmVkIGNoYXIgKmNidXNfbXV4OworCQl1bnNpZ25l ZCBpbnQgaTsKKworCQljYnVzX211eCA9IGttYWxsb2MoNCwgR0ZQX0tFUk5FTCk7CisJCWlmICgh Y2J1c19tdXgpCisJCQlyZXR1cm4gLUVOT01FTTsKKworCQkvKiBDQlVTIHBpbnMgYXJlIGluZGl2 aWR1YWxseSBjb25maWd1cmFibGUgdmlhIDgtYml0IE1VWCBjb250cm9sCisJCSAqIHZhbHVlLCBs aXZpbmcgYXQgMHgxYSBmb3IgQ0JVUzAuIGNmIGFwcGxpY2F0aW9uIG5vdGUgQU5fMjAxLgorCQkg Ki8KKwkJcnYgPSBmdGRpX3JlYWRfZWVwcm9tKHVkZXYsIDB4MWEsIGNidXNfbXV4LCA0KTsKKwkJ aWYgKHJ2KSB7CisJCQlkZXZfZXJyKCZ1ZGV2LT5kZXYsICJVbmFibGUgdG8gcmVhZCBDQlVTIGNv bmZpZ1xuIik7CisJCQlrZnJlZShjYnVzX211eCk7CisJCQlyZXR1cm4gLUVJTzsKKwkJfQorCisJ CWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJCWlmIChjYnVzX211eFtpXSA9PSBGVFhfQ0JV U19NVVhfSU8pCisJCQkJZmdjLT5jYnVzX21hcFtmZ2MtPmdjLm5ncGlvKytdID0gaTsKKwkJfQor CisJCWtmcmVlKGNidXNfbXV4KTsKKwl9CisKKwlpZiAoIWZnYy0+Z2MubmdwaW8pIHsKKwkJa2Zy ZWUoZmdjKTsKKwkJcmV0dXJuIDA7CisJfQorCisJZmdjLT5nYy5sYWJlbCA9ICJmdGRpLWNidXMt Z3BpbyI7CisJZmdjLT5nYy5kaXJlY3Rpb25faW5wdXQgPSBmdGRpX2NidXNfZ3Bpb19kaXJfaW47 CisJZmdjLT5nYy5kaXJlY3Rpb25fb3V0cHV0ID0gZnRkaV9jYnVzX2dwaW9fZGlyX291dDsKKwlm Z2MtPmdjLnNldCA9IGZ0ZGlfY2J1c19ncGlvX3NldDsKKwlmZ2MtPmdjLmdldCA9IGZ0ZGlfY2J1 c19ncGlvX2dldDsKKwlmZ2MtPmdjLmNhbl9zbGVlcCA9IHRydWU7CisJZmdjLT5nYy5wYXJlbnQg PSAmdWRldi0+ZGV2OworCWZnYy0+Z2MuYmFzZSA9IC0xOworCWZnYy0+Z2Mub3duZXIgPSBUSElT X01PRFVMRTsKKwlmZ2MtPnBvcnQgPSBwb3J0OworCisJcnYgPSBncGlvY2hpcF9hZGRfZGF0YSgm ZmdjLT5nYywgZmdjKTsKKwlpZiAocnYpIHsKKwkJZGV2X2VycigmdWRldi0+ZGV2LCAiVW5hYmxl IHRvIGFkZCBncGlvY2hpcFxuIik7CisJCWtmcmVlKGZnYyk7CisJCXJldHVybiBydjsKKwl9CisK Kwlwcml2LT5mZ2MgPSBmZ2M7CisKKwlkZXZfaW5mbygmdWRldi0+ZGV2LAorCQkgIkZUREkgVVNC IEdQSU8gY29udHJvbGxlciBSZWdpc3RlcmVkLCBiYXNlPSVkLCBuZ3Bpbz0ldVxuIiwKKwkJIGZn Yy0+Z2MuYmFzZSwgZmdjLT5nYy5uZ3Bpbyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZv aWQgZnRkaV91bnJlZ2lzdGVyX2NidXNfZ3Bpb2NoaXAoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAq cG9ydCkKK3sKKwlzdHJ1Y3QgZnRkaV9wcml2YXRlICpwcml2ID0gdXNiX2dldF9zZXJpYWxfcG9y dF9kYXRhKHBvcnQpOworCXN0cnVjdCBmdGRpX2dwaW9jaGlwICpmZ2MgPSBwcml2LT5mZ2M7CisK KwlpZiAoZmdjKSB7CisJCWdwaW9jaGlwX3JlbW92ZSgmZmdjLT5nYyk7CisJCWtmcmVlKGZnYyk7 CisJfQorfQorCisjZW5kaWYgLyogIENPTkZJR19VU0JfU0VSSUFMX0ZURElfU0lPX0NCVVNfR1BJ TyAqLwogCiAvKiBEZXRlcm1pbmUgdHlwZSBvZiBGVERJIGNoaXAgYmFzZWQgb24gVVNCIGNvbmZp ZyBhbmQgZGVzY3JpcHRvci4gKi8KIHN0YXRpYyB2b2lkIGZ0ZGlfZGV0ZXJtaW5lX3R5cGUoc3Ry dWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCkKQEAgLTE4MTMsNiArMjAyOCwxMCBAQCBzdGF0aWMg aW50IGZ0ZGlfc2lvX3BvcnRfcHJvYmUoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCkKIAkJ cHJpdi0+bGF0ZW5jeSA9IDE2OwogCXdyaXRlX2xhdGVuY3lfdGltZXIocG9ydCk7CiAJY3JlYXRl X3N5c2ZzX2F0dHJzKHBvcnQpOworI2lmZGVmIENPTkZJR19VU0JfU0VSSUFMX0ZURElfU0lPX0NC VVNfR1BJTworCWZ0ZGlfcmVnaXN0ZXJfY2J1c19ncGlvY2hpcChwb3J0KTsKKyNlbmRpZgorCiAJ cmV0dXJuIDA7CiB9CiAKQEAgLTE5MzAsNiArMjE0OSw5IEBAIHN0YXRpYyBpbnQgZnRkaV9zaW9f cG9ydF9yZW1vdmUoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCkKIHsKIAlzdHJ1Y3QgZnRk aV9wcml2YXRlICpwcml2ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQpOwogCisjaWZk ZWYgQ09ORklHX1VTQl9TRVJJQUxfRlRESV9TSU9fQ0JVU19HUElPCisJZnRkaV91bnJlZ2lzdGVy X2NidXNfZ3Bpb2NoaXAocG9ydCk7CisjZW5kaWYKIAlyZW1vdmVfc3lzZnNfYXR0cnMocG9ydCk7 CiAKIAlrZnJlZShwcml2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Np by5oIGIvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmgKaW5kZXggZGNkMGI2ZS4uM2JkMjQ4 ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmgKKysrIGIvZHJpdmVy cy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmgKQEAgLTM2LDYgKzM2LDEwIEBACiAjZGVmaW5lIEZURElf U0lPX1NFVF9FUlJPUl9DSEFSCQk3IC8qIFNldCB0aGUgZXJyb3IgY2hhcmFjdGVyICovCiAjZGVm aW5lIEZURElfU0lPX1NFVF9MQVRFTkNZX1RJTUVSCTkgLyogU2V0IHRoZSBsYXRlbmN5IHRpbWVy ICovCiAjZGVmaW5lIEZURElfU0lPX0dFVF9MQVRFTkNZX1RJTUVSCTEwIC8qIEdldCB0aGUgbGF0 ZW5jeSB0aW1lciAqLworI2RlZmluZSBGVERJX1NJT19TRVRfQklUTU9ERQkJMTEgLyogU2V0IHRo ZSBiaXRtb2RlICovCisjZGVmaW5lIEZURElfU0lPX1JFQURfUElOUwkJMTIgLyogUmVhZCBwaW5z IGluIGJpdG1vZGUgKi8KKyNkZWZpbmUgRlRESV9TSU9fUkVBRF9FRVBST00JCTB4OTAgLyogUmVh ZCBlZXByb20gKi8KKyNkZWZpbmUgRlRESV9TSU9fV1JJVEVfRUVQUk9NCQkweDkxIC8qIFdyaXRl IGVlcHJvbSAqLwogCiAvKiBJbnRlcmZhY2UgaW5kaWNlcyBmb3IgRlQyMjMyLCBGVDIyMzJIIGFu ZCBGVDQyMzJIIGRldmljZXMgKi8KICNkZWZpbmUgSU5URVJGQUNFX0EJCTEKQEAgLTQwMCw2ICs0 MDQsNjAgQEAgZW51bSBmdGRpX3Npb19iYXVkcmF0ZSB7CiAgKgogICovCiAKKyAvKiBGVERJX1NJ T19SRUFEX0VFUFJPTSAqLworI2RlZmluZSBGVERJX1NJT19SRUFEX0VFUFJPTV9SRVFVRVNUX1RZ UEUgMHhjMAorI2RlZmluZSBGVERJX1NJT19SRUFEX0VFUFJPTV9SRVFVRVNUIEZURElfU0lPX1JF QURfRUVQUk9NCisvKgorICogIEJtUmVxdWVzdFR5cGU6ICAgMTEwMCAwMDAwYgorICogIGJSZXF1 ZXN0OiAgICAgICAgRlRESV9TSU9fUkVBRF9FRVBST00KKyAqICB3VmFsdWU6ICAgICAgICAgIDAK KyAqICB3SW5kZXg6ICAgICAgICAgIFdvcmQgSW5kZXgKKyAqICB3TGVuZ3RoOiAgICAgICAgIDIK KyAqICBEYXRhOiAgICAgICAgICAgIHJldHVybiBkYXRhIChhIHdvcmQpCisgKgorICovCisKKy8q IEZURElfU0lPX1dSSVRFX0VFUFJPTSAqLworI2RlZmluZSBGVERJX1NJT19XUklURV9FRVBST01f UkVRVUVTVF9UWVBFIDB4NDAKKyNkZWZpbmUgRlRESV9TSU9fV1JJVEVfRUVQUk9NX1JFUVVFU1Qg RlRESV9TSU9fV1JJVEVfRUVQUk9NCisvKgorICogIEJtUmVxdWVzdFR5cGU6ICAgMDEwMCAwMDAw YgorICogIGJSZXF1ZXN0OiAgICAgICAgRlRESV9TSU9fV1JJVEVfRUVQUk9NCisgKiAgd1ZhbHVl OiAgICAgICAgICBEYXRhICh3b3JkKQorICogIHdJbmRleDogICAgICAgICAgV29yZCBJbmRleAor ICogIHdMZW5ndGg6ICAgICAgICAgMAorICogIERhdGE6ICAgICAgICAgICAgTm9uZQorICoKKyAq LworCisgLyogRlRESV9TSU9fU0VUX0JJVE1PREUgKi8KKyNkZWZpbmUgRlRESV9TSU9fU0VUX0JJ VE1PREVfUkVRVUVTVF9UWVBFIDB4NDAKKyNkZWZpbmUgRlRESV9TSU9fU0VUX0JJVE1PREVfUkVR VUVTVCBGVERJX1NJT19TRVRfQklUTU9ERQorI2RlZmluZSBGVERJX1NJT19CSVRNT0RFX1JFU0VU IDB4MDAKKyNkZWZpbmUgRlRESV9TSU9fQklUTU9ERV9DQlVTIDB4MjAKKy8qCisgKiAgQm1SZXF1 ZXN0VHlwZTogICAwMTAwIDAwMDBiCisgKiAgYlJlcXVlc3Q6ICAgICAgICBGVERJX1NJT19TRVRf QklUTU9ERQorICogIHdWYWx1ZTogICAgICAgICAgWzAtN10gYml0bWFzaywgWzgtMTVdIGJpdG1v ZGUKKyAqICB3SW5kZXg6ICAgICAgICAgIFBvcnQKKyAqICB3TGVuZ3RoOiAgICAgICAgIDAKKyAq ICBEYXRhOiAgICAgICAgICAgIE5vbmUKKyAqCisgKi8KKworLyogRlRESV9TSU9fUkVBRF9QSU5T ICovCisjZGVmaW5lIEZURElfU0lPX1JFQURfUElOU19SRVFVRVNUX1RZUEUgMHhDMAorI2RlZmlu ZSBGVERJX1NJT19SRUFEX1BJTlNfUkVRVUVTVCBGVERJX1NJT19SRUFEX1BJTlMKKy8qCisgKiAg Qm1SZXF1ZXN0VHlwZTogICAxMTAwIDAwMDBiCisgKiAgYlJlcXVlc3Q6ICAgICAgICBGVERJX1NJ T19SRUFEX1BJTlMKKyAqICB3VmFsdWU6ICAgICAgICAgIDAKKyAqICB3SW5kZXg6ICAgICAgICAg IFBvcnQKKyAqICB3TGVuZ3RoOiAgICAgICAgIDIKKyAqICBEYXRhOiAgICAgICAgICAgIHJldHVy biBkYXRhIChhIHdvcmQpCisgKgorICovCisKIC8qIEZURElfU0lPX0dFVF9NT0RFTV9TVEFUVVMg Ki8KIC8qIFJldHJpZXZlIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBtb2RlbSBzdGF0dXMgcmVn aXN0ZXIgKi8KIApAQCAtNTYzLDMgKzYyMSwyOCBAQCBlbnVtIGZ0ZGlfc2lvX2JhdWRyYXRlIHsK ICAqIEIyLi43CUxlbmd0aCBvZiBtZXNzYWdlIC0gKG5vdCBpbmNsdWRpbmcgQnl0ZSAwKQogICoK ICAqLworCitlbnVtIGZ0ZGlfZnR4X2NidXNfbXV4IHsKKwlGVFhfQ0JVU19NVVhfVFJJU1RBVEUs CisJRlRYX0NCVVNfTVVYX1JYTEVELAorCUZUWF9DQlVTX01VWF9UWExFRCwKKwlGVFhfQ0JVU19N VVhfVFhSWExFRCwKKwlGVFhfQ0JVU19NVVhfUFdSRU4sCisJRlRYX0NCVVNfTVVYX1NMRUVQLAor CUZUWF9DQlVTX01VWF9EUklWRTAsCisJRlRYX0NCVVNfTVVYX0RSSVZFMSwKKwlGVFhfQ0JVU19N VVhfSU8sCisJRlRYX0NCVVNfTVVYX1RYREVOLAorCUZUWF9DQlVTX01VWF9DTEsyNCwKKwlGVFhf Q0JVU19NVVhfQ0xLMTIsCisJRlRYX0NCVVNfTVVYX0NMSzYsCisJRlRYX0NCVVNfTVVYX0JDRF9D SEFSR0VSLAorCUZUWF9DQlVTX01VWF9CQ0RfQ0hBUkdFUl9OLAorCUZUWF9DQlVTX01VWF9JMkNf VFhFLAorCUZUWF9DQlVTX01VWF9JMkNfUlhGLAorCUZUWF9DQlVTX01VWF9WQlVTX1NFTlNFLAor CUZUWF9DQlVTX01VWF9CSVRCQU5HX1dSLAorCUZUWF9DQlVTX01VWF9CSVRCQU5HX1JELAorCUZU WF9DQlVTX01VWF9USU1FU1RBTVAsCisJRlRYX0NCVVNfTVVYX0tFRVBfQVdBS0UKK307Cg==