mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-06 05:13:18 +00:00
net: stmmac: Power up SERDES after the PHY link
The Tegra MGBE ethernet controller requires that the SERDES link is powered-up after the PHY link is up, otherwise the link fails to become ready following a resume from suspend. Add a variable to indicate that the SERDES link must be powered-up after the PHY link. Signed-off-by: Revanth Kumar Uppala <ruppala@nvidia.com> Signed-off-by: Jon Hunter <jonathanh@nvidia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
32163491c0
commit
a46e901012
@ -988,6 +988,9 @@ static void stmmac_mac_link_up(struct phylink_config *config,
|
||||
struct stmmac_priv *priv = netdev_priv(to_net_dev(config->dev));
|
||||
u32 old_ctrl, ctrl;
|
||||
|
||||
if (priv->plat->serdes_up_after_phy_linkup && priv->plat->serdes_powerup)
|
||||
priv->plat->serdes_powerup(priv->dev, priv->plat->bsp_priv);
|
||||
|
||||
old_ctrl = readl(priv->ioaddr + MAC_CTRL_REG);
|
||||
ctrl = old_ctrl & ~priv->hw->link.speed_mask;
|
||||
|
||||
@ -3809,7 +3812,7 @@ static int __stmmac_open(struct net_device *dev,
|
||||
|
||||
stmmac_reset_queues_param(priv);
|
||||
|
||||
if (priv->plat->serdes_powerup) {
|
||||
if (!priv->plat->serdes_up_after_phy_linkup && priv->plat->serdes_powerup) {
|
||||
ret = priv->plat->serdes_powerup(dev, priv->plat->bsp_priv);
|
||||
if (ret < 0) {
|
||||
netdev_err(priv->dev, "%s: Serdes powerup failed\n",
|
||||
@ -7518,7 +7521,7 @@ int stmmac_resume(struct device *dev)
|
||||
stmmac_mdio_reset(priv->mii);
|
||||
}
|
||||
|
||||
if (priv->plat->serdes_powerup) {
|
||||
if (!priv->plat->serdes_up_after_phy_linkup && priv->plat->serdes_powerup) {
|
||||
ret = priv->plat->serdes_powerup(ndev,
|
||||
priv->plat->bsp_priv);
|
||||
|
||||
|
@ -271,5 +271,6 @@ struct plat_stmmacenet_data {
|
||||
int msi_tx_base_vec;
|
||||
bool use_phy_wol;
|
||||
bool sph_disable;
|
||||
bool serdes_up_after_phy_linkup;
|
||||
};
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user