提交 6cc7aaed 编写于 作者: B Bruce Allan 提交者: Jeff Kirsher

e1000e: do not toggle LANPHYPC value bit when PHY reset is blocked

When PHY reset is intentionally blocked on 82577/8/9, do not toggle the
LANPHYPC value bit (essentially performing a hard power reset of the
device) otherwise the PHY can be put into an unknown state.

Cleanup whitespace in the same function.
Signed-off-by: NBruce Allan <bruce.w.allan@intel.com>
Tested-by: NJeff Pieper <jeffrey.e.pieper@intel.com>
Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
上级 1effb45c
...@@ -307,9 +307,9 @@ static s32 e1000_init_phy_params_pchlan(struct e1000_hw *hw) ...@@ -307,9 +307,9 @@ static s32 e1000_init_phy_params_pchlan(struct e1000_hw *hw)
* the interconnect to PCIe mode. * the interconnect to PCIe mode.
*/ */
fwsm = er32(FWSM); fwsm = er32(FWSM);
if (!(fwsm & E1000_ICH_FWSM_FW_VALID)) { if (!(fwsm & E1000_ICH_FWSM_FW_VALID) && !e1000_check_reset_block(hw)) {
ctrl = er32(CTRL); ctrl = er32(CTRL);
ctrl |= E1000_CTRL_LANPHYPC_OVERRIDE; ctrl |= E1000_CTRL_LANPHYPC_OVERRIDE;
ctrl &= ~E1000_CTRL_LANPHYPC_VALUE; ctrl &= ~E1000_CTRL_LANPHYPC_VALUE;
ew32(CTRL, ctrl); ew32(CTRL, ctrl);
udelay(10); udelay(10);
...@@ -336,7 +336,7 @@ static s32 e1000_init_phy_params_pchlan(struct e1000_hw *hw) ...@@ -336,7 +336,7 @@ static s32 e1000_init_phy_params_pchlan(struct e1000_hw *hw)
goto out; goto out;
/* Ungate automatic PHY configuration on non-managed 82579 */ /* Ungate automatic PHY configuration on non-managed 82579 */
if ((hw->mac.type == e1000_pch2lan) && if ((hw->mac.type == e1000_pch2lan) &&
!(fwsm & E1000_ICH_FWSM_FW_VALID)) { !(fwsm & E1000_ICH_FWSM_FW_VALID)) {
msleep(10); msleep(10);
e1000_gate_hw_phy_config_ich8lan(hw, false); e1000_gate_hw_phy_config_ich8lan(hw, false);
...@@ -371,7 +371,7 @@ static s32 e1000_init_phy_params_pchlan(struct e1000_hw *hw) ...@@ -371,7 +371,7 @@ static s32 e1000_init_phy_params_pchlan(struct e1000_hw *hw)
case e1000_phy_82579: case e1000_phy_82579:
phy->ops.check_polarity = e1000_check_polarity_82577; phy->ops.check_polarity = e1000_check_polarity_82577;
phy->ops.force_speed_duplex = phy->ops.force_speed_duplex =
e1000_phy_force_speed_duplex_82577; e1000_phy_force_speed_duplex_82577;
phy->ops.get_cable_length = e1000_get_cable_length_82577; phy->ops.get_cable_length = e1000_get_cable_length_82577;
phy->ops.get_info = e1000_get_phy_info_82577; phy->ops.get_info = e1000_get_phy_info_82577;
phy->ops.commit = e1000e_phy_sw_reset; phy->ops.commit = e1000e_phy_sw_reset;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册