1 // SPDX-License-Identifier: GPL-2.0
3 * USB Serial Converter driver
10 * This driver was originally based on the ACM driver by Armin Fuerst (which was
11 * based on a driver by Brad Keryan)
13 * See Documentation/usb/usb-serial.txt for more information on using this
17 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
19 #include <linux/kernel.h>
20 #include <linux/errno.h>
21 #include <linux/init.h>
22 #include <linux/slab.h>
23 #include <linux/tty.h>
24 #include <linux/tty_driver.h>
25 #include <linux/tty_flip.h>
26 #include <linux/module.h>
27 #include <linux/moduleparam.h>
28 #include <linux/seq_file.h>
29 #include <linux/spinlock.h>
30 #include <linux/mutex.h>
31 #include <linux/list.h>
32 #include <linux/uaccess.h>
33 #include <linux/serial.h>
34 #include <linux/usb.h>
35 #include <linux/usb/serial.h>
36 #include <linux/kfifo.h>
37 #include <linux/idr.h>
40 #define DRIVER_DESC "USB Serial Driver core"
42 #define USB_SERIAL_TTY_MAJOR 188
43 #define USB_SERIAL_TTY_MINORS 512 /* should be enough for a while */
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 DEFINE_IDR(serial_minors);
53 static DEFINE_MUTEX(table_lock);
54 static LIST_HEAD(usb_serial_driver_list);
57 * Look up the serial port structure. If it is found and it hasn't been
58 * disconnected, return with the parent usb_serial structure's disc_mutex held
59 * and its refcount incremented. Otherwise return NULL.
61 struct usb_serial_port *usb_serial_port_get_by_minor(unsigned minor)
63 struct usb_serial *serial;
64 struct usb_serial_port *port;
66 mutex_lock(&table_lock);
67 port = idr_find(&serial_minors, minor);
71 serial = port->serial;
72 mutex_lock(&serial->disc_mutex);
73 if (serial->disconnected) {
74 mutex_unlock(&serial->disc_mutex);
77 kref_get(&serial->kref);
80 mutex_unlock(&table_lock);
84 static int allocate_minors(struct usb_serial *serial, int num_ports)
86 struct usb_serial_port *port;
90 dev_dbg(&serial->interface->dev, "%s %d\n", __func__, num_ports);
92 mutex_lock(&table_lock);
93 for (i = 0; i < num_ports; ++i) {
94 port = serial->port[i];
95 minor = idr_alloc(&serial_minors, port, 0,
96 USB_SERIAL_TTY_MINORS, GFP_KERNEL);
100 port->port_number = i;
102 serial->minors_reserved = 1;
103 mutex_unlock(&table_lock);
106 /* unwind the already allocated minors */
107 for (j = 0; j < i; ++j)
108 idr_remove(&serial_minors, serial->port[j]->minor);
109 mutex_unlock(&table_lock);
113 static void release_minors(struct usb_serial *serial)
117 mutex_lock(&table_lock);
118 for (i = 0; i < serial->num_ports; ++i)
119 idr_remove(&serial_minors, serial->port[i]->minor);
120 mutex_unlock(&table_lock);
121 serial->minors_reserved = 0;
124 static void destroy_serial(struct kref *kref)
126 struct usb_serial *serial;
127 struct usb_serial_port *port;
130 serial = to_usb_serial(kref);
132 /* return the minor range that this device had */
133 if (serial->minors_reserved)
134 release_minors(serial);
136 if (serial->attached && serial->type->release)
137 serial->type->release(serial);
139 /* Now that nothing is using the ports, they can be freed */
140 for (i = 0; i < serial->num_port_pointers; ++i) {
141 port = serial->port[i];
144 put_device(&port->dev);
148 usb_put_intf(serial->interface);
149 usb_put_dev(serial->dev);
153 void usb_serial_put(struct usb_serial *serial)
155 kref_put(&serial->kref, destroy_serial);
158 /*****************************************************************************
159 * Driver tty interface functions
160 *****************************************************************************/
163 * serial_install - install tty
164 * @driver: the driver (USB in our case)
165 * @tty: the tty being created
167 * Create the termios objects for this tty. We use the default
168 * USB serial settings but permit them to be overridden by
169 * serial->type->init_termios.
171 * This is the first place a new tty gets used. Hence this is where we
172 * acquire references to the usb_serial structure and the driver module,
173 * where we store a pointer to the port, and where we do an autoresume.
174 * All these actions are reversed in serial_cleanup().
176 static int serial_install(struct tty_driver *driver, struct tty_struct *tty)
178 int idx = tty->index;
179 struct usb_serial *serial;
180 struct usb_serial_port *port;
181 int retval = -ENODEV;
183 port = usb_serial_port_get_by_minor(idx);
187 serial = port->serial;
188 if (!try_module_get(serial->type->driver.owner))
189 goto error_module_get;
191 retval = usb_autopm_get_interface(serial->interface);
193 goto error_get_interface;
195 retval = tty_standard_install(driver, tty);
197 goto error_init_termios;
199 mutex_unlock(&serial->disc_mutex);
201 /* allow the driver to update the settings */
202 if (serial->type->init_termios)
203 serial->type->init_termios(tty);
205 tty->driver_data = port;
210 usb_autopm_put_interface(serial->interface);
212 module_put(serial->type->driver.owner);
214 usb_serial_put(serial);
215 mutex_unlock(&serial->disc_mutex);
219 static int serial_port_activate(struct tty_port *tport, struct tty_struct *tty)
221 struct usb_serial_port *port =
222 container_of(tport, struct usb_serial_port, port);
223 struct usb_serial *serial = port->serial;
226 mutex_lock(&serial->disc_mutex);
227 if (serial->disconnected)
230 retval = port->serial->type->open(tty, port);
231 mutex_unlock(&serial->disc_mutex);
234 retval = usb_translate_errors(retval);
239 static int serial_open(struct tty_struct *tty, struct file *filp)
241 struct usb_serial_port *port = tty->driver_data;
243 dev_dbg(tty->dev, "%s\n", __func__);
245 return tty_port_open(&port->port, tty, filp);
249 * serial_port_shutdown - shut down hardware
250 * @tport: tty port to shut down
252 * Shut down a USB serial port. Serialized against activate by the
253 * tport mutex and kept to matching open/close pairs
254 * of calls by the initialized flag.
256 * Not called if tty is console.
258 static void serial_port_shutdown(struct tty_port *tport)
260 struct usb_serial_port *port =
261 container_of(tport, struct usb_serial_port, port);
262 struct usb_serial_driver *drv = port->serial->type;
268 static void serial_hangup(struct tty_struct *tty)
270 struct usb_serial_port *port = tty->driver_data;
272 dev_dbg(tty->dev, "%s\n", __func__);
274 tty_port_hangup(&port->port);
277 static void serial_close(struct tty_struct *tty, struct file *filp)
279 struct usb_serial_port *port = tty->driver_data;
281 dev_dbg(tty->dev, "%s\n", __func__);
283 tty_port_close(&port->port, tty, filp);
287 * serial_cleanup - free resources post close/hangup
288 * @port: port to free up
290 * Do the resource freeing and refcount dropping for the port.
291 * Avoid freeing the console.
293 * Called asynchronously after the last tty kref is dropped.
295 static void serial_cleanup(struct tty_struct *tty)
297 struct usb_serial_port *port = tty->driver_data;
298 struct usb_serial *serial;
299 struct module *owner;
301 dev_dbg(tty->dev, "%s\n", __func__);
303 /* The console is magical. Do not hang up the console hardware
304 * or there will be tears.
306 if (port->port.console)
309 tty->driver_data = NULL;
311 serial = port->serial;
312 owner = serial->type->driver.owner;
314 mutex_lock(&serial->disc_mutex);
315 if (!serial->disconnected)
316 usb_autopm_put_interface(serial->interface);
317 mutex_unlock(&serial->disc_mutex);
319 usb_serial_put(serial);
323 static int serial_write(struct tty_struct *tty, const unsigned char *buf,
326 struct usb_serial_port *port = tty->driver_data;
327 int retval = -ENODEV;
329 if (port->serial->dev->state == USB_STATE_NOTATTACHED)
332 dev_dbg(tty->dev, "%s - %d byte(s)\n", __func__, count);
334 retval = port->serial->type->write(tty, port, buf, count);
336 retval = usb_translate_errors(retval);
341 static int serial_write_room(struct tty_struct *tty)
343 struct usb_serial_port *port = tty->driver_data;
345 dev_dbg(tty->dev, "%s\n", __func__);
347 return port->serial->type->write_room(tty);
350 static int serial_chars_in_buffer(struct tty_struct *tty)
352 struct usb_serial_port *port = tty->driver_data;
353 struct usb_serial *serial = port->serial;
355 dev_dbg(tty->dev, "%s\n", __func__);
357 if (serial->disconnected)
360 return serial->type->chars_in_buffer(tty);
363 static void serial_wait_until_sent(struct tty_struct *tty, int timeout)
365 struct usb_serial_port *port = tty->driver_data;
366 struct usb_serial *serial = port->serial;
368 dev_dbg(tty->dev, "%s\n", __func__);
370 if (!port->serial->type->wait_until_sent)
373 mutex_lock(&serial->disc_mutex);
374 if (!serial->disconnected)
375 port->serial->type->wait_until_sent(tty, timeout);
376 mutex_unlock(&serial->disc_mutex);
379 static void serial_throttle(struct tty_struct *tty)
381 struct usb_serial_port *port = tty->driver_data;
383 dev_dbg(tty->dev, "%s\n", __func__);
385 if (port->serial->type->throttle)
386 port->serial->type->throttle(tty);
389 static void serial_unthrottle(struct tty_struct *tty)
391 struct usb_serial_port *port = tty->driver_data;
393 dev_dbg(tty->dev, "%s\n", __func__);
395 if (port->serial->type->unthrottle)
396 port->serial->type->unthrottle(tty);
399 static int serial_ioctl(struct tty_struct *tty,
400 unsigned int cmd, unsigned long arg)
402 struct usb_serial_port *port = tty->driver_data;
403 int retval = -ENOIOCTLCMD;
405 dev_dbg(tty->dev, "%s - cmd 0x%04x\n", __func__, cmd);
409 if (port->serial->type->tiocmiwait)
410 retval = port->serial->type->tiocmiwait(tty, arg);
413 if (port->serial->type->ioctl)
414 retval = port->serial->type->ioctl(tty, cmd, arg);
420 static void serial_set_termios(struct tty_struct *tty, struct ktermios *old)
422 struct usb_serial_port *port = tty->driver_data;
424 dev_dbg(tty->dev, "%s\n", __func__);
426 if (port->serial->type->set_termios)
427 port->serial->type->set_termios(tty, port, old);
429 tty_termios_copy_hw(&tty->termios, old);
432 static int serial_break(struct tty_struct *tty, int break_state)
434 struct usb_serial_port *port = tty->driver_data;
436 dev_dbg(tty->dev, "%s\n", __func__);
438 if (port->serial->type->break_ctl)
439 port->serial->type->break_ctl(tty, break_state);
444 static int serial_proc_show(struct seq_file *m, void *v)
446 struct usb_serial *serial;
447 struct usb_serial_port *port;
451 seq_puts(m, "usbserinfo:1.0 driver:2.0\n");
452 for (i = 0; i < USB_SERIAL_TTY_MINORS; ++i) {
453 port = usb_serial_port_get_by_minor(i);
456 serial = port->serial;
458 seq_printf(m, "%d:", i);
459 if (serial->type->driver.owner)
460 seq_printf(m, " module:%s",
461 module_name(serial->type->driver.owner));
462 seq_printf(m, " name:\"%s\"",
463 serial->type->description);
464 seq_printf(m, " vendor:%04x product:%04x",
465 le16_to_cpu(serial->dev->descriptor.idVendor),
466 le16_to_cpu(serial->dev->descriptor.idProduct));
467 seq_printf(m, " num_ports:%d", serial->num_ports);
468 seq_printf(m, " port:%d", port->port_number);
469 usb_make_path(serial->dev, tmp, sizeof(tmp));
470 seq_printf(m, " path:%s", tmp);
473 usb_serial_put(serial);
474 mutex_unlock(&serial->disc_mutex);
479 static int serial_tiocmget(struct tty_struct *tty)
481 struct usb_serial_port *port = tty->driver_data;
483 dev_dbg(tty->dev, "%s\n", __func__);
485 if (port->serial->type->tiocmget)
486 return port->serial->type->tiocmget(tty);
490 static int serial_tiocmset(struct tty_struct *tty,
491 unsigned int set, unsigned int clear)
493 struct usb_serial_port *port = tty->driver_data;
495 dev_dbg(tty->dev, "%s\n", __func__);
497 if (port->serial->type->tiocmset)
498 return port->serial->type->tiocmset(tty, set, clear);
502 static int serial_get_icount(struct tty_struct *tty,
503 struct serial_icounter_struct *icount)
505 struct usb_serial_port *port = tty->driver_data;
507 dev_dbg(tty->dev, "%s\n", __func__);
509 if (port->serial->type->get_icount)
510 return port->serial->type->get_icount(tty, icount);
515 * We would be calling tty_wakeup here, but unfortunately some line
516 * disciplines have an annoying habit of calling tty->write from
517 * the write wakeup callback (e.g. n_hdlc.c).
519 void usb_serial_port_softint(struct usb_serial_port *port)
521 schedule_work(&port->work);
523 EXPORT_SYMBOL_GPL(usb_serial_port_softint);
525 static void usb_serial_port_work(struct work_struct *work)
527 struct usb_serial_port *port =
528 container_of(work, struct usb_serial_port, work);
530 tty_port_tty_wakeup(&port->port);
533 static void usb_serial_port_poison_urbs(struct usb_serial_port *port)
537 for (i = 0; i < ARRAY_SIZE(port->read_urbs); ++i)
538 usb_poison_urb(port->read_urbs[i]);
539 for (i = 0; i < ARRAY_SIZE(port->write_urbs); ++i)
540 usb_poison_urb(port->write_urbs[i]);
542 usb_poison_urb(port->interrupt_in_urb);
543 usb_poison_urb(port->interrupt_out_urb);
546 static void usb_serial_port_unpoison_urbs(struct usb_serial_port *port)
550 for (i = 0; i < ARRAY_SIZE(port->read_urbs); ++i)
551 usb_unpoison_urb(port->read_urbs[i]);
552 for (i = 0; i < ARRAY_SIZE(port->write_urbs); ++i)
553 usb_unpoison_urb(port->write_urbs[i]);
555 usb_unpoison_urb(port->interrupt_in_urb);
556 usb_unpoison_urb(port->interrupt_out_urb);
559 static void usb_serial_port_release(struct device *dev)
561 struct usb_serial_port *port = to_usb_serial_port(dev);
564 dev_dbg(dev, "%s\n", __func__);
566 usb_free_urb(port->interrupt_in_urb);
567 usb_free_urb(port->interrupt_out_urb);
568 for (i = 0; i < ARRAY_SIZE(port->read_urbs); ++i) {
569 usb_free_urb(port->read_urbs[i]);
570 kfree(port->bulk_in_buffers[i]);
572 for (i = 0; i < ARRAY_SIZE(port->write_urbs); ++i) {
573 usb_free_urb(port->write_urbs[i]);
574 kfree(port->bulk_out_buffers[i]);
576 kfifo_free(&port->write_fifo);
577 kfree(port->interrupt_in_buffer);
578 kfree(port->interrupt_out_buffer);
579 tty_port_destroy(&port->port);
583 static struct usb_serial *create_serial(struct usb_device *dev,
584 struct usb_interface *interface,
585 struct usb_serial_driver *driver)
587 struct usb_serial *serial;
589 serial = kzalloc(sizeof(*serial), GFP_KERNEL);
592 serial->dev = usb_get_dev(dev);
593 serial->type = driver;
594 serial->interface = usb_get_intf(interface);
595 kref_init(&serial->kref);
596 mutex_init(&serial->disc_mutex);
597 serial->minors_reserved = 0;
602 static const struct usb_device_id *match_dynamic_id(struct usb_interface *intf,
603 struct usb_serial_driver *drv)
605 struct usb_dynid *dynid;
607 spin_lock(&drv->dynids.lock);
608 list_for_each_entry(dynid, &drv->dynids.list, node) {
609 if (usb_match_one_id(intf, &dynid->id)) {
610 spin_unlock(&drv->dynids.lock);
614 spin_unlock(&drv->dynids.lock);
618 static const struct usb_device_id *get_iface_id(struct usb_serial_driver *drv,
619 struct usb_interface *intf)
621 const struct usb_device_id *id;
623 id = usb_match_id(intf, drv->id_table);
625 dev_dbg(&intf->dev, "static descriptor matches\n");
628 id = match_dynamic_id(intf, drv);
630 dev_dbg(&intf->dev, "dynamic descriptor matches\n");
635 /* Caller must hold table_lock */
636 static struct usb_serial_driver *search_serial_device(
637 struct usb_interface *iface)
639 const struct usb_device_id *id = NULL;
640 struct usb_serial_driver *drv;
641 struct usb_driver *driver = to_usb_driver(iface->dev.driver);
643 /* Check if the usb id matches a known device */
644 list_for_each_entry(drv, &usb_serial_driver_list, driver_list) {
645 if (drv->usb_driver == driver)
646 id = get_iface_id(drv, iface);
654 static int serial_port_carrier_raised(struct tty_port *port)
656 struct usb_serial_port *p = container_of(port, struct usb_serial_port, port);
657 struct usb_serial_driver *drv = p->serial->type;
659 if (drv->carrier_raised)
660 return drv->carrier_raised(p);
661 /* No carrier control - don't block */
665 static void serial_port_dtr_rts(struct tty_port *port, int on)
667 struct usb_serial_port *p = container_of(port, struct usb_serial_port, port);
668 struct usb_serial_driver *drv = p->serial->type;
674 static ssize_t port_number_show(struct device *dev,
675 struct device_attribute *attr, char *buf)
677 struct usb_serial_port *port = to_usb_serial_port(dev);
679 return sprintf(buf, "%u\n", port->port_number);
681 static DEVICE_ATTR_RO(port_number);
683 static struct attribute *usb_serial_port_attrs[] = {
684 &dev_attr_port_number.attr,
687 ATTRIBUTE_GROUPS(usb_serial_port);
689 static const struct tty_port_operations serial_port_ops = {
690 .carrier_raised = serial_port_carrier_raised,
691 .dtr_rts = serial_port_dtr_rts,
692 .activate = serial_port_activate,
693 .shutdown = serial_port_shutdown,
696 static void find_endpoints(struct usb_serial *serial,
697 struct usb_serial_endpoints *epds)
699 struct device *dev = &serial->interface->dev;
700 struct usb_host_interface *iface_desc;
701 struct usb_endpoint_descriptor *epd;
704 BUILD_BUG_ON(ARRAY_SIZE(epds->bulk_in) < USB_MAXENDPOINTS / 2);
705 BUILD_BUG_ON(ARRAY_SIZE(epds->bulk_out) < USB_MAXENDPOINTS / 2);
706 BUILD_BUG_ON(ARRAY_SIZE(epds->interrupt_in) < USB_MAXENDPOINTS / 2);
707 BUILD_BUG_ON(ARRAY_SIZE(epds->interrupt_out) < USB_MAXENDPOINTS / 2);
709 iface_desc = serial->interface->cur_altsetting;
710 for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) {
711 epd = &iface_desc->endpoint[i].desc;
713 if (usb_endpoint_is_bulk_in(epd)) {
714 dev_dbg(dev, "found bulk in on endpoint %u\n", i);
715 epds->bulk_in[epds->num_bulk_in++] = epd;
716 } else if (usb_endpoint_is_bulk_out(epd)) {
717 dev_dbg(dev, "found bulk out on endpoint %u\n", i);
718 epds->bulk_out[epds->num_bulk_out++] = epd;
719 } else if (usb_endpoint_is_int_in(epd)) {
720 dev_dbg(dev, "found interrupt in on endpoint %u\n", i);
721 epds->interrupt_in[epds->num_interrupt_in++] = epd;
722 } else if (usb_endpoint_is_int_out(epd)) {
723 dev_dbg(dev, "found interrupt out on endpoint %u\n", i);
724 epds->interrupt_out[epds->num_interrupt_out++] = epd;
729 static int setup_port_bulk_in(struct usb_serial_port *port,
730 struct usb_endpoint_descriptor *epd)
732 struct usb_serial_driver *type = port->serial->type;
733 struct usb_device *udev = port->serial->dev;
737 buffer_size = max_t(int, type->bulk_in_size, usb_endpoint_maxp(epd));
738 port->bulk_in_size = buffer_size;
739 port->bulk_in_endpointAddress = epd->bEndpointAddress;
741 for (i = 0; i < ARRAY_SIZE(port->read_urbs); ++i) {
742 set_bit(i, &port->read_urbs_free);
743 port->read_urbs[i] = usb_alloc_urb(0, GFP_KERNEL);
744 if (!port->read_urbs[i])
746 port->bulk_in_buffers[i] = kmalloc(buffer_size, GFP_KERNEL);
747 if (!port->bulk_in_buffers[i])
749 usb_fill_bulk_urb(port->read_urbs[i], udev,
750 usb_rcvbulkpipe(udev, epd->bEndpointAddress),
751 port->bulk_in_buffers[i], buffer_size,
752 type->read_bulk_callback, port);
755 port->read_urb = port->read_urbs[0];
756 port->bulk_in_buffer = port->bulk_in_buffers[0];
761 static int setup_port_bulk_out(struct usb_serial_port *port,
762 struct usb_endpoint_descriptor *epd)
764 struct usb_serial_driver *type = port->serial->type;
765 struct usb_device *udev = port->serial->dev;
769 if (kfifo_alloc(&port->write_fifo, PAGE_SIZE, GFP_KERNEL))
771 if (type->bulk_out_size)
772 buffer_size = type->bulk_out_size;
774 buffer_size = usb_endpoint_maxp(epd);
775 port->bulk_out_size = buffer_size;
776 port->bulk_out_endpointAddress = epd->bEndpointAddress;
778 for (i = 0; i < ARRAY_SIZE(port->write_urbs); ++i) {
779 set_bit(i, &port->write_urbs_free);
780 port->write_urbs[i] = usb_alloc_urb(0, GFP_KERNEL);
781 if (!port->write_urbs[i])
783 port->bulk_out_buffers[i] = kmalloc(buffer_size, GFP_KERNEL);
784 if (!port->bulk_out_buffers[i])
786 usb_fill_bulk_urb(port->write_urbs[i], udev,
787 usb_sndbulkpipe(udev, epd->bEndpointAddress),
788 port->bulk_out_buffers[i], buffer_size,
789 type->write_bulk_callback, port);
792 port->write_urb = port->write_urbs[0];
793 port->bulk_out_buffer = port->bulk_out_buffers[0];
798 static int setup_port_interrupt_in(struct usb_serial_port *port,
799 struct usb_endpoint_descriptor *epd)
801 struct usb_serial_driver *type = port->serial->type;
802 struct usb_device *udev = port->serial->dev;
805 port->interrupt_in_urb = usb_alloc_urb(0, GFP_KERNEL);
806 if (!port->interrupt_in_urb)
808 buffer_size = usb_endpoint_maxp(epd);
809 port->interrupt_in_endpointAddress = epd->bEndpointAddress;
810 port->interrupt_in_buffer = kmalloc(buffer_size, GFP_KERNEL);
811 if (!port->interrupt_in_buffer)
813 usb_fill_int_urb(port->interrupt_in_urb, udev,
814 usb_rcvintpipe(udev, epd->bEndpointAddress),
815 port->interrupt_in_buffer, buffer_size,
816 type->read_int_callback, port,
822 static int setup_port_interrupt_out(struct usb_serial_port *port,
823 struct usb_endpoint_descriptor *epd)
825 struct usb_serial_driver *type = port->serial->type;
826 struct usb_device *udev = port->serial->dev;
829 port->interrupt_out_urb = usb_alloc_urb(0, GFP_KERNEL);
830 if (!port->interrupt_out_urb)
832 buffer_size = usb_endpoint_maxp(epd);
833 port->interrupt_out_size = buffer_size;
834 port->interrupt_out_endpointAddress = epd->bEndpointAddress;
835 port->interrupt_out_buffer = kmalloc(buffer_size, GFP_KERNEL);
836 if (!port->interrupt_out_buffer)
838 usb_fill_int_urb(port->interrupt_out_urb, udev,
839 usb_sndintpipe(udev, epd->bEndpointAddress),
840 port->interrupt_out_buffer, buffer_size,
841 type->write_int_callback, port,
847 static int usb_serial_probe(struct usb_interface *interface,
848 const struct usb_device_id *id)
850 struct device *ddev = &interface->dev;
851 struct usb_device *dev = interface_to_usbdev(interface);
852 struct usb_serial *serial = NULL;
853 struct usb_serial_port *port;
854 struct usb_serial_endpoints *epds;
855 struct usb_serial_driver *type = NULL;
859 unsigned char max_endpoints;
861 mutex_lock(&table_lock);
862 type = search_serial_device(interface);
864 mutex_unlock(&table_lock);
865 dev_dbg(ddev, "none matched\n");
869 if (!try_module_get(type->driver.owner)) {
870 mutex_unlock(&table_lock);
871 dev_err(ddev, "module get failed, exiting\n");
874 mutex_unlock(&table_lock);
876 serial = create_serial(dev, interface, type);
882 /* if this device type has a probe function, call it */
884 const struct usb_device_id *id;
886 id = get_iface_id(type, interface);
887 retval = type->probe(serial, id);
890 dev_dbg(ddev, "sub driver rejected device\n");
895 /* descriptor matches, let's find the endpoints needed */
896 epds = kzalloc(sizeof(*epds), GFP_KERNEL);
902 find_endpoints(serial, epds);
904 if (epds->num_bulk_in < type->num_bulk_in ||
905 epds->num_bulk_out < type->num_bulk_out ||
906 epds->num_interrupt_in < type->num_interrupt_in ||
907 epds->num_interrupt_out < type->num_interrupt_out) {
908 dev_err(ddev, "required endpoints missing\n");
913 if (type->calc_num_ports) {
914 retval = type->calc_num_ports(serial, epds);
921 num_ports = type->num_ports;
923 if (num_ports > MAX_NUM_PORTS) {
924 dev_warn(ddev, "too many ports requested: %d\n", num_ports);
925 num_ports = MAX_NUM_PORTS;
928 serial->num_ports = (unsigned char)num_ports;
929 serial->num_bulk_in = epds->num_bulk_in;
930 serial->num_bulk_out = epds->num_bulk_out;
931 serial->num_interrupt_in = epds->num_interrupt_in;
932 serial->num_interrupt_out = epds->num_interrupt_out;
934 /* found all that we need */
935 dev_info(ddev, "%s converter detected\n", type->description);
937 /* create our ports, we need as many as the max endpoints */
938 /* we don't use num_ports here because some devices have more
939 endpoint pairs than ports */
940 max_endpoints = max(epds->num_bulk_in, epds->num_bulk_out);
941 max_endpoints = max(max_endpoints, epds->num_interrupt_in);
942 max_endpoints = max(max_endpoints, epds->num_interrupt_out);
943 max_endpoints = max(max_endpoints, serial->num_ports);
944 serial->num_port_pointers = max_endpoints;
946 dev_dbg(ddev, "setting up %d port structure(s)\n", max_endpoints);
947 for (i = 0; i < max_endpoints; ++i) {
948 port = kzalloc(sizeof(struct usb_serial_port), GFP_KERNEL);
953 tty_port_init(&port->port);
954 port->port.ops = &serial_port_ops;
955 port->serial = serial;
956 spin_lock_init(&port->lock);
957 /* Keep this for private driver use for the moment but
958 should probably go away */
959 INIT_WORK(&port->work, usb_serial_port_work);
960 serial->port[i] = port;
961 port->dev.parent = &interface->dev;
962 port->dev.driver = NULL;
963 port->dev.bus = &usb_serial_bus_type;
964 port->dev.release = &usb_serial_port_release;
965 port->dev.groups = usb_serial_port_groups;
966 device_initialize(&port->dev);
969 /* set up the endpoint information */
970 for (i = 0; i < epds->num_bulk_in; ++i) {
971 retval = setup_port_bulk_in(serial->port[i], epds->bulk_in[i]);
976 for (i = 0; i < epds->num_bulk_out; ++i) {
977 retval = setup_port_bulk_out(serial->port[i],
983 if (serial->type->read_int_callback) {
984 for (i = 0; i < epds->num_interrupt_in; ++i) {
985 retval = setup_port_interrupt_in(serial->port[i],
986 epds->interrupt_in[i]);
990 } else if (epds->num_interrupt_in) {
991 dev_dbg(ddev, "The device claims to support interrupt in transfers, but read_int_callback is not defined\n");
994 if (serial->type->write_int_callback) {
995 for (i = 0; i < epds->num_interrupt_out; ++i) {
996 retval = setup_port_interrupt_out(serial->port[i],
997 epds->interrupt_out[i]);
1001 } else if (epds->num_interrupt_out) {
1002 dev_dbg(ddev, "The device claims to support interrupt out transfers, but write_int_callback is not defined\n");
1005 usb_set_intfdata(interface, serial);
1007 /* if this device type has an attach function, call it */
1009 retval = type->attach(serial);
1012 serial->attached = 1;
1014 /* quietly accept this device, but don't bind to a
1015 serial port as it's about to disappear */
1016 serial->num_ports = 0;
1020 serial->attached = 1;
1023 retval = allocate_minors(serial, num_ports);
1025 dev_err(ddev, "No more free serial minor numbers\n");
1029 /* register all of the individual ports with the driver core */
1030 for (i = 0; i < num_ports; ++i) {
1031 port = serial->port[i];
1032 dev_set_name(&port->dev, "ttyUSB%d", port->minor);
1033 dev_dbg(ddev, "registering %s\n", dev_name(&port->dev));
1034 device_enable_async_suspend(&port->dev);
1036 retval = device_add(&port->dev);
1038 dev_err(ddev, "Error registering port device, continuing\n");
1042 usb_serial_console_init(serial->port[0]->minor);
1045 module_put(type->driver.owner);
1051 usb_serial_put(serial);
1053 module_put(type->driver.owner);
1058 static void usb_serial_disconnect(struct usb_interface *interface)
1061 struct usb_serial *serial = usb_get_intfdata(interface);
1062 struct device *dev = &interface->dev;
1063 struct usb_serial_port *port;
1064 struct tty_struct *tty;
1066 usb_serial_console_disconnect(serial);
1068 mutex_lock(&serial->disc_mutex);
1069 /* must set a flag, to signal subdrivers */
1070 serial->disconnected = 1;
1071 mutex_unlock(&serial->disc_mutex);
1073 for (i = 0; i < serial->num_ports; ++i) {
1074 port = serial->port[i];
1075 tty = tty_port_tty_get(&port->port);
1080 usb_serial_port_poison_urbs(port);
1081 wake_up_interruptible(&port->port.delta_msr_wait);
1082 cancel_work_sync(&port->work);
1083 if (device_is_registered(&port->dev))
1084 device_del(&port->dev);
1086 if (serial->type->disconnect)
1087 serial->type->disconnect(serial);
1089 /* let the last holder of this object cause it to be cleaned up */
1090 usb_serial_put(serial);
1091 dev_info(dev, "device disconnected\n");
1094 int usb_serial_suspend(struct usb_interface *intf, pm_message_t message)
1096 struct usb_serial *serial = usb_get_intfdata(intf);
1099 serial->suspending = 1;
1102 * serial->type->suspend() MUST return 0 in system sleep context,
1103 * otherwise, the resume callback has to recover device from
1104 * previous suspend failure.
1106 if (serial->type->suspend) {
1107 r = serial->type->suspend(serial, message);
1109 serial->suspending = 0;
1114 for (i = 0; i < serial->num_ports; ++i)
1115 usb_serial_port_poison_urbs(serial->port[i]);
1119 EXPORT_SYMBOL(usb_serial_suspend);
1121 static void usb_serial_unpoison_port_urbs(struct usb_serial *serial)
1125 for (i = 0; i < serial->num_ports; ++i)
1126 usb_serial_port_unpoison_urbs(serial->port[i]);
1129 int usb_serial_resume(struct usb_interface *intf)
1131 struct usb_serial *serial = usb_get_intfdata(intf);
1134 usb_serial_unpoison_port_urbs(serial);
1136 serial->suspending = 0;
1137 if (serial->type->resume)
1138 rv = serial->type->resume(serial);
1140 rv = usb_serial_generic_resume(serial);
1144 EXPORT_SYMBOL(usb_serial_resume);
1146 static int usb_serial_reset_resume(struct usb_interface *intf)
1148 struct usb_serial *serial = usb_get_intfdata(intf);
1151 usb_serial_unpoison_port_urbs(serial);
1153 serial->suspending = 0;
1154 if (serial->type->reset_resume) {
1155 rv = serial->type->reset_resume(serial);
1158 intf->needs_binding = 1;
1164 static const struct tty_operations serial_ops = {
1165 .open = serial_open,
1166 .close = serial_close,
1167 .write = serial_write,
1168 .hangup = serial_hangup,
1169 .write_room = serial_write_room,
1170 .ioctl = serial_ioctl,
1171 .set_termios = serial_set_termios,
1172 .throttle = serial_throttle,
1173 .unthrottle = serial_unthrottle,
1174 .break_ctl = serial_break,
1175 .chars_in_buffer = serial_chars_in_buffer,
1176 .wait_until_sent = serial_wait_until_sent,
1177 .tiocmget = serial_tiocmget,
1178 .tiocmset = serial_tiocmset,
1179 .get_icount = serial_get_icount,
1180 .cleanup = serial_cleanup,
1181 .install = serial_install,
1182 .proc_show = serial_proc_show,
1186 struct tty_driver *usb_serial_tty_driver;
1188 static int __init usb_serial_init(void)
1192 usb_serial_tty_driver = alloc_tty_driver(USB_SERIAL_TTY_MINORS);
1193 if (!usb_serial_tty_driver)
1196 /* Initialize our global data */
1197 result = bus_register(&usb_serial_bus_type);
1199 pr_err("%s - registering bus driver failed\n", __func__);
1203 usb_serial_tty_driver->driver_name = "usbserial";
1204 usb_serial_tty_driver->name = "ttyUSB";
1205 usb_serial_tty_driver->major = USB_SERIAL_TTY_MAJOR;
1206 usb_serial_tty_driver->minor_start = 0;
1207 usb_serial_tty_driver->type = TTY_DRIVER_TYPE_SERIAL;
1208 usb_serial_tty_driver->subtype = SERIAL_TYPE_NORMAL;
1209 usb_serial_tty_driver->flags = TTY_DRIVER_REAL_RAW |
1210 TTY_DRIVER_DYNAMIC_DEV;
1211 usb_serial_tty_driver->init_termios = tty_std_termios;
1212 usb_serial_tty_driver->init_termios.c_cflag = B9600 | CS8 | CREAD
1214 usb_serial_tty_driver->init_termios.c_ispeed = 9600;
1215 usb_serial_tty_driver->init_termios.c_ospeed = 9600;
1216 tty_set_operations(usb_serial_tty_driver, &serial_ops);
1217 result = tty_register_driver(usb_serial_tty_driver);
1219 pr_err("%s - tty_register_driver failed\n", __func__);
1220 goto exit_reg_driver;
1223 /* register the generic driver, if we should */
1224 result = usb_serial_generic_register();
1226 pr_err("%s - registering generic driver failed\n", __func__);
1233 tty_unregister_driver(usb_serial_tty_driver);
1236 bus_unregister(&usb_serial_bus_type);
1239 pr_err("%s - returning with error %d\n", __func__, result);
1240 put_tty_driver(usb_serial_tty_driver);
1245 static void __exit usb_serial_exit(void)
1247 usb_serial_console_exit();
1249 usb_serial_generic_deregister();
1251 tty_unregister_driver(usb_serial_tty_driver);
1252 put_tty_driver(usb_serial_tty_driver);
1253 bus_unregister(&usb_serial_bus_type);
1254 idr_destroy(&serial_minors);
1258 module_init(usb_serial_init);
1259 module_exit(usb_serial_exit);
1261 #define set_to_generic_if_null(type, function) \
1263 if (!type->function) { \
1264 type->function = usb_serial_generic_##function; \
1265 pr_debug("%s: using generic " #function "\n", \
1266 type->driver.name); \
1270 static void usb_serial_operations_init(struct usb_serial_driver *device)
1272 set_to_generic_if_null(device, open);
1273 set_to_generic_if_null(device, write);
1274 set_to_generic_if_null(device, close);
1275 set_to_generic_if_null(device, write_room);
1276 set_to_generic_if_null(device, chars_in_buffer);
1277 if (device->tx_empty)
1278 set_to_generic_if_null(device, wait_until_sent);
1279 set_to_generic_if_null(device, read_bulk_callback);
1280 set_to_generic_if_null(device, write_bulk_callback);
1281 set_to_generic_if_null(device, process_read_urb);
1282 set_to_generic_if_null(device, prepare_write_buffer);
1285 static int usb_serial_register(struct usb_serial_driver *driver)
1292 if (!driver->description)
1293 driver->description = driver->driver.name;
1294 if (!driver->usb_driver) {
1295 WARN(1, "Serial driver %s has no usb_driver\n",
1296 driver->description);
1300 usb_serial_operations_init(driver);
1302 /* Add this device to our list of devices */
1303 mutex_lock(&table_lock);
1304 list_add(&driver->driver_list, &usb_serial_driver_list);
1306 retval = usb_serial_bus_register(driver);
1308 pr_err("problem %d when registering driver %s\n", retval, driver->description);
1309 list_del(&driver->driver_list);
1311 pr_info("USB Serial support registered for %s\n", driver->description);
1313 mutex_unlock(&table_lock);
1317 static void usb_serial_deregister(struct usb_serial_driver *device)
1319 pr_info("USB Serial deregistering driver %s\n", device->description);
1321 mutex_lock(&table_lock);
1322 list_del(&device->driver_list);
1323 mutex_unlock(&table_lock);
1325 usb_serial_bus_deregister(device);
1329 * usb_serial_register_drivers - register drivers for a usb-serial module
1330 * @serial_drivers: NULL-terminated array of pointers to drivers to be registered
1331 * @name: name of the usb_driver for this set of @serial_drivers
1332 * @id_table: list of all devices this @serial_drivers set binds to
1334 * Registers all the drivers in the @serial_drivers array, and dynamically
1335 * creates a struct usb_driver with the name @name and id_table of @id_table.
1337 int usb_serial_register_drivers(struct usb_serial_driver *const serial_drivers[],
1339 const struct usb_device_id *id_table)
1342 struct usb_driver *udriver;
1343 struct usb_serial_driver * const *sd;
1346 * udriver must be registered before any of the serial drivers,
1347 * because the store_new_id() routine for the serial drivers (in
1348 * bus.c) probes udriver.
1350 * Performance hack: We don't want udriver to be probed until
1351 * the serial drivers are registered, because the probe would
1352 * simply fail for lack of a matching serial driver.
1353 * So we leave udriver's id_table set to NULL until we are all set.
1355 * Suspend/resume support is implemented in the usb-serial core,
1356 * so fill in the PM-related fields in udriver.
1358 udriver = kzalloc(sizeof(*udriver), GFP_KERNEL);
1362 udriver->name = name;
1363 udriver->no_dynamic_id = 1;
1364 udriver->supports_autosuspend = 1;
1365 udriver->suspend = usb_serial_suspend;
1366 udriver->resume = usb_serial_resume;
1367 udriver->probe = usb_serial_probe;
1368 udriver->disconnect = usb_serial_disconnect;
1370 /* we only set the reset_resume field if the serial_driver has one */
1371 for (sd = serial_drivers; *sd; ++sd) {
1372 if ((*sd)->reset_resume) {
1373 udriver->reset_resume = usb_serial_reset_resume;
1378 rc = usb_register(udriver);
1380 goto failed_usb_register;
1382 for (sd = serial_drivers; *sd; ++sd) {
1383 (*sd)->usb_driver = udriver;
1384 rc = usb_serial_register(*sd);
1389 /* Now set udriver's id_table and look for matches */
1390 udriver->id_table = id_table;
1391 rc = driver_attach(&udriver->drvwrap.driver);
1395 while (sd-- > serial_drivers)
1396 usb_serial_deregister(*sd);
1397 usb_deregister(udriver);
1398 failed_usb_register:
1402 EXPORT_SYMBOL_GPL(usb_serial_register_drivers);
1405 * usb_serial_deregister_drivers - deregister drivers for a usb-serial module
1406 * @serial_drivers: NULL-terminated array of pointers to drivers to be deregistered
1408 * Deregisters all the drivers in the @serial_drivers array and deregisters and
1409 * frees the struct usb_driver that was created by the call to
1410 * usb_serial_register_drivers().
1412 void usb_serial_deregister_drivers(struct usb_serial_driver *const serial_drivers[])
1414 struct usb_driver *udriver = (*serial_drivers)->usb_driver;
1416 for (; *serial_drivers; ++serial_drivers)
1417 usb_serial_deregister(*serial_drivers);
1418 usb_deregister(udriver);
1421 EXPORT_SYMBOL_GPL(usb_serial_deregister_drivers);
1423 MODULE_AUTHOR(DRIVER_AUTHOR);
1424 MODULE_DESCRIPTION(DRIVER_DESC);
1425 MODULE_LICENSE("GPL v2");