ravb: Add fixed-link support
authorKazuya Mizuguchi <kazuya.mizuguchi.ks@renesas.com>
Tue, 15 Dec 2015 10:44:13 +0000 (19:44 +0900)
committerDavid S. Miller <davem@davemloft.net>
Tue, 15 Dec 2015 17:45:21 +0000 (12:45 -0500)
This patch adds support of the fixed PHY.
This patch is based on commit 87009814cdbb ("ucc_geth: use the new fixed
PHY helpers").

Signed-off-by: Kazuya Mizuguchi <kazuya.mizuguchi.ks@renesas.com>
Signed-off-by: Yoshihiro Kaneko <ykaneko0929@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/renesas/ravb_main.c

index 120cc25..3448eb0 100644 (file)
@@ -882,6 +882,7 @@ static int ravb_phy_init(struct net_device *ndev)
        struct ravb_private *priv = netdev_priv(ndev);
        struct phy_device *phydev;
        struct device_node *pn;
+       int err;
 
        priv->link = 0;
        priv->speed = 0;
@@ -889,6 +890,17 @@ static int ravb_phy_init(struct net_device *ndev)
 
        /* Try connecting to PHY */
        pn = of_parse_phandle(np, "phy-handle", 0);
+       if (!pn) {
+               /* In the case of a fixed PHY, the DT node associated
+                * to the PHY is the Ethernet MAC DT node.
+                */
+               if (of_phy_is_fixed_link(np)) {
+                       err = of_phy_register_fixed_link(np);
+                       if (err)
+                               return err;
+               }
+               pn = of_node_get(np);
+       }
        phydev = of_phy_connect(ndev, pn, ravb_adjust_link, 0,
                                priv->phy_interface);
        if (!phydev) {