[LinuxBIOS] [PATCH] Add support for 17 new SMSC Super I/O devices

Uwe Hermann uwe at hermann-uwe.de
Sat Jul 7 21:18:14 CEST 2007


here's a new generic driver for SMSC Super I/O chips which should put an
end to the copy+paste style of development when it comes to Super I/O
code in LinuxBIOS and massively reduce the amount of duplicated code.

This single piece of code should be able to (currently) handle 17
different SMSC Super I/O chips, more can be added with minimal amount
of work (two lines of code).

This patch replaces a bunch of v2 Super I/Os, basically "ports" some of
the yet unported v1 Super I/Os, and adds support for a bunch of totally
new Super I/Os, all in one.

The following devices may or may not be (fully) supported by the driver:

 - FDC37b80x
 - FDC37m70x
 - FDC37b78x
 - FDC37b72x
 - FDC37m81x
 - FDC37m60x
 - LPC47b27x
 - LPC47m10x
 - LPC47m112
 - LPC47m13x
 - LPC47m15x
 - LPC47m192
 - LPC47s45x
 - LPC47b397
 - A8000
 - DME1737
 - SCH5307

The floppy disk controller, the parallel port, the serial ports, and the
keyboard controller should work with all the chips. For the more advanced
stuff (e.g. HWM, ACPI, SMBus) more work is probably required.

So far only the ASUS A8000 has been tested on real hardware (and it works :)

The current lpc47b272 and lpc47m10x in v2 can probably be dropped
immediately, AFAICS my driver handles everything those two did. Some
other devices in v2 do a bit more at the moment and cannot be dropped, yet.

As I cannot test all of this on hardware, it would be nice if somebody
with a supported board using one of these Super I/Os could replace the
respective driver with this new 'smscsuperio' driver and test whether
everything works ok.

I'm planning similar patches for all other Super I/O vendors, I think we
can easily handle 95% of all Super I/Os of each vendor with one such
generic driver.

I also plan to use the same technique in v3, so we only need very few,
generic drivers there, too.

Open issues: I don't know if or how we can handle boards with multiple
Super I/Os on them. Ideas welcome!

Technically the driver reads the device ID of the Super I/O and then
initializes only those devices which are supported by that Super I/O.

The code is a bit clumsy in parts, suggestions for improvements are welcome!

Thanks, Uwe.
http://www.hermann-uwe.de  | http://www.holsham-traders.de
http://www.crazy-hacks.org | http://www.unmaintained-free-software.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: v2_smsc_smscsuperio.patch
Type: text/x-diff
Size: 16919 bytes
Desc: not available
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20070707/fa4e38b3/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20070707/fa4e38b3/attachment.sig>

More information about the coreboot mailing list