forked from Minki/linux
e1000: fix VR powerdown code
On ich systems during PHY power down to D3, the voltage regulators were left on. Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
2ce9047f5d
commit
070f6ffbb8
@ -3942,14 +3942,15 @@ e1000_phy_powerdown_workaround(struct e1000_hw *hw)
|
||||
E1000_WRITE_REG(hw, PHY_CTRL, reg | E1000_PHY_CTRL_GBE_DISABLE |
|
||||
E1000_PHY_CTRL_NOND0A_GBE_DISABLE);
|
||||
|
||||
/* Write VR power-down enable */
|
||||
/* Write VR power-down enable - bits 9:8 should be 10b */
|
||||
e1000_read_phy_reg(hw, IGP3_VR_CTRL, &phy_data);
|
||||
e1000_write_phy_reg(hw, IGP3_VR_CTRL, phy_data |
|
||||
IGP3_VR_CTRL_MODE_SHUT);
|
||||
phy_data |= (1 << 9);
|
||||
phy_data &= ~(1 << 8);
|
||||
e1000_write_phy_reg(hw, IGP3_VR_CTRL, phy_data);
|
||||
|
||||
/* Read it back and test */
|
||||
e1000_read_phy_reg(hw, IGP3_VR_CTRL, &phy_data);
|
||||
if ((phy_data & IGP3_VR_CTRL_MODE_SHUT) || retry)
|
||||
if (((phy_data & IGP3_VR_CTRL_MODE_MASK) == IGP3_VR_CTRL_MODE_SHUT) || retry)
|
||||
break;
|
||||
|
||||
/* Issue PHY reset and repeat at most one more time */
|
||||
|
@ -3173,6 +3173,7 @@ struct e1000_host_command_info {
|
||||
#define IGP3_VR_CTRL \
|
||||
PHY_REG(776, 18) /* Voltage regulator control register */
|
||||
#define IGP3_VR_CTRL_MODE_SHUT 0x0200 /* Enter powerdown, shutdown VRs */
|
||||
#define IGP3_VR_CTRL_MODE_MASK 0x0300 /* Shutdown VR Mask */
|
||||
|
||||
#define IGP3_CAPABILITY \
|
||||
PHY_REG(776, 19) /* IGP3 Capability Register */
|
||||
|
Loading…
Reference in New Issue
Block a user