Article ID: 000073938 Content Type: Troubleshooting Last Reviewed: 06/26/2019

Why do I see U-boot hang when enabling multiple I2C controllers in I2C driver?

Environment

    Quartus® II Subscription Edition
BUILT IN - ARTICLE INTRO SECOND COMPONENT
Description

In SOCEDS 16.1 (U-boot v2013.01.01), if you turn on the I2C multi-bus configuration within I2C driver as shown below:

#define CONFIG_I2C_MULTI_BUS 1

 

U-boot will hang and stop printing messages in console as shown below:

U-Boot 2013.01.01-svn7578 (Feb 01 2019 - 14:17:54) 

CPU   : Altera SOCFPGA Platform

BOARD : Altera SOCFPGA Cyclone V Board

I2C: 

 

If CONFIG_I2C_MULTI_BUS configuration is turned on, the bus_initialized static variable in I2C driver (designware_i2c.c) will be used before the BSS section get initialized.
It results in an unexpected write operation and cause the system hang.

Resolution

I2C driver (designware_i2c.c) has been updated in U-boot v2015.01 which removes the use of static variable and CONFIG_I2C_MULTI_BUS. 

For multiple I2C controllers support in U-boot, please use U-boot v2015.01 or above versions.

Related Products

This article applies to 1 products

Intel® Programmable Devices

1