}
 
 
-static void ehci_hcd_grlib_shutdown(struct platform_device *op)
-{
-       struct usb_hcd *hcd = platform_get_drvdata(op);
-
-       if (hcd->driver->shutdown)
-               hcd->driver->shutdown(hcd);
-}
-
-
 static const struct of_device_id ehci_hcd_grlib_of_match[] = {
        {
                .name = "GAISLER_EHCI",
 static struct platform_driver ehci_grlib_driver = {
        .probe          = ehci_hcd_grlib_probe,
        .remove         = ehci_hcd_grlib_remove,
-       .shutdown       = ehci_hcd_grlib_shutdown,
+       .shutdown       = usb_hcd_platform_shutdown,
        .driver = {
                .name = "grlib-ehci",
                .owner = THIS_MODULE,
 
        return 0;
 }
 
-static void ehci_mxc_drv_shutdown(struct platform_device *pdev)
-{
-       struct usb_hcd *hcd = platform_get_drvdata(pdev);
-
-       if (hcd->driver->shutdown)
-               hcd->driver->shutdown(hcd);
-}
-
 MODULE_ALIAS("platform:mxc-ehci");
 
 static struct platform_driver ehci_mxc_driver = {
        .probe = ehci_mxc_drv_probe,
        .remove = ehci_mxc_drv_remove,
-       .shutdown = ehci_mxc_drv_shutdown,
+       .shutdown = usb_hcd_platform_shutdown,
        .driver = {
                   .name = "mxc-ehci",
        },
 
        return 0;
 }
 
-static void ehci_hcd_omap_shutdown(struct platform_device *pdev)
-{
-       struct usb_hcd *hcd = dev_get_drvdata(&pdev->dev);
-
-       if (hcd->driver->shutdown)
-               hcd->driver->shutdown(hcd);
-}
-
 static const struct of_device_id omap_ehci_dt_ids[] = {
        { .compatible = "ti,ehci-omap" },
        { }
 static struct platform_driver ehci_hcd_omap_driver = {
        .probe                  = ehci_hcd_omap_probe,
        .remove                 = ehci_hcd_omap_remove,
-       .shutdown               = ehci_hcd_omap_shutdown,
+       .shutdown               = usb_hcd_platform_shutdown,
        /*.suspend              = ehci_hcd_omap_suspend, */
        /*.resume               = ehci_hcd_omap_resume, */
        .driver = {
 
 }
 
 
-static void ehci_hcd_ppc_of_shutdown(struct platform_device *op)
-{
-       struct usb_hcd *hcd = platform_get_drvdata(op);
-
-       if (hcd->driver->shutdown)
-               hcd->driver->shutdown(hcd);
-}
-
-
 static const struct of_device_id ehci_hcd_ppc_of_match[] = {
        {
                .compatible = "usb-ehci",
 static struct platform_driver ehci_hcd_ppc_of_driver = {
        .probe          = ehci_hcd_ppc_of_probe,
        .remove         = ehci_hcd_ppc_of_remove,
-       .shutdown       = ehci_hcd_ppc_of_shutdown,
+       .shutdown       = usb_hcd_platform_shutdown,
        .driver = {
                .name = "ppc-of-ehci",
                .owner = THIS_MODULE,
 
        return 0;
 }
 
-static void s5p_ehci_shutdown(struct platform_device *pdev)
-{
-       struct usb_hcd *hcd = platform_get_drvdata(pdev);
-
-       if (hcd->driver->shutdown)
-               hcd->driver->shutdown(hcd);
-}
-
 #ifdef CONFIG_PM
 static int s5p_ehci_suspend(struct device *dev)
 {
 static struct platform_driver s5p_ehci_driver = {
        .probe          = s5p_ehci_probe,
        .remove         = s5p_ehci_remove,
-       .shutdown       = s5p_ehci_shutdown,
+       .shutdown       = usb_hcd_platform_shutdown,
        .driver = {
                .name   = "s5p-ehci",
                .owner  = THIS_MODULE,
 
        return 0;
 }
 
-/**
- * ehci_hcd_xilinx_of_shutdown - shutdown the hcd
- * @op:                pointer to platform_device structure that is to be removed
- *
- * Properly shutdown the hcd, call driver's shutdown routine.
- */
-static void ehci_hcd_xilinx_of_shutdown(struct platform_device *op)
-{
-       struct usb_hcd *hcd = platform_get_drvdata(op);
-
-       if (hcd->driver->shutdown)
-               hcd->driver->shutdown(hcd);
-}
-
-
 static const struct of_device_id ehci_hcd_xilinx_of_match[] = {
                {.compatible = "xlnx,xps-usb-host-1.00.a",},
        {},
 static struct platform_driver ehci_hcd_xilinx_of_driver = {
        .probe          = ehci_hcd_xilinx_of_probe,
        .remove         = ehci_hcd_xilinx_of_remove,
-       .shutdown       = ehci_hcd_xilinx_of_shutdown,
+       .shutdown       = usb_hcd_platform_shutdown,
        .driver = {
                .name = "xilinx-of-ehci",
                .owner = THIS_MODULE,
 
        return 0;
 }
 
-static void ohci_hcd_omap3_shutdown(struct platform_device *pdev)
-{
-       struct usb_hcd *hcd = dev_get_drvdata(&pdev->dev);
-
-       if (hcd->driver->shutdown)
-               hcd->driver->shutdown(hcd);
-}
-
 static const struct of_device_id omap_ohci_dt_ids[] = {
        { .compatible = "ti,ohci-omap3" },
        { }
 static struct platform_driver ohci_hcd_omap3_driver = {
        .probe          = ohci_hcd_omap3_probe,
        .remove         = ohci_hcd_omap3_remove,
-       .shutdown       = ohci_hcd_omap3_shutdown,
+       .shutdown       = usb_hcd_platform_shutdown,
        .driver         = {
                .name   = "ohci-omap3",
                .of_match_table = omap_ohci_dt_ids,
 
        return 0;
 }
 
-static void ohci_hcd_ppc_of_shutdown(struct platform_device *op)
-{
-       struct usb_hcd *hcd = platform_get_drvdata(op);
-
-        if (hcd->driver->shutdown)
-                hcd->driver->shutdown(hcd);
-}
-
-
 static const struct of_device_id ohci_hcd_ppc_of_match[] = {
 #ifdef CONFIG_USB_OHCI_HCD_PPC_OF_BE
        {
 static struct platform_driver ohci_hcd_ppc_of_driver = {
        .probe          = ohci_hcd_ppc_of_probe,
        .remove         = ohci_hcd_ppc_of_remove,
-       .shutdown       = ohci_hcd_ppc_of_shutdown,
+       .shutdown       = usb_hcd_platform_shutdown,
        .driver = {
                .name = "ppc-of-ohci",
                .owner = THIS_MODULE,