net: axi_emac: Enable access to MDIO in probe

Detect phy when driver probes.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
master
Michal Simek 9 years ago
parent 75cc93fad7
commit 5d0449d4c7
  1. 22
      drivers/net/xilinx_axi_emac.c

@ -221,11 +221,10 @@ static u32 phywrite(struct axidma_priv *priv, u32 phyaddress, u32 registernum,
return 0;
}
/* Setting axi emac and phy to proper setting */
static int setup_phy(struct udevice *dev)
static int axiemac_phy_init(struct udevice *dev)
{
u16 phyreg;
u32 i, speed, emmc_reg, ret;
u32 i, ret;
struct axidma_priv *priv = dev_get_priv(dev);
struct axi_regs *regs = priv->iobase;
struct phy_device *phydev;
@ -237,6 +236,9 @@ static int setup_phy(struct udevice *dev)
SUPPORTED_1000baseT_Half |
SUPPORTED_1000baseT_Full;
/* Set default MDIO divisor */
out_be32(&regs->mdio_mc, XAE_MDIO_DIV_DFT | XAE_MDIO_MC_MDIOEN_MASK);
if (priv->phyaddr == -1) {
/* Detect the PHY address */
for (i = 31; i >= 0; i--) {
@ -259,6 +261,18 @@ static int setup_phy(struct udevice *dev)
phydev->advertising = phydev->supported;
priv->phydev = phydev;
phy_config(phydev);
return 0;
}
/* Setting axi emac and phy to proper setting */
static int setup_phy(struct udevice *dev)
{
u32 speed, emmc_reg;
struct axidma_priv *priv = dev_get_priv(dev);
struct axi_regs *regs = priv->iobase;
struct phy_device *phydev = priv->phydev;
if (phy_startup(phydev)) {
printf("axiemac: could not initialize PHY %s\n",
phydev->dev->name);
@ -621,6 +635,8 @@ static int axi_emac_probe(struct udevice *dev)
if (ret)
return ret;
axiemac_phy_init(dev);
return 0;
}

Loading…
Cancel
Save