U-Boot I2C Driver

The page describes the configuration process and usage of the U-Boot i2c driver used on Zynq-7000 and Zynq Ultrascale+. 

Table of Contents


The I2C module is a bus controller that can function as a master or a slave in a multi-master design. It supports a wide clock frequency range up to 400 Kb/s.  The controller supports multi-master mode for 7-bit and extended addressing modes.

U-boot Configuration

For ZynqMP

For I2C Cadence

For Zynq

Device Tree

Device tree entry for I2C

Test Procedure

Writes different patterns to the I2C EEPROM, reads back the contents of the EEPROM and performs data verification.

I2C controller Features

Zynq Ultrascale+

The processing system (PS) supports I2C devices with these key features.

  • I2C bus specification version 2
  • 16-byte FIFO
  • Programmable normal and fast bus data rates
  • Multi master support


The PS supports two I2C devices with these key features:

  • I2C bus specifications version 2
  • Supports 16-byte FIFO
  • Programmable normal and fast bus data rates
  • Master mode
  • Write transfer
  • Read transfer
  • Extended address support
  • Support HOLD for slow processor service
  • Supports TO interrupt flag to avoid stall condition
  • Slave monitor mode