aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoursoir <chat@joursoir.net>2024-02-25 14:35:00 +0300
committerJoursoir <chat@joursoir.net>2024-02-29 17:59:54 +0300
commit4dbd389269168d99445450eb5a423b85acc2b0e4 (patch)
treea159dfcca10ca6afe7bac6afde3672957cd7172d
parent73a17263fcee89fbd473f928ebdb56a1fb26a3cb (diff)
downloade1000e-4dbd389269168d99445450eb5a423b85acc2b0e4.tar.gz
e1000e-4dbd389269168d99445450eb5a423b85acc2b0e4.tar.bz2
e1000e-4dbd389269168d99445450eb5a423b85acc2b0e4.zip
ich8lan: reset the hardware if PHY init workarounds failed for 1st time
Hardware reset and re-initialization CAN fix the issue with failed initialization. Signed-off-by: Denis Turischev <denis.turischev@compulab.co.il> Signed-off-by: Joursoir <chat@joursoir.net>
-rw-r--r--src/ich8lan.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/ich8lan.c b/src/ich8lan.c
index 4a2342a..8586b67 100644
--- a/src/ich8lan.c
+++ b/src/ich8lan.c
@@ -89,6 +89,7 @@ static s32 e1000_set_lplu_state_pchlan(struct e1000_hw *hw, bool active);
static s32 e1000_id_led_init_pchlan(struct e1000_hw *hw);
static s32 e1000_disable_ulp_lpt_lp(struct e1000_hw *hw, bool force);
static s32 e1000_setup_copper_link_pch_lpt(struct e1000_hw *hw);
+static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw);
static s32 e1000_cleanup_led_ich8lan(struct e1000_hw *hw);
static s32 e1000_led_on_ich8lan(struct e1000_hw *hw);
static s32 e1000_led_off_ich8lan(struct e1000_hw *hw);
@@ -429,8 +430,12 @@ static s32 e1000_init_phy_params_pchlan(struct e1000_hw *hw)
phy->id = e1000_phy_unknown;
ret_val = e1000_init_phy_workarounds_pchlan(hw);
- if (ret_val)
- return ret_val;
+ if (ret_val) {
+ e1000_reset_hw_ich8lan(hw);
+ ret_val = e1000_init_phy_workarounds_pchlan(hw);
+ if (ret_val)
+ return ret_val;
+ }
if (phy->id == e1000_phy_unknown)
switch (hw->mac.type) {