drivers: net: fsl_enetc: use the new MDIO DM helper functions
authorAlex Marginean <alexandru.marginean@nxp.com>
Mon, 25 Nov 2019 15:15:13 +0000 (17:15 +0200)
committerJoe Hershberger <joe.hershberger@ni.com>
Mon, 9 Dec 2019 15:47:43 +0000 (09:47 -0600)
Uses the new dm_eth_phy_connect helper to connect to the PHY to simplify
the code.

Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
drivers/net/fsl_enetc.c
drivers/net/fsl_enetc.h

index a7740deb6face082621fa8d9d42c01a80acf785e..c94ba240f87ba87216729e3e82d0f9495e72d144 100644 (file)
@@ -205,57 +205,20 @@ static void enetc_start_pcs(struct udevice *dev)
 }
 
 /* Configure the actual/external ethernet PHY, if one is found */
-static void enetc_start_phy(struct udevice *dev)
+static void enetc_config_phy(struct udevice *dev)
 {
        struct enetc_priv *priv = dev_get_priv(dev);
-       struct udevice *miidev;
-       struct phy_device *phy;
-       u32 phandle, phy_id;
-       ofnode phy_node;
        int supported;
 
-       if (!ofnode_valid(dev->node)) {
-               enetc_dbg(dev, "no enetc ofnode found, skipping PHY set-up\n");
-               return;
-       }
-
-       if (ofnode_read_u32(dev->node, "phy-handle", &phandle)) {
-               enetc_dbg(dev, "phy-handle not found, skipping PHY set-up\n");
-               return;
-       }
-
-       phy_node = ofnode_get_by_phandle(phandle);
-       if (!ofnode_valid(phy_node)) {
-               enetc_dbg(dev, "invalid phy node, skipping PHY set-up\n");
-               return;
-       }
-       enetc_dbg(dev, "phy node: %s\n", ofnode_get_name(phy_node));
+       priv->phy = dm_eth_phy_connect(dev);
 
-       if (ofnode_read_u32(phy_node, "reg", &phy_id)) {
-               enetc_dbg(dev,
-                         "missing reg in PHY node, skipping PHY set-up\n");
+       if (!priv->phy)
                return;
-       }
-
-       if (uclass_get_device_by_ofnode(UCLASS_MDIO,
-                                       ofnode_get_parent(phy_node),
-                                       &miidev)) {
-               enetc_dbg(dev, "can't find MDIO bus for node %s\n",
-                         ofnode_get_name(ofnode_get_parent(phy_node)));
-               return;
-       }
-
-       phy = dm_mdio_phy_connect(miidev, phy_id, dev, priv->if_type);
-       if (!phy) {
-               enetc_dbg(dev, "dm_mdio_phy_connect returned null\n");
-               return;
-       }
 
        supported = GENMASK(6, 0); /* speeds up to 1G & AN */
-       phy->advertising = phy->supported & supported;
-       phy->node = phy_node;
-       phy_config(phy);
-       phy_startup(phy);
+       priv->phy->advertising = priv->phy->supported & supported;
+
+       phy_config(priv->phy);
 }
 
 /*
@@ -470,7 +433,9 @@ static int enetc_start(struct udevice *dev)
        enetc_setup_rx_bdr(dev);
 
        enetc_start_pcs(dev);
-       enetc_start_phy(dev);
+       enetc_config_phy(dev);
+       if (priv->phy)
+               phy_startup(priv->phy);
 
        return 0;
 }
index 0bb4cdff4794a99e7f20b11a666794d17b475baf..9a36cdad80714fb073f32d958d5f0ff92a4332d9 100644 (file)
@@ -154,6 +154,7 @@ struct enetc_priv {
 
        int if_type;
        struct mii_dev imdio;
+       struct phy_device *phy;
 };
 
 /* register accessors */