static int ohci_hcd_rt3xxx_drv_remove(struct platform_device *pdev) { struct usb_hcd *hcd = platform_get_drvdata(pdev); usb_hcd_rt3xxx_remove(hcd, pdev); #ifdef REMOVE if(!usb_find_device(0x0, 0x0)) // No any other USB host controller. try_sleep(); #endif return 0; }
static int rt3xxx_ehci_remove(struct platform_device *pdev) { struct usb_hcd *hcd = platform_get_drvdata(pdev); /* ehci_shutdown() is supposed to be called implicitly in ehci-hcd common code while removing module, but it isn't. */ ehci_shutdown(hcd); usb_remove_hcd(hcd); iounmap(hcd->regs); release_mem_region(hcd->rsrc_start, hcd->rsrc_len); usb_put_hcd(hcd); if(!usb_find_device(0x0, 0x0)) // No any other USB host controller. try_sleep(); return 0; }