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: Bin Liu Message-Id: <20190107191137.GA25910@uda0271908> Date: Mon, 7 Jan 2019 13:11:57 -0600 To: Paul Elder Cc: 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: SGkgUGF1bCwKClNvcnJ5IGZvciB0aGUgZGVsYXkgb24gcmV2aWV3aW5nIGl0LgpGb3IgdGhlIHN1 YmplY3QsIGNhbiB5b3UgcGxlYXNlIHVzZQoKCXVzYjogbXVzYjogZ2FkZ2V0OiBmaXggc2hvcnQg aXNvYyBwYWNrZXRzIHdpdGggaW52ZW50cmEgZG1hCgpPbiBUdWUsIE9jdCAwOSwgMjAxOCBhdCAw MjozMjoyMEFNIC0wNDAwLCBQYXVsIEVsZGVyIHdyb3RlOgo+IEhhbmRsaW5nIHNob3J0IHBhY2tl dHMgKGxlbmd0aCA8IG1heCBwYWNrZXQgc2l6ZSkgaW4gdGhlIEludmVudHJhIERNQQo+IGVuZ2lu ZSBpbiB0aGUgTVVTQiBkcml2ZXIgY2F1c2VzIHRoZSBNVVNCIERNQSBjb250cm9sbGVyIHRvIGhh bmcuIEFuCj4gZXhhbXBsZSBvZiBhIHByb2JsZW0gdGhhdCBpcyBjYXVzZWQgYnkgdGhpcyBwcm9i bGVtIGlzIHdoZW4gc3RyZWFtaW5nCj4gdmlkZW8gb3V0IG9mIGEgVVZDIGdhZGdldCwgb25seSB0 aGUgZmlyc3QgdmlkZW8gZnJhbWUgaXMgdHJhbnNmZXJyZWQuCj4gCj4gRm9yIHNob3J0IHBhY2tl dHMgKG1vZGUtMCBvciBtb2RlLTEgRE1BKSwgTVVTQl9UWENTUl9UWFBLVFJEWSBtdXN0IGJlCj4g c2V0IG1hbnVhbGx5IGJ5IHRoZSBkcml2ZXIuIFRoaXMgd2FzIHByZXZpb3VzbHkgZG9uZSBpbiBt dXNiX2dfdHgKPiAobXVzYl9nYWRnZXQuYyksIGJ1dCBpbmNvcnJlY3RseSAoYWxsIGNzciBmbGFn cyB3ZXJlIGNsZWFyZWQsIGFuZCBvbmx5Cj4gTVVTQl9UWENTUl9NT0RFIGFuZCBNVVNCX1RYQ1NS X1RYUEtUUkRZKS4gRml4aW5nIHRoYXQgcHJvYmxlbSBhbGxvd3MKPiBzb21lIHJlcXVlc3RzIHRv IGJlIHRyYW5zZmVycmVkIGNvcnJlY3RseSwgYnV0IG11bHRpcGxlIHJlcXVlc3RzIHdlcmUKPiBv ZnRlbiBwdXQgdG9nZXRoZXIgaW4gb25lIFVTQiBwYWNrZXQsIGFuZCBjYXVzZWQgcHJvYmxlbXMg aWYgdGhlIHBhY2tldAo+IHNpemUgd2FzIG5vdCBhIG11bHRpcGxlIG9mIDQuCj4gCj4gSW5zdGVh ZCwgTVVTQl9UWENTUl9UWFBLVFJEWSBpcyBzZXQgaW4gZG1hX2NvbnRyb2xsZXJfaXJxIChtdXNi aHNkbWEuYyksCj4ganVzdCBsaWtlIGhvc3QgbW9kZSB0cmFuc2ZlcnMsIHRoZW4gbXVzYl9nX3R4 IGZvcmNlcyB0aGUgcGFja2V0IHRvIGJlCj4gZmx1c2hlZCwgYnkgc2V0dGluZyBNVVNCX1RYQ1NS X0ZMVVNIRklGTy4KPiAKPiBUaGlzIHRvcGljIHdhcyBvcmlnaW5hbGx5IHRhY2tsZWQgYnkgTmlj b2xhcyBCb2ljaGF0IFswXSBbMV0gYW5kIGlzIGRpc2N1c3NlZAoKdGhpcyBsaW5lIGlzIGxvbmdl ciB0aGFuIDc1IGNoYXJzLgoKPiBmdXJ0aGVyIGF0IFsyXSBhcyBwYXJ0IG9mIGhpcyBHU29DIHBy b2plY3QgWzNdLgo+IAo+IFswXSBodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2ZvcnVtLz9obD1l biMhdG9waWMvYmVhZ2xlYm9hcmQtZ3NvYy9rOEF6d2ZwNzVDVQo+IFsxXSBodHRwczovL2dpdG9y aW91cy5vcmcvYmVhZ2xlYm9hcmQtdXNic25pZmZlci9iZWFnbGVib2FyZC11c2JzbmlmZmVyLWtl cm5lbC9jb21taXQvYjBiZTNiNmNjMTk1YmE3MzIxODliMDRmMWQ0M2VjODQzYzNlNTRjOT9wPWJl YWdsZWJvYXJkLXVzYnNuaWZmZXI6YmVhZ2xlYm9hcmQtdXNic25pZmZlci1rZXJuZWwuZ2l0O2E9 cGF0Y2g7aD1iMGJlM2I2Y2MxOTViYTczMjE4OWIwNGYxZDQzZWM4NDNjM2U1NGM5Cj4gWzJdIGh0 dHA6Ly9iZWFnbGVib2FyZC11c2JzbmlmZmVyLmJsb2dzcG90LmNvbS8yMDEwLzA3L211c2ItaXNv Y2hyb25vdXMtdHJhbnNmZXJzLWZpeGVkLmh0bWwKPiBbM10gaHR0cDovL2VsaW51eC5vcmcvQmVh Z2xlQm9hcmQvR1NvQy9VU0JTbmlmZmVyCj4gCj4gSSBoYXZlIGZvcndhcmQtcG9ydGVkIHRoaXMg cGF0Y2ggZnJvbSAyLjYuMzQgdG8gNC4xOS1yYzEuCgp0aGlzIGxpbmUgaXMgaXJyZWxldmFudCB0 byB0aGUgY29tbWl0IG1lc3NhZ2UsIHBsZWFzZSBtb3ZlIGl0IGRvd24gdG8KdW5kZXIgJy0tLScu Cgo+IAo+IFNpZ25lZC1vZmYtYnk6IFBhdWwgRWxkZXIgPHBhdWwuZWxkZXJAaWRlYXNvbmJvYXJk LmNvbT4KPiAtLS0KPiAgZHJpdmVycy91c2IvbXVzYi9tdXNiX2dhZGdldC5jIHwgMjEgKysrKysr KysrKysrKystLS0tLS0tCj4gIGRyaXZlcnMvdXNiL211c2IvbXVzYmhzZG1hLmMgICB8IDIxICsr KysrKysrKysrLS0tLS0tLS0tLQo+ICAyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyks IDE3IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9tdXNiL211c2Jf Z2FkZ2V0LmMgYi9kcml2ZXJzL3VzYi9tdXNiL211c2JfZ2FkZ2V0LmMKPiBpbmRleCBlYWU4YjFi MWI0NWIuLmQzZjMzZjQ0OTQ0NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3VzYi9tdXNiL211c2Jf Z2FkZ2V0LmMKPiArKysgYi9kcml2ZXJzL3VzYi9tdXNiL211c2JfZ2FkZ2V0LmMKPiBAQCAtNDc5 LDExICs0NzksMTYgQEAgdm9pZCBtdXNiX2dfdHgoc3RydWN0IG11c2IgKm11c2IsIHU4IGVwbnVt KQo+ICAJCQkmJiAocmVxdWVzdC0+YWN0dWFsID09IHJlcXVlc3QtPmxlbmd0aCkpCj4gIAkJCQlz aG9ydF9wYWNrZXQgPSB0cnVlOwo+ICAKPiAtCQlpZiAoKG11c2JfZG1hX2ludmVudHJhKG11c2Ip IHx8IG11c2JfZG1hX3V4NTAwKG11c2IpKSAmJgo+IC0JCQkoaXNfZG1hICYmICghZG1hLT5kZXNp cmVkX21vZGUgfHwKPiAtCQkJCShyZXF1ZXN0LT5hY3R1YWwgJgo+IC0JCQkJCShtdXNiX2VwLT5w YWNrZXRfc3ogLSAxKSkpKSkKPiAtCQkJCXNob3J0X3BhY2tldCA9IHRydWU7Cj4gKwkJaWYgKGlz X2RtYSAmJiAobXVzYl9kbWFfaW52ZW50cmEobXVzYikgfHwgbXVzYl9kbWFfdXg1MDAobXVzYikp KSB7Cgptb3JlIHRoYW4gODAgY2hhcnMuCgo+ICsJCQlpZiAoIWRtYS0+ZGVzaXJlZF9tb2RlIHx8 CgpJIHVuZGVyc3RhbmQgeW91IGZvcndhcmQtcG9ydCBOaWNvbGFzJyBwYXRjaCwgYnV0IGRvIHlv dSBoYXZlIGEgc3BlY2lmaWMKcmVhZG9uIHRvIHJlLXdyaXRlIHRoaXMgJ2lmJyBjb25kaXRpb24/ IEknZCBsaWtlIHRvIHNlZSBtaW5pbXVtIGNvZGUKY2hhbmdlIGluIGJ1ZyBmaXhlcywKCj4gKwkJ CQkJcmVxdWVzdC0+YWN0dWFsICUgbXVzYl9lcC0+cGFja2V0X3N6KSB7CgpidXQgSSBsaWtlIHRo aXMgdmVyc2lvbiB0aG91Z2gsIGVhc2llciB0byByZWFkLgoKPiArCQkJCW11c2JfZGJnKG11c2Is ICIlcyBGbHVzaGluZyAoRklGTykgRVAgOiBLUEJcbiIsCgp3aGF0IGlzICdLUEInPyB0aGUgbWVz c2FnZSBjb3VsZCBiZSBtb3JlIG1lYW5pbmdmdWw/Cgo+ICsJCQkJCQltdXNiX2VwLT5lbmRfcG9p bnQubmFtZSk7Cj4gKwkJCQltdXNiX3dyaXRldyhlcGlvLCBNVVNCX1RYQ1NSLAo+ICsJCQkJCQlj c3IgfCBNVVNCX1RYQ1NSX0ZMVVNIRklGTyk7CgpXaGF0IGlmIHdpdGhvdXQgdGhpcyBsaW5lPyBU aGUgc2hvcnQgcGFja2V0IGRvZXNuJ3Qgc2VuZCBvdXQ/ICBzZXR0aW5nClRYU0NSX1RYUEtUUkRZ IGluIHRoZSBkbWEgZHJpdmVyIGlzIG5vdCBzdWZmaWNpZW50PyAgVFhTQ1JfRkxVU0hGSUZPIGlz Cm9ubHkgdXNlZCBmb3IgYWJvcnRpbmcgY2FzZXMuCgo+ICsJCQkJcmV0dXJuOwo+ICsJCQl9Cj4g KwkJfQo+ICAKPiAgCQlpZiAoc2hvcnRfcGFja2V0KSB7Cj4gIAkJCS8qCj4gQEAgLTQ5Myw4ICs0 OTgsMTAgQEAgdm9pZCBtdXNiX2dfdHgoc3RydWN0IG11c2IgKm11c2IsIHU4IGVwbnVtKQo+ICAJ CQlpZiAoY3NyICYgTVVTQl9UWENTUl9UWFBLVFJEWSkKPiAgCQkJCXJldHVybjsKPiAgCj4gLQkJ CW11c2Jfd3JpdGV3KGVwaW8sIE1VU0JfVFhDU1IsIE1VU0JfVFhDU1JfTU9ERQo+IC0JCQkJCXwg TVVTQl9UWENTUl9UWFBLVFJEWSk7Cj4gKwkJCW11c2JfZGJnKG11c2IsICJzZW5kaW5nIHplcm8g cGt0ICh6ZXJvPSVkLCBsZW5ndGg9JWQsIGFjdHVhbD0lZCwgZG1hLT5kZXNpcmVkX21vZGU9JWQp XG4iLAo+ICsJCQkJIHJlcXVlc3QtPnplcm8sIHJlcXVlc3QtPmxlbmd0aCwgcmVxdWVzdC0+YWN0 dWFsLAoKbW9yZSB0aGFuIDgwIGNoYXJzLgoKPiArCQkJCSBkbWEtPmRlc2lyZWRfbW9kZSk7Cj4g KwkJCW11c2Jfd3JpdGV3KGVwaW8sIE1VU0JfVFhDU1IsIGNzciB8IE1VU0JfVFhDU1JfVFhQS1RS RFkpOwoKbW9yZSB0aGFuIDgwIGNoYXJzLgoKPiAgCQkJcmVxdWVzdC0+emVybyA9IDA7Cj4gIAkJ fQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbXVzYi9tdXNiaHNkbWEuYyBiL2RyaXZl cnMvdXNiL211c2IvbXVzYmhzZG1hLmMKPiBpbmRleCBhNjg4ZjdmODc4MjkuLmU1MTRkNDcwMGE2 YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3VzYi9tdXNiL211c2Joc2RtYS5jCj4gKysrIGIvZHJp dmVycy91c2IvbXVzYi9tdXNiaHNkbWEuYwo+IEBAIC0zNDYsMTIgKzM0NiwxMCBAQCBzdGF0aWMg aXJxcmV0dXJuX3QgZG1hX2NvbnRyb2xsZXJfaXJxKGludCBpcnEsIHZvaWQgKnByaXZhdGVfZGF0 YSkKPiAgCQkJCWNoYW5uZWwtPnN0YXR1cyA9IE1VU0JfRE1BX1NUQVRVU19GUkVFOwo+ICAKPiAg CQkJCS8qIGNvbXBsZXRlZCAqLwo+IC0JCQkJaWYgKChkZXZjdGwgJiBNVVNCX0RFVkNUTF9ITSkK PiAtCQkJCQkmJiAobXVzYl9jaGFubmVsLT50cmFuc21pdCkKPiAtCQkJCQkmJiAoKGNoYW5uZWwt PmRlc2lyZWRfbW9kZSA9PSAwKQo+IC0JCQkJCSAgICB8fCAoY2hhbm5lbC0+YWN0dWFsX2xlbiAm Cj4gLQkJCQkJICAgIChtdXNiX2NoYW5uZWwtPm1heF9wYWNrZXRfc3ogLSAxKSkpCj4gLQkJCQkg ICAgKSB7Cj4gKwkJCQlpZiAobXVzYl9jaGFubmVsLT50cmFuc21pdCAmJgo+ICsJCQkJICAgICgh Y2hhbm5lbC0+ZGVzaXJlZF9tb2RlIHx8Cj4gKwkJCQkgICAgIChjaGFubmVsLT5hY3R1YWxfbGVu ICUKPiArCQkJCSAgICAgIG11c2JfY2hhbm5lbC0+bWF4X3BhY2tldF9zeikpKSB7CgppbXByb3Bl ciBpbmRlbnRhdGlvbi4KCj4gIAkJCQkJdTggIGVwbnVtICA9IG11c2JfY2hhbm5lbC0+ZXBudW07 Cj4gIAkJCQkJaW50IG9mZnNldCA9IG11c2ItPmlvLmVwX29mZnNldChlcG51bSwKPiAgCQkJCQkJ CQkgICAgTVVTQl9UWENTUik7Cj4gQEAgLTM2MywxMSArMzYxLDE0IEBAIHN0YXRpYyBpcnFyZXR1 cm5fdCBkbWFfY29udHJvbGxlcl9pcnEoaW50IGlycSwgdm9pZCAqcHJpdmF0ZV9kYXRhKQo+ICAJ CQkJCSAqLwo+ICAJCQkJCW11c2JfZXBfc2VsZWN0KG1iYXNlLCBlcG51bSk7Cj4gIAkJCQkJdHhj c3IgPSBtdXNiX3JlYWR3KG1iYXNlLCBvZmZzZXQpOwo+IC0JCQkJCXR4Y3NyICY9IH4oTVVTQl9U WENTUl9ETUFFTkFCCj4gKwkJCQkJaWYgKGNoYW5uZWwtPmRlc2lyZWRfbW9kZSA9PSAxKSB7Cj4g KwkJCQkJCXR4Y3NyICY9IH4oTVVTQl9UWENTUl9ETUFFTkFCCj4gIAkJCQkJCQl8IE1VU0JfVFhD U1JfQVVUT1NFVCk7Cj4gLQkJCQkJbXVzYl93cml0ZXcobWJhc2UsIG9mZnNldCwgdHhjc3IpOwo+ IC0JCQkJCS8qIFNlbmQgb3V0IHRoZSBwYWNrZXQgKi8KPiAtCQkJCQl0eGNzciAmPSB+TVVTQl9U WENTUl9ETUFNT0RFOwo+ICsJCQkJCQltdXNiX3dyaXRldyhtYmFzZSwgb2Zmc2V0LCB0eGNzcik7 Cgptb3JlIHRoYW4gODAgY2hhcnMuCgo+ICsJCQkJCQkvKiBTZW5kIG91dCB0aGUgcGFja2V0ICov Cj4gKwkJCQkJCXR4Y3NyICY9IH5NVVNCX1RYQ1NSX0RNQU1PREU7Cj4gKwkJCQkJCXR4Y3NyIHw9 IE1VU0JfVFhDU1JfRE1BRU5BQjsKPiArCQkJCQl9Cj4gIAkJCQkJdHhjc3IgfD0gIE1VU0JfVFhD U1JfVFhQS1RSRFk7Cj4gIAkJCQkJbXVzYl93cml0ZXcobWJhc2UsIG9mZnNldCwgdHhjc3IpOwo+ ICAJCQkJfQoKUmVnYXJkcywKLUJpbi4K 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=-13.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,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 880D4C43387 for ; Mon, 7 Jan 2019 19:12:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4A97F206B7 for ; Mon, 7 Jan 2019 19:12:05 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="xiyAAcOF" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727410AbfAGTME (ORCPT ); Mon, 7 Jan 2019 14:12:04 -0500 Received: from fllv0015.ext.ti.com ([198.47.19.141]:51776 "EHLO fllv0015.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726821AbfAGTME (ORCPT ); Mon, 7 Jan 2019 14:12:04 -0500 Received: from fllv0034.itg.ti.com ([10.64.40.246]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id x07JBwMZ010111; Mon, 7 Jan 2019 13:11:58 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1546888318; bh=63H/4aZfU8Hujhufwqdhr+dsCQQrHDmjLCPwcAgjN2Y=; h=Date:From:To:CC:Subject:References:In-Reply-To; b=xiyAAcOFy4a4PKKMO8o3zgMnev8iKeGRe6f82CoP4qeyz3ib3SJCdYov2q++mxpMA IZzBvsN1Cy+/GlkvQU2eIKs47b2R8rook5XTpySuQbFuuvF7iQ3jyc2FuQcvPP+l+Q mpy+kTm8cOtqVIgI0EqzbpRiFS83FAzme6DN4eiU= Received: from DFLE104.ent.ti.com (dfle104.ent.ti.com [10.64.6.25]) by fllv0034.itg.ti.com (8.15.2/8.15.2) with ESMTPS id x07JBwt2004478 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 7 Jan 2019 13:11:58 -0600 Received: from DFLE100.ent.ti.com (10.64.6.21) by DFLE104.ent.ti.com (10.64.6.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1591.10; Mon, 7 Jan 2019 13:11:57 -0600 Received: from dlep32.itg.ti.com (157.170.170.100) by DFLE100.ent.ti.com (10.64.6.21) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1591.10 via Frontend Transport; Mon, 7 Jan 2019 13:11:57 -0600 Received: from localhost (ileax41-snat.itg.ti.com [10.172.224.153]) by dlep32.itg.ti.com (8.14.3/8.13.8) with ESMTP id x07JBvTY031916; Mon, 7 Jan 2019 13:11:57 -0600 Date: Mon, 7 Jan 2019 13:11:57 -0600 From: Bin Liu To: Paul Elder CC: , , Nicolas Boichat , , , , Subject: Re: [PATCH] usb: gadget: musb: fix short isoc packets with inventra dma for pandaboard es Message-ID: <20190107191137.GA25910@uda0271908> Mail-Followup-To: Bin Liu , Paul Elder , 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 References: <20181009063220.13745-1-paul.elder@ideasonboard.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20181009063220.13745-1-paul.elder@ideasonboard.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Paul, Sorry for the delay on reviewing it. For the subject, can you please use usb: musb: gadget: fix short isoc packets with inventra dma 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. > 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 '---'. > > 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. > + 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. > + dma->desired_mode); > + musb_writew(epio, MUSB_TXCSR, csr | MUSB_TXCSR_TXPKTRDY); more than 80 chars. > 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. > 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. > + /* Send out the packet */ > + txcsr &= ~MUSB_TXCSR_DMAMODE; > + txcsr |= MUSB_TXCSR_DMAENAB; > + } > txcsr |= MUSB_TXCSR_TXPKTRDY; > musb_writew(mbase, offset, txcsr); > } Regards, -Bin.