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: [v4] USB: serial: ftdi_sio: implement GPIO support for FT-X devices From: Johan Hovold Message-Id: <20180918091634.GC3943@localhost> Date: Tue, 18 Sep 2018 11:16:34 +0200 To: Karoly Pados Cc: Johan Hovold , Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Loic Poulain List-ID: T24gU3VuLCBTZXAgMTYsIDIwMTggYXQgMDc6NTg6NDdQTSArMDIwMCwgS2Fyb2x5IFBhZG9zIHdy b3RlOgo+IFRoaXMgcGF0Y2ggYWxsb3dzIHVzaW5nIHRoZSBDQlVTIHBpbnMgb2YgRlQtWCBkZXZp Y2VzIGFzIEdQSU8gaW4gQ0JVUwo+IGJpdGJhbmdpbmcgbW9kZS4gVGhlcmUgaXMgbm8gY29uZmxp Y3QgYmV0d2VlbiB0aGUgR1BJTyBhbmQgVkNQCj4gZnVuY3Rpb25hbGl0eSBpbiB0aGlzIG1vZGUu IFRlc3RlZCBvbiBGVDIzMFggYW5kIEZUMjMxWC4KPiAKPiBBcyB0aGVyZSBpcyBubyB3YXkgdG8g cmVxdWVzdCB0aGUgY3VycmVudCBDQlVTIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24KPiBmcm9tIHRo ZSBkZXZpY2UsIGFsbCBDQlVTIHBpbnMgYXJlIHNldCB0byBhIGtub3duIHN0YXRlIHdoZW4gdGhl IGZpcnN0Cj4gR1BJTyBpcyByZXF1ZXN0ZWQuIFRoaXMgYWxsb3dzIHVzaW5nIGxpYmZ0ZGkgdG8g c2V0IHRoZSBHUElPIHBpbnMKPiBiZWZvcmUgbG9hZGluZyB0aGlzIG1vZHVsZSBmb3IgVUFSVCBm dW5jdGlvbmFsaXR5LCBhIGJlaGF2aW9yIHRoYXQKPiBleGlzdGluZyBhcHBsaWNhdGlvbnMgbWln aHQgYmUgcmVseWluZyB1cG9uICh0aG91Z2ggbm8gc3BlY2lmaWMgY2FzZQo+IGlzIGtub3duIHRv IHRoZSBhdXRob3JzIG9mIHRoaXMgcGF0Y2gpLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEthcm9seSBQ YWRvcyA8cGFkb3NAcGFkb3MuaHU+Cj4gLS0tCj4gQ2hhbmdlbG9nOgo+IC0gdjI6IEZpeCBjb21w aWxlIGVycm9yIHdoZW4gQ09ORklHX0dQSU9MSUIgaXMgbm90IGRlZmluZWQuCj4gLSB2MzogSW5j b3Jwb3JhdGUgcmV2aWV3IGZlZWRiYWNrLgo+IC0gdjQ6IEluY2x1ZGUgbGludXgvZ3Bpby9kcml2 ZXIuaCB1bmNvbmRpdGlvbmFsbHkuCj4gICAgICAgUmVwbGFjZSBhbmQgaW52ZXJ0IGdwaW9faW5w dXQgd2l0aCBncGlvX291dHB1dC4KPiAgICAgICBNYWtlIGZ0ZGlfZ3Bpb19kaXJlY3Rpb25fZ2V0 IHJldHVybiAwLzEuCj4gICAgICAgQ2hhbmdlIGRldl9lcnIgbXNnIGluIGZ0ZGlfc2V0X2JpdG1v ZGVfcmVxLgo+ICAgICAgIENoYW5nZSBmb3JtYXR0aW5nIG9mIGVycm9yIGNoZWNraW5nIGluIGZ0 ZGlfZ3Bpb19nZXQuCj4gICAgICAgRHJvcCBkZXZfZXJyIGluIGZ0ZGlfZ3Bpb19zZXQuCj4gICAg ICAgUmVtb3ZlIHNvbWUgbGluZSBicmVha3MgYW5kIGVtcHR5IGxpbmVzLgo+ICAgICAgIENoYW5n ZSBlcnJvciBoYW5kbGluZyBpbiBmdGRpX3JlYWRfZWVwcm9tIChhbmQgYWRqdXN0IGNhbGxlciku Cj4gICAgICAgUmVwbGFjZSBTSU8tPkZUWCBpbiBGVERJX1NJT19DQlVTX01VWF9HUElPIG1hY3Jv IG5hbWUuCgpSZWFsbHkgbmljZSBqb2Igd2l0aCB0aGlzOyBsb29rcyBuaWNlIGFuZCBjbGVhbiBv dmVyIGFsbC4gSnVzdCBhIGZldwpjb21tZW50cyBiZWxvdy4KCj4gK3N0YXRpYyBpbnQgZnR4X2dw aW9jb25mX2luaXQoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCkKPiArewo+ICsJc3RydWN0 IGZ0ZGlfcHJpdmF0ZSAqcHJpdiA9IHVzYl9nZXRfc2VyaWFsX3BvcnRfZGF0YShwb3J0KTsKPiAr CXN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwgPSBwb3J0LT5zZXJpYWw7Cj4gKwljb25zdCB1MTYg Y2J1c19jZmdfYWRkciA9IDB4MWE7Cj4gKwljb25zdCB1MTYgY2J1c19jZmdfc2l6ZSA9IDg7CgpM b29rcyBsaWtlIHlvdSBvbmx5IG5lZWQgdG8gcmVhZCBmb3VyIGJ5dGVzLgoKPiArCXU4ICpjYnVz X2NmZ19idWY7Cj4gKwlpbnQgcmVzdWx0Owo+ICsJdTggaTsKPiArCj4gKwkvKiBSZWFkIGEgcGFy dCBvZiBkZXZpY2UgRUVQUk9NICovCj4gKwljYnVzX2NmZ19idWYgPSBrbWFsbG9jKGNidXNfY2Zn X3NpemUsIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFjYnVzX2NmZ19idWYpCj4gKwkJcmV0dXJuIC1F Tk9NRU07Cj4gKwo+ICsJcmVzdWx0ID0gZnRkaV9yZWFkX2VlcHJvbShzZXJpYWwsIGNidXNfY2Zn X2J1ZiwKPiArCQkJCSAgY2J1c19jZmdfYWRkciwgY2J1c19jZmdfc2l6ZSk7Cj4gKwlpZiAocmVz dWx0ICE9IDApCgpyZXN1bHQgPCAwIHdvdWxkIGJlIG1vcmUgaW5mb3JtYXRpdmUgaGVyZS4KCj4g KwkJZ290byBvdXRfZnJlZTsKPiArCj4gKwkvKiBDaGlwLXR5cGUgZ3Vlc3NpbmcgbG9naWMgYmFz ZWQgb24gbGliZnRkaS4gKi8KPiArCXByaXYtPmdjLm5ncGlvID0gNDsgIC8qIEZUMjMwWCwgRlQy MzFYICovCj4gKwlpZiAobGUxNl90b19jcHUoc2VyaWFsLT5kZXYtPmRlc2NyaXB0b3IuYmNkRGV2 aWNlKSAhPSAweDEwMDApCj4gKwkJcHJpdi0+Z2MubmdwaW8gPSAxOyAgLyogRlQyMzRYRCAqLwoK QXMgSSBtZW50aW9uZWQgaW4gbXkgbGFzdCBtYWlsOiBJJ3ZlIGFza2VkIEZUREkgYWJvdXQgdGhp cywgYnV0IEkgZmVhcgp0aGF0IEZUWDIzNFhEIGhhcyBiY2REZXZpY2UgMHgxMDAwIGFuZCB3ZSBt YXkgbmVlZCB0byBqdXN0IGFsd2F5cwpyZWdpc3RlciBhbGwgZm91ciBwaW5zIGFmdGVyIGFsbC4K Cj4gKwkvKiBEZXRlcm1pbmUgd2hpY2ggcGlucyBhcmUgY29uZmlndXJlZCBmb3IgQ0JVUyBiaXRi YW5naW5nICovCj4gKwlwcml2LT5ncGlvX2FsdGZ1bmMgPSAweGZmOwo+ICsJZm9yIChpID0gMDsg aSA8IHByaXYtPmdjLm5ncGlvOyArK2kpIHsKPiArCQlpZiAoY2J1c19jZmdfYnVmW2ldID09IEZU RElfRlRYX0NCVVNfTVVYX0dQSU8pCj4gKwkJCXByaXYtPmdwaW9fYWx0ZnVuYyAmPSB+QklUKGkp Owo+ICsJfQo+ICsKPiArb3V0X2ZyZWU6Cj4gKwlrZnJlZShjYnVzX2NmZ19idWYpOwo+ICsKPiAr CXJldHVybiByZXN1bHQ7Cj4gK30KCj4gK3N0YXRpYyB2b2lkIGZ0ZGlfZ3Bpb19yZW1vdmUoc3Ry dWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCkKPiArewo+ICsJc3RydWN0IGZ0ZGlfcHJpdmF0ZSAq cHJpdiA9IHVzYl9nZXRfc2VyaWFsX3BvcnRfZGF0YShwb3J0KTsKPiArCj4gKwlpZiAocHJpdi0+ Z3Bpb191c2VkKSB7Cj4gKwkJLyogUmVtYXJrOiBFeGl0aW5nIENCVVMtbW9kZSBkb2VzIG5vdCBy ZXNldCBwaW4gc3RhdGVzIHRvbyAqLwo+ICsJCWZ0ZGlfZXhpdF9jYnVzX21vZGUocG9ydCk7Cj4g KwkJcHJpdi0+Z3Bpb191c2VkID0gZmFsc2U7Cj4gKwl9CgpUaGlzIHNob3VsZCBnbyBhZnRlciBk ZXJlZ2lzdHJhdGlvbiBvciB3ZSBoYXZlIGEgdGlueSByYWNlIHdpbmRvdyBoZXJlLgoKPiArCWlm IChwcml2LT5ncGlvX3JlZ2lzdGVyZWQpIHsKPiArCQlncGlvY2hpcF9yZW1vdmUoJnByaXYtPmdj KTsKPiArCQlwcml2LT5ncGlvX3JlZ2lzdGVyZWQgPSBmYWxzZTsKPiArCX0KPiArfQoKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmggYi9kcml2ZXJzL3VzYi9zZXJp YWwvZnRkaV9zaW8uaAo+IGluZGV4IGRjZDBiNmUwNWJhZi4uNjg1NmNjZGFjOWI0IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5oCj4gKysrIGIvZHJpdmVycy91c2Iv c2VyaWFsL2Z0ZGlfc2lvLmgKPiBAQCAtMzUsNyArMzUsMTAgQEAKPiAgI2RlZmluZSBGVERJX1NJ T19TRVRfRVZFTlRfQ0hBUgkJNiAvKiBTZXQgdGhlIGV2ZW50IGNoYXJhY3RlciAqLwo+ICAjZGVm aW5lIEZURElfU0lPX1NFVF9FUlJPUl9DSEFSCQk3IC8qIFNldCB0aGUgZXJyb3IgY2hhcmFjdGVy ICovCj4gICNkZWZpbmUgRlRESV9TSU9fU0VUX0xBVEVOQ1lfVElNRVIJOSAvKiBTZXQgdGhlIGxh dGVuY3kgdGltZXIgKi8KPiAtI2RlZmluZSBGVERJX1NJT19HRVRfTEFURU5DWV9USU1FUgkxMCAv KiBHZXQgdGhlIGxhdGVuY3kgdGltZXIgKi8KPiArI2RlZmluZSBGVERJX1NJT19HRVRfTEFURU5D WV9USU1FUgkweDBhIC8qIEdldCB0aGUgbGF0ZW5jeSB0aW1lciAqLwo+ICsjZGVmaW5lIEZURElf U0lPX1NFVF9CSVRNT0RFCQkweDBiIC8qIFNldCBHUElPIG1vZGUgKi8KCk5pdDogIlNldCBiaXRi YW5nIG1vZGUiLCBJIHRoaW5rIHdvdWxkIGJlIG1vcmUgY29ycmVjdCBoZXJlIGFzIHRoaXMKcmVx dWVzdCBpcyBhbHNvIHVzZWQgdG8gY29uZmlndXJlIHRoZSBhc3luY2hyb25vdXMgYml0YmFuZyBt b2RlLCBldGMuCgpUaGFua3MsCkpvaGFuCg==