.id_table = ems_usb_table,
 };
 
-static int __init ems_usb_init(void)
-{
-       int err;
-
-       printk(KERN_INFO "CPC-USB kernel driver loaded\n");
-
-       /* register this driver with the USB subsystem */
-       err = usb_register(&ems_usb_driver);
-
-       if (err) {
-               err("usb_register failed. Error number %d\n", err);
-               return err;
-       }
-
-       return 0;
-}
-
-static void __exit ems_usb_exit(void)
-{
-       /* deregister this driver with the USB subsystem */
-       usb_deregister(&ems_usb_driver);
-}
-
-module_init(ems_usb_init);
-module_exit(ems_usb_exit);
+module_usb_driver(ems_usb_driver);
 
        .id_table = esd_usb2_table,
 };
 
-static int __init esd_usb2_init(void)
-{
-       int err;
-
-       /* register this driver with the USB subsystem */
-       err = usb_register(&esd_usb2_driver);
-
-       if (err) {
-               err("usb_register failed. Error number %d\n", err);
-               return err;
-       }
-
-       return 0;
-}
-module_init(esd_usb2_init);
-
-static void __exit esd_usb2_exit(void)
-{
-       /* deregister this driver with the USB subsystem */
-       usb_deregister(&esd_usb2_driver);
-}
-module_exit(esd_usb2_exit);
+module_usb_driver(esd_usb2_driver);
 
 #endif
 };
 
-/************************* MODULE CALLBACKS *************************/
-/*
- * Deal with module insertion/removal
- * Mostly tell USB about our existence
- */
-
-/*------------------------------------------------------------------*/
-/*
- * Module insertion
- */
-static int __init usb_irda_init(void)
-{
-       int     ret;
-
-       ret = usb_register(&irda_driver);
-       if (ret < 0)
-               return ret;
-
-       IRDA_MESSAGE("USB IrDA support registered\n");
-       return 0;
-}
-module_init(usb_irda_init);
+module_usb_driver(irda_driver);
 
-/*------------------------------------------------------------------*/
-/*
- * Module removal
- */
-static void __exit usb_irda_cleanup(void)
-{
-       /* Deregister the driver and remove all pending instances */
-       usb_deregister(&irda_driver);
-}
-module_exit(usb_irda_cleanup);
-
-/*------------------------------------------------------------------*/
 /*
  * Module parameters
  */
 
 #endif
 };
 
-/*
- * Module insertion
- */
-static int __init kingsun_init(void)
-{
-       return usb_register(&irda_driver);
-}
-module_init(kingsun_init);
-
-/*
- * Module removal
- */
-static void __exit kingsun_cleanup(void)
-{
-       /* Deregister the driver and remove all pending instances */
-       usb_deregister(&irda_driver);
-}
-module_exit(kingsun_cleanup);
+module_usb_driver(irda_driver);
 
 MODULE_AUTHOR("Alex Villacís Lasso <a_villacis@palosanto.com>");
 MODULE_DESCRIPTION("IrDA-USB Dongle Driver for KingSun/DonShine");
 
 #endif
 };
 
-/*
- * Module insertion
- */
-static int __init ks959_init(void)
-{
-       return usb_register(&irda_driver);
-}
-
-module_init(ks959_init);
-
-/*
- * Module removal
- */
-static void __exit ks959_cleanup(void)
-{
-       /* Deregister the driver and remove all pending instances */
-       usb_deregister(&irda_driver);
-}
-
-module_exit(ks959_cleanup);
+module_usb_driver(irda_driver);
 
 MODULE_AUTHOR("Alex Villacís Lasso <a_villacis@palosanto.com>");
 MODULE_DESCRIPTION("IrDA-USB Dongle Driver for KingSun KS-959");
 
 #endif
 };
 
-/*
- * Module insertion
- */
-static int __init ksdazzle_init(void)
-{
-       return usb_register(&irda_driver);
-}
-
-module_init(ksdazzle_init);
-
-/*
- * Module removal
- */
-static void __exit ksdazzle_cleanup(void)
-{
-       /* Deregister the driver and remove all pending instances */
-       usb_deregister(&irda_driver);
-}
-
-module_exit(ksdazzle_cleanup);
+module_usb_driver(irda_driver);
 
 MODULE_AUTHOR("Alex Villacís Lasso <a_villacis@palosanto.com>");
 MODULE_DESCRIPTION("IrDA-USB Dongle Driver for KingSun Dazzle");
 
        IRDA_DEBUG(0, "MCS7780 now disconnected.\n");
 }
 
