1 | /******************************************************************************* |
---|
2 | |
---|
3 | Intel PRO/1000 Linux driver |
---|
4 | Copyright(c) 1999 - 2006 Intel Corporation. |
---|
5 | |
---|
6 | This program is free software; you can redistribute it and/or modify it |
---|
7 | under the terms and conditions of the GNU General Public License, |
---|
8 | version 2, as published by the Free Software Foundation. |
---|
9 | |
---|
10 | This program is distributed in the hope it will be useful, but WITHOUT |
---|
11 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
---|
12 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
---|
13 | more details. |
---|
14 | |
---|
15 | You should have received a copy of the GNU General Public License along with |
---|
16 | this program; if not, write to the Free Software Foundation, Inc., |
---|
17 | 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. |
---|
18 | |
---|
19 | The full GNU General Public License is included in this distribution in |
---|
20 | the file called "COPYING". |
---|
21 | |
---|
22 | Contact Information: |
---|
23 | Linux NICS <linux.nics@intel.com> |
---|
24 | e1000-devel Mailing List <e1000-devel@lists.sourceforge.net> |
---|
25 | Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 |
---|
26 | |
---|
27 | *******************************************************************************/ |
---|
28 | |
---|
29 | FILE_LICENCE ( GPL2_ONLY ); |
---|
30 | |
---|
31 | /* glue for the OS independent part of e1000 |
---|
32 | * includes register access macros |
---|
33 | */ |
---|
34 | |
---|
35 | #ifndef _E1000_OSDEP_H_ |
---|
36 | #define _E1000_OSDEP_H_ |
---|
37 | |
---|
38 | #include <stdint.h> |
---|
39 | #include <stdlib.h> |
---|
40 | #include <stdio.h> |
---|
41 | #include <gpxe/io.h> |
---|
42 | #include <errno.h> |
---|
43 | #include <unistd.h> |
---|
44 | #include <byteswap.h> |
---|
45 | #include <gpxe/pci.h> |
---|
46 | #include <gpxe/if_ether.h> |
---|
47 | #include <gpxe/ethernet.h> |
---|
48 | #include <gpxe/iobuf.h> |
---|
49 | #include <gpxe/netdevice.h> |
---|
50 | |
---|
51 | typedef enum { |
---|
52 | #undef FALSE |
---|
53 | FALSE = 0, |
---|
54 | #undef TRUE |
---|
55 | TRUE = 1 |
---|
56 | } boolean_t; |
---|
57 | |
---|
58 | /* Debugging #defines */ |
---|
59 | |
---|
60 | #if 1 |
---|
61 | #define DEBUGFUNC(F) DBG(F "\n") |
---|
62 | #else |
---|
63 | #define DEBUGFUNC(F) |
---|
64 | #endif |
---|
65 | |
---|
66 | #if 1 |
---|
67 | #define DEBUGOUT(S) DBG(S) |
---|
68 | #define DEBUGOUT1(S, A...) DBG(S, A) |
---|
69 | #else |
---|
70 | #define DEBUGOUT(S) |
---|
71 | #define DEBUGOUT1(S, A...) |
---|
72 | #endif |
---|
73 | |
---|
74 | #define DEBUGOUT2 DEBUGOUT1 |
---|
75 | #define DEBUGOUT3 DEBUGOUT1 |
---|
76 | #define DEBUGOUT7 DEBUGOUT1 |
---|
77 | |
---|
78 | #define E1000_WRITE_REG(a, reg, value) \ |
---|
79 | writel((value), ((a)->hw_addr + \ |
---|
80 | (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg))) |
---|
81 | |
---|
82 | #define E1000_READ_REG(a, reg) \ |
---|
83 | readl((a)->hw_addr + \ |
---|
84 | (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg)) |
---|
85 | |
---|
86 | #define E1000_WRITE_REG_ARRAY(a, reg, offset, value) \ |
---|
87 | writel((value), ((a)->hw_addr + \ |
---|
88 | (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \ |
---|
89 | ((offset) << 2))) |
---|
90 | |
---|
91 | #define E1000_READ_REG_ARRAY(a, reg, offset) \ |
---|
92 | readl((a)->hw_addr + \ |
---|
93 | (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \ |
---|
94 | ((offset) << 2)) |
---|
95 | |
---|
96 | #define E1000_READ_REG_ARRAY_DWORD E1000_READ_REG_ARRAY |
---|
97 | #define E1000_WRITE_REG_ARRAY_DWORD E1000_WRITE_REG_ARRAY |
---|
98 | |
---|
99 | #define E1000_WRITE_REG_ARRAY_WORD(a, reg, offset, value) \ |
---|
100 | writew((value), ((a)->hw_addr + \ |
---|
101 | (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \ |
---|
102 | ((offset) << 1))) |
---|
103 | |
---|
104 | #define E1000_READ_REG_ARRAY_WORD(a, reg, offset) \ |
---|
105 | readw((a)->hw_addr + \ |
---|
106 | (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \ |
---|
107 | ((offset) << 1)) |
---|
108 | |
---|
109 | #define E1000_WRITE_REG_ARRAY_BYTE(a, reg, offset, value) \ |
---|
110 | writeb((value), ((a)->hw_addr + \ |
---|
111 | (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \ |
---|
112 | (offset))) |
---|
113 | |
---|
114 | #define E1000_READ_REG_ARRAY_BYTE(a, reg, offset) \ |
---|
115 | readb((a)->hw_addr + \ |
---|
116 | (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \ |
---|
117 | (offset)) |
---|
118 | |
---|
119 | #define E1000_WRITE_FLUSH(a) E1000_READ_REG(a, STATUS) |
---|
120 | |
---|
121 | #define E1000_WRITE_ICH_FLASH_REG(a, reg, value) \ |
---|
122 | writel((value), ((a)->flash_address + reg)) |
---|
123 | |
---|
124 | #define E1000_READ_ICH_FLASH_REG(a, reg) \ |
---|
125 | readl((a)->flash_address + reg) |
---|
126 | |
---|
127 | #define E1000_WRITE_ICH_FLASH_REG16(a, reg, value) \ |
---|
128 | writew((value), ((a)->flash_address + reg)) |
---|
129 | |
---|
130 | #define E1000_READ_ICH_FLASH_REG16(a, reg) \ |
---|
131 | readw((a)->flash_address + reg) |
---|
132 | |
---|
133 | #define msleep(n) mdelay(n) |
---|
134 | |
---|
135 | #endif /* _E1000_OSDEP_H_ */ |
---|
136 | |
---|
137 | /* |
---|
138 | * Local variables: |
---|
139 | * c-basic-offset: 8 |
---|
140 | * c-indent-level: 8 |
---|
141 | * tab-width: 8 |
---|
142 | * End: |
---|
143 | */ |
---|