|
@@ -245,6 +245,17 @@ static s32 igb_init_phy_params_82575(struct e1000_hw *hw)
|
|
|
hw->bus.func = (rd32(E1000_STATUS) & E1000_STATUS_FUNC_MASK) >>
|
|
hw->bus.func = (rd32(E1000_STATUS) & E1000_STATUS_FUNC_MASK) >>
|
|
|
E1000_STATUS_FUNC_SHIFT;
|
|
E1000_STATUS_FUNC_SHIFT;
|
|
|
|
|
|
|
|
|
|
+ /* Make sure the PHY is in a good state. Several people have reported
|
|
|
|
|
+ * firmware leaving the PHY's page select register set to something
|
|
|
|
|
+ * other than the default of zero, which causes the PHY ID read to
|
|
|
|
|
+ * access something other than the intended register.
|
|
|
|
|
+ */
|
|
|
|
|
+ ret_val = hw->phy.ops.reset(hw);
|
|
|
|
|
+ if (ret_val) {
|
|
|
|
|
+ hw_dbg("Error resetting the PHY.\n");
|
|
|
|
|
+ goto out;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/* Set phy->phy_addr and phy->id. */
|
|
/* Set phy->phy_addr and phy->id. */
|
|
|
ret_val = igb_get_phy_id_82575(hw);
|
|
ret_val = igb_get_phy_id_82575(hw);
|
|
|
if (ret_val)
|
|
if (ret_val)
|