Large EEPROMs, e.g. 24lc32, need 2 byte to address the internal memory. These devices require that the high byte of the internal address has to be written first. The mxs_i2c driver currently writes the address' low byte first.
The following patch fixes the byte order of the internal address that should be written to the I2C device. Signed-off-by: Torsten Fleischer <to-fleischer at t-online.de> CC: Marek Vasut <marek.vasut at gmail.com> CC: Stefano Babic <sbabic at denx.de> --- diff -Naur u-boot.orig/drivers/i2c/mxs_i2c.c u-boot/drivers/i2c/mxs_i2c.c --- u-boot.orig/drivers/i2c/mxs_i2c.c +++ u-boot/drivers/i2c/mxs_i2c.c @@ -97,7 +97,7 @@ for (i = 0; i < alen; i++) { data >>= 8; - data |= ((char *)&addr)[i] << 24; + data |= ((char *)&addr)[alen - i - 1] << 24; if ((i & 3) == 2) writel(data, &i2c_regs->hw_i2c_data); } _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot