USB: serial: call handle_dcd_change in ftdi driver.
authorPaul Chavent <Paul.Chavent@onera.fr>
Mon, 16 Sep 2013 06:40:59 +0000 (08:40 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 26 Sep 2013 16:45:40 +0000 (09:45 -0700)
When the device receive a DCD status change, forward the signal to the
USB serial system. This way, we can detect, for instance, PPS pulses.

Signed-off-by: Paul Chavent <paul.chavent@onera.fr>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/serial/ftdi_sio.c

index c45f9c0a1b3493f8f5566c87d6b8702f9fc8116c..f53298d320991d31ab7340dfb92c17db9ca49a06 100644 (file)
@@ -1966,8 +1966,16 @@ static int ftdi_process_packet(struct usb_serial_port *port,
                        port->icount.dsr++;
                if (diff_status & FTDI_RS0_RI)
                        port->icount.rng++;
-               if (diff_status & FTDI_RS0_RLSD)
+               if (diff_status & FTDI_RS0_RLSD) {
+                       struct tty_struct *tty;
+
                        port->icount.dcd++;
+                       tty = tty_port_tty_get(&port->port);
+                       if (tty)
+                               usb_serial_handle_dcd_change(port, tty,
+                                               status & FTDI_RS0_RLSD);
+                       tty_kref_put(tty);
+               }
 
                wake_up_interruptible(&port->port.delta_msr_wait);
                priv->prev_status = status;