FreeBSD kernel E1000 device code
e1000_82542.c
Go to the documentation of this file.
1/******************************************************************************
2 SPDX-License-Identifier: BSD-3-Clause
3
4 Copyright (c) 2001-2020, Intel Corporation
5 All rights reserved.
6
7 Redistribution and use in source and binary forms, with or without
8 modification, are permitted provided that the following conditions are met:
9
10 1. Redistributions of source code must retain the above copyright notice,
11 this list of conditions and the following disclaimer.
12
13 2. Redistributions in binary form must reproduce the above copyright
14 notice, this list of conditions and the following disclaimer in the
15 documentation and/or other materials provided with the distribution.
16
17 3. Neither the name of the Intel Corporation nor the names of its
18 contributors may be used to endorse or promote products derived from
19 this software without specific prior written permission.
20
21 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 POSSIBILITY OF SUCH DAMAGE.
32
33******************************************************************************/
34/*$FreeBSD$*/
35
36/*
37 * 82542 Gigabit Ethernet Controller
38 */
39
40#include "e1000_api.h"
41
45static s32 e1000_get_bus_info_82542(struct e1000_hw *hw);
46static s32 e1000_reset_hw_82542(struct e1000_hw *hw);
47static s32 e1000_init_hw_82542(struct e1000_hw *hw);
48static s32 e1000_setup_link_82542(struct e1000_hw *hw);
49static s32 e1000_led_on_82542(struct e1000_hw *hw);
50static s32 e1000_led_off_82542(struct e1000_hw *hw);
51static int e1000_rar_set_82542(struct e1000_hw *hw, u8 *addr, u32 index);
52static void e1000_clear_hw_cntrs_82542(struct e1000_hw *hw);
53static s32 e1000_read_mac_addr_82542(struct e1000_hw *hw);
54
60{
61 struct e1000_phy_info *phy = &hw->phy;
62 s32 ret_val = E1000_SUCCESS;
63
64 DEBUGFUNC("e1000_init_phy_params_82542");
65
66 phy->type = e1000_phy_none;
67
68 return ret_val;
69}
70
76{
77 struct e1000_nvm_info *nvm = &hw->nvm;
78
79 DEBUGFUNC("e1000_init_nvm_params_82542");
80
81 nvm->address_bits = 6;
82 nvm->delay_usec = 50;
83 nvm->opcode_bits = 3;
85 nvm->word_size = 64;
86
87 /* Function Pointers */
93
94 return E1000_SUCCESS;
95}
96
102{
103 struct e1000_mac_info *mac = &hw->mac;
104
105 DEBUGFUNC("e1000_init_mac_params_82542");
106
107 /* Set media type */
109
110 /* Set mta register count */
111 mac->mta_reg_count = 128;
112 /* Set rar entry count */
114
115 /* Function pointers */
116
117 /* bus type/speed/width */
119 /* function id */
121 /* reset */
123 /* hw initialization */
125 /* link setup */
127 /* phy/fiber/serdes setup */
130 /* check for link */
132 /* multicast address update */
134 /* writing VFTA */
136 /* clearing VFTA */
138 /* read mac address */
140 /* set RAR */
142 /* turn on/off LED */
145 /* clear hardware counters */
147 /* link info */
148 mac->ops.get_link_up_info =
150
151 return E1000_SUCCESS;
152}
153
161{
162 DEBUGFUNC("e1000_init_function_pointers_82542");
163
167}
168
177{
178 DEBUGFUNC("e1000_get_bus_info_82542");
179
183
184 return E1000_SUCCESS;
185}
186
194{
195 struct e1000_bus_info *bus = &hw->bus;
196 s32 ret_val = E1000_SUCCESS;
197 u32 ctrl;
198
199 DEBUGFUNC("e1000_reset_hw_82542");
200
201 if (hw->revision_id == E1000_REVISION_2) {
202 DEBUGOUT("Disabling MWI on 82542 rev 2\n");
204 }
205
206 DEBUGOUT("Masking off all interrupts\n");
207 E1000_WRITE_REG(hw, E1000_IMC, 0xffffffff);
208
212
213 /*
214 * Delay to allow any outstanding PCI transactions to complete before
215 * resetting the device
216 */
217 msec_delay(10);
218
219 ctrl = E1000_READ_REG(hw, E1000_CTRL);
220
221 DEBUGOUT("Issuing a global reset to 82542/82543 MAC\n");
223
224 hw->nvm.ops.reload(hw);
225 msec_delay(2);
226
227 E1000_WRITE_REG(hw, E1000_IMC, 0xffffffff);
229
230 if (hw->revision_id == E1000_REVISION_2) {
233 }
234
235 return ret_val;
236}
237
245{
246 struct e1000_mac_info *mac = &hw->mac;
247 struct e1000_dev_spec_82542 *dev_spec = &hw->dev_spec._82542;
248 s32 ret_val = E1000_SUCCESS;
249 u32 ctrl;
250 u16 i;
251
252 DEBUGFUNC("e1000_init_hw_82542");
253
254 /* Disabling VLAN filtering */
256 mac->ops.clear_vfta(hw);
257
258 /* For 82542 (rev 2.0), disable MWI and put the receiver into reset */
259 if (hw->revision_id == E1000_REVISION_2) {
260 DEBUGOUT("Disabling MWI on 82542 rev 2.0\n");
264 msec_delay(5);
265 }
266
267 /* Setup the receive address. */
269
270 /* For 82542 (rev 2.0), take the receiver out of reset and enable MWI */
271 if (hw->revision_id == E1000_REVISION_2) {
274 msec_delay(1);
277 }
278
279 /* Zero out the Multicast HASH table */
280 DEBUGOUT("Zeroing the MTA\n");
281 for (i = 0; i < mac->mta_reg_count; i++)
283
284 /*
285 * Set the PCI priority bit correctly in the CTRL register. This
286 * determines if the adapter gives priority to receives, or if it
287 * gives equal priority to transmits and receives.
288 */
289 if (dev_spec->dma_fairness) {
290 ctrl = E1000_READ_REG(hw, E1000_CTRL);
292 }
293
294 /* Setup link and flow control */
295 ret_val = e1000_setup_link_82542(hw);
296
297 /*
298 * Clear all of the statistics registers (clear on read). It is
299 * important that we do this after we have tried to establish link
300 * because the symbol error count will increment wildly if there
301 * is no link.
302 */
304
305 return ret_val;
306}
307
319{
320 struct e1000_mac_info *mac = &hw->mac;
321 s32 ret_val;
322
323 DEBUGFUNC("e1000_setup_link_82542");
324
325 ret_val = e1000_set_default_fc_generic(hw);
326 if (ret_val)
327 goto out;
328
329 hw->fc.requested_mode &= ~e1000_fc_tx_pause;
330
331 if (mac->report_tx_early)
332 hw->fc.requested_mode &= ~e1000_fc_rx_pause;
333
334 /*
335 * Save off the requested flow control mode for use later. Depending
336 * on the link partner's capabilities, we may or may not use this mode.
337 */
339
340 DEBUGOUT1("After fix-ups FlowControl is now = %x\n",
341 hw->fc.current_mode);
342
343 /* Call the necessary subroutine to configure the link. */
344 ret_val = mac->ops.setup_physical_interface(hw);
345 if (ret_val)
346 goto out;
347
348 /*
349 * Initialize the flow control address, type, and PAUSE timer
350 * registers to their default values. This is done even if flow
351 * control is disabled, because it does not hurt anything to
352 * initialize these registers.
353 */
354 DEBUGOUT("Initializing Flow Control address, type and timer regs\n");
355
359
361
363
364out:
365 return ret_val;
366}
367
375{
376 u32 ctrl = E1000_READ_REG(hw, E1000_CTRL);
377
378 DEBUGFUNC("e1000_led_on_82542");
379
380 ctrl |= E1000_CTRL_SWDPIN0;
381 ctrl |= E1000_CTRL_SWDPIO0;
382 E1000_WRITE_REG(hw, E1000_CTRL, ctrl);
383
384 return E1000_SUCCESS;
385}
386
394{
395 u32 ctrl = E1000_READ_REG(hw, E1000_CTRL);
396
397 DEBUGFUNC("e1000_led_off_82542");
398
399 ctrl &= ~E1000_CTRL_SWDPIN0;
400 ctrl |= E1000_CTRL_SWDPIO0;
401 E1000_WRITE_REG(hw, E1000_CTRL, ctrl);
402
403 return E1000_SUCCESS;
404}
405
415static int e1000_rar_set_82542(struct e1000_hw *hw, u8 *addr, u32 index)
416{
417 u32 rar_low, rar_high;
418
419 DEBUGFUNC("e1000_rar_set_82542");
420
421 /*
422 * HW expects these in little endian so we reverse the byte order
423 * from network order (big endian) to little endian
424 */
425 rar_low = ((u32) addr[0] | ((u32) addr[1] << 8) |
426 ((u32) addr[2] << 16) | ((u32) addr[3] << 24));
427
428 rar_high = ((u32) addr[4] | ((u32) addr[5] << 8));
429
430 /* If MAC address zero, no need to set the AV bit */
431 if (rar_low || rar_high)
432 rar_high |= E1000_RAH_AV;
433
434 E1000_WRITE_REG_ARRAY(hw, E1000_RA, (index << 1), rar_low);
435 E1000_WRITE_REG_ARRAY(hw, E1000_RA, ((index << 1) + 1), rar_high);
436
437 return E1000_SUCCESS;
438}
439
450{
451 /*
452 * Some of the 82542 registers are located at different
453 * offsets than they are in newer adapters.
454 * Despite the difference in location, the registers
455 * function in the same manner.
456 */
457 switch (reg) {
458 case E1000_RA:
459 reg = 0x00040;
460 break;
461 case E1000_RDTR:
462 reg = 0x00108;
463 break;
464 case E1000_RDBAL(0):
465 reg = 0x00110;
466 break;
467 case E1000_RDBAH(0):
468 reg = 0x00114;
469 break;
470 case E1000_RDLEN(0):
471 reg = 0x00118;
472 break;
473 case E1000_RDH(0):
474 reg = 0x00120;
475 break;
476 case E1000_RDT(0):
477 reg = 0x00128;
478 break;
479 case E1000_RDBAL(1):
480 reg = 0x00138;
481 break;
482 case E1000_RDBAH(1):
483 reg = 0x0013C;
484 break;
485 case E1000_RDLEN(1):
486 reg = 0x00140;
487 break;
488 case E1000_RDH(1):
489 reg = 0x00148;
490 break;
491 case E1000_RDT(1):
492 reg = 0x00150;
493 break;
494 case E1000_FCRTH:
495 reg = 0x00160;
496 break;
497 case E1000_FCRTL:
498 reg = 0x00168;
499 break;
500 case E1000_MTA:
501 reg = 0x00200;
502 break;
503 case E1000_TDBAL(0):
504 reg = 0x00420;
505 break;
506 case E1000_TDBAH(0):
507 reg = 0x00424;
508 break;
509 case E1000_TDLEN(0):
510 reg = 0x00428;
511 break;
512 case E1000_TDH(0):
513 reg = 0x00430;
514 break;
515 case E1000_TDT(0):
516 reg = 0x00438;
517 break;
518 case E1000_TIDV:
519 reg = 0x00440;
520 break;
521 case E1000_VFTA:
522 reg = 0x00600;
523 break;
524 case E1000_TDFH:
525 reg = 0x08010;
526 break;
527 case E1000_TDFT:
528 reg = 0x08018;
529 break;
530 default:
531 break;
532 }
533
534 return reg;
535}
536
544{
545 DEBUGFUNC("e1000_clear_hw_cntrs_82542");
546
548
561}
562
570{
571 s32 ret_val = E1000_SUCCESS;
572 u16 offset, nvm_data, i;
573
574 DEBUGFUNC("e1000_read_mac_addr");
575
576 for (i = 0; i < ETHER_ADDR_LEN; i += 2) {
577 offset = i >> 1;
578 ret_val = hw->nvm.ops.read(hw, offset, 1, &nvm_data);
579 if (ret_val) {
580 DEBUGOUT("NVM Read Error\n");
581 goto out;
582 }
583 hw->mac.perm_addr[i] = (u8)(nvm_data & 0xFF);
584 hw->mac.perm_addr[i+1] = (u8)(nvm_data >> 8);
585 }
586
587 for (i = 0; i < ETHER_ADDR_LEN; i++)
588 hw->mac.addr[i] = hw->mac.perm_addr[i];
589
590out:
591 return ret_val;
592}
static s32 e1000_get_bus_info_82542(struct e1000_hw *hw)
Definition: e1000_82542.c:176
static s32 e1000_init_phy_params_82542(struct e1000_hw *hw)
Definition: e1000_82542.c:59
static s32 e1000_read_mac_addr_82542(struct e1000_hw *hw)
Definition: e1000_82542.c:569
static s32 e1000_setup_link_82542(struct e1000_hw *hw)
Definition: e1000_82542.c:318
static s32 e1000_reset_hw_82542(struct e1000_hw *hw)
Definition: e1000_82542.c:193
static s32 e1000_init_mac_params_82542(struct e1000_hw *hw)
Definition: e1000_82542.c:101
static void e1000_clear_hw_cntrs_82542(struct e1000_hw *hw)
Definition: e1000_82542.c:543
static s32 e1000_led_on_82542(struct e1000_hw *hw)
Definition: e1000_82542.c:374
static int e1000_rar_set_82542(struct e1000_hw *hw, u8 *addr, u32 index)
Definition: e1000_82542.c:415
static s32 e1000_init_nvm_params_82542(struct e1000_hw *hw)
Definition: e1000_82542.c:75
static s32 e1000_init_hw_82542(struct e1000_hw *hw)
Definition: e1000_82542.c:244
u32 e1000_translate_register_82542(u32 reg)
Definition: e1000_82542.c:449
static s32 e1000_led_off_82542(struct e1000_hw *hw)
Definition: e1000_82542.c:393
void e1000_init_function_pointers_82542(struct e1000_hw *hw)
Definition: e1000_82542.c:160
#define E1000_RCTL_RST
#define E1000_CTRL_PRIOR
#define FLOW_CONTROL_ADDRESS_LOW
#define FLOW_CONTROL_ADDRESS_HIGH
#define E1000_TCTL_PSP
#define FLOW_CONTROL_TYPE
#define E1000_CTRL_RST
#define E1000_CTRL_SWDPIO0
#define E1000_RAR_ENTRIES
#define E1000_CTRL_SWDPIN0
#define E1000_SUCCESS
#define E1000_RAH_AV
@ e1000_phy_none
Definition: e1000_hw.h:309
void e1000_pci_set_mwi(struct e1000_hw *hw)
Definition: e1000_osdep.c:57
@ e1000_bus_width_unknown
Definition: e1000_hw.h:347
@ e1000_bus_type_pci
Definition: e1000_hw.h:328
@ e1000_bus_speed_unknown
Definition: e1000_hw.h:335
#define E1000_REVISION_2
Definition: e1000_hw.h:224
@ e1000_media_type_fiber
Definition: e1000_hw.h:284
@ e1000_nvm_eeprom_microwire
Definition: e1000_hw.h:293
void e1000_pci_clear_mwi(struct e1000_hw *hw)
Definition: e1000_osdep.c:64
s32 e1000_set_fc_watermarks_generic(struct e1000_hw *hw)
Definition: e1000_mac.c:1258
void e1000_set_lan_id_multi_port_pci(struct e1000_hw *hw)
Definition: e1000_mac.c:304
void e1000_clear_hw_cntrs_base_generic(struct e1000_hw *hw)
Definition: e1000_mac.c:666
void e1000_update_mc_addr_list_generic(struct e1000_hw *hw, u8 *mc_addr_list, u32 mc_addr_count)
Definition: e1000_mac.c:595
s32 e1000_setup_fiber_serdes_link_generic(struct e1000_hw *hw)
Definition: e1000_mac.c:1184
void e1000_clear_vfta_generic(struct e1000_hw *hw)
Definition: e1000_mac.c:340
s32 e1000_check_for_fiber_link_generic(struct e1000_hw *hw)
Definition: e1000_mac.c:782
void e1000_init_rx_addrs_generic(struct e1000_hw *hw, u16 rar_count)
Definition: e1000_mac.c:378
void e1000_write_vfta_generic(struct e1000_hw *hw, u32 offset, u32 value)
Definition: e1000_mac.c:361
s32 e1000_get_speed_and_duplex_fiber_serdes_generic(struct e1000_hw E1000_UNUSEDARG *hw, u16 *speed, u16 *duplex)
Definition: e1000_mac.c:1706
s32 e1000_set_default_fc_generic(struct e1000_hw *hw)
Definition: e1000_mac.c:955
void e1000_stop_nvm(struct e1000_hw *hw)
Definition: e1000_nvm.c:344
s32 e1000_update_nvm_checksum_generic(struct e1000_hw *hw)
Definition: e1000_nvm.c:1235
s32 e1000_read_nvm_microwire(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
Definition: e1000_nvm.c:508
s32 e1000_write_nvm_microwire(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
Definition: e1000_nvm.c:691
s32 e1000_validate_nvm_checksum_generic(struct e1000_hw *hw)
Definition: e1000_nvm.c:1202
#define DEBUGOUT1(...)
Definition: e1000_osdep.h:111
#define msec_delay(x)
Definition: e1000_osdep.h:103
#define CMD_MEM_WRT_INVALIDATE
Definition: e1000_osdep.h:118
#define E1000_WRITE_REG_ARRAY(hw, reg, index, value)
Definition: e1000_osdep.h:206
uint8_t u8
Definition: e1000_osdep.h:124
#define DEBUGFUNC(F)
Definition: e1000_osdep.h:115
#define E1000_WRITE_FLUSH(a)
Definition: e1000_osdep.h:177
#define E1000_WRITE_REG(hw, reg, value)
Definition: e1000_osdep.h:196
uint16_t u16
Definition: e1000_osdep.h:123
#define DEBUGOUT(...)
Definition: e1000_osdep.h:109
#define E1000_READ_REG(hw, reg)
Definition: e1000_osdep.h:191
int32_t s32
Definition: e1000_osdep.h:126
uint32_t u32
Definition: e1000_osdep.h:122
#define E1000_TDBAL(_n)
Definition: e1000_regs.h:265
#define E1000_PTC1522
Definition: e1000_regs.h:379
#define E1000_TDH(_n)
Definition: e1000_regs.h:271
#define E1000_FCTTV
Definition: e1000_regs.h:90
#define E1000_PTC255
Definition: e1000_regs.h:376
#define E1000_RDLEN(_n)
Definition: e1000_regs.h:250
#define E1000_PTC127
Definition: e1000_regs.h:375
#define E1000_TDT(_n)
Definition: e1000_regs.h:276
#define E1000_PTC511
Definition: e1000_regs.h:377
#define E1000_PRC255
Definition: e1000_regs.h:348
#define E1000_VFTA
Definition: e1000_regs.h:499
#define E1000_FCAL
Definition: e1000_regs.h:61
#define E1000_FCRTL
Definition: e1000_regs.h:150
#define E1000_PRC127
Definition: e1000_regs.h:347
#define E1000_PRC64
Definition: e1000_regs.h:346
#define E1000_RCTL
Definition: e1000_regs.h:89
#define E1000_TCTL
Definition: e1000_regs.h:104
#define E1000_RA
Definition: e1000_regs.h:497
#define E1000_TDFH
Definition: e1000_regs.h:307
#define E1000_TDBAH(_n)
Definition: e1000_regs.h:267
#define E1000_PTC1023
Definition: e1000_regs.h:378
#define E1000_FCT
Definition: e1000_regs.h:76
#define E1000_RDBAL(_n)
Definition: e1000_regs.h:246
#define E1000_CTRL
Definition: e1000_regs.h:39
#define E1000_PRC1522
Definition: e1000_regs.h:351
#define E1000_IMC
Definition: e1000_regs.h:83
#define E1000_RDT(_n)
Definition: e1000_regs.h:259
#define E1000_TDFT
Definition: e1000_regs.h:308
#define E1000_RDBAH(_n)
Definition: e1000_regs.h:248
#define E1000_RDH(_n)
Definition: e1000_regs.h:254
#define E1000_TIDV
Definition: e1000_regs.h:322
#define E1000_TDLEN(_n)
Definition: e1000_regs.h:269
#define E1000_PRC1023
Definition: e1000_regs.h:350
#define E1000_PRC511
Definition: e1000_regs.h:349
#define E1000_FCAH
Definition: e1000_regs.h:62
#define E1000_MTA
Definition: e1000_regs.h:496
#define E1000_ICR
Definition: e1000_regs.h:79
#define E1000_PTC64
Definition: e1000_regs.h:374
#define E1000_FCRTH
Definition: e1000_regs.h:151
#define E1000_VET
Definition: e1000_regs.h:78
#define E1000_RDTR
Definition: e1000_regs.h:170
enum e1000_bus_speed speed
Definition: e1000_hw.h:905
u16 pci_cmd_word
Definition: e1000_hw.h:909
enum e1000_bus_type type
Definition: e1000_hw.h:904
enum e1000_bus_width width
Definition: e1000_hw.h:906
enum e1000_fc_mode current_mode
Definition: e1000_hw.h:919
u16 pause_time
Definition: e1000_hw.h:915
enum e1000_fc_mode requested_mode
Definition: e1000_hw.h:920
union e1000_hw::@46 dev_spec
struct e1000_bus_info bus
Definition: e1000_hw.h:1032
struct e1000_mac_info mac
Definition: e1000_hw.h:1028
struct e1000_nvm_info nvm
Definition: e1000_hw.h:1031
struct e1000_dev_spec_82542 _82542
Definition: e1000_hw.h:1038
u8 revision_id
Definition: e1000_hw.h:1052
struct e1000_fc_info fc
Definition: e1000_hw.h:1029
struct e1000_phy_info phy
Definition: e1000_hw.h:1030
u8 addr[ETHER_ADDR_LEN]
Definition: e1000_hw.h:812
bool report_tx_early
Definition: e1000_hw.h:848
u16 mta_reg_count
Definition: e1000_hw.h:830
u16 rar_entry_count
Definition: e1000_hw.h:836
struct e1000_mac_operations ops
Definition: e1000_hw.h:811
u8 perm_addr[ETHER_ADDR_LEN]
Definition: e1000_hw.h:813
s32(* get_link_up_info)(struct e1000_hw *, u16 *, u16 *)
Definition: e1000_hw.h:734
s32(* setup_physical_interface)(struct e1000_hw *)
Definition: e1000_hw.h:743
s32(* check_for_link)(struct e1000_hw *)
Definition: e1000_hw.h:728
void(* clear_vfta)(struct e1000_hw *)
Definition: e1000_hw.h:731
s32(* reset_hw)(struct e1000_hw *)
Definition: e1000_hw.h:738
s32(* led_on)(struct e1000_hw *)
Definition: e1000_hw.h:735
s32(* read_mac_addr)(struct e1000_hw *)
Definition: e1000_hw.h:748
void(* write_vfta)(struct e1000_hw *, u32, u32)
Definition: e1000_hw.h:745
int(* rar_set)(struct e1000_hw *, u8 *, u32)
Definition: e1000_hw.h:747
s32(* init_hw)(struct e1000_hw *)
Definition: e1000_hw.h:739
s32(* setup_link)(struct e1000_hw *)
Definition: e1000_hw.h:742
void(* clear_hw_cntrs)(struct e1000_hw *)
Definition: e1000_hw.h:730
void(* set_lan_id)(struct e1000_hw *)
Definition: e1000_hw.h:733
void(* update_mc_addr_list)(struct e1000_hw *, u8 *, u32)
Definition: e1000_hw.h:737
s32(* led_off)(struct e1000_hw *)
Definition: e1000_hw.h:736
s32(* get_bus_info)(struct e1000_hw *)
Definition: e1000_hw.h:732
s32(* init_params)(struct e1000_hw *)
Definition: e1000_hw.h:724
struct e1000_nvm_operations ops
Definition: e1000_hw.h:889
enum e1000_nvm_type type
Definition: e1000_hw.h:890
u16 address_bits
Definition: e1000_hw.h:898
void(* release)(struct e1000_hw *)
Definition: e1000_hw.h:802
s32(* init_params)(struct e1000_hw *)
Definition: e1000_hw.h:799
s32(* write)(struct e1000_hw *, u16, u16, u16 *)
Definition: e1000_hw.h:807
void(* reload)(struct e1000_hw *)
Definition: e1000_hw.h:803
s32(* validate)(struct e1000_hw *)
Definition: e1000_hw.h:806
s32(* update)(struct e1000_hw *)
Definition: e1000_hw.h:804
s32(* read)(struct e1000_hw *, u16, u16, u16 *)
Definition: e1000_hw.h:801
enum e1000_media_type media_type
Definition: e1000_hw.h:871
struct e1000_phy_operations ops
Definition: e1000_hw.h:856
enum e1000_phy_type type
Definition: e1000_hw.h:857
s32(* init_params)(struct e1000_hw *)
Definition: e1000_hw.h:770