Skip to content

Commit

Permalink
serial: imx: reorder functions to simplify next patch
Browse files Browse the repository at this point in the history
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 Apr 30, 2016
1 parent 9ec8efe commit 66f9588
Showing 1 changed file with 49 additions and 49 deletions.
98 changes: 49 additions & 49 deletions drivers/tty/serial/imx.c
Original file line number Diff line number Diff line change
Expand Up @@ -732,6 +732,55 @@ static void imx_dma_rxint(struct imx_port *sport)
spin_unlock_irqrestore(&sport->port.lock, flags);
}

/*
* We have a modem side uart, so the meanings of RTS and CTS are inverted.
*/
static unsigned int imx_get_hwmctrl(struct imx_port *sport)
{
unsigned int tmp = TIOCM_DSR;
unsigned usr1 = readl(sport->port.membase + USR1);

if (usr1 & USR1_RTSS)
tmp |= TIOCM_CTS;

/* in DCE mode DCDIN is always 0 */
if (!(usr1 & USR2_DCDIN))
tmp |= TIOCM_CAR;

if (sport->dte_mode)
if (!(readl(sport->port.membase + USR2) & USR2_RIIN))
tmp |= TIOCM_RI;

return tmp;
}

/*
* 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_hwmctrl(sport);
changed = status ^ sport->old_status;

if (changed == 0)
return;

sport->old_status = status;

if (changed & TIOCM_RI && status & 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);
}

static irqreturn_t imx_int(int irq, void *dev_id)
{
struct imx_port *sport = dev_id;
Expand Down Expand Up @@ -794,28 +843,6 @@ static unsigned int imx_tx_empty(struct uart_port *port)
return ret;
}

/*
* We have a modem side uart, so the meanings of RTS and CTS are inverted.
*/
static unsigned int imx_get_hwmctrl(struct imx_port *sport)
{
unsigned int tmp = TIOCM_DSR;
unsigned usr1 = readl(sport->port.membase + USR1);

if (usr1 & USR1_RTSS)
tmp |= TIOCM_CTS;

/* in DCE mode DCDIN is always 0 */
if (!(usr1 & USR2_DCDIN))
tmp |= TIOCM_CAR;

if (sport->dte_mode)
if (!(readl(sport->port.membase + USR2) & USR2_RIIN))
tmp |= TIOCM_RI;

return tmp;
}

static unsigned int imx_get_mctrl(struct uart_port *port)
{
struct imx_port *sport = (struct imx_port *)port;
Expand Down Expand Up @@ -872,33 +899,6 @@ 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_hwmctrl(sport);
changed = status ^ sport->old_status;

if (changed == 0)
return;

sport->old_status = status;

if (changed & TIOCM_RI && status & 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.
Expand Down

0 comments on commit 66f9588

Please sign in to comment.