summaryrefslogtreecommitdiffstats
path: root/drivers/usb/serial
diff options
context:
space:
mode:
authorPaul Chavent <Paul.Chavent@onera.fr>2013-09-16 08:41:00 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-09-26 09:45:40 -0700
commit833efc0ed19ce9ed7a84dfd3684eb9d892fe9ded (patch)
tree1a693b88ee1c976704262a09b788ef0c4e62f87c /drivers/usb/serial
parentd14654dff7a3520b5220367b848732a0a8ccdabe (diff)
downloadop-kernel-dev-833efc0ed19ce9ed7a84dfd3684eb9d892fe9ded.zip
op-kernel-dev-833efc0ed19ce9ed7a84dfd3684eb9d892fe9ded.tar.gz
USB: serial: invoke dcd_change ldisc's handler.
The DCD pin of the serial port can receive a PPS signal. By calling the port line discipline dcd handle, this patch allow to monitor PPS through USB serial devices. However the performance aren't as good as the uart drivers, so document this point too. Signed-off-by: Paul Chavent <paul.chavent@onera.fr> Acked-by: Rodolfo Giometti <giometti@enneenne.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/serial')
-rw-r--r--drivers/usb/serial/generic.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/usb/serial/generic.c b/drivers/usb/serial/generic.c
index 1f31e6b..3a5dac8 100644
--- a/drivers/usb/serial/generic.c
+++ b/drivers/usb/serial/generic.c
@@ -570,6 +570,16 @@ void usb_serial_handle_dcd_change(struct usb_serial_port *usb_port,
dev_dbg(&usb_port->dev, "%s - status %d\n", __func__, status);
+ if (tty) {
+ struct tty_ldisc *ld = tty_ldisc_ref(tty);
+
+ if (ld) {
+ if (ld->ops->dcd_change)
+ ld->ops->dcd_change(tty, status);
+ tty_ldisc_deref(ld);
+ }
+ }
+
if (status)
wake_up_interruptible(&port->open_wait);
else if (tty && !C_CLOCAL(tty))
OpenPOWER on IntegriCloud