| 1 | --- a/drivers/usb/host/ehci-q.c |
| 2 | +++ b/drivers/usb/host/ehci-q.c |
| 3 | @@ -1183,6 +1183,9 @@ static void end_unlink_async (struct ehc |
| 4 | ehci->reclaim = NULL; |
| 5 | start_unlink_async (ehci, next); |
| 6 | } |
| 7 | + |
| 8 | + if (ehci->has_synopsys_hc_bug) |
| 9 | + writel((u32)ehci->async->qh_dma, &ehci->regs->async_next); |
| 10 | } |
| 11 | |
| 12 | /* makes sure the async qh will become idle */ |
| 13 | --- a/drivers/usb/host/ehci.h |
| 14 | +++ b/drivers/usb/host/ehci.h |
| 15 | @@ -134,6 +134,7 @@ struct ehci_hcd { /* one per controlle |
| 16 | unsigned amd_pll_fix:1; |
| 17 | unsigned fs_i_thresh:1; /* Intel iso scheduling */ |
| 18 | unsigned use_dummy_qh:1; /* AMD Frame List table quirk*/ |
| 19 | + unsigned has_synopsys_hc_bug:1; /* Synopsys HC */ |
| 20 | |
| 21 | /* required for usb32 quirk */ |
| 22 | #define OHCI_CTRL_HCFS (3 << 6) |
| 23 | |