mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-22 07:01:39 +00:00
net: gem: Extract phy init code
Move phy init code out of zynq_gem_init. DM drivers are normally calling this code from probe function. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
parent
64a7ead64b
commit
68cc3bd8b2
1 changed files with 31 additions and 18 deletions
|
@ -310,7 +310,35 @@ static int zynq_gem_setup_mac(struct eth_device *dev)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int zynq_gem_init(struct eth_device *dev, bd_t * bis)
|
static int zynq_phy_init(struct eth_device *dev)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
struct zynq_gem_priv *priv = dev->priv;
|
||||||
|
const u32 supported = SUPPORTED_10baseT_Half |
|
||||||
|
SUPPORTED_10baseT_Full |
|
||||||
|
SUPPORTED_100baseT_Half |
|
||||||
|
SUPPORTED_100baseT_Full |
|
||||||
|
SUPPORTED_1000baseT_Half |
|
||||||
|
SUPPORTED_1000baseT_Full;
|
||||||
|
|
||||||
|
ret = phy_detection(dev);
|
||||||
|
if (ret) {
|
||||||
|
printf("GEM PHY init failed\n");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
priv->phydev = phy_connect(priv->bus, priv->phyaddr, dev,
|
||||||
|
priv->interface);
|
||||||
|
|
||||||
|
priv->phydev->supported = supported | ADVERTISED_Pause |
|
||||||
|
ADVERTISED_Asym_Pause;
|
||||||
|
priv->phydev->advertising = priv->phydev->supported;
|
||||||
|
phy_config(priv->phydev);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int zynq_gem_init(struct eth_device *dev, bd_t *bis)
|
||||||
{
|
{
|
||||||
u32 i;
|
u32 i;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -319,12 +347,6 @@ static int zynq_gem_init(struct eth_device *dev, bd_t * bis)
|
||||||
struct zynq_gem_priv *priv = dev->priv;
|
struct zynq_gem_priv *priv = dev->priv;
|
||||||
struct emac_bd *dummy_tx_bd = &priv->tx_bd[TX_FREE_DESC];
|
struct emac_bd *dummy_tx_bd = &priv->tx_bd[TX_FREE_DESC];
|
||||||
struct emac_bd *dummy_rx_bd = &priv->tx_bd[TX_FREE_DESC + 2];
|
struct emac_bd *dummy_rx_bd = &priv->tx_bd[TX_FREE_DESC + 2];
|
||||||
const u32 supported = SUPPORTED_10baseT_Half |
|
|
||||||
SUPPORTED_10baseT_Full |
|
|
||||||
SUPPORTED_100baseT_Half |
|
|
||||||
SUPPORTED_100baseT_Full |
|
|
||||||
SUPPORTED_1000baseT_Half |
|
|
||||||
SUPPORTED_1000baseT_Full;
|
|
||||||
|
|
||||||
if (!priv->init) {
|
if (!priv->init) {
|
||||||
/* Disable all interrupts */
|
/* Disable all interrupts */
|
||||||
|
@ -387,19 +409,10 @@ static int zynq_gem_init(struct eth_device *dev, bd_t * bis)
|
||||||
priv->init++;
|
priv->init++;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = phy_detection(dev);
|
ret = zynq_phy_init(dev);
|
||||||
if (ret) {
|
if (ret)
|
||||||
printf("GEM PHY init failed\n");
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
|
||||||
|
|
||||||
priv->phydev = phy_connect(priv->bus, priv->phyaddr, dev,
|
|
||||||
priv->interface);
|
|
||||||
|
|
||||||
priv->phydev->supported = supported | ADVERTISED_Pause |
|
|
||||||
ADVERTISED_Asym_Pause;
|
|
||||||
priv->phydev->advertising = priv->phydev->supported;
|
|
||||||
phy_config(priv->phydev);
|
|
||||||
phy_startup(priv->phydev);
|
phy_startup(priv->phydev);
|
||||||
|
|
||||||
if (!priv->phydev->link) {
|
if (!priv->phydev->link) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue