| From 51b7c3f472acf7f15b58c44bb912ec658d54721a Mon Sep 17 00:00:00 2001 |
| From: Bruce Allan <bruce.w.allan@intel.com> |
| Date: Wed, 5 May 2010 22:00:27 +0000 |
| Subject: [PATCH] e1000e: Reset 82577/82578 PHY before first PHY register read |
| |
| commit 627c8a041f7aaaea93c766f69bd61d952a277586 upstream. |
| |
| 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> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/e1000e/ich8lan.c b/drivers/net/e1000e/ich8lan.c |
| index 8b5e157..a626012 100644 |
| --- a/drivers/net/e1000e/ich8lan.c |
| +++ b/drivers/net/e1000e/ich8lan.c |
| @@ -274,6 +274,16 @@ static s32 e1000_init_phy_params_pchlan(struct e1000_hw *hw) |
| phy->ops.power_down = e1000_power_down_phy_copper_ich8lan; |
| phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT; |
| |
| + /* |
| + * Reset the PHY before any acccess to it. Doing so, ensures that |
| + * the PHY is in a known good state before we read/write PHY registers. |
| + * The generic reset is sufficient here, because we haven't determined |
| + * the PHY type yet. |
| + */ |
| + ret_val = e1000e_phy_hw_reset_generic(hw); |
| + if (ret_val) |
| + goto out; |
| + |
| phy->id = e1000_phy_unknown; |
| ret_val = e1000e_get_phy_id(hw); |
| if (ret_val) |
| -- |
| 1.7.7 |
| |