USB: mos7840: remove broken chase implementation
authorJohan Hovold <jhovold@gmail.com>
Wed, 26 Jun 2013 14:47:39 +0000 (16:47 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 23 Jul 2013 23:28:23 +0000 (16:28 -0700)
Remove broken "chase" implementation which was supposed to be used to
drain the write buffers at break.

The chase implementation slept on a wait queue which was never woken up
(i.e. no hardware buffers were queried), and thus amounted to nothing
more than polling chars_in_buffer, something which has already been
taken care of by the tty layer.

Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/serial/mos7840.c

index 0a818b238508e26ab4b1932a844b740ba25c5d3c..dff27e6b677adc7af3669d0b1cffa5db193466eb 100644 (file)
@@ -218,7 +218,6 @@ struct moschip_port {
        __u8 shadowMCR;         /* last MCR value received */
        char open;
        char open_ports;
-       wait_queue_head_t wait_chase;   /* for handling sleeping while waiting for chase to finish */
        struct usb_serial_port *port;   /* loop back to the owner of this object */
 
        /* Offsets */
@@ -1092,9 +1091,6 @@ static int mos7840_open(struct tty_struct *tty, struct usb_serial_port *port)
                mos7840_port->read_urb_busy = false;
        }
 
-       /* initialize our wait queues */
-       init_waitqueue_head(&mos7840_port->wait_chase);
-
        /* initialize our port settings */
        /* Must set to enable ints! */
        mos7840_port->shadowMCR = MCR_MASTER_IE;
@@ -1211,47 +1207,6 @@ static void mos7840_close(struct usb_serial_port *port)
        mos7840_port->open = 0;
 }
 
-/************************************************************************
- *
- * mos7840_block_until_chase_response
- *
- *     This function will block the close until one of the following:
- *             1. Response to our Chase comes from mos7840
- *             2. A timeout of 10 seconds without activity has expired
- *                (1K of mos7840 data @ 2400 baud ==> 4 sec to empty)
- *
- ************************************************************************/
-
-static void mos7840_block_until_chase_response(struct tty_struct *tty,
-                                       struct moschip_port *mos7840_port)
-{
-       int timeout = msecs_to_jiffies(1000);
-       int wait = 10;
-       int count;
-
-       while (1) {
-               count = mos7840_chars_in_buffer(tty);
-
-               /* Check for Buffer status */
-               if (count <= 0)
-                       return;
-
-               /* Block the thread for a while */
-               interruptible_sleep_on_timeout(&mos7840_port->wait_chase,
-                                              timeout);
-               /* No activity.. count down section */
-               wait--;
-               if (wait == 0) {
-                       dev_dbg(&mos7840_port->port->dev, "%s - TIMEOUT\n", __func__);
-                       return;
-               } else {
-                       /* Reset timeout value back to seconds */
-                       wait = 10;
-               }
-       }
-
-}
-
 /*****************************************************************************
  * mos7840_break
  *     this function sends a break to the port
@@ -1275,9 +1230,6 @@ static void mos7840_break(struct tty_struct *tty, int break_state)
        if (mos7840_port == NULL)
                return;
 
-       /* flush and block until tx is empty */
-       mos7840_block_until_chase_response(tty, mos7840_port);
-
        if (break_state == -1)
                data = mos7840_port->shadowLCR | LCR_SET_BREAK;
        else