diff mbox

[U-Boot,1/2] beagle: expansion boards: retry i2c_read with 16bit addressing

Message ID 1359993790-22454-1-git-send-email-robertcnelson@gmail.com
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Robert Nelson Feb. 4, 2013, 4:03 p.m. UTC
Some expansion boards now ship with at24 eeproms that need to communicate
via 16bit addressing.

Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
---
 board/ti/beagle/beagle.c |    8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Tom Rini Feb. 19, 2013, 4:15 p.m. UTC | #1
On Mon, Feb 04, 2013 at 06:03:10AM -0000, robertcnelson@gmail.com wrote:

> Some expansion boards now ship with at24 eeproms that need to communicate
> via 16bit addressing.
> 
> Signed-off-by: Robert Nelson <robertcnelson@gmail.com>

This and 2/2 have been applied to u-boot-ti/master, thanks!
diff mbox

Patch

diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c
index b829a79..9493c6b 100644
--- a/board/ti/beagle/beagle.c
+++ b/board/ti/beagle/beagle.c
@@ -227,6 +227,14 @@  static unsigned int get_expansion_id(void)
 	i2c_read(EXPANSION_EEPROM_I2C_ADDRESS, 0, 1, (u8 *)&expansion_config,
 		 sizeof(expansion_config));
 
+	/* retry reading configuration data with 16bit addressing */
+	if ((expansion_config.device_vendor == 0xFFFFFF00) ||
+	    (expansion_config.device_vendor == 0xFFFFFFFF)) {
+		printf("EEPROM is blank or 8bit addressing failed: retrying with 16bit:\n");
+		i2c_read(EXPANSION_EEPROM_I2C_ADDRESS, 0, 2, (u8 *)&expansion_config,
+			 sizeof(expansion_config));
+	}
+
 	i2c_set_bus_num(TWL4030_I2C_BUS);
 
 	return expansion_config.device_vendor;