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: gadget: musb: fix short isoc packets with inventra dma for pandaboard es From: Paul Elder Message-Id: <20190108044524.GA31873@localhost.localdomain> Date: Mon, 7 Jan 2019 23:45:24 -0500 To: Bin Liu , laurent.pinchart@ideasonboard.com, kieran.bingham@ideasonboard.com, Nicolas Boichat , gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, balbi@kernel.org List-ID: SGkgQmluLAoKT24gTW9uLCBKYW4gMDcsIDIwMTkgYXQgMDE6MTE6NTdQTSAtMDYwMCwgQmluIExp dSB3cm90ZToKPiBIaSBQYXVsLAo+IAo+IFNvcnJ5IGZvciB0aGUgZGVsYXkgb24gcmV2aWV3aW5n IGl0LgoKVGhhbmtzIGZvciB0aGUgcmV2aWV3LgoKPiBGb3IgdGhlIHN1YmplY3QsIGNhbiB5b3Ug cGxlYXNlIHVzZQo+IAo+IAl1c2I6IG11c2I6IGdhZGdldDogZml4IHNob3J0IGlzb2MgcGFja2V0 cyB3aXRoIGludmVudHJhIGRtYQoKYWNrCgo+IE9uIFR1ZSwgT2N0IDA5LCAyMDE4IGF0IDAyOjMy OjIwQU0gLTA0MDAsIFBhdWwgRWxkZXIgd3JvdGU6Cj4gPiBIYW5kbGluZyBzaG9ydCBwYWNrZXRz IChsZW5ndGggPCBtYXggcGFja2V0IHNpemUpIGluIHRoZSBJbnZlbnRyYSBETUEKPiA+IGVuZ2lu ZSBpbiB0aGUgTVVTQiBkcml2ZXIgY2F1c2VzIHRoZSBNVVNCIERNQSBjb250cm9sbGVyIHRvIGhh bmcuIEFuCj4gPiBleGFtcGxlIG9mIGEgcHJvYmxlbSB0aGF0IGlzIGNhdXNlZCBieSB0aGlzIHBy b2JsZW0gaXMgd2hlbiBzdHJlYW1pbmcKPiA+IHZpZGVvIG91dCBvZiBhIFVWQyBnYWRnZXQsIG9u bHkgdGhlIGZpcnN0IHZpZGVvIGZyYW1lIGlzIHRyYW5zZmVycmVkLgo+ID4gCj4gPiBGb3Igc2hv cnQgcGFja2V0cyAobW9kZS0wIG9yIG1vZGUtMSBETUEpLCBNVVNCX1RYQ1NSX1RYUEtUUkRZIG11 c3QgYmUKPiA+IHNldCBtYW51YWxseSBieSB0aGUgZHJpdmVyLiBUaGlzIHdhcyBwcmV2aW91c2x5 IGRvbmUgaW4gbXVzYl9nX3R4Cj4gPiAobXVzYl9nYWRnZXQuYyksIGJ1dCBpbmNvcnJlY3RseSAo YWxsIGNzciBmbGFncyB3ZXJlIGNsZWFyZWQsIGFuZCBvbmx5Cj4gPiBNVVNCX1RYQ1NSX01PREUg YW5kIE1VU0JfVFhDU1JfVFhQS1RSRFkpLiBGaXhpbmcgdGhhdCBwcm9ibGVtIGFsbG93cwo+ID4g c29tZSByZXF1ZXN0cyB0byBiZSB0cmFuc2ZlcnJlZCBjb3JyZWN0bHksIGJ1dCBtdWx0aXBsZSBy ZXF1ZXN0cyB3ZXJlCj4gPiBvZnRlbiBwdXQgdG9nZXRoZXIgaW4gb25lIFVTQiBwYWNrZXQsIGFu ZCBjYXVzZWQgcHJvYmxlbXMgaWYgdGhlIHBhY2tldAo+ID4gc2l6ZSB3YXMgbm90IGEgbXVsdGlw bGUgb2YgNC4KPiA+IAo+ID4gSW5zdGVhZCwgTVVTQl9UWENTUl9UWFBLVFJEWSBpcyBzZXQgaW4g ZG1hX2NvbnRyb2xsZXJfaXJxIChtdXNiaHNkbWEuYyksCj4gPiBqdXN0IGxpa2UgaG9zdCBtb2Rl IHRyYW5zZmVycywgdGhlbiBtdXNiX2dfdHggZm9yY2VzIHRoZSBwYWNrZXQgdG8gYmUKPiA+IGZs dXNoZWQsIGJ5IHNldHRpbmcgTVVTQl9UWENTUl9GTFVTSEZJRk8uCj4gPiAKPiA+IFRoaXMgdG9w aWMgd2FzIG9yaWdpbmFsbHkgdGFja2xlZCBieSBOaWNvbGFzIEJvaWNoYXQgWzBdIFsxXSBhbmQg aXMgZGlzY3Vzc2VkCj4gCj4gdGhpcyBsaW5lIGlzIGxvbmdlciB0aGFuIDc1IGNoYXJzLgoKYWNr Cgo+ID4gZnVydGhlciBhdCBbMl0gYXMgcGFydCBvZiBoaXMgR1NvQyBwcm9qZWN0IFszXS4KPiA+ IAo+ID4gWzBdIGh0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vZm9ydW0vP2hsPWVuIyF0b3BpYy9i ZWFnbGVib2FyZC1nc29jL2s4QXp3ZnA3NUNVCj4gPiBbMV0gaHR0cHM6Ly9naXRvcmlvdXMub3Jn L2JlYWdsZWJvYXJkLXVzYnNuaWZmZXIvYmVhZ2xlYm9hcmQtdXNic25pZmZlci1rZXJuZWwvY29t bWl0L2IwYmUzYjZjYzE5NWJhNzMyMTg5YjA0ZjFkNDNlYzg0M2MzZTU0Yzk/cD1iZWFnbGVib2Fy ZC11c2JzbmlmZmVyOmJlYWdsZWJvYXJkLXVzYnNuaWZmZXIta2VybmVsLmdpdDthPXBhdGNoO2g9 YjBiZTNiNmNjMTk1YmE3MzIxODliMDRmMWQ0M2VjODQzYzNlNTRjOQo+ID4gWzJdIGh0dHA6Ly9i ZWFnbGVib2FyZC11c2JzbmlmZmVyLmJsb2dzcG90LmNvbS8yMDEwLzA3L211c2ItaXNvY2hyb25v dXMtdHJhbnNmZXJzLWZpeGVkLmh0bWwKPiA+IFszXSBodHRwOi8vZWxpbnV4Lm9yZy9CZWFnbGVC b2FyZC9HU29DL1VTQlNuaWZmZXIKPiA+IAo+ID4gSSBoYXZlIGZvcndhcmQtcG9ydGVkIHRoaXMg cGF0Y2ggZnJvbSAyLjYuMzQgdG8gNC4xOS1yYzEuCj4gCj4gdGhpcyBsaW5lIGlzIGlycmVsZXZh bnQgdG8gdGhlIGNvbW1pdCBtZXNzYWdlLCBwbGVhc2UgbW92ZSBpdCBkb3duIHRvCj4gdW5kZXIg Jy0tLScuCgphY2sKCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IFBhdWwgRWxkZXIgPHBhdWwuZWxk ZXJAaWRlYXNvbmJvYXJkLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMvdXNiL211c2IvbXVzYl9n YWRnZXQuYyB8IDIxICsrKysrKysrKysrKysrLS0tLS0tLQo+ID4gIGRyaXZlcnMvdXNiL211c2Iv bXVzYmhzZG1hLmMgICB8IDIxICsrKysrKysrKysrLS0tLS0tLS0tLQo+ID4gIDIgZmlsZXMgY2hh bmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3VzYi9tdXNiL211c2JfZ2FkZ2V0LmMgYi9kcml2ZXJzL3VzYi9tdXNiL211 c2JfZ2FkZ2V0LmMKPiA+IGluZGV4IGVhZThiMWIxYjQ1Yi4uZDNmMzNmNDQ5NDQ1IDEwMDY0NAo+ ID4gLS0tIGEvZHJpdmVycy91c2IvbXVzYi9tdXNiX2dhZGdldC5jCj4gPiArKysgYi9kcml2ZXJz L3VzYi9tdXNiL211c2JfZ2FkZ2V0LmMKPiA+IEBAIC00NzksMTEgKzQ3OSwxNiBAQCB2b2lkIG11 c2JfZ190eChzdHJ1Y3QgbXVzYiAqbXVzYiwgdTggZXBudW0pCj4gPiAgCQkJJiYgKHJlcXVlc3Qt PmFjdHVhbCA9PSByZXF1ZXN0LT5sZW5ndGgpKQo+ID4gIAkJCQlzaG9ydF9wYWNrZXQgPSB0cnVl Owo+ID4gIAo+ID4gLQkJaWYgKChtdXNiX2RtYV9pbnZlbnRyYShtdXNiKSB8fCBtdXNiX2RtYV91 eDUwMChtdXNiKSkgJiYKPiA+IC0JCQkoaXNfZG1hICYmICghZG1hLT5kZXNpcmVkX21vZGUgfHwK PiA+IC0JCQkJKHJlcXVlc3QtPmFjdHVhbCAmCj4gPiAtCQkJCQkobXVzYl9lcC0+cGFja2V0X3N6 IC0gMSkpKSkpCj4gPiAtCQkJCXNob3J0X3BhY2tldCA9IHRydWU7Cj4gPiArCQlpZiAoaXNfZG1h ICYmIChtdXNiX2RtYV9pbnZlbnRyYShtdXNiKSB8fCBtdXNiX2RtYV91eDUwMChtdXNiKSkpIHsK PiAKPiBtb3JlIHRoYW4gODAgY2hhcnMuCj4KPiA+ICsJCQlpZiAoIWRtYS0+ZGVzaXJlZF9tb2Rl IHx8Cj4gCj4gSSB1bmRlcnN0YW5kIHlvdSBmb3J3YXJkLXBvcnQgTmljb2xhcycgcGF0Y2gsIGJ1 dCBkbyB5b3UgaGF2ZSBhIHNwZWNpZmljCj4gcmVhZG9uIHRvIHJlLXdyaXRlIHRoaXMgJ2lmJyBj b25kaXRpb24/IEknZCBsaWtlIHRvIHNlZSBtaW5pbXVtIGNvZGUKPiBjaGFuZ2UgaW4gYnVnIGZp eGVzLAo+Cj4gPiArCQkJCQlyZXF1ZXN0LT5hY3R1YWwgJSBtdXNiX2VwLT5wYWNrZXRfc3opIHsK PiAKPiBidXQgSSBsaWtlIHRoaXMgdmVyc2lvbiB0aG91Z2gsIGVhc2llciB0byByZWFkLgo+IAo+ ID4gKwkJCQltdXNiX2RiZyhtdXNiLCAiJXMgRmx1c2hpbmcgKEZJRk8pIEVQIDogS1BCXG4iLAo+ IAo+IHdoYXQgaXMgJ0tQQic/IHRoZSBtZXNzYWdlIGNvdWxkIGJlIG1vcmUgbWVhbmluZ2Z1bD8K PiAKPiA+ICsJCQkJCQltdXNiX2VwLT5lbmRfcG9pbnQubmFtZSk7Cj4gPiArCQkJCW11c2Jfd3Jp dGV3KGVwaW8sIE1VU0JfVFhDU1IsCj4gPiArCQkJCQkJY3NyIHwgTVVTQl9UWENTUl9GTFVTSEZJ Rk8pOwo+IAo+IFdoYXQgaWYgd2l0aG91dCB0aGlzIGxpbmU/IFRoZSBzaG9ydCBwYWNrZXQgZG9l c24ndCBzZW5kIG91dD8gIHNldHRpbmcKPiBUWFNDUl9UWFBLVFJEWSBpbiB0aGUgZG1hIGRyaXZl ciBpcyBub3Qgc3VmZmljaWVudD8gIFRYU0NSX0ZMVVNIRklGTyBpcwo+IG9ubHkgdXNlZCBmb3Ig YWJvcnRpbmcgY2FzZXMuCgpJIGp1c3QgdGVzdGVkIHRoaXMgYW5kIHlvdSBhcmUgcmlnaHQsIGl0 IGRvZXMgd29yayB3aXRob3V0IHRoaXMgbGluZS4KU2luY2UgdGhpcyBpcyB0aGUgb25seSBzaWdu aWZpY2FudCBsaW5lIGluIHRoaXMgdmVyeSBjb21wbGV4IGlmIGJsb2NrLApJJ2xsIGp1c3QgcmVt b3ZlIHRoaXMgZW50aXJlIGJsb2NrIHRvby4KCj4gPiArCQkJCXJldHVybjsKPiA+ICsJCQl9Cj4g PiArCQl9Cj4gPiAgCj4gPiAgCQlpZiAoc2hvcnRfcGFja2V0KSB7Cj4gPiAgCQkJLyoKPiA+IEBA IC00OTMsOCArNDk4LDEwIEBAIHZvaWQgbXVzYl9nX3R4KHN0cnVjdCBtdXNiICptdXNiLCB1OCBl cG51bSkKPiA+ICAJCQlpZiAoY3NyICYgTVVTQl9UWENTUl9UWFBLVFJEWSkKPiA+ICAJCQkJcmV0 dXJuOwo+ID4gIAo+ID4gLQkJCW11c2Jfd3JpdGV3KGVwaW8sIE1VU0JfVFhDU1IsIE1VU0JfVFhD U1JfTU9ERQo+ID4gLQkJCQkJfCBNVVNCX1RYQ1NSX1RYUEtUUkRZKTsKPiA+ICsJCQltdXNiX2Ri ZyhtdXNiLCAic2VuZGluZyB6ZXJvIHBrdCAoemVybz0lZCwgbGVuZ3RoPSVkLCBhY3R1YWw9JWQs IGRtYS0+ZGVzaXJlZF9tb2RlPSVkKVxuIiwKPiA+ICsJCQkJIHJlcXVlc3QtPnplcm8sIHJlcXVl c3QtPmxlbmd0aCwgcmVxdWVzdC0+YWN0dWFsLAo+IAo+IG1vcmUgdGhhbiA4MCBjaGFycy4KClRo ZSBmb3JtYXQgc3RyaW5nIG9yIHRoZSBwYXJhbWV0ZXJzPwoKPiAKPiA+ICsJCQkJIGRtYS0+ZGVz aXJlZF9tb2RlKTsKPiA+ICsJCQltdXNiX3dyaXRldyhlcGlvLCBNVVNCX1RYQ1NSLCBjc3IgfCBN VVNCX1RYQ1NSX1RYUEtUUkRZKTsKPiAKPiBtb3JlIHRoYW4gODAgY2hhcnMuCgpJdCdzIG9ubHkg YnkgMSBjaGFyYWN0ZXIuIFNob3VsZCBJIHN0aWxsIHB1dCB0aGUgbGFzdCBhcmd1bWVudCBvbiBh IG5ldwpsaW5lPwoKPiAKPiA+ICAJCQlyZXF1ZXN0LT56ZXJvID0gMDsKPiA+ICAJCX0KPiA+ICAK PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9tdXNiL211c2Joc2RtYS5jIGIvZHJpdmVycy91 c2IvbXVzYi9tdXNiaHNkbWEuYwo+ID4gaW5kZXggYTY4OGY3Zjg3ODI5Li5lNTE0ZDQ3MDBhNmIg MTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL3VzYi9tdXNiL211c2Joc2RtYS5jCj4gPiArKysgYi9k cml2ZXJzL3VzYi9tdXNiL211c2Joc2RtYS5jCj4gPiBAQCAtMzQ2LDEyICszNDYsMTAgQEAgc3Rh dGljIGlycXJldHVybl90IGRtYV9jb250cm9sbGVyX2lycShpbnQgaXJxLCB2b2lkICpwcml2YXRl X2RhdGEpCj4gPiAgCQkJCWNoYW5uZWwtPnN0YXR1cyA9IE1VU0JfRE1BX1NUQVRVU19GUkVFOwo+ ID4gIAo+ID4gIAkJCQkvKiBjb21wbGV0ZWQgKi8KPiA+IC0JCQkJaWYgKChkZXZjdGwgJiBNVVNC X0RFVkNUTF9ITSkKPiA+IC0JCQkJCSYmIChtdXNiX2NoYW5uZWwtPnRyYW5zbWl0KQo+ID4gLQkJ CQkJJiYgKChjaGFubmVsLT5kZXNpcmVkX21vZGUgPT0gMCkKPiA+IC0JCQkJCSAgICB8fCAoY2hh bm5lbC0+YWN0dWFsX2xlbiAmCj4gPiAtCQkJCQkgICAgKG11c2JfY2hhbm5lbC0+bWF4X3BhY2tl dF9zeiAtIDEpKSkKPiA+IC0JCQkJICAgICkgewo+ID4gKwkJCQlpZiAobXVzYl9jaGFubmVsLT50 cmFuc21pdCAmJgo+ID4gKwkJCQkgICAgKCFjaGFubmVsLT5kZXNpcmVkX21vZGUgfHwKPiA+ICsJ CQkJICAgICAoY2hhbm5lbC0+YWN0dWFsX2xlbiAlCj4gPiArCQkJCSAgICAgIG11c2JfY2hhbm5l bC0+bWF4X3BhY2tldF9zeikpKSB7Cj4gCj4gaW1wcm9wZXIgaW5kZW50YXRpb24uCgphY2suIFlv dSBkb24ndCB0aGluayB0aGlzIGlzIG1vcmUgcmVhZGFibGUgdGhhbiBpZiBldmVyeXRoaW5nIHdh cyBsaW5lZAp1cD8KCj4gPiAgCQkJCQl1OCAgZXBudW0gID0gbXVzYl9jaGFubmVsLT5lcG51bTsK PiA+ICAJCQkJCWludCBvZmZzZXQgPSBtdXNiLT5pby5lcF9vZmZzZXQoZXBudW0sCj4gPiAgCQkJ CQkJCQkgICAgTVVTQl9UWENTUik7Cj4gPiBAQCAtMzYzLDExICszNjEsMTQgQEAgc3RhdGljIGly cXJldHVybl90IGRtYV9jb250cm9sbGVyX2lycShpbnQgaXJxLCB2b2lkICpwcml2YXRlX2RhdGEp Cj4gPiAgCQkJCQkgKi8KPiA+ICAJCQkJCW11c2JfZXBfc2VsZWN0KG1iYXNlLCBlcG51bSk7Cj4g PiAgCQkJCQl0eGNzciA9IG11c2JfcmVhZHcobWJhc2UsIG9mZnNldCk7Cj4gPiAtCQkJCQl0eGNz ciAmPSB+KE1VU0JfVFhDU1JfRE1BRU5BQgo+ID4gKwkJCQkJaWYgKGNoYW5uZWwtPmRlc2lyZWRf bW9kZSA9PSAxKSB7Cj4gPiArCQkJCQkJdHhjc3IgJj0gfihNVVNCX1RYQ1NSX0RNQUVOQUIKPiA+ ICAJCQkJCQkJfCBNVVNCX1RYQ1NSX0FVVE9TRVQpOwo+ID4gLQkJCQkJbXVzYl93cml0ZXcobWJh c2UsIG9mZnNldCwgdHhjc3IpOwo+ID4gLQkJCQkJLyogU2VuZCBvdXQgdGhlIHBhY2tldCAqLwo+ ID4gLQkJCQkJdHhjc3IgJj0gfk1VU0JfVFhDU1JfRE1BTU9ERTsKPiA+ICsJCQkJCQltdXNiX3dy aXRldyhtYmFzZSwgb2Zmc2V0LCB0eGNzcik7Cj4gCj4gbW9yZSB0aGFuIDgwIGNoYXJzLgoKVGhp cyBpcyBhbHNvIG9ubHkgYnkgMiBjaGFyYWN0ZXJzOyBkbyB5b3Ugc3RpbGwgd2FudCBqdXN0IHRo ZSBsYXN0CmFyZ3VtZW50IG9uIGEgbmV3IGxpbmU/Cgo+ID4gKwkJCQkJCS8qIFNlbmQgb3V0IHRo ZSBwYWNrZXQgKi8KPiA+ICsJCQkJCQl0eGNzciAmPSB+TVVTQl9UWENTUl9ETUFNT0RFOwo+ID4g KwkJCQkJCXR4Y3NyIHw9IE1VU0JfVFhDU1JfRE1BRU5BQjsKPiA+ICsJCQkJCX0KPiA+ICAJCQkJ CXR4Y3NyIHw9ICBNVVNCX1RYQ1NSX1RYUEtUUkRZOwo+ID4gIAkJCQkJbXVzYl93cml0ZXcobWJh c2UsIG9mZnNldCwgdHhjc3IpOwo+ID4gIAkJCQl9CgpUaGFua3MsCgpQYXVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_MUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0EA61C43387 for ; Tue, 8 Jan 2019 04:46:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C710C2089F for ; Tue, 8 Jan 2019 04:45:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="ShM44k2b" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727677AbfAHEp6 (ORCPT ); Mon, 7 Jan 2019 23:45:58 -0500 Received: from perceval.ideasonboard.com ([213.167.242.64]:50344 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727145AbfAHEp6 (ORCPT ); Mon, 7 Jan 2019 23:45:58 -0500 Received: from localhost.localdomain (unknown [96.44.9.117]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id F0F3B586; Tue, 8 Jan 2019 05:45:53 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1546922755; bh=7ln1ccB7cqiWrBgTefe/oS5rVgVhcG71JufwPtatqgU=; h=Date:From:To:Subject:References:In-Reply-To:From; b=ShM44k2bhyTlkFV11WqtGqngSe/hG1Vi3tqnF63qitqhRdCvMXlxt40NTtqtDKq2o pi4wZ8UxB3n/jIMHltSlgstR87Z6fbLRu8DJpjfDfgzEA51sgGKUY3QgavwsbZvZN3 CezbYEYpPxqgghFKoPwILVn06nwbAHXPxeOoAIOc= Date: Mon, 7 Jan 2019 23:45:24 -0500 From: Paul Elder To: Bin Liu , laurent.pinchart@ideasonboard.com, kieran.bingham@ideasonboard.com, Nicolas Boichat , gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, balbi@kernel.org Subject: Re: [PATCH] usb: gadget: musb: fix short isoc packets with inventra dma for pandaboard es Message-ID: <20190108044524.GA31873@localhost.localdomain> References: <20181009063220.13745-1-paul.elder@ideasonboard.com> <20190107191137.GA25910@uda0271908> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190107191137.GA25910@uda0271908> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Bin, On Mon, Jan 07, 2019 at 01:11:57PM -0600, Bin Liu wrote: > Hi Paul, > > Sorry for the delay on reviewing it. Thanks for the review. > For the subject, can you please use > > usb: musb: gadget: fix short isoc packets with inventra dma ack > On Tue, Oct 09, 2018 at 02:32:20AM -0400, Paul Elder wrote: > > Handling short packets (length < max packet size) in the Inventra DMA > > engine in the MUSB driver causes the MUSB DMA controller to hang. An > > example of a problem that is caused by this problem is when streaming > > video out of a UVC gadget, only the first video frame is transferred. > > > > For short packets (mode-0 or mode-1 DMA), MUSB_TXCSR_TXPKTRDY must be > > set manually by the driver. This was previously done in musb_g_tx > > (musb_gadget.c), but incorrectly (all csr flags were cleared, and only > > MUSB_TXCSR_MODE and MUSB_TXCSR_TXPKTRDY). Fixing that problem allows > > some requests to be transferred correctly, but multiple requests were > > often put together in one USB packet, and caused problems if the packet > > size was not a multiple of 4. > > > > Instead, MUSB_TXCSR_TXPKTRDY is set in dma_controller_irq (musbhsdma.c), > > just like host mode transfers, then musb_g_tx forces the packet to be > > flushed, by setting MUSB_TXCSR_FLUSHFIFO. > > > > This topic was originally tackled by Nicolas Boichat [0] [1] and is discussed > > this line is longer than 75 chars. ack > > further at [2] as part of his GSoC project [3]. > > > > [0] https://groups.google.com/forum/?hl=en#!topic/beagleboard-gsoc/k8Azwfp75CU > > [1] https://gitorious.org/beagleboard-usbsniffer/beagleboard-usbsniffer-kernel/commit/b0be3b6cc195ba732189b04f1d43ec843c3e54c9?p=beagleboard-usbsniffer:beagleboard-usbsniffer-kernel.git;a=patch;h=b0be3b6cc195ba732189b04f1d43ec843c3e54c9 > > [2] http://beagleboard-usbsniffer.blogspot.com/2010/07/musb-isochronous-transfers-fixed.html > > [3] http://elinux.org/BeagleBoard/GSoC/USBSniffer > > > > I have forward-ported this patch from 2.6.34 to 4.19-rc1. > > this line is irrelevant to the commit message, please move it down to > under '---'. ack > > > > Signed-off-by: Paul Elder > > --- > > drivers/usb/musb/musb_gadget.c | 21 ++++++++++++++------- > > drivers/usb/musb/musbhsdma.c | 21 +++++++++++---------- > > 2 files changed, 25 insertions(+), 17 deletions(-) > > > > diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c > > index eae8b1b1b45b..d3f33f449445 100644 > > --- a/drivers/usb/musb/musb_gadget.c > > +++ b/drivers/usb/musb/musb_gadget.c > > @@ -479,11 +479,16 @@ void musb_g_tx(struct musb *musb, u8 epnum) > > && (request->actual == request->length)) > > short_packet = true; > > > > - if ((musb_dma_inventra(musb) || musb_dma_ux500(musb)) && > > - (is_dma && (!dma->desired_mode || > > - (request->actual & > > - (musb_ep->packet_sz - 1))))) > > - short_packet = true; > > + if (is_dma && (musb_dma_inventra(musb) || musb_dma_ux500(musb))) { > > more than 80 chars. > > > + if (!dma->desired_mode || > > I understand you forward-port Nicolas' patch, but do you have a specific > readon to re-write this 'if' condition? I'd like to see minimum code > change in bug fixes, > > > + request->actual % musb_ep->packet_sz) { > > but I like this version though, easier to read. > > > + musb_dbg(musb, "%s Flushing (FIFO) EP : KPB\n", > > what is 'KPB'? the message could be more meaningful? > > > + musb_ep->end_point.name); > > + musb_writew(epio, MUSB_TXCSR, > > + csr | MUSB_TXCSR_FLUSHFIFO); > > What if without this line? The short packet doesn't send out? setting > TXSCR_TXPKTRDY in the dma driver is not sufficient? TXSCR_FLUSHFIFO is > only used for aborting cases. I just tested this and you are right, it does work without this line. Since this is the only significant line in this very complex if block, I'll just remove this entire block too. > > + return; > > + } > > + } > > > > if (short_packet) { > > /* > > @@ -493,8 +498,10 @@ void musb_g_tx(struct musb *musb, u8 epnum) > > if (csr & MUSB_TXCSR_TXPKTRDY) > > return; > > > > - musb_writew(epio, MUSB_TXCSR, MUSB_TXCSR_MODE > > - | MUSB_TXCSR_TXPKTRDY); > > + musb_dbg(musb, "sending zero pkt (zero=%d, length=%d, actual=%d, dma->desired_mode=%d)\n", > > + request->zero, request->length, request->actual, > > more than 80 chars. The format string or the parameters? > > > + dma->desired_mode); > > + musb_writew(epio, MUSB_TXCSR, csr | MUSB_TXCSR_TXPKTRDY); > > more than 80 chars. It's only by 1 character. Should I still put the last argument on a new line? > > > request->zero = 0; > > } > > > > diff --git a/drivers/usb/musb/musbhsdma.c b/drivers/usb/musb/musbhsdma.c > > index a688f7f87829..e514d4700a6b 100644 > > --- a/drivers/usb/musb/musbhsdma.c > > +++ b/drivers/usb/musb/musbhsdma.c > > @@ -346,12 +346,10 @@ static irqreturn_t dma_controller_irq(int irq, void *private_data) > > channel->status = MUSB_DMA_STATUS_FREE; > > > > /* completed */ > > - if ((devctl & MUSB_DEVCTL_HM) > > - && (musb_channel->transmit) > > - && ((channel->desired_mode == 0) > > - || (channel->actual_len & > > - (musb_channel->max_packet_sz - 1))) > > - ) { > > + if (musb_channel->transmit && > > + (!channel->desired_mode || > > + (channel->actual_len % > > + musb_channel->max_packet_sz))) { > > improper indentation. ack. You don't think this is more readable than if everything was lined up? > > u8 epnum = musb_channel->epnum; > > int offset = musb->io.ep_offset(epnum, > > MUSB_TXCSR); > > @@ -363,11 +361,14 @@ static irqreturn_t dma_controller_irq(int irq, void *private_data) > > */ > > musb_ep_select(mbase, epnum); > > txcsr = musb_readw(mbase, offset); > > - txcsr &= ~(MUSB_TXCSR_DMAENAB > > + if (channel->desired_mode == 1) { > > + txcsr &= ~(MUSB_TXCSR_DMAENAB > > | MUSB_TXCSR_AUTOSET); > > - musb_writew(mbase, offset, txcsr); > > - /* Send out the packet */ > > - txcsr &= ~MUSB_TXCSR_DMAMODE; > > + musb_writew(mbase, offset, txcsr); > > more than 80 chars. This is also only by 2 characters; do you still want just the last argument on a new line? > > + /* Send out the packet */ > > + txcsr &= ~MUSB_TXCSR_DMAMODE; > > + txcsr |= MUSB_TXCSR_DMAENAB; > > + } > > txcsr |= MUSB_TXCSR_TXPKTRDY; > > musb_writew(mbase, offset, txcsr); > > } Thanks, Paul