static int exynos_ohci_remove(struct platform_device *pdev) { struct exynos_ohci_hcd *exynos_ohci = platform_get_drvdata(pdev); struct usb_hcd *hcd = exynos_ohci->hcd; pm_runtime_disable(&pdev->dev); exynos_ohci->power_on = 0; exynos_pm_unregister_notifier(&exynos_ohci->lpa_nb); remove_ohci_sys_file(hcd_to_ohci(hcd)); usb_remove_hcd(hcd); if (exynos_ohci->otg) exynos_ohci->otg->set_host(exynos_ohci->otg, &exynos_ohci->hcd->self); exynos_ohci_phy_disable(exynos_ohci); clk_disable_unprepare(exynos_ohci->clk); usb_put_hcd(hcd); return 0; }
static int __devexit exynos_ohci_remove(struct platform_device *pdev) { struct exynos4_ohci_platdata *pdata = pdev->dev.platform_data; struct exynos_ohci_hcd *exynos_ohci = platform_get_drvdata(pdev); struct usb_hcd *hcd = exynos_ohci->hcd; if (pdata && pdata->phy_resume) pdata->phy_resume(pdev, S5P_USB_PHY_HOST); #ifdef CONFIG_USB_SUSPEND pm_runtime_put(hcd->self.controller); pm_runtime_disable(&pdev->dev); #endif usb_remove_hcd(hcd); exynos_ohci->power_on = 0; remove_ohci_sys_file(hcd_to_ohci(hcd)); if (pdata && pdata->phy_exit) pdata->phy_exit(pdev, S5P_USB_PHY_HOST); iounmap(hcd->regs); clk_disable(exynos_ohci->clk); clk_put(exynos_ohci->clk); usb_put_hcd(hcd); kfree(exynos_ohci); platform_set_drvdata(pdev, NULL); return 0; }
static int __devexit ohci_hcd_s5p_drv_remove(struct platform_device *pdev) { struct s5p_ohci_platdata *pdata = pdev->dev.platform_data; struct s5p_ohci_hcd *s5p_ohci = platform_get_drvdata(pdev); struct usb_hcd *hcd = s5p_ohci->hcd; if (pdata && pdata->phy_resume) pdata->phy_resume(pdev, S5P_USB_PHY_HOST); usb_remove_hcd(hcd); s5p_ohci->power_on = 0; remove_ohci_sys_file(hcd_to_ohci(hcd)); if (pdata && pdata->phy_exit) pdata->phy_exit(pdev, S5P_USB_PHY_HOST); iounmap(hcd->regs); clk_disable(s5p_ohci->clk); clk_put(s5p_ohci->clk); usb_put_hcd(hcd); kfree(s5p_ohci); platform_set_drvdata(pdev, NULL); return 0; }