]> git.karo-electronics.de Git - linux-beck.git/commitdiff
serial: 8250_pci: more BayTrail error-free bauds
authorAaron Sierra <asierra@xes-inc.com>
Tue, 4 Mar 2014 01:54:29 +0000 (19:54 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 9 Mar 2014 06:24:53 +0000 (22:24 -0800)
Support the following additional baud rates with 0% error:
500000, 150000025000003500000

Signed-off-by: Aaron Sierra <asierra@xes-inc.com>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_pci.c

index 0ff3e3624d4c0599623af31535d02502c6da81c5..a3dbc4d97fa2f8a1a09df6ea6ebf15969cfce1a0 100644 (file)
@@ -1366,22 +1366,43 @@ byt_set_termios(struct uart_port *p, struct ktermios *termios,
                struct ktermios *old)
 {
        unsigned int baud = tty_termios_baud_rate(termios);
-       unsigned int m = 6912;
-       unsigned int n = 15625;
+       unsigned int m, n;
        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;
                n = 100;
-
                p->uartclk = 64000000;
-       } else if (baud == 3000000) {
+               break;
+       case 3500000:
+               m = 56;
+               n = 100;
+               p->uartclk = 56000000;
+               break;
+       case 1500000:
+       case 3000000:
                m = 48;
                n = 100;
-
                p->uartclk = 48000000;
-       } else {
+               break;
+       case 2500000:
+               m = 40;
+               n = 100;
+               p->uartclk = 40000000;
+               break;
+       default:
+               m = 6912;
+               n = 15625;
                p->uartclk = 44236800;
        }