I2C is a name for a two-wire serial bus protocol, originally developed by Phillips. It is commonly used in embedded systems are so different components can communicate with the PC board I2C to talk to different sensor chips. These sensors typically report the fan speed, CPU temperature, and a whole set of information systems equipment. The protocol is also used in some RAM chips to provide information on the DIMM itself back to the operating system.
I2C kernel code has lived outside the main kernel tree for most of his life development it was originally written back in the 2.0 days. The 2.4 kernel contains a bit I2C support, mainly for some video drivers. With the 2.6 kernel, most of the code I2C turned it into the main kernel tree, thanks to the efforts of a number of core developers who changed the interface to be more acceptable to the kernel community. Several drivers still live only in the external CVS tree and have not been moved into the main tree kernel.org, matter of time before they, too, are ported.
I2C kernel code is broken down into several logical parts:
- the main I2C,
- I2C bus drivers,
- I2C algorithm drivers and
- I2C chip driver.