diff options
Diffstat (limited to 'drivers/serial')
-rw-r--r-- | drivers/serial/imx.c | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c index 5f0be40dfdab..76c8fa1884ec 100644 --- a/drivers/serial/imx.c +++ b/drivers/serial/imx.c | |||
@@ -302,8 +302,7 @@ static inline void imx_transmit_buffer(struct imx_port *sport) | |||
302 | /* send xmit->buf[xmit->tail] | 302 | /* send xmit->buf[xmit->tail] |
303 | * out the port here */ | 303 | * out the port here */ |
304 | writel(xmit->buf[xmit->tail], sport->port.membase + URTX0); | 304 | writel(xmit->buf[xmit->tail], sport->port.membase + URTX0); |
305 | xmit->tail = (xmit->tail + 1) & | 305 | xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); |
306 | (UART_XMIT_SIZE - 1); | ||
307 | sport->port.icount.tx++; | 306 | sport->port.icount.tx++; |
308 | if (uart_circ_empty(xmit)) | 307 | if (uart_circ_empty(xmit)) |
309 | break; | 308 | break; |
@@ -395,8 +394,7 @@ static irqreturn_t imx_rxint(int irq, void *dev_id) | |||
395 | continue; | 394 | continue; |
396 | } | 395 | } |
397 | 396 | ||
398 | if (uart_handle_sysrq_char | 397 | if (uart_handle_sysrq_char(&sport->port, (unsigned char)rx)) |
399 | (&sport->port, (unsigned char)rx)) | ||
400 | continue; | 398 | continue; |
401 | 399 | ||
402 | if (rx & (URXD_PRERR | URXD_OVRRUN | URXD_FRMERR) ) { | 400 | if (rx & (URXD_PRERR | URXD_OVRRUN | URXD_FRMERR) ) { |
@@ -471,26 +469,26 @@ static unsigned int imx_tx_empty(struct uart_port *port) | |||
471 | */ | 469 | */ |
472 | static unsigned int imx_get_mctrl(struct uart_port *port) | 470 | static unsigned int imx_get_mctrl(struct uart_port *port) |
473 | { | 471 | { |
474 | struct imx_port *sport = (struct imx_port *)port; | 472 | struct imx_port *sport = (struct imx_port *)port; |
475 | unsigned int tmp = TIOCM_DSR | TIOCM_CAR; | 473 | unsigned int tmp = TIOCM_DSR | TIOCM_CAR; |
476 | 474 | ||
477 | if (readl(sport->port.membase + USR1) & USR1_RTSS) | 475 | if (readl(sport->port.membase + USR1) & USR1_RTSS) |
478 | tmp |= TIOCM_CTS; | 476 | tmp |= TIOCM_CTS; |
479 | 477 | ||
480 | if (readl(sport->port.membase + UCR2) & UCR2_CTS) | 478 | if (readl(sport->port.membase + UCR2) & UCR2_CTS) |
481 | tmp |= TIOCM_RTS; | 479 | tmp |= TIOCM_RTS; |
482 | 480 | ||
483 | return tmp; | 481 | return tmp; |
484 | } | 482 | } |
485 | 483 | ||
486 | static void imx_set_mctrl(struct uart_port *port, unsigned int mctrl) | 484 | static void imx_set_mctrl(struct uart_port *port, unsigned int mctrl) |
487 | { | 485 | { |
488 | struct imx_port *sport = (struct imx_port *)port; | 486 | struct imx_port *sport = (struct imx_port *)port; |
489 | unsigned long temp; | 487 | unsigned long temp; |
490 | 488 | ||
491 | temp = readl(sport->port.membase + UCR2) & ~UCR2_CTS; | 489 | temp = readl(sport->port.membase + UCR2) & ~UCR2_CTS; |
492 | 490 | ||
493 | if (mctrl & TIOCM_RTS) | 491 | if (mctrl & TIOCM_RTS) |
494 | temp |= UCR2_CTS; | 492 | temp |= UCR2_CTS; |
495 | 493 | ||
496 | writel(temp, sport->port.membase + UCR2); | 494 | writel(temp, sport->port.membase + UCR2); |
@@ -1072,22 +1070,22 @@ static struct uart_driver imx_reg = { | |||
1072 | 1070 | ||
1073 | static int serial_imx_suspend(struct platform_device *dev, pm_message_t state) | 1071 | static int serial_imx_suspend(struct platform_device *dev, pm_message_t state) |
1074 | { | 1072 | { |
1075 | struct imx_port *sport = platform_get_drvdata(dev); | 1073 | struct imx_port *sport = platform_get_drvdata(dev); |
1076 | 1074 | ||
1077 | if (sport) | 1075 | if (sport) |
1078 | uart_suspend_port(&imx_reg, &sport->port); | 1076 | uart_suspend_port(&imx_reg, &sport->port); |
1079 | 1077 | ||
1080 | return 0; | 1078 | return 0; |
1081 | } | 1079 | } |
1082 | 1080 | ||
1083 | static int serial_imx_resume(struct platform_device *dev) | 1081 | static int serial_imx_resume(struct platform_device *dev) |
1084 | { | 1082 | { |
1085 | struct imx_port *sport = platform_get_drvdata(dev); | 1083 | struct imx_port *sport = platform_get_drvdata(dev); |
1086 | 1084 | ||
1087 | if (sport) | 1085 | if (sport) |
1088 | uart_resume_port(&imx_reg, &sport->port); | 1086 | uart_resume_port(&imx_reg, &sport->port); |
1089 | 1087 | ||
1090 | return 0; | 1088 | return 0; |
1091 | } | 1089 | } |
1092 | 1090 | ||
1093 | static int serial_imx_probe(struct platform_device *pdev) | 1091 | static int serial_imx_probe(struct platform_device *pdev) |
@@ -1143,7 +1141,7 @@ static int serial_imx_probe(struct platform_device *pdev) | |||
1143 | imx_ports[pdev->id] = sport; | 1141 | imx_ports[pdev->id] = sport; |
1144 | 1142 | ||
1145 | pdata = pdev->dev.platform_data; | 1143 | pdata = pdev->dev.platform_data; |
1146 | if(pdata && (pdata->flags & IMXUART_HAVE_RTSCTS)) | 1144 | if (pdata && (pdata->flags & IMXUART_HAVE_RTSCTS)) |
1147 | sport->have_rtscts = 1; | 1145 | sport->have_rtscts = 1; |
1148 | 1146 | ||
1149 | if (pdata->init) { | 1147 | if (pdata->init) { |
@@ -1193,13 +1191,13 @@ static int serial_imx_remove(struct platform_device *pdev) | |||
1193 | } | 1191 | } |
1194 | 1192 | ||
1195 | static struct platform_driver serial_imx_driver = { | 1193 | static struct platform_driver serial_imx_driver = { |
1196 | .probe = serial_imx_probe, | 1194 | .probe = serial_imx_probe, |
1197 | .remove = serial_imx_remove, | 1195 | .remove = serial_imx_remove, |
1198 | 1196 | ||
1199 | .suspend = serial_imx_suspend, | 1197 | .suspend = serial_imx_suspend, |
1200 | .resume = serial_imx_resume, | 1198 | .resume = serial_imx_resume, |
1201 | .driver = { | 1199 | .driver = { |
1202 | .name = "imx-uart", | 1200 | .name = "imx-uart", |
1203 | .owner = THIS_MODULE, | 1201 | .owner = THIS_MODULE, |
1204 | }, | 1202 | }, |
1205 | }; | 1203 | }; |