Deleted Added
full compact
e1000_82541.c (169248) e1000_82541.c (169589)
1/*******************************************************************************
2
3 Copyright (c) 2001-2007, Intel Corporation
4 All rights reserved.
5
6 Redistribution and use in source and binary forms, with or without
7 modification, are permitted provided that the following conditions are met:
8

--- 16 unchanged lines hidden (view full) ---

25 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 POSSIBILITY OF SUCH DAMAGE.
31
32*******************************************************************************/
1/*******************************************************************************
2
3 Copyright (c) 2001-2007, Intel Corporation
4 All rights reserved.
5
6 Redistribution and use in source and binary forms, with or without
7 modification, are permitted provided that the following conditions are met:
8

--- 16 unchanged lines hidden (view full) ---

25 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 POSSIBILITY OF SUCH DAMAGE.
31
32*******************************************************************************/
33/*$FreeBSD: head/sys/dev/em/e1000_82541.c 169589 2007-05-16 00:14:23Z jfv $*/
33
34
34#include <sys/cdefs.h>
35__FBSDID("$FreeBSD: head/sys/dev/em/e1000_82541.c 169248 2007-05-04 13:30:44Z rwatson $");
36
35
37
38/* e1000_82541
39 * e1000_82547
40 * e1000_82541_rev_2
41 * e1000_82547_rev_2
42 */
43
36/* e1000_82541
37 * e1000_82547
38 * e1000_82541_rev_2
39 * e1000_82547_rev_2
40 */
41
42#include "e1000_api.h"
44#include "e1000_82541.h"
45
46void e1000_init_function_pointers_82541(struct e1000_hw *hw);
47
48STATIC s32 e1000_init_phy_params_82541(struct e1000_hw *hw);
49STATIC s32 e1000_init_nvm_params_82541(struct e1000_hw *hw);
50STATIC s32 e1000_init_mac_params_82541(struct e1000_hw *hw);
51STATIC s32 e1000_reset_hw_82541(struct e1000_hw *hw);

--- 31 unchanged lines hidden (view full) ---

