diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2012-02-23 14:57:25 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-02-24 15:39:20 -0500 |
commit | d860322f34e4a53f347b1aeae23d5b72f1e91b8c (patch) | |
tree | bea8d4ab22b81eed98ab67c82a994b73cb6c5763 | |
parent | f667ddad41e303ebc2c6d5bf3105dffe2fbdd717 (diff) |
usb-serial: use new registration API in [q-s]* drivers
This patch (as1528) modifies the following usb-serial drivers to
utilize the new usb_serial_{de}register_drivers() routines:
qcaux, qcserial, safe_serial, siemens_mpi, sierra,
spcp8x5, ssu100, and symbolserial.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/usb/serial/qcaux.c | 19 | ||||
-rw-r--r-- | drivers/usb/serial/qcserial.c | 22 | ||||
-rw-r--r-- | drivers/usb/serial/safe_serial.c | 24 | ||||
-rw-r--r-- | drivers/usb/serial/siemens_mpi.c | 26 | ||||
-rw-r--r-- | drivers/usb/serial/sierra.c | 29 | ||||
-rw-r--r-- | drivers/usb/serial/spcp8x5.c | 26 | ||||
-rw-r--r-- | drivers/usb/serial/ssu100.c | 31 | ||||
-rw-r--r-- | drivers/usb/serial/symbolserial.c | 19 |
8 files changed, 64 insertions, 132 deletions
diff --git a/drivers/usb/serial/qcaux.c b/drivers/usb/serial/qcaux.c index a34819884c1a..a2ce274b3f28 100644 --- a/drivers/usb/serial/qcaux.c +++ b/drivers/usb/serial/qcaux.c | |||
@@ -82,7 +82,6 @@ static struct usb_driver qcaux_driver = { | |||
82 | .probe = usb_serial_probe, | 82 | .probe = usb_serial_probe, |
83 | .disconnect = usb_serial_disconnect, | 83 | .disconnect = usb_serial_disconnect, |
84 | .id_table = id_table, | 84 | .id_table = id_table, |
85 | .no_dynamic_id = 1, | ||
86 | }; | 85 | }; |
87 | 86 | ||
88 | static struct usb_serial_driver qcaux_device = { | 87 | static struct usb_serial_driver qcaux_device = { |
@@ -91,27 +90,21 @@ static struct usb_serial_driver qcaux_device = { | |||
91 | .name = "qcaux", | 90 | .name = "qcaux", |
92 | }, | 91 | }, |
93 | .id_table = id_table, | 92 | .id_table = id_table, |
94 | .usb_driver = &qcaux_driver, | ||
95 | .num_ports = 1, | 93 | .num_ports = 1, |
96 | }; | 94 | }; |
97 | 95 | ||
96 | static struct usb_serial_driver * const serial_drivers[] = { | ||
97 | &qcaux_device, NULL | ||
98 | }; | ||
99 | |||
98 | static int __init qcaux_init(void) | 100 | static int __init qcaux_init(void) |
99 | { | 101 | { |
100 | int retval; | 102 | return usb_serial_register_drivers(&qcaux_driver, serial_drivers); |
101 | |||
102 | retval = usb_serial_register(&qcaux_device); | ||
103 | if (retval) | ||
104 | return retval; | ||
105 | retval = usb_register(&qcaux_driver); | ||
106 | if (retval) | ||
107 | usb_serial_deregister(&qcaux_device); | ||
108 | return retval; | ||
109 | } | 103 | } |
110 | 104 | ||
111 | static void __exit qcaux_exit(void) | 105 | static void __exit qcaux_exit(void) |
112 | { | 106 | { |
113 | usb_deregister(&qcaux_driver); | 107 | usb_serial_deregister_drivers(&qcaux_driver, serial_drivers); |
114 | usb_serial_deregister(&qcaux_device); | ||
115 | } | 108 | } |
116 | 109 | ||
117 | module_init(qcaux_init); | 110 | module_init(qcaux_init); |
diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c index f98800f2324c..70e9f1abdad1 100644 --- a/drivers/usb/serial/qcserial.c +++ b/drivers/usb/serial/qcserial.c | |||
@@ -246,7 +246,6 @@ static struct usb_serial_driver qcdevice = { | |||
246 | }, | 246 | }, |
247 | .description = "Qualcomm USB modem", | 247 | .description = "Qualcomm USB modem", |
248 | .id_table = id_table, | 248 | .id_table = id_table, |
249 | .usb_driver = &qcdriver, | ||
250 | .num_ports = 1, | 249 | .num_ports = 1, |
251 | .probe = qcprobe, | 250 | .probe = qcprobe, |
252 | .open = usb_wwan_open, | 251 | .open = usb_wwan_open, |
@@ -263,27 +262,18 @@ static struct usb_serial_driver qcdevice = { | |||
263 | #endif | 262 | #endif |
264 | }; | 263 | }; |
265 | 264 | ||
265 | static struct usb_serial_driver * const serial_drivers[] = { | ||
266 | &qcdevice, NULL | ||
267 | }; | ||
268 | |||
266 | static int __init qcinit(void) | 269 | static int __init qcinit(void) |
267 | { | 270 | { |
268 | int retval; | 271 | return usb_serial_register_drivers(&qcdriver, serial_drivers); |
269 | |||
270 | retval = usb_serial_register(&qcdevice); | ||
271 | if (retval) | ||
272 | return retval; | ||
273 | |||
274 | retval = usb_register(&qcdriver); | ||
275 | if (retval) { | ||
276 | usb_serial_deregister(&qcdevice); | ||
277 | return retval; | ||
278 | } | ||
279 | |||
280 | return 0; | ||
281 | } | 272 | } |
282 | 273 | ||
283 | static void __exit qcexit(void) | 274 | static void __exit qcexit(void) |
284 | { | 275 | { |
285 | usb_deregister(&qcdriver); | 276 | usb_serial_deregister_drivers(&qcdriver, serial_drivers); |
286 | usb_serial_deregister(&qcdevice); | ||
287 | } | 277 | } |
288 | 278 | ||
289 | module_init(qcinit); | 279 | module_init(qcinit); |
diff --git a/drivers/usb/serial/safe_serial.c b/drivers/usb/serial/safe_serial.c index d074b3740dcb..ae4ee30c7411 100644 --- a/drivers/usb/serial/safe_serial.c +++ b/drivers/usb/serial/safe_serial.c | |||
@@ -156,7 +156,6 @@ static struct usb_driver safe_driver = { | |||
156 | .probe = usb_serial_probe, | 156 | .probe = usb_serial_probe, |
157 | .disconnect = usb_serial_disconnect, | 157 | .disconnect = usb_serial_disconnect, |
158 | .id_table = id_table, | 158 | .id_table = id_table, |
159 | .no_dynamic_id = 1, | ||
160 | }; | 159 | }; |
161 | 160 | ||
162 | static const __u16 crc10_table[256] = { | 161 | static const __u16 crc10_table[256] = { |
@@ -309,16 +308,19 @@ static struct usb_serial_driver safe_device = { | |||
309 | .name = "safe_serial", | 308 | .name = "safe_serial", |
310 | }, | 309 | }, |
311 | .id_table = id_table, | 310 | .id_table = id_table, |
312 | .usb_driver = &safe_driver, | ||
313 | .num_ports = 1, | 311 | .num_ports = 1, |
314 | .process_read_urb = safe_process_read_urb, | 312 | .process_read_urb = safe_process_read_urb, |
315 | .prepare_write_buffer = safe_prepare_write_buffer, | 313 | .prepare_write_buffer = safe_prepare_write_buffer, |
316 | .attach = safe_startup, | 314 | .attach = safe_startup, |
317 | }; | 315 | }; |
318 | 316 | ||
317 | static struct usb_serial_driver * const serial_drivers[] = { | ||
318 | &safe_device, NULL | ||
319 | }; | ||
320 | |||
319 | static int __init safe_init(void) | 321 | static int __init safe_init(void) |
320 | { | 322 | { |
321 | int i, retval; | 323 | int i; |
322 | 324 | ||
323 | printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":" | 325 | printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":" |
324 | DRIVER_DESC "\n"); | 326 | DRIVER_DESC "\n"); |
@@ -337,24 +339,12 @@ static int __init safe_init(void) | |||
337 | } | 339 | } |
338 | } | 340 | } |
339 | 341 | ||
340 | retval = usb_serial_register(&safe_device); | 342 | return usb_serial_register_drivers(&safe_driver, serial_drivers); |
341 | if (retval) | ||
342 | goto failed_usb_serial_register; | ||
343 | retval = usb_register(&safe_driver); | ||
344 | if (retval) | ||
345 | goto failed_usb_register; | ||
346 | |||
347 | return 0; | ||
348 | failed_usb_register: | ||
349 | usb_serial_deregister(&safe_device); | ||
350 | failed_usb_serial_register: | ||
351 | return retval; | ||
352 | } | 343 | } |
353 | 344 | ||
354 | static void __exit safe_exit(void) | 345 | static void __exit safe_exit(void) |
355 | { | 346 | { |
356 | usb_deregister(&safe_driver); | 347 | usb_serial_deregister_drivers(&safe_driver, serial_drivers); |
357 | usb_serial_deregister(&safe_device); | ||
358 | } | 348 | } |
359 | 349 | ||
360 | module_init(safe_init); | 350 | module_init(safe_init); |
diff --git a/drivers/usb/serial/siemens_mpi.c b/drivers/usb/serial/siemens_mpi.c index 74cd4ccdb3fc..8aa4c1aef6d1 100644 --- a/drivers/usb/serial/siemens_mpi.c +++ b/drivers/usb/serial/siemens_mpi.c | |||
@@ -42,33 +42,29 @@ static struct usb_serial_driver siemens_usb_mpi_device = { | |||
42 | .name = "siemens_mpi", | 42 | .name = "siemens_mpi", |
43 | }, | 43 | }, |
44 | .id_table = id_table, | 44 | .id_table = id_table, |
45 | .usb_driver = &siemens_usb_mpi_driver, | ||
46 | .num_ports = 1, | 45 | .num_ports = 1, |
47 | }; | 46 | }; |
48 | 47 | ||
48 | static struct usb_serial_driver * const serial_drivers[] = { | ||
49 | &siemens_usb_mpi_device, NULL | ||
50 | }; | ||
51 | |||
49 | static int __init siemens_usb_mpi_init(void) | 52 | static int __init siemens_usb_mpi_init(void) |
50 | { | 53 | { |
51 | int retval; | 54 | int retval; |
52 | 55 | ||
53 | retval = usb_serial_register(&siemens_usb_mpi_device); | 56 | retval = usb_serial_register_drivers(&siemens_usb_mpi_driver, |
54 | if (retval) | 57 | serial_drivers); |
55 | goto failed_usb_serial_register; | 58 | if (retval == 0) { |
56 | retval = usb_register(&siemens_usb_mpi_driver); | 59 | printk(KERN_INFO DRIVER_DESC "\n"); |
57 | if (retval) | 60 | printk(KERN_INFO DRIVER_VERSION " " DRIVER_AUTHOR "\n"); |
58 | goto failed_usb_register; | 61 | } |
59 | printk(KERN_INFO DRIVER_DESC "\n"); | ||
60 | printk(KERN_INFO DRIVER_VERSION " " DRIVER_AUTHOR "\n"); | ||
61 | return retval; | ||
62 | failed_usb_register: | ||
63 | usb_serial_deregister(&siemens_usb_mpi_device); | ||
64 | failed_usb_serial_register: | ||
65 | return retval; | 62 | return retval; |
66 | } | 63 | } |
67 | 64 | ||
68 | static void __exit siemens_usb_mpi_exit(void) | 65 | static void __exit siemens_usb_mpi_exit(void) |
69 | { | 66 | { |
70 | usb_deregister(&siemens_usb_mpi_driver); | 67 | usb_serial_deregister_drivers(&siemens_usb_mpi_driver, serial_drivers); |
71 | usb_serial_deregister(&siemens_usb_mpi_device); | ||
72 | } | 68 | } |
73 | 69 | ||
74 | module_init(siemens_usb_mpi_init); | 70 | module_init(siemens_usb_mpi_init); |
diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c index fdae0a4407cb..d75a75b83e9f 100644 --- a/drivers/usb/serial/sierra.c +++ b/drivers/usb/serial/sierra.c | |||
@@ -1084,7 +1084,6 @@ static struct usb_driver sierra_driver = { | |||
1084 | .resume = usb_serial_resume, | 1084 | .resume = usb_serial_resume, |
1085 | .reset_resume = sierra_reset_resume, | 1085 | .reset_resume = sierra_reset_resume, |
1086 | .id_table = id_table, | 1086 | .id_table = id_table, |
1087 | .no_dynamic_id = 1, | ||
1088 | .supports_autosuspend = 1, | 1087 | .supports_autosuspend = 1, |
1089 | }; | 1088 | }; |
1090 | 1089 | ||
@@ -1095,7 +1094,6 @@ static struct usb_serial_driver sierra_device = { | |||
1095 | }, | 1094 | }, |
1096 | .description = "Sierra USB modem", | 1095 | .description = "Sierra USB modem", |
1097 | .id_table = id_table, | 1096 | .id_table = id_table, |
1098 | .usb_driver = &sierra_driver, | ||
1099 | .calc_num_ports = sierra_calc_num_ports, | 1097 | .calc_num_ports = sierra_calc_num_ports, |
1100 | .probe = sierra_probe, | 1098 | .probe = sierra_probe, |
1101 | .open = sierra_open, | 1099 | .open = sierra_open, |
@@ -1113,34 +1111,25 @@ static struct usb_serial_driver sierra_device = { | |||
1113 | .read_int_callback = sierra_instat_callback, | 1111 | .read_int_callback = sierra_instat_callback, |
1114 | }; | 1112 | }; |
1115 | 1113 | ||
1114 | static struct usb_serial_driver * const serial_drivers[] = { | ||
1115 | &sierra_device, NULL | ||
1116 | }; | ||
1117 | |||
1116 | /* Functions used by new usb-serial code. */ | 1118 | /* Functions used by new usb-serial code. */ |
1117 | static int __init sierra_init(void) | 1119 | static int __init sierra_init(void) |
1118 | { | 1120 | { |
1119 | int retval; | 1121 | int retval; |
1120 | retval = usb_serial_register(&sierra_device); | ||
1121 | if (retval) | ||
1122 | goto failed_device_register; | ||
1123 | |||
1124 | |||
1125 | retval = usb_register(&sierra_driver); | ||
1126 | if (retval) | ||
1127 | goto failed_driver_register; | ||
1128 | |||
1129 | printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":" | ||
1130 | DRIVER_DESC "\n"); | ||
1131 | |||
1132 | return 0; | ||
1133 | 1122 | ||
1134 | failed_driver_register: | 1123 | retval = usb_serial_register_drivers(&sierra_driver, serial_drivers); |
1135 | usb_serial_deregister(&sierra_device); | 1124 | if (retval == 0) |
1136 | failed_device_register: | 1125 | printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":" |
1126 | DRIVER_DESC "\n"); | ||
1137 | return retval; | 1127 | return retval; |
1138 | } | 1128 | } |
1139 | 1129 | ||
1140 | static void __exit sierra_exit(void) | 1130 | static void __exit sierra_exit(void) |
1141 | { | 1131 | { |
1142 | usb_deregister(&sierra_driver); | 1132 | usb_serial_deregister_drivers(&sierra_driver, serial_drivers); |
1143 | usb_serial_deregister(&sierra_device); | ||
1144 | } | 1133 | } |
1145 | 1134 | ||
1146 | module_init(sierra_init); | 1135 | module_init(sierra_init); |
diff --git a/drivers/usb/serial/spcp8x5.c b/drivers/usb/serial/spcp8x5.c index d7f5eee18f00..af898937d4b1 100644 --- a/drivers/usb/serial/spcp8x5.c +++ b/drivers/usb/serial/spcp8x5.c | |||
@@ -156,7 +156,6 @@ static struct usb_driver spcp8x5_driver = { | |||
156 | .probe = usb_serial_probe, | 156 | .probe = usb_serial_probe, |
157 | .disconnect = usb_serial_disconnect, | 157 | .disconnect = usb_serial_disconnect, |
158 | .id_table = id_table, | 158 | .id_table = id_table, |
159 | .no_dynamic_id = 1, | ||
160 | }; | 159 | }; |
161 | 160 | ||
162 | 161 | ||
@@ -649,7 +648,6 @@ static struct usb_serial_driver spcp8x5_device = { | |||
649 | .name = "SPCP8x5", | 648 | .name = "SPCP8x5", |
650 | }, | 649 | }, |
651 | .id_table = id_table, | 650 | .id_table = id_table, |
652 | .usb_driver = &spcp8x5_driver, | ||
653 | .num_ports = 1, | 651 | .num_ports = 1, |
654 | .open = spcp8x5_open, | 652 | .open = spcp8x5_open, |
655 | .dtr_rts = spcp8x5_dtr_rts, | 653 | .dtr_rts = spcp8x5_dtr_rts, |
@@ -664,28 +662,24 @@ static struct usb_serial_driver spcp8x5_device = { | |||
664 | .process_read_urb = spcp8x5_process_read_urb, | 662 | .process_read_urb = spcp8x5_process_read_urb, |
665 | }; | 663 | }; |
666 | 664 | ||
665 | static struct usb_serial_driver * const serial_drivers[] = { | ||
666 | &spcp8x5_device, NULL | ||
667 | }; | ||
668 | |||
667 | static int __init spcp8x5_init(void) | 669 | static int __init spcp8x5_init(void) |
668 | { | 670 | { |
669 | int retval; | 671 | int retval; |
670 | retval = usb_serial_register(&spcp8x5_device); | 672 | |
671 | if (retval) | 673 | retval = usb_serial_register_drivers(&spcp8x5_driver, serial_drivers); |
672 | goto failed_usb_serial_register; | 674 | if (retval == 0) |
673 | retval = usb_register(&spcp8x5_driver); | 675 | printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":" |
674 | if (retval) | 676 | DRIVER_DESC "\n"); |
675 | goto failed_usb_register; | ||
676 | printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":" | ||
677 | DRIVER_DESC "\n"); | ||
678 | return 0; | ||
679 | failed_usb_register: | ||
680 | usb_serial_deregister(&spcp8x5_device); | ||
681 | failed_usb_serial_register: | ||
682 | return retval; | 677 | return retval; |
683 | } | 678 | } |
684 | 679 | ||
685 | static void __exit spcp8x5_exit(void) | 680 | static void __exit spcp8x5_exit(void) |
686 | { | 681 | { |
687 | usb_deregister(&spcp8x5_driver); | 682 | usb_serial_deregister_drivers(&spcp8x5_driver, serial_drivers); |
688 | usb_serial_deregister(&spcp8x5_device); | ||
689 | } | 683 | } |
690 | 684 | ||
691 | module_init(spcp8x5_init); | 685 | module_init(spcp8x5_init); |
diff --git a/drivers/usb/serial/ssu100.c b/drivers/usb/serial/ssu100.c index 7697858d8858..ab8842107a8b 100644 --- a/drivers/usb/serial/ssu100.c +++ b/drivers/usb/serial/ssu100.c | |||
@@ -70,7 +70,6 @@ static struct usb_driver ssu100_driver = { | |||
70 | .id_table = id_table, | 70 | .id_table = id_table, |
71 | .suspend = usb_serial_suspend, | 71 | .suspend = usb_serial_suspend, |
72 | .resume = usb_serial_resume, | 72 | .resume = usb_serial_resume, |
73 | .no_dynamic_id = 1, | ||
74 | .supports_autosuspend = 1, | 73 | .supports_autosuspend = 1, |
75 | }; | 74 | }; |
76 | 75 | ||
@@ -677,7 +676,6 @@ static struct usb_serial_driver ssu100_device = { | |||
677 | }, | 676 | }, |
678 | .description = DRIVER_DESC, | 677 | .description = DRIVER_DESC, |
679 | .id_table = id_table, | 678 | .id_table = id_table, |
680 | .usb_driver = &ssu100_driver, | ||
681 | .num_ports = 1, | 679 | .num_ports = 1, |
682 | .open = ssu100_open, | 680 | .open = ssu100_open, |
683 | .close = ssu100_close, | 681 | .close = ssu100_close, |
@@ -693,37 +691,26 @@ static struct usb_serial_driver ssu100_device = { | |||
693 | .disconnect = usb_serial_generic_disconnect, | 691 | .disconnect = usb_serial_generic_disconnect, |
694 | }; | 692 | }; |
695 | 693 | ||
694 | static struct usb_serial_driver * const serial_drivers[] = { | ||
695 | &ssu100_device, NULL | ||
696 | }; | ||
697 | |||
696 | static int __init ssu100_init(void) | 698 | static int __init ssu100_init(void) |
697 | { | 699 | { |
698 | int retval; | 700 | int retval; |
699 | 701 | ||
700 | dbg("%s", __func__); | 702 | dbg("%s", __func__); |
701 | 703 | ||
702 | /* register with usb-serial */ | 704 | retval = usb_serial_register_drivers(&ssu100_driver, serial_drivers); |
703 | retval = usb_serial_register(&ssu100_device); | 705 | if (retval == 0) |
704 | 706 | printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":" | |
705 | if (retval) | 707 | DRIVER_DESC "\n"); |
706 | goto failed_usb_sio_register; | ||
707 | |||
708 | retval = usb_register(&ssu100_driver); | ||
709 | if (retval) | ||
710 | goto failed_usb_register; | ||
711 | |||
712 | printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":" | ||
713 | DRIVER_DESC "\n"); | ||
714 | |||
715 | return 0; | ||
716 | |||
717 | failed_usb_register: | ||
718 | usb_serial_deregister(&ssu100_device); | ||
719 | failed_usb_sio_register: | ||
720 | return retval; | 708 | return retval; |
721 | } | 709 | } |
722 | 710 | ||
723 | static void __exit ssu100_exit(void) | 711 | static void __exit ssu100_exit(void) |
724 | { | 712 | { |
725 | usb_deregister(&ssu100_driver); | 713 | usb_serial_deregister_drivers(&ssu100_driver, serial_drivers); |
726 | usb_serial_deregister(&ssu100_device); | ||
727 | } | 714 | } |
728 | 715 | ||
729 | module_init(ssu100_init); | 716 | module_init(ssu100_init); |
diff --git a/drivers/usb/serial/symbolserial.c b/drivers/usb/serial/symbolserial.c index 50651cf4fc61..76cd9f2a08c0 100644 --- a/drivers/usb/serial/symbolserial.c +++ b/drivers/usb/serial/symbolserial.c | |||
@@ -287,7 +287,6 @@ static struct usb_driver symbol_driver = { | |||
287 | .probe = usb_serial_probe, | 287 | .probe = usb_serial_probe, |
288 | .disconnect = usb_serial_disconnect, | 288 | .disconnect = usb_serial_disconnect, |
289 | .id_table = id_table, | 289 | .id_table = id_table, |
290 | .no_dynamic_id = 1, | ||
291 | }; | 290 | }; |
292 | 291 | ||
293 | static struct usb_serial_driver symbol_device = { | 292 | static struct usb_serial_driver symbol_device = { |
@@ -296,7 +295,6 @@ static struct usb_serial_driver symbol_device = { | |||
296 | .name = "symbol", | 295 | .name = "symbol", |
297 | }, | 296 | }, |
298 | .id_table = id_table, | 297 | .id_table = id_table, |
299 | .usb_driver = &symbol_driver, | ||
300 | .num_ports = 1, | 298 | .num_ports = 1, |
301 | .attach = symbol_startup, | 299 | .attach = symbol_startup, |
302 | .open = symbol_open, | 300 | .open = symbol_open, |
@@ -307,23 +305,18 @@ static struct usb_serial_driver symbol_device = { | |||
307 | .unthrottle = symbol_unthrottle, | 305 | .unthrottle = symbol_unthrottle, |
308 | }; | 306 | }; |
309 | 307 | ||
308 | static struct usb_serial_driver * const serial_drivers[] = { | ||
309 | &symbol_device, NULL | ||
310 | }; | ||
311 | |||
310 | static int __init symbol_init(void) | 312 | static int __init symbol_init(void) |
311 | { | 313 | { |
312 | int retval; | 314 | return usb_serial_register_drivers(&symbol_driver, serial_drivers); |
313 | |||
314 | retval = usb_serial_register(&symbol_device); | ||
315 | if (retval) | ||
316 | return retval; | ||
317 | retval = usb_register(&symbol_driver); | ||
318 | if (retval) | ||
319 | usb_serial_deregister(&symbol_device); | ||
320 | return retval; | ||
321 | } | 315 | } |
322 | 316 | ||
323 | static void __exit symbol_exit(void) | 317 | static void __exit symbol_exit(void) |
324 | { | 318 | { |
325 | usb_deregister(&symbol_driver); | 319 | usb_serial_deregister_drivers(&symbol_driver, serial_drivers); |
326 | usb_serial_deregister(&symbol_device); | ||
327 | } | 320 | } |
328 | 321 | ||
329 | module_init(symbol_init); | 322 | module_init(symbol_init); |