summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnant Gole <anantgole@ti.com>2008-08-08 14:05:00 +0530
committerKevin Hilman <khilman@deeprootsystems.com>2008-08-11 16:22:58 -0700
commit947d70c6d6c744201f3c563c0756b51cdd079dee (patch)
tree233fd40d11fbe61b2405aaebbeb198b969a4a7a1
parent1cd51cca73338cd208fda49e3eb56fd22e8e8c67 (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.c14
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);