Skip to content

Commit

Permalink
serial: imx: reorder functions and simplify a bit
Browse files Browse the repository at this point in the history
Now that imx_mctrl_check is implemented below imx_get_mctrl the former
can call the latter directly instead of via sport->port.ops->get_mctrl.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Uwe Kleine-König authored and Greg Kroah-Hartman committed Dec 14, 2015
1 parent 90ebc48 commit cc56884
Showing 1 changed file with 45 additions and 45 deletions.
90 changes: 45 additions & 45 deletions drivers/tty/serial/imx.c
Original file line number Diff line number Diff line change
Expand Up @@ -311,51 +311,6 @@ static void imx_port_ucrs_restore(struct uart_port *port,
}
#endif

/*
* Handle any change of modem status signal since we were last called.
*/
static void imx_mctrl_check(struct imx_port *sport)
{
unsigned int status, changed;

status = sport->port.ops->get_mctrl(&sport->port);
changed = status ^ sport->old_status;

if (changed == 0)
return;

sport->old_status = status;

if (changed & TIOCM_RI)
sport->port.icount.rng++;
if (changed & TIOCM_DSR)
sport->port.icount.dsr++;
if (changed & TIOCM_CAR)
uart_handle_dcd_change(&sport->port, status & TIOCM_CAR);
if (changed & TIOCM_CTS)
uart_handle_cts_change(&sport->port, status & TIOCM_CTS);

wake_up_interruptible(&sport->port.state->port.delta_msr_wait);
}

/*
* This is our per-port timeout handler, for checking the
* modem status signals.
*/
static void imx_timeout(unsigned long data)
{
struct imx_port *sport = (struct imx_port *)data;
unsigned long flags;

if (sport->port.state) {
spin_lock_irqsave(&sport->port.lock, flags);
imx_mctrl_check(sport);
spin_unlock_irqrestore(&sport->port.lock, flags);

mod_timer(&sport->timer, jiffies + MCTRL_TIMEOUT);
}
}

/*
* interrupts disabled on entry
*/
Expand Down Expand Up @@ -868,6 +823,51 @@ static void imx_break_ctl(struct uart_port *port, int break_state)
spin_unlock_irqrestore(&sport->port.lock, flags);
}

/*
* Handle any change of modem status signal since we were last called.
*/
static void imx_mctrl_check(struct imx_port *sport)
{
unsigned int status, changed;

status = imx_get_mctrl(&sport->port);
changed = status ^ sport->old_status;

if (changed == 0)
return;

sport->old_status = status;

if (changed & TIOCM_RI)
sport->port.icount.rng++;
if (changed & TIOCM_DSR)
sport->port.icount.dsr++;
if (changed & TIOCM_CAR)
uart_handle_dcd_change(&sport->port, status & TIOCM_CAR);
if (changed & TIOCM_CTS)
uart_handle_cts_change(&sport->port, status & TIOCM_CTS);

wake_up_interruptible(&sport->port.state->port.delta_msr_wait);
}

/*
* This is our per-port timeout handler, for checking the
* modem status signals.
*/
static void imx_timeout(unsigned long data)
{
struct imx_port *sport = (struct imx_port *)data;
unsigned long flags;

if (sport->port.state) {
spin_lock_irqsave(&sport->port.lock, flags);
imx_mctrl_check(sport);
spin_unlock_irqrestore(&sport->port.lock, flags);

mod_timer(&sport->timer, jiffies + MCTRL_TIMEOUT);
}
}

#define RX_BUF_SIZE (PAGE_SIZE)
static void imx_rx_dma_done(struct imx_port *sport)
{
Expand Down

0 comments on commit cc56884

Please sign in to comment.