-/* Module insertion */
-static int __init mcs_init(void)
-{
-       int result;
-
-       /* register this driver with the USB subsystem */
-       result = usb_register(&mcs_driver);
-       if (result)
-               IRDA_ERROR("usb_register failed. Error number %d\n", result);
-
-       return result;
-}
-module_init(mcs_init);
-
-/* Module removal */
-static void __exit mcs_exit(void)
-{
-       /* deregister this driver with the USB subsystem */
-       usb_deregister(&mcs_driver);
-}
-module_exit(mcs_exit);
-
+module_usb_driver(mcs_driver);
 
 #endif
 };
 
-/*
- * Module insertion
- */
-static int __init stir_init(void)
-{
-       return usb_register(&irda_driver);
-}
-module_init(stir_init);
-
-/*
- * Module removal
- */
-static void __exit stir_cleanup(void)
-{
-       /* Deregister the driver and remove all pending instances */
-       usb_deregister(&irda_driver);
-}
-module_exit(stir_cleanup);
+module_usb_driver(irda_driver);
 
        .supports_autosuspend = 1,
 };
 
-static int __init asix_init(void)
-{
-       return usb_register(&asix_driver);
-}
-module_init(asix_init);
-
-static void __exit asix_exit(void)
-{
-       usb_deregister(&asix_driver);
-}
-module_exit(asix_exit);
+module_usb_driver(asix_driver);
 
 MODULE_AUTHOR("David Hollis");
 MODULE_VERSION(DRIVER_VERSION);
 
        .id_table =     catc_id_table,
 };
 
-static int __init catc_init(void)
-{
-       int result = usb_register(&catc_driver);
-       if (result == 0)
-               printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":"
-                      DRIVER_DESC "\n");
-       return result;
-}
-
-static void __exit catc_exit(void)
-{
-       usb_deregister(&catc_driver);
-}
-
-module_init(catc_init);
-module_exit(catc_exit);
+module_usb_driver(catc_driver);
 
        .id_table =     usbpn_ids,
 };
 
-static int __init usbpn_init(void)
-{
-       return usb_register(&usbpn_driver);
-}
-
-static void __exit usbpn_exit(void)
-{
-       usb_deregister(&usbpn_driver);
-}
-
-module_init(usbpn_init);
-module_exit(usbpn_exit);
+module_usb_driver(usbpn_driver);
 
 MODULE_AUTHOR("Remi Denis-Courmont");
 MODULE_DESCRIPTION("USB CDC Phonet host interface");
 
        .resume =       usbnet_resume,
 };
 
-
-static int __init eem_init(void)
-{
-       return usb_register(&eem_driver);
-}
-module_init(eem_init);
-
-static void __exit eem_exit(void)
-{
-       usb_deregister(&eem_driver);
-}
-module_exit(eem_exit);
+module_usb_driver(eem_driver);
 
 MODULE_AUTHOR("Omar Laazimani <omar.oberthur@gmail.com>");
 MODULE_DESCRIPTION("USB CDC EEM");
 
        int                             status;
        struct cdc_state                *info = (void *) &dev->data;
 
+       BUILD_BUG_ON((sizeof(((struct usbnet *)0)->data)
+                       < sizeof(struct cdc_state)));
+
        status = usbnet_generic_cdc_bind(dev, intf);
        if (status < 0)
                return status;
        .supports_autosuspend = 1,
 };
 
-
-static int __init cdc_init(void)
-{
-       BUILD_BUG_ON((sizeof(((struct usbnet *)0)->data)
-                       < sizeof(struct cdc_state)));
-
-       return usb_register(&cdc_driver);
-}
-module_init(cdc_init);
-
-static void __exit cdc_exit(void)
-{
-       usb_deregister(&cdc_driver);
-}
-module_exit(cdc_exit);
+module_usb_driver(cdc_driver);
 
 MODULE_AUTHOR("David Brownell");
 MODULE_DESCRIPTION("USB CDC Ethernet devices");
 
        .nway_reset = usbnet_nway_reset,
 };
 
