From 8ca69a26b5341b8e7933979da1da09a64d5c180f Mon Sep 17 00:00:00 2001 From: Gabor Juhos Date: Wed, 13 Apr 2011 10:54:23 +0200 Subject: [PATCH] --- yaml --- r: 248729 b: refs/heads/master c: 2f7ac6c199978d0a0e407a12534201aa675a6482 h: refs/heads/master i: 248727: 21e289208325411f369c814e045c06a8988167a5 v: v3 --- [refs] | 2 +- trunk/drivers/usb/host/ehci-ath79.c | 2 ++ trunk/drivers/usb/host/ehci-q.c | 4 ++++ trunk/drivers/usb/host/ehci.h | 1 + 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 679f6c4fea7c..487e2d3aaaa6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 502fa84195f47a79d7220470ebaa85a773659755 +refs/heads/master: 2f7ac6c199978d0a0e407a12534201aa675a6482 diff --git a/trunk/drivers/usb/host/ehci-ath79.c b/trunk/drivers/usb/host/ehci-ath79.c index 74325b87bd77..7ea23b50f5d8 100644 --- a/trunk/drivers/usb/host/ehci-ath79.c +++ b/trunk/drivers/usb/host/ehci-ath79.c @@ -54,6 +54,8 @@ static int ehci_ath79_init(struct usb_hcd *hcd) switch (id->driver_data) { case EHCI_ATH79_IP_V1: + ehci->has_synopsys_hc_bug = 1; + ehci->caps = hcd->regs; ehci->regs = hcd->regs + HC_LENGTH(ehci_readl(ehci, &ehci->caps->hc_capbase)); diff --git a/trunk/drivers/usb/host/ehci-q.c b/trunk/drivers/usb/host/ehci-q.c index 98ded66e8d3f..6582aeab6237 100644 --- a/trunk/drivers/usb/host/ehci-q.c +++ b/trunk/drivers/usb/host/ehci-q.c @@ -1183,6 +1183,10 @@ static void end_unlink_async (struct ehci_hcd *ehci) ehci->reclaim = NULL; start_unlink_async (ehci, next); } + + if (ehci->has_synopsys_hc_bug) + ehci_writel(ehci, (u32) ehci->async->qh_dma, + &ehci->regs->async_next); } /* makes sure the async qh will become idle */ diff --git a/trunk/drivers/usb/host/ehci.h b/trunk/drivers/usb/host/ehci.h index 333ddc156919..168f1a88c4d0 100644 --- a/trunk/drivers/usb/host/ehci.h +++ b/trunk/drivers/usb/host/ehci.h @@ -134,6 +134,7 @@ struct ehci_hcd { /* one per controller */ unsigned amd_pll_fix:1; unsigned fs_i_thresh:1; /* Intel iso scheduling */ unsigned use_dummy_qh:1; /* AMD Frame List table quirk*/ + unsigned has_synopsys_hc_bug:1; /* Synopsys HC */ /* required for usb32 quirk */ #define OHCI_CTRL_HCFS (3 << 6)