github.com/icexin/eggos@v0.4.2-0.20220216025428-78b167e4f349/drivers/e1000/defs.go (about)

     1  package e1000
     2  
     3  const (
     4  	/// Controls the device features and states.
     5  	REG_CTRL = 0x0000
     6  	/// Auto-Speed Detetion Enable.
     7  	CTRL_ASDE = (1 << 5)
     8  	/// Set link up.
     9  	CTRL_SLU = (1 << 6)
    10  	/// Device Reset.
    11  	CTRL_RST = (1 << 26)
    12  
    13  	/// Interrupt Mask Set.
    14  	REG_IMS  = 0x00d0
    15  	IMS_RXT0 = (1 << 7)
    16  
    17  	/// Interrupt Mask Clear.
    18  	REG_IMC = 0x00d8
    19  
    20  	/// Interrupt Cause Read.
    21  	REG_ICR = 0x00c0
    22  	/// Receiver Timer Interrupt.
    23  	ICR_RXT0 = (1 << 7)
    24  
    25  	/// Multicast Table Array.
    26  	REG_MTA_BASE = 0x5200
    27  	/// The lower bits of the Ethernet address.
    28  	REG_RECEIVE_ADDR_LOW = 0x5400
    29  	/// The higher bits of the Ethernet address and some extra bits.
    30  	REG_RECEIVE_ADDR_HIGH = 0x5404
    31  
    32  	/// Receive Control.
    33  	REG_RCTL = 0x0100
    34  	/// Receiver Enable.
    35  	RCTL_EN = (1 << 1)
    36  	/// Strip Ethernet CRC from receiving packet.
    37  	RCTL_SECRC = (1 << 26)
    38  	/// Receive Buffer Size: 2048 bytes (assuming RCTL.BSEX == 0).
    39  	RCTL_BSIZE = 0 << 16
    40  	/// Broadcast Accept Mode.
    41  	RCTL_BAM = (1 << 15)
    42  
    43  	/// Receive Descriptor Base Low.
    44  	REG_RDBAL = 0x2800
    45  	/// Receive Descriptor Base High.
    46  	REG_RDBAH = 0x2804
    47  	/// Length of Receive Descriptors.
    48  	REG_RDLEN = 0x2808
    49  	/// Receive Descriptor Head.
    50  	REG_RDH = 0x2810
    51  	/// Receive Descriptor Tail.
    52  	REG_RDT = 0x2818
    53  
    54  	/// Transmit Control.
    55  	REG_TCTL = 0x0400
    56  	// Transmit Inter Packet Gap
    57  	REG_TIPG = 0x0410
    58  	/// Receiver Enable.
    59  	TCTL_EN = (1 << 1)
    60  	/// Pad Short Packets.
    61  	TCTL_PSP = (1 << 3)
    62  
    63  	/// Transmit Descriptor Base Low.
    64  	REG_TDBAL = 0x3800
    65  	/// Transmit Descriptor Base High.
    66  	REG_TDBAH = 0x3804
    67  	/// Length of Transmit Descriptors.
    68  	REG_TDLEN = 0x3808
    69  	/// Transmit Descriptor Head.
    70  	REG_TDH = 0x3810
    71  	/// Transmit Descriptor Tail.
    72  	REG_TDT = 0x3818
    73  
    74  	/// Insert FCS.
    75  	TX_DESC_IFCS = (1 << 1)
    76  	/// End Of Packet.
    77  	TX_DESC_EOP = (1 << 0)
    78  	// Report Status
    79  	TX_DESC_RS = (1 << 3)
    80  
    81  	// eeprom register
    82  	REG_EEPROM = 0x0014
    83  	REG_RXADDR = 0x5400
    84  
    85  	/// Descriptor Done.
    86  	RX_DESC_DD = (1 << 0)
    87  	/// End Of Packet.
    88  	RX_DESC_EOP = (1 << 1)
    89  )
    90  
    91  const (
    92  	/// The size of buffer to store received/transmtting packets.
    93  	BUFFER_SIZE = 2048
    94  	/// Number of receive descriptors.
    95  	NUM_RX_DESCS = 32
    96  	/// Number of receive descriptors.
    97  	NUM_TX_DESCS = 32
    98  
    99  	TX_BUF_SZ = 1024
   100  )
   101  
   102  type rxdesc struct {
   103  	paddr    uint64
   104  	len      uint16
   105  	checksum uint16
   106  	status   uint8
   107  	errors   uint8
   108  	special  uint16
   109  }
   110  
   111  type txdesc struct {
   112  	paddr   uint64
   113  	len     uint16
   114  	cso     uint8
   115  	cmd     uint8
   116  	status  uint8
   117  	css     uint8
   118  	special uint16
   119  }