~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/ipxe/src/drivers/net/intelx.h

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef _INTELX_H
 
2
#define _INTELX_H
 
3
 
 
4
/** @file
 
5
 *
 
6
 * Intel 10 Gigabit Ethernet network card driver
 
7
 *
 
8
 */
 
9
 
 
10
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
 
11
 
 
12
#include <stdint.h>
 
13
#include <ipxe/if_ether.h>
 
14
#include "intel.h"
 
15
 
 
16
/** Device Control Register */
 
17
#define INTELX_CTRL 0x00000UL
 
18
#define INTELX_CTRL_LRST        0x00000008UL    /**< Link reset */
 
19
#define INTELX_CTRL_RST         0x04000000UL    /**< Device reset */
 
20
 
 
21
/** Time to delay for device reset, in milliseconds */
 
22
#define INTELX_RESET_DELAY_MS 20
 
23
 
 
24
/** Extended Interrupt Cause Read Register */
 
25
#define INTELX_EICR 0x00800UL
 
26
#define INTELX_EIRQ_RX0         0x00000001UL    /**< RX0 (via IVAR) */
 
27
#define INTELX_EIRQ_TX0         0x00000002UL    /**< RX0 (via IVAR) */
 
28
#define INTELX_EIRQ_RXO         0x00020000UL    /**< Receive overrun */
 
29
#define INTELX_EIRQ_LSC         0x00100000UL    /**< Link status change */
 
30
 
 
31
/** Interrupt Mask Set/Read Register */
 
32
#define INTELX_EIMS 0x00880UL
 
33
 
 
34
/** Interrupt Mask Clear Register */
 
35
#define INTELX_EIMC 0x00888UL
 
36
 
 
37
/** Interrupt Vector Allocation Register */
 
38
#define INTELX_IVAR 0x00900UL
 
39
#define INTELX_IVAR_RX0(bit)    ( (bit) << 0 )  /**< RX queue 0 allocation */
 
40
#define INTELX_IVAR_RX0_DEFAULT INTELX_IVAR_RX0 ( 0x00 )
 
41
#define INTELX_IVAR_RX0_MASK    INTELX_IVAR_RX0 ( 0x3f )
 
42
#define INTELX_IVAR_RX0_VALID   0x00000080UL    /**< RX queue 0 valid */
 
43
#define INTELX_IVAR_TX0(bit)    ( (bit) << 8 )  /**< TX queue 0 allocation */
 
44
#define INTELX_IVAR_TX0_DEFAULT INTELX_IVAR_TX0 ( 0x01 )
 
45
#define INTELX_IVAR_TX0_MASK    INTELX_IVAR_TX0 ( 0x3f )
 
46
#define INTELX_IVAR_TX0_VALID   0x00008000UL    /**< TX queue 0 valid */
 
47
 
 
48
/** Receive Filter Control Register */
 
49
#define INTELX_FCTRL 0x05080UL
 
50
#define INTELX_FCTRL_MPE        0x00000100UL    /**< Multicast promiscuous */
 
51
#define INTELX_FCTRL_UPE        0x00000200UL    /**< Unicast promiscuous mode */
 
52
#define INTELX_FCTRL_BAM        0x00000400UL    /**< Broadcast accept mode */
 
53
 
 
54
/** Receive Address Low
 
55
 *
 
56
 * The MAC address registers RAL0/RAH0 exist at address 0x05400 for
 
57
 * the 82598 and 0x0a200 for the 82599, according to the datasheet.
 
58
 * In practice, the 82599 seems to also provide a copy of these
 
59
 * registers at 0x05400.  To aim for maximum compatibility, we try
 
60
 * both addresses when reading the initial MAC address, and set both
 
61
 * addresses when setting the MAC address.
 
62
 */
 
63
#define INTELX_RAL0 0x05400UL
 
64
#define INTELX_RAL0_ALT 0x0a200UL
 
65
 
 
66
/** Receive Address High */
 
67
#define INTELX_RAH0 0x05404UL
 
68
#define INTELX_RAH0_ALT 0x0a204UL
 
69
#define INTELX_RAH0_AV          0x80000000UL    /**< Address valid */
 
70
 
 
71
/** Receive Descriptor register block */
 
72
#define INTELX_RD 0x01000UL
 
73
 
 
74
/** Receive Descriptor Control Register */
 
75
#define INTELX_RXDCTL_VME       0x40000000UL    /**< Strip VLAN tag */
 
76
 
 
77
/** Split Receive Control Register */
 
78
#define INTELX_SRRCTL 0x02100UL
 
79
#define INTELX_SRRCTL_BSIZE(kb) ( (kb) << 0 )   /**< Receive buffer size */
 
80
#define INTELX_SRRCTL_BSIZE_DEFAULT INTELX_SRRCTL_BSIZE ( 0x02 )
 
81
#define INTELX_SRRCTL_BSIZE_MASK INTELX_SRRCTL_BSIZE ( 0x1f )
 
82
 
 
83
/** Receive DMA Control Register */
 
84
#define INTELX_RDRXCTL 0x02f00UL
 
85
#define INTELX_RDRXCTL_SECRC    0x00000001UL    /**< Strip CRC */
 
86
 
 
87
/** Receive Control Register */
 
88
#define INTELX_RXCTRL 0x03000UL
 
89
#define INTELX_RXCTRL_RXEN      0x00000001UL    /**< Receive enable */
 
90
 
 
91
/** Transmit DMA Control Register */
 
92
#define INTELX_DMATXCTL 0x04a80UL
 
93
#define INTELX_DMATXCTL_TE      0x00000001UL    /**< Transmit enable */
 
94
 
 
95
/** Transmit Descriptor register block */
 
96
#define INTELX_TD 0x06000UL
 
97
 
 
98
/** RX DCA Control Register */
 
99
#define INTELX_DCA_RXCTRL 0x02200UL
 
100
#define INTELX_DCA_RXCTRL_MUST_BE_ZERO 0x00001000UL /**< Must be zero */
 
101
 
 
102
/** MAC Core Control 0 Register */
 
103
#define INTELX_HLREG0 0x04240UL
 
104
#define INTELX_HLREG0_JUMBOEN   0x00000004UL    /**< Jumbo frame enable */
 
105
 
 
106
/** Maximum Frame Size Register */
 
107
#define INTELX_MAXFRS 0x04268UL
 
108
#define INTELX_MAXFRS_MFS(len)  ( (len) << 16 ) /**< Maximum frame size */
 
109
#define INTELX_MAXFRS_MFS_DEFAULT \
 
110
        INTELX_MAXFRS_MFS ( ETH_FRAME_LEN + 4 /* VLAN */ + 4 /* CRC */ )
 
111
#define INTELX_MAXFRS_MFS_MASK  INTELX_MAXFRS_MFS ( 0xffff )
 
112
 
 
113
/** Link Status Register */
 
114
#define INTELX_LINKS 0x042a4UL
 
115
#define INTELX_LINKS_UP         0x40000000UL    /**< Link up */
 
116
 
 
117
#endif /* _INTELX_H */