diff options
author | Bruce Allan <bruce.w.allan@intel.com> | 2010-05-05 18:00:27 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-05-06 04:31:28 -0400 |
commit | 627c8a041f7aaaea93c766f69bd61d952a277586 (patch) | |
tree | 4c8ae71ff723654c72bfd1617891b5d2493dc200 /drivers/net | |
parent | 6dfaa76994e5d49a82afb415bbe1362e901b2b95 (diff) |
e1000e: Reset 82577/82578 PHY before first PHY register read
Reset the PHY before first accessing it. Doing so, ensure that the PHY is
in a known good state before we read/write PHY registers. This fixes a
driver probe failure.
Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/e1000e/ich8lan.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/e1000e/ich8lan.c b/drivers/net/e1000e/ich8lan.c index 0bfef8e16a7b..b8c4dce01a04 100644 --- a/drivers/net/e1000e/ich8lan.c +++ b/drivers/net/e1000e/ich8lan.c | |||
@@ -294,6 +294,16 @@ static s32 e1000_init_phy_params_pchlan(struct e1000_hw *hw) | |||
294 | msleep(50); | 294 | msleep(50); |
295 | } | 295 | } |
296 | 296 | ||
297 | /* | ||
298 | * Reset the PHY before any acccess to it. Doing so, ensures that | ||
299 | * the PHY is in a known good state before we read/write PHY registers. | ||
300 | * The generic reset is sufficient here, because we haven't determined | ||
301 | * the PHY type yet. | ||
302 | */ | ||
303 | ret_val = e1000e_phy_hw_reset_generic(hw); | ||
304 | if (ret_val) | ||
305 | goto out; | ||
306 | |||
297 | phy->id = e1000_phy_unknown; | 307 | phy->id = e1000_phy_unknown; |
298 | ret_val = e1000e_get_phy_id(hw); | 308 | ret_val = e1000e_get_phy_id(hw); |
299 | if (ret_val) | 309 | if (ret_val) |