Hi.
I've been using coreboot and SeaBIOS with an ASUS P2B for some time now, and recently I've noticed that the keyboard has stopped working.
It took me some time to track down what was the problem, but running superiotool on the system after it had booted soon indicated the problem. It appears that the keyboard sub-function of the winbond superio was not being enabled. This is probably the reason that I didn't spot this problem sooner - it seems that if I boot with the factory BIOS and then chip-swap to coreboot and reboot things work as expected.
I've had a closer look at the Winbond data sheet and the initial value of this register seems to depend on an external PIO connected to the winbond chip. I've also noted that in the coreboot source the pnp_enable function only disables functions - it doesn't enable them. Is there a good reason for this?
Should I submit a patch that always writes to the enable register, or should I add something to the superIO initialization that sets this register?
Is my mainboard broken?
Any help greatly appreciated.
MM
On Mon, 18 Jan 2010 14:52:47 +0000, Mark Marshall mark.marshall@csr.com wrote:
Hi.
I've been using coreboot and SeaBIOS with an ASUS P2B for some time now, and recently I've noticed that the keyboard has stopped working.
It took me some time to track down what was the problem, but running superiotool on the system after it had booted soon indicated the problem. It appears that the keyboard sub-function of the winbond superio was not being enabled. This is probably the reason that I didn't spot this problem sooner - it seems that if I boot with the factory BIOS and then chip-swap to coreboot and reboot things work as expected.
I've had a closer look at the Winbond data sheet and the initial value of this register seems to depend on an external PIO connected to the winbond chip. I've also noted that in the coreboot source the pnp_enable function only disables functions - it doesn't enable them. Is there a good reason for this?
Should I submit a patch that always writes to the enable register, or should I add something to the superIO initialization that sets this register?
Is my mainboard broken?
You may also want to check for IRQ conflicts...