X-Git-Url: http://git.joshuawise.com/netwatch.git/blobdiff_plain/92bb2596b1eda2324da82825b882df5dce9dfbbb..6f9272bdabcda81425ec1aaecf26a160535d4749:/lib/serial.c?ds=sidebyside diff --git a/lib/serial.c b/lib/serial.c index 5318c95..6043db2 100644 --- a/lib/serial.c +++ b/lib/serial.c @@ -33,10 +33,10 @@ unsigned char _inb(unsigned short port) 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_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 */ @@ -44,7 +44,9 @@ void serial_init() 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); }