Skip to content

Commit

Permalink
Altera TSE: Move PHY get addr and MDIO create
Browse files Browse the repository at this point in the history
Move PHY get addr and MDIO create to a new function to improve readability
and make it easier to avoid its usage. This will be useful for example in
the case where there is no PHY chip.

Signed-off-by: Walter Lozano <walter@vanguardiasur.com.ar>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Walter Lozano authored and David S. Miller committed Oct 6, 2014
1 parent a4b4a2b commit 004fa11
Showing 1 changed file with 36 additions and 21 deletions.
57 changes: 36 additions & 21 deletions drivers/net/ethernet/altera/altera_tse_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -728,6 +728,40 @@ static struct phy_device *connect_local_phy(struct net_device *dev)
return phydev;
}

static int altera_tse_phy_get_addr_mdio_create(struct net_device *dev)
{
struct altera_tse_private *priv = netdev_priv(dev);
struct device_node *np = priv->device->of_node;
int ret = 0;

priv->phy_iface = of_get_phy_mode(np);

/* try to get PHY address from device tree, use PHY autodetection if
* no valid address is given
*/

if (of_property_read_u32(priv->device->of_node, "phy-addr",
&priv->phy_addr)) {
priv->phy_addr = POLL_PHY;
}

if (!((priv->phy_addr == POLL_PHY) ||
((priv->phy_addr >= 0) && (priv->phy_addr < PHY_MAX_ADDR)))) {
netdev_err(dev, "invalid phy-addr specified %d\n",
priv->phy_addr);
return -ENODEV;
}

/* Create/attach to MDIO bus */
ret = altera_tse_mdio_create(dev,
atomic_add_return(1, &instance_count));

if (ret)
return -ENODEV;

return 0;
}

/* Initialize driver's PHY state, and attach to the PHY
*/
static int init_phy(struct net_device *dev)
Expand Down Expand Up @@ -1231,7 +1265,6 @@ static int altera_tse_probe(struct platform_device *pdev)
struct resource *dma_res;
struct altera_tse_private *priv;
const unsigned char *macaddr;
struct device_node *np = pdev->dev.of_node;
void __iomem *descmap;
const struct of_device_id *of_id = NULL;

Expand Down Expand Up @@ -1408,26 +1441,8 @@ static int altera_tse_probe(struct platform_device *pdev)
else
eth_hw_addr_random(ndev);

priv->phy_iface = of_get_phy_mode(np);

/* try to get PHY address from device tree, use PHY autodetection if
* no valid address is given
*/
if (of_property_read_u32(pdev->dev.of_node, "phy-addr",
&priv->phy_addr)) {
priv->phy_addr = POLL_PHY;
}

if (!((priv->phy_addr == POLL_PHY) ||
((priv->phy_addr >= 0) && (priv->phy_addr < PHY_MAX_ADDR)))) {
dev_err(&pdev->dev, "invalid phy-addr specified %d\n",
priv->phy_addr);
goto err_free_netdev;
}

/* Create/attach to MDIO bus */
ret = altera_tse_mdio_create(ndev,
atomic_add_return(1, &instance_count));
/* get phy addr and create mdio */
ret = altera_tse_phy_get_addr_mdio_create(ndev);

if (ret)
goto err_free_netdev;
Expand Down

0 comments on commit 004fa11

Please sign in to comment.