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: [v7] USB: serial: ftdi_sio: implement GPIO support for FT-X devices From: Johan Hovold Message-Id: <20180926104250.GJ3332@localhost> Date: Wed, 26 Sep 2018 12:42:50 +0200 To: Karoly Pados Cc: Johan Hovold , Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Loic Poulain List-ID: T24gVHVlLCBTZXAgMjUsIDIwMTggYXQgMDM6NTk6MTFQTSArMDIwMCwgS2Fyb2x5IFBhZG9zIHdy 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 IG5hbWUuCj4gLSB2NTogUmVzZW50IHY0IHdpdGggbm8gY2hhbmdlcyBieSBtaXN0YWtlLiBQbGVh c2UgaWdub3JlLgo+IC0gdjY6IFJlYWQgb25seSA0IGJ5dGVzIGZyb20gZWVwcm9tIGluIGZ0eF9n cGlvY29uZl9pbml0Lgo+ICAgICAgIENvbXBhcmUgZnRkaV9yZWFkX2VlcHJvbSByZXN1bHQgd2l0 aCAwIGluc3RlYWQgb2YgZXEuIGNlaGNrLgo+ICAgICAgIFJlc2VydmUgNCBHUElPcyBldmVuIGZv ciBGVDIzNFguCj4gICAgICAgUmVsZWFzZSBDQlVTIGFmdGVyIGdwaW9jaGlwIGRlcmVnaXN0ZXIg dG8gYXZvaWQgcG9zc2libGUgcmFjZS4KPiAgICAgICBBZGp1c3QgY29tbWVudCBvbiBGVERJX1NJ T19TRVRfQklUTU9ERSBtYWNyby4KPiAgICAgICBQcm90ZWN0IEdQSU8gdmFsdWUvZGlyIHNldHRp bmcgd2l0aCBtdXRleC4KPiAgICAgICBBZGQgc3VwcG9ydCBmb3IgZ3Bpb2NoaXAuZ2V0X211bHRp cGxlIGFuZCBzZXRfbXVsdGlwbGUuCj4gICAgICAgQWRkIG5hbWVzIHRvIEdQSU8gbGluZXMuCj4g LSB2NzogTW92ZSA8bGludXgvZ3Bpby9kcml2ZXIuaD4gbGluZSBmb3IgYmV0dGVyIGluY2x1ZGUg c29ydGluZy4KPiAgICAgICBBZGp1c3QgY29tbWVudCBvbiBncGlvX2xvY2sgZGVjbGFyYXRpb24u Cj4gICAgICAgU3BhY2UgdnMgdGFiIGZvcm1hdHRpbmcgY2hhbmdlcyBpbiBzdHJ1Y3QgZnRkaV9w cml2YXRlLgo+ICAgICAgIE1vdmUgZnRkaV9mdHhfZ3Bpb19uYW1lcyB0byBtZXJnZSBpdCB3aXRo IGV4aXN0aW5nICNpZmRlZi4KPiAgICAgICBSZW5hbWUgZnVuY3Rpb24gZnRkaV9zZXRfYml0bW9k ZV9yZXEgdG8gZnRkaV9zZXRfYml0bW9kZS4KPiAgICAgICBSZW5hbWUgcmN2YnVmIHRvIGJ1ZiBp biBmdW5jdGlvbiBmdGRpX3JlYWRfY2J1c19waW5zLgo+ICAgICAgIEFORCAqYml0cyBhbmQgKm1h c2sgaW4gZnRkaV9ncGlvX3NldF9tdWx0aXBsZSBhcyBncGlvbGliIGRvZXMgbm90Lgo+ICAgICAg IFJlcGxhY2UgaWYgaW4gZnRkaV9ncGlvX2RpcmVjdGlvbl9nZXQgd2l0aCBuZWdhdGlvbi4KPiAg ICAgICBNb3ZlIHByaXYtPmdjLm5hbWVzIGFzc2lnbm1lbnQgdG8gY2hpcC1zcGVjaWZpYyBmdHhf Z3Bpb2NvbmZfaW5pdC4KClRoYW5rcyBhZ2FpbiBmb3IgZG9pbmcgdGhpcyB3b3JrLiBJJ3ZlIGFw cGxpZWQgdGhlIHBhdGNoIG5vdyB3aXRoIHNvbWUKbWlub3Igc3R5bGUgY2hhbmdlcyAoc2VlIGJl bG93KS4KCj4gKyNpZiBkZWZpbmVkKENPTkZJR19HUElPTElCKQoKSSBjaGFuZ2VkIHRoZXNlIHRv IHBsYWluICNpZmRlZiwgd2hpY2ggaXMgd2hhdCB3ZSBjb21tb25seSB1c2UuCgo+ICtzdGF0aWMg aW50IGZ0ZGlfZ3Bpb19nZXRfbXVsdGlwbGUoc3RydWN0IGdwaW9fY2hpcCAqZ2MsCj4gKwkJCQkg ICB1bnNpZ25lZCBsb25nICptYXNrLCB1bnNpZ25lZCBsb25nICpiaXRzKQoKWW91IGhhZCBzb21l IG9kZCBpbmRlbnRhdGlvbiB1c2luZyBzcGFjZXMgYWZ0ZXIgdGFicywgYnV0IHdoaWNoIHN0aWxs CmRpZG4ndCBsaW5lIHVwIHdpdGggb3BlbmluZyBwYXJlbnRoZXNpcyAoYSBsZWZ0IG92ZXIgZnJv bSByZW1vdmluZyB0aGUKX3Npb18gaW5maXgsIEkgdGhpbmspIHdoaWNoIEkgZml4ZWQgdXAgYnkg dXNpbmcgcGxhaW4gdGFicyBpbnN0ZWFkLgoKPiArc3RhdGljIGludCBmdHhfZ3Bpb2NvbmZfaW5p dChzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQo+ICt7Cj4gKwlzdHJ1Y3QgZnRkaV9wcml2 YXRlICpwcml2ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQpOwo+ICsJc3RydWN0IHVz Yl9zZXJpYWwgKnNlcmlhbCA9IHBvcnQtPnNlcmlhbDsKPiArCWNvbnN0IHUxNiBjYnVzX2NmZ19h ZGRyID0gMHgxYTsKPiArCWNvbnN0IHUxNiBjYnVzX2NmZ19zaXplID0gNDsKPiArCXU4ICpjYnVz X2NmZ19idWY7Cj4gKwlpbnQgcmVzdWx0Owo+ICsJdTggaTsKPiArCj4gKwlwcml2LT5nYy5uYW1l cyA9IGZ0ZGlfZnR4X2dwaW9fbmFtZXM7CgpJIG1vdmVkIHRoaXMgdG8gd2hlcmUgeW91IHNldCBu Z3BpbyBiZWxvdyBhcyB0aGV5IGFyZSByZWxhdGVkIChhbmQKbmVlZCBub3QgYmUgc2V0IGlmIHdl IGJhaWwgb3V0IGVhcmx5KS4KCj4gKwo+ICsJLyogUmVhZCBhIHBhcnQgb2YgZGV2aWNlIEVFUFJP TSAqLwo+ICsJY2J1c19jZmdfYnVmID0ga21hbGxvYyhjYnVzX2NmZ19zaXplLCBHRlBfS0VSTkVM KTsKPiArCWlmICghY2J1c19jZmdfYnVmKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCXJl c3VsdCA9IGZ0ZGlfcmVhZF9lZXByb20oc2VyaWFsLCBjYnVzX2NmZ19idWYsCj4gKwkJCQkgIGNi dXNfY2ZnX2FkZHIsIGNidXNfY2ZnX3NpemUpOwo+ICsJaWYgKHJlc3VsdCA8IDApCj4gKwkJZ290 byBvdXRfZnJlZTsKPiArCj4gKwkvKiBGSVhNRTogRlQyMzRYRCBhbG9uZSBoYXMgMSBHUElPLCBi dXQgaG93IHRvIHJlY29nbml6ZSB0aGlzIElDPyAqLwo+ICsJcHJpdi0+Z2MubmdwaW8gPSA0Owo+ ICsKPiArCS8qIERldGVybWluZSB3aGljaCBwaW5zIGFyZSBjb25maWd1cmVkIGZvciBDQlVTIGJp dGJhbmdpbmcgKi8KPiArCXByaXYtPmdwaW9fYWx0ZnVuYyA9IDB4ZmY7Cj4gKwlmb3IgKGkgPSAw OyBpIDwgcHJpdi0+Z2MubmdwaW87ICsraSkgewo+ICsJCWlmIChjYnVzX2NmZ19idWZbaV0gPT0g RlRESV9GVFhfQ0JVU19NVVhfR1BJTykKPiArCQkJcHJpdi0+Z3Bpb19hbHRmdW5jICY9IH5CSVQo aSk7Cj4gKwl9Cj4gKwo+ICtvdXRfZnJlZToKPiArCWtmcmVlKGNidXNfY2ZnX2J1Zik7Cj4gKwo+ ICsJcmV0dXJuIHJlc3VsdDsKPiArfQoKVGhhbmtzLApKb2hhbgo=