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: [4/6] usb: gadget: add functions to signal udc driver to delay status stage From: Paul Elder Message-Id: <20181214034754.GB7477@garnet.amanokami.net> Date: Thu, 13 Dec 2018 22:47:54 -0500 To: Alan Stern Cc: Felipe Balbi , Laurent Pinchart , Bin Liu , kieran.bingham@ideasonboard.com, gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, rogerq@ti.com List-ID: W3NuaXBdCgo+ID4gPj4gPiBBbm90aGVyIHRoaW5nIHdlIHNob3VsZCBkbyBpcyBnaXZlIGZ1bmN0 aW9uIGRyaXZlcnMgYSB3YXkgdG8gc2VuZCBhCj4gPiA+PiA+IFNUQUxMIHJlc3BvbnNlIGZvciB0 aGUgc3RhdHVzIHN0YWdlLiAgQ3VycmVudGx5IHRoZXJlJ3Mgbm8gd2F5IHRvIGRvCj4gPiA+PiA+ IGl0LCBpZiBhIGRhdGEgc3RhZ2UgaXMgcHJlc2VudC4KPiA+ID4+IAo+ID4gPj4gU3RhdHVzIHN0 YWdlIGNhbiBvbmx5IGJlIHN0YWxsZWQgaWYgaG9zdCB0cmllcyB0byBtb3ZlIGRhdGEgb24gdGhl IHdyb25nCj4gPiA+PiBkaXJlY3Rpb24uCj4gPiA+Cj4gPiA+IFRoZSBVU0ItMiBzcGVjIGRpc2Fn cmVlcy4gIFNlZSBUYWJsZSA4LTcgaW4gc2VjdGlvbiA4LjUuMy4xIGFuZCB0aGUKPiA+ID4gZm9s bG93aW5nIHBhcmFncmFwaHMuICAoQWx0aG91Z2gsIEkgY2FuJ3Qgc2VlIHdoeSBhIGZ1bmN0aW9u IHdvdWxkIGV2ZXIKPiA+ID4gZmFpbCB0byBjb21wbGV0ZSB0aGUgY29tbWFuZCBzZXF1ZW5jZSBm b3IgYSBjb250cm9sLUlOIHRyYW5zZmVyIGFmdGVyCj4gPiA+IHRoZSBkYXRhIGhhZCBhbHJlYWR5 IGJlZW4gc2VudC4pCj4gPiAKPiA+IEkgY2FuJ3Qgc2VlIGhvdyB3ZSBjb3VsZCBldmVyIFNUQUxM IGFmdGVyIHJldHVybmluZyB0aGUgZGF0YSByZXF1ZXN0ZWQKPiA+IGJ5IHRoZSBob3N0LiBTZWVt cyBsaWtlIHRoYXQgd2Fzbid0IHdlbGwgdGhvdWdodCBvdXQuCj4gCj4gWWVzLCBpdCBkb2Vzbid0 IG1ha2UgYSBsb3Qgb2Ygc2Vuc2UuICBIb3dldmVyLCBTVEFMTGluZyB0aGUgc3RhdHVzCj4gc3Rh Z2Ugb2YgYSBjb250cm9sLU9VVCB0cmFuc2ZlciBkb2VzIG1ha2Ugc2Vuc2UsIHNvIHdlIHNob3Vs ZCBiZSBhYmxlCj4gdG8gZG8gaXQuICBUaGUgb2J2aW91cyBhcHByb2FjaCBpcyB0byBjYWxsIGVw MCdzIHNldF9oYWx0KCkgbWV0aG9kCj4gaW5zdGVhZCBvZiBzdWJtaXR0aW5nIGFuIGV4cGxpY2l0 IHN0YXR1cyByZXF1ZXN0LgoKRXhhY3RseSwgdGhhdCdzIHdoYXQgd2Ugd2FudCB0byBiZSBhYmxl IHRvIGRvLgoKPiA+ID4gQ2hlY2tpbmcgdGhlIGxlbmd0aCBpc24ndCBlbm91Z2guICBBIGRhdGEg c3RhZ2UgY2FuIGhhdmUgMCBsZW5ndGguCj4gPiAKPiA+IGFwb2xvZ2llcywgSSBtZWFudCB3TGVu Z3RoLCBsaWtlIHNvOgo+ID4gCj4gPiAJbGVuID0gbGUxNl90b19jcHUoY3RybC0+d0xlbmd0aCk7 Cj4gPiAJaWYgKCFsZW4pIHsKPiA+IAkJZHdjLT50aHJlZV9zdGFnZV9zZXR1cCA9IGZhbHNlOwo+ ID4gCQlkd2MtPmVwMF9leHBlY3RfaW4gPSBmYWxzZTsKPiA+IAkJZHdjLT5lcDBfbmV4dF9ldmVu dCA9IERXQzNfRVAwX05SRFlfU1RBVFVTOwo+ID4gCX0gZWxzZSB7Cj4gPiAJCWR3Yy0+dGhyZWVf c3RhZ2Vfc2V0dXAgPSB0cnVlOwo+ID4gCQlkd2MtPmVwMF9leHBlY3RfaW4gPSAhIShjdHJsLT5i UmVxdWVzdFR5cGUgJiBVU0JfRElSX0lOKTsKPiA+IAkJZHdjLT5lcDBfbmV4dF9ldmVudCA9IERX QzNfRVAwX05SRFlfREFUQTsKPiA+IAl9Cj4gCj4gUHJlc3VtYWJseSB5b3UgaW52ZXJ0IHRoZSB2 YWx1ZSBvZiBlcDBfZXhwZWN0X2luIGFuZCBzZXQgZXAwX25leHRfZXZlbnQKPiB0byBEV0MzX0VQ MF9OUkRZX1NUQVRVUyB3aGVuIHRoZSBuZXh0IChkYXRhLXN0YWdlKSByZXF1ZXN0IGlzIHN1Ym1p dHRlZAo+IGZvciBlcDAuICBPa2F5Lgo+IAo+ID4gc3BlY2lhbCByZXR1cm4gdmFsdWVzIHdvdWxk IGJlIHJlbmRlcmVkIHVuY2Vzc2FyeSBpZiB0aGVyZSdzIGFncmVlbWVudAo+ID4gdGhhdCBzdGF0 dXMgc3RhZ2UgaXMgYWx3YXlzIGV4cGxpY2l0LiBXaHkgd291bGQgbmVlZAo+ID4gVVNCX0dBREdF VF9ERUxBWUVEX1NUQVRVUyBpZiBldmVyeSBjYXNlIHJldHVybnMgdGhhdD8KPiAKPiBBZ3JlZWQu Cj4gCj4gPiA+PiA+IFRoZXJlJ3MgYWxzbyB0aGUgZmFjdCB0aGF0IHJlcXVlc3RzIGNhbiBzcGVj aWZ5IGEgY29tcGxldGlvbiBoYW5kbGVyLCBidXQgb25seSAKPiA+ID4+ID4gdGhlIGRhdGEgc3Rh Z2UgcmVxdWVzdCB3b3VsZCBzZWUgaXRzIGNvbXBsZXRpb24gaGFuZGxlciBjYWxsZWQgKHVubGVz cyB3ZSAKPiA+ID4+ID4gcmVxdWlyZSBVRENzIHRvIGNhbGwgY29tcGxldGlvbiByZXF1ZXN0cyBh dCB0aGUgY29tcGxldGlvbiBvZiB0aGUgc3RhdHVzIAo+ID4gPj4gPiBzdGFnZSwgYnV0IEknbSBu b3Qgc3VyZSB0aGF0IGFsbCBVRENzIGNhbiByZXBvcnQgdGhlIGV2ZW50IHRvIHRoZSBkcml2ZXIs IGFuZCAKPiA+ID4+ID4gdGhhdCB3b3VsZCBsaWtlbHkgYmUgdXNlbGVzcyBhcyBub2JvZHkgbmVl ZHMgdGhhdCBmZWF0dXJlKS4KPiA+ID4+IAo+ID4gPj4geW91IHN0aWxsIHdhbm5hIGtub3cgaWYg dGhlIGhvc3QgYWN0dWFsbHkgcHJvY2Vzc2VkIHlvdXIgc3RhdHVzCj4gPiA+PiBzdGFnZS4gdWRj LWNvcmUgY2FuIChhbmQgc2hvdWxkKSBwcm92aWRlIGEgZ2VuZXJpYyBzdGF0dXMgc3RhZ2UKPiA+ ID4+IGNvbXBsZXRpb24gZnVuY3Rpb24gd2hpY2gsIGF0IGEgbWluaW11bSwgYWlkcyB3aXRoIHNv bWUgdHJhY2Vwb2ludHMuCj4gPiA+Cj4gPiA+IEhlbHBpbmcgd2l0aCB0cmFjZXBvaW50cyBpcyBm aW5lLiAgSG93ZXZlciwgSSBkb24ndCB0aGluayBmdW5jdGlvbiAKPiA+ID4gZHJpdmVycyByZWFs bHkgbmVlZCB0byBrbm93IHdoZXRoZXIgdGhlIHN0YXR1cyBzdGFnZSB3YXMgcHJvY2Vzc2VkIGJ5 IAo+ID4gPiB0aGUgaG9zdC4gIENhbiB5b3UgcG9pbnQgb3V0IGFueSBleGFtcGxlcyB3aGVyZSBz dWNoIGluZm9ybWF0aW9uIHdvdWxkIAo+ID4gPiBiZSB1c2VmdWw/Cj4gPiAKPiA+IElmIHlvdSBr bm93IHlvdXIgU1RBVFVTIHN0YWdlIGNvbXBsZXRlZCwgeW91IGhhdmUgYSBndWFyYW50ZWUgdGhh dCB5b3VyCj4gPiBwcmV2aW91cyBjb250cm9sIHRyYW5zZmVyIGlzIGNvbXBsZXRlLiBJdCdzIGEg dmVyeSBjbGVhciBzaWduYWwgdGhhdCB5b3UKPiA+IHNob3VsZCBwcmVwYXJlIGZvciBtb3JlIGNv bnRyb2wgdHJhbnNmZXJzLgo+IAo+IFRoYXQgZG9lc24ndCBzZWVtIHRvIG1ha2Ugc2Vuc2UsIGJl Y2F1c2UgaW4gcmVhbGl0eSB5b3UgZG9uJ3QgaGF2ZQo+IHRoaXMgZ3VhcmFudGVlLiAgQ29uc2lk ZXIgdGhlIGZvbGxvd2luZyBzY2VuYXJpbzogVGhlIGhvc3Qgc3RhcnRzIGEKPiBjb250cm9sLUlO IHRyYW5zZmVyLiAgWW91IHNlbmQgdGhlIGRhdGEtc3RhZ2UgcmVxdWVzdCBzdWNjZXNmdWxseSBh bmQKPiB0aGVuIHN1Ym1pdCB0aGUgc3RhdHVzLXN0YWdlIHJlcXVlc3QuICBUaGF0IHJlcXVlc3Qg d2lsbCBjb21wbGV0ZQo+IGJlZm9yZSB0aGUgaG9zdCByZWNlaXZlcyB0aGUgQUNLIGZvciBpdHMg MC1sZW5ndGggc3RhdHVzIE9VVAo+IHRyYW5zYWN0aW9uLiAgSW4gZmFjdCwgdGhlIGhvc3QgbWF5 IG5ldmVyIHJlY2VpdmUgdGhhdCBBQ0sgYW5kIHNvIHRoZQo+IHRyYW5zZmVyIG1heSBuZXZlciBj b21wbGV0ZS4KPiAKPiBCZXNpZGVzLCB5b3UgZG9uJ3QgbmVlZCBhIHNpZ25hbCAoY2xlYXIgb3Ig b3RoZXJ3aXNlKSB0byBwcmVwYXJlIGZvcgo+IG1vcmUgY29udHJvbCB0cmFuc2ZlcnMuICBZb3Ug c2hvdWxkIHN0YXJ0IHByZXBhcmluZyBhcyBzb29uIGFzIHRoZQo+IHN0YXR1cy1zdGFnZSByZXF1 ZXN0IGhhcyBiZWVuIHN1Ym1pdHRlZC4gIEF0IHRoYXQgcG9pbnQsIHdoYXQgZWxzZSBpcwo+IHRo ZXJlIGZvciB5b3UgdG8gZG8/Cj4gCj4gRm9yIHRoYXQgbWF0dGVyLCB5b3Ugc2hvdWxkIGJlIHBy ZXBhcmVkIHRvIHJlY2VpdmUgYSBuZXcgc2V0dXAgY2FsbGJhY2sgCj4gYXQgYW55IHRpbWUuICBU aGUgaG9zdCBkb2Vzbid0IGhhdmUgdG8gd2FpdCBmb3IgYW4gb2xkIGNvbnRyb2wgdHJhbnNmZXIg Cj4gdG8gY29tcGxldGUgYmVmb3JlIHN0YXJ0aW5nIGEgbmV3IG9uZS4KPiAKPiBJIGp1c3QgZG9u J3Qgc2VlIGFueSB2YWx1ZSBpbiBrbm93aW5nIHRoZSBjb21wbGV0aW9uIGNvZGUgb2YgYQo+IHN0 YXR1cy1zdGFnZSByZXF1ZXN0LgoKSSBhZ3JlZS4KCj4gPiA+PiA+IFRvIHNpbXBsaWZ5IGZ1bmN0 aW9uIGRyaXZlcnMsIGRvIHlvdSB0aGluayB0aGUgYWJvdmUgcHJvcG9zYWwgb2YgYWRkaW5nIGEg ZmxhZyAKPiA+ID4+ID4gdG8gdGhlIChkYXRhIHN0YWdlKSByZXF1ZXN0IHRvIHJlcXVlc3QgYW4g YXV0b21hdGljIHRyYW5zaXRpb24gdG8gdGhlIHN0YXR1cyAKPiA+ID4+ID4gc3RhZ2UgaXMgYSBn b29kIGlkZWEgPyBXZSBjb3VsZCBldmVuIHBvc3NpYmx5IGludmVydCB0aGUgbG9naWMgYW5kIHRy YW5zaXRpb24gCj4gPiA+PiAKPiA+ID4+IG5vLCBJIGRvbid0IHRoaW5rIHNvLiBNYWtpbmcgdGhl IHN0YXR1cyBwaGFzZSBhbHdheXMgZXhwbGljaXQgaXMgZmFyCj4gPiA+PiBiZXR0ZXIuIFVEQ3Mg d29uJ3QgaGF2ZSB0byBjaGVjayBmbGFncywgb3IgYWN0IG9uIG1hZ2ljIHJldHVybgo+ID4gPj4g dmFsdWVzLiBJdCBqdXN0IHdvbid0IGRvIGFueXRoaW5nIHVudGlsIGEgcmVxdWVzdCBpcyBxdWV1 ZWQuCj4gPiA+Cj4gPiA+IEkgZG9uJ3QgYWdyZWUuICBUaGlzIHdvdWxkIGJlIGEgc2ltcGxlIHRl c3QgaW4gYSBsb2NhbGl6ZWQgYXJlYSAodGhlIAo+ID4gPiBjb21wbGV0aW9uIGNhbGxiYWNrIGZv ciBjb250cm9sIHJlcXVlc3RzKS4gIEl0IGNvdWxkIGV2ZW4gYmUgCj4gPiA+IGltcGxlbWVudGVk IGJ5IGEgbGlicmFyeSByb3V0aW5lOyB0aGUgVURDIGRyaXZlciB3b3VsZCBzaW1wbHkgaGF2ZSB0 byAKPiA+ID4gY2FsbCB0aGlzIHJvdXRpbmUgaW1tZWRpYXRlbHkgYWZ0ZXIgaW52b2tpbmcgdGhl IGNhbGxiYWNrLgo+ID4gCj4gPiBJIGRvbid0IGZvbGxvdyB3aGF0IHlvdSBtZWFuIGhlcmUuCj4g Cj4gU3VwcG9zZSB3ZSBoYXZlIGEgY29yZSBsaWJyYXJ5IHJvdXRpbmUgbGlrZSB0aGlzOgo+IAo+ IHZvaWQgdXNiX2dhZGdldF9jb250cm9sX2NvbXBsZXRlKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRn ZXQsCj4gCQl1bnNpZ25lZCBpbnQgbm9faW1wbGljaXRfc3RhdHVzLCBpbnQgc3RhdHVzKQo+IHsK PiAJc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXE7Cj4gCj4gCWlmIChub19pbXBsaWNpdF9zdGF0dXMg fHwgc3RhdHVzICE9IDApCj4gCQlyZXR1cm47Cj4gCj4gCS8qIFNlbmQgYW4gaW1wbGljaXQgc3Rh dHVzLXN0YWdlIHJlcXVlc3QgZm9yIGVwMCAqLwo+IAlyZXEgPSB1c2JfZXBfYWxsb2NfcmVxdWVz dChnYWRnZXQtPmVwMCwgR0ZQX0FUT01JQyk7Cj4gCWlmIChyZXEpIHsKPiAJCXJlcS0+bGVuZ3Ro ID0gMDsKPiAJCXJlcS0+bm9faW1wbGljaXRfc3RhdHVzID0gMTsKPiAJCXJlcS0+Y29tcGxldGUg PSAvKiByZXEncyBkZWFsbG9jYXRpb24gcm91dGluZSAqLwo+IAkJdXNiX2VwX3F1ZXVlKGdhZGdl dC0+ZXAwLCByZXEsIEdGUF9BVE9NSUMpOwo+IAl9Cj4gfQo+IAo+IFRoZW4gYWxsIGEgVURDIGRy aXZlciB3b3VsZCBuZWVkIHRvIGRvIGlzIGNhbGwgCj4gdXNiX2dhZGdldF9jb250cm9sX2NvbXBs ZXRlKCkgYWZ0ZXIgaW52b2tpbmcgYSBjb250cm9sIHJlcXVlc3QncyAKPiBjb21wbGV0aW9uIGhh bmRsZXIuICBUaGUgbm9faW1wbGljaXRfc3RhdHVzIGFuZCBzdGF0dXMgYXJndW1lbnRzIHdvdWxk IAo+IGJlIHRha2VuIGZyb20gdGhlIHJlcXVlc3QgdGhhdCB3YXMganVzdCBjb21wbGV0ZWQuCj4g Cj4gV2l0aCB0aGlzIG9uZSBjYWxsIGFkZGVkIHRvIGVhY2ggVURDLCBhbGwgdGhlIGV4aXN0aW5n IGZ1bmN0aW9uIGRyaXZlcnMKPiB3b3VsZCB3b3JrIGNvcnJlY3RseS4gIEV2ZW4gdGhvdWdoIHRo ZXkgZG9uJ3QgZXhwbGljaXRseSBxdWV1ZQo+IHN0YXR1cy1zdGFnZSByZXF1ZXN0cywgdGhlIG5l dyByb3V0aW5lIHdpbGwgZG8gc28gZm9yIHRoZW0sCj4gdHJhbnNwYXJlbnRseS4gIEZ1bmN0aW9u IGRyaXZlcnMgdGhhdCB3YW50IHRvIGhhbmRsZSB0aGVpciBvd24KPiBzdGF0dXMtc3RhZ2UgcmVx dWVzdHMgZXhwbGljaXRseSB3aWxsIG1lcmVseSBoYXZlIHRvIHNldCB0aGUKPiByZXEtPm5vX2lt cGxpY2l0X3N0YXR1cyBiaXQuCgpJIHRoaW5rIHRoaXMgaXMgYSBnb29kIGlkZWEuIFdlIHN0aWxs IGdldCB0aGUgYmVuZWZpdHMgb2YgZXhwbGljaXQKc3RhdHVzIHN0YWdlIHdpdGhvdXQgYmVpbmcg b3Zlcmx5IGludHJ1c2l2ZSBpbiB0aGUgY29udmVyc2lvbiwgYW5kIHdlCm1haW50YWluIHRoZSBx dWV1ZS1iYXNlZCBBUEkuCgpXb3VsZCBpdCBiZSBmaW5lIGZvciBtZSB0byBwcm9jZWVkIGluIHRo aXMgZGlyZWN0aW9uIGZvciBhIHYyPwoKPiAoV2UgbWlnaHQgb3IgbWlnaHQgbm90IG5lZWQgdG8g d2F0Y2ggb3V0IGZvciAwLWxlbmd0aCBjb250cm9sLU9VVCAKPiB0cmFuc2ZlcnMuICBGdW5jdGlv biBkcml2ZXJzIF9kb18gcXVldWUgc3RhdHVzLXN0YWdlIHJlcXVlc3RzIGZvciAKPiB0aG9zZS4p CgpUaGFua3MsCgpQYXVsIEVsZGVyCg==