diff options
-rw-r--r-- | drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 4 | ||||
-rw-r--r-- | drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 9 | ||||
-rw-r--r-- | include/linux/stmmac.h | 1 |
3 files changed, 11 insertions, 3 deletions
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index ad007d8bf9d7..069951590018 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -958,7 +958,7 @@ static int stmmac_init_phy(struct net_device *dev) struct device_node *node; int ret; - node = priv->plat->phy_node; + node = priv->plat->phylink_node; if (node) { ret = phylink_of_phy_connect(priv->phylink, node, 0); @@ -980,7 +980,7 @@ static int stmmac_init_phy(struct net_device *dev) static int stmmac_phy_setup(struct stmmac_priv *priv) { - struct device_node *node = priv->plat->phy_node; + struct device_node *node = priv->plat->phylink_node; int mode = priv->plat->interface; struct phylink *phylink; diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c index 898f94aced53..49adda9b0ad8 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c @@ -381,7 +381,13 @@ stmmac_probe_config_dt(struct platform_device *pdev, const char **mac) *mac = of_get_mac_address(np); plat->interface = of_get_phy_mode(np); - plat->phy_node = np; + + /* Some wrapper drivers still rely on phy_node. Let's save it while + * they are not converted to phylink. */ + plat->phy_node = of_parse_phandle(np, "phy-handle", 0); + + /* PHYLINK automatically parses the phy-handle property */ + plat->phylink_node = np; /* Get max speed of operation from device tree */ if (of_property_read_u32(np, "max-speed", &plat->max_speed)) @@ -577,6 +583,7 @@ error_pclk_get: void stmmac_remove_config_dt(struct platform_device *pdev, struct plat_stmmacenet_data *plat) { + of_node_put(plat->phy_node); of_node_put(plat->mdio_node); } #else diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h index 816edb545592..a3c2d9945bcf 100644 --- a/include/linux/stmmac.h +++ b/include/linux/stmmac.h @@ -151,6 +151,7 @@ struct plat_stmmacenet_data { int interface; struct stmmac_mdio_bus_data *mdio_bus_data; struct device_node *phy_node; + struct device_node *phylink_node; struct device_node *mdio_node; struct stmmac_dma_cfg *dma_cfg; int clk_csr; |