diff options
author | LABBE Corentin <clabbe.montjoie@gmail.com> | 2017-05-24 09:16:47 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-05-25 19:08:35 +0200 |
commit | ca84dfb9ab70849c2b01f30d658a8900cff9889d (patch) | |
tree | f93b8455ab7626c43d9e266ade6bf907fa733045 /drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | |
parent | net-next: stmmac: Convert old_link to bool (diff) | |
download | linux-ca84dfb9ab70849c2b01f30d658a8900cff9889d.tar.xz linux-ca84dfb9ab70849c2b01f30d658a8900cff9889d.zip |
net-next: stmmac: rework the speed selection
The current stmmac_adjust_link() part which handle speed have
some if (has_platform) code and my dwmac-sun8i will add more of them.
So we need to handle better speed selection.
Moreover the struct link member speed and port are hard to guess their
purpose. And their unique usage are to be combined for writing speed.
So this patch replace speed/port by simpler
speed10/speed100/speed1000/speed_mask variables.
In dwmac4_core_init and dwmac1000_core_init, port/speed value was used
directly without using the struct link. This patch convert also their
usage to speedxxx.
Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/stmicro/stmmac/stmmac_main.c')
-rw-r--r-- | drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 9ec138dc04f9..f158273eab9b 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -801,29 +801,16 @@ static void stmmac_adjust_link(struct net_device *dev) if (phydev->speed != priv->speed) { new_state = true; + ctrl &= ~priv->hw->link.speed_mask; switch (phydev->speed) { case SPEED_1000: - if (priv->plat->has_gmac || - priv->plat->has_gmac4) - ctrl &= ~priv->hw->link.port; + ctrl |= priv->hw->link.speed1000; break; case SPEED_100: - if (priv->plat->has_gmac || - priv->plat->has_gmac4) { - ctrl |= priv->hw->link.port; - ctrl |= priv->hw->link.speed; - } else { - ctrl &= ~priv->hw->link.port; - } + ctrl |= priv->hw->link.speed100; break; case SPEED_10: - if (priv->plat->has_gmac || - priv->plat->has_gmac4) { - ctrl |= priv->hw->link.port; - ctrl &= ~(priv->hw->link.speed); - } else { - ctrl &= ~priv->hw->link.port; - } + ctrl |= priv->hw->link.speed10; break; default: netif_warn(priv, link, priv->dev, |