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: cp210x: Implement GPIO support for CP2102N From: Johan Hovold Message-Id: <20180620105231.GQ32411@localhost> Date: Wed, 20 Jun 2018 12:52:31 +0200 To: Karoly Pados Cc: Johan Hovold , Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Martyn Welch List-ID: WyBBZGRpbmcgTWFydHluIHdobyBpbXBsZW1lbnRlZCB0aGUgY3AyMTA1IGdwaW8gc3VwcG9ydC4g XQoKWyBLYXJvbHksIHBsZWFzZSBhdm9pZCB0b3AtcG9zdGluZyBhbmQgdHJpbSB1bm5lZWRlZCBj b250ZXh0IGluc3RlYWQgb2YKICBjb3B5aW5nIGNvbnRleHQgdG8gdGhlIHRvcC4KICAKICBBbHNv IHNldCB5b3VyIG1haWxlciB0byB3cmFwIGxpbmVzIGF0IDcyIGNvbHVtbnMgb3Igc28gdGhhdCBJ IGRvbid0CiAgaGF2ZSB0byByZWZsb3cgeW91ciBtYWlsIG1hbnVhbGx5IHdoZW4gcmVzcG9uZGlu Zy4gXQogIApPbiBXZWQsIEp1biAyMCwgMjAxOCBhdCAwOTo0NTowNUFNICswMDAwLCBLYXJvbHkg UGFkb3Mgd3JvdGU6Cj4gT0ssIHRob3VnaCBpZiB5b3UgYWxsb3cgbWUgYSBmZXcgY29tbWVudHMg YW5kIGV4cGxhbmF0aW9uczoKPiAKPiA+IFlvdSdyZSBnb25uYSBuZWVkIHRvIHVuaWZ5IGEgbG90 IG9mIHRoaXMgd2l0aCB0aGUgY3VycmVudAo+ID4gaW1wbGVtZW50YXRpb24gZm9yIGNwMjEwNSBo b3dldmVyLgo+ID4KPiBUaGlzIGFsc28gcmVsYXRlcyB0byB5b3VyIGxhdGVyIHBvaW50cyBhYm91 dCB1bmlmeWluZyB0aGUgY3AyMTA1IGFuCj4gY3AyMTAybjogVGhlIGltcGxlbWVudGF0aW9uIGZv ciB0aGUgY3AyMTAybiBlbmRlZCB1cCBwcmV0dHkgZGlmZmVyZW50Lgo+IEJvdGggaW4gaW5pdGlh bGl6YWl0b24gYXMgd2VsbCBhcyBub3JtYWwgb3BlcmF0aW9uLCBwYXJ0aWFsbHkgZHVlIHRvCj4g dGhlIGJldHRlciBjb25maWcvaW5wdXQvYWx0LmZ1bmN0aW9uIHN1cHBvcnQgZm9yIHRoZSBjcDIx MDJuLiBBdCB0aGlzCj4gcG9pbnQgSSB0aG91Z2ggaXQgaXMgbXVjaCBtb3JlIHJlYWRhYmxlIGlm IEkganVzdCBjcmVhdGUgc2VwYXJhdGUgY29kZQo+IGhpZXJhcmNoaWVzIHRoYW4gaGF2aW5nIHRv IHBvbGx1dGUgZXZlcnl0aGluZyB3aXRoIGlmcyBhbmQKPiBzd2l0Y2gtY2FzZXMuCj4gCj4gQW5k IG1heWJlIG1vc3QgaW1wb3J0YW50bHksIEkgY2Fubm90IHRlc3Qgb24gdGhlIGNwMjEwNSwgc28g SSBjYW5ub3QKPiBjaGVjayBpZiBJJ3ZlIGJyb2tlbiBhbnl0aGluZyBieSBtaXN0YWtlLCBhbmQg c2luY2UgaXQgaXMgdGhlIG9kZCBiaXJkCj4gYW55d2F5IGFtb25nIG1vc3QgZGV2aWNlcywgSSB0 aG91Z2ggaXQgaXMgcHJldHR5IGxvZ2ljYWwgbm90IHRvIHRvdWNoCj4gaXRzIGNvZGUgYnV0IGlu c3RlYWQgY3JlYXRlIGEgbmV3IHNrZWxldG9uIGZvciBvdGhlcnMuCj4KPiBPZiBjb3Vyc2UgeW91 J3JlIHRoZSBib3NzIGFuZCB3aGF0ZXZlciB5b3Ugc2F5IEkgd2lsbCBkbywgYnV0IEkgd2FudGVk Cj4gdG8gZXhwbGFpbiBteSByZWFzb25zIChvciBhdCBsZWFzdCBsZXQgeW91IGtub3cgbXkgYXJn dW1lbnRzKS4KCklmIGl0IHJlYWxseSB3YXMgYWxsIHRoYXQgZGlmZmVyZW50IGl0IG1heSBtYWtl IHNlbnNlLCBidXQganVkZ2luZyBmcm9tCnZlbmRvciBkcml2ZXIgdGhlcmUgYXJlIGEgbG90IG9m IHNpbWlsYXJpdGllcyAoZS5nLiAyIGJ5dGUgbWFzayArIHZhbHVlCmZvciBzZXQgYW5kIDEgYnl0 ZSB2YWx1ZSBmb3IgZ2V0LCBvcGVuLXNvdXJjZSBvciBwdXNoLXB1bGwsIGFsdGVybmF0ZQpmdW5j dGlvbiwgLi4uKS4KCkFzIEkgYWxyZWFkeSBtZW50aW9uZWQsIHBhcnNpbmcgdGhlIGNvbmZpZ3Vy YXRpb24gd2lsbCBuZWVkIHRvIGJlCmRpZmZlcmVudCwgYnV0IGl0IHNlZW1zIGxpa2UgYSBsb3Qg b2YgdGhlIGltcGxlbWVudGF0aW9uIGNhbiBiZSBzaGFyZWQKKHdpdGhvdXQgbXVjaCBjbHV0dGVy KS4KCj4gPiBJIHdhcyBnb2luZyB0byBjb21tZW50IG9uIHRoZSBvZGQgY29kaW5nIHN0eWxlIGFi b3ZlLCB3aGVuIEkgbm90aWNlZAo+ID4gdGhhdCB5b3UndmUgY29waWVkIHRoaXMgaW1wbGVtZW50 YXRpb24gZnJvbSBhIHNpbGFicyBmb3J1bSBwb3N0LiBOb3QKPiA+IGdvb2QgYXQgYWxsIChhcyB0 aGVyZSB3YXMgbm8gaW5kaWNhdGlvbiBvZiBhbnkgbGljZW5zZSkuCj4gPiAKPiBOb3QgcXVpdGUu IEl0IGlzIG5vdCBmcm9tIGEgZm9ydW0gcG9zdCwgYnV0IGZyb20gYSBTaUxhYnMgS25vd2xlZGdl Cj4gQmFzZSBhcnRpY2xlCj4gKGh0dHBzOi8vd3d3LnNpbGFicy5jb20vY29tbXVuaXR5L2ludGVy ZmFjZS9rbm93bGVkZ2UtYmFzZS5lbnRyeS5odG1sLzIwMTcvMDYvMTIvZmxldGNoZXJfY2hlY2tz dW1mby1UZURGKQoKWWVhaCwgdGhhdCdzIHRoZSBvbmUgSSB3YXMgcmVmZXJyaW5nIHRvLgoKPiBU aGF0IGFydGljbGUgc3RhdGVzIGV4cGxpY2l0bHkgdGhhdCB0aGUgY29kZSB3YXMgdGFrZW4gZnJv bSBXaWtpcGVkaWEsCj4gc28gaXQgaXMgQ0MtU0EsIHdoaWNoIGlzIHRvIHRoZSBiZXN0IG9mIG15 IGtub3dsZWRnZSAxKSBjb21wYXRpYmxlCj4gd2l0aCBHUEwsIGFuZCAyKSBkb2VzIG5vdCByZXF1 aXJlIGF0dHJpYnV0aW9uIGlmIHRoZSBvcmlnaW5hbCBtYXRlcmlhbAo+IGlzIG1pc3NpbmcgaXQs IGFuZCBpdCBkb2VzLiBTbyBBRkFJQ1Qgd2UgYXJlIGNsZWFyIG9uIHRoZSBsaWNlbnNpbmcKPiBm cm9udC4KCkZpcnN0IG9mIGFsbCBJIGNhbid0IHNlZW0gdG8gZmluZCB0aGF0IGNvZGUgc25pcHBl dCBvbiB0aGUgd2lraSBwYWdlIGl0CmRvZXMgcmVmZXIgdG8sIHNvIEknbSBzdGlsbCBub3QgY29u dmluY2VkLgoKU2Vjb25kLCB0aGlzIHNob3VsZCBoYXZlIGJlZW4gaGlnaC1saWdodGVkIGluIHlv dXIgc3VibWlzc2lvbiBzb21laG93LgoKPiBEbyB5b3Ugc3RpbGwgd2FudCBtZSB0byByZW1vdmUg dGhlIGNoZWNrc3VtIGNoZWNrPwoKWWVzLgoKPiA+IFNvIGZvciBjcDIxMDUgd2UgZGVjaWRlZCBh Z2FpbnN0IGltcGxlbWVudGluZyBhbiBpbnB1dCBtb2RlLiBXZSBhdCBsZWFzdAo+ID4gbmVlZCB0 byBiZSBjb25zaXN0ZW50IGhlcmUsIHNvIEkgc3VnZ2VzdCBzdGFydGluZyB3aXRoIGRyb3BwaW5n IHRob3NlCj4gPgo+IEFnYWluLCB5b3UncmUgdGhlIGJvc3MsIGJ1dCBJIGRvIGZpbmQgdGhpcyBv ZGQuIFRoZXNlIGFyZSBkaWZmZXJlbnQKPiBkZXZpY2VzIGFuZCB0aGFua2Z1bGx5IG5vdyB0aGVy ZSdkIGJlIGJldHRlciBzdXBwb3J0IGZvciB0aGUgY3AyMTAybiwKPiBhbmQgeW91J3JlIGFza2lu ZyBtZSB0byByZW1vdmUgaW5wdXQgc3VwcG9ydCBmb3IgY29uc2lzdGVuY3kgcmVhc29ucy4KPiBU byByZW1vdmUgYSBmZWF0dXJlIGZvciBvbmUgZGV2aWNlIGp1c3QgYmVjYXVzZSBpdCB3YXNuJ3Qg Y29ycmVjdGx5Cj4gaW1wbGVtZW50ZWQgaW4gYW5vdGhlciBhbmQgd2FudGluZyB0byBzdGF5IGNv bnNpc3RlbnQgd2l0aCB0aGUgbWlzc2luZwo+IHN1cHBvcnQgaXMgdmVyeSBvZGQgZm9yIG1lIHRi aC4KPiBJIGtub3cgSSdtIGluIG5vIHBvc2l0aW9uLCBidXQgcGxlYXNlIGxldCBtZSBhc2sgeW91 IG9uY2UgdG8gcGxlYXNlCj4gcmVjb25zaWRlciB0aGlzLgoKV2UncmUgbm90IHJlbW92aW5nIGFu eXRoaW5nIGZyb20gdGhlIGtlcm5lbCBzaW5jZSBub3RoaW5nIGhhcyB5ZXQgYmVlbgptZXJnZWQu IEknbSBhc2tpbmcgeW91IHRvIHNlcGFyYXRlIGl0IGludG8gYSBmb2xsb3cgdXAgcGF0Y2gsIHdo aWNoIGlmCndlIGZpbmQgaXQgdXNlZnVsIGFuZCBjb3JyZWN0IHdvdWxkIGFsbG93IHRoZSBzYW1l IGZ1bmN0aW9uYWxpdHkgZm9yCmNwMjEwNSBhcyB3ZWxsLgoKVGhlIGdwaW8gcGlucyBvbiBjcDIx MDJuIGFuZCBjcDIxMDUgc2hhcmUgdGhlIHNhbWUgZWxlY3RyaWNhbApjaGFyYWN0ZXJpc3RpY3Mg YW5kIHRoZXJlJ3Mgbm8gZ29vZCByZWFzb24gd2h5IHdlIHNob3VsZCB0cmVhdCB0aGVtCmRpZmZl cmVudGx5LgoKPiBUaGUgd2F5IGl0IHdhcyBkb25lIGZvciB0aGUgY3AyMTA1IHdoZXJlIHdlIG1h a2UgZXZlcnl0aGluZyBhbmQKPiBldmVyeW9uZSBvbiB0aGUgc3lzdGVtIHRoaW5rIHRoYXQgYSBw aW4gaXMgIm91dCIgYnV0IGluIHJlYWxpdHkgaXMgYW4KPiBpbnB1dCBpcyBxdWlya3kgdG8gc2F5 IHRoZSBsZWFzdCwgd2hpbGUgYXQgdGhlIHNhbWUgdGltZSBpdCBhbHNvIGRvZXMKPiBub3QgbWFr ZSBzdXJlIHRoYXQgYW4gaW5wdXQgcGluICh3aGljaCBpcyBvZiBjb3Vyc2Ugbm90IG1hcmtlZCBh cwo+IHN1Y2gpIGlzIHJlYWxseSBhbiBpbnB1dC4gIFdoeSBhbXB1dGF0ZSB0aGUgY3AyMTAybiBs aWtlIHRoaXMgaWYgaXQKPiBoYXMgYmVlbiBhbHJlYWR5IGltcGxlbWVudGVkIGNvcnJlY3RseT8g IElmIHdlIHdhbnRlZCB0byBzdGF5Cj4gY29uc2lzdGVudCB3aXRoIGhhbGYtZGV2ZWxvcGVkIGFu ZCBpbmNvbXBsZXRlIGRyaXZlcnMgdGhlbiB0aGVyZSdkIGJlCj4gbm8gaW1wcm92ZW1lbnRzIHRv IExpbnV4LgoKV2UgZG8gbm90IHdhbnQgdG8gaGF2ZSB0d28gY29tcGV0aW5nIGFuZCBpbmNvbXBh dGlibGUgaW1wbGVtZW50YXRpb25zIG9mCmVzc2VudGlhbGx5IHRoZSBzYW1lIHRoaW5nLgoKPiA+ IFBsZWFzZSBiZSBtb3JlIHNwZWNpZmljIGhlcmU7IHdoYXQgZG8geW91IG1lYW4gYnkgbm90IGNv cnJlc3BvbmRpbmcgdG8KPiA+IHJlYWxpdHkuCj4gPgo+IEl0IG1lYW5zIHRoYXQgSSd2ZSBmb3Vu ZCBHUElPNC02IG9jY3VweWluZyBiaXRzIHdoaWNoIHdlcmUgZG9jdW1lbnRlZAo+IGRvaW5nIGNv bXBsZXRlbHkgb3RoZXIgdGhpbmdzLCBhbmQgdGhvc2Ugb3RoZXIgdGhpbmdzIG9jY3VweWluZwo+ IHJlc2VydmVkIGJpdHMgZXZlbiB0aG91Z2ggdGhleSB3ZXJlIGRvY3VtZW50ZWQgb2NjdXB5aW5n IHRoZSBwbGFjZXMKPiB3aGVyZSBHUElPcyA0LTYgd2VyZS4KCk9rLCBidXQgdHJ5IHRvIGV4cGxh aW4geW91ciBmaW5kaW5ncyByZWdhcmRpbmcgdGhpcyBpbiB0aGUgY29tbWl0Cm1lc3NhZ2UgYW5k L29yIGEgY29tbWVudCBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50IGZvcm11bGF0aW9uLiBZb3UgY2Fu IGJlCm1vcmUgc3BlY2lmaWMgaW4gdGhlIGNvbW1lbnQsIHdpdGhvdXQgZ2V0dGluZyBpbnRvIGV2 ZXJ5IGRldGFpbCB0b28KKCJub3QgY29ycmVzcG9uZGluZyB0byByZWFsaXR5IiBpcyB0b28gdmFn dWUpLgoKQnV0IHRvIGNsYXJpZnksIHRoaXMgaGFzIHRvIGRvIHdpdGggdGhlIGNvbmZpZ3VyYXRp b24gb2YgdGhlIHBpbnMsCnJpZ2h0PyBZb3UnZCBzdGlsbCB1c2UgdGhlIHNhbWUgbWVjaGFuaXNt cyB0byBzZXQgYW5kIHJldHJpZXZlIHRoZSBsYXRjaApyZWdpc3Rlcj8KCj4gPiBObyBuZWVkIHRv IGNoZWNrIGZvciB0aGlzIGluIGV2ZXJ5IGNhbGxiYWNrOyBtb3ZlIHRvCj4gPiBjcDIxMHhfZ3Bp b19yZXF1ZXN0KCkuCj4gPgo+IFdvdWxkbid0IHRoaXMgcHJldmVudCB0aGUgZGlzYWJsZWQgR1BJ T3MgZnJvbSBiZWluZyBjcmVhdGVkIGluIHRoZQo+IGZpcnN0IHBsYWNlPyAgSSB2ZXJ5IG11Y2gg d2FudCB0byBjcmVhdGUgdGhlbSBpbiBldmVyeSBjYXNlLCBiZWNhdXNlCj4gb3RoZXJ3aXNlIGl0 IGJlY29tZXMgYSBQSVRBIGZvciBib3RoIHRoZSBkcml2ZXIgYW5kIGNvbnN1bWVyczoKPgo+IC0g Rm9yIHRoZSBkcml2ZXIgYSBQSVRBLCBiZWNhdXNlIHRoZSBkaXNhYmxlZCBHUElPcyBjYW4gYmUg YW55IGFuZAo+ICAgbm9uLWNvbnRpbnVvdXMsIHNvIHRoZSBtb2R1bGUgd291bGQgbmVlZCB0byBk eW5hbWljYWxseSBhbmQKPiAgIGFyYml0cmFyaWx5IHJlbWFwIGxvZ2ljYWwgR1BJT3MgdG8gaGFy ZHdhcmUgR1BJTyBudW1iZXJzLgo+Cj4gLSBGb3IgY29uc3VtZXJzIGEgUElUQSwgYmVjYXVzZSBp dCB3b3VsZCBtZWFuIEdQSU9zIGNhbiBjaGFuZ2UgbmFtZXMKPiAgIGRlcGVuZGluZyBvbiB0aGUg Y3VycmVudCBjb25maWd1cmF0aW9uIG9mIHRoZSBkZXZpY2UuIE9uIG9uZSBkZXZpY2UKPiAgIEdQ SU8uMyB3b3VsZCBiZSBjYWxsZWQgR1BJTy4yLCBvbiBhbm90aGVyIEdQSU8uMSBldGMuIE15IGlu dGVudGlvbgo+ICAgaGVyZSBpcyB0aGF0IGFwcGxpY2F0aW9ucyBzaG91bGQgYmUgYWJsZSB0byB1 c2UgdGhlIHJlYWwgSUQgb2YgdGhlCj4gICBHUElPIGFuZCBleHBlY3QgdGhhdCBHUElPLjMgKGJh c2Urb2Zmc2V0IDMpIGlzIGFjdHVhbGx5IEdQSU8uMyBhbmQKPiAgIG5vdCBzb21ldGhpbmcgZWxz ZS4KCk5vLCB0aGF0IHNob3VsZG4ndCBiZSBwcm9ibGVtICh1bmxlc3Mgc29tZXRoaW5nIGhhcyBj aGFuZ2VkIGluIGdwaW9saWIKcmVjZW50bHkpLiBBbGwgcGlucyB3b3VsZCBiZSByZWdpc3RlcmVk LCBidXQgd2Ugc2ltcGx5IGRlbnkgcmVxdWVzdHMgZm9yCnVuYXZhaWxhYmxlIHBpbnMuCgpUaGFu a3MsCkpvaGFuCi0tLQpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGlu ZSAidW5zdWJzY3JpYmUgbGludXgtdXNiIiBpbgp0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFq b3Jkb21vQHZnZXIua2VybmVsLm9yZwpNb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBodHRwOi8vdmdl ci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwK