Commit ddcb01ff authored by Geoff Levand's avatar Geoff Levand Committed by Greg Kroah-Hartman

USB: Fix PS3 USB shutdown problems

Add ehci_shutdown() or ohci_shutdown() calls to the USB
PS3 bus glue.  ehci_shutdown() and ohci_shutdown() do some
controller specific cleanups not done by usb_remove_hcd().

Fixes errors on shutdown or reboot similar to these:

  ps3-ehci-driver sb_07: HC died; cleaning up
  irq 51: nobody cared (try booting with the "irqpoll" option)

Related bugzilla reports:

  http://bugzilla.kernel.org/show_bug.cgi?id=11819
  http://bugzilla.terrasoftsolutions.com/show_bug.cgi?id=317Signed-off-by: default avatarGeoff Levand <geoffrey.levand@am.sony.com>
Cc: stable <stable@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 8010e06c
...@@ -205,6 +205,7 @@ static int ps3_ehci_remove(struct ps3_system_bus_device *dev) ...@@ -205,6 +205,7 @@ static int ps3_ehci_remove(struct ps3_system_bus_device *dev)
tmp = hcd->irq; tmp = hcd->irq;
ehci_shutdown(hcd);
usb_remove_hcd(hcd); usb_remove_hcd(hcd);
ps3_system_bus_set_driver_data(dev, NULL); ps3_system_bus_set_driver_data(dev, NULL);
......
...@@ -192,7 +192,7 @@ fail_start: ...@@ -192,7 +192,7 @@ fail_start:
return result; return result;
} }
static int ps3_ohci_remove (struct ps3_system_bus_device *dev) static int ps3_ohci_remove(struct ps3_system_bus_device *dev)
{ {
unsigned int tmp; unsigned int tmp;
struct usb_hcd *hcd = struct usb_hcd *hcd =
...@@ -205,6 +205,7 @@ static int ps3_ohci_remove (struct ps3_system_bus_device *dev) ...@@ -205,6 +205,7 @@ static int ps3_ohci_remove (struct ps3_system_bus_device *dev)
tmp = hcd->irq; tmp = hcd->irq;
ohci_shutdown(hcd);
usb_remove_hcd(hcd); usb_remove_hcd(hcd);
ps3_system_bus_set_driver_data(dev, NULL); ps3_system_bus_set_driver_data(dev, NULL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment