New I2C compatibilites & support

A new I2C driver is available. It enables for driving in master mode an I2C bus that is compliant with the Philips specification “THE I2C-BUS SPECIFICATION VERSION 2.1”. The following features are supported:

Support for several controller/buses in parallel, typically three buses for a digital set-topbox: Front-end devices (tuner and demodulator), Back-end devices (eeprom, video switches) and HDMI link.

Support for any clock speed value, from some KHz up to 400 Khz.

Support for EEPROM’s, hiding to the applicative software the burden of handling the EEPROM “rows/pages” and EEPROM polling during writes.

Support for advanced options needed by HDMI.

Almost nul latency between hardware notifications (interrupts) and corresponding treatment, thus enabling for use of the buses full bandwithes.

Support of IO lists, including waits, conditionnal jumps and intricated loops.

Support for low-power mode, any controller may be powered off.

The module also provides two software interfaces in order to allow for both ease of use and versatility:

A simple use is allowed by the “i2c_send()” and “i2c_receive()” functions, that start single writes and reads.

Blocking and non blocking modes are available.

More sophisticated IO schemes are possible using “i2c_io()” generic API.