I2C driver is initialized early at boot before relocation done and, because of this, must not use static/global variables (see comments at include/i2c.h line 546). Depending on the U-Boot configuration (modules compiled in) driver variables can (and I actually got this problem) overlap and destroy random part of relocation entries, making UBoot binary semi-functional.
I2C driver is initialized early at boot before relocation done and, because of this, must not use static/global variables (see comments at include/i2c.h line 546). Depending on the U-Boot configuration (modules compiled in) driver variables can (and I actually got this problem) overlap and destroy random part of relocation entries, making UBoot binary semi-functional.