Message ID | 1447185213-5799-8-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: > Pull out the code computing the EEPROM address into separate function > so that it's not duplicated. > > 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 | 64 ++++++++++++++++++++++------------------------------- > 1 file changed, 26 insertions(+), 38 deletions(-) Reviewed-by: Heiko Schocher <hs@denx.de> bye, Heiko > > diff --git a/common/cmd_eeprom.c b/common/cmd_eeprom.c > index 7797d0e..5979993 100644 > --- a/common/cmd_eeprom.c > +++ b/common/cmd_eeprom.c > @@ -61,6 +61,28 @@ void eeprom_init(void) > #endif > } > > +static int eeprom_addr(unsigned dev_addr, unsigned offset, uchar *addr) > +{ > + unsigned blk_off; > + int alen; > + > + blk_off = offset & 0xff; /* block offset */ > +#if CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 1 > + addr[0] = offset >> 8; /* block number */ > + addr[1] = blk_off; /* block offset */ > + alen = 2; > +#else > + addr[0] = offset >> 16; /* block number */ > + addr[1] = offset >> 8; /* upper address octet */ > + addr[2] = blk_off; /* lower address octet */ > + alen = 3; > +#endif /* CONFIG_SYS_I2C_EEPROM_ADDR_LEN */ > + > + addr[0] |= dev_addr; /* insert device address */ > + > + return alen; > +} > + > static int eeprom_rw_block(unsigned offset, uchar *addr, unsigned alen, > uchar *buffer, unsigned len, bool read) > { > @@ -94,6 +116,7 @@ int eeprom_read (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cnt > unsigned end = offset + cnt; > unsigned blk_off; > int rcode = 0; > + uchar addr[3]; > > /* > * Read data until done or would cross a page boundary. > @@ -106,26 +129,8 @@ int eeprom_read (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cnt > unsigned maxlen; > #endif > > -#if CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 1 > - uchar addr[2]; > - > - blk_off = offset & 0xFF; /* block offset */ > - > - addr[0] = offset >> 8; /* block number */ > - addr[1] = blk_off; /* block offset */ > - alen = 2; > -#else > - uchar addr[3]; > - > blk_off = offset & 0xFF; /* block offset */ > - > - addr[0] = offset >> 16; /* block number */ > - addr[1] = offset >> 8; /* upper address octet */ > - addr[2] = blk_off; /* lower address octet */ > - alen = 3; > -#endif /* CONFIG_SYS_I2C_EEPROM_ADDR_LEN */ > - > - addr[0] |= dev_addr; /* insert device address */ > + alen = eeprom_addr(dev_addr, offset, addr); > > len = end - offset; > > @@ -156,6 +161,7 @@ int eeprom_write (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cn > unsigned end = offset + cnt; > unsigned blk_off; > int rcode = 0; > + uchar addr[3]; > > #if defined(CONFIG_SYS_EEPROM_WREN) > eeprom_write_enable (dev_addr,1); > @@ -172,26 +178,8 @@ int eeprom_write (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cn > unsigned maxlen; > #endif > > -#if CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 1 > - uchar addr[2]; > - > blk_off = offset & 0xFF; /* block offset */ > - > - addr[0] = offset >> 8; /* block number */ > - addr[1] = blk_off; /* block offset */ > - alen = 2; > -#else > - uchar addr[3]; > - > - blk_off = offset & 0xFF; /* block offset */ > - > - addr[0] = offset >> 16; /* block number */ > - addr[1] = offset >> 8; /* upper address octet */ > - addr[2] = blk_off; /* lower address octet */ > - alen = 3; > -#endif /* CONFIG_SYS_I2C_EEPROM_ADDR_LEN */ > - > - addr[0] |= dev_addr; /* insert device address */ > + alen = eeprom_addr(dev_addr, offset, addr); > > len = end - offset; > >
On Tue, Nov 10, 2015 at 08:53:24PM +0100, Marek Vasut wrote: > Pull out the code computing the EEPROM address into separate function > so that it's not duplicated. > > 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 7797d0e..5979993 100644 --- a/common/cmd_eeprom.c +++ b/common/cmd_eeprom.c @@ -61,6 +61,28 @@ void eeprom_init(void) #endif } +static int eeprom_addr(unsigned dev_addr, unsigned offset, uchar *addr) +{ + unsigned blk_off; + int alen; + + blk_off = offset & 0xff; /* block offset */ +#if CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 1 + addr[0] = offset >> 8; /* block number */ + addr[1] = blk_off; /* block offset */ + alen = 2; +#else + addr[0] = offset >> 16; /* block number */ + addr[1] = offset >> 8; /* upper address octet */ + addr[2] = blk_off; /* lower address octet */ + alen = 3; +#endif /* CONFIG_SYS_I2C_EEPROM_ADDR_LEN */ + + addr[0] |= dev_addr; /* insert device address */ + + return alen; +} + static int eeprom_rw_block(unsigned offset, uchar *addr, unsigned alen, uchar *buffer, unsigned len, bool read) { @@ -94,6 +116,7 @@ int eeprom_read (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cnt unsigned end = offset + cnt; unsigned blk_off; int rcode = 0; + uchar addr[3]; /* * Read data until done or would cross a page boundary. @@ -106,26 +129,8 @@ int eeprom_read (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cnt unsigned maxlen; #endif -#if CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 1 - uchar addr[2]; - - blk_off = offset & 0xFF; /* block offset */ - - addr[0] = offset >> 8; /* block number */ - addr[1] = blk_off; /* block offset */ - alen = 2; -#else - uchar addr[3]; - blk_off = offset & 0xFF; /* block offset */ - - addr[0] = offset >> 16; /* block number */ - addr[1] = offset >> 8; /* upper address octet */ - addr[2] = blk_off; /* lower address octet */ - alen = 3; -#endif /* CONFIG_SYS_I2C_EEPROM_ADDR_LEN */ - - addr[0] |= dev_addr; /* insert device address */ + alen = eeprom_addr(dev_addr, offset, addr); len = end - offset; @@ -156,6 +161,7 @@ int eeprom_write (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cn unsigned end = offset + cnt; unsigned blk_off; int rcode = 0; + uchar addr[3]; #if defined(CONFIG_SYS_EEPROM_WREN) eeprom_write_enable (dev_addr,1); @@ -172,26 +178,8 @@ int eeprom_write (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cn unsigned maxlen; #endif -#if CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 1 - uchar addr[2]; - blk_off = offset & 0xFF; /* block offset */ - - addr[0] = offset >> 8; /* block number */ - addr[1] = blk_off; /* block offset */ - alen = 2; -#else - uchar addr[3]; - - blk_off = offset & 0xFF; /* block offset */ - - addr[0] = offset >> 16; /* block number */ - addr[1] = offset >> 8; /* upper address octet */ - addr[2] = blk_off; /* lower address octet */ - alen = 3; -#endif /* CONFIG_SYS_I2C_EEPROM_ADDR_LEN */ - - addr[0] |= dev_addr; /* insert device address */ + alen = eeprom_addr(dev_addr, offset, addr); len = end - offset;
Pull out the code computing the EEPROM address into separate function so that it's not duplicated. 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 | 64 ++++++++++++++++++++++------------------------------- 1 file changed, 26 insertions(+), 38 deletions(-)