Skip to content

Commit

Permalink
imx: serial: use tty_encode_baud_rate to set true rate
Browse files Browse the repository at this point in the history
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: Oskar Schirmer <os@emlix.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Oskar Schirmer authored and Linus Torvalds committed Jun 11, 2009
1 parent b6e4913 commit d7f8d43
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions drivers/serial/imx.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;

Expand Down

0 comments on commit d7f8d43

Please sign in to comment.