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.