From: Wenzhuo Lu <wenzhuo.lu@intel.com>
To: dev@dpdk.org
Cc: Wenzhuo Lu <wenzhuo.lu@intel.com>
Subject: [PATCH 10/16] e1000/base: workaround for ULP entry flow
Date: Wed, 23 Nov 2016 12:22:54 -0500 [thread overview]
Message-ID: <1479921780-9813-11-git-send-email-wenzhuo.lu@intel.com> (raw)
In-Reply-To: <1479921780-9813-1-git-send-email-wenzhuo.lu@intel.com>
For i217 revision 6, when entering Ultra Low Power (ULP)
we need to enable Low Power Link Up (LPLU) and disable Gig
speed to make it work.
Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
---
drivers/net/e1000/base/e1000_ich8lan.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/drivers/net/e1000/base/e1000_ich8lan.c b/drivers/net/e1000/base/e1000_ich8lan.c
index 0ac982c..0837a40 100644
--- a/drivers/net/e1000/base/e1000_ich8lan.c
+++ b/drivers/net/e1000/base/e1000_ich8lan.c
@@ -1068,6 +1068,7 @@ s32 e1000_enable_ulp_lpt_lp(struct e1000_hw *hw, bool to_sx)
u32 mac_reg;
s32 ret_val = E1000_SUCCESS;
u16 phy_reg;
+ u16 oem_reg = 0;
if ((hw->mac.type < e1000_pch_lpt) ||
(hw->device_id == E1000_DEV_ID_PCH_LPT_I217_LM) ||
@@ -1128,6 +1129,25 @@ s32 e1000_enable_ulp_lpt_lp(struct e1000_hw *hw, bool to_sx)
mac_reg |= E1000_CTRL_EXT_FORCE_SMBUS;
E1000_WRITE_REG(hw, E1000_CTRL_EXT, mac_reg);
+ /* Si workaround for ULP entry flow on i127/rev6 h/w. Enable
+ * LPLU and disable Gig speed when entering ULP
+ */
+ if ((hw->phy.type == e1000_phy_i217) && (hw->phy.revision == 6)) {
+ ret_val = e1000_read_phy_reg_hv_locked(hw, HV_OEM_BITS,
+ &oem_reg);
+ if (ret_val)
+ goto release;
+
+ phy_reg = oem_reg;
+ phy_reg |= HV_OEM_BITS_LPLU | HV_OEM_BITS_GBE_DIS;
+
+ ret_val = e1000_write_phy_reg_hv_locked(hw, HV_OEM_BITS,
+ phy_reg);
+
+ if (ret_val)
+ goto release;
+ }
+
skip_smbus:
if (!to_sx) {
/* Change the 'Link Status Change' interrupt to trigger
@@ -1184,6 +1204,14 @@ skip_smbus:
E1000_WRITE_REG(hw, E1000_TCTL, mac_reg);
}
+ if ((hw->phy.type == e1000_phy_i217) && (hw->phy.revision == 6) &&
+ to_sx && (E1000_READ_REG(hw, E1000_STATUS) & E1000_STATUS_LU)) {
+ ret_val = e1000_write_phy_reg_hv_locked(hw, HV_OEM_BITS,
+ oem_reg);
+ if (ret_val)
+ goto release;
+ }
+
release:
hw->phy.ops.release(hw);
out:
@@ -1401,6 +1429,8 @@ out:
}
#endif /* ULP_SUPPORT */
+
+
/**
* e1000_check_for_copper_link_ich8lan - Check for link (Copper)
* @hw: pointer to the HW structure
--
1.9.3
next prev parent reply other threads:[~2016-11-24 1:32 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-23 17:22 [PATCH 00/16] e1000 base code update Wenzhuo Lu
2016-11-23 17:22 ` [PATCH 01/16] e1000/base: increased ULP timer Wenzhuo Lu
2016-11-23 17:22 ` [PATCH 02/16] e1000/base: increase PHY PLL clock gate timing Wenzhuo Lu
2016-11-23 17:22 ` [PATCH 03/16] e1000/base: try more times to get HW mailbox lock Wenzhuo Lu
2016-11-23 17:22 ` [PATCH 04/16] e1000/base: add getting HW version support for i354 Wenzhuo Lu
2016-11-23 17:22 ` [PATCH 05/16] e1000/base: expose e1000_write_vfta_i350 Wenzhuo Lu
2016-11-23 17:22 ` [PATCH 06/16] e1000/base: add max RX jumbo frame define Wenzhuo Lu
2016-11-23 17:22 ` [PATCH 07/16] e1000/base: restore link speed after ULP exit Wenzhuo Lu
2016-11-23 17:22 ` [PATCH 08/16] e1000/base: clear ULP configuration register on " Wenzhuo Lu
2016-11-23 17:22 ` [PATCH 09/16] e1000/base: increase LANPHYPC low duration Wenzhuo Lu
2016-11-23 17:22 ` Wenzhuo Lu [this message]
2016-11-23 17:22 ` [PATCH 11/16] e1000/base: enable new i219 devices Wenzhuo Lu
2016-11-23 17:22 ` [PATCH 12/16] e1000/base: always request clock during K1 at 1G link speed Wenzhuo Lu
2016-11-23 17:22 ` [PATCH 13/16] e1000/base: ability to force K1-off disabled Wenzhuo Lu
2016-11-23 17:22 ` [PATCH 14/16] e1000/base: support more i219 devices Wenzhuo Lu
2016-11-23 17:22 ` [PATCH 15/16] e1000/base: update readme Wenzhuo Lu
2016-11-23 17:23 ` [PATCH 16/16] e1000: add new i219 devices Wenzhuo Lu
2016-11-25 12:54 ` [PATCH 00/16] e1000 base code update Ferruh Yigit
2016-11-28 1:15 ` Lu, Wenzhuo
2016-11-25 12:58 ` Ferruh Yigit
2016-11-28 1:16 ` Lu, Wenzhuo
2016-11-28 11:33 ` Thomas Monjalon
2016-11-29 0:30 ` Lu, Wenzhuo
2016-11-29 9:28 ` Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1479921780-9813-11-git-send-email-wenzhuo.lu@intel.com \
--to=wenzhuo.lu@intel.com \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.