-static int __init cdc_ncm_init(void)
-{
-       printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION "\n");
-       return usb_register(&cdc_ncm_driver);
-}
-
-module_init(cdc_ncm_init);
-
-static void __exit cdc_ncm_exit(void)
-{
-       usb_deregister(&cdc_ncm_driver);
-}
-
-module_exit(cdc_ncm_exit);
+module_usb_driver(cdc_ncm_driver);
 
 MODULE_AUTHOR("Hans Petter Selasky");
 MODULE_DESCRIPTION("USB CDC NCM host driver");
 
        .id_table =     products,
 };
 
-static int __init cdc_subset_init(void)
-{
-       return usb_register(&cdc_subset_driver);
-}
-module_init(cdc_subset_init);
-
-static void __exit cdc_subset_exit(void)
-{
-       usb_deregister(&cdc_subset_driver);
-}
-module_exit(cdc_subset_exit);
+module_usb_driver(cdc_subset_driver);
 
 MODULE_AUTHOR("David Brownell");
 MODULE_DESCRIPTION("Simple 'CDC Subset' USB networking links");
 
        .resume         = usbnet_resume,
 };
 
-static int __init cx82310_init(void)
-{
-       return usb_register(&cx82310_driver);
-}
-module_init(cx82310_init);
-
-static void __exit cx82310_exit(void)
-{
-       usb_deregister(&cx82310_driver);
-}
-module_exit(cx82310_exit);
+module_usb_driver(cx82310_driver);
 
 MODULE_AUTHOR("Ondrej Zary");
 MODULE_DESCRIPTION("Conexant CX82310-based ADSL router USB ethernet driver");
 
        .resume = usbnet_resume,
 };
 
-static int __init dm9601_init(void)
-{
-       return usb_register(&dm9601_driver);
-}
-
-static void __exit dm9601_exit(void)
-{
-       usb_deregister(&dm9601_driver);
-}
-
-module_init(dm9601_init);
-module_exit(dm9601_exit);
+module_usb_driver(dm9601_driver);
 
 MODULE_AUTHOR("Peter Korsgaard <jacmet@sunsite.dk>");
 MODULE_DESCRIPTION("Davicom DM9601 USB 1.1 ethernet devices");
 
        .resume =       usbnet_resume,
 };
 
-static int __init usbnet_init(void)
-{
-       return usb_register(&gl620a_driver);
-}
-module_init(usbnet_init);
-
-static void __exit usbnet_exit(void)
-{
-       usb_deregister(&gl620a_driver);
-}
-module_exit(usbnet_exit);
+module_usb_driver(gl620a_driver);
 
 MODULE_AUTHOR("Jiun-Jie Huang");
 MODULE_DESCRIPTION("GL620-USB-A Host-to-Host Link cables");
 
        .resume     = usbnet_resume,
 };
 
-static int __init int51x1_init(void)
-{
-       return usb_register(&int51x1_driver);
-}
-module_init(int51x1_init);
-
-static void __exit int51x1_exit(void)
-{
-       usb_deregister(&int51x1_driver);
-}
-module_exit(int51x1_exit);
+module_usb_driver(int51x1_driver);
 
 MODULE_AUTHOR("Peter Holik");
 MODULE_DESCRIPTION("Intellon usb powerline adapter");
 
        .id_table =     ipheth_table,
 };
 
-static int __init ipheth_init(void)
-{
-       int retval;
-
-       retval = usb_register(&ipheth_driver);
-       if (retval) {
-               err("usb_register failed: %d", retval);
-               return retval;
-       }
-       return 0;
-}
-
-static void __exit ipheth_exit(void)
-{
-       usb_deregister(&ipheth_driver);
-}
-
-module_init(ipheth_init);
-module_exit(ipheth_exit);
+module_usb_driver(ipheth_driver);
 
 MODULE_AUTHOR("Diego Giagio <diego@giagio.com>");
 MODULE_DESCRIPTION("Apple iPhone USB Ethernet driver");
 
        .resume = usbnet_resume
 };
 
-static int __init kalmia_init(void)
-{
-       return usb_register(&kalmia_driver);
-}
-module_init( kalmia_init);
-
-static void __exit kalmia_exit(void)
-{
-       usb_deregister(&kalmia_driver);
-}
-module_exit( kalmia_exit);
+module_usb_driver(kalmia_driver);
 
 MODULE_AUTHOR("Marius Bjoernstad Kotsbak <marius@kotsbak.com>");
 MODULE_DESCRIPTION("Samsung Kalmia USB network driver");
 
        }
 }
 
