svn commit: r358906 - head/stand/i386/libi386
Toomas Soome
tsoome at FreeBSD.org
Thu Mar 12 06:45:11 UTC 2020
Author: tsoome
Date: Thu Mar 12 06:45:08 2020
New Revision: 358906
URL: https://svnweb.freebsd.org/changeset/base/358906
Log:
test if port does exist via using scratch register
The SCR, scratch register was not present on the 8250 and 8250B UART, so we
can use to test if we actually do have serial port.
We need this test because some systems will get long delays while attempting
to write to non-existing port and this will slow down the console IO
to extreme.
MFC after: 1 week
Modified:
head/stand/i386/libi386/comconsole.c
Modified: head/stand/i386/libi386/comconsole.c
==============================================================================
--- head/stand/i386/libi386/comconsole.c Thu Mar 12 03:59:51 2020 (r358905)
+++ head/stand/i386/libi386/comconsole.c Thu Mar 12 06:45:08 2020 (r358906)
@@ -330,6 +330,16 @@ comc_setup(int speed, int port)
if ((comconsole.c_flags & (C_ACTIVEIN | C_ACTIVEOUT)) == 0)
return;
+#define COMC_TEST 0xbb
+ /*
+ * Write byte to scratch register and read it out.
+ */
+ outb(comc_port + com_scr, COMC_TEST);
+ if (inb(comc_port + com_scr) != COMC_TEST) {
+ comconsole.c_flags &= ~(C_PRESENTIN | C_PRESENTOUT);
+ return;
+ }
+
outb(comc_port + com_cfcr, CFCR_DLAB | COMC_FMT);
outb(comc_port + com_dlbl, COMC_BPS(speed) & 0xff);
outb(comc_port + com_dlbh, COMC_BPS(speed) >> 8);
More information about the svn-src-head
mailing list