2 * USB Serial Converter driver
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)
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.
13 * This driver was originally based on the ACM driver by Armin Fuerst (which was
14 * based on a driver by Brad Keryan)
16 * See Documentation/usb/usb-serial.txt for more information on using this
20 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
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>
42 #define DRIVER_AUTHOR "Greg Kroah-Hartman <gregkh@linuxfoundation.org>"
43 #define DRIVER_DESC "USB Serial Driver core"
45 /* There is no MODULE_DEVICE_TABLE for usbserial.c. Instead
46 the MODULE_DEVICE_TABLE declarations in each serial driver
47 cause the "hotplug" program to pull in whatever module is necessary
48 via modprobe, and modprobe will load usbserial because the serial
52 static struct usb_serial *serial_table[SERIAL_TTY_MINORS];
53 static DEFINE_MUTEX(table_lock);
54 static LIST_HEAD(usb_serial_driver_list);
57 * Look up the serial structure. If it is found and it hasn't been
58 * disconnected, return with its disc_mutex held and its refcount
59 * incremented. Otherwise return NULL.
61 struct usb_serial *usb_serial_get_by_index(unsigned index)
63 struct usb_serial *serial;
65 mutex_lock(&table_lock);
66 serial = serial_table[index];
69 mutex_lock(&serial->disc_mutex);
70 if (serial->disconnected) {
71 mutex_unlock(&serial->disc_mutex);
74 kref_get(&serial->kref);
77 mutex_unlock(&table_lock);
81 static struct usb_serial *get_free_serial(struct usb_serial *serial,
82 int num_ports, unsigned int *minor)
87 dev_dbg(&serial->interface->dev, "%s %d\n", __func__, num_ports);
90 mutex_lock(&table_lock);
91 for (i = 0; i < SERIAL_TTY_MINORS; ++i) {
96 for (j = 1; j <= num_ports-1; ++j)
97 if ((i+j >= SERIAL_TTY_MINORS) || (serial_table[i+j])) {
107 dev_dbg(&serial->interface->dev, "%s - minor base = %d\n", __func__, *minor);
108 for (i = *minor; (i < (*minor + num_ports)) && (i < SERIAL_TTY_MINORS); ++i) {
109 serial_table[i] = serial;
110 serial->port[j++]->number = i;
112 mutex_unlock(&table_lock);
115 mutex_unlock(&table_lock);
119 static void return_serial(struct usb_serial *serial)
123 mutex_lock(&table_lock);
124 for (i = 0; i < serial->num_ports; ++i)
125 serial_table[serial->minor + i] = NULL;
126 mutex_unlock(&table_lock);
129 static void destroy_serial(struct kref *kref)
131 struct usb_serial *serial;
132 struct usb_serial_port *port;
135 serial = to_usb_serial(kref);
137 /* return the minor range that this device had */
138 if (serial->minor != SERIAL_TTY_NO_MINOR)
139 return_serial(serial);
141 if (serial->attached && serial->type->release)
142 serial->type->release(serial);
144 /* Now that nothing is using the ports, they can be freed */
145 for (i = 0; i < serial->num_port_pointers; ++i) {
146 port = serial->port[i];
149 put_device(&port->dev);
153 usb_put_intf(serial->interface);
154 usb_put_dev(serial->dev);
158 void usb_serial_put(struct usb_serial *serial)
160 kref_put(&serial->kref, destroy_serial);
163 /*****************************************************************************
164 * Driver tty interface functions
165 *****************************************************************************/
168 * serial_install - install tty
169 * @driver: the driver (USB in our case)
170 * @tty: the tty being created
172 * Create the termios objects for this tty. We use the default
173 * USB serial settings but permit them to be overridden by
174 * serial->type->init_termios.
176 * This is the first place a new tty gets used. Hence this is where we
177 * acquire references to the usb_serial structure and the driver module,
178 * where we store a pointer to the port, and where we do an autoresume.
179 * All these actions are reversed in serial_cleanup().
181 static int serial_install(struct tty_driver *driver, struct tty_struct *tty)
183 int idx = tty->index;
184 struct usb_serial *serial;
185 struct usb_serial_port *port;
186 int retval = -ENODEV;
188 serial = usb_serial_get_by_index(idx);
192 port = serial->port[idx - serial->minor];
195 if (!try_module_get(serial->type->driver.owner))
196 goto error_module_get;
198 retval = usb_autopm_get_interface(serial->interface);
200 goto error_get_interface;
202 retval = tty_port_install(&port->port, driver, tty);
204 goto error_init_termios;
206 mutex_unlock(&serial->disc_mutex);
208 /* allow the driver to update the settings */
209 if (serial->type->init_termios)
210 serial->type->init_termios(tty);
212 tty->driver_data = port;
217 usb_autopm_put_interface(serial->interface);
219 module_put(serial->type->driver.owner);
222 usb_serial_put(serial);
223 mutex_unlock(&serial->disc_mutex);
227 static int serial_port_activate(struct tty_port *tport, struct tty_struct *tty)
229 struct usb_serial_port *port =
230 container_of(tport, struct usb_serial_port, port);
231 struct usb_serial *serial = port->serial;
234 mutex_lock(&serial->disc_mutex);
235 if (serial->disconnected)
238 retval = port->serial->type->open(tty, port);
239 mutex_unlock(&serial->disc_mutex);
242 retval = usb_translate_errors(retval);
247 static int serial_open(struct tty_struct *tty, struct file *filp)
249 struct usb_serial_port *port = tty->driver_data;
251 dev_dbg(tty->dev, "%s\n", __func__);
253 return tty_port_open(&port->port, tty, filp);
257 * serial_port_shutdown - shut down hardware
258 * @tport: tty port to shut down
260 * Shut down a USB serial port. Serialized against activate by the
261 * tport mutex and kept to matching open/close pairs
262 * of calls by the ASYNCB_INITIALIZED flag.
264 * Not called if tty is console.
266 static void serial_port_shutdown(struct tty_port *tport)
268 struct usb_serial_port *port =
269 container_of(tport, struct usb_serial_port, port);
270 struct usb_serial_driver *drv = port->serial->type;
276 static void serial_hangup(struct tty_struct *tty)
278 struct usb_serial_port *port = tty->driver_data;
280 dev_dbg(tty->dev, "%s\n", __func__);
282 tty_port_hangup(&port->port);
285 static void serial_close(struct tty_struct *tty, struct file *filp)
287 struct usb_serial_port *port = tty->driver_data;
289 dev_dbg(tty->dev, "%s\n", __func__);
291 tty_port_close(&port->port, tty, filp);
295 * serial_cleanup - free resources post close/hangup
296 * @port: port to free up
298 * Do the resource freeing and refcount dropping for the port.
299 * Avoid freeing the console.
301 * Called asynchronously after the last tty kref is dropped.
303 static void serial_cleanup(struct tty_struct *tty)
305 struct usb_serial_port *port = tty->driver_data;
306 struct usb_serial *serial;
307 struct module *owner;
309 dev_dbg(tty->dev, "%s\n", __func__);
311 /* The console is magical. Do not hang up the console hardware
312 * or there will be tears.
314 if (port->port.console)
317 tty->driver_data = NULL;
319 serial = port->serial;
320 owner = serial->type->driver.owner;
322 mutex_lock(&serial->disc_mutex);
323 if (!serial->disconnected)
324 usb_autopm_put_interface(serial->interface);
325 mutex_unlock(&serial->disc_mutex);
327 usb_serial_put(serial);
331 static int serial_write(struct tty_struct *tty, const unsigned char *buf,
334 struct usb_serial_port *port = tty->driver_data;
335 int retval = -ENODEV;
337 if (port->serial->dev->state == USB_STATE_NOTATTACHED)
340 dev_dbg(tty->dev, "%s - %d byte(s)\n", __func__, count);
342 retval = port->serial->type->write(tty, port, buf, count);
344 retval = usb_translate_errors(retval);
349 static int serial_write_room(struct tty_struct *tty)
351 struct usb_serial_port *port = tty->driver_data;
353 dev_dbg(tty->dev, "%s\n", __func__);
355 return port->serial->type->write_room(tty);
358 static int serial_chars_in_buffer(struct tty_struct *tty)
360 struct usb_serial_port *port = tty->driver_data;
361 struct usb_serial *serial = port->serial;
364 dev_dbg(tty->dev, "%s\n", __func__);
366 mutex_lock(&serial->disc_mutex);
367 /* if the device was unplugged then any remaining characters
368 fell out of the connector ;) */
369 if (serial->disconnected)
372 count = serial->type->chars_in_buffer(tty);
373 mutex_unlock(&serial->disc_mutex);
378 static void serial_wait_until_sent(struct tty_struct *tty, int timeout)
380 struct usb_serial_port *port = tty->driver_data;
381 struct usb_serial *serial = port->serial;
383 dev_dbg(tty->dev, "%s\n", __func__);
385 if (!port->serial->type->wait_until_sent)
388 mutex_lock(&serial->disc_mutex);
389 if (!serial->disconnected)
390 port->serial->type->wait_until_sent(tty, timeout);
391 mutex_unlock(&serial->disc_mutex);
394 static void serial_throttle(struct tty_struct *tty)
396 struct usb_serial_port *port = tty->driver_data;
398 dev_dbg(tty->dev, "%s\n", __func__);
400 if (port->serial->type->throttle)
401 port->serial->type->throttle(tty);
404 static void serial_unthrottle(struct tty_struct *tty)
406 struct usb_serial_port *port = tty->driver_data;
408 dev_dbg(tty->dev, "%s\n", __func__);
410 if (port->serial->type->unthrottle)
411 port->serial->type->unthrottle(tty);
414 static int serial_ioctl(struct tty_struct *tty,
415 unsigned int cmd, unsigned long arg)
417 struct usb_serial_port *port = tty->driver_data;
418 int retval = -ENODEV;
420 dev_dbg(tty->dev, "%s - cmd 0x%.4x\n", __func__, cmd);
424 if (port->serial->type->tiocmiwait)
425 retval = port->serial->type->tiocmiwait(tty, arg);
428 if (port->serial->type->ioctl)
429 retval = port->serial->type->ioctl(tty, cmd, arg);
431 retval = -ENOIOCTLCMD;
437 static void serial_set_termios(struct tty_struct *tty, struct ktermios *old)
439 struct usb_serial_port *port = tty->driver_data;
441 dev_dbg(tty->dev, "%s\n", __func__);
443 if (port->serial->type->set_termios)
444 port->serial->type->set_termios(tty, port, old);
446 tty_termios_copy_hw(&tty->termios, old);
449 static int serial_break(struct tty_struct *tty, int break_state)
451 struct usb_serial_port *port = tty->driver_data;
453 dev_dbg(tty->dev, "%s\n", __func__);
455 if (port->serial->type->break_ctl)
456 port->serial->type->break_ctl(tty, break_state);
461 static int serial_proc_show(struct seq_file *m, void *v)
463 struct usb_serial *serial;
467 seq_puts(m, "usbserinfo:1.0 driver:2.0\n");
468 for (i = 0; i < SERIAL_TTY_MINORS; ++i) {
469 serial = usb_serial_get_by_index(i);
473 seq_printf(m, "%d:", i);
474 if (serial->type->driver.owner)
475 seq_printf(m, " module:%s",
476 module_name(serial->type->driver.owner));
477 seq_printf(m, " name:\"%s\"",
478 serial->type->description);
479 seq_printf(m, " vendor:%04x product:%04x",
480 le16_to_cpu(serial->dev->descriptor.idVendor),
481 le16_to_cpu(serial->dev->descriptor.idProduct));
482 seq_printf(m, " num_ports:%d", serial->num_ports);
483 seq_printf(m, " port:%d", i - serial->minor + 1);
484 usb_make_path(serial->dev, tmp, sizeof(tmp));
485 seq_printf(m, " path:%s", tmp);
488 usb_serial_put(serial);
489 mutex_unlock(&serial->disc_mutex);
494 static int serial_proc_open(struct inode *inode, struct file *file)
496 return single_open(file, serial_proc_show, NULL);
499 static const struct file_operations serial_proc_fops = {
500 .owner = THIS_MODULE,
501 .open = serial_proc_open,
504 .release = single_release,
507 static int serial_tiocmget(struct tty_struct *tty)
509 struct usb_serial_port *port = tty->driver_data;
511 dev_dbg(tty->dev, "%s\n", __func__);
513 if (port->serial->type->tiocmget)
514 return port->serial->type->tiocmget(tty);
518 static int serial_tiocmset(struct tty_struct *tty,
519 unsigned int set, unsigned int clear)
521 struct usb_serial_port *port = tty->driver_data;
523 dev_dbg(tty->dev, "%s\n", __func__);
525 if (port->serial->type->tiocmset)
526 return port->serial->type->tiocmset(tty, set, clear);
530 static int serial_get_icount(struct tty_struct *tty,
531 struct serial_icounter_struct *icount)
533 struct usb_serial_port *port = tty->driver_data;
535 dev_dbg(tty->dev, "%s\n", __func__);
537 if (port->serial->type->get_icount)
538 return port->serial->type->get_icount(tty, icount);
543 * We would be calling tty_wakeup here, but unfortunately some line
544 * disciplines have an annoying habit of calling tty->write from
545 * the write wakeup callback (e.g. n_hdlc.c).
547 void usb_serial_port_softint(struct usb_serial_port *port)
549 schedule_work(&port->work);
551 EXPORT_SYMBOL_GPL(usb_serial_port_softint);
553 static void usb_serial_port_work(struct work_struct *work)
555 struct usb_serial_port *port =
556 container_of(work, struct usb_serial_port, work);
558 tty_port_tty_wakeup(&port->port);
561 static void usb_serial_port_poison_urbs(struct usb_serial_port *port)
565 for (i = 0; i < ARRAY_SIZE(port->read_urbs); ++i)
566 usb_poison_urb(port->read_urbs[i]);
567 for (i = 0; i < ARRAY_SIZE(port->write_urbs); ++i)
568 usb_poison_urb(port->write_urbs[i]);
570 usb_poison_urb(port->interrupt_in_urb);
571 usb_poison_urb(port->interrupt_out_urb);
574 static void usb_serial_port_unpoison_urbs(struct usb_serial_port *port)
578 for (i = 0; i < ARRAY_SIZE(port->read_urbs); ++i)
579 usb_unpoison_urb(port->read_urbs[i]);
580 for (i = 0; i < ARRAY_SIZE(port->write_urbs); ++i)
581 usb_unpoison_urb(port->write_urbs[i]);
583 usb_unpoison_urb(port->interrupt_in_urb);
584 usb_unpoison_urb(port->interrupt_out_urb);
587 static void usb_serial_port_release(struct device *dev)
589 struct usb_serial_port *port = to_usb_serial_port(dev);
592 dev_dbg(dev, "%s\n", __func__);
594 usb_free_urb(port->interrupt_in_urb);
595 usb_free_urb(port->interrupt_out_urb);
596 for (i = 0; i < ARRAY_SIZE(port->read_urbs); ++i) {
597 usb_free_urb(port->read_urbs[i]);
598 kfree(port->bulk_in_buffers[i]);
600 for (i = 0; i < ARRAY_SIZE(port->write_urbs); ++i) {
601 usb_free_urb(port->write_urbs[i]);
602 kfree(port->bulk_out_buffers[i]);
604 kfifo_free(&port->write_fifo);
605 kfree(port->interrupt_in_buffer);
606 kfree(port->interrupt_out_buffer);
607 tty_port_destroy(&port->port);
611 static struct usb_serial *create_serial(struct usb_device *dev,
612 struct usb_interface *interface,
613 struct usb_serial_driver *driver)
615 struct usb_serial *serial;
617 serial = kzalloc(sizeof(*serial), GFP_KERNEL);
620 serial->dev = usb_get_dev(dev);
621 serial->type = driver;
622 serial->interface = usb_get_intf(interface);
623 kref_init(&serial->kref);
624 mutex_init(&serial->disc_mutex);
625 serial->minor = SERIAL_TTY_NO_MINOR;
630 static const struct usb_device_id *match_dynamic_id(struct usb_interface *intf,
631 struct usb_serial_driver *drv)
633 struct usb_dynid *dynid;
635 spin_lock(&drv->dynids.lock);
636 list_for_each_entry(dynid, &drv->dynids.list, node) {
637 if (usb_match_one_id(intf, &dynid->id)) {
638 spin_unlock(&drv->dynids.lock);
642 spin_unlock(&drv->dynids.lock);
646 static const struct usb_device_id *get_iface_id(struct usb_serial_driver *drv,
647 struct usb_interface *intf)
649 const struct usb_device_id *id;
651 id = usb_match_id(intf, drv->id_table);
653 dev_dbg(&intf->dev, "static descriptor matches\n");
656 id = match_dynamic_id(intf, drv);
658 dev_dbg(&intf->dev, "dynamic descriptor matches\n");
663 /* Caller must hold table_lock */
664 static struct usb_serial_driver *search_serial_device(
665 struct usb_interface *iface)
667 const struct usb_device_id *id = NULL;
668 struct usb_serial_driver *drv;
669 struct usb_driver *driver = to_usb_driver(iface->dev.driver);
671 /* Check if the usb id matches a known device */
672 list_for_each_entry(drv, &usb_serial_driver_list, driver_list) {
673 if (drv->usb_driver == driver)
674 id = get_iface_id(drv, iface);
682 static int serial_port_carrier_raised(struct tty_port *port)
684 struct usb_serial_port *p = container_of(port, struct usb_serial_port, port);
685 struct usb_serial_driver *drv = p->serial->type;
687 if (drv->carrier_raised)
688 return drv->carrier_raised(p);
689 /* No carrier control - don't block */
693 static void serial_port_dtr_rts(struct tty_port *port, int on)
695 struct usb_serial_port *p = container_of(port, struct usb_serial_port, port);
696 struct usb_serial *serial = p->serial;
697 struct usb_serial_driver *drv = serial->type;
702 * Work-around bug in the tty-layer which can result in dtr_rts
703 * being called after a disconnect (and tty_unregister_device
704 * has returned). Remove once bug has been squashed.
706 mutex_lock(&serial->disc_mutex);
707 if (!serial->disconnected)
709 mutex_unlock(&serial->disc_mutex);
712 static const struct tty_port_operations serial_port_ops = {
713 .carrier_raised = serial_port_carrier_raised,
714 .dtr_rts = serial_port_dtr_rts,
715 .activate = serial_port_activate,
716 .shutdown = serial_port_shutdown,
719 static int usb_serial_probe(struct usb_interface *interface,
720 const struct usb_device_id *id)
722 struct device *ddev = &interface->dev;
723 struct usb_device *dev = interface_to_usbdev(interface);
724 struct usb_serial *serial = NULL;
725 struct usb_serial_port *port;
726 struct usb_host_interface *iface_desc;
727 struct usb_endpoint_descriptor *endpoint;
728 struct usb_endpoint_descriptor *interrupt_in_endpoint[MAX_NUM_PORTS];
729 struct usb_endpoint_descriptor *interrupt_out_endpoint[MAX_NUM_PORTS];
730 struct usb_endpoint_descriptor *bulk_in_endpoint[MAX_NUM_PORTS];
731 struct usb_endpoint_descriptor *bulk_out_endpoint[MAX_NUM_PORTS];
732 struct usb_serial_driver *type = NULL;
738 int num_interrupt_in = 0;
739 int num_interrupt_out = 0;
741 int num_bulk_out = 0;
745 mutex_lock(&table_lock);
746 type = search_serial_device(interface);
748 mutex_unlock(&table_lock);
749 dev_dbg(ddev, "none matched\n");
753 if (!try_module_get(type->driver.owner)) {
754 mutex_unlock(&table_lock);
755 dev_err(ddev, "module get failed, exiting\n");
758 mutex_unlock(&table_lock);
760 serial = create_serial(dev, interface, type);
762 module_put(type->driver.owner);
766 /* if this device type has a probe function, call it */
768 const struct usb_device_id *id;
770 id = get_iface_id(type, interface);
771 retval = type->probe(serial, id);
774 dev_dbg(ddev, "sub driver rejected device\n");
775 usb_serial_put(serial);
776 module_put(type->driver.owner);
781 /* descriptor matches, let's find the endpoints needed */
782 /* check out the endpoints */
783 iface_desc = interface->cur_altsetting;
784 for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) {
785 endpoint = &iface_desc->endpoint[i].desc;
787 if (usb_endpoint_is_bulk_in(endpoint)) {
788 /* we found a bulk in endpoint */
789 dev_dbg(ddev, "found bulk in on endpoint %d\n", i);
790 bulk_in_endpoint[num_bulk_in] = endpoint;
794 if (usb_endpoint_is_bulk_out(endpoint)) {
795 /* we found a bulk out endpoint */
796 dev_dbg(ddev, "found bulk out on endpoint %d\n", i);
797 bulk_out_endpoint[num_bulk_out] = endpoint;
801 if (usb_endpoint_is_int_in(endpoint)) {
802 /* we found a interrupt in endpoint */
803 dev_dbg(ddev, "found interrupt in on endpoint %d\n", i);
804 interrupt_in_endpoint[num_interrupt_in] = endpoint;
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 interrupt_out_endpoint[num_interrupt_out] = endpoint;
816 #if defined(CONFIG_USB_SERIAL_PL2303) || defined(CONFIG_USB_SERIAL_PL2303_MODULE)
817 /* BEGIN HORRIBLE HACK FOR PL2303 */
818 /* this is needed due to the looney way its endpoints are set up */
819 if (((le16_to_cpu(dev->descriptor.idVendor) == PL2303_VENDOR_ID) &&
820 (le16_to_cpu(dev->descriptor.idProduct) == PL2303_PRODUCT_ID)) ||
821 ((le16_to_cpu(dev->descriptor.idVendor) == ATEN_VENDOR_ID) &&
822 (le16_to_cpu(dev->descriptor.idProduct) == ATEN_PRODUCT_ID)) ||
823 ((le16_to_cpu(dev->descriptor.idVendor) == ALCOR_VENDOR_ID) &&
824 (le16_to_cpu(dev->descriptor.idProduct) == ALCOR_PRODUCT_ID)) ||
825 ((le16_to_cpu(dev->descriptor.idVendor) == SIEMENS_VENDOR_ID) &&
826 (le16_to_cpu(dev->descriptor.idProduct) == SIEMENS_PRODUCT_ID_EF81))) {
827 if (interface != dev->actconfig->interface[0]) {
828 /* check out the endpoints of the other interface*/
829 iface_desc = dev->actconfig->interface[0]->cur_altsetting;
830 for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) {
831 endpoint = &iface_desc->endpoint[i].desc;
832 if (usb_endpoint_is_int_in(endpoint)) {
833 /* we found a interrupt in endpoint */
834 dev_dbg(ddev, "found interrupt in for Prolific device on separate interface\n");
835 interrupt_in_endpoint[num_interrupt_in] = endpoint;
841 /* Now make sure the PL-2303 is configured correctly.
842 * If not, give up now and hope this hack will work
843 * properly during a later invocation of usb_serial_probe
845 if (num_bulk_in == 0 || num_bulk_out == 0) {
846 dev_info(ddev, "PL-2303 hack: descriptors matched but endpoints did not\n");
847 usb_serial_put(serial);
848 module_put(type->driver.owner);
852 /* END HORRIBLE HACK FOR PL2303 */
855 #ifdef CONFIG_USB_SERIAL_GENERIC
856 if (type == &usb_serial_generic_device) {
857 num_ports = num_bulk_out;
858 if (num_ports == 0) {
859 dev_err(ddev, "Generic device with no bulk out, not allowed.\n");
860 usb_serial_put(serial);
861 module_put(type->driver.owner);
864 dev_info(ddev, "The \"generic\" usb-serial driver is only for testing and one-off prototypes.\n");
865 dev_info(ddev, "Tell linux-usb@vger.kernel.org to add your device to a proper driver.\n");
869 /* if this device type has a calc_num_ports function, call it */
870 if (type->calc_num_ports)
871 num_ports = type->calc_num_ports(serial);
873 num_ports = type->num_ports;
876 serial->num_ports = num_ports;
877 serial->num_bulk_in = num_bulk_in;
878 serial->num_bulk_out = num_bulk_out;
879 serial->num_interrupt_in = num_interrupt_in;
880 serial->num_interrupt_out = num_interrupt_out;
882 /* found all that we need */
883 dev_info(ddev, "%s converter detected\n", type->description);
885 /* create our ports, we need as many as the max endpoints */
886 /* we don't use num_ports here because some devices have more
887 endpoint pairs than ports */
888 max_endpoints = max(num_bulk_in, num_bulk_out);
889 max_endpoints = max(max_endpoints, num_interrupt_in);
890 max_endpoints = max(max_endpoints, num_interrupt_out);
891 max_endpoints = max(max_endpoints, (int)serial->num_ports);
892 serial->num_port_pointers = max_endpoints;
894 dev_dbg(ddev, "setting up %d port structures for this device", max_endpoints);
895 for (i = 0; i < max_endpoints; ++i) {
896 port = kzalloc(sizeof(struct usb_serial_port), GFP_KERNEL);
899 tty_port_init(&port->port);
900 port->port.ops = &serial_port_ops;
901 port->serial = serial;
902 spin_lock_init(&port->lock);
903 /* Keep this for private driver use for the moment but
904 should probably go away */
905 INIT_WORK(&port->work, usb_serial_port_work);
906 serial->port[i] = port;
907 port->dev.parent = &interface->dev;
908 port->dev.driver = NULL;
909 port->dev.bus = &usb_serial_bus_type;
910 port->dev.release = &usb_serial_port_release;
911 device_initialize(&port->dev);
914 /* set up the endpoint information */
915 for (i = 0; i < num_bulk_in; ++i) {
916 endpoint = bulk_in_endpoint[i];
917 port = serial->port[i];
918 buffer_size = max_t(int, serial->type->bulk_in_size,
919 usb_endpoint_maxp(endpoint));
920 port->bulk_in_size = buffer_size;
921 port->bulk_in_endpointAddress = endpoint->bEndpointAddress;
923 for (j = 0; j < ARRAY_SIZE(port->read_urbs); ++j) {
924 set_bit(j, &port->read_urbs_free);
925 port->read_urbs[j] = usb_alloc_urb(0, GFP_KERNEL);
926 if (!port->read_urbs[j])
928 port->bulk_in_buffers[j] = kmalloc(buffer_size,
930 if (!port->bulk_in_buffers[j])
932 usb_fill_bulk_urb(port->read_urbs[j], dev,
934 endpoint->bEndpointAddress),
935 port->bulk_in_buffers[j], buffer_size,
936 serial->type->read_bulk_callback,
940 port->read_urb = port->read_urbs[0];
941 port->bulk_in_buffer = port->bulk_in_buffers[0];
944 for (i = 0; i < num_bulk_out; ++i) {
945 endpoint = bulk_out_endpoint[i];
946 port = serial->port[i];
947 if (kfifo_alloc(&port->write_fifo, PAGE_SIZE, GFP_KERNEL))
949 buffer_size = serial->type->bulk_out_size;
951 buffer_size = usb_endpoint_maxp(endpoint);
952 port->bulk_out_size = buffer_size;
953 port->bulk_out_endpointAddress = endpoint->bEndpointAddress;
955 for (j = 0; j < ARRAY_SIZE(port->write_urbs); ++j) {
956 set_bit(j, &port->write_urbs_free);
957 port->write_urbs[j] = usb_alloc_urb(0, GFP_KERNEL);
958 if (!port->write_urbs[j])
960 port->bulk_out_buffers[j] = kmalloc(buffer_size,
962 if (!port->bulk_out_buffers[j])
964 usb_fill_bulk_urb(port->write_urbs[j], dev,
966 endpoint->bEndpointAddress),
967 port->bulk_out_buffers[j], buffer_size,
968 serial->type->write_bulk_callback,
972 port->write_urb = port->write_urbs[0];
973 port->bulk_out_buffer = port->bulk_out_buffers[0];
976 if (serial->type->read_int_callback) {
977 for (i = 0; i < num_interrupt_in; ++i) {
978 endpoint = interrupt_in_endpoint[i];
979 port = serial->port[i];
980 port->interrupt_in_urb = usb_alloc_urb(0, GFP_KERNEL);
981 if (!port->interrupt_in_urb)
983 buffer_size = usb_endpoint_maxp(endpoint);
984 port->interrupt_in_endpointAddress =
985 endpoint->bEndpointAddress;
986 port->interrupt_in_buffer = kmalloc(buffer_size,
988 if (!port->interrupt_in_buffer)
990 usb_fill_int_urb(port->interrupt_in_urb, dev,
992 endpoint->bEndpointAddress),
993 port->interrupt_in_buffer, buffer_size,
994 serial->type->read_int_callback, port,
995 endpoint->bInterval);
997 } else if (num_interrupt_in) {
998 dev_dbg(ddev, "The device claims to support interrupt in transfers, but read_int_callback is not defined\n");
1001 if (serial->type->write_int_callback) {
1002 for (i = 0; i < num_interrupt_out; ++i) {
1003 endpoint = interrupt_out_endpoint[i];
1004 port = serial->port[i];
1005 port->interrupt_out_urb = usb_alloc_urb(0, GFP_KERNEL);
1006 if (!port->interrupt_out_urb)
1008 buffer_size = usb_endpoint_maxp(endpoint);
1009 port->interrupt_out_size = buffer_size;
1010 port->interrupt_out_endpointAddress =
1011 endpoint->bEndpointAddress;
1012 port->interrupt_out_buffer = kmalloc(buffer_size,
1014 if (!port->interrupt_out_buffer)
1016 usb_fill_int_urb(port->interrupt_out_urb, dev,
1018 endpoint->bEndpointAddress),
1019 port->interrupt_out_buffer, buffer_size,
1020 serial->type->write_int_callback, port,
1021 endpoint->bInterval);
1023 } else if (num_interrupt_out) {
1024 dev_dbg(ddev, "The device claims to support interrupt out transfers, but write_int_callback is not defined\n");
1027 usb_set_intfdata(interface, serial);
1029 /* if this device type has an attach function, call it */
1031 retval = type->attach(serial);
1034 serial->attached = 1;
1036 /* quietly accept this device, but don't bind to a
1037 serial port as it's about to disappear */
1038 serial->num_ports = 0;
1042 serial->attached = 1;
1045 /* Avoid race with tty_open and serial_install by setting the
1046 * disconnected flag and not clearing it until all ports have been
1049 serial->disconnected = 1;
1051 if (get_free_serial(serial, num_ports, &minor) == NULL) {
1052 dev_err(ddev, "No more free serial devices\n");
1055 serial->minor = minor;
1057 /* register all of the individual ports with the driver core */
1058 for (i = 0; i < num_ports; ++i) {
1059 port = serial->port[i];
1060 dev_set_name(&port->dev, "ttyUSB%d", port->number);
1061 dev_dbg(ddev, "registering %s", dev_name(&port->dev));
1062 device_enable_async_suspend(&port->dev);
1064 retval = device_add(&port->dev);
1066 dev_err(ddev, "Error registering port device, continuing\n");
1069 serial->disconnected = 0;
1071 usb_serial_console_init(minor);
1073 module_put(type->driver.owner);
1077 usb_serial_put(serial);
1078 module_put(type->driver.owner);
1082 static void usb_serial_disconnect(struct usb_interface *interface)
1085 struct usb_serial *serial = usb_get_intfdata(interface);
1086 struct device *dev = &interface->dev;
1087 struct usb_serial_port *port;
1089 usb_serial_console_disconnect(serial);
1091 mutex_lock(&serial->disc_mutex);
1092 /* must set a flag, to signal subdrivers */
1093 serial->disconnected = 1;
1094 mutex_unlock(&serial->disc_mutex);
1096 for (i = 0; i < serial->num_ports; ++i) {
1097 port = serial->port[i];
1099 struct tty_struct *tty = tty_port_tty_get(&port->port);
1104 usb_serial_port_poison_urbs(port);
1105 wake_up_interruptible(&port->port.delta_msr_wait);
1106 cancel_work_sync(&port->work);
1107 if (device_is_registered(&port->dev))
1108 device_del(&port->dev);
1111 if (serial->type->disconnect)
1112 serial->type->disconnect(serial);
1114 /* let the last holder of this object cause it to be cleaned up */
1115 usb_serial_put(serial);
1116 dev_info(dev, "device disconnected\n");
1119 int usb_serial_suspend(struct usb_interface *intf, pm_message_t message)
1121 struct usb_serial *serial = usb_get_intfdata(intf);
1122 struct usb_serial_port *port;
1125 serial->suspending = 1;
1128 * serial->type->suspend() MUST return 0 in system sleep context,
1129 * otherwise, the resume callback has to recover device from
1130 * previous suspend failure.
1132 if (serial->type->suspend) {
1133 r = serial->type->suspend(serial, message);
1135 serial->suspending = 0;
1140 for (i = 0; i < serial->num_ports; ++i) {
1141 port = serial->port[i];
1143 usb_serial_port_poison_urbs(port);
1149 EXPORT_SYMBOL(usb_serial_suspend);
1151 static void usb_serial_unpoison_port_urbs(struct usb_serial *serial)
1153 struct usb_serial_port *port;
1156 for (i = 0; i < serial->num_ports; ++i) {
1157 port = serial->port[i];
1159 usb_serial_port_unpoison_urbs(port);
1163 int usb_serial_resume(struct usb_interface *intf)
1165 struct usb_serial *serial = usb_get_intfdata(intf);
1168 usb_serial_unpoison_port_urbs(serial);
1170 serial->suspending = 0;
1171 if (serial->type->resume)
1172 rv = serial->type->resume(serial);
1174 rv = usb_serial_generic_resume(serial);
1178 EXPORT_SYMBOL(usb_serial_resume);
1180 static int usb_serial_reset_resume(struct usb_interface *intf)
1182 struct usb_serial *serial = usb_get_intfdata(intf);
1185 usb_serial_unpoison_port_urbs(serial);
1187 serial->suspending = 0;
1188 if (serial->type->reset_resume)
1189 rv = serial->type->reset_resume(serial);
1192 intf->needs_binding = 1;
1198 static const struct tty_operations serial_ops = {
1199 .open = serial_open,
1200 .close = serial_close,
1201 .write = serial_write,
1202 .hangup = serial_hangup,
1203 .write_room = serial_write_room,
1204 .ioctl = serial_ioctl,
1205 .set_termios = serial_set_termios,
1206 .throttle = serial_throttle,
1207 .unthrottle = serial_unthrottle,
1208 .break_ctl = serial_break,
1209 .chars_in_buffer = serial_chars_in_buffer,
1210 .wait_until_sent = serial_wait_until_sent,
1211 .tiocmget = serial_tiocmget,
1212 .tiocmset = serial_tiocmset,
1213 .get_icount = serial_get_icount,
1214 .cleanup = serial_cleanup,
1215 .install = serial_install,
1216 .proc_fops = &serial_proc_fops,
1220 struct tty_driver *usb_serial_tty_driver;
1222 /* Driver structure we register with the USB core */
1223 static struct usb_driver usb_serial_driver = {
1224 .name = "usbserial",
1225 .probe = usb_serial_probe,
1226 .disconnect = usb_serial_disconnect,
1227 .suspend = usb_serial_suspend,
1228 .resume = usb_serial_resume,
1230 .supports_autosuspend = 1,
1233 static int __init usb_serial_init(void)
1238 usb_serial_tty_driver = alloc_tty_driver(SERIAL_TTY_MINORS);
1239 if (!usb_serial_tty_driver)
1242 /* Initialize our global data */
1243 for (i = 0; i < SERIAL_TTY_MINORS; ++i)
1244 serial_table[i] = NULL;
1246 result = bus_register(&usb_serial_bus_type);
1248 pr_err("%s - registering bus driver failed\n", __func__);
1252 usb_serial_tty_driver->driver_name = "usbserial";
1253 usb_serial_tty_driver->name = "ttyUSB";
1254 usb_serial_tty_driver->major = SERIAL_TTY_MAJOR;
1255 usb_serial_tty_driver->minor_start = 0;
1256 usb_serial_tty_driver->type = TTY_DRIVER_TYPE_SERIAL;
1257 usb_serial_tty_driver->subtype = SERIAL_TYPE_NORMAL;
1258 usb_serial_tty_driver->flags = TTY_DRIVER_REAL_RAW |
1259 TTY_DRIVER_DYNAMIC_DEV;
1260 usb_serial_tty_driver->init_termios = tty_std_termios;
1261 usb_serial_tty_driver->init_termios.c_cflag = B9600 | CS8 | CREAD
1263 usb_serial_tty_driver->init_termios.c_ispeed = 9600;
1264 usb_serial_tty_driver->init_termios.c_ospeed = 9600;
1265 tty_set_operations(usb_serial_tty_driver, &serial_ops);
1266 result = tty_register_driver(usb_serial_tty_driver);
1268 pr_err("%s - tty_register_driver failed\n", __func__);
1269 goto exit_reg_driver;
1272 /* register the USB driver */
1273 result = usb_register(&usb_serial_driver);
1275 pr_err("%s - usb_register failed\n", __func__);
1279 /* register the generic driver, if we should */
1280 result = usb_serial_generic_register();
1282 pr_err("%s - registering generic driver failed\n", __func__);
1289 usb_deregister(&usb_serial_driver);
1292 tty_unregister_driver(usb_serial_tty_driver);
1295 bus_unregister(&usb_serial_bus_type);
1298 pr_err("%s - returning with error %d\n", __func__, result);
1299 put_tty_driver(usb_serial_tty_driver);
1304 static void __exit usb_serial_exit(void)
1306 usb_serial_console_exit();
1308 usb_serial_generic_deregister();
1310 usb_deregister(&usb_serial_driver);
1311 tty_unregister_driver(usb_serial_tty_driver);
1312 put_tty_driver(usb_serial_tty_driver);
1313 bus_unregister(&usb_serial_bus_type);
1317 module_init(usb_serial_init);
1318 module_exit(usb_serial_exit);
1320 #define set_to_generic_if_null(type, function) \
1322 if (!type->function) { \
1323 type->function = usb_serial_generic_##function; \
1324 pr_debug("%s: using generic " #function "\n", \
1325 type->driver.name); \
1329 static void usb_serial_operations_init(struct usb_serial_driver *device)
1331 set_to_generic_if_null(device, open);
1332 set_to_generic_if_null(device, write);
1333 set_to_generic_if_null(device, close);
1334 set_to_generic_if_null(device, write_room);
1335 set_to_generic_if_null(device, chars_in_buffer);
1336 if (device->tx_empty)
1337 set_to_generic_if_null(device, wait_until_sent);
1338 set_to_generic_if_null(device, read_bulk_callback);
1339 set_to_generic_if_null(device, write_bulk_callback);
1340 set_to_generic_if_null(device, process_read_urb);
1341 set_to_generic_if_null(device, prepare_write_buffer);
1344 static int usb_serial_register(struct usb_serial_driver *driver)
1351 if (!driver->description)
1352 driver->description = driver->driver.name;
1353 if (!driver->usb_driver) {
1354 WARN(1, "Serial driver %s has no usb_driver\n",
1355 driver->description);
1359 usb_serial_operations_init(driver);
1361 /* Add this device to our list of devices */
1362 mutex_lock(&table_lock);
1363 list_add(&driver->driver_list, &usb_serial_driver_list);
1365 retval = usb_serial_bus_register(driver);
1367 pr_err("problem %d when registering driver %s\n", retval, driver->description);
1368 list_del(&driver->driver_list);
1370 pr_info("USB Serial support registered for %s\n", driver->description);
1372 mutex_unlock(&table_lock);
1376 static void usb_serial_deregister(struct usb_serial_driver *device)
1378 pr_info("USB Serial deregistering driver %s\n", device->description);
1379 mutex_lock(&table_lock);
1380 list_del(&device->driver_list);
1381 usb_serial_bus_deregister(device);
1382 mutex_unlock(&table_lock);
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
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.
1394 int usb_serial_register_drivers(struct usb_serial_driver *const serial_drivers[],
1396 const struct usb_device_id *id_table)
1399 struct usb_driver *udriver;
1400 struct usb_serial_driver * const *sd;
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.
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.
1412 * Suspend/resume support is implemented in the usb-serial core,
1413 * so fill in the PM-related fields in udriver.
1415 udriver = kzalloc(sizeof(*udriver), GFP_KERNEL);
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;
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;
1435 rc = usb_register(udriver);
1439 for (sd = serial_drivers; *sd; ++sd) {
1440 (*sd)->usb_driver = udriver;
1441 rc = usb_serial_register(*sd);
1446 /* Now set udriver's id_table and look for matches */
1447 udriver->id_table = id_table;
1448 rc = driver_attach(&udriver->drvwrap.driver);
1452 while (sd-- > serial_drivers)
1453 usb_serial_deregister(*sd);
1454 usb_deregister(udriver);
1457 EXPORT_SYMBOL_GPL(usb_serial_register_drivers);
1460 * usb_serial_deregister_drivers - deregister drivers for a usb-serial module
1461 * @serial_drivers: NULL-terminated array of pointers to drivers to be deregistered
1463 * Deregisters all the drivers in the @serial_drivers array and deregisters and
1464 * frees the struct usb_driver that was created by the call to
1465 * usb_serial_register_drivers().
1467 void usb_serial_deregister_drivers(struct usb_serial_driver *const serial_drivers[])
1469 struct usb_driver *udriver = (*serial_drivers)->usb_driver;
1471 for (; *serial_drivers; ++serial_drivers)
1472 usb_serial_deregister(*serial_drivers);
1473 usb_deregister(udriver);
1476 EXPORT_SYMBOL_GPL(usb_serial_deregister_drivers);
1478 MODULE_AUTHOR(DRIVER_AUTHOR);
1479 MODULE_DESCRIPTION(DRIVER_DESC);
1480 MODULE_LICENSE("GPL");