Skip to content
Snippets Groups Projects
Commit d7f8d437 authored by Oskar Schirmer's avatar Oskar Schirmer Committed by Linus Torvalds
Browse files

imx: serial: use tty_encode_baud_rate to set true rate


real baud rate may be different from the one requested.
for upper layers, set the nearest value to the real rate
in favour of the rate previously requested.

Signed-off-by: default avatarOskar Schirmer <os@emlix.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent b6e49138
No related branches found
No related tags found
No related merge requests found
......@@ -818,6 +818,7 @@ imx_set_termios(struct uart_port *port, struct ktermios *termios,
unsigned int old_csize = old ? old->c_cflag & CSIZE : CS8;
unsigned int div, ufcr;
unsigned long num, denom;
uint64_t tdiv64;
/*
* 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,
rational_best_approximation(16 * div * baud, sport->port.uartclk,
1 << 16, 1 << 16, &num, &denom);
tdiv64 = sport->port.uartclk;
tdiv64 *= num;
do_div(tdiv64, denom * 16 * div);
tty_encode_baud_rate(sport->port.info->port.tty,
(speed_t)tdiv64, (speed_t)tdiv64);
num -= 1;
denom -= 1;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment