diff options
author | Bruce Allan <bruce.w.allan@intel.com> | 2011-12-15 19:46:38 -0500 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2012-01-26 21:26:43 -0500 |
commit | c077a9065b8d4612e4d55bd53c3563ca10d5c944 (patch) | |
tree | 15cc4bdb597ce2e7817269682250982a88bbd6d9 /drivers/net/ethernet/intel/e1000e/ich8lan.c | |
parent | 90b82984a4ce689d7b1d7132e50bc61ac6f8b74f (diff) |
e1000e: ICHx/PCHx LOMs should use LPLU setting in NVM when going to Sx
When going to Sx with an ICHx/PCH device, the default Low Power Link Up
(LPLU, a.k.a. reverse auto-negotiation) behavior should be whatever is set
in the NVM. However, the function e1000_suspend_workarounds_ich8lan()
called when going to Sx always enabled LPLU in all power states.
Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/e1000e/ich8lan.c')
-rw-r--r-- | drivers/net/ethernet/intel/e1000e/ich8lan.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c index 50a61fcf75cc..00b5e34fcfad 100644 --- a/drivers/net/ethernet/intel/e1000e/ich8lan.c +++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c | |||
@@ -3698,9 +3698,10 @@ void e1000e_gig_downshift_workaround_ich8lan(struct e1000_hw *hw) | |||
3698 | * | 3698 | * |
3699 | * During S0 to Sx transition, it is possible the link remains at gig | 3699 | * During S0 to Sx transition, it is possible the link remains at gig |
3700 | * instead of negotiating to a lower speed. Before going to Sx, set | 3700 | * instead of negotiating to a lower speed. Before going to Sx, set |
3701 | * 'LPLU Enabled' and 'Gig Disable' to force link speed negotiation | 3701 | * 'Gig Disable' to force link speed negotiation to a lower speed based on |
3702 | * to a lower speed. For PCH and newer parts, the OEM bits PHY register | 3702 | * the LPLU setting in the NVM or custom setting. For PCH and newer parts, |
3703 | * (LED, GbE disable and LPLU configurations) also needs to be written. | 3703 | * the OEM bits PHY register (LED, GbE disable and LPLU configurations) also |
3704 | * needs to be written. | ||
3704 | **/ | 3705 | **/ |
3705 | void e1000_suspend_workarounds_ich8lan(struct e1000_hw *hw) | 3706 | void e1000_suspend_workarounds_ich8lan(struct e1000_hw *hw) |
3706 | { | 3707 | { |
@@ -3708,7 +3709,7 @@ void e1000_suspend_workarounds_ich8lan(struct e1000_hw *hw) | |||
3708 | s32 ret_val; | 3709 | s32 ret_val; |
3709 | 3710 | ||
3710 | phy_ctrl = er32(PHY_CTRL); | 3711 | phy_ctrl = er32(PHY_CTRL); |
3711 | phy_ctrl |= E1000_PHY_CTRL_D0A_LPLU | E1000_PHY_CTRL_GBE_DISABLE; | 3712 | phy_ctrl |= E1000_PHY_CTRL_GBE_DISABLE; |
3712 | ew32(PHY_CTRL, phy_ctrl); | 3713 | ew32(PHY_CTRL, phy_ctrl); |
3713 | 3714 | ||
3714 | if (hw->mac.type == e1000_ich8lan) | 3715 | if (hw->mac.type == e1000_ich8lan) |