Altera TSE: Move PHY get addr and MDIO create
authorWalter Lozano <walter@vanguardiasur.com.ar>
Fri, 3 Oct 2014 18:09:00 +0000 (15:09 -0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 6 Oct 2014 01:39:40 +0000 (21:39 -0400)
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>
drivers/net/ethernet/altera/altera_tse_main.c

index fc2d5556b71564b20ab12313de0e5b6769541d62..95a30a30f7ff3695d6e5a2903ac5f1c8099eb9a4 100644 (file)
@@ -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)
@@ -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;
 
@@ -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;