diff options
author | Anant Gole <anantgole@ti.com> | 2008-08-08 14:05:00 +0530 |
---|---|---|
committer | Kevin Hilman <khilman@deeprootsystems.com> | 2008-08-11 16:22:58 -0700 |
commit | 947d70c6d6c744201f3c563c0756b51cdd079dee (patch) | |
tree | 233fd40d11fbe61b2405aaebbeb198b969a4a7a1 | |
parent | 1cd51cca73338cd208fda49e3eb56fd22e8e8c67 (diff) |
NET: DaVinci EMAC: bug fix for speed/duplex settingv2.6.26-davinci1
The module parameters for speed and duplex were not being honoured
due to a coding bug resulting into auto negotiation all the time.
Signed-off-by: Anant Gole <anantgole@ti.com>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
-rw-r--r-- | drivers/net/davinci_emac.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c index 12f03ca93fda..dfbe7bded6fe 100644 --- a/drivers/net/davinci_emac.c +++ b/drivers/net/davinci_emac.c @@ -894,7 +894,7 @@ static void emac_set_phymode(struct emac_priv *priv) priv->speed = EMAC_SPEED_AUTO; priv->duplex = EMAC_DUPLEX_UNKNOWN; phy_mode = NWAY_AUTO_ALL; - } else if (EMAC_SPEED_10MBPS == priv->speed) { + } else if (EMAC_SPEED_10MBPS == cfg_link_speed) { /* Check if bus speed allows 10mbps */ if (priv->mdio.mdio_bus_frequency <= EMAC_MIN_FREQUENCY_FOR_10MBPS) { @@ -906,14 +906,14 @@ static void emac_set_phymode(struct emac_priv *priv) } } priv->speed = EMAC_SPEED_10MBPS; - if (EMAC_DUPLEX_HALF == priv->duplex) { + if (EMAC_DUPLEX_HALF == cfg_link_duplex) { phy_mode = NWAY_HD10; priv->duplex = EMAC_DUPLEX_HALF; } else { phy_mode = NWAY_FD10; priv->duplex = EMAC_DUPLEX_FULL; } - } else if (EMAC_SPEED_100MBPS == priv->speed) { + } else if (EMAC_SPEED_100MBPS == cfg_link_speed) { if (priv->mdio.mdio_bus_frequency <= EMAC_MIN_FREQUENCY_FOR_100MBPS) { if (netif_msg_drv(priv)) { @@ -925,17 +925,21 @@ static void emac_set_phymode(struct emac_priv *priv) } } priv->speed = EMAC_SPEED_100MBPS; - if (EMAC_DUPLEX_HALF == priv->duplex) { + if (EMAC_DUPLEX_HALF == cfg_link_duplex) { phy_mode = NWAY_HD100; priv->duplex = EMAC_DUPLEX_HALF; } else { phy_mode = NWAY_FD100; priv->duplex = EMAC_DUPLEX_FULL; } - } else if (EMAC_SPEED_1GBPS == priv->speed) { + } else if (EMAC_SPEED_1GBPS == cfg_link_speed) { phy_mode = NWAY_AUTO_ALL; /* Temporarily */ + priv->speed = EMAC_SPEED_AUTO; + priv->duplex = EMAC_DUPLEX_UNKNOWN; } else { phy_mode = NWAY_AUTO_ALL; /* Fall back if wrong params set */ + priv->speed = EMAC_SPEED_AUTO; + priv->duplex = EMAC_DUPLEX_UNKNOWN; } emac_mdio_set_phy_mode(phy_mode); emac_update_phystatus(priv); |