usb-serial: use new registration API in [t-z]* drivers
[pandora-kernel.git] / drivers / usb / serial / visor.c
index 210e4b1..71d6964 100644 (file)
@@ -173,7 +173,6 @@ static struct usb_driver visor_driver = {
        .probe =        usb_serial_probe,
        .disconnect =   usb_serial_disconnect,
        .id_table =     id_table_combined,
-       .no_dynamic_id =        1,
 };
 
 /* All of the device info needed for the Handspring Visor,
@@ -184,7 +183,6 @@ static struct usb_serial_driver handspring_device = {
                .name =         "visor",
        },
        .description =          "Handspring Visor / Palm OS",
-       .usb_driver =           &visor_driver,
        .id_table =             id_table,
        .num_ports =            2,
        .bulk_out_size =        256,
@@ -205,7 +203,6 @@ static struct usb_serial_driver clie_5_device = {
                .name =         "clie_5",
        },
        .description =          "Sony Clie 5.0",
-       .usb_driver =           &visor_driver,
        .id_table =             clie_id_5_table,
        .num_ports =            2,
        .bulk_out_size =        256,
@@ -226,7 +223,6 @@ static struct usb_serial_driver clie_3_5_device = {
                .name =         "clie_3.5",
        },
        .description =          "Sony Clie 3.5",
-       .usb_driver =           &visor_driver,
        .id_table =             clie_id_3_5_table,
        .num_ports =            1,
        .bulk_out_size =        256,
@@ -237,6 +233,10 @@ static struct usb_serial_driver clie_3_5_device = {
        .attach =               clie_3_5_startup,
 };
 
+static struct usb_serial_driver * const serial_drivers[] = {
+       &handspring_device, &clie_5_device, &clie_3_5_device, NULL
+};
+
 /******************************************************************************
  * Handspring Visor specific driver functions
  ******************************************************************************/
@@ -685,38 +685,17 @@ static int __init visor_init(void)
                       ": Adding Palm OS protocol 4.x support for unknown device: 0x%x/0x%x\n",
                        vendor, product);
        }
-       retval = usb_serial_register(&handspring_device);
-       if (retval)
-               goto failed_handspring_register;
-       retval = usb_serial_register(&clie_3_5_device);
-       if (retval)
-               goto failed_clie_3_5_register;
-       retval = usb_serial_register(&clie_5_device);
-       if (retval)
-               goto failed_clie_5_register;
-       retval = usb_register(&visor_driver);
-       if (retval)
-               goto failed_usb_register;
-       printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_DESC "\n");
 
-       return 0;
-failed_usb_register:
-       usb_serial_deregister(&clie_5_device);
-failed_clie_5_register:
-       usb_serial_deregister(&clie_3_5_device);
-failed_clie_3_5_register:
-       usb_serial_deregister(&handspring_device);
-failed_handspring_register:
+       retval = usb_serial_register_drivers(&visor_driver, serial_drivers);
+       if (retval == 0)
+               printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_DESC "\n");
        return retval;
 }
 
 
 static void __exit visor_exit (void)
 {
-       usb_deregister(&visor_driver);
-       usb_serial_deregister(&handspring_device);
-       usb_serial_deregister(&clie_3_5_device);
-       usb_serial_deregister(&clie_5_device);
+       usb_serial_deregister_drivers(&visor_driver, serial_drivers);
 }