83 e1000_dsp_config dsp_config;
84 e1000_ffe_config ffe_config;
85 u16 spd_default;
86 boolean_t phy_init_script;
87};
88
89/**
90 * e1000_init_phy_params_82541 - Init PHY func ptrs.
43#include "e1000_82541.h"
44
45void e1000_init_function_pointers_82541(struct e1000_hw *hw);
46
47STATIC s32 e1000_init_phy_params_82541(struct e1000_hw *hw);
48STATIC s32 e1000_init_nvm_params_82541(struct e1000_hw *hw);
49STATIC s32 e1000_init_mac_params_82541(struct e1000_hw *hw);
50STATIC s32 e1000_reset_hw_82541(struct e1000_hw *hw);

--- 31 unchanged lines hidden (view full) ---

82 e1000_dsp_config dsp_config;
83 e1000_ffe_config ffe_config;
84 u16 spd_default;
85 boolean_t phy_init_script;
86};
87
88/**
89 * e1000_init_phy_params_82541 - Init PHY func ptrs.
91 * @hw - pointer to the HW structure
90 * @hw: pointer to the HW structure
92 *
93 * This is a function pointer entry point called by the api module.
94 **/
95STATIC s32
96e1000_init_phy_params_82541(struct e1000_hw *hw)
97{
98 struct e1000_phy_info *phy = &hw->phy;
99 struct e1000_functions *func = &hw->func;

--- 28 unchanged lines hidden (view full) ---

128 }
129
130out:
131 return ret_val;
132}
133
134/**
135 * e1000_init_nvm_params_82541 - Init NVM func ptrs.
91 *
92 * This is a function pointer entry point called by the api module.
93 **/
94STATIC s32
95e1000_init_phy_params_82541(struct e1000_hw *hw)
96{
97 struct e1000_phy_info *phy = &hw->phy;
98 struct e1000_functions *func = &hw->func;

--- 28 unchanged lines hidden (view full) ---

127 }
128
129out:
130 return ret_val;
131}
132
133/**
134 * e1000_init_nvm_params_82541 - Init NVM func ptrs.
136 * @hw - pointer to the HW structure
135 * @hw: pointer to the HW structure
137 *
138 * This is a function pointer entry point called by the api module.
139 **/
140STATIC s32
141e1000_init_nvm_params_82541(struct e1000_hw *hw)
142{
143 struct e1000_nvm_info *nvm = &hw->nvm;
144 struct e1000_functions *func = &hw->func;

--- 81 unchanged lines hidden (view full) ---

226 }
227
228out:
229 return ret_val;
230}
231
232/**
233 * e1000_init_mac_params_82541 - Init MAC func ptrs.
136 *
137 * This is a function pointer entry point called by the api module.
138 **/
139STATIC s32
140e1000_init_nvm_params_82541(struct e1000_hw *hw)
141{
142 struct e1000_nvm_info *nvm = &hw->nvm;
143 struct e1000_functions *func = &hw->func;

--- 81 unchanged lines hidden (view full) ---

225 }
226
227out:
228 return ret_val;
229}
230
231/**
232 * e1000_init_mac_params_82541 - Init MAC func ptrs.
234 * @hw - pointer to the HW structure
233 * @hw: pointer to the HW structure
235 *
236 * This is a function pointer entry point called by the api module.
237 **/
238STATIC s32
239e1000_init_mac_params_82541(struct e1000_hw *hw)
240{
241 struct e1000_mac_info *mac = &hw->mac;
242 struct e1000_functions *func = &hw->func;

--- 51 unchanged lines hidden (view full) ---

294 /* Device-specific structure allocation */
295 ret_val = e1000_alloc_zeroed_dev_spec_struct(hw, hw->dev_spec_size);
296
297 return ret_val;
298}
299
300/**
301 * e1000_init_function_pointers_82541 - Init func ptrs.
234 *
235 * This is a function pointer entry point called by the api module.
236 **/
237STATIC s32
238e1000_init_mac_params_82541(struct e1000_hw *hw)
239{
240 struct e1000_mac_info *mac = &hw->mac;
241 struct e1000_functions *func = &hw->func;

--- 51 unchanged lines hidden (view full) ---

293 /* Device-specific structure allocation */
294 ret_val = e1000_alloc_zeroed_dev_spec_struct(hw, hw->dev_spec_size);
295
296 return ret_val;
297}
298
299/**
300 * e1000_init_function_pointers_82541 - Init func ptrs.
302 * @hw - pointer to the HW structure
301 * @hw: pointer to the HW structure
303 *
304 * The only function explicitly called by the api module to initialize
305 * all function pointers and parameters.
306 **/
307void
308e1000_init_function_pointers_82541(struct e1000_hw *hw)
309{
310 DEBUGFUNC("e1000_init_function_pointers_82541");
311
312 hw->func.init_mac_params = e1000_init_mac_params_82541;
313 hw->func.init_nvm_params = e1000_init_nvm_params_82541;
314 hw->func.init_phy_params = e1000_init_phy_params_82541;
315}
316
317/**
318 * e1000_reset_hw_82541 - Reset hardware
302 *
303 * The only function explicitly called by the api module to initialize
304 * all function pointers and parameters.
305 **/
306void
307e1000_init_function_pointers_82541(struct e1000_hw *hw)
308{
309 DEBUGFUNC("e1000_init_function_pointers_82541");
310
311 hw->func.init_mac_params = e1000_init_mac_params_82541;
312 hw->func.init_nvm_params = e1000_init_nvm_params_82541;
313 hw->func.init_phy_params = e1000_init_phy_params_82541;
314}
315
316/**
317 * e1000_reset_hw_82541 - Reset hardware
319 * @hw - pointer to the HW structure
318 * @hw: pointer to the HW structure
320 *
321 * This resets the hardware into a known state. This is a
322 * function pointer entry point called by the api module.
323 **/
324STATIC s32
325e1000_reset_hw_82541(struct e1000_hw *hw)
326{
327 u32 ledctl, ctrl, icr, manc;

--- 60 unchanged lines hidden (view full) ---

388 /* Clear any pending interrupt events. */
389 icr = E1000_READ_REG(hw, E1000_ICR);
390
391 return E1000_SUCCESS;
392}
393
394/**
395 * e1000_init_hw_82541 - Initialize hardware
319 *
320 * This resets the hardware into a known state. This is a
321 * function pointer entry point called by the api module.
322 **/
323STATIC s32
324e1000_reset_hw_82541(struct e1000_hw *hw)
325{
326 u32 ledctl, ctrl, icr, manc;

--- 60 unchanged lines hidden (view full) ---

387 /* Clear any pending interrupt events. */
388 icr = E1000_READ_REG(hw, E1000_ICR);
389
390 return E1000_SUCCESS;
391}
392
393/**
394 * e1000_init_hw_82541 - Initialize hardware
396 * @hw - pointer to the HW structure
395 * @hw: pointer to the HW structure
397 *
398 * This inits the hardware readying it for operation. This is a
399 * function pointer entry point called by the api module.
400 **/
401STATIC s32
402e1000_init_hw_82541(struct e1000_hw *hw)
403{
404 struct e1000_mac_info *mac = &hw->mac;

--- 44 unchanged lines hidden (view full) ---

449 e1000_clear_hw_cntrs_82541(hw);
450
451out:
452 return ret_val;
453}
454
455/**
456 * e1000_get_link_up_info_82541 - Report speed and duplex
396 *
397 * This inits the hardware readying it for operation. This is a
398 * function pointer entry point called by the api module.
399 **/
400STATIC s32
401e1000_init_hw_82541(struct e1000_hw *hw)
402{
403 struct e1000_mac_info *mac = &hw->mac;

--- 44 unchanged lines hidden (view full) ---

448 e1000_clear_hw_cntrs_82541(hw);
449
450out:
451 return ret_val;
452}
453
454/**
455 * e1000_get_link_up_info_82541 - Report speed and duplex
457 * @hw - pointer to the HW structure
458 * @speed - pointer to speed buffer
459 * @duplex - pointer to duplex buffer
456 * @hw: pointer to the HW structure
457 * @speed: pointer to speed buffer
458 * @duplex: pointer to duplex buffer
460 *
461 * Retrieve the current speed and duplex configuration.
462 * This is a function pointer entry point called by the api module.
463 **/
464STATIC s32
465e1000_get_link_up_info_82541(struct e1000_hw *hw, u16 *speed, u16 *duplex)
466{
467 struct e1000_phy_info *phy = &hw->phy;

--- 35 unchanged lines hidden (view full) ---

503 }
504
505out:
506 return ret_val;
507}
508
509/**
510 * e1000_phy_hw_reset_82541 - PHY hardware reset
459 *
460 * Retrieve the current speed and duplex configuration.
461 * This is a function pointer entry point called by the api module.
462 **/
463STATIC s32
464e1000_get_link_up_info_82541(struct e1000_hw *hw, u16 *speed, u16 *duplex)
465{
466 struct e1000_phy_info *phy = &hw->phy;

--- 35 unchanged lines hidden (view full) ---

502 }
503
504out:
505 return ret_val;
506}
507
508/**
509 * e1000_phy_hw_reset_82541 - PHY hardware reset
511 * @hw - pointer to the HW structure
510 * @hw: pointer to the HW structure
512 *
513 * Verify the reset block is not blocking us from resetting. Acquire
514 * semaphore (if necessary) and read/set/write the device control reset
515 * bit in the PHY. Wait the appropriate delay time for the device to
516 * reset and relase the semaphore (if necessary).
517 * This is a function pointer entry point called by the api module.
518 **/
519STATIC s32

