mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-30 00:21:06 +00:00
net: sunxi-emac: Write HW address via function
Currently the mac address is programmed directly in _sunxi_emac_eth_init making it a one time inflexible operation. By moving it into a separate function, we can now use this more flexibly. Signed-off-by: Olliver Schinagl <oliver@schinagl.nl> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
This commit is contained in:
parent
5cf618ee60
commit
ace1520cb5
1 changed files with 15 additions and 4 deletions
|
@ -327,6 +327,20 @@ static void emac_reset(struct emac_eth_dev *priv)
|
|||
udelay(200);
|
||||
}
|
||||
|
||||
static int _sunxi_write_hwaddr(struct emac_eth_dev *priv, u8 *enetaddr)
|
||||
{
|
||||
struct emac_regs *regs = priv->regs;
|
||||
u32 enetaddr_lo, enetaddr_hi;
|
||||
|
||||
enetaddr_lo = enetaddr[2] | (enetaddr[1] << 8) | (enetaddr[0] << 16);
|
||||
enetaddr_hi = enetaddr[5] | (enetaddr[4] << 8) | (enetaddr[3] << 16);
|
||||
|
||||
writel(enetaddr_hi, ®s->mac_a1);
|
||||
writel(enetaddr_lo, ®s->mac_a0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int _sunxi_emac_eth_init(struct emac_eth_dev *priv, u8 *enetaddr)
|
||||
{
|
||||
struct emac_regs *regs = priv->regs;
|
||||
|
@ -350,10 +364,7 @@ static int _sunxi_emac_eth_init(struct emac_eth_dev *priv, u8 *enetaddr)
|
|||
/* Set up EMAC */
|
||||
emac_setup(priv);
|
||||
|
||||
writel(enetaddr[0] << 16 | enetaddr[1] << 8 | enetaddr[2],
|
||||
®s->mac_a1);
|
||||
writel(enetaddr[3] << 16 | enetaddr[4] << 8 | enetaddr[5],
|
||||
®s->mac_a0);
|
||||
_sunxi_write_hwaddr(priv, enetaddr);
|
||||
|
||||
mdelay(1);
|
||||
|
||||
|
|
Loading…
Reference in a new issue