Happy 21st Birthday Linux I2C-Bus drivers!

The Linux I2C-bus driver has grown up - 21 years ago, on Dec 21st, 1999, with patch # 2.3.34, the i2c bus subsystem has been merged with the mainline kernel.

SAA5246 teletext decoder / i2c-bus project

Philips SAA 5246 Teletext decoder chip plus 2k RAM and an ST I2C-bus EEPROM at the front right corner of the PCB

It all started in 1995 with a side-project during my computer science studies, with a Teletext decoder chip that wanted to talk to my PC, plus a number of other interesting chips that were available for this bus, including LED drivers, IO expanders and more.

A number of hacky I2C-bus adapters existed at that time, most of them used a few pins of the parallel port for communication. In order to unify all those solutions, I wrote a first set of drivers that would model the different approaches and was flexible enough to cover all available chip types. The SCSI subsystem was a good source of inspiration for that, as it combined different sorts of disk drives, tapes, scanners etc. All in all, I went through quite some kernel internals to create.

Finally, with input coming from fellow coders like Kyösti Mälkki (SMBUS support!), Frodo Looijaard or Hans Berglund the drivers were ripe for merging 21 years ago.

Being an exotic interface at that time, it now serves as the backbone for many a sensor system and continues to thrive with new transmission speeds, voltage levels and chipsets - hack on!