Knowledge Base Article

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

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.

Updated 3 months ago
Version 2.0
No CommentsBe the first to comment