2 * USB Serial Converter driver
4 * Copyright (C) 1999 - 2005 Greg Kroah-Hartman (greg@kroah.com)
5 * Copyright (C) 2000 Peter Berger (pberger@brimson.com)
6 * Copyright (C) 2000 Al Borchers (borchers@steinerpoint.com)
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License version
10 * 2 as published by the Free Software Foundation.
12 * This driver was originally based on the ACM driver by Armin Fuerst (which was
13 * based on a driver by Brad Keryan)
15 * See Documentation/usb/usb-serial.txt for more information on using this driver
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/spinlock.h>
29 #include <linux/mutex.h>
30 #include <linux/list.h>
31 #include <asm/uaccess.h>
32 #include <linux/usb.h>
33 #include <linux/usb/serial.h>
39 #define DRIVER_AUTHOR "Greg Kroah-Hartman, greg@kroah.com, http://www.kroah.com/linux/"
40 #define DRIVER_DESC "USB Serial Driver core"
42 static void port_free(struct usb_serial_port *port);
44 /* Driver structure we register with the USB core */
45 static struct usb_driver usb_serial_driver = {
47 .probe = usb_serial_probe,
48 .disconnect = usb_serial_disconnect,
49 .suspend = usb_serial_suspend,
50 .resume = usb_serial_resume,
54 /* There is no MODULE_DEVICE_TABLE for usbserial.c. Instead
55 the MODULE_DEVICE_TABLE declarations in each serial driver
56 cause the "hotplug" program to pull in whatever module is necessary
57 via modprobe, and modprobe will load usbserial because the serial
62 static struct usb_serial *serial_table[SERIAL_TTY_MINORS]; /* initially all NULL */
63 static DEFINE_MUTEX(table_lock);
64 static LIST_HEAD(usb_serial_driver_list);
66 struct usb_serial *usb_serial_get_by_index(unsigned index)
68 struct usb_serial *serial;
70 mutex_lock(&table_lock);
71 serial = serial_table[index];
74 kref_get(&serial->kref);
75 mutex_unlock(&table_lock);
79 static struct usb_serial *get_free_serial (struct usb_serial *serial, int num_ports, unsigned int *minor)
84 dbg("%s %d", __FUNCTION__, num_ports);
87 mutex_lock(&table_lock);
88 for (i = 0; i < SERIAL_TTY_MINORS; ++i) {
93 for (j = 1; j <= num_ports-1; ++j)
94 if ((i+j >= SERIAL_TTY_MINORS) || (serial_table[i+j])) {
104 dbg("%s - minor base = %d", __FUNCTION__, *minor);
105 for (i = *minor; (i < (*minor + num_ports)) && (i < SERIAL_TTY_MINORS); ++i) {
106 serial_table[i] = serial;
107 serial->port[j++]->number = i;
109 mutex_unlock(&table_lock);
112 mutex_unlock(&table_lock);
116 static void return_serial(struct usb_serial *serial)
120 dbg("%s", __FUNCTION__);
125 for (i = 0; i < serial->num_ports; ++i) {
126 serial_table[serial->minor + i] = NULL;
130 static void destroy_serial(struct kref *kref)
132 struct usb_serial *serial;
133 struct usb_serial_port *port;
136 serial = to_usb_serial(kref);
138 dbg("%s - %s", __FUNCTION__, serial->type->description);
140 serial->type->shutdown(serial);
142 /* return the minor range that this device had */
143 return_serial(serial);
145 for (i = 0; i < serial->num_ports; ++i)
146 serial->port[i]->open_count = 0;
148 /* the ports are cleaned up and released in port_release() */
149 for (i = 0; i < serial->num_ports; ++i)
150 if (serial->port[i]->dev.parent != NULL) {
151 device_unregister(&serial->port[i]->dev);
152 serial->port[i] = NULL;
155 /* If this is a "fake" port, we have to clean it up here, as it will
156 * not get cleaned up in port_release() as it was never registered with
158 if (serial->num_ports < serial->num_port_pointers) {
159 for (i = serial->num_ports; i < serial->num_port_pointers; ++i) {
160 port = serial->port[i];
167 usb_put_dev(serial->dev);
169 /* free up any memory that we allocated */
173 void usb_serial_put(struct usb_serial *serial)
175 mutex_lock(&table_lock);
176 kref_put(&serial->kref, destroy_serial);
177 mutex_unlock(&table_lock);
180 /*****************************************************************************
181 * Driver tty interface functions
182 *****************************************************************************/
183 static int serial_open (struct tty_struct *tty, struct file * filp)
185 struct usb_serial *serial;
186 struct usb_serial_port *port;
187 unsigned int portNumber;
190 dbg("%s", __FUNCTION__);
192 /* get the serial object associated with this tty pointer */
193 serial = usb_serial_get_by_index(tty->index);
195 tty->driver_data = NULL;
199 portNumber = tty->index - serial->minor;
200 port = serial->port[portNumber];
203 goto bailout_kref_put;
206 if (mutex_lock_interruptible(&port->mutex)) {
207 retval = -ERESTARTSYS;
208 goto bailout_kref_put;
213 /* set up our port structure making the tty driver
214 * remember our port object, and us it */
215 tty->driver_data = port;
218 if (port->open_count == 1) {
220 /* lock this module before we call it
221 * this may fail, which means we must bail out,
222 * safe because we are called with BKL held */
223 if (!try_module_get(serial->type->driver.owner)) {
225 goto bailout_mutex_unlock;
228 /* only call the device specific open if this
229 * is the first time the port is opened */
230 retval = serial->type->open(port, filp);
232 goto bailout_module_put;
235 mutex_unlock(&port->mutex);
239 module_put(serial->type->driver.owner);
240 bailout_mutex_unlock:
241 port->open_count = 0;
242 tty->driver_data = NULL;
244 mutex_unlock(&port->mutex);
246 usb_serial_put(serial);
250 static void serial_close(struct tty_struct *tty, struct file * filp)
252 struct usb_serial_port *port = tty->driver_data;
257 dbg("%s - port %d", __FUNCTION__, port->number);
259 mutex_lock(&port->mutex);
261 if (port->open_count == 0) {
262 mutex_unlock(&port->mutex);
267 if (port->open_count == 0) {
268 /* only call the device specific close if this
269 * port is being closed by the last owner */
270 port->serial->type->close(port, filp);
273 if (port->tty->driver_data)
274 port->tty->driver_data = NULL;
278 module_put(port->serial->type->driver.owner);
281 mutex_unlock(&port->mutex);
282 usb_serial_put(port->serial);
285 static int serial_write (struct tty_struct * tty, const unsigned char *buf, int count)
287 struct usb_serial_port *port = tty->driver_data;
288 int retval = -ENODEV;
290 if (!port || port->serial->dev->state == USB_STATE_NOTATTACHED)
293 dbg("%s - port %d, %d byte(s)", __FUNCTION__, port->number, count);
295 if (!port->open_count) {
297 dbg("%s - port not opened", __FUNCTION__);
301 /* pass on to the driver specific version of this function */
302 retval = port->serial->type->write(port, buf, count);
308 static int serial_write_room (struct tty_struct *tty)
310 struct usb_serial_port *port = tty->driver_data;
311 int retval = -ENODEV;
316 dbg("%s - port %d", __FUNCTION__, port->number);
318 if (!port->open_count) {
319 dbg("%s - port not open", __FUNCTION__);
323 /* pass on to the driver specific version of this function */
324 retval = port->serial->type->write_room(port);
330 static int serial_chars_in_buffer (struct tty_struct *tty)
332 struct usb_serial_port *port = tty->driver_data;
333 int retval = -ENODEV;
338 dbg("%s = port %d", __FUNCTION__, port->number);
340 if (!port->open_count) {
341 dbg("%s - port not open", __FUNCTION__);
345 /* pass on to the driver specific version of this function */
346 retval = port->serial->type->chars_in_buffer(port);
352 static void serial_throttle (struct tty_struct * tty)
354 struct usb_serial_port *port = tty->driver_data;
359 dbg("%s - port %d", __FUNCTION__, port->number);
361 if (!port->open_count) {
362 dbg ("%s - port not open", __FUNCTION__);
366 /* pass on to the driver specific version of this function */
367 if (port->serial->type->throttle)
368 port->serial->type->throttle(port);
371 static void serial_unthrottle (struct tty_struct * tty)
373 struct usb_serial_port *port = tty->driver_data;
378 dbg("%s - port %d", __FUNCTION__, port->number);
380 if (!port->open_count) {
381 dbg("%s - port not open", __FUNCTION__);
385 /* pass on to the driver specific version of this function */
386 if (port->serial->type->unthrottle)
387 port->serial->type->unthrottle(port);
390 static int serial_ioctl (struct tty_struct *tty, struct file * file, unsigned int cmd, unsigned long arg)
392 struct usb_serial_port *port = tty->driver_data;
393 int retval = -ENODEV;
398 dbg("%s - port %d, cmd 0x%.4x", __FUNCTION__, port->number, cmd);
400 if (!port->open_count) {
401 dbg ("%s - port not open", __FUNCTION__);
405 /* pass on to the driver specific version of this function if it is available */
406 if (port->serial->type->ioctl)
407 retval = port->serial->type->ioctl(port, file, cmd, arg);
409 retval = -ENOIOCTLCMD;
415 static void serial_set_termios (struct tty_struct *tty, struct ktermios * old)
417 struct usb_serial_port *port = tty->driver_data;
422 dbg("%s - port %d", __FUNCTION__, port->number);
424 if (!port->open_count) {
425 dbg("%s - port not open", __FUNCTION__);
429 /* pass on to the driver specific version of this function if it is available */
430 if (port->serial->type->set_termios)
431 port->serial->type->set_termios(port, old);
434 static void serial_break (struct tty_struct *tty, int break_state)
436 struct usb_serial_port *port = tty->driver_data;
441 dbg("%s - port %d", __FUNCTION__, port->number);
443 if (!port->open_count) {
444 dbg("%s - port not open", __FUNCTION__);
448 /* pass on to the driver specific version of this function if it is available */
449 if (port->serial->type->break_ctl)
450 port->serial->type->break_ctl(port, break_state);
453 static int serial_read_proc (char *page, char **start, off_t off, int count, int *eof, void *data)
455 struct usb_serial *serial;
461 dbg("%s", __FUNCTION__);
462 length += sprintf (page, "usbserinfo:1.0 driver:2.0\n");
463 for (i = 0; i < SERIAL_TTY_MINORS && length < PAGE_SIZE; ++i) {
464 serial = usb_serial_get_by_index(i);
468 length += sprintf (page+length, "%d:", i);
469 if (serial->type->driver.owner)
470 length += sprintf (page+length, " module:%s", module_name(serial->type->driver.owner));
471 length += sprintf (page+length, " name:\"%s\"", serial->type->description);
472 length += sprintf (page+length, " vendor:%04x product:%04x",
473 le16_to_cpu(serial->dev->descriptor.idVendor),
474 le16_to_cpu(serial->dev->descriptor.idProduct));
475 length += sprintf (page+length, " num_ports:%d", serial->num_ports);
476 length += sprintf (page+length, " port:%d", i - serial->minor + 1);
478 usb_make_path(serial->dev, tmp, sizeof(tmp));
479 length += sprintf (page+length, " path:%s", tmp);
481 length += sprintf (page+length, "\n");
482 if ((length + begin) > (off + count)) {
483 usb_serial_put(serial);
486 if ((length + begin) < off) {
490 usb_serial_put(serial);
494 if (off >= (length + begin))
496 *start = page + (off-begin);
497 return ((count < begin+length-off) ? count : begin+length-off);
500 static int serial_tiocmget (struct tty_struct *tty, struct file *file)
502 struct usb_serial_port *port = tty->driver_data;
507 dbg("%s - port %d", __FUNCTION__, port->number);
509 if (!port->open_count) {
510 dbg("%s - port not open", __FUNCTION__);
514 if (port->serial->type->tiocmget)
515 return port->serial->type->tiocmget(port, file);
520 static int serial_tiocmset (struct tty_struct *tty, struct file *file,
521 unsigned int set, unsigned int clear)
523 struct usb_serial_port *port = tty->driver_data;
528 dbg("%s - port %d", __FUNCTION__, port->number);
530 if (!port->open_count) {
531 dbg("%s - port not open", __FUNCTION__);
535 if (port->serial->type->tiocmset)
536 return port->serial->type->tiocmset(port, file, set, clear);
542 * We would be calling tty_wakeup here, but unfortunately some line
543 * disciplines have an annoying habit of calling tty->write from
544 * the write wakeup callback (e.g. n_hdlc.c).
546 void usb_serial_port_softint(struct usb_serial_port *port)
548 schedule_work(&port->work);
551 static void usb_serial_port_work(struct work_struct *work)
553 struct usb_serial_port *port =
554 container_of(work, struct usb_serial_port, work);
555 struct tty_struct *tty;
557 dbg("%s - port %d", __FUNCTION__, port->number);
569 static void port_release(struct device *dev)
571 struct usb_serial_port *port = to_usb_serial_port(dev);
573 dbg ("%s - %s", __FUNCTION__, dev->bus_id);
577 static void kill_traffic(struct usb_serial_port *port)
579 usb_kill_urb(port->read_urb);
580 usb_kill_urb(port->write_urb);
583 * Some drivers submit the read_urb in the
584 * handler for the write_urb or vice versa
585 * this order determines the order in which
586 * usb_kill_urb() must be used to reliably
587 * kill the URBs. As it is unknown here,
588 * both orders must be used in turn.
589 * The call below is not redundant.
591 usb_kill_urb(port->read_urb);
592 usb_kill_urb(port->interrupt_in_urb);
593 usb_kill_urb(port->interrupt_out_urb);
596 static void port_free(struct usb_serial_port *port)
599 usb_free_urb(port->read_urb);
600 usb_free_urb(port->write_urb);
601 usb_free_urb(port->interrupt_in_urb);
602 usb_free_urb(port->interrupt_out_urb);
603 kfree(port->bulk_in_buffer);
604 kfree(port->bulk_out_buffer);
605 kfree(port->interrupt_in_buffer);
606 kfree(port->interrupt_out_buffer);
607 flush_scheduled_work(); /* port->work */
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);
619 dev_err(&dev->dev, "%s - out of memory\n", __FUNCTION__);
622 serial->dev = usb_get_dev(dev);
623 serial->type = driver;
624 serial->interface = interface;
625 kref_init(&serial->kref);
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 dbg("static descriptor matches");
656 id = match_dynamic_id(intf, drv);
658 dbg("dynamic descriptor matches");
663 static struct usb_serial_driver *search_serial_device(struct usb_interface *iface)
666 const struct usb_device_id *id;
667 struct usb_serial_driver *t;
669 /* Check if the usb id matches a known device */
670 list_for_each(p, &usb_serial_driver_list) {
671 t = list_entry(p, struct usb_serial_driver, driver_list);
672 id = get_iface_id(t, iface);
680 int usb_serial_probe(struct usb_interface *interface,
681 const struct usb_device_id *id)
683 struct usb_device *dev = interface_to_usbdev (interface);
684 struct usb_serial *serial = NULL;
685 struct usb_serial_port *port;
686 struct usb_host_interface *iface_desc;
687 struct usb_endpoint_descriptor *endpoint;
688 struct usb_endpoint_descriptor *interrupt_in_endpoint[MAX_NUM_PORTS];
689 struct usb_endpoint_descriptor *interrupt_out_endpoint[MAX_NUM_PORTS];
690 struct usb_endpoint_descriptor *bulk_in_endpoint[MAX_NUM_PORTS];
691 struct usb_endpoint_descriptor *bulk_out_endpoint[MAX_NUM_PORTS];
692 struct usb_serial_driver *type = NULL;
697 int num_interrupt_in = 0;
698 int num_interrupt_out = 0;
700 int num_bulk_out = 0;
704 lock_kernel(); /* guard against unloading a serial driver module */
705 type = search_serial_device(interface);
712 serial = create_serial (dev, interface, type);
715 dev_err(&interface->dev, "%s - out of memory\n", __FUNCTION__);
719 /* if this device type has a probe function, call it */
721 const struct usb_device_id *id;
723 if (!try_module_get(type->driver.owner)) {
725 dev_err(&interface->dev, "module get failed, exiting\n");
730 id = get_iface_id(type, interface);
731 retval = type->probe(serial, id);
732 module_put(type->driver.owner);
736 dbg ("sub driver rejected device");
742 /* descriptor matches, let's find the endpoints needed */
743 /* check out the endpoints */
744 iface_desc = interface->cur_altsetting;
745 for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) {
746 endpoint = &iface_desc->endpoint[i].desc;
748 if (usb_endpoint_is_bulk_in(endpoint)) {
749 /* we found a bulk in endpoint */
750 dbg("found bulk in on endpoint %d", i);
751 bulk_in_endpoint[num_bulk_in] = endpoint;
755 if (usb_endpoint_is_bulk_out(endpoint)) {
756 /* we found a bulk out endpoint */
757 dbg("found bulk out on endpoint %d", i);
758 bulk_out_endpoint[num_bulk_out] = endpoint;
762 if (usb_endpoint_is_int_in(endpoint)) {
763 /* we found a interrupt in endpoint */
764 dbg("found interrupt in on endpoint %d", i);
765 interrupt_in_endpoint[num_interrupt_in] = endpoint;
769 if (usb_endpoint_is_int_out(endpoint)) {
770 /* we found an interrupt out endpoint */
771 dbg("found interrupt out on endpoint %d", i);
772 interrupt_out_endpoint[num_interrupt_out] = endpoint;
777 #if defined(CONFIG_USB_SERIAL_PL2303) || defined(CONFIG_USB_SERIAL_PL2303_MODULE)
778 /* BEGIN HORRIBLE HACK FOR PL2303 */
779 /* this is needed due to the looney way its endpoints are set up */
780 if (((le16_to_cpu(dev->descriptor.idVendor) == PL2303_VENDOR_ID) &&
781 (le16_to_cpu(dev->descriptor.idProduct) == PL2303_PRODUCT_ID)) ||
782 ((le16_to_cpu(dev->descriptor.idVendor) == ATEN_VENDOR_ID) &&
783 (le16_to_cpu(dev->descriptor.idProduct) == ATEN_PRODUCT_ID)) ||
784 ((le16_to_cpu(dev->descriptor.idVendor) == ALCOR_VENDOR_ID) &&
785 (le16_to_cpu(dev->descriptor.idProduct) == ALCOR_PRODUCT_ID))) {
786 if (interface != dev->actconfig->interface[0]) {
787 /* check out the endpoints of the other interface*/
788 iface_desc = dev->actconfig->interface[0]->cur_altsetting;
789 for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) {
790 endpoint = &iface_desc->endpoint[i].desc;
791 if (usb_endpoint_is_int_in(endpoint)) {
792 /* we found a interrupt in endpoint */
793 dbg("found interrupt in for Prolific device on separate interface");
794 interrupt_in_endpoint[num_interrupt_in] = endpoint;
800 /* Now make sure the PL-2303 is configured correctly.
801 * If not, give up now and hope this hack will work
802 * properly during a later invocation of usb_serial_probe
804 if (num_bulk_in == 0 || num_bulk_out == 0) {
806 dev_info(&interface->dev, "PL-2303 hack: descriptors matched but endpoints did not\n");
811 /* END HORRIBLE HACK FOR PL2303 */
814 /* found all that we need */
815 dev_info(&interface->dev, "%s converter detected\n", type->description);
817 #ifdef CONFIG_USB_SERIAL_GENERIC
818 if (type == &usb_serial_generic_device) {
819 num_ports = num_bulk_out;
820 if (num_ports == 0) {
822 dev_err(&interface->dev, "Generic device with no bulk out, not allowed.\n");
829 /* if this device type has a calc_num_ports function, call it */
830 if (type->calc_num_ports) {
831 if (!try_module_get(type->driver.owner)) {
833 dev_err(&interface->dev, "module get failed, exiting\n");
837 num_ports = type->calc_num_ports (serial);
838 module_put(type->driver.owner);
841 num_ports = type->num_ports;
844 serial->num_ports = num_ports;
845 serial->num_bulk_in = num_bulk_in;
846 serial->num_bulk_out = num_bulk_out;
847 serial->num_interrupt_in = num_interrupt_in;
848 serial->num_interrupt_out = num_interrupt_out;
850 /* create our ports, we need as many as the max endpoints */
851 /* we don't use num_ports here cauz some devices have more endpoint pairs than ports */
852 max_endpoints = max(num_bulk_in, num_bulk_out);
853 max_endpoints = max(max_endpoints, num_interrupt_in);
854 max_endpoints = max(max_endpoints, num_interrupt_out);
855 max_endpoints = max(max_endpoints, (int)serial->num_ports);
856 serial->num_port_pointers = max_endpoints;
859 dbg("%s - setting up %d port structures for this device", __FUNCTION__, max_endpoints);
860 for (i = 0; i < max_endpoints; ++i) {
861 port = kzalloc(sizeof(struct usb_serial_port), GFP_KERNEL);
864 port->serial = serial;
865 spin_lock_init(&port->lock);
866 mutex_init(&port->mutex);
867 INIT_WORK(&port->work, usb_serial_port_work);
868 serial->port[i] = port;
871 /* set up the endpoint information */
872 for (i = 0; i < num_bulk_in; ++i) {
873 endpoint = bulk_in_endpoint[i];
874 port = serial->port[i];
875 port->read_urb = usb_alloc_urb (0, GFP_KERNEL);
876 if (!port->read_urb) {
877 dev_err(&interface->dev, "No free urbs available\n");
880 buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);
881 port->bulk_in_size = buffer_size;
882 port->bulk_in_endpointAddress = endpoint->bEndpointAddress;
883 port->bulk_in_buffer = kmalloc (buffer_size, GFP_KERNEL);
884 if (!port->bulk_in_buffer) {
885 dev_err(&interface->dev, "Couldn't allocate bulk_in_buffer\n");
888 usb_fill_bulk_urb (port->read_urb, dev,
889 usb_rcvbulkpipe (dev,
890 endpoint->bEndpointAddress),
891 port->bulk_in_buffer, buffer_size,
892 serial->type->read_bulk_callback,
896 for (i = 0; i < num_bulk_out; ++i) {
897 endpoint = bulk_out_endpoint[i];
898 port = serial->port[i];
899 port->write_urb = usb_alloc_urb(0, GFP_KERNEL);
900 if (!port->write_urb) {
901 dev_err(&interface->dev, "No free urbs available\n");
904 buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);
905 port->bulk_out_size = buffer_size;
906 port->bulk_out_endpointAddress = endpoint->bEndpointAddress;
907 port->bulk_out_buffer = kmalloc (buffer_size, GFP_KERNEL);
908 if (!port->bulk_out_buffer) {
909 dev_err(&interface->dev, "Couldn't allocate bulk_out_buffer\n");
912 usb_fill_bulk_urb (port->write_urb, dev,
913 usb_sndbulkpipe (dev,
914 endpoint->bEndpointAddress),
915 port->bulk_out_buffer, buffer_size,
916 serial->type->write_bulk_callback,
920 if (serial->type->read_int_callback) {
921 for (i = 0; i < num_interrupt_in; ++i) {
922 endpoint = interrupt_in_endpoint[i];
923 port = serial->port[i];
924 port->interrupt_in_urb = usb_alloc_urb(0, GFP_KERNEL);
925 if (!port->interrupt_in_urb) {
926 dev_err(&interface->dev, "No free urbs available\n");
929 buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);
930 port->interrupt_in_endpointAddress = endpoint->bEndpointAddress;
931 port->interrupt_in_buffer = kmalloc (buffer_size, GFP_KERNEL);
932 if (!port->interrupt_in_buffer) {
933 dev_err(&interface->dev, "Couldn't allocate interrupt_in_buffer\n");
936 usb_fill_int_urb (port->interrupt_in_urb, dev,
938 endpoint->bEndpointAddress),
939 port->interrupt_in_buffer, buffer_size,
940 serial->type->read_int_callback, port,
941 endpoint->bInterval);
943 } else if (num_interrupt_in) {
944 dbg("the device claims to support interrupt in transfers, but read_int_callback is not defined");
947 if (serial->type->write_int_callback) {
948 for (i = 0; i < num_interrupt_out; ++i) {
949 endpoint = interrupt_out_endpoint[i];
950 port = serial->port[i];
951 port->interrupt_out_urb = usb_alloc_urb(0, GFP_KERNEL);
952 if (!port->interrupt_out_urb) {
953 dev_err(&interface->dev, "No free urbs available\n");
956 buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);
957 port->interrupt_out_size = buffer_size;
958 port->interrupt_out_endpointAddress = endpoint->bEndpointAddress;
959 port->interrupt_out_buffer = kmalloc (buffer_size, GFP_KERNEL);
960 if (!port->interrupt_out_buffer) {
961 dev_err(&interface->dev, "Couldn't allocate interrupt_out_buffer\n");
964 usb_fill_int_urb (port->interrupt_out_urb, dev,
966 endpoint->bEndpointAddress),
967 port->interrupt_out_buffer, buffer_size,
968 serial->type->write_int_callback, port,
969 endpoint->bInterval);
971 } else if (num_interrupt_out) {
972 dbg("the device claims to support interrupt out transfers, but write_int_callback is not defined");
975 /* if this device type has an attach function, call it */
977 if (!try_module_get(type->driver.owner)) {
978 dev_err(&interface->dev, "module get failed, exiting\n");
981 retval = type->attach (serial);
982 module_put(type->driver.owner);
986 /* quietly accept this device, but don't bind to a serial port
987 * as it's about to disappear */
992 if (get_free_serial (serial, num_ports, &minor) == NULL) {
993 dev_err(&interface->dev, "No more free serial devices\n");
996 serial->minor = minor;
998 /* register all of the individual ports with the driver core */
999 for (i = 0; i < num_ports; ++i) {
1000 port = serial->port[i];
1001 port->dev.parent = &interface->dev;
1002 port->dev.driver = NULL;
1003 port->dev.bus = &usb_serial_bus_type;
1004 port->dev.release = &port_release;
1006 snprintf (&port->dev.bus_id[0], sizeof(port->dev.bus_id), "ttyUSB%d", port->number);
1007 dbg ("%s - registering %s", __FUNCTION__, port->dev.bus_id);
1008 retval = device_register(&port->dev);
1010 dev_err(&port->dev, "Error registering port device, "
1014 usb_serial_console_init (debug, minor);
1018 usb_set_intfdata (interface, serial);
1022 for (i = 0; i < num_bulk_in; ++i) {
1023 port = serial->port[i];
1026 usb_free_urb(port->read_urb);
1027 kfree(port->bulk_in_buffer);
1029 for (i = 0; i < num_bulk_out; ++i) {
1030 port = serial->port[i];
1033 usb_free_urb(port->write_urb);
1034 kfree(port->bulk_out_buffer);
1036 for (i = 0; i < num_interrupt_in; ++i) {
1037 port = serial->port[i];
1040 usb_free_urb(port->interrupt_in_urb);
1041 kfree(port->interrupt_in_buffer);
1043 for (i = 0; i < num_interrupt_out; ++i) {
1044 port = serial->port[i];
1047 usb_free_urb(port->interrupt_out_urb);
1048 kfree(port->interrupt_out_buffer);
1051 /* free up any memory that we allocated */
1052 for (i = 0; i < serial->num_port_pointers; ++i)
1053 kfree(serial->port[i]);
1058 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;
1065 usb_serial_console_disconnect(serial);
1066 dbg ("%s", __FUNCTION__);
1068 usb_set_intfdata (interface, NULL);
1070 for (i = 0; i < serial->num_ports; ++i) {
1071 port = serial->port[i];
1074 tty_hangup(port->tty);
1078 /* let the last holder of this object
1079 * cause it to be cleaned up */
1080 usb_serial_put(serial);
1082 dev_info(dev, "device disconnected\n");
1085 int usb_serial_suspend(struct usb_interface *intf, pm_message_t message)
1087 struct usb_serial *serial = usb_get_intfdata(intf);
1088 struct usb_serial_port *port;
1091 if (!serial) /* device has been disconnected */
1094 for (i = 0; i < serial->num_ports; ++i) {
1095 port = serial->port[i];
1100 if (serial->type->suspend)
1101 r = serial->type->suspend(serial, message);
1105 EXPORT_SYMBOL(usb_serial_suspend);
1107 int usb_serial_resume(struct usb_interface *intf)
1109 struct usb_serial *serial = usb_get_intfdata(intf);
1111 return serial->type->resume(serial);
1113 EXPORT_SYMBOL(usb_serial_resume);
1115 static const struct tty_operations serial_ops = {
1116 .open = serial_open,
1117 .close = serial_close,
1118 .write = serial_write,
1119 .write_room = serial_write_room,
1120 .ioctl = serial_ioctl,
1121 .set_termios = serial_set_termios,
1122 .throttle = serial_throttle,
1123 .unthrottle = serial_unthrottle,
1124 .break_ctl = serial_break,
1125 .chars_in_buffer = serial_chars_in_buffer,
1126 .read_proc = serial_read_proc,
1127 .tiocmget = serial_tiocmget,
1128 .tiocmset = serial_tiocmset,
1131 struct tty_driver *usb_serial_tty_driver;
1133 static int __init usb_serial_init(void)
1138 usb_serial_tty_driver = alloc_tty_driver(SERIAL_TTY_MINORS);
1139 if (!usb_serial_tty_driver)
1142 /* Initialize our global data */
1143 for (i = 0; i < SERIAL_TTY_MINORS; ++i) {
1144 serial_table[i] = NULL;
1147 result = bus_register(&usb_serial_bus_type);
1149 err("%s - registering bus driver failed", __FUNCTION__);
1153 usb_serial_tty_driver->owner = THIS_MODULE;
1154 usb_serial_tty_driver->driver_name = "usbserial";
1155 usb_serial_tty_driver->name = "ttyUSB";
1156 usb_serial_tty_driver->major = SERIAL_TTY_MAJOR;
1157 usb_serial_tty_driver->minor_start = 0;
1158 usb_serial_tty_driver->type = TTY_DRIVER_TYPE_SERIAL;
1159 usb_serial_tty_driver->subtype = SERIAL_TYPE_NORMAL;
1160 usb_serial_tty_driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV;
1161 usb_serial_tty_driver->init_termios = tty_std_termios;
1162 usb_serial_tty_driver->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL;
1163 tty_set_operations(usb_serial_tty_driver, &serial_ops);
1164 result = tty_register_driver(usb_serial_tty_driver);
1166 err("%s - tty_register_driver failed", __FUNCTION__);
1167 goto exit_reg_driver;
1170 /* register the USB driver */
1171 result = usb_register(&usb_serial_driver);
1173 err("%s - usb_register failed", __FUNCTION__);
1177 /* register the generic driver, if we should */
1178 result = usb_serial_generic_register(debug);
1180 err("%s - registering generic driver failed", __FUNCTION__);
1189 usb_deregister(&usb_serial_driver);
1192 tty_unregister_driver(usb_serial_tty_driver);
1195 bus_unregister(&usb_serial_bus_type);
1198 err ("%s - returning with error %d", __FUNCTION__, result);
1199 put_tty_driver(usb_serial_tty_driver);
1204 static void __exit usb_serial_exit(void)
1206 usb_serial_console_exit();
1208 usb_serial_generic_deregister();
1210 usb_deregister(&usb_serial_driver);
1211 tty_unregister_driver(usb_serial_tty_driver);
1212 put_tty_driver(usb_serial_tty_driver);
1213 bus_unregister(&usb_serial_bus_type);
1217 module_init(usb_serial_init);
1218 module_exit(usb_serial_exit);
1220 #define set_to_generic_if_null(type, function) \
1222 if (!type->function) { \
1223 type->function = usb_serial_generic_##function; \
1224 dbg("Had to override the " #function \
1225 " usb serial operation with the generic one.");\
1229 static void fixup_generic(struct usb_serial_driver *device)
1231 set_to_generic_if_null(device, open);
1232 set_to_generic_if_null(device, write);
1233 set_to_generic_if_null(device, close);
1234 set_to_generic_if_null(device, write_room);
1235 set_to_generic_if_null(device, chars_in_buffer);
1236 set_to_generic_if_null(device, read_bulk_callback);
1237 set_to_generic_if_null(device, write_bulk_callback);
1238 set_to_generic_if_null(device, shutdown);
1241 int usb_serial_register(struct usb_serial_driver *driver) /* must be called with BKL held */
1245 fixup_generic(driver);
1247 if (!driver->description)
1248 driver->description = driver->driver.name;
1250 /* Add this device to our list of devices */
1251 list_add(&driver->driver_list, &usb_serial_driver_list);
1253 retval = usb_serial_bus_register(driver);
1255 err("problem %d when registering driver %s", retval, driver->description);
1256 list_del(&driver->driver_list);
1259 info("USB Serial support registered for %s", driver->description);
1265 void usb_serial_deregister(struct usb_serial_driver *device) /* must be called with BKL held */
1267 info("USB Serial deregistering driver %s", device->description);
1268 list_del(&device->driver_list);
1269 usb_serial_bus_deregister(device);
1274 /* If the usb-serial core is built into the core, the usb-serial drivers
1275 need these symbols to load properly as modules. */
1276 EXPORT_SYMBOL_GPL(usb_serial_register);
1277 EXPORT_SYMBOL_GPL(usb_serial_deregister);
1278 EXPORT_SYMBOL_GPL(usb_serial_probe);
1279 EXPORT_SYMBOL_GPL(usb_serial_disconnect);
1280 EXPORT_SYMBOL_GPL(usb_serial_port_softint);
1283 /* Module information */
1284 MODULE_AUTHOR( DRIVER_AUTHOR );
1285 MODULE_DESCRIPTION( DRIVER_DESC );
1286 MODULE_LICENSE("GPL");
1288 module_param(debug, bool, S_IRUGO | S_IWUSR);
1289 MODULE_PARM_DESC(debug, "Debug enabled or not");