1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 #ifndef _EM_OPENBSD_OS_H_
38 #define _EM_OPENBSD_OS_H_
39
40
41 #define usec_delay(x) DELAY(x)
42 #define msec_delay(x) DELAY(1000*(x))
43
44 #define msec_delay_irq(x) DELAY(1000*(x))
45
46 #define MSGOUT(S, A, B) printf(S "\n", A, B)
47 #define DEBUGFUNC(F) DEBUGOUT(F);
48 #ifdef DBG
49 #define DEBUGOUT(S) printf(S "\n")
50 #define DEBUGOUT1(S,A) printf(S "\n",A)
51 #define DEBUGOUT2(S,A,B) printf(S "\n",A,B)
52 #define DEBUGOUT3(S,A,B,C) printf(S "\n",A,B,C)
53 #define DEBUGOUT7(S,A,B,C,D,E,F,G) printf(S "\n",A,B,C,D,E,F,G)
54 #else
55 #define DEBUGOUT(S)
56 #define DEBUGOUT1(S,A)
57 #define DEBUGOUT2(S,A,B)
58 #define DEBUGOUT3(S,A,B,C)
59 #define DEBUGOUT7(S,A,B,C,D,E,F,G)
60 #endif
61
62 #define CMD_MEM_WRT_INVALIDATE 0x0010
63
64 struct em_osdep
65 {
66 bus_space_tag_t mem_bus_space_tag;
67 bus_space_handle_t mem_bus_space_handle;
68 bus_space_tag_t io_bus_space_tag;
69 bus_space_handle_t io_bus_space_handle;
70 bus_space_tag_t flash_bus_space_tag;
71 bus_space_handle_t flash_bus_space_handle;
72 struct device *dev;
73
74 struct pci_attach_args em_pa;
75
76 bus_size_t em_memsize;
77 bus_addr_t em_membase;
78 bus_size_t em_iosize;
79 bus_addr_t em_iobase;
80 bus_size_t em_flashsize;
81 bus_addr_t em_flashbase;
82 };
83
84 #define E1000_WRITE_FLUSH(hw) E1000_READ_REG(hw, STATUS)
85
86
87 #define E1000_READ_OFFSET(hw, offset) \
88 bus_space_read_4(((struct em_osdep *)(hw)->back)->mem_bus_space_tag, \
89 ((struct em_osdep *)(hw)->back)->mem_bus_space_handle, \
90 offset)
91
92
93 #define E1000_WRITE_OFFSET(hw, offset, value) \
94 bus_space_write_4(((struct em_osdep *)(hw)->back)->mem_bus_space_tag, \
95 ((struct em_osdep *)(hw)->back)->mem_bus_space_handle, \
96 offset, value)
97
98
99 #define E1000_REG_OFFSET(hw, reg) \
100 ((hw)->mac_type >= em_82543 ? E1000_##reg : E1000_82542_##reg)
101
102
103
104 #define E1000_READ_REG(hw, reg) \
105 bus_space_read_4(((struct em_osdep *)(hw)->back)->mem_bus_space_tag, \
106 ((struct em_osdep *)(hw)->back)->mem_bus_space_handle, \
107 ((hw)->mac_type >= em_82543 ? E1000_##reg : E1000_82542_##reg))
108
109 #define E1000_WRITE_REG(hw, reg, value) \
110 bus_space_write_4(((struct em_osdep *)(hw)->back)->mem_bus_space_tag, \
111 ((struct em_osdep *)(hw)->back)->mem_bus_space_handle, \
112 ((hw)->mac_type >= em_82543 ? E1000_##reg : E1000_82542_##reg), \
113 value)
114
115 #define E1000_READ_REG_ARRAY(hw, reg, index) \
116 bus_space_read_4(((struct em_osdep *)(hw)->back)->mem_bus_space_tag, \
117 ((struct em_osdep *)(hw)->back)->mem_bus_space_handle, \
118 ((hw)->mac_type >= em_82543 ? E1000_##reg : E1000_82542_##reg) \
119 + ((index) << 2))
120
121 #define E1000_WRITE_REG_ARRAY(hw, reg, index, value) \
122 bus_space_write_4(((struct em_osdep *)(hw)->back)->mem_bus_space_tag, \
123 ((struct em_osdep *)(hw)->back)->mem_bus_space_handle, \
124 ((hw)->mac_type >= em_82543 ? E1000_##reg : E1000_82542_##reg) \
125 + ((index) << 2), value)
126
127 #define E1000_READ_REG_ARRAY_DWORD E1000_READ_REG_ARRAY
128 #define E1000_WRITE_REG_ARRAY_DWORD E1000_WRITE_REG_ARRAY
129
130 #define E1000_WRITE_REG_ARRAY_BYTE(hw, reg, index, value) \
131 bus_space_write_1(((struct em_osdep *)(hw)->back)->mem_bus_space_tag, \
132 ((struct em_osdep *)(hw)->back)->mem_bus_space_handle, \
133 ((hw)->mac_type >= em_82543 ? E1000_##reg : E1000_82542_##reg \
134 + index), value)
135
136 #define E1000_WRITE_REG_ARRAY_WORD(hw, reg, index, value) \
137 bus_space_write_2(((struct em_osdep *)(hw)->back)->mem_bus_space_tag, \
138 ((struct em_osdep *)(hw)->back)->mem_bus_space_handle, \
139 ((hw)->mac_type >= em_82543 ? E1000_##reg : E1000_82542_##reg \
140 + (index << 1)), value)
141
142 #define E1000_READ_ICH_FLASH_REG(hw, reg) \
143 bus_space_read_4(((struct em_osdep *)(hw)->back)->flash_bus_space_tag, \
144 ((struct em_osdep *)(hw)->back)->flash_bus_space_handle, reg)
145
146 #define E1000_READ_ICH_FLASH_REG16(hw, reg) \
147 bus_space_read_2(((struct em_osdep *)(hw)->back)->flash_bus_space_tag, \
148 ((struct em_osdep *)(hw)->back)->flash_bus_space_handle, reg)
149
150 #define E1000_WRITE_ICH_FLASH_REG(hw, reg, value) \
151 bus_space_write_4(((struct em_osdep *)(hw)->back)->flash_bus_space_tag, \
152 ((struct em_osdep *)(hw)->back)->flash_bus_space_handle, \
153 reg, value)
154
155 #define E1000_WRITE_ICH_FLASH_REG16(hw, reg, value) \
156 bus_space_write_2(((struct em_osdep *)(hw)->back)->flash_bus_space_tag, \
157 ((struct em_osdep *)(hw)->back)->flash_bus_space_handle, \
158 reg, value)
159
160 #define em_io_read(hw, port) \
161 bus_space_read_4(((struct em_osdep *)(hw)->back)->io_bus_space_tag, \
162 ((struct em_osdep *)(hw)->back)->io_bus_space_handle, (port))
163
164 #define em_io_write(hw, port, value) \
165 bus_space_write_4(((struct em_osdep *)(hw)->back)->io_bus_space_tag, \
166 ((struct em_osdep *)(hw)->back)->io_bus_space_handle, \
167 (port), (value))
168
169 #ifdef DEBUG
170 #define EM_KASSERT(exp,msg) do { if (!(exp)) panic msg; } while (0)
171 #else
172 #define EM_KASSERT(exp,msg)
173 #endif
174
175 #endif