[U-Boot] setting Ethernet address

Benedict Hewson
2014-03-15T07:08:54Z

On Friday 14 Mar 2014 15:52:29 Fabio Estevam wrote:
> On Fri, Mar 14, 2014 at 3:29 PM, Benedict Hewson
>
> <benedict@hewson-venieri.com> wrote:
> > I am trying to get network support working on the Embest imx6 Marsboard.
> > I have been reading through the various imx6 boards and it appears that
> > some at least store a MAC address in the fuse memory.
> >
> > This does not appear to be set on the MarSboard - the fuse memory contains
> > 0. The original 2009 version used the ethaddr environment variable.
> > If I try to include this in the config header file either as part of the
> > CONFIG_EXTRA_ENV_SETTINGS -
>
> I would suggest you to add support for this board in mainline U-boot
> and the MAC address will be read from fuse without problems.
>

I am in the process of adding this to the mainline . I did submit a patch a
few days ago, but much too early and it needed a lot of work as there was a
lot of dead code, wrongly formatted comments and out of date CONFIG options as
it was mostly based on 2009 uboot.

I have cleaned it up and removed the various CONFIG options which do not
appear anywhere else in uboot. Just a few things left to sort out with
networking.

Based on the mx6sabre configs I have tried inlcuding the config options

#define CONFIG_CMD_FUSE
#ifdef CONFIG_CMD_FUSE
#define CONFIG_MXC_OCOTP
#endif

and also

#define CONFIG_CMD_PING
#define CONFIG_CMD_DHCP
#define CONFIG_CMD_MII
#define CONFIG_CMD_NET
#define CONFIG_FEC_MXC
#define CONFIG_MII
#define IMX_FEC_BASE ENET_BASE_ADDR
#define CONFIG_FEC_XCV_TYPE RGMII
#define CONFIG_ETHPRIME "FEC"
#define CONFIG_FEC_MXC_PHYADDR 4

Anyway I get a can't set MAC address warning when booting.

In the fec_get_hwaddr() function I have printed out the values returned by
imx_get_mac_from_fuse() and they are all 0.

I have read in the README.imx6 file that the MAC address is stored in the fuse
bank. The default reset value according to the datasheet is 0, so is this
programmed by Freescale or the board vendor ?

Do I need to add anything more than CONFIG_CMD_FUSE & CONFIG_MXC_OCOTP to make
the reading of the fuse memory work ?

regards
Ben