diff options
| author | Alan Stern <stern@rowland.harvard.edu> | 2012-02-23 14:57:32 -0500 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-02-24 15:39:21 -0500 |
| commit | 29618e9fb5507b9fcf07f739a8506a3640495945 (patch) | |
| tree | d5b05698811d39a6068bd8bfae99e04cb6da4e8f | |
| parent | d860322f34e4a53f347b1aeae23d5b72f1e91b8c (diff) | |
usb-serial: use new registration API in [t-z]* drivers
This patch (as1529) modifies the following usb-serial drivers to
utilize the new usb_serial_{de}register_drivers() routines:
ti_usb_3410_5052, usb_debug, visor, vivopay-serial,
whiteheat, and zio.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| -rw-r--r-- | drivers/usb/serial/ti_usb_3410_5052.c | 35 | ||||
| -rw-r--r-- | drivers/usb/serial/usb_debug.c | 19 | ||||
| -rw-r--r-- | drivers/usb/serial/visor.c | 37 | ||||
| -rw-r--r-- | drivers/usb/serial/vivopay-serial.c | 27 | ||||
| -rw-r--r-- | drivers/usb/serial/whiteheat.c | 32 | ||||
| -rw-r--r-- | drivers/usb/serial/zio.c | 19 |
6 files changed, 48 insertions, 121 deletions
diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c index 74f2c7746cc4..ab74123d658e 100644 --- a/drivers/usb/serial/ti_usb_3410_5052.c +++ b/drivers/usb/serial/ti_usb_3410_5052.c | |||
| @@ -216,7 +216,6 @@ static struct usb_driver ti_usb_driver = { | |||
| 216 | .probe = usb_serial_probe, | 216 | .probe = usb_serial_probe, |
| 217 | .disconnect = usb_serial_disconnect, | 217 | .disconnect = usb_serial_disconnect, |
| 218 | .id_table = ti_id_table_combined, | 218 | .id_table = ti_id_table_combined, |
| 219 | .no_dynamic_id = 1, | ||
| 220 | }; | 219 | }; |
| 221 | 220 | ||
| 222 | static struct usb_serial_driver ti_1port_device = { | 221 | static struct usb_serial_driver ti_1port_device = { |
| @@ -225,7 +224,6 @@ static struct usb_serial_driver ti_1port_device = { | |||
| 225 | .name = "ti_usb_3410_5052_1", | 224 | .name = "ti_usb_3410_5052_1", |
| 226 | }, | 225 | }, |
| 227 | .description = "TI USB 3410 1 port adapter", | 226 | .description = "TI USB 3410 1 port adapter", |
| 228 | .usb_driver = &ti_usb_driver, | ||
| 229 | .id_table = ti_id_table_3410, | 227 | .id_table = ti_id_table_3410, |
| 230 | .num_ports = 1, | 228 | .num_ports = 1, |
| 231 | .attach = ti_startup, | 229 | .attach = ti_startup, |
| @@ -254,7 +252,6 @@ static struct usb_serial_driver ti_2port_device = { | |||
| 254 | .name = "ti_usb_3410_5052_2", | 252 | .name = "ti_usb_3410_5052_2", |
| 255 | }, | 253 | }, |
| 256 | .description = "TI USB 5052 2 port adapter", | 254 | .description = "TI USB 5052 2 port adapter", |
| 257 | .usb_driver = &ti_usb_driver, | ||
| 258 | .id_table = ti_id_table_5052, | 255 | .id_table = ti_id_table_5052, |
| 259 | .num_ports = 2, | 256 | .num_ports = 2, |
| 260 | .attach = ti_startup, | 257 | .attach = ti_startup, |
| @@ -277,6 +274,9 @@ static struct usb_serial_driver ti_2port_device = { | |||
| 277 | .write_bulk_callback = ti_bulk_out_callback, | 274 | .write_bulk_callback = ti_bulk_out_callback, |
| 278 | }; | 275 | }; |
| 279 | 276 | ||
| 277 | static struct usb_serial_driver * const serial_drivers[] = { | ||
| 278 | &ti_1port_device, &ti_2port_device, NULL | ||
| 279 | }; | ||
| 280 | 280 | ||
| 281 | /* Module */ | 281 | /* Module */ |
| 282 | 282 | ||
| @@ -344,36 +344,17 @@ static int __init ti_init(void) | |||
| 344 | ti_id_table_combined[c].match_flags = USB_DEVICE_ID_MATCH_DEVICE; | 344 | ti_id_table_combined[c].match_flags = USB_DEVICE_ID_MATCH_DEVICE; |
| 345 | } | 345 | } |
| 346 | 346 | ||
| 347 | ret = usb_serial_register(&ti_1port_device); | 347 | ret = usb_serial_register_drivers(&ti_usb_driver, serial_drivers); |
| 348 | if (ret) | 348 | if (ret == 0) |
| 349 | goto failed_1port; | 349 | printk(KERN_INFO KBUILD_MODNAME ": " TI_DRIVER_VERSION ":" |
| 350 | ret = usb_serial_register(&ti_2port_device); | 350 | TI_DRIVER_DESC "\n"); |
| 351 | if (ret) | ||
| 352 | goto failed_2port; | ||
| 353 | |||
| 354 | ret = usb_register(&ti_usb_driver); | ||
| 355 | if (ret) | ||
| 356 | goto failed_usb; | ||
| 357 | |||
| 358 | printk(KERN_INFO KBUILD_MODNAME ": " TI_DRIVER_VERSION ":" | ||
| 359 | TI_DRIVER_DESC "\n"); | ||
| 360 | |||
| 361 | return 0; | ||
| 362 | |||
| 363 | failed_usb: | ||
| 364 | usb_serial_deregister(&ti_2port_device); | ||
| 365 | failed_2port: | ||
| 366 | usb_serial_deregister(&ti_1port_device); | ||
| 367 | failed_1port: | ||
| 368 | return ret; | 351 | return ret; |
| 369 | } | 352 | } |
| 370 | 353 | ||
| 371 | 354 | ||
| 372 | static void __exit ti_exit(void) | 355 | static void __exit ti_exit(void) |
| 373 | { | 356 | { |
| 374 | usb_deregister(&ti_usb_driver); | 357 | usb_serial_deregister_drivers(&ti_usb_driver, serial_drivers); |
| 375 | usb_serial_deregister(&ti_1port_device); | ||
| 376 | usb_serial_deregister(&ti_2port_device); | ||
| 377 | } | 358 | } |
| 378 | 359 | ||
| 379 | 360 | ||
diff --git a/drivers/usb/serial/usb_debug.c b/drivers/usb/serial/usb_debug.c index 9b632e753210..5b29b4a2ebc7 100644 --- a/drivers/usb/serial/usb_debug.c +++ b/drivers/usb/serial/usb_debug.c | |||
| @@ -40,7 +40,6 @@ static struct usb_driver debug_driver = { | |||
| 40 | .probe = usb_serial_probe, | 40 | .probe = usb_serial_probe, |
| 41 | .disconnect = usb_serial_disconnect, | 41 | .disconnect = usb_serial_disconnect, |
| 42 | .id_table = id_table, | 42 | .id_table = id_table, |
| 43 | .no_dynamic_id = 1, | ||
| 44 | }; | 43 | }; |
| 45 | 44 | ||
| 46 | /* This HW really does not support a serial break, so one will be | 45 | /* This HW really does not support a serial break, so one will be |
| @@ -74,30 +73,24 @@ static struct usb_serial_driver debug_device = { | |||
| 74 | .name = "debug", | 73 | .name = "debug", |
| 75 | }, | 74 | }, |
| 76 | .id_table = id_table, | 75 | .id_table = id_table, |
| 77 | .usb_driver = &debug_driver, | ||
| 78 | .num_ports = 1, | 76 | .num_ports = 1, |
| 79 | .bulk_out_size = USB_DEBUG_MAX_PACKET_SIZE, | 77 | .bulk_out_size = USB_DEBUG_MAX_PACKET_SIZE, |
| 80 | .break_ctl = usb_debug_break_ctl, | 78 | .break_ctl = usb_debug_break_ctl, |
| 81 | .process_read_urb = usb_debug_process_read_urb, | 79 | .process_read_urb = usb_debug_process_read_urb, |
| 82 | }; | 80 | }; |
| 83 | 81 | ||
| 82 | static struct usb_serial_driver * const serial_drivers[] = { | ||
| 83 | &debug_device, NULL | ||
| 84 | }; | ||
| 85 | |||
| 84 | static int __init debug_init(void) | 86 | static int __init debug_init(void) |
| 85 | { | 87 | { |
| 86 | int retval; | 88 | return usb_serial_register_drivers(&debug_driver, serial_drivers); |
| 87 | |||
| 88 | retval = usb_serial_register(&debug_device); | ||
| 89 | if (retval) | ||
| 90 | return retval; | ||
| 91 | retval = usb_register(&debug_driver); | ||
| 92 | if (retval) | ||
| 93 | usb_serial_deregister(&debug_device); | ||
| 94 | return retval; | ||
| 95 | } | 89 | } |
| 96 | 90 | ||
| 97 | static void __exit debug_exit(void) | 91 | static void __exit debug_exit(void) |
| 98 | { | 92 | { |
| 99 | usb_deregister(&debug_driver); | 93 | usb_serial_deregister_drivers(&debug_driver, serial_drivers); |
| 100 | usb_serial_deregister(&debug_device); | ||
| 101 | } | 94 | } |
| 102 | 95 | ||
| 103 | module_init(debug_init); | 96 | module_init(debug_init); |
diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c index 210e4b10dc11..71d696474f24 100644 --- a/drivers/usb/serial/visor.c +++ b/drivers/usb/serial/visor.c | |||
| @@ -173,7 +173,6 @@ static struct usb_driver visor_driver = { | |||
| 173 | .probe = usb_serial_probe, | 173 | .probe = usb_serial_probe, |
| 174 | .disconnect = usb_serial_disconnect, | 174 | .disconnect = usb_serial_disconnect, |
| 175 | .id_table = id_table_combined, | 175 | .id_table = id_table_combined, |
| 176 | .no_dynamic_id = 1, | ||
| 177 | }; | 176 | }; |
| 178 | 177 | ||
| 179 | /* All of the device info needed for the Handspring Visor, | 178 | /* All of the device info needed for the Handspring Visor, |
| @@ -184,7 +183,6 @@ static struct usb_serial_driver handspring_device = { | |||
| 184 | .name = "visor", | 183 | .name = "visor", |
| 185 | }, | 184 | }, |
| 186 | .description = "Handspring Visor / Palm OS", | 185 | .description = "Handspring Visor / Palm OS", |
| 187 | .usb_driver = &visor_driver, | ||
| 188 | .id_table = id_table, | 186 | .id_table = id_table, |
| 189 | .num_ports = 2, | 187 | .num_ports = 2, |
| 190 | .bulk_out_size = 256, | 188 | .bulk_out_size = 256, |
| @@ -205,7 +203,6 @@ static struct usb_serial_driver clie_5_device = { | |||
| 205 | .name = "clie_5", | 203 | .name = "clie_5", |
| 206 | }, | 204 | }, |
| 207 | .description = "Sony Clie 5.0", | 205 | .description = "Sony Clie 5.0", |
| 208 | .usb_driver = &visor_driver, | ||
| 209 | .id_table = clie_id_5_table, | 206 | .id_table = clie_id_5_table, |
| 210 | .num_ports = 2, | 207 | .num_ports = 2, |
| 211 | .bulk_out_size = 256, | 208 | .bulk_out_size = 256, |
| @@ -226,7 +223,6 @@ static struct usb_serial_driver clie_3_5_device = { | |||
| 226 | .name = "clie_3.5", | 223 | .name = "clie_3.5", |
| 227 | }, | 224 | }, |
| 228 | .description = "Sony Clie 3.5", | 225 | .description = "Sony Clie 3.5", |
| 229 | .usb_driver = &visor_driver, | ||
| 230 | .id_table = clie_id_3_5_table, | 226 | .id_table = clie_id_3_5_table, |
| 231 | .num_ports = 1, | 227 | .num_ports = 1, |
| 232 | .bulk_out_size = 256, | 228 | .bulk_out_size = 256, |
| @@ -237,6 +233,10 @@ static struct usb_serial_driver clie_3_5_device = { | |||
| 237 | .attach = clie_3_5_startup, | 233 | .attach = clie_3_5_startup, |
| 238 | }; | 234 | }; |
| 239 | 235 | ||
| 236 | static struct usb_serial_driver * const serial_drivers[] = { | ||
| 237 | &handspring_device, &clie_5_device, &clie_3_5_device, NULL | ||
| 238 | }; | ||
| 239 | |||
| 240 | /****************************************************************************** | 240 | /****************************************************************************** |
| 241 | * Handspring Visor specific driver functions | 241 | * Handspring Visor specific driver functions |
| 242 | ******************************************************************************/ | 242 | ******************************************************************************/ |
| @@ -685,38 +685,17 @@ static int __init visor_init(void) | |||
| 685 | ": Adding Palm OS protocol 4.x support for unknown device: 0x%x/0x%x\n", | 685 | ": Adding Palm OS protocol 4.x support for unknown device: 0x%x/0x%x\n", |
| 686 | vendor, product); | 686 | vendor, product); |
| 687 | } | 687 | } |
| 688 | retval = usb_serial_register(&handspring_device); | ||
| 689 | if (retval) | ||
| 690 | goto failed_handspring_register; | ||
| 691 | retval = usb_serial_register(&clie_3_5_device); | ||
| 692 | if (retval) | ||
| 693 | goto failed_clie_3_5_register; | ||
| 694 | retval = usb_serial_register(&clie_5_device); | ||
| 695 | if (retval) | ||
| 696 | goto failed_clie_5_register; | ||
| 697 | retval = usb_register(&visor_driver); | ||
| 698 | if (retval) | ||
| 699 | goto failed_usb_register; | ||
| 700 | printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_DESC "\n"); | ||
| 701 | 688 | ||
| 702 | return 0; | 689 | retval = usb_serial_register_drivers(&visor_driver, serial_drivers); |
| 703 | failed_usb_register: | 690 | if (retval == 0) |
| 704 | usb_serial_deregister(&clie_5_device); | 691 | printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_DESC "\n"); |
| 705 | failed_clie_5_register: | ||
| 706 | usb_serial_deregister(&clie_3_5_device); | ||
| 707 | failed_clie_3_5_register: | ||
| 708 | usb_serial_deregister(&handspring_device); | ||
| 709 | failed_handspring_register: | ||
| 710 | return retval; | 692 | return retval; |
| 711 | } | 693 | } |
| 712 | 694 | ||
| 713 | 695 | ||
| 714 | static void __exit visor_exit (void) | 696 | static void __exit visor_exit (void) |
| 715 | { | 697 | { |
| 716 | usb_deregister(&visor_driver); | 698 | usb_serial_deregister_drivers(&visor_driver, serial_drivers); |
| 717 | usb_serial_deregister(&handspring_device); | ||
| 718 | usb_serial_deregister(&clie_3_5_device); | ||
| 719 | usb_serial_deregister(&clie_5_device); | ||
| 720 | } | 699 | } |
| 721 | 700 | ||
| 722 | 701 | ||
diff --git a/drivers/usb/serial/vivopay-serial.c b/drivers/usb/serial/vivopay-serial.c index f719d00972fc..a6f113bd4fae 100644 --- a/drivers/usb/serial/vivopay-serial.c +++ b/drivers/usb/serial/vivopay-serial.c | |||
| @@ -30,7 +30,6 @@ static struct usb_driver vivopay_serial_driver = { | |||
| 30 | .probe = usb_serial_probe, | 30 | .probe = usb_serial_probe, |
| 31 | .disconnect = usb_serial_disconnect, | 31 | .disconnect = usb_serial_disconnect, |
| 32 | .id_table = id_table, | 32 | .id_table = id_table, |
| 33 | .no_dynamic_id = 1, | ||
| 34 | }; | 33 | }; |
| 35 | 34 | ||
| 36 | static struct usb_serial_driver vivopay_serial_device = { | 35 | static struct usb_serial_driver vivopay_serial_device = { |
| @@ -39,32 +38,28 @@ static struct usb_serial_driver vivopay_serial_device = { | |||
| 39 | .name = "vivopay-serial", | 38 | .name = "vivopay-serial", |
| 40 | }, | 39 | }, |
| 41 | .id_table = id_table, | 40 | .id_table = id_table, |
| 42 | .usb_driver = &vivopay_serial_driver, | ||
| 43 | .num_ports = 1, | 41 | .num_ports = 1, |
| 44 | }; | 42 | }; |
| 45 | 43 | ||
| 44 | static struct usb_serial_driver * const serial_drivers[] = { | ||
| 45 | &vivopay_serial_device, NULL | ||
| 46 | }; | ||
| 47 | |||
| 46 | static int __init vivopay_serial_init(void) | 48 | static int __init vivopay_serial_init(void) |
| 47 | { | 49 | { |
| 48 | int retval; | 50 | int retval; |
| 49 | retval = usb_serial_register(&vivopay_serial_device); | 51 | |
| 50 | if (retval) | 52 | retval = usb_serial_register_drivers(&vivopay_serial_driver, |
| 51 | goto failed_usb_serial_register; | 53 | serial_drivers); |
| 52 | retval = usb_register(&vivopay_serial_driver); | 54 | if (retval == 0) |
| 53 | if (retval) | 55 | printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":" |
| 54 | goto failed_usb_register; | 56 | DRIVER_DESC "\n"); |
| 55 | printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":" | ||
| 56 | DRIVER_DESC "\n"); | ||
| 57 | return 0; | ||
| 58 | failed_usb_register: | ||
| 59 | usb_serial_deregister(&vivopay_serial_device); | ||
| 60 | failed_usb_serial_register: | ||
| 61 | return retval; | 57 | return retval; |
| 62 | } | 58 | } |
| 63 | 59 | ||
| 64 | static void __exit vivopay_serial_exit(void) | 60 | static void __exit vivopay_serial_exit(void) |
| 65 | { | 61 | { |
| 66 | usb_deregister(&vivopay_serial_driver); | 62 | usb_serial_deregister_drivers(&vivopay_serial_driver, serial_drivers); |
| 67 | usb_serial_deregister(&vivopay_serial_device); | ||
| 68 | } | 63 | } |
| 69 | 64 | ||
| 70 | module_init(vivopay_serial_init); | 65 | module_init(vivopay_serial_init); |
diff --git a/drivers/usb/serial/whiteheat.c b/drivers/usb/serial/whiteheat.c index 007cf3a2481a..a29be37a3a67 100644 --- a/drivers/usb/serial/whiteheat.c +++ b/drivers/usb/serial/whiteheat.c | |||
| @@ -83,7 +83,6 @@ static struct usb_driver whiteheat_driver = { | |||
| 83 | .probe = usb_serial_probe, | 83 | .probe = usb_serial_probe, |
| 84 | .disconnect = usb_serial_disconnect, | 84 | .disconnect = usb_serial_disconnect, |
| 85 | .id_table = id_table_combined, | 85 | .id_table = id_table_combined, |
| 86 | .no_dynamic_id = 1, | ||
| 87 | }; | 86 | }; |
| 88 | 87 | ||
| 89 | /* function prototypes for the Connect Tech WhiteHEAT prerenumeration device */ | 88 | /* function prototypes for the Connect Tech WhiteHEAT prerenumeration device */ |
| @@ -121,7 +120,6 @@ static struct usb_serial_driver whiteheat_fake_device = { | |||
| 121 | .name = "whiteheatnofirm", | 120 | .name = "whiteheatnofirm", |
| 122 | }, | 121 | }, |
| 123 | .description = "Connect Tech - WhiteHEAT - (prerenumeration)", | 122 | .description = "Connect Tech - WhiteHEAT - (prerenumeration)", |
| 124 | .usb_driver = &whiteheat_driver, | ||
| 125 | .id_table = id_table_prerenumeration, | 123 | .id_table = id_table_prerenumeration, |
| 126 | .num_ports = 1, | 124 | .num_ports = 1, |
| 127 | .probe = whiteheat_firmware_download, | 125 | .probe = whiteheat_firmware_download, |
| @@ -134,7 +132,6 @@ static struct usb_serial_driver whiteheat_device = { | |||
| 134 | .name = "whiteheat", | 132 | .name = "whiteheat", |
| 135 | }, | 133 | }, |
| 136 | .description = "Connect Tech - WhiteHEAT", | 134 | .description = "Connect Tech - WhiteHEAT", |
| 137 | .usb_driver = &whiteheat_driver, | ||
| 138 | .id_table = id_table_std, | 135 | .id_table = id_table_std, |
| 139 | .num_ports = 4, | 136 | .num_ports = 4, |
| 140 | .attach = whiteheat_attach, | 137 | .attach = whiteheat_attach, |
| @@ -155,6 +152,9 @@ static struct usb_serial_driver whiteheat_device = { | |||
| 155 | .write_bulk_callback = whiteheat_write_callback, | 152 | .write_bulk_callback = whiteheat_write_callback, |
| 156 | }; | 153 | }; |
| 157 | 154 | ||
| 155 | static struct usb_serial_driver * const serial_drivers[] = { | ||
| 156 | &whiteheat_fake_device, &whiteheat_device, NULL | ||
| 157 | }; | ||
| 158 | 158 | ||
| 159 | struct whiteheat_command_private { | 159 | struct whiteheat_command_private { |
| 160 | struct mutex mutex; | 160 | struct mutex mutex; |
| @@ -1461,32 +1461,18 @@ out: | |||
| 1461 | static int __init whiteheat_init(void) | 1461 | static int __init whiteheat_init(void) |
| 1462 | { | 1462 | { |
| 1463 | int retval; | 1463 | int retval; |
| 1464 | retval = usb_serial_register(&whiteheat_fake_device); | 1464 | |
| 1465 | if (retval) | 1465 | retval = usb_serial_register_drivers(&whiteheat_driver, serial_drivers); |
| 1466 | goto failed_fake_register; | 1466 | if (retval == 0) |
| 1467 | retval = usb_serial_register(&whiteheat_device); | 1467 | printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":" |
| 1468 | if (retval) | 1468 | DRIVER_DESC "\n"); |
| 1469 | goto failed_device_register; | ||
| 1470 | retval = usb_register(&whiteheat_driver); | ||
| 1471 | if (retval) | ||
| 1472 | goto failed_usb_register; | ||
| 1473 | printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":" | ||
| 1474 | DRIVER_DESC "\n"); | ||
| 1475 | return 0; | ||
| 1476 | failed_usb_register: | ||
| 1477 | usb_serial_deregister(&whiteheat_device); | ||
| 1478 | failed_device_register: | ||
| 1479 | usb_serial_deregister(&whiteheat_fake_device); | ||
| 1480 | failed_fake_register: | ||
| 1481 | return retval; | 1469 | return retval; |
| 1482 | } | 1470 | } |
| 1483 | 1471 | ||
| 1484 | 1472 | ||
| 1485 | static void __exit whiteheat_exit(void) | 1473 | static void __exit whiteheat_exit(void) |
| 1486 | { | 1474 | { |
| 1487 | usb_deregister(&whiteheat_driver); | 1475 | usb_serial_deregister_drivers(&whiteheat_driver, serial_drivers); |
| 1488 | usb_serial_deregister(&whiteheat_fake_device); | ||
| 1489 | usb_serial_deregister(&whiteheat_device); | ||
| 1490 | } | 1476 | } |
| 1491 | 1477 | ||
| 1492 | 1478 | ||
diff --git a/drivers/usb/serial/zio.c b/drivers/usb/serial/zio.c index f57967278833..ae8115aab77d 100644 --- a/drivers/usb/serial/zio.c +++ b/drivers/usb/serial/zio.c | |||
| @@ -27,7 +27,6 @@ static struct usb_driver zio_driver = { | |||
| 27 | .probe = usb_serial_probe, | 27 | .probe = usb_serial_probe, |
| 28 | .disconnect = usb_serial_disconnect, | 28 | .disconnect = usb_serial_disconnect, |
| 29 | .id_table = id_table, | 29 | .id_table = id_table, |
| 30 | .no_dynamic_id = 1, | ||
| 31 | }; | 30 | }; |
| 32 | 31 | ||
| 33 | static struct usb_serial_driver zio_device = { | 32 | static struct usb_serial_driver zio_device = { |
| @@ -36,27 +35,21 @@ static struct usb_serial_driver zio_device = { | |||
| 36 | .name = "zio", | 35 | .name = "zio", |
| 37 | }, | 36 | }, |
| 38 | .id_table = id_table, | 37 | .id_table = id_table, |
| 39 | .usb_driver = &zio_driver, | ||
| 40 | .num_ports = 1, | 38 | .num_ports = 1, |
| 41 | }; | 39 | }; |
| 42 | 40 | ||
| 41 | static struct usb_serial_driver * const serial_drivers[] = { | ||
| 42 | &zio_device, NULL | ||
| 43 | }; | ||
| 44 | |||
| 43 | static int __init zio_init(void) | 45 | static int __init zio_init(void) |
| 44 | { | 46 | { |
| 45 | int retval; | 47 | return usb_serial_register_drivers(&zio_driver, serial_drivers); |
| 46 | |||
| 47 | retval = usb_serial_register(&zio_device); | ||
| 48 | if (retval) | ||
| 49 | return retval; | ||
| 50 | retval = usb_register(&zio_driver); | ||
| 51 | if (retval) | ||
| 52 | usb_serial_deregister(&zio_device); | ||
| 53 | return retval; | ||
| 54 | } | 48 | } |
| 55 | 49 | ||
| 56 | static void __exit zio_exit(void) | 50 | static void __exit zio_exit(void) |
| 57 | { | 51 | { |
| 58 | usb_deregister(&zio_driver); | 52 | usb_serial_deregister_drivers(&zio_driver, serial_drivers); |
| 59 | usb_serial_deregister(&zio_device); | ||
| 60 | } | 53 | } |
| 61 | 54 | ||
| 62 | module_init(zio_init); | 55 | module_init(zio_init); |
