Intel® IXP400 Software
Programmer’s Guide IXP400 Software Version 2.0 April 2005
Document Number: 252539, Revision: 007 331
I2C Driver (IxI2cDrv) 26
This chapter describes the I2C Driver provided with Intel® IXP400 Software v2.0, which is for use
with the Intel® IXP46X Product Line of Network Processors.

26.1 What’s New

This is a new component for software release 2.0.

26.2 Introduction

The IXP46X network processors include an I2C hardware interface. This I2C driver is provided to
configure and enable I2C hardware and provide a mechanism for transferring data serially through
the I2C bus in both master and slave mode. Four methods of data transfer are supported by the
driver: single-byte read, multi-byte read, single-byte write, and multi-byte write. The driver allows
the addressing to any I2C Slave on the bus.
The capability to enable/disable the response to I2C slave address and general address calls is also
provided. Transaction records/counters between the I2C hardware and other devices are tracked by
the driver. The driver provides the capability to scan the bus to detect I2C slave devices and
supports multiple I2C bus masters.
The driver is implemented in what is referred to as the "Algorithm Module". This module performs
the configuration and control of data transfers. This component is supported on both VxWorks and
Linux.
The driver interface is compatible with the standard Linux I2C device driver, and is provided
separately from the IXP400 software access-layer. Since Linux does not allow direct user mode
access to kernel driver functions, a separate “Adapter Module” is provided to accommodate direct
access from user mode.

26.3 I2C Driver API Details

26.3.1 Features

The I2C driver allows the setting of different configurations for the I2C hardware, as listed below:
Mode select – fast mode (400 kbps) or normal mode (100 kbps). High Speed (3.4 Mbps) mode
is not supported by hardware.
Flow Selection - Interrupt or Polling modes
Enable/disable I2C unit response to general calls
Enable/disable I2C unit response to slave address calls