aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/tg3.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/tg3.c')
-rw-r--r--drivers/net/tg3.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index a43ef2b3a530..003ab53cf613 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -2149,6 +2149,26 @@ static void tg3_power_down_phy(struct tg3 *tp, bool do_low_power)
2149 tw32_f(GRC_MISC_CFG, val | GRC_MISC_CFG_EPHY_IDDQ); 2149 tw32_f(GRC_MISC_CFG, val | GRC_MISC_CFG_EPHY_IDDQ);
2150 udelay(40); 2150 udelay(40);
2151 return; 2151 return;
2152 } else if (tp->tg3_flags3 & TG3_FLG3_PHY_IS_FET) {
2153 u32 phytest;
2154 if (!tg3_readphy(tp, MII_TG3_FET_TEST, &phytest)) {
2155 u32 phy;
2156
2157 tg3_writephy(tp, MII_ADVERTISE, 0);
2158 tg3_writephy(tp, MII_BMCR,
2159 BMCR_ANENABLE | BMCR_ANRESTART);
2160
2161 tg3_writephy(tp, MII_TG3_FET_TEST,
2162 phytest | MII_TG3_FET_SHADOW_EN);
2163 if (!tg3_readphy(tp, MII_TG3_FET_SHDW_AUXMODE4, &phy)) {
2164 phy |= MII_TG3_FET_SHDW_AUXMODE4_SBPD;
2165 tg3_writephy(tp,
2166 MII_TG3_FET_SHDW_AUXMODE4,
2167 phy);
2168 }
2169 tg3_writephy(tp, MII_TG3_FET_TEST, phytest);
2170 }
2171 return;
2152 } else if (do_low_power) { 2172 } else if (do_low_power) {
2153 tg3_writephy(tp, MII_TG3_EXT_CTRL, 2173 tg3_writephy(tp, MII_TG3_EXT_CTRL,
2154 MII_TG3_EXT_CTRL_FORCE_LED_OFF); 2174 MII_TG3_EXT_CTRL_FORCE_LED_OFF);