serial: add a new helper function
In most of the time, the driver needs to check if the cts flow control is enabled. But now, the driver checks the ASYNC_CTS_FLOW flag manually, which is not a grace way. So add a new wraper function to make the code tidy and clean. Signed-off-by: Huang Shijie <shijie8@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
e5b57c037a
commit
f21ec3d2d4
|
@ -1050,7 +1050,7 @@ static void cts_change(MGSLPC_INFO *info, struct tty_struct *tty)
|
|||
wake_up_interruptible(&info->status_event_wait_q);
|
||||
wake_up_interruptible(&info->event_wait_q);
|
||||
|
||||
if (info->port.flags & ASYNC_CTS_FLOW) {
|
||||
if (tty_port_cts_enabled(&info->port)) {
|
||||
if (tty->hw_stopped) {
|
||||
if (info->serial_signals & SerialSignal_CTS) {
|
||||
if (debug_level >= DEBUG_LEVEL_ISR)
|
||||
|
|
|
@ -420,7 +420,7 @@ static void check_modem_status(struct serial_state *info)
|
|||
tty_hangup(port->tty);
|
||||
}
|
||||
}
|
||||
if (port->flags & ASYNC_CTS_FLOW) {
|
||||
if (tty_port_cts_enabled(port)) {
|
||||
if (port->tty->hw_stopped) {
|
||||
if (!(status & SER_CTS)) {
|
||||
#if (defined(SERIAL_DEBUG_INTR) || defined(SERIAL_DEBUG_FLOW))
|
||||
|
|
|
@ -727,7 +727,7 @@ static void cyy_chip_modem(struct cyclades_card *cinfo, int chip,
|
|||
else
|
||||
tty_hangup(tty);
|
||||
}
|
||||
if ((mdm_change & CyCTS) && (info->port.flags & ASYNC_CTS_FLOW)) {
|
||||
if ((mdm_change & CyCTS) && tty_port_cts_enabled(&info->port)) {
|
||||
if (tty->hw_stopped) {
|
||||
if (mdm_status & CyCTS) {
|
||||
/* cy_start isn't used
|
||||
|
|
|
@ -600,7 +600,7 @@ static irqreturn_t isicom_interrupt(int irq, void *dev_id)
|
|||
port->status &= ~ISI_DCD;
|
||||
}
|
||||
|
||||
if (port->port.flags & ASYNC_CTS_FLOW) {
|
||||
if (tty_port_cts_enabled(&port->port)) {
|
||||
if (tty->hw_stopped) {
|
||||
if (header & ISI_CTS) {
|
||||
port->port.tty->hw_stopped = 0;
|
||||
|
|
|
@ -830,7 +830,7 @@ static void mxser_check_modem_status(struct tty_struct *tty,
|
|||
wake_up_interruptible(&port->port.open_wait);
|
||||
}
|
||||
|
||||
if (port->port.flags & ASYNC_CTS_FLOW) {
|
||||
if (tty_port_cts_enabled(&port->port)) {
|
||||
if (tty->hw_stopped) {
|
||||
if (status & UART_MSR_CTS) {
|
||||
tty->hw_stopped = 0;
|
||||
|
|
|
@ -262,7 +262,7 @@ static void mxs_auart_set_mctrl(struct uart_port *u, unsigned mctrl)
|
|||
|
||||
ctrl &= ~AUART_CTRL2_RTSEN;
|
||||
if (mctrl & TIOCM_RTS) {
|
||||
if (u->state->port.flags & ASYNC_CTS_FLOW)
|
||||
if (tty_port_cts_enabled(&u->state->port))
|
||||
ctrl |= AUART_CTRL2_RTSEN;
|
||||
}
|
||||
|
||||
|
|
|
@ -176,7 +176,7 @@ static int uart_port_startup(struct tty_struct *tty, struct uart_state *state,
|
|||
uart_set_mctrl(uport, TIOCM_RTS | TIOCM_DTR);
|
||||
}
|
||||
|
||||
if (port->flags & ASYNC_CTS_FLOW) {
|
||||
if (tty_port_cts_enabled(port)) {
|
||||
spin_lock_irq(&uport->lock);
|
||||
if (!(uport->ops->get_mctrl(uport) & TIOCM_CTS))
|
||||
tty->hw_stopped = 1;
|
||||
|
@ -2509,7 +2509,7 @@ void uart_handle_cts_change(struct uart_port *uport, unsigned int status)
|
|||
|
||||
uport->icount.cts++;
|
||||
|
||||
if (port->flags & ASYNC_CTS_FLOW) {
|
||||
if (tty_port_cts_enabled(port)) {
|
||||
if (tty->hw_stopped) {
|
||||
if (status) {
|
||||
tty->hw_stopped = 0;
|
||||
|
|
|
@ -1359,7 +1359,7 @@ static void mgsl_isr_io_pin( struct mgsl_struct *info )
|
|||
}
|
||||
}
|
||||
|
||||
if ( (info->port.flags & ASYNC_CTS_FLOW) &&
|
||||
if (tty_port_cts_enabled(&info->port) &&
|
||||
(status & MISCSTATUS_CTS_LATCHED) ) {
|
||||
if (info->port.tty->hw_stopped) {
|
||||
if (status & MISCSTATUS_CTS) {
|
||||
|
|
|
@ -2053,7 +2053,7 @@ static void cts_change(struct slgt_info *info, unsigned short status)
|
|||
wake_up_interruptible(&info->event_wait_q);
|
||||
info->pending_bh |= BH_STATUS;
|
||||
|
||||
if (info->port.flags & ASYNC_CTS_FLOW) {
|
||||
if (tty_port_cts_enabled(&info->port)) {
|
||||
if (info->port.tty) {
|
||||
if (info->port.tty->hw_stopped) {
|
||||
if (info->signals & SerialSignal_CTS) {
|
||||
|
|
|
@ -2500,7 +2500,7 @@ static void isr_io_pin( SLMP_INFO *info, u16 status )
|
|||
}
|
||||
}
|
||||
|
||||
if ( (info->port.flags & ASYNC_CTS_FLOW) &&
|
||||
if (tty_port_cts_enabled(&info->port) &&
|
||||
(status & MISCSTATUS_CTS_LATCHED) ) {
|
||||
if ( info->port.tty ) {
|
||||
if (info->port.tty->hw_stopped) {
|
||||
|
|
|
@ -514,6 +514,12 @@ static inline struct tty_port *tty_port_get(struct tty_port *port)
|
|||
return port;
|
||||
}
|
||||
|
||||
/* If the cts flow control is enabled, return true. */
|
||||
static inline bool tty_port_cts_enabled(struct tty_port *port)
|
||||
{
|
||||
return port->flags & ASYNC_CTS_FLOW;
|
||||
}
|
||||
|
||||
extern struct tty_struct *tty_port_tty_get(struct tty_port *port);
|
||||
extern void tty_port_tty_set(struct tty_port *port, struct tty_struct *tty);
|
||||
extern int tty_port_carrier_raised(struct tty_port *port);
|
||||
|
|
|
@ -1070,7 +1070,7 @@ void ircomm_tty_check_modem_status(struct ircomm_tty_cb *self)
|
|||
goto put;
|
||||
}
|
||||
}
|
||||
if (tty && self->port.flags & ASYNC_CTS_FLOW) {
|
||||
if (tty && tty_port_cts_enabled(&self->port)) {
|
||||
if (tty->hw_stopped) {
|
||||
if (status & IRCOMM_CTS) {
|
||||
IRDA_DEBUG(2,
|
||||
|
@ -1313,7 +1313,7 @@ static void ircomm_tty_line_info(struct ircomm_tty_cb *self, struct seq_file *m)
|
|||
|
||||
seq_puts(m, "Flags:");
|
||||
sep = ' ';
|
||||
if (self->port.flags & ASYNC_CTS_FLOW) {
|
||||
if (tty_port_cts_enabled(&self->port)) {
|
||||
seq_printf(m, "%cASYNC_CTS_FLOW", sep);
|
||||
sep = '|';
|
||||
}
|
||||
|
|
|
@ -578,7 +578,7 @@ void ircomm_tty_link_established(struct ircomm_tty_cb *self)
|
|||
* will have to wait for the peer device (DCE) to raise the CTS
|
||||
* line.
|
||||
*/
|
||||
if ((self->port.flags & ASYNC_CTS_FLOW) &&
|
||||
if (tty_port_cts_enabled(&self->port) &&
|
||||
((self->settings.dce & IRCOMM_CTS) == 0)) {
|
||||
IRDA_DEBUG(0, "%s(), waiting for CTS ...\n", __func__ );
|
||||
goto put;
|
||||
|
|
Loading…
Reference in New Issue
Block a user