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: [04/12] usb: common: Small class for USB role switches From: Heikki Krogerus Message-Id: <20180216142209.GS1480@kuha.fi.intel.com> Date: Fri, 16 Feb 2018 16:22:09 +0200 To: Andy Shevchenko Cc: Hans de Goede , Darren Hart , Andy Shevchenko , MyungJoo Ham , Chanwoo Choi , Mathias Nyman , Greg Kroah-Hartman , Platform Driver , Linux Kernel Mailing List , USB List-ID: T24gRnJpLCBGZWIgMTYsIDIwMTggYXQgMDQ6MDc6NTlQTSArMDIwMCwgQW5keSBTaGV2Y2hlbmtv IHdyb3RlOgo+IE9uIEZyaSwgRmViIDE2LCAyMDE4IGF0IDEyOjQ3IFBNLCBIYW5zIGRlIEdvZWRl IDxoZGVnb2VkZUByZWRoYXQuY29tPiB3cm90ZToKPiAKPiA+IFVTQiByb2xlIHN3aXRjaCBpcyBh IGRldmljZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGNob29zZSB0aGUKPiA+IGRhdGEgcm9sZSBmb3Ig VVNCIGNvbm5lY3Rvci4gV2l0aCBkdWFsLXJvbGUgY2FwYWJsZSBVU0IKPiA+IGNvbnRyb2xsZXJz LCB0aGUgY29udHJvbGxlciBpdHNlbGYgd2lsbCBiZSB0aGUgc3dpdGNoLCBidXQKPiA+IG9uIHNv bWUgcGxhdGZvcm1zIHRoZSBVU0IgaG9zdCBhbmQgZGV2aWNlIGNvbnRyb2xsZXJzIGFyZQo+ID4g c2VwYXJhdGUgSVBzIGFuZCB0aGVyZSBpcyBhIG11eCBiZXR3ZWVuIHRoZW0gYW5kIHRoZQo+ID4g Y29ubmVjdG9yLiBPbiB0aG9zZSBwbGF0Zm9ybXMgdGhlIG11eCBkcml2ZXIgd2lsbCBuZWVkIHRv Cj4gPiByZWdpc3RlciB0aGUgc3dpdGNoLgo+ID4KPiA+IFdpdGggVVNCIFR5cGUtQyBjb25uZWN0 b3JzLCB0aGUgaG9zdC10by1kZXZpY2UgcmVsYXRpb25zaGlwCj4gPiBpcyBuZWdvdGlhdGVkIG92 ZXIgdGhlIENvbmZpZ3VyYXRpb24gQ2hhbm5lbCAoQ0MpLiBUaGF0Cj4gPiBtZWFucyB0aGUgVVNC IFR5cGUtQyBkcml2ZXJzIG5lZWQgdG8gYmUgaW4gY29udHJvbCBvZiB0aGUKPiA+IHJvbGUgc3dp dGNoLiBUaGUgY2xhc3MgcHJvdmlkZXMgYSBzaW1wbGUgQVBJIGZvciB0aGUgVVNCCj4gPiBUeXBl LUMgZHJpdmVycyBmb3IgdGhlIGNvbnRyb2wuCj4gPgo+ID4gRm9yIG90aGVyIHR5cGVzIG9mIFVT QiBjb25uZWN0b3JzIChtYWlubHkgbWljcm9BQikgdGhlIGNsYXNzCj4gPiBwcm92aWRlcyB1c2Vy IHNwYWNlIGNvbnRyb2wgdmlhIHN5c2ZzIGF0dHJpYnV0ZSBmaWxlIHRoYXQKPiA+IGNhbiBiZSB1 c2VkIHRvIHJlcXVlc3Qgcm9sZSBzd2FwcGluZyBmcm9tIHRoZSBzd2l0Y2guCj4gCj4gPiArc3Rh dGljIGludCBfX3N3aXRjaF9tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHZvaWQgKm5h bWUpCj4gCj4gYm9vbD8KCk5vLCB0aGlzIGlzIGNhbGxiYWNrIGZvciBjbGFzc19maW5kX2Rldmlj ZSgpLiBJdCB0YWtlcyBpbnQgc28gaW50IGl0CmlzLgoKPiA+ICt7Cj4gPiArICAgICAgIHJldHVy biAhc3RyY21wKChjb25zdCBjaGFyICopbmFtZSwgZGV2X25hbWUoZGV2KSk7Cj4gPiArfQo+IAo+ IAo+ID4gK3N0YXRpYyBzc2l6ZV90IHJvbGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1 Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSkKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCB1 c2Jfcm9sZV9zd2l0Y2ggKnN3ID0gdG9fcm9sZV9zd2l0Y2goZGV2KTsKPiA+ICsgICAgICAgaW50 IHJldDsKPiA+ICsKPiA+ICsgICAgICAgcmV0ID0gc3lzZnNfbWF0Y2hfc3RyaW5nKHVzYl9yb2xl cywgYnVmKTsKPiA+ICsgICAgICAgaWYgKHJldCA8IDApIHsKPiA+ICsgICAgICAgICAgICAgICBi b29sIHJlczsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICAvKiBFeHRyYSBjaGVjayBpZiB0aGUg dXNlciB3YW50cyB0byBkaXNhYmxlIHRoZSBzd2l0Y2ggKi8KPiA+ICsgICAgICAgICAgICAgICBy ZXQgPSBrc3RydG9ib29sKGJ1ZiwgJnJlcyk7Cj4gPiArICAgICAgICAgICAgICAgaWYgKHJldCB8 fCByZXMpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ICsg ICAgICAgfQo+ID4gKwo+IAo+ID4gKyAgICAgICByZXQgPSB1c2Jfcm9sZV9zd2l0Y2hfc2V0X3Jv bGUoc3csIHJldCk7Cj4gPiArICAgICAgIGlmICghcmV0KQo+ID4gKyAgICAgICAgICAgICAgIHJl dCA9IHNpemU7Cj4gPiArCj4gPiArICAgICAgIHJldHVybiByZXQ7Cj4gCj4gUGVyaGFwcwo+IAo+ IHJldCA9IC4uLgo+IGlmIChyZXQpCj4gIHJldHVybiByZXQ7Cj4gCj4gcmV0dXJuIHNpemU7CgpT dXJlLiBIYW5zLCBjYW4geW91IGNsZWFuLXVwIHRoaXMgYXMgd2VsbD8KCj4gPiArfQo+IAo+ID4g K3N0cnVjdCB1c2Jfcm9sZV9zd2l0Y2ggKgo+ID4gK3VzYl9yb2xlX3N3aXRjaF9yZWdpc3Rlcihz dHJ1Y3QgZGV2aWNlICpwYXJlbnQsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IHVzYl9yb2xlX3N3aXRjaF9kZXNjICpkZXNjKQo+ID4gK3sKPiA+ICsgICAgICAgc3Ry dWN0IHVzYl9yb2xlX3N3aXRjaCAqc3c7Cj4gPiArICAgICAgIGludCByZXQ7Cj4gPiArCj4gPiAr ICAgICAgIGlmICghZGVzYyB8fCAhZGVzYy0+c2V0KQo+ID4gKyAgICAgICAgICAgICAgIHJldHVy biBFUlJfUFRSKC1FSU5WQUwpOwo+ID4gKwo+ID4gKyAgICAgICBzdyA9IGt6YWxsb2Moc2l6ZW9m KCpzdyksIEdGUF9LRVJORUwpOwo+ID4gKyAgICAgICBpZiAoIXN3KQo+ID4gKyAgICAgICAgICAg ICAgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+IAo+ID4gKyAgICAgICByZXQgPSBkZXZpY2Vf cmVnaXN0ZXIoJnN3LT5kZXYpOwo+ID4gKyAgICAgICBpZiAocmV0KSB7Cj4gPiArICAgICAgICAg ICAgICAgcHV0X2RldmljZSgmc3ctPmRldik7Cj4gCj4gTWVtb3J5IGxlYWs/CgpOby4gQ2hlY2sg dXNiX3JvbGVfc3dpdGNoX3JlbGVhc2UoKS4KCgpUaGFua3MsCg==