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: Romain Gantois <romain.gantois@bootlin.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Link: https://lore.kernel.org/r/20240326-rxc_bugfix-v6-4-24a74e5c761f@bootlin.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
10658e99d9
commit
f7bff228a6
@ -593,7 +593,7 @@ struct mac_device_info {
|
||||
const struct stmmac_mmc_ops *mmc;
|
||||
const struct stmmac_est_ops *est;
|
||||
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 mac_link link;
|
||||
void __iomem *pcsr; /* vpointer to device CSRs */
|
||||
|
@ -479,9 +479,9 @@ static int socfpga_dwmac_probe(struct platform_device *pdev)
|
||||
goto err_dvr_remove;
|
||||
}
|
||||
|
||||
stpriv->hw->lynx_pcs = lynx_pcs_create_mdiodev(pcs_bus, 0);
|
||||
if (IS_ERR(stpriv->hw->lynx_pcs)) {
|
||||
ret = PTR_ERR(stpriv->hw->lynx_pcs);
|
||||
stpriv->hw->phylink_pcs = lynx_pcs_create_mdiodev(pcs_bus, 0);
|
||||
if (IS_ERR(stpriv->hw->phylink_pcs)) {
|
||||
ret = PTR_ERR(stpriv->hw->phylink_pcs);
|
||||
goto err_dvr_remove;
|
||||
}
|
||||
}
|
||||
@ -498,7 +498,7 @@ static void socfpga_dwmac_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct net_device *ndev = platform_get_drvdata(pdev);
|
||||
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);
|
||||
|
||||
|
@ -944,10 +944,7 @@ static struct phylink_pcs *stmmac_mac_select_pcs(struct phylink_config *config,
|
||||
if (priv->hw->xpcs)
|
||||
return &priv->hw->xpcs->pcs;
|
||||
|
||||
if (priv->hw->lynx_pcs)
|
||||
return priv->hw->lynx_pcs;
|
||||
|
||||
return NULL;
|
||||
return priv->hw->phylink_pcs;
|
||||
}
|
||||
|
||||
static void stmmac_mac_config(struct phylink_config *config, unsigned int mode,
|
||||
|
Loading…
x
Reference in New Issue
Block a user