[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
error!
Ralf Brown's Interrupt List #61 lists it as:
INT 42 - VIDEO - RELOCATED DEFAULT INT 10 VIDEO SERVICES (EGA,VGA)
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?
Cheers
Keith
More information about the coreboot
mailing list