mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-04-08 09:18:02 +07:00
USB: musb: fix data toggle saving with shared FIFO
For some strange reason the host side musb_giveback() decides that it's always got an IN transfer when the hardware endpoint is using a shared FIFO. This causes musb_save_toggle() to read the toggle state from the RXCSR register instead of TXCSR, and may also cause unneeded reloading of RX endpoint registers. Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
dc61d238b8
commit
51d9f3e100
@ -335,16 +335,11 @@ musb_save_toggle(struct musb_hw_ep *ep, int is_in, struct urb *urb)
|
|||||||
static struct musb_qh *
|
static struct musb_qh *
|
||||||
musb_giveback(struct musb_qh *qh, struct urb *urb, int status)
|
musb_giveback(struct musb_qh *qh, struct urb *urb, int status)
|
||||||
{
|
{
|
||||||
int is_in;
|
|
||||||
struct musb_hw_ep *ep = qh->hw_ep;
|
struct musb_hw_ep *ep = qh->hw_ep;
|
||||||
struct musb *musb = ep->musb;
|
struct musb *musb = ep->musb;
|
||||||
|
int is_in = usb_pipein(urb->pipe);
|
||||||
int ready = qh->is_ready;
|
int ready = qh->is_ready;
|
||||||
|
|
||||||
if (ep->is_shared_fifo)
|
|
||||||
is_in = 1;
|
|
||||||
else
|
|
||||||
is_in = usb_pipein(urb->pipe);
|
|
||||||
|
|
||||||
/* save toggle eagerly, for paranoia */
|
/* save toggle eagerly, for paranoia */
|
||||||
switch (qh->type) {
|
switch (qh->type) {
|
||||||
case USB_ENDPOINT_XFER_BULK:
|
case USB_ENDPOINT_XFER_BULK:
|
||||||
|
Loading…
Reference in New Issue
Block a user