diff mbox

[U-Boot,1/2] cmd_eeprom: make it possible to define the used i2c bus

Message ID 1423664372-20800-1-git-send-email-christian.gmeiner@gmail.com
State Awaiting Upstream
Delegated to: Stefano Babic
Headers show

Commit Message

Christian Gmeiner Feb. 11, 2015, 2:19 p.m. UTC
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>
---
 README              | 3 +++
 common/cmd_eeprom.c | 6 ++++++
 2 files changed, 9 insertions(+)

Comments

Stefano Babic Feb. 17, 2015, 9:38 a.m. UTC | #1
Hi Christian,

On 11/02/2015 15:19, Christian Gmeiner wrote:
> 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>
> ---
>  README              | 3 +++
>  common/cmd_eeprom.c | 6 ++++++
>  2 files changed, 9 insertions(+)
> 
> diff --git a/README b/README
> index ba57dc5..f38ab15 100644
> --- a/README
> +++ b/README
> @@ -4341,6 +4341,9 @@ to save the current settings.
>  	  If defined, specified the chip address of the EEPROM device.
>  	  The default address is zero.
>  
> +	- CONFIG_SYS_I2C_EEPROM_BUS:
> +	  If defined, specified the i2c bus of the EEPROM device.
> +

Thanks to fix this as well ;-)

>  	- CONFIG_SYS_EEPROM_PAGE_WRITE_BITS:
>  	  If defined, the number of bits used to address bytes in a
>  	  single page in the EEPROM device.  A 64 byte page, for example
> diff --git a/common/cmd_eeprom.c b/common/cmd_eeprom.c
> index 29f0f1f..e9904cd 100644
> --- a/common/cmd_eeprom.c
> +++ b/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)
>  		spi_read (addr, alen, buffer, len);
>  #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))
>  			rcode = 1;
>  #endif
> @@ -339,6 +342,9 @@ int eeprom_write (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cn
>  		/* 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
>  		if (i2c_write(addr[0], offset, alen - 1, buffer, len))
>  			rcode = 1;
>  
> 

Acked-by: Stefano Babic <sbabic@denx.de>

Best regards,
Stefano Babic
Stefano Babic Feb. 17, 2015, 9:53 a.m. UTC | #2
On 11/02/2015 15:19, Christian Gmeiner wrote:
> 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>
> ---

Applied to u-boot-imx, thanks !

Best regards,
Stefano Babic
diff mbox

Patch

diff --git a/README b/README
index ba57dc5..f38ab15 100644
--- a/README
+++ b/README
@@ -4341,6 +4341,9 @@  to save the current settings.
 	  If defined, specified the chip address of the EEPROM device.
 	  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:
 	  If defined, the number of bits used to address bytes in a
 	  single page in the EEPROM device.  A 64 byte page, for example
diff --git a/common/cmd_eeprom.c b/common/cmd_eeprom.c
index 29f0f1f..e9904cd 100644
--- a/common/cmd_eeprom.c
+++ b/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)
 		spi_read (addr, alen, buffer, len);
 #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))
 			rcode = 1;
 #endif
@@ -339,6 +342,9 @@  int eeprom_write (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cn
 		/* 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
 		if (i2c_write(addr[0], offset, alen - 1, buffer, len))
 			rcode = 1;