diff mbox

[U-Boot,16/17] eeprom: Add support for selecting i2c bus

Message ID 1447185213-5799-16-git-send-email-marex@denx.de
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Marek Vasut Nov. 10, 2015, 7:53 p.m. UTC
Add additional parameter into the eeprom command to select
the I2C bus on which the eeprom resides.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
Cc: Heiko Schocher <hs@denx.de>
---
 common/cmd_eeprom.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

Comments

Heiko Schocher Nov. 16, 2015, 11:32 a.m. UTC | #1
Hello Marek,

Am 10.11.2015 um 20:53 schrieb Marek Vasut:
> Add additional parameter into the eeprom command to select
> the I2C bus on which the eeprom resides.
>
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Tom Rini <trini@konsulko.com>
> Cc: Heiko Schocher <hs@denx.de>
> ---
>   common/cmd_eeprom.c | 15 +++++++++++----
>   1 file changed, 11 insertions(+), 4 deletions(-)

Reviewed-by: Heiko Schocher <hs@denx.de>

bye,
Heiko
>
> diff --git a/common/cmd_eeprom.c b/common/cmd_eeprom.c
> index 9247036..13c946e 100644
> --- a/common/cmd_eeprom.c
> +++ b/common/cmd_eeprom.c
> @@ -207,14 +207,21 @@ static int do_eeprom(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>   	char * const *args = &argv[2];
>   	int rcode;
>   	ulong dev_addr, addr, off, cnt;
> +	int bus_addr;
>
>   	switch (argc) {
>   #ifdef CONFIG_SYS_DEF_EEPROM_ADDR
>   	case 5:
> +		bus_addr = -1;
>   		dev_addr = CONFIG_SYS_DEF_EEPROM_ADDR;
>   		break;
>   #endif
>   	case 6:
> +		bus_addr = -1;
> +		dev_addr = simple_strtoul(*args++, NULL, 16);
> +		break;
> +	case 7:
> +		bus_addr = simple_strtoul(*args++, NULL, 16);
>   		dev_addr = simple_strtoul(*args++, NULL, 16);
>   		break;
>   	default:
> @@ -225,7 +232,7 @@ static int do_eeprom(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>   	off = simple_strtoul(*args++, NULL, 16);
>   	cnt = simple_strtoul(*args++, NULL, 16);
>
> -	eeprom_init(-1);
> +	eeprom_init(bus_addr);
>
>   	if (strcmp (argv[1], "read") == 0) {
>   		printf(fmt, dev_addr, argv[1], addr, off, cnt);
> @@ -247,9 +254,9 @@ static int do_eeprom(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>   }
>
>   U_BOOT_CMD(
> -	eeprom,	6,	1,	do_eeprom,
> +	eeprom,	7,	1,	do_eeprom,
>   	"EEPROM sub-system",
> -	"read  devaddr addr off cnt\n"
> -	"eeprom write devaddr addr off cnt\n"
> +	"read  <bus> <devaddr> addr off cnt\n"
> +	"eeprom write <bus> <devaddr> addr off cnt\n"
>   	"       - read/write `cnt' bytes from `devaddr` EEPROM at offset `off'"
>   )
>
Tom Rini Nov. 22, 2015, 3:54 p.m. UTC | #2
On Tue, Nov 10, 2015 at 08:53:32PM +0100, Marek Vasut wrote:

> Add additional parameter into the eeprom command to select
> the I2C bus on which the eeprom resides.
> 
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Tom Rini <trini@konsulko.com>
> Cc: Heiko Schocher <hs@denx.de>
> Reviewed-by: Heiko Schocher <hs@denx.de>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/common/cmd_eeprom.c b/common/cmd_eeprom.c
index 9247036..13c946e 100644
--- a/common/cmd_eeprom.c
+++ b/common/cmd_eeprom.c
@@ -207,14 +207,21 @@  static int do_eeprom(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	char * const *args = &argv[2];
 	int rcode;
 	ulong dev_addr, addr, off, cnt;
+	int bus_addr;
 
 	switch (argc) {
 #ifdef CONFIG_SYS_DEF_EEPROM_ADDR
 	case 5:
+		bus_addr = -1;
 		dev_addr = CONFIG_SYS_DEF_EEPROM_ADDR;
 		break;
 #endif
 	case 6:
+		bus_addr = -1;
+		dev_addr = simple_strtoul(*args++, NULL, 16);
+		break;
+	case 7:
+		bus_addr = simple_strtoul(*args++, NULL, 16);
 		dev_addr = simple_strtoul(*args++, NULL, 16);
 		break;
 	default:
@@ -225,7 +232,7 @@  static int do_eeprom(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	off = simple_strtoul(*args++, NULL, 16);
 	cnt = simple_strtoul(*args++, NULL, 16);
 
-	eeprom_init(-1);
+	eeprom_init(bus_addr);
 
 	if (strcmp (argv[1], "read") == 0) {
 		printf(fmt, dev_addr, argv[1], addr, off, cnt);
@@ -247,9 +254,9 @@  static int do_eeprom(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 }
 
 U_BOOT_CMD(
-	eeprom,	6,	1,	do_eeprom,
+	eeprom,	7,	1,	do_eeprom,
 	"EEPROM sub-system",
-	"read  devaddr addr off cnt\n"
-	"eeprom write devaddr addr off cnt\n"
+	"read  <bus> <devaddr> addr off cnt\n"
+	"eeprom write <bus> <devaddr> addr off cnt\n"
 	"       - read/write `cnt' bytes from `devaddr` EEPROM at offset `off'"
 )