diff options
author | robertcnelson@gmail.com <robertcnelson@gmail.com> | 2013-02-04 06:03:10 (GMT) |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2013-02-18 18:48:04 (GMT) |
commit | ff229ecf8b4e5379d32c74f0486c2285e2ee27d4 (patch) | |
tree | 17b3572b0a78ef1f40d34c9a04b7cb3d79387115 /board | |
parent | b9f56698c7e9bf7ac773b5346c4f6886e214b69b (diff) | |
download | u-boot-ff229ecf8b4e5379d32c74f0486c2285e2ee27d4.tar.xz |
beagle: expansion boards: retry i2c_read with 16bit addressing
Some expansion boards now ship with at24 eeproms that need to communicate
via 16bit addressing.
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
Diffstat (limited to 'board')
-rw-r--r-- | board/ti/beagle/beagle.c | 8 |
1 files changed, 8 insertions, 0 deletions
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; |