mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-14 22:44:27 +08:00
igb: Support to enable EEE on all eee_supported devices
Current implementation enables EEE on only i350 device. This patch enables EEE on all eee_supported devices. Also, configured LPI clock to keep running before EEE is enabled on i210 and i211 devices. Signed-off-by: Akeem G. Abodunrin <akeem.g.abodunrin@intel.com> Tested-by: Jeff Pieper <jeffrey.e.pieper@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
ae1c07a6b7
commit
e5461112d9
@ -2223,11 +2223,10 @@ out:
|
||||
s32 igb_set_eee_i350(struct e1000_hw *hw)
|
||||
{
|
||||
s32 ret_val = 0;
|
||||
u32 ipcnfg, eeer, ctrl_ext;
|
||||
u32 ipcnfg, eeer;
|
||||
|
||||
ctrl_ext = rd32(E1000_CTRL_EXT);
|
||||
if ((hw->mac.type != e1000_i350) ||
|
||||
(ctrl_ext & E1000_CTRL_EXT_LINK_MODE_MASK))
|
||||
if ((hw->mac.type < e1000_i350) ||
|
||||
(hw->phy.media_type != e1000_media_type_copper))
|
||||
goto out;
|
||||
ipcnfg = rd32(E1000_IPCNFG);
|
||||
eeer = rd32(E1000_EEER);
|
||||
@ -2240,6 +2239,14 @@ s32 igb_set_eee_i350(struct e1000_hw *hw)
|
||||
E1000_EEER_RX_LPI_EN |
|
||||
E1000_EEER_LPI_FC);
|
||||
|
||||
/* keep the LPI clock running before EEE is enabled */
|
||||
if (hw->mac.type == e1000_i210 || hw->mac.type == e1000_i211) {
|
||||
u32 eee_su;
|
||||
eee_su = rd32(E1000_EEE_SU);
|
||||
eee_su &= ~E1000_EEE_SU_LPI_CLK_STP;
|
||||
wr32(E1000_EEE_SU, eee_su);
|
||||
}
|
||||
|
||||
} else {
|
||||
ipcnfg &= ~(E1000_IPCNFG_EEE_1G_AN |
|
||||
E1000_IPCNFG_EEE_100M_AN);
|
||||
@ -2249,6 +2256,8 @@ s32 igb_set_eee_i350(struct e1000_hw *hw)
|
||||
}
|
||||
wr32(E1000_IPCNFG, ipcnfg);
|
||||
wr32(E1000_EEER, eeer);
|
||||
rd32(E1000_IPCNFG);
|
||||
rd32(E1000_EEER);
|
||||
out:
|
||||
|
||||
return ret_val;
|
||||
|
@ -857,8 +857,9 @@
|
||||
#define E1000_IPCNFG_EEE_100M_AN 0x00000004 /* EEE Enable 100M AN */
|
||||
#define E1000_EEER_TX_LPI_EN 0x00010000 /* EEE Tx LPI Enable */
|
||||
#define E1000_EEER_RX_LPI_EN 0x00020000 /* EEE Rx LPI Enable */
|
||||
#define E1000_EEER_FRC_AN 0x10000000 /* Enable EEE in loopback */
|
||||
#define E1000_EEER_FRC_AN 0x10000000 /* Enable EEE in loopback */
|
||||
#define E1000_EEER_LPI_FC 0x00040000 /* EEE Enable on FC */
|
||||
#define E1000_EEE_SU_LPI_CLK_STP 0X00800000 /* EEE LPI Clock Stop */
|
||||
|
||||
/* SerDes Control */
|
||||
#define E1000_GEN_CTL_READY 0x80000000
|
||||
|
@ -349,6 +349,7 @@
|
||||
/* Energy Efficient Ethernet "EEE" register */
|
||||
#define E1000_IPCNFG 0x0E38 /* Internal PHY Configuration */
|
||||
#define E1000_EEER 0x0E30 /* Energy Efficient Ethernet */
|
||||
#define E1000_EEE_SU 0X0E34 /* EEE Setup */
|
||||
|
||||
/* Thermal Sensor Register */
|
||||
#define E1000_THSTAT 0x08110 /* Thermal Sensor Status */
|
||||
|
Loading…
Reference in New Issue
Block a user