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: musb: Support gadget mode when the port is set to dual role From: Bin Liu Message-Id: <20180501162254.GF21238@uda0271908> Date: Tue, 1 May 2018 11:22:54 -0500 To: Paul Kocialkowski Cc: Paul Kocialkowski , Maxime Ripard , linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, Greg Kroah-Hartman , Chen-Yu Tsai List-ID: T24gVHVlLCBNYXkgMDEsIDIwMTggYXQgMDM6MjY6NTdQTSArMDIwMCwgUGF1bCBLb2NpYWxrb3dz a2kgd3JvdGU6Cj4gSGksCj4gCj4gTGUgbWFyZGkgMDEgbWFpIDIwMTggw6AgMDc6MjUgLTA1MDAs IEJpbiBMaXUgYSDDqWNyaXQgOgo+ID4gT24gTW9uLCBBcHIgMzAsIDIwMTggYXQgMTE6MDg6NDJQ TSArMDIwMCwgUGF1bCBLb2NpYWxrb3dza2kgd3JvdGU6Cj4gPiA+IEhpLAo+ID4gPiAKPiA+ID4g TGUgc2FtZWRpIDIxIGF2cmlsIDIwMTggw6AgMDk6MzQgLTA1MDAsIEJpbiBMaXUgYSDDqWNyaXQg Ogo+ID4gPiA+IE9rYXksIHRoaXMgY2FtZSBkb3duIHRvIGFuIGFyZ3VtZW50IHRoYXQgd2hldGhl ciB3ZSBzaG91bGQgcmVxdWlyZQo+ID4gPiA+IGxvYWRpbmcgYSBnYWRnZXQgZHJpdmVyIG9uIGEg ZHVhbC1yb2xlIHBvcnQgdG8gd29yayBpbiBob3N0IG1vZGUsCj4gPiA+ID4gd2hpY2ggaXMgY3Vy cmVudGx5IHJlcXVpcmVkIG9uIG11c2Igc2luY2UgYSBsb25nIGxvbmcgdGltZSBhZ28uCj4gPiA+ ID4gCj4gPiA+ID4gSSB1bmRlcnN0YW5kIHRoZSByZXF1aXJlbWVudCBpcyBraW5kYSB1bm5lY2Vz c2FyeSwgYnV0IHNpbmNlIGl0Cj4gPiA+ID4gYWxyZWFkeQo+ID4gPiA+IGV4aXN0cyBvbiBtdXNi IHN0YWNrIGZvciBhIGxvbmcgdGltZSwgSSBkb24ndCBwbGFuIHRvIGNoYW5nZSBpdC4KPiA+ID4g PiBCZWNhdXNlIEkKPiA+ID4gPiBjYW5ub3QgdGhpbmsgb2YgYSB1c2UgY2FzZSBpbiByZWFsIHBy b2R1Y3RzIHRoYXQgZG9lc24ndAo+ID4gPiA+IGF1dG9tYXRpY2FsbHkKPiA+ID4gPiBsb2FkIGEg Z2FkZ2V0IGZ1bmN0aW9uIG9uIHRoZSBkdWFsLXJvbGUgcG9ydC4KPiA+ID4gPiAKPiA+ID4gPiBJ ZiB5b3UgY2FuIGV4cGxhaW4gYSB1c2UgY2FzZSBpbiByZWFsIHdvcmxkIChub3QgYSBlbmdpbmVl cmluZwo+ID4gPiA+IGxhYikKPiA+ID4gPiB0aGF0IHRoZSBnYWRnZXQgZHJpdmVyIHdpbGwgbm90 IGJlIGxvYWRlZCBhdCBsaW51eCBib290aW5nIHVwLCBidXQKPiA+ID4gPiBsYXRlciBiYXNlZCBv biB1c2VyJ3MgaW5wdXQsIEkgd2lsbCByZWNvbnNpZGVyIG15IGRlY2lzaW9uLiBUbwo+ID4gPiA+ IHJlbW92ZQo+ID4gPiA+IHRoaXMgcmVxdWlyZW1lbnQgZnJvbSBtdXNiIHN0YWNrLCB0aGUgd29y ayBpcyBtb3JlIHRoYW4gdGhpcwo+ID4gPiA+IHBhdGNoLgo+ID4gPiAKPiA+ID4gTXkgdXNlIGNh c2UgaGVyZSBpcyB0byBzdXBwb3J0IGNvbW1vbiBHTlUvTGludXgtYmFzZWQgZGlzdHJpYnV0aW9u cywKPiA+ID4gbm90Cj4gPiA+IHVzZS1jYXNlLXNwZWNpZmljIHZhcmlldGllcyBvZiBHTlUvTGlu dXgtYmFzZWQgcm9vdGZzLiBTbyBteSBwb2ludAo+ID4gPiBoZXJlCj4gPiA+IHdvdWxkIGJlIHRo YXQgbW9zdCBkaXN0cm9zIHdpbGwgKGFuZCBwcm9iYWJseSBzaG91bGQpIHNoaXAgZ19ldGhlcgo+ ID4gPiBhcyBhCj4gPiA+IG1vZHVsZSBidXQgd2l0aG91dCBhbnkgcGFydGljdWxhciByZWFzb24g dG8gYXV0b2xvYWQgaXQsIG9yIGFueQo+ID4gPiBvdGhlcgo+ID4gPiBnYWRnZXQgbW9kdWxlIGlu IHBhcnRpY3VsYXIsIHNpbmNlIHRoZSBzeXN0ZW0gaXMgZ2VuZXJhbC1wdXJwb3NlLgo+ID4gCj4g PiBUaGlzIGlzIHRoZSBjYXNlIEkgY2FsbGVkIGl0ICJpbiBhIGVuZ2luZWVyaW5nIGxhYiIsIG5v dCBhIHJlYWwKPiA+IHByb2R1Y3QuCj4gCj4gVG8gbWUsIHRoaXMgc291bmRzIG1vcmUgbGlrZSAi ZGFpbHkgdXNlIHdpdGggdXBzdHJlYW0gbGlrZSBvbiBhbnkKPiBsYXB0b3AvZGVza3RvcCIgcmF0 aGVyIHRoYW4gYW4gZW5naW5lZXJpbmcgbGFiLCBidXQgdGhhdCdzIG5vdCB0aGUgbWFpbgo+IHBv aW50IGhlcmUuCj4gCj4gPiA+IFRoZW4sIGltYWdpbmUgYSB1c2VyIHdhbnRzIHRvIHBsdWcgYSBV U0IgZGV2aWNlIHRocm91Z2ggT1RHIChzYXksCj4gPiA+IGJlY2F1c2UgaXQncyB0aGUgb25seSBV U0IgcG9ydCBhdmFpbGFibGUgYXQgYWxsIG9uIHRoZSB0YWJsZXQKPiA+ID4gdGhleSdyZQo+ID4g PiB1c2luZyksIGl0IHNpbXBseSB3b24ndCB3b3JrLiBJdCB3b24ndCBiZSBvYnZpb3VzIHRvIHRo YXQgdXNlciB0aGF0Cj4gPiA+IHRoaXMKPiA+ID4gaXMgYmVjYXVzZSBubyBnYWRnZXQgaXMgbG9h ZGVkLCBzaW5jZSB3aGF0IHRoZXkgd2FudCB0byBkbyBkb2VzIG5vdAo+ID4gPiBpbnZvbHZlIHVz aW5nIGdhZGdldCBtb2RlIGF0IGFueSBwb2ludC4KPiA+IAo+ID4gSWYgYSB0YWJsZXQgaGFzIGEg ZHVhbC1yb2xlIHVzYiBwb3J0LCBpdCBpcyBkZXNpZ25lZCB0byB1c2UgYSBnYWRnZXQKPiA+IGRy aXZlciwKPiAKPiBJIGRvbid0IHVuZGVyc3RhbmQgdGhlIGxvZ2ljIGJlaGluZCB0aGlzIGFzc2Vy dGlvbi4gSWYgaXQgaGFzIGEgZHVhbC0KPiByb2xlIFVTQiBwb3J0LCB0aGVuIGl0cyBoYXJkd2Fy ZSBhbGxvd3MgYm90aCB1c2UgY2FzZXMuIEl0J3Mgb2J2aW91cwo+IHRoYXQgdGhlIHVzZSBjYXNl IGlzIHVwIHRvIHRoZSB1c2VyIG9mIHRoZSBkZXZpY2Ugc2luY2UgaXQgY2FuIGJlCj4gc3dpdGNo ZWQgYnkgc29mdHdhcmUgYW5kIGlzIG5vdCBmaXhlZCBhdCBkZXNpZ24gdGltZS4KCk15IHZpZXcg aXMgdGhlIHdob2xlIChlbWJlZGRlZCkgc3lzdGVtLCBub3QganVzdCBMaW51eCBpdHNlbGYuIElm IHRoZQpoYXJkd2FyZSBkZXNpZ25zIGEgZHVhbC1yb2xlIHBvcnQsIGEgZ2FkZ2V0IGRyaXZlciBo YXMgdG8gYmUgdXNlZC4KT3RoZXJ3aXNlLCBkZWZpbmUgdGhlIHBvcnQgYXMgaG9zdC1vbmx5LCBl aXRoZXIgaW4gdGhlIGhhcmR3YXJlIGRlc2lnbiwKb3IgYXQgbGVhc3QgaW4gZGV2aWNlIHRyZWUu Cgo+ID4gIHdoaWNoIGhhcyB0byBiZSBsb2FkZWQgYXQgc29tZSBwb2ludC4gSW4gdGhlIGNhc2Ug eW91IGRlc2NyaWJlZAo+ID4gYWJvdmUsIHdoZW4gdGhlIGdhZGdldCBkcml2ZXIgd2lsbCBiZSBs b2FkZWQ/IGFuZCBob3c/Cj4gCj4gQWdhaW4sIGxvYWRpbmcgYSBnYWRnZXQgZHJpdmVyIGlzIG5v dCBwYXJ0IG9mIHRoZSB1c2UgY2FzZS4gSW4gd2hhdCBJCj4gZGVzY3JpYmVkLCB0aGUgdXNlciBv bmx5IHdhbnRzIHRvIHVzZSB0aGUgZHVhbC1yb2xlIHBvcnQgZm9yIGl0cyBob3N0Cj4gY2FwYWJp bGl0eSBhbmQgZG9lcyBub3QgY2FyZSBhYm91dCBnYWRnZXQgYXQgYWxsLiBXaGVuIHRoZSBkZXZp Y2UgaXMKPiBwbHVnZ2VkIGludG8gYSBob3N0LCBpdCB3aWxsIHNpbXBseSBjaGFyZ2UgYW5kIG5v dCBwcm9wb3NlIGFueSBVU0IKPiBkZXZpY2UgZmVhdHVyZXMuCgpJdCBzb3VuZHMgdG8gbWUgYSBo YWNraW5nIHRvIGFuIGV4aXN0aW5nIHByb2R1Y3QsIG5vdCBkZXNpZ25pbmcgYSBuZXcKcHJvZHVj dC4gSWYgc28sIHBsZWFzZSBoYWNrIGl0IGNvbXBsZXRlbHksIGRlZmluZSB0aGUgcG9ydCBkcl9t b2RlIHRvCmhvc3QgaW4gdGhlIGJvYXJkIGRldmljZSB0cmVlLCB0aGVuIHRoZSBwb3J0IHNob3Vs ZCB3b3JrIGZvciB5b3UuCgo+ID4gSWYgYSBnYWRnZXQgZHJpdmVyIHdpbGwgbmV2ZXIgYmUgdXNl ZCwgYSBob3N0LW9ubHkgcG9ydCBzaG91bGQgYmUgb24KPiA+IHRoZSBib2FyZCwgbm90IGEgZHVh bC1yb2xlIHBvcnQuCj4gCj4gSGVyZSBhcyB3ZWxsLCBJIHRoaW5rIHRoZSB1c2UgY2FzZSBpcyBz ZXBhcmF0ZSBmcm9tIHRoZSBoYXJkd2FyZSBkZXNpZ24uCj4gIEkgY3JhZnRlZCB0aGlzIHBhdGNo IGJlY2F1c2UgSSB3YXMgaW4gdGhlIHVzZSBjYXNlIEkgZGVzY3JpYmVkLCB3aXRoIGEKPiB0YWJs ZXQgdGhhdCBvbmx5IGZlYXR1cmVzIGEgbWljcm8gQiBVU0IgT1RHIHBvcnQuIFRoZSBmb3JtIGZh Y3RvciBzaW1wbHkKCkkgZ3Vlc3MgeW91IG1lYW50IG1pY3JvLUFCIHBvcnQsIG1pY3JvQiBkb2Vz bid0IGhhdmUgYW4gSUQgcGluLCBjYW5ub3QKbWFrZSBNVVNCIHRvIHdvcmsgaW4gaG9zdCBtb2Rl LgoKPiBkb2VzIG5vdCBhbGxvdyBoYXZpbmcgYSBmdWxsIFVTQiBBIGZlbWFsZSBob3N0LW9ubHkg cG9ydC4KPiAKPiA+ID4gRG8geW91IHRoaW5rIHRoaXMgaXMgYSB2YWxpZCB1c2UgY2FzZT8gSXQg c3VyZWx5IGlzIGEgY29tbW9uIG9uZSBhbmQKPiA+ID4gcGVyZmVjdGx5IGRlcGljdHMgbXkgc2l0 dWF0aW9uLgo+ID4gCj4gPiBBcyBJIGV4cGxhaW5lZCBhYm92ZSwgSSBkb24ndCB0aGluayBzby4K PiAKPiBJIGFtIHJlYWxseSBzdXJwcmlzZWQgdGhhdCB1c2luZyByZWd1bGFyIHVwc3RyZWFtIEdO VS9MaW51eAo+IGRpc3RyaWJ1dGlvbnMgb3V0IG9mIHRoZSBib3ggaXMgbm90IGEgdmFsaWQgdXNl IGNhc2UgZm9yIHRoZSBNVVNCCj4gZHJpdmVyLiBUaGUgc2l0dWF0aW9uIEknbSBkZXNjcmliaW5n IGlzIGV4YWN0bHkgdGhlIHNhbWUgYXMgYnV5aW5nIGEKPiBsYXB0b3Agd2l0aCBhIHByZWluc3Rh bGxlZCBPUyBhbmQgcmVwbGFjaW5nIGl0IHdpdGggYSByZWd1bGFyIGRpc3Ryby4gSW4KPiBteSBj YXNlLCB0aGF0J3Mgd2hhdCBJIGRpZCB3aXRoIHRoZSB0YWJsZXQgKHRoYXQgaGFkIGFuIG9sZCBB bmRyb2lkCj4gdmVyc2lvbiB0aGF0IGRpZCBleHBvc2UgZ2FkZ2V0IGZlYXR1cmVzIHZpYSBVU0Ip IGFuZCBJIGluc3RhbGxlZAo+IHVwc3RyZWFtIExpbnV4IGFuZCBhIGRpc3RybyBvbiBpdC4KCkVt YmVkZGVkIHN5c3RlbSBpcyBkaWZmZXJlbnQgdGhhbiBQQywgSSBkb24ndCBleHBlY3QgdG8ganVz dCBkcm9wIGluIGEKZGlzdHJvIHdpdGhvdXQgYW55IG1vZGlmaWNhdGlvbiB0byB3b3JrLCBlc3Bl Y2lhbGx5IGluIHRoaXMgY2FzZSB5b3UKY2hhbmdlIHRoZSBmdW5jdGlvbiBvZiB0aGUgcHJvZHVj dCBvcmlnaW5hbGx5IGRlc2lnbmVkIC0gZHVhbC1yb2xlIHBvcnQKdG8gaG9zdC1vbmx5IHBvcnQu IFlvdSB3b3VsZCBoYXZlIHRvIGF0IGxlYXN0IG1vZGlmeSB0aGUgYm9hcmQgZGV2aWNlCnRyZWUg Zm9yIHlvdXIgbmV3IHB1cnBvc2UuIAoKPiAKPiA+ID4gTm90ZSB0aGF0IGluIGFkZGl0aW9uIHRv IEFsbHdpbm5lciBkZXZpY2VzLCBJIGFsc28gaGF2ZSBvbWFwMy80LzUKPiA+ID4gZGV2aWNlcyBm b3IgdGVzdGluZyB0aGluZ3MuIEkgZG9uJ3QgdGhpbmsgSSBoYXZlIG90aGVyIE1VU0ItZW5hYmxl ZAo+ID4gCj4gPiBNdWNoIG1vcmUgdGhhbiB3aGF0IEkgaGF2ZSA7KQo+ID4gCj4gPiA+IGRldmlj ZXMgaW4gbXkgY29sbGVjdGlvbiB0aG91Z2gsIGJ1dCBJIHdvdWxkIGJlIHdpbGxpbmcgdG8gdGVz dAo+ID4gPiBmaXhlcyB0bwo+ID4gPiB0aGlzIGlzc3VlIG9uIHRoZSBvbmVzIEkgaGF2ZS4KPiA+ IAo+ID4gQXBwcmVjaWF0ZWQgaXQsIGJ1dCBzb21lb25lIGhhcyB0byBtYWtlIHRoZSBwYXRjaGVz IGZpcnN0LiBUaGUgb25lIHlvdQo+ID4gcG9zdGVkIG1pZ2h0IGJlIGEgZ29vZCBzdGFydCwgYnV0 IGl0IGlzIG5vdCBjb21wbGV0ZS4gVGhlIGZpcnN0IAo+ID4gcHJvYmxlbQo+IAo+IE9oLCBJIGFt IGRlZmluaXRlbHkgdXAgZm9yIG1ha2luZyB0aGUgY2hhbmdlcyBhcyB3ZWxsLCBJIG1lbnRpb25l ZAo+IHRlc3RpbmcgdG8gc2hvdyB3aGF0IGxldmVsIG9mIHRlc3QgY292ZXJhZ2UgSSBjb3VsZCBi cmluZyB0byB0aGUgdGFibGUsCj4gc2luY2UgdGhpcyB3aWxsIHByb2JhYmx5IHJlcXVpcmUgbWFr aW5nIHN1cmUgdGhhdCBpdCBkb2Vzbid0IGJyZWFrCj4gc3BlY2lmaWMgcGxhdGZvcm1zLCBnbHVl IGxheWVycywgZXRjLgoKeWVzLCBubyByZWdyZXNzaW9uIGlzIHJlcXVpcmVkLgoKPiA+IEkgc2Vl IGlzIHRoYXQgbXVzYl9zdGFydCgpIHdpbGwgYmUgY2FsbGVkIHR3aWNlLCBvbmUgaW4gdGhlIHBs YWNlIHlvdQo+ID4gcGF0Y2hlZCwgdGhlIG90aGVyIGlzIHdoZW4gdGhlIGdhZGdldCBkcml2ZXIg aXMgYm91bmQgdG8gdGhlIFVEQy4KPiAKPiBPa2F5LCBJIHdpbGwgbG9vayBpbnRvIHRoaXMgYW5k IG1ha2Ugc3VyZSB0aGVyZSBpcyBvbmx5IGEgc2luZ2xlIGNhbGwgdG8KPiBtdXNiX3N0YXJ0IGlu IGFsbCBzY2VuYXJpb3MuIEFyZSB0aGVyZSBvdGhlciB0aGluZ3MgdGhhdCBzaG91bGQgYmUKPiBt b2RpZmllZCBhcyB3ZWxsPwoKQXMgSSBzYWlkIGVhcmxpZXIgSSBkb24ndCBwbGFuIHRvIGNoYW5n ZSBpdCBiZWNhdXNlIEkgZG9uJ3QgdGhpbmsgaXQgaXMKYW4gaXNzdWUsIHNvIG5ldmVyIHJlYWxs eSBsb29rZWQgaW50byB0aGlzLiBCdXQgZm9sbG93aW5nIGlzIG15IGluaXRpYWwKdGhvdWdodDoK CkN1cnJlbnRseSBtdXNiX3N0YXJ0KCkgaXMgY2FsbGVkIHNlcGFyYXRlbHkgZm9yIGhvc3QgYW5k IGdhZGdldCwgYmVjYXVzZQp0aGUgbXVzYiBkcml2ZXJzIGRvbid0IHdhbnQgdG8gY291cGxlIHRo ZXNlIHR3byBjb25maWd1cmF0aW9ucyB0b2dldGhlci4KKFRob3VnaCB0aGUgaG9zdC1vbmx5IG9y IGdhZGdldC1vbmx5IE1VU0IgY29uZmlndXJhdGlvbiBtaWdodCBub3Qgd29yawp0b2RheSwgSSBo YXZlIHRlc3RlZCB0aGVtIGZvciBhIGxvbmcgdGltZSwgYnV0IGF0IGxlYXN0IHRoZSBLY29uZmln Cm9wdGlvbnMgYXJlIHRoZXJlLi4uKQoKU28gdGhlIGZpbmFsIHNvbHV0aW9uIHRoYXQgSSB3b3Vs ZCB0aGluayBzaG91bGQgbm90IGNvdXBsZSBib3RoCmNvbmZpZ3VyYXRpb25zIGV2ZW4gbW9yZS4g QW5kIEkgd2lsbCBub3QgYWNjZXB0IGEgc29sdXRpb24gd2hpY2ggb25seQpzaW1wbHkgYWRkcyBp Zi1lbHNlIHRvIGRpc3Rpbmd1aXNoIHRoZSBjb25maWd1cmF0aW9ucywgdGhlIGRyaXZlcnMKYWxy ZWFkeSBoYXZlIGVub3VnaCBpZi1lbHNlIHRvIGNsZWFuIHVwLgoKSWYgbXVzYl9zdGFydCgpIGNv dWxkIGJlIG1vdmVkIGluIG11c2IgY29yZSB3aGVyZSBpcyBpbmRlcGVuZGVudCB0byBob3N0Cm9y IGRldmljZSwgdGhhdCBtaWdodCBiZSBhIHBvc3NpYmxlIHNvbHV0aW9uLgoKQWdhaW4sIG15IG9w aW5pb24gb24gcmVtb3ZpbmcgdGhpcyByZXF1aXJlbWVudCBpcyB3YXN0aW5nIG9mIHRpbWUsIGFz CnRoZSBoYXJkd2FyZSBkZXNpZ24gc2hvdWxkIGJlIGRvbmUgcHJvcGVybHkgYXQgZmlyc3QgZm9y IHRoZSB1c2FnZSwgb3IKaWYgaGFja2luZyBvbiBhbiBleGlzdGluZyBwcm9kdWN0LCBkZXZpY2Ug dHJlZSBtb2RpZmljYXRpb24gc2hvdWxkIGJlCmRvbmUgZmlyc3QsIG9yIGp1c3Qgc2ltcGx5IGxl dCB0aGUgTGludXggaW5pdCBtb2R1bGUgdG8gbG9hZCBhIGdhZGdldApkcml2ZXIuCgpSZWdhcmRz LAotQmluLgotLS0KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUg InVuc3Vic2NyaWJlIGxpbnV4LXVzYiIgaW4KdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9y ZG9tb0B2Z2VyLmtlcm5lbC5vcmcKTW9yZSBtYWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIu a2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sCg==