Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4833960e authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman
Browse files

USB: mos7840: remove broken chase implementation



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: default avatarJohan Hovold <jhovold@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 0fce06da
Loading
Loading
Loading
Loading
+0 −48
Original line number Diff line number Diff line
@@ -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