Message ID | 1447185213-5799-15-git-send-email-marex@denx.de |
---|---|
State | Accepted |
Delegated to: | Tom Rini |
Headers | show |
Hello Marek, Am 10.11.2015 um 20:53 schrieb Marek Vasut: > Add bus argument to eeprom_init(), so that it can select > the I2C bus number on which the eeprom resides. Any negative > value of the $bus argument will preserve the old behavior. > This is in place so that old code does not randomly break. > > 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 | 6 ++++-- > common/env_eeprom.c | 4 ++-- > include/common.h | 2 +- > 3 files changed, 7 insertions(+), 5 deletions(-) Reviewed-by: Heiko Schocher <hs@denx.de> bye, Heiko > > diff --git a/common/cmd_eeprom.c b/common/cmd_eeprom.c > index d0942ef..9247036 100644 > --- a/common/cmd_eeprom.c > +++ b/common/cmd_eeprom.c > @@ -60,7 +60,7 @@ __weak int eeprom_write_enable(unsigned dev_addr, int state) > return 0; > } > > -void eeprom_init(void) > +void eeprom_init(int bus) > { > /* SPI EEPROM */ > #if defined(CONFIG_SPI) && !defined(CONFIG_ENV_EEPROM_IS_ON_I2C) > @@ -69,6 +69,8 @@ void eeprom_init(void) > > /* I2C EEPROM */ > #if defined(CONFIG_HARD_I2C) || defined(CONFIG_SYS_I2C_SOFT) > + if (bus >= 0) > + i2c_set_bus_num(bus); > i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); > #endif > } > @@ -223,7 +225,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(); > + eeprom_init(-1); > > if (strcmp (argv[1], "read") == 0) { > printf(fmt, dev_addr, argv[1], addr, off, cnt); > diff --git a/common/env_eeprom.c b/common/env_eeprom.c > index eea169d..72b1373 100644 > --- a/common/env_eeprom.c > +++ b/common/env_eeprom.c > @@ -91,7 +91,7 @@ void env_relocate_spec(void) > uchar rdbuf[64], flags[2]; > int i, crc_ok[2] = {0, 0}; > > - eeprom_init(); /* prepare for EEPROM read/write */ > + eeprom_init(-1); /* prepare for EEPROM read/write */ > > off_env[0] = CONFIG_ENV_OFFSET; > off_env[1] = CONFIG_ENV_OFFSET_REDUND; > @@ -154,7 +154,7 @@ void env_relocate_spec(void) > ulong crc, len, new; > uchar rdbuf[64]; > > - eeprom_init(); /* prepare for EEPROM read/write */ > + eeprom_init(-1); /* prepare for EEPROM read/write */ > > /* read old CRC */ > eeprom_bus_read(CONFIG_SYS_DEF_EEPROM_ADDR, > diff --git a/include/common.h b/include/common.h > index ceb1ad3..39ba5c9 100644 > --- a/include/common.h > +++ b/include/common.h > @@ -475,7 +475,7 @@ void reset_phy (void); > void fdc_hw_init (void); > > /* $(BOARD)/eeprom.c */ > -void eeprom_init (void); > +void eeprom_init (int bus); > int eeprom_read (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cnt); > int eeprom_write (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cnt); > >
On Mon, Nov 16, 2015 at 12:32:18PM +0100, Heiko Schocher wrote: > Hello Marek, > > Am 10.11.2015 um 20:53 schrieb Marek Vasut: > >Add bus argument to eeprom_init(), so that it can select > >the I2C bus number on which the eeprom resides. Any negative > >value of the $bus argument will preserve the old behavior. > >This is in place so that old code does not randomly break. [snip] > >@@ -69,6 +69,8 @@ void eeprom_init(void) > > > > /* I2C EEPROM */ > > #if defined(CONFIG_HARD_I2C) || defined(CONFIG_SYS_I2C_SOFT) > >+ if (bus >= 0) > >+ i2c_set_bus_num(bus); > > i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); > > #endif > > } Note that we need to wrap this call in CONFIG_SYS_I2C as CONFIG_HARD_I2C doesn't provide this function. Fixing up and testing again locally.
On Tue, Nov 10, 2015 at 08:53:31PM +0100, Marek Vasut wrote: > Add bus argument to eeprom_init(), so that it can select > the I2C bus number on which the eeprom resides. Any negative > value of the $bus argument will preserve the old behavior. > This is in place so that old code does not randomly break. > > 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 --git a/common/cmd_eeprom.c b/common/cmd_eeprom.c index d0942ef..9247036 100644 --- a/common/cmd_eeprom.c +++ b/common/cmd_eeprom.c @@ -60,7 +60,7 @@ __weak int eeprom_write_enable(unsigned dev_addr, int state) return 0; } -void eeprom_init(void) +void eeprom_init(int bus) { /* SPI EEPROM */ #if defined(CONFIG_SPI) && !defined(CONFIG_ENV_EEPROM_IS_ON_I2C) @@ -69,6 +69,8 @@ void eeprom_init(void) /* I2C EEPROM */ #if defined(CONFIG_HARD_I2C) || defined(CONFIG_SYS_I2C_SOFT) + if (bus >= 0) + i2c_set_bus_num(bus); i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); #endif } @@ -223,7 +225,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(); + eeprom_init(-1); if (strcmp (argv[1], "read") == 0) { printf(fmt, dev_addr, argv[1], addr, off, cnt); diff --git a/common/env_eeprom.c b/common/env_eeprom.c index eea169d..72b1373 100644 --- a/common/env_eeprom.c +++ b/common/env_eeprom.c @@ -91,7 +91,7 @@ void env_relocate_spec(void) uchar rdbuf[64], flags[2]; int i, crc_ok[2] = {0, 0}; - eeprom_init(); /* prepare for EEPROM read/write */ + eeprom_init(-1); /* prepare for EEPROM read/write */ off_env[0] = CONFIG_ENV_OFFSET; off_env[1] = CONFIG_ENV_OFFSET_REDUND; @@ -154,7 +154,7 @@ void env_relocate_spec(void) ulong crc, len, new; uchar rdbuf[64]; - eeprom_init(); /* prepare for EEPROM read/write */ + eeprom_init(-1); /* prepare for EEPROM read/write */ /* read old CRC */ eeprom_bus_read(CONFIG_SYS_DEF_EEPROM_ADDR, diff --git a/include/common.h b/include/common.h index ceb1ad3..39ba5c9 100644 --- a/include/common.h +++ b/include/common.h @@ -475,7 +475,7 @@ void reset_phy (void); void fdc_hw_init (void); /* $(BOARD)/eeprom.c */ -void eeprom_init (void); +void eeprom_init (int bus); int eeprom_read (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cnt); int eeprom_write (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cnt);
Add bus argument to eeprom_init(), so that it can select the I2C bus number on which the eeprom resides. Any negative value of the $bus argument will preserve the old behavior. This is in place so that old code does not randomly break. 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 | 6 ++++-- common/env_eeprom.c | 4 ++-- include/common.h | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-)