aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Brownell <david-b@pacbell.net>2008-03-06 02:37:52 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2008-04-25 00:16:40 -0400
commitd1b1842c393cf322712b669ec887397b89ed2312 (patch)
tree890cefa2129aa7fa54424ad259e24cf4fca00694
parent22552b286b44b8988e08fb74379507a9b32521b0 (diff)
USB: ehci: remove obsolete workaround for bogus IRQs
It was pointed out that we found and fixed the cause of the "bogus" fatal IRQ reports some time ago ... this patch removes the code which was working around that bug ("status" got clobbered), and a comment which needlessly confused folk reading this code. This also includes a minor cleanup to the code which fixed that bug. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/usb/host/ehci-hcd.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index 40f7391bf2aa..8c3e860bfce3 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -686,6 +686,8 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd)
686 /* remote wakeup [4.3.1] */ 686 /* remote wakeup [4.3.1] */
687 if (status & STS_PCD) { 687 if (status & STS_PCD) {
688 unsigned i = HCS_N_PORTS (ehci->hcs_params); 688 unsigned i = HCS_N_PORTS (ehci->hcs_params);
689
690 /* kick root hub later */
689 pcd_status = status; 691 pcd_status = status;
690 692
691 /* resume root hub? */ 693 /* resume root hub? */
@@ -714,8 +716,6 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd)
714 716
715 /* PCI errors [4.15.2.4] */ 717 /* PCI errors [4.15.2.4] */
716 if (unlikely ((status & STS_FATAL) != 0)) { 718 if (unlikely ((status & STS_FATAL) != 0)) {
717 /* bogus "fatal" IRQs appear on some chips... why? */
718 status = ehci_readl(ehci, &ehci->regs->status);
719 dbg_cmd (ehci, "fatal", ehci_readl(ehci, 719 dbg_cmd (ehci, "fatal", ehci_readl(ehci,
720 &ehci->regs->command)); 720 &ehci->regs->command));
721 dbg_status (ehci, "fatal", status); 721 dbg_status (ehci, "fatal", status);
@@ -734,7 +734,7 @@ dead:
734 if (bh) 734 if (bh)
735 ehci_work (ehci); 735 ehci_work (ehci);
736 spin_unlock (&ehci->lock); 736 spin_unlock (&ehci->lock);
737 if (pcd_status & STS_PCD) 737 if (pcd_status)
738 usb_hcd_poll_rh_status(hcd); 738 usb_hcd_poll_rh_status(hcd);
739 return IRQ_HANDLED; 739 return IRQ_HANDLED;
740} 740}