Commit f7bff228 authored by Romain Gantois's avatar Romain Gantois Committed by Jakub Kicinski

net: stmmac: Support a generic PCS field in mac_device_info

Global stmmac support for early initialization of PCS devices requires a
generic PCS reference that can be passed to phylink_pcs_pre_init().
Currently, the mac_device_info struct contains only one PCS field, which is
specific to the Lynx model.

As PCS models are hardware-specific, it is more appropriate to have a
generic PCS field in the mac_device_info struct.

Refactor the lynx_pcs field into a generic phylink_pcs field.
Signed-off-by: default avatarRomain Gantois <romain.gantois@bootlin.com>
Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/20240326-rxc_bugfix-v6-4-24a74e5c761f@bootlin.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 10658e99
...@@ -593,7 +593,7 @@ struct mac_device_info { ...@@ -593,7 +593,7 @@ struct mac_device_info {
const struct stmmac_mmc_ops *mmc; const struct stmmac_mmc_ops *mmc;
const struct stmmac_est_ops *est; const struct stmmac_est_ops *est;
struct dw_xpcs *xpcs; struct dw_xpcs *xpcs;
struct phylink_pcs *lynx_pcs; /* Lynx external PCS */ struct phylink_pcs *phylink_pcs;
struct mii_regs mii; /* MII register Addresses */ struct mii_regs mii; /* MII register Addresses */
struct mac_link link; struct mac_link link;
void __iomem *pcsr; /* vpointer to device CSRs */ void __iomem *pcsr; /* vpointer to device CSRs */
......
...@@ -479,9 +479,9 @@ static int socfpga_dwmac_probe(struct platform_device *pdev) ...@@ -479,9 +479,9 @@ static int socfpga_dwmac_probe(struct platform_device *pdev)
goto err_dvr_remove; goto err_dvr_remove;
} }
stpriv->hw->lynx_pcs = lynx_pcs_create_mdiodev(pcs_bus, 0); stpriv->hw->phylink_pcs = lynx_pcs_create_mdiodev(pcs_bus, 0);
if (IS_ERR(stpriv->hw->lynx_pcs)) { if (IS_ERR(stpriv->hw->phylink_pcs)) {
ret = PTR_ERR(stpriv->hw->lynx_pcs); ret = PTR_ERR(stpriv->hw->phylink_pcs);
goto err_dvr_remove; goto err_dvr_remove;
} }
} }
...@@ -498,7 +498,7 @@ static void socfpga_dwmac_remove(struct platform_device *pdev) ...@@ -498,7 +498,7 @@ static void socfpga_dwmac_remove(struct platform_device *pdev)
{ {
struct net_device *ndev = platform_get_drvdata(pdev); struct net_device *ndev = platform_get_drvdata(pdev);
struct stmmac_priv *priv = netdev_priv(ndev); struct stmmac_priv *priv = netdev_priv(ndev);
struct phylink_pcs *pcs = priv->hw->lynx_pcs; struct phylink_pcs *pcs = priv->hw->phylink_pcs;
stmmac_pltfr_remove(pdev); stmmac_pltfr_remove(pdev);
......
...@@ -944,10 +944,7 @@ static struct phylink_pcs *stmmac_mac_select_pcs(struct phylink_config *config, ...@@ -944,10 +944,7 @@ static struct phylink_pcs *stmmac_mac_select_pcs(struct phylink_config *config,
if (priv->hw->xpcs) if (priv->hw->xpcs)
return &priv->hw->xpcs->pcs; return &priv->hw->xpcs->pcs;
if (priv->hw->lynx_pcs) return priv->hw->phylink_pcs;
return priv->hw->lynx_pcs;
return NULL;
} }
static void stmmac_mac_config(struct phylink_config *config, unsigned int mode, static void stmmac_mac_config(struct phylink_config *config, unsigned int mode,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment