|
@@ -52,6 +52,7 @@
|
|
|
#include "stmmac_ptp.h"
|
|
|
#include "stmmac.h"
|
|
|
#include <linux/reset.h>
|
|
|
+#include <linux/of_mdio.h>
|
|
|
|
|
|
#define STMMAC_ALIGN(x) L1_CACHE_ALIGN(x)
|
|
|
|
|
@@ -816,18 +817,25 @@ static int stmmac_init_phy(struct net_device *dev)
|
|
|
priv->speed = 0;
|
|
|
priv->oldduplex = -1;
|
|
|
|
|
|
- if (priv->plat->phy_bus_name)
|
|
|
- snprintf(bus_id, MII_BUS_ID_SIZE, "%s-%x",
|
|
|
- priv->plat->phy_bus_name, priv->plat->bus_id);
|
|
|
- else
|
|
|
- snprintf(bus_id, MII_BUS_ID_SIZE, "stmmac-%x",
|
|
|
- priv->plat->bus_id);
|
|
|
+ if (priv->plat->phy_node) {
|
|
|
+ phydev = of_phy_connect(dev, priv->plat->phy_node,
|
|
|
+ &stmmac_adjust_link, 0, interface);
|
|
|
+ } else {
|
|
|
+ if (priv->plat->phy_bus_name)
|
|
|
+ snprintf(bus_id, MII_BUS_ID_SIZE, "%s-%x",
|
|
|
+ priv->plat->phy_bus_name, priv->plat->bus_id);
|
|
|
+ else
|
|
|
+ snprintf(bus_id, MII_BUS_ID_SIZE, "stmmac-%x",
|
|
|
+ priv->plat->bus_id);
|
|
|
|
|
|
- snprintf(phy_id_fmt, MII_BUS_ID_SIZE + 3, PHY_ID_FMT, bus_id,
|
|
|
- priv->plat->phy_addr);
|
|
|
- pr_debug("stmmac_init_phy: trying to attach to %s\n", phy_id_fmt);
|
|
|
+ snprintf(phy_id_fmt, MII_BUS_ID_SIZE + 3, PHY_ID_FMT, bus_id,
|
|
|
+ priv->plat->phy_addr);
|
|
|
+ pr_debug("stmmac_init_phy: trying to attach to %s\n",
|
|
|
+ phy_id_fmt);
|
|
|
|
|
|
- phydev = phy_connect(dev, phy_id_fmt, &stmmac_adjust_link, interface);
|
|
|
+ phydev = phy_connect(dev, phy_id_fmt, &stmmac_adjust_link,
|
|
|
+ interface);
|
|
|
+ }
|
|
|
|
|
|
if (IS_ERR(phydev)) {
|
|
|
pr_err("%s: Could not attach to PHY\n", dev->name);
|