--- 19 unchanged lines hidden (view full) ---

539 }
540
541out:
542 return ret_val;
543}
544
545/**
546 * e1000_setup_copper_link_82541 - Configure copper link settings
511 *
512 * Verify the reset block is not blocking us from resetting. Acquire
513 * semaphore (if necessary) and read/set/write the device control reset
514 * bit in the PHY. Wait the appropriate delay time for the device to
515 * reset and relase the semaphore (if necessary).
516 * This is a function pointer entry point called by the api module.
517 **/
518STATIC s32

--- 19 unchanged lines hidden (view full) ---

538 }
539
540out:
541 return ret_val;
542}
543
544/**
545 * e1000_setup_copper_link_82541 - Configure copper link settings
547 * @hw - pointer to the HW structure
546 * @hw: pointer to the HW structure
548 *
549 * Calls the appropriate function to configure the link for auto-neg or forced
550 * speed and duplex. Then we check for link, once link is established calls
551 * to configure collision distance and flow control are called. If link is
552 * not established, we return -E1000_ERR_PHY (-2). This is a function
553 * pointer entry point called by the api module.
554 **/
555STATIC s32

--- 40 unchanged lines hidden (view full) ---

596 ret_val = e1000_setup_copper_link_generic(hw);
597
598out:
599 return ret_val;
600}
601
602/**
603 * e1000_check_for_link_82541 - Check/Store link connection
547 *
548 * Calls the appropriate function to configure the link for auto-neg or forced
549 * speed and duplex. Then we check for link, once link is established calls
550 * to configure collision distance and flow control are called. If link is
551 * not established, we return -E1000_ERR_PHY (-2). This is a function
552 * pointer entry point called by the api module.
553 **/
554STATIC s32

