Use 115.2 kbps instead of 9600 bps.
[pintos-anon] / src / devices / serial.c
index 1d0607ba0006b91f3d93770136d596bb3e969e59..aca5b481aeb9110b3382ab01c3c4f062ebb1d7b2 100644 (file)
@@ -9,7 +9,9 @@
 \f
 /* Register definitions for the 16550A UART used in PCs.
    The 16550A has a lot more going on than shown here, but this
-   is all we need. */
+   is all we need.
+
+   Refer to [PC16650D] for hardware information. */
 
 /* I/O port base address for the first serial port. */
 #define IO_BASE 0x3f8
@@ -61,7 +63,7 @@ serial_init_poll (void)
   ASSERT (mode == UNINIT);
   outb (IER_REG, 0);                    /* Turn off all interrupts. */
   outb (FCR_REG, 0);                    /* Disable FIFO. */
-  set_serial (9600);                    /* 9600 bps, N-8-1. */
+  set_serial (115200);                  /* 115.2 kbps, N-8-1. */
   outb (MCR_REG, MCR_OUT2);             /* Turn on OUT2 output line. */
   intq_init (&txq, "serial xmit");
   mode = POLL;
@@ -129,6 +131,8 @@ set_serial (int bps)
   int baud_base = 1843200 / 16;         /* Base rate of 16550A. */
   uint16_t divisor = baud_base / bps;   /* Clock rate divisor. */
 
+  ASSERT (bps >= 300 && bps <= 115200);
+
   /* Enable DLAB. */
   outb (LCR_REG, LCR_N81 | LCR_DLAB);