The picture shows the interrelationships of our kernel drivers. The drivers at the top of the kernel section are "chip" drivers. Chip drivers exist for many chip types: RTC, EEPROM, I/O expander, hardware monitoring, sound, video and more. In the middle is i2c-core, which contains the I2C and SMBus protocol implementations. At the bottom of the kernel section are the algorithm and adapter drivers, which comprise the "bus" drivers for accessing the i2c bus (algorithm and adapter drivers are generally combined, except for "bit banging" drivers which use a common algorithm).
The "program" section at the top represents all the user-space programs that end up accessing the chips, either through the /dev interface, using the i2c-dev driver (for example i2cdetect, i2cdump or sensors-detect) or through sysfs, using chip-specific drivers (for example libsensors, fancontrol or custom shell scripts).
Also see this summary in the kernel source tree.