Many, many things. Most notably: * Support 10-bit addresses. At this moment, they are supported nowhere * 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). * Extend sensors.c with a file /proc/sys/dev/sensors/chips, which lists all directories under /proc/sys/dev/sensors with their SYSCTL id (needed for good sysctl access). * Write smbus_access_i2c in smbus.c * 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).