-
-/****************************************************************
- *     kaweth_init
- ****************************************************************/
-static int __init kaweth_init(void)
-{
-       dbg("Driver loading");
-       return usb_register(&kaweth_driver);
-}
-
-/****************************************************************
- *     kaweth_exit
- ****************************************************************/
-static void __exit kaweth_exit(void)
-{
-       usb_deregister(&kaweth_driver);
-}
-
-module_init(kaweth_init);
-module_exit(kaweth_exit);
-
-
-
-
-
-
-
-
-
+module_usb_driver(kaweth_driver);
 
        .resume         = usbnet_resume,
 };
 
-static int __init vl600_init(void)
-{
-       return usb_register(&lg_vl600_driver);
-}
-module_init(vl600_init);
-
-static void __exit vl600_exit(void)
-{
-       usb_deregister(&lg_vl600_driver);
-}
-module_exit(vl600_exit);
+module_usb_driver(lg_vl600_driver);
 
 MODULE_AUTHOR("Anrzej Zaborowski");
 MODULE_DESCRIPTION("LG-VL600 modem's ethernet link");
 
        .reset_resume = mcs7830_reset_resume,
 };
 
-static int __init mcs7830_init(void)
-{
-       return usb_register(&mcs7830_driver);
-}
-module_init(mcs7830_init);
-
-static void __exit mcs7830_exit(void)
-{
-       usb_deregister(&mcs7830_driver);
-}
-module_exit(mcs7830_exit);
+module_usb_driver(mcs7830_driver);
 
 MODULE_DESCRIPTION("USB to network adapter MCS7830)");
 MODULE_LICENSE("GPL");
 
        .resume =       usbnet_resume,
 };
 
-static int __init net1080_init(void)
-{
-       return usb_register(&net1080_driver);
-}
-module_init(net1080_init);
-
-static void __exit net1080_exit(void)
-{
-       usb_deregister(&net1080_driver);
-}
-module_exit(net1080_exit);
+module_usb_driver(net1080_driver);
 
 MODULE_AUTHOR("David Brownell");
 MODULE_DESCRIPTION("NetChip 1080 based USB Host-to-Host Links");
 
        .resume =       usbnet_resume,
 };
 
-static int __init plusb_init(void)
-{
-       return usb_register(&plusb_driver);
-}
-module_init(plusb_init);
-
-static void __exit plusb_exit(void)
-{
-       usb_deregister(&plusb_driver);
-}
-module_exit(plusb_exit);
+module_usb_driver(plusb_driver);
 
 MODULE_AUTHOR("David Brownell");
 MODULE_DESCRIPTION("Prolific PL-2301/2302/25A1 USB Host to Host Link Driver");
 
        .resume =       usbnet_resume,
 };
 
-static int __init rndis_init(void)
-{
-       return usb_register(&rndis_driver);
-}
-module_init(rndis_init);
-
-static void __exit rndis_exit(void)
-{
-       usb_deregister(&rndis_driver);
-}
-module_exit(rndis_exit);
+module_usb_driver(rndis_driver);
 
 MODULE_AUTHOR("David Brownell");
 MODULE_DESCRIPTION("USB Host side RNDIS driver");
 
        .resume         = rtl8150_resume
 };
 
-static int __init usb_rtl8150_init(void)
-{
-       printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":"
-              DRIVER_DESC "\n");
-       return usb_register(&rtl8150_driver);
-}
-
-static void __exit usb_rtl8150_exit(void)
-{
-       usb_deregister(&rtl8150_driver);
-}
-
-module_init(usb_rtl8150_init);
-module_exit(usb_rtl8150_exit);
+module_usb_driver(rtl8150_driver);
 
 MODULE_AUTHOR(DRIVER_AUTHOR);
 MODULE_DESCRIPTION(DRIVER_DESC);
 
        u16 len;
        bool need_tail;
 
+       BUILD_BUG_ON(FIELD_SIZEOF(struct usbnet, data)
+                               < sizeof(struct cdc_state));
+
        dev_dbg(&dev->udev->dev, "%s", __func__);
        if (priv->link_up && check_ethip_packet(skb, dev) && is_ip(skb)) {
                /* enough head room as is? */
        .no_dynamic_id = 1,
 };
 
