|
@@ -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
|
|
|
*/
|
|
@@ -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)
|
|
|
{
|