From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Bin Liu <b-liu@ti.com>, linux-usb@vger.kernel.org
Subject: [1/1] usb: gadget: musb: fix short isoc packets with inventra dma
Date: Wed, 30 Jan 2019 14:59:16 +0100 [thread overview]
Message-ID: <20190130135916.GA15929@kroah.com> (raw)
On Wed, Jan 30, 2019 at 07:33:20AM -0600, Bin Liu wrote:
> Greg,
>
> On Wed, Jan 30, 2019 at 09:24:04AM +0100, Greg Kroah-Hartman wrote:
> > On Mon, Jan 28, 2019 at 02:01:51PM -0600, Bin Liu wrote:
> > > From: Paul Elder <paul.elder@ideasonboard.com>
> > >
> > > 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 were set). 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, set MUSB_TXCSR_TXPKTRDY
> > > in dma_controller_irq (musbhsdma.c), just like host mode transfers.
> > >
> > > This topic was originally tackled by Nicolas Boichat [0] [1] and is
> > > discussed 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
> > >
> > > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
> > > Signed-off-by: Bin Liu <b-liu@ti.com>
> >
> > No "Fixes:" tag?
>
> This patch changes the logic which was there in the very first commit of
> the musb drivers more than a decade ago, so it seems the issue was there
> from day one. I didn't add the 'Fixes:' tag, was thinking it doesn't add
> any value.
>
> Do you want me to add it?
> Fixes: 550a7375fe72 ("USB: Add MUSB and TUSB support")
Yes please.
> > No need for stable?
>
> The patch might not be applied on stable cleanly. I was thinking to send
> out backport patches for applicable stable trees once this patch got in
> v5.0 -rc.
Ok, that's fine.
greg k-h
next reply other threads:[~2019-01-30 13:59 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-30 13:59 Greg Kroah-Hartman [this message]
-- strict thread matches above, loose matches on Subject: below --
2019-01-30 13:33 [1/1] usb: gadget: musb: fix short isoc packets with inventra dma Bin Liu
2019-01-30 8:24 Greg Kroah-Hartman
2019-01-28 20:01 Bin Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190130135916.GA15929@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=b-liu@ti.com \
--cc=linux-usb@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.