1 // SPDX-License-Identifier: GPL-2.0
3 * USB Serial Converter driver
5 * Copyright (C) 2009 - 2013 Johan Hovold (jhovold@gmail.com)
6 * Copyright (C) 1999 - 2012 Greg Kroah-Hartman (greg@kroah.com)
7 * Copyright (C) 2000 Peter Berger (pberger@brimson.com)
8 * Copyright (C) 2000 Al Borchers (borchers@steinerpoint.com)
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>
39 #define DRIVER_AUTHOR "Greg Kroah-Hartman <gregkh@linuxfoundation.org>"
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 usb_autopm_put_interface(serial
->interface
);
316 usb_serial_put(serial
);
320 static int serial_write(struct tty_struct
*tty
, const unsigned char *buf
,
323 struct usb_serial_port
*port
= tty
->driver_data
;
324 int retval
= -ENODEV
;
326 if (port
->serial
->dev
->state
== USB_STATE_NOTATTACHED
)
329 dev_dbg(tty
->dev
, "%s - %d byte(s)\n", __func__
, count
);
331 retval
= port
->serial
->type
->write(tty
, port
, buf
, count
);
333 retval
= usb_translate_errors(retval
);
338 static int serial_write_room(struct tty_struct
*tty
)
340 struct usb_serial_port
*port
= tty
->driver_data
;
342 dev_dbg(tty
->dev
, "%s\n", __func__
);
344 return port
->serial
->type
->write_room(tty
);
347 static int serial_chars_in_buffer(struct tty_struct
*tty
)
349 struct usb_serial_port
*port
= tty
->driver_data
;
350 struct usb_serial
*serial
= port
->serial
;
352 dev_dbg(tty
->dev
, "%s\n", __func__
);
354 if (serial
->disconnected
)
357 return serial
->type
->chars_in_buffer(tty
);
360 static void serial_wait_until_sent(struct tty_struct
*tty
, int timeout
)
362 struct usb_serial_port
*port
= tty
->driver_data
;
363 struct usb_serial
*serial
= port
->serial
;
365 dev_dbg(tty
->dev
, "%s\n", __func__
);
367 if (!port
->serial
->type
->wait_until_sent
)
370 mutex_lock(&serial
->disc_mutex
);
371 if (!serial
->disconnected
)
372 port
->serial
->type
->wait_until_sent(tty
, timeout
);
373 mutex_unlock(&serial
->disc_mutex
);
376 static void serial_throttle(struct tty_struct
*tty
)
378 struct usb_serial_port
*port
= tty
->driver_data
;
380 dev_dbg(tty
->dev
, "%s\n", __func__
);
382 if (port
->serial
->type
->throttle
)
383 port
->serial
->type
->throttle(tty
);
386 static void serial_unthrottle(struct tty_struct
*tty
)
388 struct usb_serial_port
*port
= tty
->driver_data
;
390 dev_dbg(tty
->dev
, "%s\n", __func__
);
392 if (port
->serial
->type
->unthrottle
)
393 port
->serial
->type
->unthrottle(tty
);
396 static int serial_ioctl(struct tty_struct
*tty
,
397 unsigned int cmd
, unsigned long arg
)
399 struct usb_serial_port
*port
= tty
->driver_data
;
400 int retval
= -ENOIOCTLCMD
;
402 dev_dbg(tty
->dev
, "%s - cmd 0x%04x\n", __func__
, cmd
);
406 if (port
->serial
->type
->tiocmiwait
)
407 retval
= port
->serial
->type
->tiocmiwait(tty
, arg
);
410 if (port
->serial
->type
->ioctl
)
411 retval
= port
->serial
->type
->ioctl(tty
, cmd
, arg
);
417 static void serial_set_termios(struct tty_struct
*tty
, struct ktermios
*old
)
419 struct usb_serial_port
*port
= tty
->driver_data
;
421 dev_dbg(tty
->dev
, "%s\n", __func__
);
423 if (port
->serial
->type
->set_termios
)
424 port
->serial
->type
->set_termios(tty
, port
, old
);
426 tty_termios_copy_hw(&tty
->termios
, old
);
429 static int serial_break(struct tty_struct
*tty
, int break_state
)
431 struct usb_serial_port
*port
= tty
->driver_data
;
433 dev_dbg(tty
->dev
, "%s\n", __func__
);
435 if (port
->serial
->type
->break_ctl
)
436 port
->serial
->type
->break_ctl(tty
, break_state
);
441 static int serial_proc_show(struct seq_file
*m
, void *v
)
443 struct usb_serial
*serial
;
444 struct usb_serial_port
*port
;
448 seq_puts(m
, "usbserinfo:1.0 driver:2.0\n");
449 for (i
= 0; i
< USB_SERIAL_TTY_MINORS
; ++i
) {
450 port
= usb_serial_port_get_by_minor(i
);
453 serial
= port
->serial
;
455 seq_printf(m
, "%d:", i
);
456 if (serial
->type
->driver
.owner
)
457 seq_printf(m
, " module:%s",
458 module_name(serial
->type
->driver
.owner
));
459 seq_printf(m
, " name:\"%s\"",
460 serial
->type
->description
);
461 seq_printf(m
, " vendor:%04x product:%04x",
462 le16_to_cpu(serial
->dev
->descriptor
.idVendor
),
463 le16_to_cpu(serial
->dev
->descriptor
.idProduct
));
464 seq_printf(m
, " num_ports:%d", serial
->num_ports
);
465 seq_printf(m
, " port:%d", port
->port_number
);
466 usb_make_path(serial
->dev
, tmp
, sizeof(tmp
));
467 seq_printf(m
, " path:%s", tmp
);
470 usb_serial_put(serial
);
471 mutex_unlock(&serial
->disc_mutex
);
476 static int serial_tiocmget(struct tty_struct
*tty
)
478 struct usb_serial_port
*port
= tty
->driver_data
;
480 dev_dbg(tty
->dev
, "%s\n", __func__
);
482 if (port
->serial
->type
->tiocmget
)
483 return port
->serial
->type
->tiocmget(tty
);
487 static int serial_tiocmset(struct tty_struct
*tty
,
488 unsigned int set
, unsigned int clear
)
490 struct usb_serial_port
*port
= tty
->driver_data
;
492 dev_dbg(tty
->dev
, "%s\n", __func__
);
494 if (port
->serial
->type
->tiocmset
)
495 return port
->serial
->type
->tiocmset(tty
, set
, clear
);
499 static int serial_get_icount(struct tty_struct
*tty
,
500 struct serial_icounter_struct
*icount
)
502 struct usb_serial_port
*port
= tty
->driver_data
;
504 dev_dbg(tty
->dev
, "%s\n", __func__
);
506 if (port
->serial
->type
->get_icount
)
507 return port
->serial
->type
->get_icount(tty
, icount
);
512 * We would be calling tty_wakeup here, but unfortunately some line
513 * disciplines have an annoying habit of calling tty->write from
514 * the write wakeup callback (e.g. n_hdlc.c).
516 void usb_serial_port_softint(struct usb_serial_port
*port
)
518 schedule_work(&port
->work
);
520 EXPORT_SYMBOL_GPL(usb_serial_port_softint
);
522 static void usb_serial_port_work(struct work_struct
*work
)
524 struct usb_serial_port
*port
=
525 container_of(work
, struct usb_serial_port
, work
);
527 tty_port_tty_wakeup(&port
->port
);
530 static void usb_serial_port_poison_urbs(struct usb_serial_port
*port
)
534 for (i
= 0; i
< ARRAY_SIZE(port
->read_urbs
); ++i
)
535 usb_poison_urb(port
->read_urbs
[i
]);
536 for (i
= 0; i
< ARRAY_SIZE(port
->write_urbs
); ++i
)
537 usb_poison_urb(port
->write_urbs
[i
]);
539 usb_poison_urb(port
->interrupt_in_urb
);
540 usb_poison_urb(port
->interrupt_out_urb
);
543 static void usb_serial_port_unpoison_urbs(struct usb_serial_port
*port
)
547 for (i
= 0; i
< ARRAY_SIZE(port
->read_urbs
); ++i
)
548 usb_unpoison_urb(port
->read_urbs
[i
]);
549 for (i
= 0; i
< ARRAY_SIZE(port
->write_urbs
); ++i
)
550 usb_unpoison_urb(port
->write_urbs
[i
]);
552 usb_unpoison_urb(port
->interrupt_in_urb
);
553 usb_unpoison_urb(port
->interrupt_out_urb
);
556 static void usb_serial_port_release(struct device
*dev
)
558 struct usb_serial_port
*port
= to_usb_serial_port(dev
);
561 dev_dbg(dev
, "%s\n", __func__
);
563 usb_free_urb(port
->interrupt_in_urb
);
564 usb_free_urb(port
->interrupt_out_urb
);
565 for (i
= 0; i
< ARRAY_SIZE(port
->read_urbs
); ++i
) {
566 usb_free_urb(port
->read_urbs
[i
]);
567 kfree(port
->bulk_in_buffers
[i
]);
569 for (i
= 0; i
< ARRAY_SIZE(port
->write_urbs
); ++i
) {
570 usb_free_urb(port
->write_urbs
[i
]);
571 kfree(port
->bulk_out_buffers
[i
]);
573 kfifo_free(&port
->write_fifo
);
574 kfree(port
->interrupt_in_buffer
);
575 kfree(port
->interrupt_out_buffer
);
576 tty_port_destroy(&port
->port
);
580 static struct usb_serial
*create_serial(struct usb_device
*dev
,
581 struct usb_interface
*interface
,
582 struct usb_serial_driver
*driver
)
584 struct usb_serial
*serial
;
586 serial
= kzalloc(sizeof(*serial
), GFP_KERNEL
);
589 serial
->dev
= usb_get_dev(dev
);
590 serial
->type
= driver
;
591 serial
->interface
= usb_get_intf(interface
);
592 kref_init(&serial
->kref
);
593 mutex_init(&serial
->disc_mutex
);
594 serial
->minors_reserved
= 0;
599 static const struct usb_device_id
*match_dynamic_id(struct usb_interface
*intf
,
600 struct usb_serial_driver
*drv
)
602 struct usb_dynid
*dynid
;
604 spin_lock(&drv
->dynids
.lock
);
605 list_for_each_entry(dynid
, &drv
->dynids
.list
, node
) {
606 if (usb_match_one_id(intf
, &dynid
->id
)) {
607 spin_unlock(&drv
->dynids
.lock
);
611 spin_unlock(&drv
->dynids
.lock
);
615 static const struct usb_device_id
*get_iface_id(struct usb_serial_driver
*drv
,
616 struct usb_interface
*intf
)
618 const struct usb_device_id
*id
;
620 id
= usb_match_id(intf
, drv
->id_table
);
622 dev_dbg(&intf
->dev
, "static descriptor matches\n");
625 id
= match_dynamic_id(intf
, drv
);
627 dev_dbg(&intf
->dev
, "dynamic descriptor matches\n");
632 /* Caller must hold table_lock */
633 static struct usb_serial_driver
*search_serial_device(
634 struct usb_interface
*iface
)
636 const struct usb_device_id
*id
= NULL
;
637 struct usb_serial_driver
*drv
;
638 struct usb_driver
*driver
= to_usb_driver(iface
->dev
.driver
);
640 /* Check if the usb id matches a known device */
641 list_for_each_entry(drv
, &usb_serial_driver_list
, driver_list
) {
642 if (drv
->usb_driver
== driver
)
643 id
= get_iface_id(drv
, iface
);
651 static int serial_port_carrier_raised(struct tty_port
*port
)
653 struct usb_serial_port
*p
= container_of(port
, struct usb_serial_port
, port
);
654 struct usb_serial_driver
*drv
= p
->serial
->type
;
656 if (drv
->carrier_raised
)
657 return drv
->carrier_raised(p
);
658 /* No carrier control - don't block */
662 static void serial_port_dtr_rts(struct tty_port
*port
, int on
)
664 struct usb_serial_port
*p
= container_of(port
, struct usb_serial_port
, port
);
665 struct usb_serial_driver
*drv
= p
->serial
->type
;
671 static ssize_t
port_number_show(struct device
*dev
,
672 struct device_attribute
*attr
, char *buf
)
674 struct usb_serial_port
*port
= to_usb_serial_port(dev
);
676 return sprintf(buf
, "%u\n", port
->port_number
);
678 static DEVICE_ATTR_RO(port_number
);
680 static struct attribute
*usb_serial_port_attrs
[] = {
681 &dev_attr_port_number
.attr
,
684 ATTRIBUTE_GROUPS(usb_serial_port
);
686 static const struct tty_port_operations serial_port_ops
= {
687 .carrier_raised
= serial_port_carrier_raised
,
688 .dtr_rts
= serial_port_dtr_rts
,
689 .activate
= serial_port_activate
,
690 .shutdown
= serial_port_shutdown
,
693 static void find_endpoints(struct usb_serial
*serial
,
694 struct usb_serial_endpoints
*epds
)
696 struct device
*dev
= &serial
->interface
->dev
;
697 struct usb_host_interface
*iface_desc
;
698 struct usb_endpoint_descriptor
*epd
;
701 BUILD_BUG_ON(ARRAY_SIZE(epds
->bulk_in
) < USB_MAXENDPOINTS
/ 2);
702 BUILD_BUG_ON(ARRAY_SIZE(epds
->bulk_out
) < USB_MAXENDPOINTS
/ 2);
703 BUILD_BUG_ON(ARRAY_SIZE(epds
->interrupt_in
) < USB_MAXENDPOINTS
/ 2);
704 BUILD_BUG_ON(ARRAY_SIZE(epds
->interrupt_out
) < USB_MAXENDPOINTS
/ 2);
706 iface_desc
= serial
->interface
->cur_altsetting
;
707 for (i
= 0; i
< iface_desc
->desc
.bNumEndpoints
; ++i
) {
708 epd
= &iface_desc
->endpoint
[i
].desc
;
710 if (usb_endpoint_is_bulk_in(epd
)) {
711 dev_dbg(dev
, "found bulk in on endpoint %u\n", i
);
712 epds
->bulk_in
[epds
->num_bulk_in
++] = epd
;
713 } else if (usb_endpoint_is_bulk_out(epd
)) {
714 dev_dbg(dev
, "found bulk out on endpoint %u\n", i
);
715 epds
->bulk_out
[epds
->num_bulk_out
++] = epd
;
716 } else if (usb_endpoint_is_int_in(epd
)) {
717 dev_dbg(dev
, "found interrupt in on endpoint %u\n", i
);
718 epds
->interrupt_in
[epds
->num_interrupt_in
++] = epd
;
719 } else if (usb_endpoint_is_int_out(epd
)) {
720 dev_dbg(dev
, "found interrupt out on endpoint %u\n", i
);
721 epds
->interrupt_out
[epds
->num_interrupt_out
++] = epd
;
726 static int setup_port_bulk_in(struct usb_serial_port
*port
,
727 struct usb_endpoint_descriptor
*epd
)
729 struct usb_serial_driver
*type
= port
->serial
->type
;
730 struct usb_device
*udev
= port
->serial
->dev
;
734 buffer_size
= max_t(int, type
->bulk_in_size
, usb_endpoint_maxp(epd
));
735 port
->bulk_in_size
= buffer_size
;
736 port
->bulk_in_endpointAddress
= epd
->bEndpointAddress
;
738 for (i
= 0; i
< ARRAY_SIZE(port
->read_urbs
); ++i
) {
739 set_bit(i
, &port
->read_urbs_free
);
740 port
->read_urbs
[i
] = usb_alloc_urb(0, GFP_KERNEL
);
741 if (!port
->read_urbs
[i
])
743 port
->bulk_in_buffers
[i
] = kmalloc(buffer_size
, GFP_KERNEL
);
744 if (!port
->bulk_in_buffers
[i
])
746 usb_fill_bulk_urb(port
->read_urbs
[i
], udev
,
747 usb_rcvbulkpipe(udev
, epd
->bEndpointAddress
),
748 port
->bulk_in_buffers
[i
], buffer_size
,
749 type
->read_bulk_callback
, port
);
752 port
->read_urb
= port
->read_urbs
[0];
753 port
->bulk_in_buffer
= port
->bulk_in_buffers
[0];
758 static int setup_port_bulk_out(struct usb_serial_port
*port
,
759 struct usb_endpoint_descriptor
*epd
)
761 struct usb_serial_driver
*type
= port
->serial
->type
;
762 struct usb_device
*udev
= port
->serial
->dev
;
766 if (kfifo_alloc(&port
->write_fifo
, PAGE_SIZE
, GFP_KERNEL
))
768 if (type
->bulk_out_size
)
769 buffer_size
= type
->bulk_out_size
;
771 buffer_size
= usb_endpoint_maxp(epd
);
772 port
->bulk_out_size
= buffer_size
;
773 port
->bulk_out_endpointAddress
= epd
->bEndpointAddress
;
775 for (i
= 0; i
< ARRAY_SIZE(port
->write_urbs
); ++i
) {
776 set_bit(i
, &port
->write_urbs_free
);
777 port
->write_urbs
[i
] = usb_alloc_urb(0, GFP_KERNEL
);
778 if (!port
->write_urbs
[i
])
780 port
->bulk_out_buffers
[i
] = kmalloc(buffer_size
, GFP_KERNEL
);
781 if (!port
->bulk_out_buffers
[i
])
783 usb_fill_bulk_urb(port
->write_urbs
[i
], udev
,
784 usb_sndbulkpipe(udev
, epd
->bEndpointAddress
),
785 port
->bulk_out_buffers
[i
], buffer_size
,
786 type
->write_bulk_callback
, port
);
789 port
->write_urb
= port
->write_urbs
[0];
790 port
->bulk_out_buffer
= port
->bulk_out_buffers
[0];
795 static int setup_port_interrupt_in(struct usb_serial_port
*port
,
796 struct usb_endpoint_descriptor
*epd
)
798 struct usb_serial_driver
*type
= port
->serial
->type
;
799 struct usb_device
*udev
= port
->serial
->dev
;
802 port
->interrupt_in_urb
= usb_alloc_urb(0, GFP_KERNEL
);
803 if (!port
->interrupt_in_urb
)
805 buffer_size
= usb_endpoint_maxp(epd
);
806 port
->interrupt_in_endpointAddress
= epd
->bEndpointAddress
;
807 port
->interrupt_in_buffer
= kmalloc(buffer_size
, GFP_KERNEL
);
808 if (!port
->interrupt_in_buffer
)
810 usb_fill_int_urb(port
->interrupt_in_urb
, udev
,
811 usb_rcvintpipe(udev
, epd
->bEndpointAddress
),
812 port
->interrupt_in_buffer
, buffer_size
,
813 type
->read_int_callback
, port
,
819 static int setup_port_interrupt_out(struct usb_serial_port
*port
,
820 struct usb_endpoint_descriptor
*epd
)
822 struct usb_serial_driver
*type
= port
->serial
->type
;
823 struct usb_device
*udev
= port
->serial
->dev
;
826 port
->interrupt_out_urb
= usb_alloc_urb(0, GFP_KERNEL
);
827 if (!port
->interrupt_out_urb
)
829 buffer_size
= usb_endpoint_maxp(epd
);
830 port
->interrupt_out_size
= buffer_size
;
831 port
->interrupt_out_endpointAddress
= epd
->bEndpointAddress
;
832 port
->interrupt_out_buffer
= kmalloc(buffer_size
, GFP_KERNEL
);
833 if (!port
->interrupt_out_buffer
)
835 usb_fill_int_urb(port
->interrupt_out_urb
, udev
,
836 usb_sndintpipe(udev
, epd
->bEndpointAddress
),
837 port
->interrupt_out_buffer
, buffer_size
,
838 type
->write_int_callback
, port
,
844 static int usb_serial_probe(struct usb_interface
*interface
,
845 const struct usb_device_id
*id
)
847 struct device
*ddev
= &interface
->dev
;
848 struct usb_device
*dev
= interface_to_usbdev(interface
);
849 struct usb_serial
*serial
= NULL
;
850 struct usb_serial_port
*port
;
851 struct usb_serial_endpoints
*epds
;
852 struct usb_serial_driver
*type
= NULL
;
856 unsigned char max_endpoints
;
858 mutex_lock(&table_lock
);
859 type
= search_serial_device(interface
);
861 mutex_unlock(&table_lock
);
862 dev_dbg(ddev
, "none matched\n");
866 if (!try_module_get(type
->driver
.owner
)) {
867 mutex_unlock(&table_lock
);
868 dev_err(ddev
, "module get failed, exiting\n");
871 mutex_unlock(&table_lock
);
873 serial
= create_serial(dev
, interface
, type
);
879 /* if this device type has a probe function, call it */
881 const struct usb_device_id
*id
;
883 id
= get_iface_id(type
, interface
);
884 retval
= type
->probe(serial
, id
);
887 dev_dbg(ddev
, "sub driver rejected device\n");
892 /* descriptor matches, let's find the endpoints needed */
893 epds
= kzalloc(sizeof(*epds
), GFP_KERNEL
);
899 find_endpoints(serial
, epds
);
901 if (epds
->num_bulk_in
< type
->num_bulk_in
||
902 epds
->num_bulk_out
< type
->num_bulk_out
||
903 epds
->num_interrupt_in
< type
->num_interrupt_in
||
904 epds
->num_interrupt_out
< type
->num_interrupt_out
) {
905 dev_err(ddev
, "required endpoints missing\n");
910 if (type
->calc_num_ports
) {
911 retval
= type
->calc_num_ports(serial
, epds
);
918 num_ports
= type
->num_ports
;
920 if (num_ports
> MAX_NUM_PORTS
) {
921 dev_warn(ddev
, "too many ports requested: %d\n", num_ports
);
922 num_ports
= MAX_NUM_PORTS
;
925 serial
->num_ports
= (unsigned char)num_ports
;
926 serial
->num_bulk_in
= epds
->num_bulk_in
;
927 serial
->num_bulk_out
= epds
->num_bulk_out
;
928 serial
->num_interrupt_in
= epds
->num_interrupt_in
;
929 serial
->num_interrupt_out
= epds
->num_interrupt_out
;
931 /* found all that we need */
932 dev_info(ddev
, "%s converter detected\n", type
->description
);
934 /* create our ports, we need as many as the max endpoints */
935 /* we don't use num_ports here because some devices have more
936 endpoint pairs than ports */
937 max_endpoints
= max(epds
->num_bulk_in
, epds
->num_bulk_out
);
938 max_endpoints
= max(max_endpoints
, epds
->num_interrupt_in
);
939 max_endpoints
= max(max_endpoints
, epds
->num_interrupt_out
);
940 max_endpoints
= max(max_endpoints
, serial
->num_ports
);
941 serial
->num_port_pointers
= max_endpoints
;
943 dev_dbg(ddev
, "setting up %d port structure(s)\n", max_endpoints
);
944 for (i
= 0; i
< max_endpoints
; ++i
) {
945 port
= kzalloc(sizeof(struct usb_serial_port
), GFP_KERNEL
);
950 tty_port_init(&port
->port
);
951 port
->port
.ops
= &serial_port_ops
;
952 port
->serial
= serial
;
953 spin_lock_init(&port
->lock
);
954 /* Keep this for private driver use for the moment but
955 should probably go away */
956 INIT_WORK(&port
->work
, usb_serial_port_work
);
957 serial
->port
[i
] = port
;
958 port
->dev
.parent
= &interface
->dev
;
959 port
->dev
.driver
= NULL
;
960 port
->dev
.bus
= &usb_serial_bus_type
;
961 port
->dev
.release
= &usb_serial_port_release
;
962 port
->dev
.groups
= usb_serial_port_groups
;
963 device_initialize(&port
->dev
);
966 /* set up the endpoint information */
967 for (i
= 0; i
< epds
->num_bulk_in
; ++i
) {
968 retval
= setup_port_bulk_in(serial
->port
[i
], epds
->bulk_in
[i
]);
973 for (i
= 0; i
< epds
->num_bulk_out
; ++i
) {
974 retval
= setup_port_bulk_out(serial
->port
[i
],
980 if (serial
->type
->read_int_callback
) {
981 for (i
= 0; i
< epds
->num_interrupt_in
; ++i
) {
982 retval
= setup_port_interrupt_in(serial
->port
[i
],
983 epds
->interrupt_in
[i
]);
987 } else if (epds
->num_interrupt_in
) {
988 dev_dbg(ddev
, "The device claims to support interrupt in transfers, but read_int_callback is not defined\n");
991 if (serial
->type
->write_int_callback
) {
992 for (i
= 0; i
< epds
->num_interrupt_out
; ++i
) {
993 retval
= setup_port_interrupt_out(serial
->port
[i
],
994 epds
->interrupt_out
[i
]);
998 } else if (epds
->num_interrupt_out
) {
999 dev_dbg(ddev
, "The device claims to support interrupt out transfers, but write_int_callback is not defined\n");
1002 usb_set_intfdata(interface
, serial
);
1004 /* if this device type has an attach function, call it */
1006 retval
= type
->attach(serial
);
1009 serial
->attached
= 1;
1011 /* quietly accept this device, but don't bind to a
1012 serial port as it's about to disappear */
1013 serial
->num_ports
= 0;
1017 serial
->attached
= 1;
1020 retval
= allocate_minors(serial
, num_ports
);
1022 dev_err(ddev
, "No more free serial minor numbers\n");
1026 /* register all of the individual ports with the driver core */
1027 for (i
= 0; i
< num_ports
; ++i
) {
1028 port
= serial
->port
[i
];
1029 dev_set_name(&port
->dev
, "ttyUSB%d", port
->minor
);
1030 dev_dbg(ddev
, "registering %s\n", dev_name(&port
->dev
));
1031 device_enable_async_suspend(&port
->dev
);
1033 retval
= device_add(&port
->dev
);
1035 dev_err(ddev
, "Error registering port device, continuing\n");
1039 usb_serial_console_init(serial
->port
[0]->minor
);
1042 module_put(type
->driver
.owner
);
1048 usb_serial_put(serial
);
1050 module_put(type
->driver
.owner
);
1055 static void usb_serial_disconnect(struct usb_interface
*interface
)
1058 struct usb_serial
*serial
= usb_get_intfdata(interface
);
1059 struct device
*dev
= &interface
->dev
;
1060 struct usb_serial_port
*port
;
1061 struct tty_struct
*tty
;
1063 usb_serial_console_disconnect(serial
);
1065 mutex_lock(&serial
->disc_mutex
);
1066 /* must set a flag, to signal subdrivers */
1067 serial
->disconnected
= 1;
1068 mutex_unlock(&serial
->disc_mutex
);
1070 for (i
= 0; i
< serial
->num_ports
; ++i
) {
1071 port
= serial
->port
[i
];
1072 tty
= tty_port_tty_get(&port
->port
);
1077 usb_serial_port_poison_urbs(port
);
1078 wake_up_interruptible(&port
->port
.delta_msr_wait
);
1079 cancel_work_sync(&port
->work
);
1080 if (device_is_registered(&port
->dev
))
1081 device_del(&port
->dev
);
1083 if (serial
->type
->disconnect
)
1084 serial
->type
->disconnect(serial
);
1086 /* let the last holder of this object cause it to be cleaned up */
1087 usb_serial_put(serial
);
1088 dev_info(dev
, "device disconnected\n");
1091 int usb_serial_suspend(struct usb_interface
*intf
, pm_message_t message
)
1093 struct usb_serial
*serial
= usb_get_intfdata(intf
);
1096 serial
->suspending
= 1;
1099 * serial->type->suspend() MUST return 0 in system sleep context,
1100 * otherwise, the resume callback has to recover device from
1101 * previous suspend failure.
1103 if (serial
->type
->suspend
) {
1104 r
= serial
->type
->suspend(serial
, message
);
1106 serial
->suspending
= 0;
1111 for (i
= 0; i
< serial
->num_ports
; ++i
)
1112 usb_serial_port_poison_urbs(serial
->port
[i
]);
1116 EXPORT_SYMBOL(usb_serial_suspend
);
1118 static void usb_serial_unpoison_port_urbs(struct usb_serial
*serial
)
1122 for (i
= 0; i
< serial
->num_ports
; ++i
)
1123 usb_serial_port_unpoison_urbs(serial
->port
[i
]);
1126 int usb_serial_resume(struct usb_interface
*intf
)
1128 struct usb_serial
*serial
= usb_get_intfdata(intf
);
1131 usb_serial_unpoison_port_urbs(serial
);
1133 serial
->suspending
= 0;
1134 if (serial
->type
->resume
)
1135 rv
= serial
->type
->resume(serial
);
1137 rv
= usb_serial_generic_resume(serial
);
1141 EXPORT_SYMBOL(usb_serial_resume
);
1143 static int usb_serial_reset_resume(struct usb_interface
*intf
)
1145 struct usb_serial
*serial
= usb_get_intfdata(intf
);
1148 usb_serial_unpoison_port_urbs(serial
);
1150 serial
->suspending
= 0;
1151 if (serial
->type
->reset_resume
) {
1152 rv
= serial
->type
->reset_resume(serial
);
1155 intf
->needs_binding
= 1;
1161 static const struct tty_operations serial_ops
= {
1162 .open
= serial_open
,
1163 .close
= serial_close
,
1164 .write
= serial_write
,
1165 .hangup
= serial_hangup
,
1166 .write_room
= serial_write_room
,
1167 .ioctl
= serial_ioctl
,
1168 .set_termios
= serial_set_termios
,
1169 .throttle
= serial_throttle
,
1170 .unthrottle
= serial_unthrottle
,
1171 .break_ctl
= serial_break
,
1172 .chars_in_buffer
= serial_chars_in_buffer
,
1173 .wait_until_sent
= serial_wait_until_sent
,
1174 .tiocmget
= serial_tiocmget
,
1175 .tiocmset
= serial_tiocmset
,
1176 .get_icount
= serial_get_icount
,
1177 .cleanup
= serial_cleanup
,
1178 .install
= serial_install
,
1179 .proc_show
= serial_proc_show
,
1183 struct tty_driver
*usb_serial_tty_driver
;
1185 static int __init
usb_serial_init(void)
1189 usb_serial_tty_driver
= alloc_tty_driver(USB_SERIAL_TTY_MINORS
);
1190 if (!usb_serial_tty_driver
)
1193 /* Initialize our global data */
1194 result
= bus_register(&usb_serial_bus_type
);
1196 pr_err("%s - registering bus driver failed\n", __func__
);
1200 usb_serial_tty_driver
->driver_name
= "usbserial";
1201 usb_serial_tty_driver
->name
= "ttyUSB";
1202 usb_serial_tty_driver
->major
= USB_SERIAL_TTY_MAJOR
;
1203 usb_serial_tty_driver
->minor_start
= 0;
1204 usb_serial_tty_driver
->type
= TTY_DRIVER_TYPE_SERIAL
;
1205 usb_serial_tty_driver
->subtype
= SERIAL_TYPE_NORMAL
;
1206 usb_serial_tty_driver
->flags
= TTY_DRIVER_REAL_RAW
|
1207 TTY_DRIVER_DYNAMIC_DEV
;
1208 usb_serial_tty_driver
->init_termios
= tty_std_termios
;
1209 usb_serial_tty_driver
->init_termios
.c_cflag
= B9600
| CS8
| CREAD
1211 usb_serial_tty_driver
->init_termios
.c_ispeed
= 9600;
1212 usb_serial_tty_driver
->init_termios
.c_ospeed
= 9600;
1213 tty_set_operations(usb_serial_tty_driver
, &serial_ops
);
1214 result
= tty_register_driver(usb_serial_tty_driver
);
1216 pr_err("%s - tty_register_driver failed\n", __func__
);
1217 goto exit_reg_driver
;
1220 /* register the generic driver, if we should */
1221 result
= usb_serial_generic_register();
1223 pr_err("%s - registering generic driver failed\n", __func__
);
1230 tty_unregister_driver(usb_serial_tty_driver
);
1233 bus_unregister(&usb_serial_bus_type
);
1236 pr_err("%s - returning with error %d\n", __func__
, result
);
1237 put_tty_driver(usb_serial_tty_driver
);
1242 static void __exit
usb_serial_exit(void)
1244 usb_serial_console_exit();
1246 usb_serial_generic_deregister();
1248 tty_unregister_driver(usb_serial_tty_driver
);
1249 put_tty_driver(usb_serial_tty_driver
);
1250 bus_unregister(&usb_serial_bus_type
);
1251 idr_destroy(&serial_minors
);
1255 module_init(usb_serial_init
);
1256 module_exit(usb_serial_exit
);
1258 #define set_to_generic_if_null(type, function) \
1260 if (!type->function) { \
1261 type->function = usb_serial_generic_##function; \
1262 pr_debug("%s: using generic " #function "\n", \
1263 type->driver.name); \
1267 static void usb_serial_operations_init(struct usb_serial_driver
*device
)
1269 set_to_generic_if_null(device
, open
);
1270 set_to_generic_if_null(device
, write
);
1271 set_to_generic_if_null(device
, close
);
1272 set_to_generic_if_null(device
, write_room
);
1273 set_to_generic_if_null(device
, chars_in_buffer
);
1274 if (device
->tx_empty
)
1275 set_to_generic_if_null(device
, wait_until_sent
);
1276 set_to_generic_if_null(device
, read_bulk_callback
);
1277 set_to_generic_if_null(device
, write_bulk_callback
);
1278 set_to_generic_if_null(device
, process_read_urb
);
1279 set_to_generic_if_null(device
, prepare_write_buffer
);
1282 static int usb_serial_register(struct usb_serial_driver
*driver
)
1289 if (!driver
->description
)
1290 driver
->description
= driver
->driver
.name
;
1291 if (!driver
->usb_driver
) {
1292 WARN(1, "Serial driver %s has no usb_driver\n",
1293 driver
->description
);
1297 /* Prevent individual ports from being unbound. */
1298 driver
->driver
.suppress_bind_attrs
= true;
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");