diff mbox

EHCI USB: Don't use generic shutdown function

Message ID 20090916001055.GA2449@lixom.net (mailing list archive)
State Accepted
Commit 53e4096a17681ef7cd1ad0d97a55c9df51898594
Headers show

Commit Message

Olof Johansson Sept. 16, 2009, 12:10 a.m. UTC
The OMAP EHCI glue code has a layer of driver state struct between
the platform_device and usb_hcd. So it can't use the generic
usb_hcd_platform_shutdown.

This fixes a panic at reboot time.


Signed-off-by: Olof Johansson <olof@lixom.net>

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Felipe Balbi Sept. 16, 2009, 6:39 a.m. UTC | #1
On Wed, Sep 16, 2009 at 02:10:55AM +0200, ext Olof Johansson wrote:
> The OMAP EHCI glue code has a layer of driver state struct between
> the platform_device and usb_hcd. So it can't use the generic
> usb_hcd_platform_shutdown.
> 
> This fixes a panic at reboot time.
> 
> 
> Signed-off-by: Olof Johansson <olof@lixom.net>

Acked-by: Felipe Balbi <felipe.balbi@nokia.com>
Tony Lindgren Sept. 22, 2009, 1:14 a.m. UTC | #2
This patch has been applied to the linux-omap
by youw fwiendly patch wobot.

Branch in linux-omap: ehci

Initial commit ID (Likely to change): 53e4096a17681ef7cd1ad0d97a55c9df51898594

PatchWorks
http://patchwork.kernel.org/patch/47783/

Git (Likely to change, and takes a while to get mirrored)
http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=commit;h=53e4096a17681ef7cd1ad0d97a55c9df51898594


--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c
index 8f8f022..bca3f0c 100644
--- a/drivers/usb/host/ehci-omap.c
+++ b/drivers/usb/host/ehci-omap.c
@@ -701,10 +701,19 @@  static int ehci_hcd_omap_remove(struct platform_device *pdev)
 	return 0;
 }
 
+static void ehci_hcd_omap_shutdown(struct platform_device *pdev)
+{
+	struct ehci_hcd_omap *omap = platform_get_drvdata(pdev);
+	struct usb_hcd *hcd = ehci_to_hcd(omap->ehci);
+
+	if (hcd->driver->shutdown)
+		hcd->driver->shutdown(hcd);
+}
+
 static struct platform_driver ehci_hcd_omap_driver = {
 	.probe			= ehci_hcd_omap_probe,
 	.remove			= ehci_hcd_omap_remove,
-	.shutdown		= usb_hcd_platform_shutdown,
+	.shutdown		= ehci_hcd_omap_shutdown,
 	/*.suspend		= ehci_hcd_omap_suspend, */
 	/*.resume		= ehci_hcd_omap_resume, */
 	.driver = {