[coreboot-gerrit] New patch to review for coreboot: 7eed6d2 libpayload: Fix the logic for hardware-less serial consoles

Dave Frodin (dave.frodin@se-eng.com) gerrit at coreboot.org
Tue May 14 18:44:56 CEST 2013


Dave Frodin (dave.frodin at se-eng.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3249

-gerrit

commit 7eed6d2f3449636fc56c371f5c539fa1e676ee6e
Author: Dave Frodin <dave.frodin at se-eng.com>
Date:   Tue May 14 08:43:25 2013 -0600

    libpayload: Fix the logic for hardware-less serial consoles
    
    This fixes the configuration where serial console output is
    being sent to non-existant hardware to be captured with I/O
    trapping. In this configuration where there isn't serial
    hardware present we still want to init the consoles. We just
    never want to read non-existant hardware.
    
    Change-Id: Ic51dc574b9c0df3f6ed071086b0fb2119afedc44
    Signed-off-by: Dave Frodin <dave.frodin at se-eng.com>
---
 payloads/libpayload/drivers/serial.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/payloads/libpayload/drivers/serial.c b/payloads/libpayload/drivers/serial.c
index df0f2e3..a4cd6d0 100644
--- a/payloads/libpayload/drivers/serial.c
+++ b/payloads/libpayload/drivers/serial.c
@@ -34,7 +34,7 @@
 #define IOBASE lib_sysinfo.serial->baseaddr
 #define MEMBASE (phys_to_virt(IOBASE))
 
-static int serial_hardware_is_present = 0;
+static int serial_hardware_is_present = 1;
 static int serial_is_mem_mapped = 0;
 
 static uint8_t serial_read_reg(int offset)
@@ -105,7 +105,7 @@ void serial_init(void)
 #ifdef CONFIG_IO_ADDRESS_SPACE
 		if ((inb(IOBASE + 0x05) == 0xFF) &&
 				(inb(IOBASE + 0x06) == 0xFF)) {
-			return;
+			serial_hardware_is_present = 0;
 		}
 #else
 		printf("IO space mapped serial not supported.");
@@ -113,9 +113,6 @@ void serial_init(void)
 #endif
 	}
 
-
-	serial_hardware_is_present = 1;
-
 #ifdef CONFIG_SERIAL_SET_SPEED
 	serial_hardware_init(CONFIG_SERIAL_BAUD_RATE, 8, 0, 1);
 #endif
@@ -125,9 +122,8 @@ void serial_init(void)
 
 void serial_putchar(unsigned int c)
 {
-	if (!serial_hardware_is_present)
-		return;
-	while ((serial_read_reg(0x05) & 0x20) == 0) ;
+	if (serial_hardware_is_present)
+		while ((serial_read_reg(0x05) & 0x20) == 0) ;
 	serial_write_reg(c, 0x00);
 }
 



More information about the coreboot-gerrit mailing list