]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Support variable speed
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 18 Jul 2010 13:00:50 +0000 (15:00 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 18 Jul 2010 13:00:50 +0000 (15:00 +0200)
term/ns8250.c
term/usbserial.c

index a69c683f2697791bb076a6bd4e14918b93f6ac82..9677913be1c9c296a7d26a1b77fc9ff426766f28 100644 (file)
@@ -61,7 +61,7 @@ serial_get_divisor (unsigned int speed)
     };
 
   /* Set the baud rate.  */
-  for (i = 0; i < sizeof (divisor_tab) / sizeof (divisor_tab[0]); i++)
+  for (i = 0; i < ARRAY_SIZE (divisor_tab); i++)
     if (divisor_tab[i].speed == speed)
   /* UART in Yeeloong runs twice the usual rate.  */
 #ifdef GRUB_MACHINE_MIPS_YEELOONG
index b2a89d56ce5285ace1751cb6aef6a46b9a069e91..7a5aead2c6df621ec620d814c2dcc74fcd941840 100644 (file)
@@ -48,13 +48,20 @@ get_divisor (unsigned int speed)
   };
 
   /* The table which lists common configurations.  */
+  /* Computed with a division formula with 3MHz as base frequency. */
   static struct divisor divisor_tab[] =
     {
+      { 2400,   0x04e2 },
+      { 4800,   0x0271 },
       { 9600,   0x4138 },
+      { 19200,  0x809c },
+      { 38400,  0xc04e },
+      { 57600,  0xc034 },
+      { 115200, 0x001a }
     };
 
   /* Set the baud rate.  */
-  for (i = 0; i < sizeof (divisor_tab) / sizeof (divisor_tab[0]); i++)
+  for (i = 0; i < ARRAY_SIZE (divisor_tab); i++)
     if (divisor_tab[i].speed == speed)
       return divisor_tab[i].div;
   return 0;