From e1abd092fb1e75931e37147152b274e0d3e6e655 Mon Sep 17 00:00:00 2001 From: Michael Sit Wei Hong Date: Mon, 13 Mar 2023 16:01:35 +0800 Subject: [PATCH] net: stmmac: move fixed-link support fixup code xpcs_an_inband value is updated in the speed_mode_2500 function which turns on the xpcs_an_inband mode. Moving the fixed-link fixup code to right before phylink setup to ensure no more fixup will affect the fixed-link mode configurations. Fixes: 72edaf39fc65 ("stmmac: intel: add phy-mode and fixed-link ACPI _DSD setting support") Signed-off-by: Michael Sit Wei Hong --- drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c | 11 ----------- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c index 7deb1f817dacc5..d02db2b529b97b 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c @@ -592,17 +592,6 @@ static int intel_mgbe_common_data(struct pci_dev *pdev, plat->mdio_bus_data->xpcs_an_inband = true; } - /* For fixed-link setup, we clear xpcs_an_inband */ - if (fwnode) { - struct fwnode_handle *fixed_node; - - fixed_node = fwnode_get_named_child_node(fwnode, "fixed-link"); - if (fixed_node) - plat->mdio_bus_data->xpcs_an_inband = false; - - fwnode_handle_put(fixed_node); - } - /* Ensure mdio bus scan skips intel serdes and pcs-xpcs */ plat->mdio_bus_data->phy_mask = 1 << INTEL_MGBE_ADHOC_ADDR; plat->mdio_bus_data->phy_mask |= 1 << INTEL_MGBE_XPCS_ADDR; diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 398adcd68ee8d1..5a9abafba49088 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -7064,6 +7064,7 @@ int stmmac_dvr_probe(struct device *device, struct stmmac_resources *res) { struct net_device *ndev = NULL; + struct fwnode_handle *fwnode; struct stmmac_priv *priv; u32 rxq; int i, ret = 0; @@ -7306,6 +7307,20 @@ int stmmac_dvr_probe(struct device *device, goto error_xpcs_setup; } + /* For fixed-link setup, we clear xpcs_an_inband */ + if (!fwnode) + fwnode = dev_fwnode(priv->device); + + if (fwnode) { + struct fwnode_handle *fixed_node; + + fixed_node = fwnode_get_named_child_node(fwnode, "fixed-link"); + if (fixed_node) + priv->plat->mdio_bus_data->xpcs_an_inband = false; + + fwnode_handle_put(fixed_node); + } + ret = stmmac_phy_setup(priv); if (ret) { netdev_err(ndev, "failed to setup phy (%d)\n", ret);