-static int __init sierra_net_init(void)
-{
-       BUILD_BUG_ON(FIELD_SIZEOF(struct usbnet, data)
-                               < sizeof(struct cdc_state));
-
-       return usb_register(&sierra_net_driver);
-}
-
-static void __exit sierra_net_exit(void)
-{
-       usb_deregister(&sierra_net_driver);
-}
-
-module_exit(sierra_net_exit);
-module_init(sierra_net_init);
+module_usb_driver(sierra_net_driver);
 
 MODULE_AUTHOR(DRIVER_AUTHOR);
 MODULE_DESCRIPTION(DRIVER_DESC);
 
        .disconnect     = usbnet_disconnect,
 };
 
-static int __init smsc75xx_init(void)
-{
-       return usb_register(&smsc75xx_driver);
-}
-module_init(smsc75xx_init);
-
-static void __exit smsc75xx_exit(void)
-{
-       usb_deregister(&smsc75xx_driver);
-}
-module_exit(smsc75xx_exit);
+module_usb_driver(smsc75xx_driver);
 
 MODULE_AUTHOR("Nancy Lin");
 MODULE_AUTHOR("Steve Glendinning <steve.glendinning@smsc.com>");
 
        .disconnect     = usbnet_disconnect,
 };
 
-static int __init smsc95xx_init(void)
-{
-       return usb_register(&smsc95xx_driver);
-}
-module_init(smsc95xx_init);
-
-static void __exit smsc95xx_exit(void)
-{
-       usb_deregister(&smsc95xx_driver);
-}
-module_exit(smsc95xx_exit);
+module_usb_driver(smsc95xx_driver);
 
 MODULE_AUTHOR("Nancy Lin");
 MODULE_AUTHOR("Steve Glendinning <steve.glendinning@smsc.com>");
 
        .resume =       usbnet_resume,
 };
 
-static int __init zaurus_init(void)
-{
-       return usb_register(&zaurus_driver);
-}
-module_init(zaurus_init);
-
-static void __exit zaurus_exit(void)
-{
-       usb_deregister(&zaurus_driver);
-}
-module_exit(zaurus_exit);
+module_usb_driver(zaurus_driver);
 
 MODULE_AUTHOR("Pavel Machek, David Brownell");
 MODULE_DESCRIPTION("Sharp Zaurus PDA, and compatible products");
 
 #endif /* CONFIG_PM */
 };
 
-static int __init carl9170_usb_init(void)
-{
-       return usb_register(&carl9170_driver);
-}
-
-static void __exit carl9170_usb_exit(void)
-{
-       usb_deregister(&carl9170_driver);
-}
-
-module_init(carl9170_usb_init);
-module_exit(carl9170_usb_exit);
+module_usb_driver(carl9170_driver);
 
        .reset_resume = if_usb_resume,
 };
 
-static int __init if_usb_init_module(void)
-{
-       int ret = 0;
-
-       lbs_deb_enter(LBS_DEB_MAIN);
-
-       ret = usb_register(&if_usb_driver);
-
-       lbs_deb_leave_args(LBS_DEB_MAIN, "ret %d", ret);
-       return ret;
-}
-
-static void __exit if_usb_exit_module(void)
-{
-       lbs_deb_enter(LBS_DEB_MAIN);
-
-       usb_deregister(&if_usb_driver);
-
-       lbs_deb_leave(LBS_DEB_MAIN);
-}
-
-module_init(if_usb_init_module);
-module_exit(if_usb_exit_module);
+module_usb_driver(if_usb_driver);
 
 MODULE_DESCRIPTION("8388 USB WLAN Driver");
 MODULE_AUTHOR("Marvell International Ltd. and Red Hat, Inc.");
 
        .resume = if_usb_resume,
 };
 
-static int __init if_usb_init_module(void)
-{
-       int ret = 0;
-
-       lbtf_deb_enter(LBTF_DEB_MAIN);
-
-       ret = usb_register(&if_usb_driver);
-
-       lbtf_deb_leave_args(LBTF_DEB_MAIN, "ret %d", ret);
-       return ret;
-}
-
-static void __exit if_usb_exit_module(void)
-{
-       lbtf_deb_enter(LBTF_DEB_MAIN);
-       usb_deregister(&if_usb_driver);
-       lbtf_deb_leave(LBTF_DEB_MAIN);
-}
-
-module_init(if_usb_init_module);
-module_exit(if_usb_exit_module);
+module_usb_driver(if_usb_driver);
 
 MODULE_DESCRIPTION("8388 USB WLAN Thinfirm Driver");
 MODULE_AUTHOR("Cozybit Inc.");
 
 static char version[] __initdata = DRIVER_NAME " " DRIVER_VERSION
        " (Manuel Estrada Sainz)";
 
