diff options
Diffstat (limited to 'drivers/serial/imx.c')
-rw-r--r-- | drivers/serial/imx.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c index 8c79e8c2fd4e..7b5d1de9cfe3 100644 --- a/drivers/serial/imx.c +++ b/drivers/serial/imx.c | |||
@@ -818,6 +818,7 @@ imx_set_termios(struct uart_port *port, struct ktermios *termios, | |||
818 | unsigned int old_csize = old ? old->c_cflag & CSIZE : CS8; | 818 | unsigned int old_csize = old ? old->c_cflag & CSIZE : CS8; |
819 | unsigned int div, ufcr; | 819 | unsigned int div, ufcr; |
820 | unsigned long num, denom; | 820 | unsigned long num, denom; |
821 | uint64_t tdiv64; | ||
821 | 822 | ||
822 | /* | 823 | /* |
823 | * If we don't support modem control lines, don't allow | 824 | * If we don't support modem control lines, don't allow |
@@ -930,6 +931,12 @@ imx_set_termios(struct uart_port *port, struct ktermios *termios, | |||
930 | rational_best_approximation(16 * div * baud, sport->port.uartclk, | 931 | rational_best_approximation(16 * div * baud, sport->port.uartclk, |
931 | 1 << 16, 1 << 16, &num, &denom); | 932 | 1 << 16, 1 << 16, &num, &denom); |
932 | 933 | ||
934 | tdiv64 = sport->port.uartclk; | ||
935 | tdiv64 *= num; | ||
936 | do_div(tdiv64, denom * 16 * div); | ||
937 | tty_encode_baud_rate(sport->port.info->port.tty, | ||
938 | (speed_t)tdiv64, (speed_t)tdiv64); | ||
939 | |||
933 | num -= 1; | 940 | num -= 1; |
934 | denom -= 1; | 941 | denom -= 1; |
935 | 942 | ||