[coreboot] Super I/O: Winbond LPC Super I/O WPCN381U

Jeremy Moles cubicool at gmail.com
Thu Apr 14 00:29:11 CEST 2011

On Thu, 2011-04-07 at 19:52 +0200, Peter Stuge wrote:
> Jeremy Moles wrote:
> > It's not that the hardware specs are unvailable, it's simply that I
> > lack the knowledge to be able to translate the information form the
> > hardware vendor (i.e., their engineer telling me to simply ping
> > GPIO-03 on the SuperI/O controller and the hardware lights up) into
> > Linux code. :) In Windows, apparently, it's as easy as that...
> If anything I'd say it's more difficult in Windows.
> > the GPIO registers I need are abstracted away in an LDN (7, in my
> > case), and I think you need to inform the hardware of that FIRST
> > before writing any bits.
> Correct. Looking at chapter 5 it's also clear that actual data for
> GPIO pins is written using registers offset from an IO base address
> configured in the logical device. So steps are:
> set gpio ldn: regwrite(7,7)
> read io base address: regread(60h)<<8 | regread(61h)
> read current GPIO-0 value: inb(base address)
> set bit 3 in value (1<<3)
> write new GPIO-0 value: outb(base,newval

With this lists help and Tom Sylla's help, I was able to get the device
working. :) If our contractors permit, I will release the code as OSS.
At the very least I'm trying to authorize donations...

Thanks a ton, a great resource here!

> //Peter

More information about the coreboot mailing list