diff options
author | David Brownell <david-b@pacbell.net> | 2008-03-06 02:37:52 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-04-25 00:16:40 -0400 |
commit | d1b1842c393cf322712b669ec887397b89ed2312 (patch) | |
tree | 890cefa2129aa7fa54424ad259e24cf4fca00694 | |
parent | 22552b286b44b8988e08fb74379507a9b32521b0 (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.c | 6 |
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 | } |