Commit a8da3c78 authored by Alexander Shiyan's avatar Alexander Shiyan Committed by Greg Kroah-Hartman
Browse files

serial: max310x: Fix tx_empty() callback



Function max310x_tx_empty() accesses the IRQSTS register, which is
cleared by IC when reading, so if there is an interrupt status, we
will lose it. This patch implement the transmitter check only by
the current FIFO level.

Signed-off-by: default avatarAlexander Shiyan <shc_work@mail.ru>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a88c4736
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -833,12 +833,9 @@ static void max310x_wq_proc(struct work_struct *ws)

static unsigned int max310x_tx_empty(struct uart_port *port)
{
	unsigned int lvl, sts;
	u8 lvl = max310x_port_read(port, MAX310X_TXFIFOLVL_REG);

	lvl = max310x_port_read(port, MAX310X_TXFIFOLVL_REG);
	sts = max310x_port_read(port, MAX310X_IRQSTS_REG);

	return ((sts & MAX310X_IRQ_TXEMPTY_BIT) && !lvl) ? TIOCSER_TEMT : 0;
	return lvl ? 0 : TIOCSER_TEMT;
}

static unsigned int max310x_get_mctrl(struct uart_port *port)