]> Joshua Wise's Git repositories - netwatch.git/blobdiff - lib/serial.c
That is almost certainly all the cause of my woe.
[netwatch.git] / lib / serial.c
index 5318c95ae733f3e7a5b117768b33d05a4b064625..6043db247d3db6ad8b8c83be942bd8c415f978f4 100644 (file)
@@ -33,10 +33,10 @@ unsigned char _inb(unsigned short port)
 void serial_init()
 {
        unsigned short baud = SER_BAUD_REQ / SER_BAUD_BASE;
 void serial_init()
 {
        unsigned short baud = SER_BAUD_REQ / SER_BAUD_BASE;
-       _outb(SER_LCR, inb(SER_LCR) | SER_LCR_DLAB);
+       _outb(SER_LCR, _inb(SER_LCR) | SER_LCR_DLAB);
        _outb(SER_DLL, baud & 0xFF);
        _outb(SER_DLM, baud >> 8);
        _outb(SER_DLL, baud & 0xFF);
        _outb(SER_DLM, baud >> 8);
-       _outb(SER_LCR, inb(SER_LCR) & ~SER_LCR_DLAB);
+       _outb(SER_LCR, _inb(SER_LCR) & ~SER_LCR_DLAB);
        _outb(SER_IER, 0x0);
        _outb(SER_FCR, 0x0);    /* FIFOs off */
        _outb(SER_LCR, 0x03);   /* 8 data bits, one stop bit, no parity */
        _outb(SER_IER, 0x0);
        _outb(SER_FCR, 0x0);    /* FIFOs off */
        _outb(SER_LCR, 0x03);   /* 8 data bits, one stop bit, no parity */
@@ -44,7 +44,9 @@ void serial_init()
 
 void serial_tx(unsigned char c)
 {
 
 void serial_tx(unsigned char c)
 {
-       while (!(_inb(SER_LSR) & SER_LSR_THR_EMPTY))
+       int i = 100000;
+       
+       while (!(_inb(SER_LSR) & SER_LSR_THR_EMPTY) && (i--))
                ;
        _outb(SER_THR, c);
 }
                ;
        _outb(SER_THR, c);
 }
This page took 0.02376 seconds and 4 git commands to generate.