[U-Boot] [PATCH V2 3/5] dm9000: Add struct eth_device * to SROM functions

Joe Hershberger joe.hershberger at gmail.com
Wed Aug 12 21:07:20 CEST 2015


Hi Andrew,

On Wed, Aug 12, 2015 at 12:24 PM, Andrew Ruder
<andrew.ruder at elecsyscorp.com> wrote:
> Currently this argument is not used.  To eventually support multiple
> DM9000's these public-facing functions will need a new argument - the
> ethernet device.  Fix-up the one board using this part of the DM9000
> API.  Compile-tested only.
>
> Signed-off-by: Andrew Ruder <andrew.ruder at elecsyscorp.com>
> Cc: Joe Hershberger <joe.hershberger at gmail.com>
> ---
>  board/trizepsiv/eeprom.c | 5 +++--
>  drivers/net/dm9000x.c    | 6 +++---
>  include/dm9000.h         | 6 ++++--
>  3 files changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/board/trizepsiv/eeprom.c b/board/trizepsiv/eeprom.c
> index 1318edc..d9045dd 100644
> --- a/board/trizepsiv/eeprom.c
> +++ b/board/trizepsiv/eeprom.c
> @@ -8,6 +8,7 @@
>  #include <common.h>
>  #include <command.h>
>  #include <dm9000.h>
> +#include <net.h>
>
>  static int do_read_dm9000_eeprom ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) {
>         unsigned int i;
> @@ -16,7 +17,7 @@ static int do_read_dm9000_eeprom ( cmd_tbl_t *cmdtp, int flag, int argc, char *
>         for (i=0; i < 0x40; i++) {
>                 if (!(i % 0x10))
>                         printf("\n%08x:", i);
> -               dm9000_read_srom_word(i, data);
> +               dm9000_read_srom_word(eth_get_dev_by_index(0), i, data);
>                 printf(" %02x%02x", data[1], data[0]);
>         }
>         printf ("\n");
> @@ -35,7 +36,7 @@ static int do_write_dm9000_eeprom ( cmd_tbl_t *cmdtp, int flag, int argc, char *
>                 printf("Wrong offset : 0x%x\n",offset);
>                 return cmd_usage(cmdtp);
>         }
> -       dm9000_write_srom_word(offset, value);
> +       dm9000_write_srom_word(eth_get_dev_by_index(0), offset, value);
>         return (0);
>  }
>
> diff --git a/drivers/net/dm9000x.c b/drivers/net/dm9000x.c
> index 258c8a3..e1a10b5 100644
> --- a/drivers/net/dm9000x.c
> +++ b/drivers/net/dm9000x.c
> @@ -528,7 +528,7 @@ static int dm9000_rx(struct eth_device *netdev)
>    Read a word data from SROM
>  */
>  #if !defined(CONFIG_DM9000_NO_SROM)
> -void dm9000_read_srom_word(int offset, u8 *to)
> +void dm9000_read_srom_word(struct eth_device *dev, int offset, u8 *to)
>  {
>         DM9000_iow(DM9000_EPAR, offset);
>         DM9000_iow(DM9000_EPCR, 0x4);
> @@ -538,7 +538,7 @@ void dm9000_read_srom_word(int offset, u8 *to)
>         to[1] = DM9000_ior(DM9000_EPDRH);
>  }
>
> -void dm9000_write_srom_word(int offset, u16 val)
> +void dm9000_write_srom_word(struct eth_device *dev, int offset, u16 val)
>  {
>         DM9000_iow(DM9000_EPAR, offset);
>         DM9000_iow(DM9000_EPDRH, ((val >> 8) & 0xff));
> @@ -554,7 +554,7 @@ static void dm9000_get_enetaddr(struct eth_device *dev)
>  #if !defined(CONFIG_DM9000_NO_SROM)
>         int i;
>         for (i = 0; i < 3; i++)
> -               dm9000_read_srom_word(i, dev->enetaddr + (2 * i));
> +               dm9000_read_srom_word(dev, i, dev->enetaddr + (2 * i));
>  #endif
>  }
>
> diff --git a/include/dm9000.h b/include/dm9000.h
> index 42b04fa..7a7e629 100644
> --- a/include/dm9000.h
> +++ b/include/dm9000.h
> @@ -10,8 +10,10 @@
>
>  /******************  function prototypes **********************/
>  #if !defined(CONFIG_DM9000_NO_SROM)
> -void dm9000_write_srom_word(int offset, u16 val);
> -void dm9000_read_srom_word(int offset, u8 *to);
> +struct eth_device;
> +
> +void dm9000_write_srom_word(struct eth_device *dev, int offset, u16 val);
> +void dm9000_read_srom_word(struct eth_device *dev, int offset, u8 *to);

It will be better to pass the dm9000_priv* instead. See patch 5 for details.

>  #endif
>
>  #endif /* __DM9000_H__ */
> --
> 2.1.4
>


More information about the U-Boot mailing list