Many, many things. Most notably: * At least the bit-lp and bit-velle modules do no detection on loading; ask Simon whether this is possible to add. * Check whether the FAN count divisors in the lm78 module are correct (probably not!); correct gl518sm changed-fan_div_but_did_not_update_fans * Wouldn't it be better to display all natural voltages for the LM78 chip, and do *all* conversions through a user program? * kmalloc with GFP_KERNEL can cause a context switch! Check whether this is safe everywhere it is used. * Support 10-bit addresses. At this moment, they are supported nowhere, except in Simon Vogl's i2c modules. * Change the i2c modules to keep the namespace clean (EXPORT_SYMBOL does not work for us; many static declarations need to be added; better ask Simon Vogl first) * Make it SMP-safe: there are no spinlocks yet. They are needed at many places, probably (everywhere where global vars are accessed). This must be done for the i2c modules, too. * Make lm78.c detect 'double hits', (same chip connected to both SMBus and ISA). * Better lm78/lm75 detection; insmod-time paramters to set addresses (difficult, because of all i2c busses!). * Registrate which i2c addresses are used (a la ISA) for each adapter. * Rename i2c-proc.c to i2c-user.c, and extend it with /dev entries; or, create a better i2c-dev.c, that understands SMBus commands. * Write all other drivers * How to make drivers detect thing *not*; for example, if a Winbond is present, the LM75 driver should not try to access its simulated LM75 chips (in this case, simply disable them - but what if the LM75 driver was loaded first?). * Write a userland-library for SMBus/i2c access (through the /dev interface) * Write a userland detection program for busses (clients are less important; but perhaps needed too).