Unable to boot FX30 when IoT card with EEPROM present

Hi all,

I’m unable to boot the FX30 when the card is inserted in the IoT slot during power-on. If the card is not present during power-on, the FX30 will boot. I am also able to boot if I hold the SDA line to the EEPROM low (shorted to GND) during power-on.

The IoT card has an I2C EEPROM on board, and the memory is as described in table 5-2 in [1]. We’ve also tried with empty EEPROM (0xFF) and zeroed EEPROM (0x00) - the behaviour is the same. The electrical connections are also as descibed in [1], including the transistor address selector in figure 5-2.

After boot, I can hot-plug the card, and all is working perfectly. I can even access the EEPROM using i2cset, i2cget and i2cdump commands from bash.

When measuring the I2C bus with oscilloscope during power-on, I see that 64 bytes are read after about 1 second (long before linux is booted), and the speed is 400 KHz. This is not according to [1], that states that connected EEPROMs must support 100KHz.

When the boot fails, the USB is enumerated as “Qualcomm HS-USB QDLoader 9008 (COM183)”, which to me may indicate that this is something that happens pre-image-boot.

Does anyone know anything about this? Are there others with the same experience or who is using EEPROM successfully?

Version and references:
References: [1] 4117166_IoT Expansion Card Design Specification_r8-3.pdf from mangoh.io

legato version : 16.10.1_f8947ec5fd286f5b9d2c25ebb9ad81a4
uname -r : 3.14.29ltsi-a00e464379_3f15cd39ad
/proc/version: Linux version 3.14.29ltsi-a00e464379_3f15cd39ad (jenkins@CAKEL-EV-ALBLD2) (gcc version 4.9.1 (GCC) ) #2 PREEMPT Mon Feb 20 11:11:17 PST 2017