mxser: introduce mxser_16550A_or_MUST helper

This check is used in the code on many places. Either in positive or
negative form. So introduce a helper called mxser_16550A_or_MUST for
this purpose. And replace all the occurrences.

This simplifies many ifs in there.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Link: https://lore.kernel.org/r/20210618061516.662-67-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Jiri Slaby 2021-06-18 08:15:12 +02:00 committed by Greg Kroah-Hartman
parent 06cc52ef82
commit 5d1ea1ad28

View File

@ -398,6 +398,11 @@ static enum mxser_must_hwid mxser_must_get_hwid(unsigned long io)
return MOXA_OTHER_UART; return MOXA_OTHER_UART;
} }
static bool mxser_16550A_or_MUST(struct mxser_port *info)
{
return info->type == PORT_16550A || info->board->must_hwid;
}
static void mxser_process_txrx_fifo(struct mxser_port *info) static void mxser_process_txrx_fifo(struct mxser_port *info)
{ {
unsigned int i; unsigned int i;
@ -537,8 +542,7 @@ static void mxser_handle_cts(struct tty_struct *tty, struct mxser_port *info,
if (cts) { if (cts) {
tty->hw_stopped = 0; tty->hw_stopped = 0;
if (info->type != PORT_16550A && if (!mxser_16550A_or_MUST(info))
!info->board->must_hwid)
__mxser_start_tx(info); __mxser_start_tx(info);
tty_wakeup(tty); tty_wakeup(tty);
} }
@ -547,7 +551,7 @@ static void mxser_handle_cts(struct tty_struct *tty, struct mxser_port *info,
return; return;
tty->hw_stopped = 1; tty->hw_stopped = 1;
if (info->type != PORT_16550A && !info->board->must_hwid) if (!mxser_16550A_or_MUST(info))
__mxser_stop_tx(info); __mxser_stop_tx(info);
} }
@ -626,7 +630,7 @@ static void mxser_change_speed(struct tty_struct *tty)
tty_port_set_cts_flow(&info->port, cflag & CRTSCTS); tty_port_set_cts_flow(&info->port, cflag & CRTSCTS);
if (cflag & CRTSCTS) { if (cflag & CRTSCTS) {
info->IER |= UART_IER_MSI; info->IER |= UART_IER_MSI;
if ((info->type == PORT_16550A) || (info->board->must_hwid)) { if (mxser_16550A_or_MUST(info)) {
info->MCR |= UART_MCR_AFE; info->MCR |= UART_MCR_AFE;
} else { } else {
mxser_handle_cts(tty, info, mxser_handle_cts(tty, info,
@ -962,11 +966,10 @@ static int mxser_write(struct tty_struct *tty, const unsigned char *buf, int cou
total += c; total += c;
} }
if (info->xmit_cnt && !tty->flow.stopped) { if (info->xmit_cnt && !tty->flow.stopped)
if (!tty->hw_stopped || info->type == PORT_16550A || if (!tty->hw_stopped || mxser_16550A_or_MUST(info))
info->board->must_hwid)
mxser_start_tx(info); mxser_start_tx(info);
}
return total; return total;
} }
@ -996,8 +999,7 @@ static void mxser_flush_chars(struct tty_struct *tty)
struct mxser_port *info = tty->driver_data; struct mxser_port *info = tty->driver_data;
if (!info->xmit_cnt || tty->flow.stopped || !info->port.xmit_buf || if (!info->xmit_cnt || tty->flow.stopped || !info->port.xmit_buf ||
(tty->hw_stopped && info->type != PORT_16550A && (tty->hw_stopped && !mxser_16550A_or_MUST(info)))
!info->board->must_hwid))
return; return;
mxser_start_tx(info); mxser_start_tx(info);
@ -1655,9 +1657,7 @@ static void mxser_transmit_chars(struct tty_struct *tty, struct mxser_port *port
return; return;
if (!port->xmit_cnt || tty->flow.stopped || if (!port->xmit_cnt || tty->flow.stopped ||
(tty->hw_stopped && (tty->hw_stopped && !mxser_16550A_or_MUST(port))) {
(port->type != PORT_16550A) &&
(!port->board->must_hwid))) {
__mxser_stop_tx(port); __mxser_stop_tx(port);
return; return;
} }