|
@@ -4605,14 +4605,23 @@ void e1000_suspend_workarounds_ich8lan(struct e1000_hw *hw)
|
|
|
|
|
|
/* Disable LPLU if both link partners support 100BaseT
|
|
/* Disable LPLU if both link partners support 100BaseT
|
|
* EEE and 100Full is advertised on both ends of the
|
|
* EEE and 100Full is advertised on both ends of the
|
|
- * link.
|
|
|
|
|
|
+ * link, and enable Auto Enable LPI since there will
|
|
|
|
+ * be no driver to enable LPI while in Sx.
|
|
*/
|
|
*/
|
|
if ((eee_advert & I82579_EEE_100_SUPPORTED) &&
|
|
if ((eee_advert & I82579_EEE_100_SUPPORTED) &&
|
|
(dev_spec->eee_lp_ability &
|
|
(dev_spec->eee_lp_ability &
|
|
I82579_EEE_100_SUPPORTED) &&
|
|
I82579_EEE_100_SUPPORTED) &&
|
|
- (hw->phy.autoneg_advertised & ADVERTISE_100_FULL))
|
|
|
|
|
|
+ (hw->phy.autoneg_advertised & ADVERTISE_100_FULL)) {
|
|
phy_ctrl &= ~(E1000_PHY_CTRL_D0A_LPLU |
|
|
phy_ctrl &= ~(E1000_PHY_CTRL_D0A_LPLU |
|
|
E1000_PHY_CTRL_NOND0A_LPLU);
|
|
E1000_PHY_CTRL_NOND0A_LPLU);
|
|
|
|
+
|
|
|
|
+ /* Set Auto Enable LPI after link up */
|
|
|
|
+ e1e_rphy_locked(hw,
|
|
|
|
+ I217_LPI_GPIO_CTRL, &phy_reg);
|
|
|
|
+ phy_reg |= I217_LPI_GPIO_CTRL_AUTO_EN_LPI;
|
|
|
|
+ e1e_wphy_locked(hw,
|
|
|
|
+ I217_LPI_GPIO_CTRL, phy_reg);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/* For i217 Intel Rapid Start Technology support,
|
|
/* For i217 Intel Rapid Start Technology support,
|
|
@@ -4709,6 +4718,11 @@ void e1000_resume_workarounds_pchlan(struct e1000_hw *hw)
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /* Clear Auto Enable LPI after link up */
|
|
|
|
+ e1e_rphy_locked(hw, I217_LPI_GPIO_CTRL, &phy_reg);
|
|
|
|
+ phy_reg &= ~I217_LPI_GPIO_CTRL_AUTO_EN_LPI;
|
|
|
|
+ e1e_wphy_locked(hw, I217_LPI_GPIO_CTRL, phy_reg);
|
|
|
|
+
|
|
if (!(er32(FWSM) & E1000_ICH_FWSM_FW_VALID)) {
|
|
if (!(er32(FWSM) & E1000_ICH_FWSM_FW_VALID)) {
|
|
/* Restore clear on SMB if no manageability engine
|
|
/* Restore clear on SMB if no manageability engine
|
|
* is present
|
|
* is present
|