Chapter 31
Inter-IC (I2C) Driver
31.1 Introduction
I2C is a two-wire, bidirectional serial bus that provides a simple, efficient method of data
exchange, minimizing the interconnection between devices.
The I2C driver for Linux has two parts:
• I2C bus driver-low level interface that is used to talk to the I2C bus
• I2C chip driver-acts as an interface between other device drivers and the I2C bus
driver
31.1.1 I2C Bus Driver Overview
The I2C bus driver is invoked only by the I2C chip driver and is not exposed to the user
space.
The standard Linux kernel contains a core I2C module that is used by the chip driver to
access the I2C bus driver to transfer data over the I2C bus. The chip driver uses a
standard kernel space API that is provided in the Linux kernel to access the core I2C
module. The standard I2C kernel functions are documented in the files available under
Documentation/i2c in the kernel source tree. This bus driver supports the following
features:
• Compatible with the I2C bus standard
• Bit rates up to 400 Kbps
• Starts and stops signal generation/detection
• Acknowledge bit generation/detection
• Interrupt-driven, byte-by-byte data transfer
• Standard I2C master mode
i.MX 6Solo/6DualLite Linux Reference Manual, Rev. L3.0.35_4.1.0, 09/2013
Freescale Semiconductor, Inc.
225