--- 40 unchanged lines hidden (view full) ---

595 ret_val = e1000_setup_copper_link_generic(hw);
596
597out:
598 return ret_val;
599}
600
601/**
602 * e1000_check_for_link_82541 - Check/Store link connection
604 * @hw - pointer to the HW structure
603 * @hw: pointer to the HW structure
605 *
606 * This checks the link condition of the adapter and stores the
607 * results in the hw->mac structure. This is a function pointer entry
608 * point called by the api module.
609 **/
610STATIC s32
611e1000_check_for_link_82541(struct e1000_hw *hw)
612{

--- 59 unchanged lines hidden (view full) ---

672 }
673
674out:
675 return ret_val;
676}
677
678/**
679 * e1000_config_dsp_after_link_change_82541 - Config DSP after link
604 *
605 * This checks the link condition of the adapter and stores the
606 * results in the hw->mac structure. This is a function pointer entry
607 * point called by the api module.
608 **/
609STATIC s32
610e1000_check_for_link_82541(struct e1000_hw *hw)
611{

--- 59 unchanged lines hidden (view full) ---

671 }
672
673out:
674 return ret_val;
675}
676
677/**
678 * e1000_config_dsp_after_link_change_82541 - Config DSP after link
680 * @hw - pointer to the HW structure
681 * @link_up - boolean flag for link up status
679 * @hw: pointer to the HW structure
680 * @link_up: boolean flag for link up status
682 *
683 * Return E1000_ERR_PHY when failing to read/write the PHY, else E1000_SUCCESS
684 * at any other case.
685 *
686 * 82541_rev_2 & 82547_rev_2 have the capability to configure the DSP when a
687 * gigabit link is achieved to improve link quality.
688 * This is a function pointer entry point called by the api module.
689 **/

--- 193 unchanged lines hidden (view full) ---

883 }
884
885out:
886 return ret_val;
887}
888
889/**
890 * e1000_get_cable_length_igp_82541 - Determine cable length for igp PHY
681 *
682 * Return E1000_ERR_PHY when failing to read/write the PHY, else E1000_SUCCESS
683 * at any other case.
684 *
685 * 82541_rev_2 & 82547_rev_2 have the capability to configure the DSP when a
686 * gigabit link is achieved to improve link quality.
687 * This is a function pointer entry point called by the api module.
688 **/

--- 193 unchanged lines hidden (view full) ---