-static int __init ezusb_module_init(void)
-{
-       int err;
-
-       printk(KERN_DEBUG "%s\n", version);
-
-       /* register this driver with the USB subsystem */
-       err = usb_register(&orinoco_driver);
-       if (err < 0) {
-               printk(KERN_ERR PFX "usb_register failed, error %d\n",
-                      err);
-               return err;
-       }
-
-       return 0;
-}
-
-static void __exit ezusb_module_exit(void)
-{
-       /* deregister this driver with the USB subsystem */
-       usb_deregister(&orinoco_driver);
-}
-
-
-module_init(ezusb_module_init);
-module_exit(ezusb_module_exit);
+module_usb_driver(orinoco_driver);
 
 MODULE_AUTHOR("Manuel Estrada Sainz");
 MODULE_DESCRIPTION("Driver for Orinoco wireless LAN cards using EZUSB bridge");
 
        .soft_unbind = 1,
 };
 
-static int __init p54u_init(void)
-{
-       return usb_register(&p54u_driver);
-}
-
-static void __exit p54u_exit(void)
-{
-       usb_deregister(&p54u_driver);
-}
-
-module_init(p54u_init);
-module_exit(p54u_exit);
+module_usb_driver(p54u_driver);
 
        .resume =       usbnet_resume,
 };
 
-static int __init rndis_wlan_init(void)
-{
-       return usb_register(&rndis_wlan_driver);
-}
-module_init(rndis_wlan_init);
-
-static void __exit rndis_wlan_exit(void)
-{
-       usb_deregister(&rndis_wlan_driver);
-}
-module_exit(rndis_wlan_exit);
+module_usb_driver(rndis_wlan_driver);
 
 MODULE_AUTHOR("Bjorge Dijkstra");
 MODULE_AUTHOR("Jussi Kivilinna");
 
        .resume         = rt2x00usb_resume,
 };
 
-static int __init rt2500usb_init(void)
-{
-       return usb_register(&rt2500usb_driver);
-}
-
-static void __exit rt2500usb_exit(void)
-{
-       usb_deregister(&rt2500usb_driver);
-}
-
-module_init(rt2500usb_init);
-module_exit(rt2500usb_exit);
+module_usb_driver(rt2500usb_driver);
 
        .resume         = rt2x00usb_resume,
 };
 
-static int __init rt2800usb_init(void)
-{
-       return usb_register(&rt2800usb_driver);
-}
-
-static void __exit rt2800usb_exit(void)
-{
-       usb_deregister(&rt2800usb_driver);
-}
-
-module_init(rt2800usb_init);
-module_exit(rt2800usb_exit);
+module_usb_driver(rt2800usb_driver);
 
        .resume         = rt2x00usb_resume,
 };
 
-static int __init rt73usb_init(void)
-{
-       return usb_register(&rt73usb_driver);
-}
-
-static void __exit rt73usb_exit(void)
-{
-       usb_deregister(&rt73usb_driver);
-}
-
-module_init(rt73usb_init);
-module_exit(rt73usb_exit);
+module_usb_driver(rt73usb_driver);
 
        .disconnect     = __devexit_p(rtl8187_disconnect),
 };
 
-static int __init rtl8187_init(void)
-{
-       return usb_register(&rtl8187_driver);
-}
-
-static void __exit rtl8187_exit(void)
-{
-       usb_deregister(&rtl8187_driver);
-}
-
-module_init(rtl8187_init);
-module_exit(rtl8187_exit);
+module_usb_driver(rtl8187_driver);
 
 #endif
 };
 
-static int __init rtl8192cu_init(void)
-{
-       return usb_register(&rtl8192cu_driver);
-}
-
-static void __exit rtl8192cu_exit(void)
-{
-       usb_deregister(&rtl8192cu_driver);
-}
-
-module_init(rtl8192cu_init);
-module_exit(rtl8192cu_exit);
+module_usb_driver(rtl8192cu_driver);
 
        .resume = zd1201_resume,
 };
 
-static int __init zd1201_init(void)
-{
-       return usb_register(&zd1201_usb);
-}
-
-static void __exit zd1201_cleanup(void)
-{
-       usb_deregister(&zd1201_usb);
-}
-
-module_init(zd1201_init);
-module_exit(zd1201_cleanup);
+module_usb_driver(zd1201_usb);