diff options
Diffstat (limited to 'drivers/serial')
-rw-r--r-- | drivers/serial/21285.c | 10 | ||||
-rw-r--r-- | drivers/serial/imx.c | 10 | ||||
-rw-r--r-- | drivers/serial/ioc3_serial.c | 9 | ||||
-rw-r--r-- | drivers/serial/ioc4_serial.c | 9 | ||||
-rw-r--r-- | drivers/serial/max3100.c | 7 |
5 files changed, 19 insertions, 26 deletions
diff --git a/drivers/serial/21285.c b/drivers/serial/21285.c index 8681f1345056..d89aa38c5cf0 100644 --- a/drivers/serial/21285.c +++ b/drivers/serial/21285.c | |||
@@ -216,7 +216,7 @@ serial21285_set_termios(struct uart_port *port, struct ktermios *termios, | |||
216 | struct ktermios *old) | 216 | struct ktermios *old) |
217 | { | 217 | { |
218 | unsigned long flags; | 218 | unsigned long flags; |
219 | unsigned int baud, quot, h_lcr; | 219 | unsigned int baud, quot, h_lcr, b; |
220 | 220 | ||
221 | /* | 221 | /* |
222 | * We don't support modem control lines. | 222 | * We don't support modem control lines. |
@@ -234,12 +234,8 @@ serial21285_set_termios(struct uart_port *port, struct ktermios *termios, | |||
234 | */ | 234 | */ |
235 | baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16); | 235 | baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16); |
236 | quot = uart_get_divisor(port, baud); | 236 | quot = uart_get_divisor(port, baud); |
237 | 237 | b = port->uartclk / (16 * quot); | |
238 | if (port->state && port->state->port.tty) { | 238 | tty_termios_encode_baud_rate(termios, b, b); |
239 | struct tty_struct *tty = port->state->port.tty; | ||
240 | unsigned int b = port->uartclk / (16 * quot); | ||
241 | tty_encode_baud_rate(tty, b, b); | ||
242 | } | ||
243 | 239 | ||
244 | switch (termios->c_cflag & CSIZE) { | 240 | switch (termios->c_cflag & CSIZE) { |
245 | case CS5: | 241 | case CS5: |
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c index eacb588a9345..66ecc7ab6dab 100644 --- a/drivers/serial/imx.c +++ b/drivers/serial/imx.c | |||
@@ -909,13 +909,11 @@ imx_set_termios(struct uart_port *port, struct ktermios *termios, | |||
909 | rational_best_approximation(16 * div * baud, sport->port.uartclk, | 909 | rational_best_approximation(16 * div * baud, sport->port.uartclk, |
910 | 1 << 16, 1 << 16, &num, &denom); | 910 | 1 << 16, 1 << 16, &num, &denom); |
911 | 911 | ||
912 | if (port->state && port->state->port.tty) { | 912 | tdiv64 = sport->port.uartclk; |
913 | tdiv64 = sport->port.uartclk; | 913 | tdiv64 *= num; |
914 | tdiv64 *= num; | 914 | do_div(tdiv64, denom * 16 * div); |
915 | do_div(tdiv64, denom * 16 * div); | 915 | tty_termios_encode_baud_rate(termios, |
916 | tty_encode_baud_rate(sport->port.state->port.tty, | ||
917 | (speed_t)tdiv64, (speed_t)tdiv64); | 916 | (speed_t)tdiv64, (speed_t)tdiv64); |
918 | } | ||
919 | 917 | ||
920 | num -= 1; | 918 | num -= 1; |
921 | denom -= 1; | 919 | denom -= 1; |
diff --git a/drivers/serial/ioc3_serial.c b/drivers/serial/ioc3_serial.c index f164ba4eba02..93de907b1208 100644 --- a/drivers/serial/ioc3_serial.c +++ b/drivers/serial/ioc3_serial.c | |||
@@ -954,12 +954,13 @@ ioc3_change_speed(struct uart_port *the_port, | |||
954 | struct ktermios *new_termios, struct ktermios *old_termios) | 954 | struct ktermios *new_termios, struct ktermios *old_termios) |
955 | { | 955 | { |
956 | struct ioc3_port *port = get_ioc3_port(the_port); | 956 | struct ioc3_port *port = get_ioc3_port(the_port); |
957 | unsigned int cflag; | 957 | unsigned int cflag, iflag; |
958 | int baud; | 958 | int baud; |
959 | int new_parity = 0, new_parity_enable = 0, new_stop = 0, new_data = 8; | 959 | int new_parity = 0, new_parity_enable = 0, new_stop = 0, new_data = 8; |
960 | struct uart_state *state = the_port->state; | 960 | struct uart_state *state = the_port->state; |
961 | 961 | ||
962 | cflag = new_termios->c_cflag; | 962 | cflag = new_termios->c_cflag; |
963 | iflag = new_termios->c_iflag; | ||
963 | 964 | ||
964 | switch (cflag & CSIZE) { | 965 | switch (cflag & CSIZE) { |
965 | case CS5: | 966 | case CS5: |
@@ -1000,12 +1001,12 @@ ioc3_change_speed(struct uart_port *the_port, | |||
1000 | 1001 | ||
1001 | state->port.tty->low_latency = 1; | 1002 | state->port.tty->low_latency = 1; |
1002 | 1003 | ||
1003 | if (I_IGNPAR(state->port.tty)) | 1004 | if (iflag & IGNPAR) |
1004 | the_port->ignore_status_mask &= ~(N_PARITY_ERROR | 1005 | the_port->ignore_status_mask &= ~(N_PARITY_ERROR |
1005 | | N_FRAMING_ERROR); | 1006 | | N_FRAMING_ERROR); |
1006 | if (I_IGNBRK(state->port.tty)) { | 1007 | if (iflag & IGNBRK) { |
1007 | the_port->ignore_status_mask &= ~N_BREAK; | 1008 | the_port->ignore_status_mask &= ~N_BREAK; |
1008 | if (I_IGNPAR(state->port.tty)) | 1009 | if (iflag & IGNPAR) |
1009 | the_port->ignore_status_mask &= ~N_OVERRUN_ERROR; | 1010 | the_port->ignore_status_mask &= ~N_OVERRUN_ERROR; |
1010 | } | 1011 | } |
1011 | if (!(cflag & CREAD)) { | 1012 | if (!(cflag & CREAD)) { |
diff --git a/drivers/serial/ioc4_serial.c b/drivers/serial/ioc4_serial.c index 8ad28fc64926..fcfe82653ac8 100644 --- a/drivers/serial/ioc4_serial.c +++ b/drivers/serial/ioc4_serial.c | |||
@@ -1685,11 +1685,12 @@ ioc4_change_speed(struct uart_port *the_port, | |||
1685 | { | 1685 | { |
1686 | struct ioc4_port *port = get_ioc4_port(the_port, 0); | 1686 | struct ioc4_port *port = get_ioc4_port(the_port, 0); |
1687 | int baud, bits; | 1687 | int baud, bits; |
1688 | unsigned cflag; | 1688 | unsigned cflag, iflag; |
1689 | int new_parity = 0, new_parity_enable = 0, new_stop = 0, new_data = 8; | 1689 | int new_parity = 0, new_parity_enable = 0, new_stop = 0, new_data = 8; |
1690 | struct uart_state *state = the_port->state; | 1690 | struct uart_state *state = the_port->state; |
1691 | 1691 | ||
1692 | cflag = new_termios->c_cflag; | 1692 | cflag = new_termios->c_cflag; |
1693 | iflag = new_termios->c_iflag; | ||
1693 | 1694 | ||
1694 | switch (cflag & CSIZE) { | 1695 | switch (cflag & CSIZE) { |
1695 | case CS5: | 1696 | case CS5: |
@@ -1741,12 +1742,12 @@ ioc4_change_speed(struct uart_port *the_port, | |||
1741 | 1742 | ||
1742 | state->port.tty->low_latency = 1; | 1743 | state->port.tty->low_latency = 1; |
1743 | 1744 | ||
1744 | if (I_IGNPAR(state->port.tty)) | 1745 | if (iflag & IGNPAR) |
1745 | the_port->ignore_status_mask &= ~(N_PARITY_ERROR | 1746 | the_port->ignore_status_mask &= ~(N_PARITY_ERROR |
1746 | | N_FRAMING_ERROR); | 1747 | | N_FRAMING_ERROR); |
1747 | if (I_IGNBRK(state->port.tty)) { | 1748 | if (iflag & IGNBRK) { |
1748 | the_port->ignore_status_mask &= ~N_BREAK; | 1749 | the_port->ignore_status_mask &= ~N_BREAK; |
1749 | if (I_IGNPAR(state->port.tty)) | 1750 | if (iflag & IGNPAR) |
1750 | the_port->ignore_status_mask &= ~N_OVERRUN_ERROR; | 1751 | the_port->ignore_status_mask &= ~N_OVERRUN_ERROR; |
1751 | } | 1752 | } |
1752 | if (!(cflag & CREAD)) { | 1753 | if (!(cflag & CREAD)) { |
diff --git a/drivers/serial/max3100.c b/drivers/serial/max3100.c index 3351c3bd59e4..beb1afa27d8d 100644 --- a/drivers/serial/max3100.c +++ b/drivers/serial/max3100.c | |||
@@ -430,17 +430,14 @@ max3100_set_termios(struct uart_port *port, struct ktermios *termios, | |||
430 | int baud = 0; | 430 | int baud = 0; |
431 | unsigned cflag; | 431 | unsigned cflag; |
432 | u32 param_new, param_mask, parity = 0; | 432 | u32 param_new, param_mask, parity = 0; |
433 | struct tty_struct *tty = s->port.state->port.tty; | ||
434 | 433 | ||
435 | dev_dbg(&s->spi->dev, "%s\n", __func__); | 434 | dev_dbg(&s->spi->dev, "%s\n", __func__); |
436 | if (!tty) | ||
437 | return; | ||
438 | 435 | ||
439 | cflag = termios->c_cflag; | 436 | cflag = termios->c_cflag; |
440 | param_new = 0; | 437 | param_new = 0; |
441 | param_mask = 0; | 438 | param_mask = 0; |
442 | 439 | ||
443 | baud = tty_get_baud_rate(tty); | 440 | baud = tty_termios_baud_rate(termios); |
444 | param_new = s->conf & MAX3100_BAUD; | 441 | param_new = s->conf & MAX3100_BAUD; |
445 | switch (baud) { | 442 | switch (baud) { |
446 | case 300: | 443 | case 300: |
@@ -485,7 +482,7 @@ max3100_set_termios(struct uart_port *port, struct ktermios *termios, | |||
485 | default: | 482 | default: |
486 | baud = s->baud; | 483 | baud = s->baud; |
487 | } | 484 | } |
488 | tty_encode_baud_rate(tty, baud, baud); | 485 | tty_termios_encode_baud_rate(termios, baud, baud); |
489 | s->baud = baud; | 486 | s->baud = baud; |
490 | param_mask |= MAX3100_BAUD; | 487 | param_mask |= MAX3100_BAUD; |
491 | 488 | ||