cmd_eeprom: make it possible to define the used i2c bus

A SoC like the i.MX6 supports more then one i2c bus. In oder to be
able to use the eeprom command add a new define to specify the
i2c bus to use. If CONFIG_SYS_I2C_EEPROM_BUS is not defined there
is no functional change, else a call to i2c_set_bus_num(..) is
done before calling i2c_read(..) and i2c_write(..).

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Acked-by: Stefano Babic <sbabic@denx.de>
This commit is contained in:
Christian Gmeiner 2015-02-11 15:19:31 +01:00 committed by Stefano Babic
parent 83dd1dd91c
commit 189d257b7a
2 changed files with 9 additions and 0 deletions

3
README
View File

@ -4341,6 +4341,9 @@ to save the current settings.
If defined, specified the chip address of the EEPROM device. If defined, specified the chip address of the EEPROM device.
The default address is zero. The default address is zero.
- CONFIG_SYS_I2C_EEPROM_BUS:
If defined, specified the i2c bus of the EEPROM device.
- CONFIG_SYS_EEPROM_PAGE_WRITE_BITS: - CONFIG_SYS_EEPROM_PAGE_WRITE_BITS:
If defined, the number of bits used to address bytes in a If defined, the number of bits used to address bytes in a
single page in the EEPROM device. A 64 byte page, for example single page in the EEPROM device. A 64 byte page, for example

View File

@ -161,6 +161,9 @@ int eeprom_read (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cnt
#if defined(CONFIG_SPI) && !defined(CONFIG_ENV_EEPROM_IS_ON_I2C) #if defined(CONFIG_SPI) && !defined(CONFIG_ENV_EEPROM_IS_ON_I2C)
spi_read (addr, alen, buffer, len); spi_read (addr, alen, buffer, len);
#else #else
#if defined(CONFIG_SYS_I2C_EEPROM_BUS)
i2c_set_bus_num(CONFIG_SYS_I2C_EEPROM_BUS);
#endif
if (i2c_read(addr[0], offset, alen - 1, buffer, len)) if (i2c_read(addr[0], offset, alen - 1, buffer, len))
rcode = 1; rcode = 1;
#endif #endif
@ -338,6 +341,9 @@ int eeprom_write (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cn
} }
/* Write is enabled ... now write eeprom value. /* Write is enabled ... now write eeprom value.
*/ */
#endif
#if defined(CONFIG_SYS_I2C_EEPROM_BUS)
i2c_set_bus_num(CONFIG_SYS_I2C_EEPROM_BUS);
#endif #endif
if (i2c_write(addr[0], offset, alen - 1, buffer, len)) if (i2c_write(addr[0], offset, alen - 1, buffer, len))
rcode = 1; rcode = 1;