From: Heiko Schocher <hs@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 02/17] eeprom: Shuffle code around
Date: Mon, 16 Nov 2015 12:26:29 +0100 [thread overview]
Message-ID: <5649BD65.30003@denx.de> (raw)
In-Reply-To: <1447185213-5799-2-git-send-email-marex@denx.de>
Hello Marek,
Am 10.11.2015 um 20:53 schrieb Marek Vasut:
> Just move the code around so that the forward declarations are not
> necessary. Also zap a few checkpatch issues where applicable and
> zap the use of #ifdef CONFIG_CMD_EEPROM in the code, since this is
> always true.
>
> 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 | 168 ++++++++++++++++++++++------------------------------
> 1 file changed, 70 insertions(+), 98 deletions(-)
Reviewed-by: Heiko Schocher <hs@denx.de>
bye,
Heiko
>
> diff --git a/common/cmd_eeprom.c b/common/cmd_eeprom.c
> index e9904cd..4335079 100644
> --- a/common/cmd_eeprom.c
> +++ b/common/cmd_eeprom.c
> @@ -25,94 +25,55 @@
> #include <command.h>
> #include <i2c.h>
>
> -extern void eeprom_init (void);
> -extern int eeprom_read (unsigned dev_addr, unsigned offset,
> - uchar *buffer, unsigned cnt);
> -extern int eeprom_write (unsigned dev_addr, unsigned offset,
> - uchar *buffer, unsigned cnt);
> -#if defined(CONFIG_SYS_EEPROM_WREN)
> -extern int eeprom_write_enable (unsigned dev_addr, int state);
> +#ifndef CONFIG_SYS_I2C_SPEED
> +#define CONFIG_SYS_I2C_SPEED 50000
> #endif
>
> -
> +/* Maximum number of times to poll for acknowledge after write */
> #if defined(CONFIG_SYS_EEPROM_X40430)
> - /* Maximum number of times to poll for acknowledge after write */
> #define MAX_ACKNOWLEDGE_POLLS 10
> #endif
>
> -/* ------------------------------------------------------------------------- */
> -
> -#if defined(CONFIG_CMD_EEPROM)
> -static int do_eeprom(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
> -{
> - const char *const fmt =
> - "\nEEPROM @0x%lX %s: addr %08lx off %04lx count %ld ... ";
> -
> -#if defined(CONFIG_SYS_I2C_MULTI_EEPROMS)
> - if (argc == 6) {
> - ulong dev_addr = simple_strtoul (argv[2], NULL, 16);
> - ulong addr = simple_strtoul (argv[3], NULL, 16);
> - ulong off = simple_strtoul (argv[4], NULL, 16);
> - ulong cnt = simple_strtoul (argv[5], NULL, 16);
> -#else
> - if (argc == 5) {
> - ulong dev_addr = CONFIG_SYS_DEF_EEPROM_ADDR;
> - ulong addr = simple_strtoul (argv[2], NULL, 16);
> - ulong off = simple_strtoul (argv[3], NULL, 16);
> - ulong cnt = simple_strtoul (argv[4], NULL, 16);
> -#endif /* CONFIG_SYS_I2C_MULTI_EEPROMS */
> -
> -# if !defined(CONFIG_SPI) || defined(CONFIG_ENV_EEPROM_IS_ON_I2C)
> - eeprom_init ();
> -# endif /* !CONFIG_SPI */
> -
> - if (strcmp (argv[1], "read") == 0) {
> - int rcode;
> -
> - printf (fmt, dev_addr, argv[1], addr, off, cnt);
> -
> - rcode = eeprom_read (dev_addr, off, (uchar *) addr, cnt);
> -
> - puts ("done\n");
> - return rcode;
> - } else if (strcmp (argv[1], "write") == 0) {
> - int rcode;
> -
> - printf (fmt, dev_addr, argv[1], addr, off, cnt);
> -
> - rcode = eeprom_write (dev_addr, off, (uchar *) addr, cnt);
> -
> - puts ("done\n");
> - return rcode;
> - }
> - }
> -
> - return CMD_RET_USAGE;
> -}
> -#endif
> -
> -/*-----------------------------------------------------------------------
> - *
> +/*
> * for CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 2 (16-bit EEPROM address) offset is
> * 0x000nxxxx for EEPROM address selectors at n, offset xxxx in EEPROM.
> *
> * for CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 1 (8-bit EEPROM page address) offset is
> * 0x00000nxx for EEPROM address selectors and page number at n.
> */
> -
> #if !defined(CONFIG_SPI) || defined(CONFIG_ENV_EEPROM_IS_ON_I2C)
> -#if !defined(CONFIG_SYS_I2C_EEPROM_ADDR_LEN) || CONFIG_SYS_I2C_EEPROM_ADDR_LEN < 1 || CONFIG_SYS_I2C_EEPROM_ADDR_LEN > 2
> +#if !defined(CONFIG_SYS_I2C_EEPROM_ADDR_LEN) || \
> + (CONFIG_SYS_I2C_EEPROM_ADDR_LEN < 1) || \
> + (CONFIG_SYS_I2C_EEPROM_ADDR_LEN > 2)
> #error CONFIG_SYS_I2C_EEPROM_ADDR_LEN must be 1 or 2
> #endif
> #endif
>
> +#if defined(CONFIG_SYS_EEPROM_WREN)
> +extern int eeprom_write_enable (unsigned dev_addr, int state);
> +#endif
> +
> +void eeprom_init(void)
> +{
> + /* SPI EEPROM */
> +#if defined(CONFIG_SPI) && !defined(CONFIG_ENV_EEPROM_IS_ON_I2C)
> + spi_init_f ();
> +#endif
> +
> + /* I2C EEPROM */
> +#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SYS_I2C_SOFT)
> + i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
> +#endif
> +}
> +
> int eeprom_read (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cnt)
> {
> unsigned end = offset + cnt;
> unsigned blk_off;
> int rcode = 0;
>
> - /* Read data until done or would cross a page boundary.
> + /*
> + * Read data until done or would cross a page boundary.
> * We must write the address again when changing pages
> * because the next page may be in a different device.
> */
> @@ -174,15 +135,6 @@ int eeprom_read (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cnt
> return rcode;
> }
>
> -/*-----------------------------------------------------------------------
> - *
> - * for CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 2 (16-bit EEPROM address) offset is
> - * 0x000nxxxx for EEPROM address selectors at n, offset xxxx in EEPROM.
> - *
> - * for CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 1 (8-bit EEPROM page address) offset is
> - * 0x00000nxx for EEPROM address selectors and page number at n.
> - */
> -
> int eeprom_write (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cnt)
> {
> unsigned end = offset + cnt;
> @@ -200,7 +152,8 @@ int eeprom_write (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cn
> #if defined(CONFIG_SYS_EEPROM_WREN)
> eeprom_write_enable (dev_addr,1);
> #endif
> - /* Write data until done or would cross a write page boundary.
> + /*
> + * Write data until done or would cross a write page boundary.
> * We must write the address again when changing pages
> * because the address counter only increments within a page.
> */
> @@ -363,8 +316,7 @@ int eeprom_write (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cn
> }
>
> #if !defined(CONFIG_SPI) || defined(CONFIG_ENV_EEPROM_IS_ON_I2C)
> -int
> -eeprom_probe (unsigned dev_addr, unsigned offset)
> +int eeprom_probe(unsigned dev_addr, unsigned offset)
> {
> unsigned char chip;
>
> @@ -382,30 +334,52 @@ eeprom_probe (unsigned dev_addr, unsigned offset)
> }
> #endif
>
> -/*-----------------------------------------------------------------------
> - * Set default values
> - */
> -#ifndef CONFIG_SYS_I2C_SPEED
> -#define CONFIG_SYS_I2C_SPEED 50000
> -#endif
> -
> -void eeprom_init (void)
> +static int do_eeprom(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
> {
> + const char *const fmt =
> + "\nEEPROM @0x%lX %s: addr %08lx off %04lx count %ld ... ";
>
> -#if defined(CONFIG_SPI) && !defined(CONFIG_ENV_EEPROM_IS_ON_I2C)
> - spi_init_f ();
> -#endif
> -#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SYS_I2C_SOFT)
> - i2c_init (CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
> -#endif
> -}
> +#if defined(CONFIG_SYS_I2C_MULTI_EEPROMS)
> + if (argc == 6) {
> + ulong dev_addr = simple_strtoul (argv[2], NULL, 16);
> + ulong addr = simple_strtoul (argv[3], NULL, 16);
> + ulong off = simple_strtoul (argv[4], NULL, 16);
> + ulong cnt = simple_strtoul (argv[5], NULL, 16);
> +#else
> + if (argc == 5) {
> + ulong dev_addr = CONFIG_SYS_DEF_EEPROM_ADDR;
> + ulong addr = simple_strtoul (argv[2], NULL, 16);
> + ulong off = simple_strtoul (argv[3], NULL, 16);
> + ulong cnt = simple_strtoul (argv[4], NULL, 16);
> +#endif /* CONFIG_SYS_I2C_MULTI_EEPROMS */
>
> -/*-----------------------------------------------------------------------
> - */
> +# if !defined(CONFIG_SPI) || defined(CONFIG_ENV_EEPROM_IS_ON_I2C)
> + eeprom_init ();
> +# endif /* !CONFIG_SPI */
>
> -/***************************************************/
> + if (strcmp (argv[1], "read") == 0) {
> + int rcode;
> +
> + printf (fmt, dev_addr, argv[1], addr, off, cnt);
>
> -#if defined(CONFIG_CMD_EEPROM)
> + rcode = eeprom_read (dev_addr, off, (uchar *) addr, cnt);
> +
> + puts ("done\n");
> + return rcode;
> + } else if (strcmp (argv[1], "write") == 0) {
> + int rcode;
> +
> + printf (fmt, dev_addr, argv[1], addr, off, cnt);
> +
> + rcode = eeprom_write (dev_addr, off, (uchar *) addr, cnt);
> +
> + puts ("done\n");
> + return rcode;
> + }
> + }
> +
> + return CMD_RET_USAGE;
> +}
>
> #ifdef CONFIG_SYS_I2C_MULTI_EEPROMS
> U_BOOT_CMD(
> @@ -424,5 +398,3 @@ U_BOOT_CMD(
> " - read/write `cnt' bytes at EEPROM offset `off'"
> )
> #endif /* CONFIG_SYS_I2C_MULTI_EEPROMS */
> -
> -#endif
>
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
next prev parent reply other threads:[~2015-11-16 11:26 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-10 19:53 [U-Boot] [PATCH 01/17] tricorder: rewrite tricordereeprom command Marek Vasut
2015-11-10 19:53 ` [U-Boot] [PATCH 02/17] eeprom: Shuffle code around Marek Vasut
2015-11-16 11:26 ` Heiko Schocher [this message]
2015-11-22 15:53 ` [U-Boot] [U-Boot,02/17] " Tom Rini
2015-11-10 19:53 ` [U-Boot] [PATCH 03/17] eeprom: Zap CONFIG_SYS_I2C_MULTI_EEPROMS Marek Vasut
2015-11-16 11:26 ` Heiko Schocher
2015-11-22 15:53 ` [U-Boot] [U-Boot, " Tom Rini
2015-11-10 19:53 ` [U-Boot] [PATCH 04/17] eeprom: Zap CONFIG_SYS_EEPROM_X40430 Marek Vasut
2015-11-16 11:27 ` Heiko Schocher
2015-11-22 15:53 ` [U-Boot] [U-Boot,04/17] " Tom Rini
2015-11-10 19:53 ` [U-Boot] [PATCH 05/17] eeprom: Zap eeprom_probe() Marek Vasut
2015-11-16 11:27 ` Heiko Schocher
2015-11-22 15:54 ` [U-Boot] [U-Boot,05/17] " Tom Rini
2015-11-10 19:53 ` [U-Boot] [PATCH 06/17] eeprom: Zap CONFIG_SPI_X Marek Vasut
2015-11-16 11:27 ` Heiko Schocher
2015-11-22 15:54 ` [U-Boot] [U-Boot,06/17] " Tom Rini
2015-11-10 19:53 ` [U-Boot] [PATCH 07/17] eeprom: Pull out the I/O code Marek Vasut
2015-11-16 11:27 ` Heiko Schocher
2015-11-22 15:54 ` [U-Boot] [U-Boot,07/17] " Tom Rini
2015-11-10 19:53 ` [U-Boot] [PATCH 08/17] eeprom: Pull out address computation Marek Vasut
2015-11-16 11:28 ` Heiko Schocher
2015-11-22 15:54 ` [U-Boot] [U-Boot,08/17] " Tom Rini
2015-11-10 19:53 ` [U-Boot] [PATCH 09/17] eeprom: Make eeprom_write_enable() weak Marek Vasut
2015-11-16 11:28 ` Heiko Schocher
2015-11-22 15:54 ` [U-Boot] [U-Boot, " Tom Rini
2015-11-10 19:53 ` [U-Boot] [PATCH 10/17] eeprom: Pull out CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS Marek Vasut
2015-11-16 11:28 ` Heiko Schocher
2015-11-22 15:54 ` [U-Boot] [U-Boot, " Tom Rini
2015-11-10 19:53 ` [U-Boot] [PATCH 11/17] eeprom: Suck the ifdef into eeprom_init() Marek Vasut
2015-11-16 11:28 ` Heiko Schocher
2015-11-22 15:54 ` [U-Boot] [U-Boot, " Tom Rini
2015-11-10 19:53 ` [U-Boot] [PATCH 12/17] eeprom: Pull out CONFIG_SYS_EEPROM_PAGE_WRITE_BITS Marek Vasut
2015-11-16 11:29 ` Heiko Schocher
2015-11-22 15:54 ` [U-Boot] [U-Boot, " Tom Rini
2015-11-10 19:53 ` [U-Boot] [PATCH 13/17] eeprom: Pull out transfer length computation Marek Vasut
2015-11-16 11:31 ` Heiko Schocher
2015-11-22 15:54 ` [U-Boot] [U-Boot, " Tom Rini
2015-11-10 19:53 ` [U-Boot] [PATCH 14/17] eeprom: Pull out the RW loop Marek Vasut
2015-11-16 11:31 ` Heiko Schocher
2015-11-22 15:54 ` [U-Boot] [U-Boot,14/17] " Tom Rini
2015-11-10 19:53 ` [U-Boot] [PATCH 15/17] eeprom: Add bus argument to eeprom_init() Marek Vasut
2015-11-16 11:32 ` Heiko Schocher
2015-11-21 13:48 ` Tom Rini
2015-11-22 15:54 ` [U-Boot] [U-Boot, " Tom Rini
2015-11-10 19:53 ` [U-Boot] [PATCH 16/17] eeprom: Add support for selecting i2c bus Marek Vasut
2015-11-16 11:32 ` Heiko Schocher
2015-11-22 15:54 ` [U-Boot] [U-Boot, " Tom Rini
2015-11-10 19:53 ` [U-Boot] [PATCH 17/17] eeprom: Clean up checkpatch issues Marek Vasut
2015-11-16 11:32 ` Heiko Schocher
2015-11-22 15:55 ` [U-Boot] [U-Boot,17/17] " Tom Rini
2015-11-16 11:26 ` [U-Boot] [PATCH 01/17] tricorder: rewrite tricordereeprom command Heiko Schocher
2015-11-22 15:53 ` [U-Boot] [U-Boot, " Tom Rini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5649BD65.30003@denx.de \
--to=hs@denx.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.