On Mon, Mar 16, 2020 at 05:39:45PM +0100, Paul Menzel wrote: > From: "Ronald G. Minnich" <rminn...@chromium.org> > Date: Thu, 24 May 2012 11:27:26 -0700 > > Serial port detection in SeaBIOS tests for bit 2 in the IER. That bit is > never set, and SeaBIOS mistakenly reports 0 serial ports. As it happens, > just testing for IER to be not-all-ones is good enough. > > This happens on all systems where the AP serial port uses the Blizzard > EC (Ivy Bridge, Haswell). Does not affect Bay Trail, since we use the > native Intel serial port. > > It’s a hardware limitation of which registers the Blizzard COMx port > implementation provides. Nothing we can do in EC software.
Thanks. At a high-level, the change looks fine to me. However, I don't think we should add dprintf() statements here - I fear they'll just flood the log with uninteresting information when trying to debug other issues. -Kevin > > BUG=chrome-os-partner:9946 > TEST=build SeaBIOS with serial port enabled, and note that SeaBIOS > says > init serial > Found 1 serial ports > BRANCH=none > > Signed-off-by: Ronald G. Minnich <rminn...@chromium.org> > > Change-Id: I6bee73788ca6533091d85e54d05b37a564f910a7 > Reviewed-on: https://chromium-review.googlesource.com/184421 > Reviewed-by: Stefan Reinauer <reina...@chromium.org> > Commit-Queue: Stefan Reinauer <reina...@chromium.org> > Tested-by: Stefan Reinauer <reina...@chromium.org> > Reviewed-on: https://chromium-review.googlesource.com/227500 > Signed-off-by: Paul Menzel <pmen...@molgen.mpg.de> > --- > src/serial.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/src/serial.c b/src/serial.c > index 88349c8..e67ac77 100644 > --- a/src/serial.c > +++ b/src/serial.c > @@ -26,10 +26,12 @@ detect_serial(u16 port, u8 timeout, u8 count) > return 0; > outb(0x02, port+SEROFF_IER); > u8 ier = inb(port+SEROFF_IER); > - if (ier != 0x02) > + dprintf(8, "IER is 0x%02x (Expected 0x02 or 0x00)\n", ier); > + if (ier != 0x02 && ier != 0) > return 0; > u8 iir = inb(port+SEROFF_IIR); > - if ((iir & 0x3f) != 0x02) > + dprintf(8, "IIR is 0x%02x (Expected != 0x3f)\n", iir & 0x3f); > + if ((iir & 0x3f) == 0x3f) > return 0; > > outb(0x00, port+SEROFF_IER); > -- > 2.25.1 > _______________________________________________ > SeaBIOS mailing list -- seabios@seabios.org > To unsubscribe send an email to seabios-le...@seabios.org _______________________________________________ SeaBIOS mailing list -- seabios@seabios.org To unsubscribe send an email to seabios-le...@seabios.org