Commit 50825c57 authored by Aaron Sierra's avatar Aaron Sierra Committed by Greg Kroah-Hartman

serial: 8250_pci: more BayTrail error-free bauds

Support the following additional baud rates with 0% error:
	500000, 1500000, 2500000, 3500000
Signed-off-by: default avatarAaron Sierra <asierra@xes-inc.com>
Reviewed-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 013daec9
...@@ -1366,22 +1366,43 @@ byt_set_termios(struct uart_port *p, struct ktermios *termios, ...@@ -1366,22 +1366,43 @@ byt_set_termios(struct uart_port *p, struct ktermios *termios,
struct ktermios *old) struct ktermios *old)
{ {
unsigned int baud = tty_termios_baud_rate(termios); unsigned int baud = tty_termios_baud_rate(termios);
unsigned int m = 6912; unsigned int m, n;
unsigned int n = 15625;
u32 reg; u32 reg;
/* For baud rates 1M, 2M, 3M and 4M the dividers must be adjusted. */ /*
if (baud == 1000000 || baud == 2000000 || baud == 4000000) { * For baud rates 0.5M, 1M, 1.5M, 2M, 2.5M, 3M, 3.5M and 4M the
* dividers must be adjusted.
*
* uartclk = (m / n) * 100 MHz, where m <= n
*/
switch (baud) {
case 500000:
case 1000000:
case 2000000:
case 4000000:
m = 64; m = 64;
n = 100; n = 100;
p->uartclk = 64000000; p->uartclk = 64000000;
} else if (baud == 3000000) { break;
case 3500000:
m = 56;
n = 100;
p->uartclk = 56000000;
break;
case 1500000:
case 3000000:
m = 48; m = 48;
n = 100; n = 100;
p->uartclk = 48000000; p->uartclk = 48000000;
} else { break;
case 2500000:
m = 40;
n = 100;
p->uartclk = 40000000;
break;
default:
m = 6912;
n = 15625;
p->uartclk = 44236800; p->uartclk = 44236800;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment