/* custom structures we need go here */
 static struct usb_driver quausb2_usb_driver = {
        .name = "quatech-usb2-serial",
-       .disconnect = usb_serial_disconnect,
        .id_table = quausb2_id_table,
 };
 
 
 
 static struct usb_driver serqt_usb_driver = {
        .name = "quatech-usb-serial",
-       .disconnect = usb_serial_disconnect,
        .id_table = serqt_id_table,
 };
 
 
 
 static struct usb_driver aircable_driver = {
        .name =         "aircable",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 
 static struct usb_driver ark3116_driver = {
        .name =         "ark3116",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 
 static struct usb_driver belkin_driver = {
        .name =         "belkin",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table_combined,
 };
 
 
 
 static struct usb_driver ch341_driver = {
        .name           = "ch341",
-       .disconnect     = usb_serial_disconnect,
        .reset_resume   = ch341_reset_resume,
        .id_table       = id_table,
 };
 
 
 static struct usb_driver cp210x_driver = {
        .name           = "cp210x",
-       .disconnect     = usb_serial_disconnect,
        .id_table       = id_table,
 };
 
 
 
 static struct usb_driver cyberjack_driver = {
        .name =         "cyberjack",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 
 static struct usb_driver cypress_driver = {
        .name =         "cypress",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table_combined,
 };
 
 
 
 static struct usb_driver digi_driver = {
        .name =         "digi_acceleport",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table_combined,
 };
 
 
 
 static struct usb_driver empeg_driver = {
        .name =         "empeg",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 
 static struct usb_driver f81232_driver = {
        .name =         "f81232",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 
 static struct usb_driver ftdi_driver = {
        .name =         "ftdi_sio",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table_combined,
 };
 
 
 
 static struct usb_driver funsoft_driver = {
        .name =         "funsoft",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 
 static struct usb_driver garmin_driver = {
        .name =         "garmin_gps",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 static struct usb_driver generic_driver = {
        .name =         "usbserial_generic",
        .probe =        generic_probe,
-       .disconnect =   usb_serial_disconnect,
        .id_table =     generic_serial_ids,
 };
 
 
 
 static struct usb_driver hp49gp_driver = {
        .name =         "hp4X",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 
 static struct usb_driver io_driver = {
        .name =         "io_edgeport",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table_combined,
 };
 
 
 
 static struct usb_driver io_driver = {
        .name =         "io_ti",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table_combined,
 };
 
 
 
 static struct usb_driver ipaq_driver = {
        .name =         "ipaq",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     ipaq_id_table,
 };
 
 
 
 static struct usb_driver usb_ipw_driver = {
        .name =         "ipwtty",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     usb_ipw_ids,
 };
 
 
 
 static struct usb_driver ir_driver = {
        .name           = "ir-usb",
-       .disconnect     = usb_serial_disconnect,
        .id_table       = ir_id_table,
 };
 
 
 
 static struct usb_driver iuu_driver = {
        .name = "iuu_phoenix",
-       .disconnect = usb_serial_disconnect,
        .id_table = id_table,
 };
 
 
 
 static struct usb_driver keyspan_driver = {
        .name =         "keyspan",                
-       .disconnect =   usb_serial_disconnect,
        .id_table =     keyspan_ids_combined,
 };
 
 
 
 static struct usb_driver keyspan_pda_driver = {
        .name =         "keyspan_pda",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table_combined,
 };
 
 
 
 static struct usb_driver kl5kusb105d_driver = {
        .name =         "kl5kusb105d",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 
 static struct usb_driver kobil_driver = {
        .name =         "kobil",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 
 static struct usb_driver mct_u232_driver = {
        .name =         "mct_u232",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table_combined,
 };
 
 
 
 static struct usb_driver metrousb_driver = {
        .name =         "metro-usb",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table
 };
 
 
 
 static struct usb_driver usb_driver = {
        .name =         "moschip7720",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     moschip_port_id_table,
 };
 
 
 
 static struct usb_driver io_driver = {
        .name = "mos7840",
-       .disconnect = usb_serial_disconnect,
        .id_table = moschip_id_table_combined,
 };
 
 
 
 static struct usb_driver moto_driver = {
        .name =         "moto-modem",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 
 static struct usb_driver navman_driver = {
        .name =         "navman",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 
 static struct usb_driver omninet_driver = {
        .name =         "omninet",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 
 static struct usb_driver opticon_driver = {
        .name =         "opticon",
-       .disconnect =   usb_serial_disconnect,
        .suspend =      opticon_suspend,
        .resume =       opticon_resume,
        .id_table =     id_table,
 
 
 static struct usb_driver option_driver = {
        .name       = "option",
-       .disconnect = usb_serial_disconnect,
        .id_table   = option_ids,
 };
 
 
 
 static struct usb_driver oti6858_driver = {
        .name =         "oti6858",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 
 static struct usb_driver pl2303_driver = {
        .name =         "pl2303",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 
 static struct usb_driver qcaux_driver = {
        .name =         "qcaux",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 
 static struct usb_driver qcdriver = {
        .name                   = "qcserial",
-       .disconnect             = usb_serial_disconnect,
        .id_table               = id_table,
 };
 
 
 
 static struct usb_driver safe_driver = {
        .name =         "safe_serial",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 
 static struct usb_driver siemens_usb_mpi_driver = {
        .name =         "siemens_mpi",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 
 static struct usb_driver sierra_driver = {
        .name       = "sierra",
-       .disconnect = usb_serial_disconnect,
        .reset_resume = sierra_reset_resume,
        .id_table   = id_table,
 };
 
 
 static struct usb_driver spcp8x5_driver = {
        .name =                 "spcp8x5",
-       .disconnect =           usb_serial_disconnect,
        .id_table =             id_table,
 };
 
 
 
 static struct usb_driver ssu100_driver = {
        .name                          = "ssu100",
-       .disconnect                    = usb_serial_disconnect,
        .id_table                      = id_table,
 };
 
 
 
 static struct usb_driver symbol_driver = {
        .name =                 "symbol",
-       .disconnect =           usb_serial_disconnect,
        .id_table =             id_table,
 };
 
 
 
 static struct usb_driver ti_usb_driver = {
        .name                   = "ti_usb_3410_5052",
-       .disconnect             = usb_serial_disconnect,
        .id_table               = ti_id_table_combined,
 };
 
 
 #define DRIVER_AUTHOR "Greg Kroah-Hartman, greg@kroah.com, http://www.kroah.com/linux/"
 #define DRIVER_DESC "USB Serial Driver core"
 
-/* Driver structure we register with the USB core */
-static struct usb_driver usb_serial_driver = {
-       .name =         "usbserial",
-       .probe =        usb_serial_probe,
-       .disconnect =   usb_serial_disconnect,
-       .suspend =      usb_serial_suspend,
-       .resume =       usb_serial_resume,
-       .no_dynamic_id =        1,
-       .supports_autosuspend = 1,
-};
-
 /* There is no MODULE_DEVICE_TABLE for usbserial.c.  Instead
    the MODULE_DEVICE_TABLE declarations in each serial driver
    cause the "hotplug" program to pull in whatever module is necessary
        return -EIO;
 }
 
-void usb_serial_disconnect(struct usb_interface *interface)
+static void usb_serial_disconnect(struct usb_interface *interface)
 {
        int i;
        struct usb_serial *serial = usb_get_intfdata(interface);
        usb_serial_put(serial);
        dev_info(dev, "device disconnected\n");
 }
-EXPORT_SYMBOL_GPL(usb_serial_disconnect);
 
 int usb_serial_suspend(struct usb_interface *intf, pm_message_t message)
 {
 
 struct tty_driver *usb_serial_tty_driver;
 
+/* Driver structure we register with the USB core */
+static struct usb_driver usb_serial_driver = {
+       .name =         "usbserial",
+       .probe =        usb_serial_probe,
+       .disconnect =   usb_serial_disconnect,
+       .suspend =      usb_serial_suspend,
+       .resume =       usb_serial_resume,
+       .no_dynamic_id =        1,
+       .supports_autosuspend = 1,
+};
+
 static int __init usb_serial_init(void)
 {
        int i;
        udriver->suspend = usb_serial_suspend;
        udriver->resume = usb_serial_resume;
        udriver->probe = usb_serial_probe;
+       udriver->disconnect = usb_serial_disconnect;
        rc = usb_register(udriver);
        if (rc)
                return rc;
 
 
 static struct usb_driver debug_driver = {
        .name =         "debug",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 
 static struct usb_driver visor_driver = {
        .name =         "visor",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table_combined,
 };
 
 
 
 static struct usb_driver vivopay_serial_driver = {
        .name =                 "vivopay-serial",
-       .disconnect =           usb_serial_disconnect,
        .id_table =             id_table,
 };
 
 
 
 static struct usb_driver whiteheat_driver = {
        .name =         "whiteheat",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table_combined,
 };
 
 
 
 static struct usb_driver zio_driver = {
        .name =         "zio",
-       .disconnect =   usb_serial_disconnect,
        .id_table =     id_table,
 };
 
 
 
 extern int usb_serial_probe(struct usb_interface *iface,
                            const struct usb_device_id *id);
-extern void usb_serial_disconnect(struct usb_interface *iface);
 
 extern int usb_serial_suspend(struct usb_interface *intf, pm_message_t message);
 extern int usb_serial_resume(struct usb_interface *intf);