]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
e1000e: Reset 82577/82578 PHY before first PHY register read
authorBruce Allan <bruce.w.allan@intel.com>
Wed, 5 May 2010 22:00:27 +0000 (22:00 +0000)
committerPaul Gortmaker <paul.gortmaker@windriver.com>
Wed, 14 Mar 2012 14:57:47 +0000 (10:57 -0400)
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>
drivers/net/e1000e/ich8lan.c

index 8b5e157e9c879e2cd0c7d4373ada56e31d0ce251..a6260122cc3f7dd072795dd61f0d229a884e48c6 100644 (file)
@@ -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)