Merge branch 'fix/misc' into for-linus
[pandora-kernel.git] / drivers / usb / serial / usb-serial.c
1 /*
2  * USB Serial Converter driver
3  *
4  * Copyright (C) 1999 - 2005 Greg Kroah-Hartman (greg@kroah.com)
5  * Copyright (C) 2000 Peter Berger (pberger@brimson.com)
6  * Copyright (C) 2000 Al Borchers (borchers@steinerpoint.com)
7  *
8  *      This program is free software; you can redistribute it and/or
9  *      modify it under the terms of the GNU General Public License version
10  *      2 as published by the Free Software Foundation.
11  *
12  * This driver was originally based on the ACM driver by Armin Fuerst (which was
13  * based on a driver by Brad Keryan)
14  *
15  * See Documentation/usb/usb-serial.txt for more information on using this
16  * driver
17  *
18  */
19
20 #include <linux/kernel.h>
21 #include <linux/errno.h>
22 #include <linux/init.h>
23 #include <linux/slab.h>
24 #include <linux/smp_lock.h>
25 #include <linux/tty.h>
26 #include <linux/tty_driver.h>
27 #include <linux/tty_flip.h>
28 #include <linux/module.h>
29 #include <linux/moduleparam.h>
30 #include <linux/seq_file.h>
31 #include <linux/spinlock.h>
32 #include <linux/mutex.h>
33 #include <linux/list.h>
34 #include <linux/uaccess.h>
35 #include <linux/usb.h>
36 #include <linux/usb/serial.h>
37 #include "pl2303.h"
38
39 /*
40  * Version Information
41  */
42 #define DRIVER_AUTHOR "Greg Kroah-Hartman, greg@kroah.com, http://www.kroah.com/linux/"
43 #define DRIVER_DESC "USB Serial Driver core"
44
45 static void port_free(struct usb_serial_port *port);
46
47 /* Driver structure we register with the USB core */
48 static struct usb_driver usb_serial_driver = {
49         .name =         "usbserial",
50         .probe =        usb_serial_probe,
51         .disconnect =   usb_serial_disconnect,
52         .suspend =      usb_serial_suspend,
53         .resume =       usb_serial_resume,
54         .no_dynamic_id =        1,
55 };
56
57 /* There is no MODULE_DEVICE_TABLE for usbserial.c.  Instead
58    the MODULE_DEVICE_TABLE declarations in each serial driver
59    cause the "hotplug" program to pull in whatever module is necessary
60    via modprobe, and modprobe will load usbserial because the serial
61    drivers depend on it.
62 */
63
64 static int debug;
65 /* initially all NULL */
66 static struct usb_serial *serial_table[SERIAL_TTY_MINORS];
67 static DEFINE_MUTEX(table_lock);
68 static LIST_HEAD(usb_serial_driver_list);
69
70 struct usb_serial *usb_serial_get_by_index(unsigned index)
71 {
72         struct usb_serial *serial;
73
74         mutex_lock(&table_lock);
75         serial = serial_table[index];
76
77         if (serial)
78                 kref_get(&serial->kref);
79         mutex_unlock(&table_lock);
80         return serial;
81 }
82
83 static struct usb_serial *get_free_serial(struct usb_serial *serial,
84                                         int num_ports, unsigned int *minor)
85 {
86         unsigned int i, j;
87         int good_spot;
88
89         dbg("%s %d", __func__, num_ports);
90
91         *minor = 0;
92         mutex_lock(&table_lock);
93         for (i = 0; i < SERIAL_TTY_MINORS; ++i) {
94                 if (serial_table[i])
95                         continue;
96
97                 good_spot = 1;
98                 for (j = 1; j <= num_ports-1; ++j)
99                         if ((i+j >= SERIAL_TTY_MINORS) || (serial_table[i+j])) {
100                                 good_spot = 0;
101                                 i += j;
102                                 break;
103                         }
104                 if (good_spot == 0)
105                         continue;
106
107                 *minor = i;
108                 j = 0;
109                 dbg("%s - minor base = %d", __func__, *minor);
110                 for (i = *minor; (i < (*minor + num_ports)) && (i < SERIAL_TTY_MINORS); ++i) {
111                         serial_table[i] = serial;
112                         serial->port[j++]->number = i;
113                 }
114                 mutex_unlock(&table_lock);
115                 return serial;
116         }
117         mutex_unlock(&table_lock);
118         return NULL;
119 }
120
121 static void return_serial(struct usb_serial *serial)
122 {
123         int i;
124
125         dbg("%s", __func__);
126
127         for (i = 0; i < serial->num_ports; ++i)
128                 serial_table[serial->minor + i] = NULL;
129 }
130
131 static void destroy_serial(struct kref *kref)
132 {
133         struct usb_serial *serial;
134         struct usb_serial_port *port;
135         int i;
136
137         serial = to_usb_serial(kref);
138
139         dbg("%s - %s", __func__, serial->type->description);
140
141         /* return the minor range that this device had */
142         if (serial->minor != SERIAL_TTY_NO_MINOR)
143                 return_serial(serial);
144
145         serial->type->release(serial);
146
147         for (i = 0; i < serial->num_ports; ++i) {
148                 port = serial->port[i];
149                 if (port)
150                         put_device(&port->dev);
151         }
152
153         /* If this is a "fake" port, we have to clean it up here, as it will
154          * not get cleaned up in port_release() as it was never registered with
155          * the driver core */
156         if (serial->num_ports < serial->num_port_pointers) {
157                 for (i = serial->num_ports;
158                                         i < serial->num_port_pointers; ++i) {
159                         port = serial->port[i];
160                         if (port)
161                                 port_free(port);
162                 }
163         }
164
165         usb_put_dev(serial->dev);
166
167         /* free up any memory that we allocated */
168         kfree(serial);
169 }
170
171 void usb_serial_put(struct usb_serial *serial)
172 {
173         mutex_lock(&table_lock);
174         kref_put(&serial->kref, destroy_serial);
175         mutex_unlock(&table_lock);
176 }
177
178 /*****************************************************************************
179  * Driver tty interface functions
180  *****************************************************************************/
181 static int serial_open (struct tty_struct *tty, struct file *filp)
182 {
183         struct usb_serial *serial;
184         struct usb_serial_port *port;
185         unsigned int portNumber;
186         int retval = 0;
187
188         dbg("%s", __func__);
189
190         /* get the serial object associated with this tty pointer */
191         serial = usb_serial_get_by_index(tty->index);
192         if (!serial) {
193                 tty->driver_data = NULL;
194                 return -ENODEV;
195         }
196
197         mutex_lock(&serial->disc_mutex);
198         portNumber = tty->index - serial->minor;
199         port = serial->port[portNumber];
200         if (!port || serial->disconnected)
201                 retval = -ENODEV;
202         else
203                 get_device(&port->dev);
204         /*
205          * Note: Our locking order requirement does not allow port->mutex
206          * to be acquired while serial->disc_mutex is held.
207          */
208         mutex_unlock(&serial->disc_mutex);
209         if (retval)
210                 goto bailout_serial_put;
211
212         if (mutex_lock_interruptible(&port->mutex)) {
213                 retval = -ERESTARTSYS;
214                 goto bailout_port_put;
215         }
216
217         ++port->port.count;
218
219         /* set up our port structure making the tty driver
220          * remember our port object, and us it */
221         tty->driver_data = port;
222         tty_port_tty_set(&port->port, tty);
223
224         /* If the console is attached, the device is already open */
225         if (port->port.count == 1 && !port->console) {
226
227                 /* lock this module before we call it
228                  * this may fail, which means we must bail out,
229                  * safe because we are called with BKL held */
230                 if (!try_module_get(serial->type->driver.owner)) {
231                         retval = -ENODEV;
232                         goto bailout_mutex_unlock;
233                 }
234
235                 mutex_lock(&serial->disc_mutex);
236                 if (serial->disconnected)
237                         retval = -ENODEV;
238                 else
239                         retval = usb_autopm_get_interface(serial->interface);
240                 if (retval)
241                         goto bailout_module_put;
242
243                 /* only call the device specific open if this
244                  * is the first time the port is opened */
245                 retval = serial->type->open(tty, port, filp);
246                 if (retval)
247                         goto bailout_interface_put;
248                 mutex_unlock(&serial->disc_mutex);
249         }
250         mutex_unlock(&port->mutex);
251         /* Now do the correct tty layer semantics */
252         retval = tty_port_block_til_ready(&port->port, tty, filp);
253         if (retval == 0)
254                 return 0;
255
256 bailout_interface_put:
257         usb_autopm_put_interface(serial->interface);
258 bailout_module_put:
259         mutex_unlock(&serial->disc_mutex);
260         module_put(serial->type->driver.owner);
261 bailout_mutex_unlock:
262         port->port.count = 0;
263         tty->driver_data = NULL;
264         tty_port_tty_set(&port->port, NULL);
265         mutex_unlock(&port->mutex);
266 bailout_port_put:
267         put_device(&port->dev);
268 bailout_serial_put:
269         usb_serial_put(serial);
270         return retval;
271 }
272
273 /**
274  *      serial_do_down          -       shut down hardware
275  *      @port: port to shut down
276  *
277  *      Shut down a USB port unless it is the console. We never shut down the
278  *      console hardware as it will always be in use.
279  *
280  *      Don't free any resources at this point
281  */
282 static void serial_do_down(struct usb_serial_port *port)
283 {
284         struct usb_serial_driver *drv = port->serial->type;
285         struct usb_serial *serial;
286         struct module *owner;
287
288         /* The console is magical, do not hang up the console hardware
289            or there will be tears */
290         if (port->console)
291                 return;
292
293         mutex_lock(&port->mutex);
294         serial = port->serial;
295         owner = serial->type->driver.owner;
296
297         if (drv->close)
298                 drv->close(port);
299
300         mutex_unlock(&port->mutex);
301 }
302
303 /**
304  *      serial_do_free          -       free resources post close/hangup
305  *      @port: port to free up
306  *
307  *      Do the resource freeing and refcount dropping for the port. We must
308  *      be careful about ordering and we must avoid freeing up the console.
309  */
310
311 static void serial_do_free(struct usb_serial_port *port)
312 {
313         struct usb_serial *serial;
314         struct module *owner;
315
316         /* The console is magical, do not hang up the console hardware
317            or there will be tears */
318         if (port->console)
319                 return;
320
321         serial = port->serial;
322         owner = serial->type->driver.owner;
323         put_device(&port->dev);
324         /* Mustn't dereference port any more */
325         mutex_lock(&serial->disc_mutex);
326         if (!serial->disconnected)
327                 usb_autopm_put_interface(serial->interface);
328         mutex_unlock(&serial->disc_mutex);
329         usb_serial_put(serial);
330         /* Mustn't dereference serial any more */
331         module_put(owner);
332 }
333
334 static void serial_close(struct tty_struct *tty, struct file *filp)
335 {
336         struct usb_serial_port *port = tty->driver_data;
337
338         if (!port)
339                 return;
340
341         dbg("%s - port %d", __func__, port->number);
342
343
344         if (tty_port_close_start(&port->port, tty, filp) == 0)
345                 return;
346
347         serial_do_down(port);           
348         tty_port_close_end(&port->port, tty);
349         tty_port_tty_set(&port->port, NULL);
350         serial_do_free(port);
351 }
352
353 static void serial_hangup(struct tty_struct *tty)
354 {
355         struct usb_serial_port *port = tty->driver_data;
356         serial_do_down(port);
357         tty_port_hangup(&port->port);
358         serial_do_free(port);
359 }
360
361 static int serial_write(struct tty_struct *tty, const unsigned char *buf,
362                                                                 int count)
363 {
364         struct usb_serial_port *port = tty->driver_data;
365         int retval = -ENODEV;
366
367         if (port->serial->dev->state == USB_STATE_NOTATTACHED)
368                 goto exit;
369
370         dbg("%s - port %d, %d byte(s)", __func__, port->number, count);
371
372         /* count is managed under the mutex lock for the tty so cannot
373            drop to zero until after the last close completes */
374         WARN_ON(!port->port.count);
375
376         /* pass on to the driver specific version of this function */
377         retval = port->serial->type->write(tty, port, buf, count);
378
379 exit:
380         return retval;
381 }
382
383 static int serial_write_room(struct tty_struct *tty)
384 {
385         struct usb_serial_port *port = tty->driver_data;
386         dbg("%s - port %d", __func__, port->number);
387         WARN_ON(!port->port.count);
388         /* pass on to the driver specific version of this function */
389         return port->serial->type->write_room(tty);
390 }
391
392 static int serial_chars_in_buffer(struct tty_struct *tty)
393 {
394         struct usb_serial_port *port = tty->driver_data;
395         dbg("%s = port %d", __func__, port->number);
396
397         WARN_ON(!port->port.count);
398         /* if the device was unplugged then any remaining characters
399            fell out of the connector ;) */
400         if (port->serial->disconnected)
401                 return 0;
402         /* pass on to the driver specific version of this function */
403         return port->serial->type->chars_in_buffer(tty);
404 }
405
406 static void serial_throttle(struct tty_struct *tty)
407 {
408         struct usb_serial_port *port = tty->driver_data;
409         dbg("%s - port %d", __func__, port->number);
410
411         WARN_ON(!port->port.count);
412         /* pass on to the driver specific version of this function */
413         if (port->serial->type->throttle)
414                 port->serial->type->throttle(tty);
415 }
416
417 static void serial_unthrottle(struct tty_struct *tty)
418 {
419         struct usb_serial_port *port = tty->driver_data;
420         dbg("%s - port %d", __func__, port->number);
421
422         WARN_ON(!port->port.count);
423         /* pass on to the driver specific version of this function */
424         if (port->serial->type->unthrottle)
425                 port->serial->type->unthrottle(tty);
426 }
427
428 static int serial_ioctl(struct tty_struct *tty, struct file *file,
429                                         unsigned int cmd, unsigned long arg)
430 {
431         struct usb_serial_port *port = tty->driver_data;
432         int retval = -ENODEV;
433
434         dbg("%s - port %d, cmd 0x%.4x", __func__, port->number, cmd);
435
436         WARN_ON(!port->port.count);
437
438         /* pass on to the driver specific version of this function
439            if it is available */
440         if (port->serial->type->ioctl) {
441                 retval = port->serial->type->ioctl(tty, file, cmd, arg);
442         } else
443                 retval = -ENOIOCTLCMD;
444         return retval;
445 }
446
447 static void serial_set_termios(struct tty_struct *tty, struct ktermios *old)
448 {
449         struct usb_serial_port *port = tty->driver_data;
450         dbg("%s - port %d", __func__, port->number);
451
452         WARN_ON(!port->port.count);
453         /* pass on to the driver specific version of this function
454            if it is available */
455         if (port->serial->type->set_termios)
456                 port->serial->type->set_termios(tty, port, old);
457         else
458                 tty_termios_copy_hw(tty->termios, old);
459 }
460
461 static int serial_break(struct tty_struct *tty, int break_state)
462 {
463         struct usb_serial_port *port = tty->driver_data;
464
465         dbg("%s - port %d", __func__, port->number);
466
467         WARN_ON(!port->port.count);
468         /* pass on to the driver specific version of this function
469            if it is available */
470         if (port->serial->type->break_ctl)
471                 port->serial->type->break_ctl(tty, break_state);
472         return 0;
473 }
474
475 static int serial_proc_show(struct seq_file *m, void *v)
476 {
477         struct usb_serial *serial;
478         int i;
479         char tmp[40];
480
481         dbg("%s", __func__);
482         seq_puts(m, "usbserinfo:1.0 driver:2.0\n");
483         for (i = 0; i < SERIAL_TTY_MINORS; ++i) {
484                 serial = usb_serial_get_by_index(i);
485                 if (serial == NULL)
486                         continue;
487
488                 seq_printf(m, "%d:", i);
489                 if (serial->type->driver.owner)
490                         seq_printf(m, " module:%s",
491                                 module_name(serial->type->driver.owner));
492                 seq_printf(m, " name:\"%s\"",
493                                 serial->type->description);
494                 seq_printf(m, " vendor:%04x product:%04x",
495                         le16_to_cpu(serial->dev->descriptor.idVendor),
496                         le16_to_cpu(serial->dev->descriptor.idProduct));
497                 seq_printf(m, " num_ports:%d", serial->num_ports);
498                 seq_printf(m, " port:%d", i - serial->minor + 1);
499                 usb_make_path(serial->dev, tmp, sizeof(tmp));
500                 seq_printf(m, " path:%s", tmp);
501
502                 seq_putc(m, '\n');
503                 usb_serial_put(serial);
504         }
505         return 0;
506 }
507
508 static int serial_proc_open(struct inode *inode, struct file *file)
509 {
510         return single_open(file, serial_proc_show, NULL);
511 }
512
513 static const struct file_operations serial_proc_fops = {
514         .owner          = THIS_MODULE,
515         .open           = serial_proc_open,
516         .read           = seq_read,
517         .llseek         = seq_lseek,
518         .release        = single_release,
519 };
520
521 static int serial_tiocmget(struct tty_struct *tty, struct file *file)
522 {
523         struct usb_serial_port *port = tty->driver_data;
524
525         dbg("%s - port %d", __func__, port->number);
526
527         WARN_ON(!port->port.count);
528         if (port->serial->type->tiocmget)
529                 return port->serial->type->tiocmget(tty, file);
530         return -EINVAL;
531 }
532
533 static int serial_tiocmset(struct tty_struct *tty, struct file *file,
534                             unsigned int set, unsigned int clear)
535 {
536         struct usb_serial_port *port = tty->driver_data;
537
538         dbg("%s - port %d", __func__, port->number);
539
540         WARN_ON(!port->port.count);
541         if (port->serial->type->tiocmset)
542                 return port->serial->type->tiocmset(tty, file, set, clear);
543         return -EINVAL;
544 }
545
546 /*
547  * We would be calling tty_wakeup here, but unfortunately some line
548  * disciplines have an annoying habit of calling tty->write from
549  * the write wakeup callback (e.g. n_hdlc.c).
550  */
551 void usb_serial_port_softint(struct usb_serial_port *port)
552 {
553         schedule_work(&port->work);
554 }
555 EXPORT_SYMBOL_GPL(usb_serial_port_softint);
556
557 static void usb_serial_port_work(struct work_struct *work)
558 {
559         struct usb_serial_port *port =
560                 container_of(work, struct usb_serial_port, work);
561         struct tty_struct *tty;
562
563         dbg("%s - port %d", __func__, port->number);
564
565         tty = tty_port_tty_get(&port->port);
566         if (!tty)
567                 return;
568
569         tty_wakeup(tty);
570         tty_kref_put(tty);
571 }
572
573 static void port_release(struct device *dev)
574 {
575         struct usb_serial_port *port = to_usb_serial_port(dev);
576
577         dbg ("%s - %s", __func__, dev_name(dev));
578         port_free(port);
579 }
580
581 static void kill_traffic(struct usb_serial_port *port)
582 {
583         usb_kill_urb(port->read_urb);
584         usb_kill_urb(port->write_urb);
585         /*
586          * This is tricky.
587          * Some drivers submit the read_urb in the
588          * handler for the write_urb or vice versa
589          * this order determines the order in which
590          * usb_kill_urb() must be used to reliably
591          * kill the URBs. As it is unknown here,
592          * both orders must be used in turn.
593          * The call below is not redundant.
594          */
595         usb_kill_urb(port->read_urb);
596         usb_kill_urb(port->interrupt_in_urb);
597         usb_kill_urb(port->interrupt_out_urb);
598 }
599
600 static void port_free(struct usb_serial_port *port)
601 {
602         /*
603          * Stop all the traffic before cancelling the work, so that
604          * nobody will restart it by calling usb_serial_port_softint.
605          */
606         kill_traffic(port);
607         cancel_work_sync(&port->work);
608
609         usb_free_urb(port->read_urb);
610         usb_free_urb(port->write_urb);
611         usb_free_urb(port->interrupt_in_urb);
612         usb_free_urb(port->interrupt_out_urb);
613         kfree(port->bulk_in_buffer);
614         kfree(port->bulk_out_buffer);
615         kfree(port->interrupt_in_buffer);
616         kfree(port->interrupt_out_buffer);
617         kfree(port);
618 }
619
620 static struct usb_serial *create_serial(struct usb_device *dev,
621                                         struct usb_interface *interface,
622                                         struct usb_serial_driver *driver)
623 {
624         struct usb_serial *serial;
625
626         serial = kzalloc(sizeof(*serial), GFP_KERNEL);
627         if (!serial) {
628                 dev_err(&dev->dev, "%s - out of memory\n", __func__);
629                 return NULL;
630         }
631         serial->dev = usb_get_dev(dev);
632         serial->type = driver;
633         serial->interface = interface;
634         kref_init(&serial->kref);
635         mutex_init(&serial->disc_mutex);
636         serial->minor = SERIAL_TTY_NO_MINOR;
637
638         return serial;
639 }
640
641 static const struct usb_device_id *match_dynamic_id(struct usb_interface *intf,
642                                             struct usb_serial_driver *drv)
643 {
644         struct usb_dynid *dynid;
645
646         spin_lock(&drv->dynids.lock);
647         list_for_each_entry(dynid, &drv->dynids.list, node) {
648                 if (usb_match_one_id(intf, &dynid->id)) {
649                         spin_unlock(&drv->dynids.lock);
650                         return &dynid->id;
651                 }
652         }
653         spin_unlock(&drv->dynids.lock);
654         return NULL;
655 }
656
657 static const struct usb_device_id *get_iface_id(struct usb_serial_driver *drv,
658                                                 struct usb_interface *intf)
659 {
660         const struct usb_device_id *id;
661
662         id = usb_match_id(intf, drv->id_table);
663         if (id) {
664                 dbg("static descriptor matches");
665                 goto exit;
666         }
667         id = match_dynamic_id(intf, drv);
668         if (id)
669                 dbg("dynamic descriptor matches");
670 exit:
671         return id;
672 }
673
674 static struct usb_serial_driver *search_serial_device(
675                                         struct usb_interface *iface)
676 {
677         const struct usb_device_id *id;
678         struct usb_serial_driver *drv;
679
680         /* Check if the usb id matches a known device */
681         list_for_each_entry(drv, &usb_serial_driver_list, driver_list) {
682                 id = get_iface_id(drv, iface);
683                 if (id)
684                         return drv;
685         }
686
687         return NULL;
688 }
689
690 static int serial_carrier_raised(struct tty_port *port)
691 {
692         struct usb_serial_port *p = container_of(port, struct usb_serial_port, port);
693         struct usb_serial_driver *drv = p->serial->type;
694         if (drv->carrier_raised)
695                 return drv->carrier_raised(p);
696         /* No carrier control - don't block */
697         return 1;       
698 }
699
700 static void serial_dtr_rts(struct tty_port *port, int on)
701 {
702         struct usb_serial_port *p = container_of(port, struct usb_serial_port, port);
703         struct usb_serial_driver *drv = p->serial->type;
704         if (drv->dtr_rts)
705                 drv->dtr_rts(p, on);
706 }
707
708 static const struct tty_port_operations serial_port_ops = {
709         .carrier_raised = serial_carrier_raised,
710         .dtr_rts = serial_dtr_rts,
711 };
712
713 int usb_serial_probe(struct usb_interface *interface,
714                                const struct usb_device_id *id)
715 {
716         struct usb_device *dev = interface_to_usbdev(interface);
717         struct usb_serial *serial = NULL;
718         struct usb_serial_port *port;
719         struct usb_host_interface *iface_desc;
720         struct usb_endpoint_descriptor *endpoint;
721         struct usb_endpoint_descriptor *interrupt_in_endpoint[MAX_NUM_PORTS];
722         struct usb_endpoint_descriptor *interrupt_out_endpoint[MAX_NUM_PORTS];
723         struct usb_endpoint_descriptor *bulk_in_endpoint[MAX_NUM_PORTS];
724         struct usb_endpoint_descriptor *bulk_out_endpoint[MAX_NUM_PORTS];
725         struct usb_serial_driver *type = NULL;
726         int retval;
727         unsigned int minor;
728         int buffer_size;
729         int i;
730         int num_interrupt_in = 0;
731         int num_interrupt_out = 0;
732         int num_bulk_in = 0;
733         int num_bulk_out = 0;
734         int num_ports = 0;
735         int max_endpoints;
736
737         lock_kernel(); /* guard against unloading a serial driver module */
738         type = search_serial_device(interface);
739         if (!type) {
740                 unlock_kernel();
741                 dbg("none matched");
742                 return -ENODEV;
743         }
744
745         serial = create_serial(dev, interface, type);
746         if (!serial) {
747                 unlock_kernel();
748                 dev_err(&interface->dev, "%s - out of memory\n", __func__);
749                 return -ENOMEM;
750         }
751
752         /* if this device type has a probe function, call it */
753         if (type->probe) {
754                 const struct usb_device_id *id;
755
756                 if (!try_module_get(type->driver.owner)) {
757                         unlock_kernel();
758                         dev_err(&interface->dev,
759                                 "module get failed, exiting\n");
760                         kfree(serial);
761                         return -EIO;
762                 }
763
764                 id = get_iface_id(type, interface);
765                 retval = type->probe(serial, id);
766                 module_put(type->driver.owner);
767
768                 if (retval) {
769                         unlock_kernel();
770                         dbg("sub driver rejected device");
771                         kfree(serial);
772                         return retval;
773                 }
774         }
775
776         /* descriptor matches, let's find the endpoints needed */
777         /* check out the endpoints */
778         iface_desc = interface->cur_altsetting;
779         for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) {
780                 endpoint = &iface_desc->endpoint[i].desc;
781
782                 if (usb_endpoint_is_bulk_in(endpoint)) {
783                         /* we found a bulk in endpoint */
784                         dbg("found bulk in on endpoint %d", i);
785                         bulk_in_endpoint[num_bulk_in] = endpoint;
786                         ++num_bulk_in;
787                 }
788
789                 if (usb_endpoint_is_bulk_out(endpoint)) {
790                         /* we found a bulk out endpoint */
791                         dbg("found bulk out on endpoint %d", i);
792                         bulk_out_endpoint[num_bulk_out] = endpoint;
793                         ++num_bulk_out;
794                 }
795
796                 if (usb_endpoint_is_int_in(endpoint)) {
797                         /* we found a interrupt in endpoint */
798                         dbg("found interrupt in on endpoint %d", i);
799                         interrupt_in_endpoint[num_interrupt_in] = endpoint;
800                         ++num_interrupt_in;
801                 }
802
803                 if (usb_endpoint_is_int_out(endpoint)) {
804                         /* we found an interrupt out endpoint */
805                         dbg("found interrupt out on endpoint %d", i);
806                         interrupt_out_endpoint[num_interrupt_out] = endpoint;
807                         ++num_interrupt_out;
808                 }
809         }
810
811 #if defined(CONFIG_USB_SERIAL_PL2303) || defined(CONFIG_USB_SERIAL_PL2303_MODULE)
812         /* BEGIN HORRIBLE HACK FOR PL2303 */
813         /* this is needed due to the looney way its endpoints are set up */
814         if (((le16_to_cpu(dev->descriptor.idVendor) == PL2303_VENDOR_ID) &&
815              (le16_to_cpu(dev->descriptor.idProduct) == PL2303_PRODUCT_ID)) ||
816             ((le16_to_cpu(dev->descriptor.idVendor) == ATEN_VENDOR_ID) &&
817              (le16_to_cpu(dev->descriptor.idProduct) == ATEN_PRODUCT_ID)) ||
818             ((le16_to_cpu(dev->descriptor.idVendor) == ALCOR_VENDOR_ID) &&
819              (le16_to_cpu(dev->descriptor.idProduct) == ALCOR_PRODUCT_ID)) ||
820             ((le16_to_cpu(dev->descriptor.idVendor) == SIEMENS_VENDOR_ID) &&
821              (le16_to_cpu(dev->descriptor.idProduct) == SIEMENS_PRODUCT_ID_EF81))) {
822                 if (interface != dev->actconfig->interface[0]) {
823                         /* check out the endpoints of the other interface*/
824                         iface_desc = dev->actconfig->interface[0]->cur_altsetting;
825                         for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) {
826                                 endpoint = &iface_desc->endpoint[i].desc;
827                                 if (usb_endpoint_is_int_in(endpoint)) {
828                                         /* we found a interrupt in endpoint */
829                                         dbg("found interrupt in for Prolific device on separate interface");
830                                         interrupt_in_endpoint[num_interrupt_in] = endpoint;
831                                         ++num_interrupt_in;
832                                 }
833                         }
834                 }
835
836                 /* Now make sure the PL-2303 is configured correctly.
837                  * If not, give up now and hope this hack will work
838                  * properly during a later invocation of usb_serial_probe
839                  */
840                 if (num_bulk_in == 0 || num_bulk_out == 0) {
841                         unlock_kernel();
842                         dev_info(&interface->dev, "PL-2303 hack: descriptors matched but endpoints did not\n");
843                         kfree(serial);
844                         return -ENODEV;
845                 }
846         }
847         /* END HORRIBLE HACK FOR PL2303 */
848 #endif
849
850 #ifdef CONFIG_USB_SERIAL_GENERIC
851         if (type == &usb_serial_generic_device) {
852                 num_ports = num_bulk_out;
853                 if (num_ports == 0) {
854                         unlock_kernel();
855                         dev_err(&interface->dev,
856                             "Generic device with no bulk out, not allowed.\n");
857                         kfree(serial);
858                         return -EIO;
859                 }
860         }
861 #endif
862         if (!num_ports) {
863                 /* if this device type has a calc_num_ports function, call it */
864                 if (type->calc_num_ports) {
865                         if (!try_module_get(type->driver.owner)) {
866                                 unlock_kernel();
867                                 dev_err(&interface->dev,
868                                         "module get failed, exiting\n");
869                                 kfree(serial);
870                                 return -EIO;
871                         }
872                         num_ports = type->calc_num_ports(serial);
873                         module_put(type->driver.owner);
874                 }
875                 if (!num_ports)
876                         num_ports = type->num_ports;
877         }
878
879         serial->num_ports = num_ports;
880         serial->num_bulk_in = num_bulk_in;
881         serial->num_bulk_out = num_bulk_out;
882         serial->num_interrupt_in = num_interrupt_in;
883         serial->num_interrupt_out = num_interrupt_out;
884
885         /* found all that we need */
886         dev_info(&interface->dev, "%s converter detected\n",
887                         type->description);
888
889         /* create our ports, we need as many as the max endpoints */
890         /* we don't use num_ports here because some devices have more
891            endpoint pairs than ports */
892         max_endpoints = max(num_bulk_in, num_bulk_out);
893         max_endpoints = max(max_endpoints, num_interrupt_in);
894         max_endpoints = max(max_endpoints, num_interrupt_out);
895         max_endpoints = max(max_endpoints, (int)serial->num_ports);
896         serial->num_port_pointers = max_endpoints;
897         unlock_kernel();
898
899         dbg("%s - setting up %d port structures for this device",
900                                                 __func__, max_endpoints);
901         for (i = 0; i < max_endpoints; ++i) {
902                 port = kzalloc(sizeof(struct usb_serial_port), GFP_KERNEL);
903                 if (!port)
904                         goto probe_error;
905                 tty_port_init(&port->port);
906                 port->port.ops = &serial_port_ops;
907                 port->serial = serial;
908                 spin_lock_init(&port->lock);
909                 mutex_init(&port->mutex);
910                 INIT_WORK(&port->work, usb_serial_port_work);
911                 serial->port[i] = port;
912         }
913
914         /* set up the endpoint information */
915         for (i = 0; i < num_bulk_in; ++i) {
916                 endpoint = bulk_in_endpoint[i];
917                 port = serial->port[i];
918                 port->read_urb = usb_alloc_urb(0, GFP_KERNEL);
919                 if (!port->read_urb) {
920                         dev_err(&interface->dev, "No free urbs available\n");
921                         goto probe_error;
922                 }
923                 buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);
924                 port->bulk_in_size = buffer_size;
925                 port->bulk_in_endpointAddress = endpoint->bEndpointAddress;
926                 port->bulk_in_buffer = kmalloc(buffer_size, GFP_KERNEL);
927                 if (!port->bulk_in_buffer) {
928                         dev_err(&interface->dev,
929                                         "Couldn't allocate bulk_in_buffer\n");
930                         goto probe_error;
931                 }
932                 usb_fill_bulk_urb(port->read_urb, dev,
933                                 usb_rcvbulkpipe(dev,
934                                                 endpoint->bEndpointAddress),
935                                 port->bulk_in_buffer, buffer_size,
936                                 serial->type->read_bulk_callback, port);
937         }
938
939         for (i = 0; i < num_bulk_out; ++i) {
940                 endpoint = bulk_out_endpoint[i];
941                 port = serial->port[i];
942                 port->write_urb = usb_alloc_urb(0, GFP_KERNEL);
943                 if (!port->write_urb) {
944                         dev_err(&interface->dev, "No free urbs available\n");
945                         goto probe_error;
946                 }
947                 buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);
948                 port->bulk_out_size = buffer_size;
949                 port->bulk_out_endpointAddress = endpoint->bEndpointAddress;
950                 port->bulk_out_buffer = kmalloc(buffer_size, GFP_KERNEL);
951                 if (!port->bulk_out_buffer) {
952                         dev_err(&interface->dev,
953                                         "Couldn't allocate bulk_out_buffer\n");
954                         goto probe_error;
955                 }
956                 usb_fill_bulk_urb(port->write_urb, dev,
957                                 usb_sndbulkpipe(dev,
958                                         endpoint->bEndpointAddress),
959                                 port->bulk_out_buffer, buffer_size,
960                                 serial->type->write_bulk_callback, port);
961         }
962
963         if (serial->type->read_int_callback) {
964                 for (i = 0; i < num_interrupt_in; ++i) {
965                         endpoint = interrupt_in_endpoint[i];
966                         port = serial->port[i];
967                         port->interrupt_in_urb = usb_alloc_urb(0, GFP_KERNEL);
968                         if (!port->interrupt_in_urb) {
969                                 dev_err(&interface->dev,
970                                                 "No free urbs available\n");
971                                 goto probe_error;
972                         }
973                         buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);
974                         port->interrupt_in_endpointAddress =
975                                                 endpoint->bEndpointAddress;
976                         port->interrupt_in_buffer = kmalloc(buffer_size,
977                                                                 GFP_KERNEL);
978                         if (!port->interrupt_in_buffer) {
979                                 dev_err(&interface->dev,
980                                     "Couldn't allocate interrupt_in_buffer\n");
981                                 goto probe_error;
982                         }
983                         usb_fill_int_urb(port->interrupt_in_urb, dev,
984                                 usb_rcvintpipe(dev,
985                                                 endpoint->bEndpointAddress),
986                                 port->interrupt_in_buffer, buffer_size,
987                                 serial->type->read_int_callback, port,
988                                 endpoint->bInterval);
989                 }
990         } else if (num_interrupt_in) {
991                 dbg("the device claims to support interrupt in transfers, but read_int_callback is not defined");
992         }
993
994         if (serial->type->write_int_callback) {
995                 for (i = 0; i < num_interrupt_out; ++i) {
996                         endpoint = interrupt_out_endpoint[i];
997                         port = serial->port[i];
998                         port->interrupt_out_urb = usb_alloc_urb(0, GFP_KERNEL);
999                         if (!port->interrupt_out_urb) {
1000                                 dev_err(&interface->dev,
1001                                                 "No free urbs available\n");
1002                                 goto probe_error;
1003                         }
1004                         buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);
1005                         port->interrupt_out_size = buffer_size;
1006                         port->interrupt_out_endpointAddress =
1007                                                 endpoint->bEndpointAddress;
1008                         port->interrupt_out_buffer = kmalloc(buffer_size,
1009                                                                 GFP_KERNEL);
1010                         if (!port->interrupt_out_buffer) {
1011                                 dev_err(&interface->dev,
1012                                   "Couldn't allocate interrupt_out_buffer\n");
1013                                 goto probe_error;
1014                         }
1015                         usb_fill_int_urb(port->interrupt_out_urb, dev,
1016                                 usb_sndintpipe(dev,
1017                                                   endpoint->bEndpointAddress),
1018                                 port->interrupt_out_buffer, buffer_size,
1019                                 serial->type->write_int_callback, port,
1020                                 endpoint->bInterval);
1021                 }
1022         } else if (num_interrupt_out) {
1023                 dbg("the device claims to support interrupt out transfers, but write_int_callback is not defined");
1024         }
1025
1026         /* if this device type has an attach function, call it */
1027         if (type->attach) {
1028                 if (!try_module_get(type->driver.owner)) {
1029                         dev_err(&interface->dev,
1030                                         "module get failed, exiting\n");
1031                         goto probe_error;
1032                 }
1033                 retval = type->attach(serial);
1034                 module_put(type->driver.owner);
1035                 if (retval < 0)
1036                         goto probe_error;
1037                 if (retval > 0) {
1038                         /* quietly accept this device, but don't bind to a
1039                            serial port as it's about to disappear */
1040                         serial->num_ports = 0;
1041                         goto exit;
1042                 }
1043         }
1044
1045         if (get_free_serial(serial, num_ports, &minor) == NULL) {
1046                 dev_err(&interface->dev, "No more free serial devices\n");
1047                 goto probe_error;
1048         }
1049         serial->minor = minor;
1050
1051         /* register all of the individual ports with the driver core */
1052         for (i = 0; i < num_ports; ++i) {
1053                 port = serial->port[i];
1054                 port->dev.parent = &interface->dev;
1055                 port->dev.driver = NULL;
1056                 port->dev.bus = &usb_serial_bus_type;
1057                 port->dev.release = &port_release;
1058
1059                 dev_set_name(&port->dev, "ttyUSB%d", port->number);
1060                 dbg ("%s - registering %s", __func__, dev_name(&port->dev));
1061                 port->dev_state = PORT_REGISTERING;
1062                 retval = device_register(&port->dev);
1063                 if (retval) {
1064                         dev_err(&port->dev, "Error registering port device, "
1065                                 "continuing\n");
1066                         port->dev_state = PORT_UNREGISTERED;
1067                 } else {
1068                         port->dev_state = PORT_REGISTERED;
1069                 }
1070         }
1071
1072         usb_serial_console_init(debug, minor);
1073
1074 exit:
1075         /* success */
1076         usb_set_intfdata(interface, serial);
1077         return 0;
1078
1079 probe_error:
1080         for (i = 0; i < num_bulk_in; ++i) {
1081                 port = serial->port[i];
1082                 if (!port)
1083                         continue;
1084                 usb_free_urb(port->read_urb);
1085                 kfree(port->bulk_in_buffer);
1086         }
1087         for (i = 0; i < num_bulk_out; ++i) {
1088                 port = serial->port[i];
1089                 if (!port)
1090                         continue;
1091                 usb_free_urb(port->write_urb);
1092                 kfree(port->bulk_out_buffer);
1093         }
1094         for (i = 0; i < num_interrupt_in; ++i) {
1095                 port = serial->port[i];
1096                 if (!port)
1097                         continue;
1098                 usb_free_urb(port->interrupt_in_urb);
1099                 kfree(port->interrupt_in_buffer);
1100         }
1101         for (i = 0; i < num_interrupt_out; ++i) {
1102                 port = serial->port[i];
1103                 if (!port)
1104                         continue;
1105                 usb_free_urb(port->interrupt_out_urb);
1106                 kfree(port->interrupt_out_buffer);
1107         }
1108
1109         /* free up any memory that we allocated */
1110         for (i = 0; i < serial->num_port_pointers; ++i)
1111                 kfree(serial->port[i]);
1112         kfree(serial);
1113         return -EIO;
1114 }
1115 EXPORT_SYMBOL_GPL(usb_serial_probe);
1116
1117 void usb_serial_disconnect(struct usb_interface *interface)
1118 {
1119         int i;
1120         struct usb_serial *serial = usb_get_intfdata(interface);
1121         struct device *dev = &interface->dev;
1122         struct usb_serial_port *port;
1123
1124         usb_serial_console_disconnect(serial);
1125         dbg("%s", __func__);
1126
1127         mutex_lock(&serial->disc_mutex);
1128         usb_set_intfdata(interface, NULL);
1129         /* must set a flag, to signal subdrivers */
1130         serial->disconnected = 1;
1131         mutex_unlock(&serial->disc_mutex);
1132
1133         for (i = 0; i < serial->num_ports; ++i) {
1134                 port = serial->port[i];
1135                 if (port) {
1136                         struct tty_struct *tty = tty_port_tty_get(&port->port);
1137                         if (tty) {
1138                                 /* The hangup will occur asynchronously but
1139                                    the object refcounts will sort out all the
1140                                    cleanup */
1141                                 tty_hangup(tty);
1142                                 tty_kref_put(tty);
1143                         }
1144                         kill_traffic(port);
1145                         cancel_work_sync(&port->work);
1146                         if (port->dev_state == PORT_REGISTERED) {
1147
1148                                 /* Make sure the port is bound so that the
1149                                  * driver's port_remove method is called.
1150                                  */
1151                                 if (!port->dev.driver) {
1152                                         int rc;
1153
1154                                         port->dev.driver =
1155                                                         &serial->type->driver;
1156                                         rc = device_bind_driver(&port->dev);
1157                                 }
1158                                 port->dev_state = PORT_UNREGISTERING;
1159                                 device_del(&port->dev);
1160                                 port->dev_state = PORT_UNREGISTERED;
1161                         }
1162                 }
1163         }
1164         serial->type->disconnect(serial);
1165
1166         /* let the last holder of this object
1167          * cause it to be cleaned up */
1168         usb_serial_put(serial);
1169         dev_info(dev, "device disconnected\n");
1170 }
1171 EXPORT_SYMBOL_GPL(usb_serial_disconnect);
1172
1173 int usb_serial_suspend(struct usb_interface *intf, pm_message_t message)
1174 {
1175         struct usb_serial *serial = usb_get_intfdata(intf);
1176         struct usb_serial_port *port;
1177         int i, r = 0;
1178
1179         serial->suspending = 1;
1180
1181         for (i = 0; i < serial->num_ports; ++i) {
1182                 port = serial->port[i];
1183                 if (port)
1184                         kill_traffic(port);
1185         }
1186
1187         if (serial->type->suspend)
1188                 r = serial->type->suspend(serial, message);
1189
1190         return r;
1191 }
1192 EXPORT_SYMBOL(usb_serial_suspend);
1193
1194 int usb_serial_resume(struct usb_interface *intf)
1195 {
1196         struct usb_serial *serial = usb_get_intfdata(intf);
1197         int rv;
1198
1199         serial->suspending = 0;
1200         if (serial->type->resume)
1201                 rv = serial->type->resume(serial);
1202         else
1203                 rv = usb_serial_generic_resume(serial);
1204
1205         return rv;
1206 }
1207 EXPORT_SYMBOL(usb_serial_resume);
1208
1209 static const struct tty_operations serial_ops = {
1210         .open =                 serial_open,
1211         .close =                serial_close,
1212         .write =                serial_write,
1213         .hangup =               serial_hangup,
1214         .write_room =           serial_write_room,
1215         .ioctl =                serial_ioctl,
1216         .set_termios =          serial_set_termios,
1217         .throttle =             serial_throttle,
1218         .unthrottle =           serial_unthrottle,
1219         .break_ctl =            serial_break,
1220         .chars_in_buffer =      serial_chars_in_buffer,
1221         .tiocmget =             serial_tiocmget,
1222         .tiocmset =             serial_tiocmset,
1223         .proc_fops =            &serial_proc_fops,
1224 };
1225
1226
1227 struct tty_driver *usb_serial_tty_driver;
1228
1229 static int __init usb_serial_init(void)
1230 {
1231         int i;
1232         int result;
1233
1234         usb_serial_tty_driver = alloc_tty_driver(SERIAL_TTY_MINORS);
1235         if (!usb_serial_tty_driver)
1236                 return -ENOMEM;
1237
1238         /* Initialize our global data */
1239         for (i = 0; i < SERIAL_TTY_MINORS; ++i)
1240                 serial_table[i] = NULL;
1241
1242         result = bus_register(&usb_serial_bus_type);
1243         if (result) {
1244                 printk(KERN_ERR "usb-serial: %s - registering bus driver "
1245                        "failed\n", __func__);
1246                 goto exit_bus;
1247         }
1248
1249         usb_serial_tty_driver->owner = THIS_MODULE;
1250         usb_serial_tty_driver->driver_name = "usbserial";
1251         usb_serial_tty_driver->name =   "ttyUSB";
1252         usb_serial_tty_driver->major = SERIAL_TTY_MAJOR;
1253         usb_serial_tty_driver->minor_start = 0;
1254         usb_serial_tty_driver->type = TTY_DRIVER_TYPE_SERIAL;
1255         usb_serial_tty_driver->subtype = SERIAL_TYPE_NORMAL;
1256         usb_serial_tty_driver->flags = TTY_DRIVER_REAL_RAW |
1257                                                 TTY_DRIVER_DYNAMIC_DEV;
1258         usb_serial_tty_driver->init_termios = tty_std_termios;
1259         usb_serial_tty_driver->init_termios.c_cflag = B9600 | CS8 | CREAD
1260                                                         | HUPCL | CLOCAL;
1261         usb_serial_tty_driver->init_termios.c_ispeed = 9600;
1262         usb_serial_tty_driver->init_termios.c_ospeed = 9600;
1263         tty_set_operations(usb_serial_tty_driver, &serial_ops);
1264         result = tty_register_driver(usb_serial_tty_driver);
1265         if (result) {
1266                 printk(KERN_ERR "usb-serial: %s - tty_register_driver failed\n",
1267                        __func__);
1268                 goto exit_reg_driver;
1269         }
1270
1271         /* register the USB driver */
1272         result = usb_register(&usb_serial_driver);
1273         if (result < 0) {
1274                 printk(KERN_ERR "usb-serial: %s - usb_register failed\n",
1275                        __func__);
1276                 goto exit_tty;
1277         }
1278
1279         /* register the generic driver, if we should */
1280         result = usb_serial_generic_register(debug);
1281         if (result < 0) {
1282                 printk(KERN_ERR "usb-serial: %s - registering generic "
1283                        "driver failed\n", __func__);
1284                 goto exit_generic;
1285         }
1286
1287         printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_DESC "\n");
1288
1289         return result;
1290
1291 exit_generic:
1292         usb_deregister(&usb_serial_driver);
1293
1294 exit_tty:
1295         tty_unregister_driver(usb_serial_tty_driver);
1296
1297 exit_reg_driver:
1298         bus_unregister(&usb_serial_bus_type);
1299
1300 exit_bus:
1301         printk(KERN_ERR "usb-serial: %s - returning with error %d\n",
1302                __func__, result);
1303         put_tty_driver(usb_serial_tty_driver);
1304         return result;
1305 }
1306
1307
1308 static void __exit usb_serial_exit(void)
1309 {
1310         usb_serial_console_exit();
1311
1312         usb_serial_generic_deregister();
1313
1314         usb_deregister(&usb_serial_driver);
1315         tty_unregister_driver(usb_serial_tty_driver);
1316         put_tty_driver(usb_serial_tty_driver);
1317         bus_unregister(&usb_serial_bus_type);
1318 }
1319
1320
1321 module_init(usb_serial_init);
1322 module_exit(usb_serial_exit);
1323
1324 #define set_to_generic_if_null(type, function)                          \
1325         do {                                                            \
1326                 if (!type->function) {                                  \
1327                         type->function = usb_serial_generic_##function; \
1328                         dbg("Had to override the " #function            \
1329                                 " usb serial operation with the generic one.");\
1330                         }                                               \
1331         } while (0)
1332
1333 static void fixup_generic(struct usb_serial_driver *device)
1334 {
1335         set_to_generic_if_null(device, open);
1336         set_to_generic_if_null(device, write);
1337         set_to_generic_if_null(device, close);
1338         set_to_generic_if_null(device, write_room);
1339         set_to_generic_if_null(device, chars_in_buffer);
1340         set_to_generic_if_null(device, read_bulk_callback);
1341         set_to_generic_if_null(device, write_bulk_callback);
1342         set_to_generic_if_null(device, disconnect);
1343         set_to_generic_if_null(device, release);
1344 }
1345
1346 int usb_serial_register(struct usb_serial_driver *driver)
1347 {
1348         /* must be called with BKL held */
1349         int retval;
1350
1351         if (usb_disabled())
1352                 return -ENODEV;
1353
1354         fixup_generic(driver);
1355
1356         if (!driver->description)
1357                 driver->description = driver->driver.name;
1358
1359         /* Add this device to our list of devices */
1360         list_add(&driver->driver_list, &usb_serial_driver_list);
1361
1362         retval = usb_serial_bus_register(driver);
1363         if (retval) {
1364                 printk(KERN_ERR "usb-serial: problem %d when registering "
1365                        "driver %s\n", retval, driver->description);
1366                 list_del(&driver->driver_list);
1367         } else
1368                 printk(KERN_INFO "USB Serial support registered for %s\n",
1369                                                 driver->description);
1370
1371         return retval;
1372 }
1373 EXPORT_SYMBOL_GPL(usb_serial_register);
1374
1375
1376 void usb_serial_deregister(struct usb_serial_driver *device)
1377 {
1378         /* must be called with BKL held */
1379         printk(KERN_INFO "USB Serial deregistering driver %s\n",
1380                device->description);
1381         list_del(&device->driver_list);
1382         usb_serial_bus_deregister(device);
1383 }
1384 EXPORT_SYMBOL_GPL(usb_serial_deregister);
1385
1386 /* Module information */
1387 MODULE_AUTHOR(DRIVER_AUTHOR);
1388 MODULE_DESCRIPTION(DRIVER_DESC);
1389 MODULE_LICENSE("GPL");
1390
1391 module_param(debug, bool, S_IRUGO | S_IWUSR);
1392 MODULE_PARM_DESC(debug, "Debug enabled or not");