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

Mark Marshall mark.marshall at csr.com
Mon Mar 22 14:38:08 CET 2010


Keith Hui wrote:
> Hi guys,
> 
> Today I switched out my P2B-LS mainboard for a P2B-L. Same circuit
> board without the SCSI components. Same W83977EF super I/O. As I have
> seen in all my boot logs having described the onboard LAN component in
> the -LS files doesn't really mean much, so I am testing as if it's a
> P2B-F.
> 
> And I got it to boot all the way into the Fedora 11 login prompt,
> meaning I have a chance to run a superiotool dump. Here's the output:
> 
> [root at ojisan superiotool]# ./superiotool -d
> superiotool r
> Found Winbond W83977EF/EG (id=0x52, rev=0xf4) at 0x3f0
> Register dump:
> idx 02 20 21 22 23 24 25 26  28 2a 2b 2c 2d 2e 2f
> val ff 52 f4 ff fe 80 00 00  00 00 00 00 00 00 ff
> def RR 52 MM ff fe MM 00 MM  00 00 00 00 RR RR RR
> LDN 0x00 (Floppy)
> idx 30 60 61 70 74 f0 f1 f2  f4 f5
> val 01 03 f0 06 02 0e 00 ff  00 00
> def 01 03 f0 06 02 0e 00 ff  00 00
> LDN 0x01 (Parallel port)
> idx 30 60 61 70 74 f0
> val 01 03 78 07 04 3f
> def 01 03 78 07 04 3f
> LDN 0x02 (COM1)
> idx 30 60 61 70 f0
> val 01 03 f8 04 00
> def 01 03 f8 04 00
> LDN 0x03 (COM2)
> idx 30 60 61 70 f0 f1
> val 01 02 f8 03 00 00
> def 01 02 f8 03 00 00
> LDN 0x05 (Keyboard)
> idx 30 60 61 62 63 70 72 f0
> val 00 00 60 00 64 01 0c 83
> def 01 00 60 00 64 01 0c 83
> LDN 0x07 (GPIO 1)
> idx 30 60 61 62 63 64 65 70  72 e0 e1 e2 e3 e4 e5 e6  e7 f1
> val 00 00 00 00 00 00 00 00  00 01 01 01 01 01 01 01  01 00
> def 00 00 00 00 00 00 00 00  00 01 01 01 01 01 01 01  01 00
> LDN 0x08 (GPIO 2)
> idx 30 60 61 70 72 e8 e9 ea  eb ec ed f0 f1 f2 f3 f4
> val 00 00 00 00 00 01 01 01  01 01 01 00 ff 00 00 00
> def 00 00 00 00 00 01 01 01  01 01 01 00 RR 00 00 00
> LDN 0x0a (ACPI)
> idx 30 70 e0 e1 e2 e3 e4 e5  e6 e7 f0 f1 f3 f4 f6 f7  f9 fe ff
> val 00 00 60 00 76 0b 00 00  00 00 00 8f 33 00 00 00  00 00 00
> def 00 00 00 00 MM MM MM 00  00 00 00 00 00 00 00 00  00 RR RR
> [root at ojisan superiotool]#
> 
> The keyboard logical device isn't enabled. This is why PS/2 keyboard
> doesn't work with the P2B family. But coreboot itself thinks it's
> being enabled - see log at end of email.
> 
> I am suspecting that no PnP devices are actually being enabled, as
> FDC,LPT,COM1,COM2 could all be enabled by hardware strapping.

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.)






More information about the coreboot mailing list