[SeaBIOS] [PATCH] Add Kconfig option to specify which serial port when serial debugging.

Kevin O'Connor kevin at koconnor.net
Wed May 11 05:37:52 CEST 2011


---
 src/Kconfig  |    6 ++++++
 src/output.c |   15 +++++++--------
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/src/Kconfig b/src/Kconfig
index 0da69e6..123db01 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -371,6 +371,12 @@ menu "Debugging"
         default n
         help
             Send debugging information to serial port.
+    config DEBUG_SERIAL_PORT
+        depends on DEBUG_SERIAL
+        hex "Serial port base address"
+        default 0x3f8
+        help
+            Base port for serial - generally 0x3f8, 0x2f8, 0x3e8, or 0x2e8.
 
     config SCREEN_AND_DEBUG
         depends on DEBUG_LEVEL != 0
diff --git a/src/output.c b/src/output.c
index 4c9f95b..7c10d33 100644
--- a/src/output.c
+++ b/src/output.c
@@ -21,7 +21,6 @@ struct putcinfo {
  * Debug output
  ****************************************************************/
 
-#define DEBUG_PORT PORT_SERIAL1
 #define DEBUG_TIMEOUT 100000
 
 void
@@ -31,12 +30,12 @@ debug_serial_setup(void)
         return;
     // setup for serial logging: 8N1
     u8 oldparam, newparam = 0x03;
-    oldparam = inb(DEBUG_PORT+SEROFF_LCR);
-    outb(newparam, DEBUG_PORT+SEROFF_LCR);
+    oldparam = inb(CONFIG_DEBUG_SERIAL_PORT+SEROFF_LCR);
+    outb(newparam, CONFIG_DEBUG_SERIAL_PORT+SEROFF_LCR);
     // Disable irqs
     u8 oldier, newier = 0;
-    oldier = inb(DEBUG_PORT+SEROFF_IER);
-    outb(newier, DEBUG_PORT+SEROFF_IER);
+    oldier = inb(CONFIG_DEBUG_SERIAL_PORT+SEROFF_IER);
+    outb(newier, CONFIG_DEBUG_SERIAL_PORT+SEROFF_IER);
 
     if (oldparam != newparam || oldier != newier)
         dprintf(1, "Changing serial settings was %x/%x now %x/%x\n"
@@ -50,11 +49,11 @@ debug_serial(char c)
     if (!CONFIG_DEBUG_SERIAL)
         return;
     int timeout = DEBUG_TIMEOUT;
-    while ((inb(DEBUG_PORT+SEROFF_LSR) & 0x60) != 0x60)
+    while ((inb(CONFIG_DEBUG_SERIAL_PORT+SEROFF_LSR) & 0x60) != 0x60)
         if (!timeout--)
             // Ran out of time.
             return;
-    outb(c, DEBUG_PORT+SEROFF_DATA);
+    outb(c, CONFIG_DEBUG_SERIAL_PORT+SEROFF_DATA);
 }
 
 // Make sure all serial port writes have been completely sent.
@@ -64,7 +63,7 @@ debug_serial_flush(void)
     if (!CONFIG_DEBUG_SERIAL)
         return;
     int timeout = DEBUG_TIMEOUT;
-    while ((inb(DEBUG_PORT+SEROFF_LSR) & 0x40) != 0x40)
+    while ((inb(CONFIG_DEBUG_SERIAL_PORT+SEROFF_LSR) & 0x40) != 0x40)
         if (!timeout--)
             // Ran out of time.
             return;
-- 
1.7.4.4




More information about the SeaBIOS mailing list