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