|
|
|
@ -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(®s->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; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|