[coreboot] W83977EF vs. ASUS P2B-L vs. PS/2 keyboard vs. VGA BIOS - keyboard win

Keith Hui buurin at gmail.com
Tue Mar 23 04:43:09 CET 2010

> I had the same problem with a P2B.
> news://news.gmane.org:119/hj1sjv$elg$1@ger.gmane.org
> I never got a reply :-(
> The function "pnp_enable" only ever disables functions, yet the keyboard
> function of the superio starts off disabled.  This is documented
> behavior in the Winbond data sheet.
> The simplest fix is to change this function to actually do the enable /
> disable.  I don't have the code to hand, but if you grep for this
> function name it should be obvious.
> MM
> PS.
> The internet has the source:
> http://tracker.coreboot.org/trac/coreboot/browser/trunk/src/devices/pnp_device.c
> Change
> 152     void pnp_enable(device_t dev)
> 153     {
> 154             if (!dev->enabled) {
> 155                     pnp_set_logical_device(dev);
> 156                     pnp_set_enable(dev, 0);
> 157             }
> 158     }
> To
> 152     void pnp_enable(device_t dev)
> 153     {
> 155             pnp_set_logical_device(dev);
> 156             pnp_set_enable(dev, dev->enabled);
> 158     }
> (This is from memory.  I don't really understand all of this code, this
> might not be the best fix.)

I don't know for sure either, but this change sure did the trick. I
can now log in through my trusty model M. Yay. :D

Logical device 8 (GPIO 2) is still not enabled. But that can wait
until we figure out what it does on a P2B.

Also, COM2 works on P2B-L! That means it works on all boards with this
superio chip.

Now a word of warning. If serial port is enabled in both coreboot in
SeaBIOS and they are different, it may end up booting extremely
.s.l.o.w.l.y. through SeaBIOS. It is so slow I can see its messages
("Starting SeaBIOS...") appearing letter by letter like an old TTY.
Very retroish. :-P


My ATI 3D Rage 2C card, besides making a few PCI BIOS calls, is also
making a int 0x42 call that isn't supported.

oprom: INT# 0x42
oprom: eax: 00000007 ebx: 00001004 ecx: 00000000 edx: 001203c2
oprom: ebp: 00110000 esp: 00000fda edi: 0000ffff esi: 00000000
oprom:  ip: 3e3d      cs: c000   flags: 00000006
Unsupported software interrupt #0x42

Ralf Brown's Interrupt List #61 lists it as:

Desc:	contains the address of the original INT 10 handler which an EGA+
	  video adapter replaces with its own on-board BIOS code

So the above call should change video mode to 0x07, the mono text mode.

This happens before loading a payload so this isn't SeaBIOS'
responsibility, yet. Can we implement a stub to suppress this error?


More information about the coreboot mailing list