diff options
author | Joursoir <chat@joursoir.net> | 2024-02-25 14:35:00 +0300 |
---|---|---|
committer | Joursoir <chat@joursoir.net> | 2024-02-29 17:59:54 +0300 |
commit | 4dbd389269168d99445450eb5a423b85acc2b0e4 (patch) | |
tree | a159dfcca10ca6afe7bac6afde3672957cd7172d /src | |
parent | 73a17263fcee89fbd473f928ebdb56a1fb26a3cb (diff) | |
download | e1000e-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>
Diffstat (limited to 'src')
-rw-r--r-- | src/ich8lan.c | 9 |
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) { |