static void __exit sw_hci_sunxi_exit(void) { /* XXX '.used' flag is for USB port, not for EHCI or OHCI. So it can be checked this way */ if (sw_ehci1.used) { platform_device_unregister(&sw_usb_ehci_device[0]); platform_device_unregister(&sw_usb_ohci_device[0]); clock_exit(&sw_ehci1, 0); clock_exit(&sw_ohci1, 1); free_pin(sw_ehci1.drv_vbus_Handle); } if (sw_ehci2.used) { platform_device_unregister(&sw_usb_ehci_device[1]); platform_device_unregister(&sw_usb_ohci_device[1]); clock_exit(&sw_ehci2, 0); clock_exit(&sw_ohci2, 1); free_pin(sw_ehci2.drv_vbus_Handle); } return; }
~Alleg4System() { clock_exit(); remove_timer(); allegro_exit(); g_instance = nullptr; }
static int exit_sunxi_hci(struct sunxi_hci_hcd *sunxi_hci, u32 ohci) { clock_exit(sunxi_hci, ohci); release_usb_regulator_io(sunxi_hci); return 0; }
/* ******************************************************************************* * exit_sw_hci * * Description: * void * * Parameters: * void * * Return value: * void * * note: * void * ******************************************************************************* */ static int exit_sw_hci(struct sw_hci_hcd *sw_hci, u32 ohci) { clock_exit(sw_hci, ohci); return 0; }