Browse Source

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>
Christian Gmeiner 10 years ago
parent
commit
189d257b7a
2 changed files with 9 additions and 0 deletions
  1. 3 0
      README
  2. 6 0
      common/cmd_eeprom.c

+ 3 - 0
README

@@ -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

+ 6 - 0
common/cmd_eeprom.c

@@ -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;