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