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 MTP NVM support From: Loic Poulain Message-Id: <1529006926-11401-1-git-send-email-loic.poulain@linaro.org> Date: Thu, 14 Jun 2018 22:08:46 +0200 To: johan@kernel.org Cc: linux-usb@vger.kernel.org, srinivas.kandagatla@linaro.org, daniel.thompson@linaro.org, Loic Poulain List-ID: TW9zdCBvZiBGVERJJ3MgZGV2aWNlcyBoYXZlIGFuIEVFUFJPTSB3aGljaCByZWNvcmRzIEZUREkg ZGV2aWNlcwpjb25maWd1cmF0aW9uIHNldHRpbmcgKGUuZy4gdGhlIFZJRCwgUElELCBJL08gY29u ZmlnLi4uKSBhbmQgdXNlcgpkYXRhLiBGVDIzMFIgY2hpcCBpbnRlZ3JhdGVzIGEgMTI4LWJ5dGUg ZWVwcm9tLCBGVDIzMFggYSAyMDQ4LWJ5dGUKZWVwcm9tLi4uCgpUaGlzIHBhdGNoIGFkZHMgc3Vw cG9ydCBmb3IgRlRESSBFRVBST00gcmVhZC93cml0ZSB2aWEgVVNCIGNvbnRyb2wKdHJhbnNmZXJz IGFuZCByZWdpc3RlciBhIG5ldyBudm0gZGV2aWNlIHRvIHRoZSBudm1lbSBjb3JlLgoKVGhpcyBw ZXJtaXRzIHRvIGV4cG9zZSB0aGUgZWVwcm9tIGFzIGEgc3lzZnMgZmlsZSwgYWxsb3dpbmcgdXNl cnNwYWNlCnRvIHJlYWQvbW9kaWZ5IEZUREkgY29uZmlndXJhdGlvbiBhbmQgaXRzIHVzZXIgZGF0 YSB3aXRob3V0IGhhdmluZyB0bwpyZWx5IG9uIGEgc3BlY2lmaWMgdXNlcnNwYWNlIFVTQiBkcml2 ZXIuCgpNb3Jlb3ZlciwgYW55IHVwY29taW5nIG5ldyB0ZW50YXRpdmUgdG8gYWRkIENCVVMgR1BJ TyBzdXBwb3J0IGNvdWxkCmludGVncmF0ZSBDQlVTIEVFUFJPTSBjb25maWd1cmF0aW9uIHJlYWRp bmcgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lCndoaWNoIG9mIHRoZSBDQlVTIHBpbnMgYXJlIGF2YWls YWJsZSBhcyBHUElPLgoKU2lnbmVkLW9mZi1ieTogTG9pYyBQb3VsYWluIDxsb2ljLnBvdWxhaW5A bGluYXJvLm9yZz4KLS0tCiBkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZyAgICB8ICAxMSArKysr KwogZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmMgfCAxMDggKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uaCB8 ICAyOCArKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxNDcgaW5zZXJ0aW9ucygrKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnIGIvZHJpdmVycy91c2Ivc2VyaWFs L0tjb25maWcKaW5kZXggNTMzZjEyNy4uMmRkMmY1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Iv c2VyaWFsL0tjb25maWcKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWcKQEAgLTE4MSw2 ICsxODEsMTcgQEAgY29uZmlnIFVTQl9TRVJJQUxfRlRESV9TSU8KIAkgIFRvIGNvbXBpbGUgdGhp cyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQogCSAgbW9kdWxlIHdpbGwg YmUgY2FsbGVkIGZ0ZGlfc2lvLgogCitjb25maWcgVVNCX1NFUklBTF9GVERJX1NJT19OVk1FTQor ICAgICAgICBib29sICJGVERJIE1UUCBub24tdm9sYXRpbGUgbWVtb3J5IHN1cHBvcnQiCisJZGVw ZW5kcyBvbiBVU0JfU0VSSUFMX0ZURElfU0lPCisgICAgICAgIHNlbGVjdCBOVk1FTQorICAgICAg ICBkZWZhdWx0IHkKKyAgICAgICAgaGVscAorCSAgU2F5IHllcyBoZXJlIHRvIGFkZCBzdXBwb3J0 IGZvciB0aGUgTVRQIG5vbi12b2xhdGlsZSBtZW1vcnkKKwkgIHByZXNlbnQgb24gRlRESS4gTW9z dCBvZiBGVERJJ3MgZGV2aWNlcyBoYXZlIGFuIEVFUFJPTSB3aGljaAorCSAgcmVjb3JkcyBGVERJ IGRldmljZSdzIGNvbmZpZ3VyYXRpb24gc2V0dGluZyBhcyB3ZWxsIGFzIHVzZXIKKwkgIGRhdGEu CisKIGNvbmZpZyBVU0JfU0VSSUFMX1ZJU09SCiAJdHJpc3RhdGUgIlVTQiBIYW5kc3ByaW5nIFZp c29yIC8gUGFsbSBtNTB4IC8gU29ueSBDbGllIERyaXZlciIKIAloZWxwCmRpZmYgLS1naXQgYS9k cml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Np by5jCmluZGV4IDdlYTIyMWQuLjAzYzljNzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3Nlcmlh bC9mdGRpX3Npby5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jCkBAIC00MCw2 ICs0MCw3IEBACiAjaW5jbHVkZSA8bGludXgvdXNiLmg+CiAjaW5jbHVkZSA8bGludXgvc2VyaWFs Lmg+CiAjaW5jbHVkZSA8bGludXgvdXNiL3NlcmlhbC5oPgorI2luY2x1ZGUgPGxpbnV4L252bWVt LXByb3ZpZGVyLmg+CiAjaW5jbHVkZSAiZnRkaV9zaW8uaCIKICNpbmNsdWRlICJmdGRpX3Npb19p ZHMuaCIKIApAQCAtNzMsNiArNzQsOCBAQCBzdHJ1Y3QgZnRkaV9wcml2YXRlIHsKIAl1bnNpZ25l ZCBpbnQgbGF0ZW5jeTsJCS8qIGxhdGVuY3kgc2V0dGluZyBpbiB1c2UgKi8KIAl1bnNpZ25lZCBz aG9ydCBtYXhfcGFja2V0X3NpemU7CiAJc3RydWN0IG11dGV4IGNmZ19sb2NrOyAvKiBBdm9pZCBt ZXNzIGJ5IHBhcmFsbGVsIGNhbGxzIG9mIGNvbmZpZyBpb2N0bCgpIGFuZCBjaGFuZ2Vfc3BlZWQo KSAqLworCisJc3RydWN0IG52bWVtX2RldmljZSAqZWVwcm9tOwogfTsKIAogLyogc3RydWN0IGZ0 ZGlfc2lvX3F1aXJrIGlzIHVzZWQgYnkgZGV2aWNlcyByZXF1aXJpbmcgc3BlY2lhbCBhdHRlbnRp b24uICovCkBAIC0xNTI5LDYgKzE1MzIsMTA0IEBAIHN0YXRpYyBpbnQgZ2V0X2xzcl9pbmZvKHN0 cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQsCiAJcmV0dXJuIDA7CiB9CiAKKyNpZiBJU19FTkFC TEVEKENPTkZJR19VU0JfU0VSSUFMX0ZURElfU0lPX05WTUVNKQorCitzdGF0aWMgaW50IHdyaXRl X2VlcHJvbSh2b2lkICpwcml2LCB1bnNpZ25lZCBpbnQgb2ZmLCB2b2lkICpfdmFsLCBzaXplX3Qg Ynl0ZXMpCit7CisJc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCA9IHByaXY7CisJc3RydWN0 IHVzYl9zZXJpYWwgKnNlcmlhbCA9IHBvcnQtPnNlcmlhbDsKKwlzdHJ1Y3QgdXNiX2RldmljZSAq dWRldiA9IHNlcmlhbC0+ZGV2OworCXVuc2lnbmVkIGNoYXIgKmJ1ZiA9IF92YWw7CisKKwl3aGls ZSAoYnl0ZXMpIHsKKwkJdWludDE2X3QgdmFsOworCQlpbnQgcnY7CisKKwkJdmFsID0gYnVmWzBd ICsgKGJ1ZlsxXSA8PCA4KTsKKworCQlydiA9IHVzYl9jb250cm9sX21zZyh1ZGV2LCB1c2Jfc25k Y3RybHBpcGUodWRldiwgMCksCisJCQkJICAgICBGVERJX1NJT19XUklURV9FRVBST01fUkVRVUVT VCwKKwkJCQkgICAgIEZURElfU0lPX1dSSVRFX0VFUFJPTV9SRVFVRVNUX1RZUEUsCisJCQkJICAg ICB2YWwsIG9mZiAvIDIsIE5VTEwsIDAsIFdEUl9USU1FT1VUKTsKKwkJaWYgKHJ2IDwgMCkKKwkJ CXJldHVybiBydjsKKworCQlvZmYgKz0gMjsKKwkJYnVmICs9IDI7CisJCWJ5dGVzIC09IDI7CisJ fQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcmVhZF9lZXByb20odm9pZCAqcHJpdiwg dW5zaWduZWQgaW50IG9mZiwgdm9pZCAqdmFsLCBzaXplX3QgYnl0ZXMpCit7CisJc3RydWN0IHVz Yl9zZXJpYWxfcG9ydCAqcG9ydCA9IHByaXY7CisJc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbCA9 IHBvcnQtPnNlcmlhbDsKKwlzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHNlcmlhbC0+ZGV2Owor CXVuc2lnbmVkIGNoYXIgKmJ1ZiA9IHZhbDsKKworCXdoaWxlIChieXRlcykgeworCQlpbnQgcnY7 CisKKwkJcnYgPSB1c2JfY29udHJvbF9tc2codWRldiwgdXNiX3JjdmN0cmxwaXBlKHVkZXYsIDAp LAorCQkJCSAgICAgRlRESV9TSU9fUkVBRF9FRVBST01fUkVRVUVTVCwKKwkJCQkgICAgIEZURElf U0lPX1JFQURfRUVQUk9NX1JFUVVFU1RfVFlQRSwKKwkJCQkgICAgIDAsIG9mZiAvIDIsIGJ1Ziwg MiwgV0RSX1RJTUVPVVQpOworCQlpZiAocnYgPCAwKQorCQkJcmV0dXJuIHJ2OworCisJCW9mZiAr PSAyOworCQlidWYgKz0gMjsKKwkJYnl0ZXMgLT0gMjsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGludCByZWdpc3Rlcl9lZXByb20oc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCkK K3sKKwlzdHJ1Y3QgZnRkaV9wcml2YXRlICpwcml2ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRh KHBvcnQpOworCXN0cnVjdCBudm1lbV9jb25maWcgbnZtY29uZiA9IHt9OworCisJc3dpdGNoIChw cml2LT5jaGlwX3R5cGUpIHsKKwljYXNlIEZUWDoKKwkJbnZtY29uZi5zaXplID0gMjA0ODsKKwkJ YnJlYWs7CisJY2FzZSBGVDIzMlJMOgorCQludm1jb25mLnNpemUgPSAxMjg7CisJCWJyZWFrOwor CWRlZmF1bHQ6CisJCXJldHVybiAwOworCX0KKworCW52bWNvbmYud29yZF9zaXplID0gMjsKKwlu dm1jb25mLnN0cmlkZSA9IDI7CisJbnZtY29uZi5yZWFkX29ubHkgPSBmYWxzZTsKKwludm1jb25m LnByaXYgPSBwb3J0OworCW52bWNvbmYuZGV2ID0gJnBvcnQtPmRldjsKKwludm1jb25mLnJlZ19y ZWFkID0gcmVhZF9lZXByb207CisJbnZtY29uZi5yZWdfd3JpdGUgPSB3cml0ZV9lZXByb207CisJ bnZtY29uZi5vd25lciA9IFRISVNfTU9EVUxFOworCisJcHJpdi0+ZWVwcm9tID0gbnZtZW1fcmVn aXN0ZXIoJm52bWNvbmYpOworCWlmIChJU19FUlIocHJpdi0+ZWVwcm9tKSkgeworCQlwcml2LT5l ZXByb20gPSBOVUxMOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIHZvaWQgdW5yZWdpc3Rlcl9lZXByb20oc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9y dCkKK3sKKwlzdHJ1Y3QgZnRkaV9wcml2YXRlICpwcml2ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9k YXRhKHBvcnQpOworCisJaWYgKHByaXYtPmVlcHJvbSkKKwkJbnZtZW1fdW5yZWdpc3Rlcihwcml2 LT5lZXByb20pOworfQorCisjZW5kaWYgLyogQ09ORklHX1VTQl9TRVJJQUxfRlRESV9TSU9fTlZN RU0gKi8KIAogLyogRGV0ZXJtaW5lIHR5cGUgb2YgRlRESSBjaGlwIGJhc2VkIG9uIFVTQiBjb25m aWcgYW5kIGRlc2NyaXB0b3IuICovCiBzdGF0aWMgdm9pZCBmdGRpX2RldGVybWluZV90eXBlKHN0 cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpCkBAIC0xODE0LDYgKzE5MTUsMTAgQEAgc3RhdGlj IGludCBmdGRpX3Npb19wb3J0X3Byb2JlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpCiAJ CXByaXYtPmxhdGVuY3kgPSAxNjsKIAl3cml0ZV9sYXRlbmN5X3RpbWVyKHBvcnQpOwogCWNyZWF0 ZV9zeXNmc19hdHRycyhwb3J0KTsKKyNpZiBJU19FTkFCTEVEKENPTkZJR19VU0JfU0VSSUFMX0ZU RElfU0lPX05WTUVNKQorCXJlZ2lzdGVyX2VlcHJvbShwb3J0KTsKKyNlbmRpZgorCiAJcmV0dXJu IDA7CiB9CiAKQEAgLTE5MzEsNiArMjAzNiw5IEBAIHN0YXRpYyBpbnQgZnRkaV9zaW9fcG9ydF9y ZW1vdmUoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCkKIHsKIAlzdHJ1Y3QgZnRkaV9wcml2 YXRlICpwcml2ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQpOwogCisjaWYgSVNfRU5B QkxFRChDT05GSUdfVVNCX1NFUklBTF9GVERJX1NJT19OVk1FTSkKKwl1bnJlZ2lzdGVyX2VlcHJv bShwb3J0KTsKKyNlbmRpZgogCXJlbW92ZV9zeXNmc19hdHRycyhwb3J0KTsKIAogCWtmcmVlKHBy aXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmggYi9kcml2ZXJz L3VzYi9zZXJpYWwvZnRkaV9zaW8uaAppbmRleCBkY2QwYjZlLi45ZWFiOTYxIDEwMDY0NAotLS0g YS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uaAorKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwv ZnRkaV9zaW8uaApAQCAtMzYsNiArMzYsOCBAQAogI2RlZmluZSBGVERJX1NJT19TRVRfRVJST1Jf Q0hBUgkJNyAvKiBTZXQgdGhlIGVycm9yIGNoYXJhY3RlciAqLwogI2RlZmluZSBGVERJX1NJT19T RVRfTEFURU5DWV9USU1FUgk5IC8qIFNldCB0aGUgbGF0ZW5jeSB0aW1lciAqLwogI2RlZmluZSBG VERJX1NJT19HRVRfTEFURU5DWV9USU1FUgkxMCAvKiBHZXQgdGhlIGxhdGVuY3kgdGltZXIgKi8K KyNkZWZpbmUgRlRESV9TSU9fUkVBRF9FRVBST00JCTB4OTAgLyogUmVhZCBlZXByb20gKi8KKyNk ZWZpbmUgRlRESV9TSU9fV1JJVEVfRUVQUk9NCQkweDkxIC8qIFdyaXRlIGVlcHJvbSAqLwogCiAv KiBJbnRlcmZhY2UgaW5kaWNlcyBmb3IgRlQyMjMyLCBGVDIyMzJIIGFuZCBGVDQyMzJIIGRldmlj ZXMgKi8KICNkZWZpbmUgSU5URVJGQUNFX0EJCTEKQEAgLTQwMCw2ICs0MDIsMzIgQEAgZW51bSBm dGRpX3Npb19iYXVkcmF0ZSB7CiAgKgogICovCiAKKyAvKiBGVERJX1NJT19SRUFEX0VFUFJPTSAq LworI2RlZmluZSBGVERJX1NJT19SRUFEX0VFUFJPTV9SRVFVRVNUX1RZUEUgMHhjMAorI2RlZmlu ZSBGVERJX1NJT19SRUFEX0VFUFJPTV9SRVFVRVNUIEZURElfU0lPX1JFQURfRUVQUk9NCisvKgor ICogIEJtUmVxdWVzdFR5cGU6ICAgMTEwMCAwMDAwYgorICogIGJSZXF1ZXN0OiAgICAgICAgRlRE SV9TSU9fUkVBRF9FRVBST00KKyAqICB3VmFsdWU6ICAgICAgICAgIDAKKyAqICB3SW5kZXg6ICAg ICAgICAgIFdvcmQgSW5kZXgKKyAqICB3TGVuZ3RoOiAgICAgICAgIDIKKyAqICBEYXRhOiAgICAg ICAgICAgIHJldHVybiBkYXRhIChhIHdvcmQpCisgKgorICovCisKKy8qIEZURElfU0lPX1dSSVRF X0VFUFJPTSAqLworI2RlZmluZSBGVERJX1NJT19XUklURV9FRVBST01fUkVRVUVTVF9UWVBFIDB4 NDAKKyNkZWZpbmUgRlRESV9TSU9fV1JJVEVfRUVQUk9NX1JFUVVFU1QgRlRESV9TSU9fV1JJVEVf RUVQUk9NCisvKgorICogIEJtUmVxdWVzdFR5cGU6ICAgMDEwMCAwMDAwYgorICogIGJSZXF1ZXN0 OiAgICAgICAgRlRESV9TSU9fV1JJVEVfRUVQUk9NCisgKiAgd1ZhbHVlOiAgICAgICAgICBEYXRh ICh3b3JkKQorICogIHdJbmRleDogICAgICAgICAgV29yZCBJbmRleAorICogIHdMZW5ndGg6ICAg ICAgICAgMAorICogIERhdGE6ICAgICAgICAgICAgTm9uZQorICoKKyAqLworCiAvKiBGVERJX1NJ T19HRVRfTU9ERU1fU1RBVFVTICovCiAvKiBSZXRyaWV2ZSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0 aGUgbW9kZW0gc3RhdHVzIHJlZ2lzdGVyICovCiAK