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== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Google-Smtp-Source: AB8JxZpBApap3RUd2J8iMKLOQPAhB8GfzuKLOaNpmoTXWQvP/N5Tncvetrz09yVaI/ffqymRFSwd ARC-Seal: i=1; a=rsa-sha256; t=1525191781; cv=none; d=google.com; s=arc-20160816; b=yobgFSD1NI/f/3Ypae8U8RT7b9BWVyvdjElUNs6fOVZuhUKxwKxM3I5YvVvlYuaosS SHF/8aJyJy0FIMbQbxcXG2U4G5+q1SWGYyM3gn5NpshXumqel/Ici32ajAeMGwIGTCst lTdiRPYIxb6qDWOwC0PZPm32X8pKmpd/QXX9vEvjEcRawpxHYMp0xCmcYhOfZPvQQSq2 0qSIfLj1SuzUQ5fT3oM/6unGWimJwVoP2ljzbxiurwW8Z7+fXvyf/8bJeVPsF0qc3xah 3XLex3Vk3m5DlmYrndoyWsn/hSr1ZuJN9sWZuEGtO+7GGndYmrT2w4onXL5njyJOA5Ed cPdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=user-agent:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:mail-followup-to :message-id:subject:cc:to:from:date:dkim-signature :arc-authentication-results; bh=vdgNQsrOnofTS9qTRkvkyM1h4qbqMOYQgG3O5qJ+ocY=; b=oD00RUhdVeAQzgHMTYGkIIo7/OUkf5RSPuxCEG/KmWwsqJybF5QT4HVFHoAjRHDezY R7qL6O4a6xUuEjuy8v/rmxd5zOqWd9mljMN83oEcsMGxuVY6IHD0Ib6I8od7zTThQnqZ KGgYAp0zKXWj3wXWxpAMW1t6hzsaTtbu8csKTn2EVESqPJfN3ynICgQ30iuE8Y+zS+NL mRZOc3ic1B/oPzsbPORlTd/DBydhO7UbE+AqtpFk8xlOGWUcxODfiXtMZSnXXkOTd3j1 NqODpnB/O+h4/v2tfYk7tKmDp7POPuTOdFrao+QIZGHlRxtj+gCUToXfAX2K9QmHBJXY qh9w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=aY091IuN; spf=pass (google.com: domain of b-liu@ti.com designates 198.47.27.77 as permitted sender) smtp.mailfrom=b-liu@ti.com; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Authentication-Results: mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=aY091IuN; spf=pass (google.com: domain of b-liu@ti.com designates 198.47.27.77 as permitted sender) smtp.mailfrom=b-liu@ti.com; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Date: Tue, 1 May 2018 11:22:54 -0500 From: Bin Liu To: Paul Kocialkowski CC: Paul Kocialkowski , Maxime Ripard , , , Greg Kroah-Hartman , Chen-Yu Tsai Subject: Re: [PATCH] usb: musb: Support gadget mode when the port is set to dual role Message-ID: <20180501162254.GF21238@uda0271908> Mail-Followup-To: Bin Liu , Paul Kocialkowski , Paul Kocialkowski , Maxime Ripard , linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, Greg Kroah-Hartman , Chen-Yu Tsai References: <20180328215213.29538-1-contact@paulk.fr> <20180329092326.dayuccomq5zrywqo@flea> <1522324644.1746.19.camel@bootlin.com> <20180420142524.GB29011@uda0271908> <2db056d6f65ecbcdc4f31a37fe2e1b1ddfb93c87.camel@paulk.fr> <20180421143426.GA10632@LTA0271908.dhcp.ti.com> <20180501122533.GD21238@uda0271908> <5907f644301499eff3e2740e15f16aaffec84817.camel@paulk.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <5907f644301499eff3e2740e15f16aaffec84817.camel@paulk.fr> User-Agent: Mutt/1.5.21 (2010-09-15) X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: =?utf-8?q?1596219936239404188?= X-GMAIL-MSGID: =?utf-8?q?1599279497854483559?= X-Mailing-List: linux-kernel@vger.kernel.org List-ID: On Tue, May 01, 2018 at 03:26:57PM +0200, Paul Kocialkowski wrote: > Hi, > > Le mardi 01 mai 2018 à 07:25 -0500, Bin Liu a écrit : > > On Mon, Apr 30, 2018 at 11:08:42PM +0200, Paul Kocialkowski wrote: > > > Hi, > > > > > > Le samedi 21 avril 2018 à 09:34 -0500, Bin Liu a écrit : > > > > Okay, this came down to an argument that whether we should require > > > > loading a gadget driver on a dual-role port to work in host mode, > > > > which is currently required on musb since a long long time ago. > > > > > > > > I understand the requirement is kinda unnecessary, but since it > > > > already > > > > exists on musb stack for a long time, I don't plan to change it. > > > > Because I > > > > cannot think of a use case in real products that doesn't > > > > automatically > > > > load a gadget function on the dual-role port. > > > > > > > > If you can explain a use case in real world (not a engineering > > > > lab) > > > > that the gadget driver will not be loaded at linux booting up, but > > > > later based on user's input, I will reconsider my decision. To > > > > remove > > > > this requirement from musb stack, the work is more than this > > > > patch. > > > > > > My use case here is to support common GNU/Linux-based distributions, > > > not > > > use-case-specific varieties of GNU/Linux-based rootfs. So my point > > > here > > > would be that most distros will (and probably should) ship g_ether > > > as a > > > module but without any particular reason to autoload it, or any > > > other > > > gadget module in particular, since the system is general-purpose. > > > > This is the case I called it "in a engineering lab", not a real > > product. > > To me, this sounds more like "daily use with upstream like on any > laptop/desktop" rather than an engineering lab, but that's not the main > point here. > > > > Then, imagine a user wants to plug a USB device through OTG (say, > > > because it's the only USB port available at all on the tablet > > > they're > > > using), it simply won't work. It won't be obvious to that user that > > > this > > > is because no gadget is loaded, since what they want to do does not > > > involve using gadget mode at any point. > > > > If a tablet has a dual-role usb port, it is designed to use a gadget > > driver, > > I don't understand the logic behind this assertion. If it has a dual- > role USB port, then its hardware allows both use cases. It's obvious > that the use case is up to the user of the device since it can be > switched by software and is not fixed at design time. My view is the whole (embedded) system, not just Linux itself. If the hardware designs a dual-role port, a gadget driver has to be used. Otherwise, define the port as host-only, either in the hardware design, or at least in device tree. > > which has to be loaded at some point. In the case you described > > above, when the gadget driver will be loaded? and how? > > Again, loading a gadget driver is not part of the use case. In what I > described, the user only wants to use the dual-role port for its host > capability and does not care about gadget at all. When the device is > plugged into a host, it will simply charge and not propose any USB > device features. It sounds to me a hacking to an existing product, not designing a new product. If so, please hack it completely, define the port dr_mode to host in the board device tree, then the port should work for you. > > If a gadget driver will never be used, a host-only port should be on > > the board, not a dual-role port. > > Here as well, I think the use case is separate from the hardware design. > I crafted this patch because I was in the use case I described, with a > tablet that only features a micro B USB OTG port. The form factor simply I guess you meant micro-AB port, microB doesn't have an ID pin, cannot make MUSB to work in host mode. > does not allow having a full USB A female host-only port. > > > > Do you think this is a valid use case? It surely is a common one and > > > perfectly depicts my situation. > > > > As I explained above, I don't think so. > > I am really surprised that using regular upstream GNU/Linux > distributions out of the box is not a valid use case for the MUSB > driver. The situation I'm describing is exactly the same as buying a > laptop with a preinstalled OS and replacing it with a regular distro. In > my case, that's what I did with the tablet (that had an old Android > version that did expose gadget features via USB) and I installed > upstream Linux and a distro on it. Embedded system is different than PC, I don't expect to just drop in a distro without any modification to work, especially in this case you change the function of the product originally designed - dual-role port to host-only port. You would have to at least modify the board device tree for your new purpose. > > > > Note that in addition to Allwinner devices, I also have omap3/4/5 > > > devices for testing things. I don't think I have other MUSB-enabled > > > > Much more than what I have ;) > > > > > devices in my collection though, but I would be willing to test > > > fixes to > > > this issue on the ones I have. > > > > Appreciated it, but someone has to make the patches first. The one you > > posted might be a good start, but it is not complete. The first > > problem > > Oh, I am definitely up for making the changes as well, I mentioned > testing to show what level of test coverage I could bring to the table, > since this will probably require making sure that it doesn't break > specific platforms, glue layers, etc. yes, no regression is required. > > I see is that musb_start() will be called twice, one in the place you > > patched, the other is when the gadget driver is bound to the UDC. > > Okay, I will look into this and make sure there is only a single call to > musb_start in all scenarios. Are there other things that should be > modified as well? As I said earlier I don't plan to change it because I don't think it is an issue, so never really looked into this. But following is my initial thought: Currently musb_start() is called separately for host and gadget, because the musb drivers don't want to couple these two configurations together. (Though the host-only or gadget-only MUSB configuration might not work today, I have tested them for a long time, but at least the Kconfig options are there...) So the final solution that I would think should not couple both configurations even more. And I will not accept a solution which only simply adds if-else to distinguish the configurations, the drivers already have enough if-else to clean up. If musb_start() could be moved in musb core where is independent to host or device, that might be a possible solution. Again, my opinion on removing this requirement is wasting of time, as the hardware design should be done properly at first for the usage, or if hacking on an existing product, device tree modification should be done first, or just simply let the Linux init module to load a gadget driver. Regards, -Bin.