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.