882 }
883
884out:
885 return ret_val;
886}
887
888/**
889 * e1000_get_cable_length_igp_82541 - Determine cable length for igp PHY
891 * @hw - pointer to the HW structure
890 * @hw: pointer to the HW structure
892 *
893 * The automatic gain control (agc) normalizes the amplitude of the
894 * received signal, adjusting for the attenuation produced by the
895 * cable. By reading the AGC registers, which reperesent the
896 * cobination of course and fine gain value, the value can be put
897 * into a lookup table to obtain the approximate cable length
898 * for each channel. This is a function pointer entry point called by the
899 * api module.

--- 56 unchanged lines hidden (view full) ---

956 phy->cable_length = (phy->min_cable_length + phy->max_cable_length) / 2;
957
958out:
959 return ret_val;
960}
961
962/**
963 * e1000_set_d3_lplu_state_82541 - Sets low power link up state for D3
891 *
892 * The automatic gain control (agc) normalizes the amplitude of the
893 * received signal, adjusting for the attenuation produced by the
894 * cable. By reading the AGC registers, which reperesent the
895 * cobination of course and fine gain value, the value can be put
896 * into a lookup table to obtain the approximate cable length
897 * for each channel. This is a function pointer entry point called by the
898 * api module.

--- 56 unchanged lines hidden (view full) ---

955 phy->cable_length = (phy->min_cable_length + phy->max_cable_length) / 2;
956
957out:
958 return ret_val;
959}
960
961/**
962 * e1000_set_d3_lplu_state_82541 - Sets low power link up state for D3
964 * @hw - pointer to the HW structure
965 * @active boolean used to enable/disable lplu
963 * @hw: pointer to the HW structure
964 * @active: boolean used to enable/disable lplu
966 *
967 * Success returns 0, Failure returns 1
968 *
969 * The low power link up (lplu) state is set to the power management level D3
970 * and SmartSpeed is disabled when active is true, else clear lplu for D3
971 * and enable Smartspeed. LPLU and Smartspeed are mutually exclusive. LPLU
972 * is used during Dx states where the power conservation is most important.
973 * During driver activity, SmartSpeed should be enabled so performance is

--- 82 unchanged lines hidden (view full) ---

1056 }
1057
1058out:
1059 return ret_val;
1060}
1061
1062/**
1063 * e1000_setup_led_82541 - Configures SW controllable LED
965 *
966 * Success returns 0, Failure returns 1
967 *
968 * The low power link up (lplu) state is set to the power management level D3
969 * and SmartSpeed is disabled when active is true, else clear lplu for D3
970 * and enable Smartspeed. LPLU and Smartspeed are mutually exclusive. LPLU
971 * is used during Dx states where the power conservation is most important.
972 * During driver activity, SmartSpeed should be enabled so performance is

--- 82 unchanged lines hidden (view full) ---

1055 }
1056
1057out:
1058 return ret_val;
1059}
1060
1061/**
1062 * e1000_setup_led_82541 - Configures SW controllable LED
1064 * @hw - pointer to the HW structure
1063 * @hw: pointer to the HW structure
1065 *
1066 * This prepares the SW controllable LED for use and saves the current state
1067 * of the LED so it can be later restored. This is a function pointer entry
1068 * point called by the api module.
1069 **/
1070STATIC s32
1071e1000_setup_led_82541(struct e1000_hw *hw)
1072{

--- 20 unchanged lines hidden (view full) ---

1093 E1000_WRITE_REG(hw, E1000_LEDCTL, hw->mac.ledctl_mode1);
1094
1095out:
1096 return ret_val;
1097}
1098
1099/**
1100 * e1000_cleanup_led_82541 - Set LED config to default operation
1064 *
1065 * This prepares the SW controllable LED for use and saves the current state
1066 * of the LED so it can be later restored. This is a function pointer entry
1067 * point called by the api module.
1068 **/
1069STATIC s32
1070e1000_setup_led_82541(struct e1000_hw *hw)
1071{

--- 20 unchanged lines hidden (view full) ---

1092 E1000_WRITE_REG(hw, E1000_LEDCTL, hw->mac.ledctl_mode1);
1093
1094out:
1095 return ret_val;
1096}
1097
1098/**
1099 * e1000_cleanup_led_82541 - Set LED config to default operation
1101 * @hw - pointer to the HW structure
1100 * @hw: pointer to the HW structure
1102 *
1103 * Remove the current LED configuration and set the LED configuration
1104 * to the default value, saved from the EEPROM. This is a function pointer
1105 * entry point called by the api module.
1106 **/
1107STATIC s32
1108e1000_cleanup_led_82541(struct e1000_hw *hw)
1109{

--- 13 unchanged lines hidden (view full) ---

1123 E1000_WRITE_REG(hw, E1000_LEDCTL, hw->mac.ledctl_default);
1124
1125out:
1126 return ret_val;
1127}
1128
1129/**
1130 * e1000_phy_init_script_82541 - Initialize GbE PHY
1101 *
1102 * Remove the current LED configuration and set the LED configuration
1103 * to the default value, saved from the EEPROM. This is a function pointer
1104 * entry point called by the api module.
1105 **/
1106STATIC s32
1107e1000_cleanup_led_82541(struct e1000_hw *hw)
1108{

--- 13 unchanged lines hidden (view full) ---

1122 E1000_WRITE_REG(hw, E1000_LEDCTL, hw->mac.ledctl_default);
1123
1124out:
1125 return ret_val;
1126}
1127
1128/**
1129 * e1000_phy_init_script_82541 - Initialize GbE PHY
1131 * @hw - pointer to the HW structure
1130 * @hw: pointer to the HW structure
1132 *
1133 * Initializes the IGP PHY.
1134 **/
1135static s32
1136e1000_phy_init_script_82541(struct e1000_hw *hw)
1137{
1138 struct e1000_dev_spec_82541 *dev_spec;
1139 u32 ret_val;

--- 97 unchanged lines hidden (view full) ---

1237 }
1238
1239out:
1240 return ret_val;
1241}
1242
1243/**
1244 * e1000_init_script_state_82541 - Enable/Disable PHY init script
1131 *
1132 * Initializes the IGP PHY.
1133 **/
1134static s32
1135e1000_phy_init_script_82541(struct e1000_hw *hw)
1136{
1137 struct e1000_dev_spec_82541 *dev_spec;
1138 u32 ret_val;

--- 97 unchanged lines hidden (view full) ---

1236 }
1237
1238out:
1239 return ret_val;
1240}
1241
1242/**
1243 * e1000_init_script_state_82541 - Enable/Disable PHY init script
1245 * @hw - pointer to the HW structure
1246 * @state - boolean value used to enable/disable PHY init script
1244 * @hw: pointer to the HW structure
1245 * @state: boolean value used to enable/disable PHY init script
1247 *
1248 * Allows the driver to enable/disable the PHY init script, if the PHY is an
1249 * IGP PHY. This is a function pointer entry point called by the api module.
1250 **/
1251void
1252e1000_init_script_state_82541(struct e1000_hw *hw, boolean_t state)
1253{
1254 struct e1000_dev_spec_82541 *dev_spec;

--- 15 unchanged lines hidden (view full) ---

1270 dev_spec->phy_init_script = state;
1271
1272out:
1273 return;
1274}
1275
1276/**
1277 * e1000_clear_hw_cntrs_82541 - Clear device specific hardware counters
1246 *
1247 * Allows the driver to enable/disable the PHY init script, if the PHY is an
1248 * IGP PHY. This is a function pointer entry point called by the api module.
1249 **/
1250void
1251e1000_init_script_state_82541(struct e1000_hw *hw, boolean_t state)
1252{
1253 struct e1000_dev_spec_82541 *dev_spec;

--- 15 unchanged lines hidden (view full) ---

1269 dev_spec->phy_init_script = state;
1270
1271out:
1272 return;
1273}
1274
1275/**
1276 * e1000_clear_hw_cntrs_82541 - Clear device specific hardware counters
1278 * @hw - pointer to the HW structure
1277 * @hw: pointer to the HW structure
1279 *
1280 * Clears the hardware counters by reading the counter registers.
1281 **/
1282STATIC void
1283e1000_clear_hw_cntrs_82541(struct e1000_hw *hw)
1284{
1285 volatile u32 temp;
1286

--- 28 unchanged lines hidden ---
1278 *
1279 * Clears the hardware counters by reading the counter registers.
1280 **/
1281STATIC void
1282e1000_clear_hw_cntrs_82541(struct e1000_hw *hw)
1283{
1284 volatile u32 temp;
1285

--- 28 unchanged lines hidden ---