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