mirror of
https://github.com/torvalds/linux.git
synced 2024-12-24 20:01:55 +00:00
Altera TSE: Move PHY get addr and MDIO create
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>
This commit is contained in:
parent
a4b4a2b7f9
commit
004fa11861
@ -728,6 +728,40 @@ static struct phy_device *connect_local_phy(struct net_device *dev)
|
|||||||
return phydev;
|
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
|
/* Initialize driver's PHY state, and attach to the PHY
|
||||||
*/
|
*/
|
||||||
static int init_phy(struct net_device *dev)
|
static int init_phy(struct net_device *dev)
|
||||||
@ -1231,7 +1265,6 @@ static int altera_tse_probe(struct platform_device *pdev)
|
|||||||
struct resource *dma_res;
|
struct resource *dma_res;
|
||||||
struct altera_tse_private *priv;
|
struct altera_tse_private *priv;
|
||||||
const unsigned char *macaddr;
|
const unsigned char *macaddr;
|
||||||
struct device_node *np = pdev->dev.of_node;
|
|
||||||
void __iomem *descmap;
|
void __iomem *descmap;
|
||||||
const struct of_device_id *of_id = NULL;
|
const struct of_device_id *of_id = NULL;
|
||||||
|
|
||||||
@ -1408,26 +1441,8 @@ static int altera_tse_probe(struct platform_device *pdev)
|
|||||||
else
|
else
|
||||||
eth_hw_addr_random(ndev);
|
eth_hw_addr_random(ndev);
|
||||||
|
|
||||||
priv->phy_iface = of_get_phy_mode(np);
|
/* get phy addr and create mdio */
|
||||||
|
ret = altera_tse_phy_get_addr_mdio_create(ndev);
|
||||||
/* 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));
|
|
||||||
|
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err_free_netdev;
|
goto err_free_netdev;
|
||||||
|
Loading…
Reference in New Issue
Block a user