[U-Boot] [PATCH] net/designware: revert MAC-address setup on init

Bin Meng bmeng.cn at gmail.com
Wed Jul 1 16:22:01 CEST 2015


Hi Alexey,

On Wed, Jul 1, 2015 at 9:59 PM, Alexey Brodkin
<Alexey.Brodkin at synopsys.com> wrote:
> http://git.denx.de/?p=u-boot.git;a=patch;h=f566c9949fbdce2e09a900c5343ca9986e5ba360
> broke DW GMAC operation if !DM_ETH because eth_write_hwaddr() doesn't
> exist if !DM_NET.
>
> As for DM_ETH case I'm still not sure if existing implementation will
> fly.
>
> The point is as it is said in the comment on "soft reset" that is
> triggered with setting DMAMAC_SRST in "busmode" register HW address gets
> reset as well. And we inevitably need to set HW address again.
>
> So probably better solution is to move mentioned "soft-reset" from
> "init" (that is used on start of any network activity) to "initialize"
> (which is only executed once in "board_r" sequence). But that's a bit of
> a different story and for now let's just get DW GMAC functional again.
>
> Signed-off-by: Alexey Brodkin <abrodkin at synopsys.com>
> Cc: Joe Hershberger <joe.hershberger at ni.com>
> Cc: Michal Simek <michal.simek at xilinx.com>
> Cc: Tom Rini <trini at konsulko.com>
> ---
>  drivers/net/designware.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/drivers/net/designware.c b/drivers/net/designware.c
> index ae51cf3..07281a6 100644
> --- a/drivers/net/designware.c
> +++ b/drivers/net/designware.c
> @@ -243,6 +243,10 @@ static int _dw_eth_init(struct dw_eth_dev *priv, u8 *enetaddr)
>                 mdelay(100);
>         };
>
> +       /* Soft reset above clears HW address registers.
> +        * So we have to set it here once again */
> +       _dw_write_hwaddr(priv, enetaddr);
> +
>         rx_descs_init(priv);
>         tx_descs_init(priv);
>
> --

There is already a patch submitted. Please check
http://patchwork.ozlabs.org/patch/484214/

Regards,
Bin


More information about the U-Boot mailing list