axle OS
x86_32 UNIX-like hobby OS
src
kernel
drivers
e1000
driver.h
1
#ifndef E1000_DRIVER_H
2
#define E1000_DRIVER_H
3
4
#define INTEL_VEND 0x8086 //Intel PCI vendor ID
5
#define E1000_DEV 0x100E //e1000 PCI device ID
6
#define E1000_I217 0x153A //Intel I217 device ID
7
#define E1000_82577LM 0x10EA //Intel 82577LM device ID
8
9
#define REG_CTRL 0x0000
10
#define REG_STATUS 0x0008
11
#define REG_EEPROM 0x0014
12
#define REG_CTRL_EXT 0x0018
13
#define REG_IMASK 0x00D0
14
#define REG_RCTRL 0x0100
15
#define REG_RXDESCLO 0x2800
16
#define REG_RXDESCHI 0x2804
17
#define REG_RXDESCLEN 0x2808
18
#define REG_RXDESCHEAD 0x2810
19
#define REG_RXDESCTAIL 0x2818
20
21
#define REG_TCTRL 0x0400
22
#define REG_TXDESCLO 0x3800
23
#define REG_TXDESCHI 0x3804
24
#define REG_TXDESCLEN 0x3808
25
#define REG_TXDESCHEAD 0x3810
26
#define REG_TXDESCTAIL 0x3818
27
28
29
#define REG_RDTR 0x2820 // RX Delay Timer Register
30
#define REG_RXDCTL 0x3828 // RX Descriptor Control
31
#define REG_RADV 0x282C // RX Int. Absolute Delay Timer
32
#define REG_RSRPD 0x2C00 // RX Small Packet Detect Interrupt
33
34
35
36
#define REG_TIPG 0x0410 // Transmit Inter Packet Gap
37
#define ECTRL_SLU 0x40 //set link up
38
39
40
#define RCTL_EN (1 << 1) // Receiver Enable
41
#define RCTL_SBP (1 << 2) // Store Bad Packets
42
#define RCTL_UPE (1 << 3) // Unicast Promiscuous Enabled
43
#define RCTL_MPE (1 << 4) // Multicast Promiscuous Enabled
44
#define RCTL_LPE (1 << 5) // Long Packet Reception Enable
45
#define RCTL_LBM_NONE (0 << 6) // No Loopback
46
#define RCTL_LBM_PHY (3 << 6) // PHY or external SerDesc loopback
47
#define RTCL_RDMTS_HALF (0 << 8) // Free Buffer Threshold is 1/2 of RDLEN
48
#define RTCL_RDMTS_QUARTER (1 << 8) // Free Buffer Threshold is 1/4 of RDLEN
49
#define RTCL_RDMTS_EIGHTH (2 << 8) // Free Buffer Threshold is 1/8 of RDLEN
50
#define RCTL_MO_36 (0 << 12) // Multicast Offset - bits 47:36
51
#define RCTL_MO_35 (1 << 12) // Multicast Offset - bits 46:35
52
#define RCTL_MO_34 (2 << 12) // Multicast Offset - bits 45:34
53
#define RCTL_MO_32 (3 << 12) // Multicast Offset - bits 43:32
54
#define RCTL_BAM (1 << 15) // Broadcast Accept Mode
55
#define RCTL_VFE (1 << 18) // VLAN Filter Enable
56
#define RCTL_CFIEN (1 << 19) // Canonical Form Indicator Enable
57
#define RCTL_CFI (1 << 20) // Canonical Form Indicator Bit Value
58
#define RCTL_DPF (1 << 22) // Discard Pause Frames
59
#define RCTL_PMCF (1 << 23) // Pass MAC Control Frames
60
#define RCTL_SECRC (1 << 26) // Strip Ethernet CRC
61
62
// Buffer Sizes
63
#define RCTL_BSIZE_256 (3 << 16)
64
#define RCTL_BSIZE_512 (2 << 16)
65
#define RCTL_BSIZE_1024 (1 << 16)
66
#define RCTL_BSIZE_2048 (0 << 16)
67
#define RCTL_BSIZE_4096 ((3 << 16) | (1 << 25))
68
#define RCTL_BSIZE_8192 ((2 << 16) | (1 << 25))
69
#define RCTL_BSIZE_16384 ((1 << 16) | (1 << 25))
70
71
72
// Transmit Command
73
74
#define CMD_EOP (1 << 0) // End of Packet
75
#define CMD_IFCS (1 << 1) // Insert FCS
76
#define CMD_IC (1 << 2) // Insert Checksum
77
#define CMD_RS (1 << 3) // Report Status
78
#define CMD_RPS (1 << 4) // Report Packet Sent
79
#define CMD_VLE (1 << 6) // VLAN Packet Enable
80
#define CMD_IDE (1 << 7) // Interrupt Delay Enable
81
82
83
// TCTL Register
84
85
#define TCTL_EN (1 << 1) // Transmit Enable
86
#define TCTL_PSP (1 << 3) // Pad Short Packets
87
#define TCTL_CT_SHIFT 4 // Collision Threshold
88
#define TCTL_COLD_SHIFT 12 // Collision Distance
89
#define TCTL_SWXOFF (1 << 22) // Software XOFF Transmission
90
#define TCTL_RTLC (1 << 24) // Re-transmit on Late Collision
91
92
#define TSTA_DD (1 << 0) // Descriptor Done
93
#define TSTA_EC (1 << 1) // Excess Collisions
94
#define TSTA_LC (1 << 2) // Late Collision
95
#define LSTA_TU (1 << 3) // Transmit Underrun
96
97
#endif
Generated by
1.8.14