diff options
author | Jonathan Herman <hermanjl@cs.unc.edu> | 2013-01-22 10:38:37 -0500 |
---|---|---|
committer | Jonathan Herman <hermanjl@cs.unc.edu> | 2013-01-22 10:38:37 -0500 |
commit | fcc9d2e5a6c89d22b8b773a64fb4ad21ac318446 (patch) | |
tree | a57612d1888735a2ec7972891b68c1ac5ec8faea /drivers/net/wireless/bcm4329/include/linuxver.h | |
parent | 8dea78da5cee153b8af9c07a2745f6c55057fe12 (diff) |
Diffstat (limited to 'drivers/net/wireless/bcm4329/include/linuxver.h')
-rw-r--r-- | drivers/net/wireless/bcm4329/include/linuxver.h | 447 |
1 files changed, 447 insertions, 0 deletions
diff --git a/drivers/net/wireless/bcm4329/include/linuxver.h b/drivers/net/wireless/bcm4329/include/linuxver.h new file mode 100644 index 00000000000..6ed22658a72 --- /dev/null +++ b/drivers/net/wireless/bcm4329/include/linuxver.h | |||
@@ -0,0 +1,447 @@ | |||
1 | /* | ||
2 | * Linux-specific abstractions to gain some independence from linux kernel versions. | ||
3 | * Pave over some 2.2 versus 2.4 versus 2.6 kernel differences. | ||
4 | * | ||
5 | * Copyright (C) 1999-2010, Broadcom Corporation | ||
6 | * | ||
7 | * Unless you and Broadcom execute a separate written software license | ||
8 | * agreement governing use of this software, this software is licensed to you | ||
9 | * under the terms of the GNU General Public License version 2 (the "GPL"), | ||
10 | * available at http://www.broadcom.com/licenses/GPLv2.php, with the | ||
11 | * following added to such license: | ||
12 | * | ||
13 | * As a special exception, the copyright holders of this software give you | ||
14 | * permission to link this software with independent modules, and to copy and | ||
15 | * distribute the resulting executable under terms of your choice, provided that | ||
16 | * you also meet, for each linked independent module, the terms and conditions of | ||
17 | * the license of that module. An independent module is a module which is not | ||
18 | * derived from this software. The special exception does not apply to any | ||
19 | * modifications of the software. | ||
20 | * | ||
21 | * Notwithstanding the above, under no circumstances may you combine this | ||
22 | * software in any way with any other Broadcom software provided under a license | ||
23 | * other than the GPL, without Broadcom's express prior written consent. | ||
24 | * | ||
25 | * $Id: linuxver.h,v 13.38.8.1.8.6 2010/04/29 05:00:46 Exp $ | ||
26 | */ | ||
27 | |||
28 | |||
29 | #ifndef _linuxver_h_ | ||
30 | #define _linuxver_h_ | ||
31 | |||
32 | #include <linux/version.h> | ||
33 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)) | ||
34 | #include <linux/config.h> | ||
35 | #elif (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 33)) | ||
36 | #include <linux/autoconf.h> | ||
37 | #endif | ||
38 | #include <linux/module.h> | ||
39 | |||
40 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 0)) | ||
41 | |||
42 | #ifdef __UNDEF_NO_VERSION__ | ||
43 | #undef __NO_VERSION__ | ||
44 | #else | ||
45 | #define __NO_VERSION__ | ||
46 | #endif | ||
47 | #endif | ||
48 | |||
49 | #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0) | ||
50 | #define module_param(_name_, _type_, _perm_) MODULE_PARM(_name_, "i") | ||
51 | #define module_param_string(_name_, _string_, _size_, _perm_) \ | ||
52 | MODULE_PARM(_string_, "c" __MODULE_STRING(_size_)) | ||
53 | #endif | ||
54 | |||
55 | |||
56 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 9)) | ||
57 | #include <linux/malloc.h> | ||
58 | #else | ||
59 | #include <linux/slab.h> | ||
60 | #endif | ||
61 | |||
62 | #include <linux/types.h> | ||
63 | #include <linux/init.h> | ||
64 | #include <linux/mm.h> | ||
65 | #include <linux/string.h> | ||
66 | #include <linux/pci.h> | ||
67 | #include <linux/interrupt.h> | ||
68 | #include <linux/netdevice.h> | ||
69 | #include <linux/semaphore.h> | ||
70 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)) | ||
71 | #undef IP_TOS | ||
72 | #endif | ||
73 | #include <asm/io.h> | ||
74 | |||
75 | #if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 5, 41)) | ||
76 | #include <linux/workqueue.h> | ||
77 | #else | ||
78 | #include <linux/tqueue.h> | ||
79 | #ifndef work_struct | ||
80 | #define work_struct tq_struct | ||
81 | #endif | ||
82 | #ifndef INIT_WORK | ||
83 | #define INIT_WORK(_work, _func, _data) INIT_TQUEUE((_work), (_func), (_data)) | ||
84 | #endif | ||
85 | #ifndef schedule_work | ||
86 | #define schedule_work(_work) schedule_task((_work)) | ||
87 | #endif | ||
88 | #ifndef flush_scheduled_work | ||
89 | #define flush_scheduled_work() flush_scheduled_tasks() | ||
90 | #endif | ||
91 | #endif | ||
92 | |||
93 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) | ||
94 | #define MY_INIT_WORK(_work, _func, _data) INIT_WORK(_work, _func) | ||
95 | #else | ||
96 | #define MY_INIT_WORK(_work, _func, _data) INIT_WORK(_work, _func, _data) | ||
97 | typedef void (*work_func_t)(void *work); | ||
98 | #endif | ||
99 | |||
100 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)) | ||
101 | |||
102 | #ifndef IRQ_NONE | ||
103 | typedef void irqreturn_t; | ||
104 | #define IRQ_NONE | ||
105 | #define IRQ_HANDLED | ||
106 | #define IRQ_RETVAL(x) | ||
107 | #endif | ||
108 | #else | ||
109 | typedef irqreturn_t(*FN_ISR) (int irq, void *dev_id, struct pt_regs *ptregs); | ||
110 | #endif | ||
111 | |||
112 | #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18) | ||
113 | #define IRQF_SHARED SA_SHIRQ | ||
114 | #endif | ||
115 | |||
116 | #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 17) | ||
117 | #ifdef CONFIG_NET_RADIO | ||
118 | #define CONFIG_WIRELESS_EXT | ||
119 | #endif | ||
120 | #endif | ||
121 | |||
122 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 67) | ||
123 | #ifndef SANDGATE2G | ||
124 | #define MOD_INC_USE_COUNT | ||
125 | #endif | ||
126 | #endif | ||
127 | |||
128 | |||
129 | #ifndef __exit | ||
130 | #define __exit | ||
131 | #endif | ||
132 | #ifndef __devexit | ||
133 | #define __devexit | ||
134 | #endif | ||
135 | #ifndef __devinit | ||
136 | #define __devinit __init | ||
137 | #endif | ||
138 | #ifndef __devinitdata | ||
139 | #define __devinitdata | ||
140 | #endif | ||
141 | #ifndef __devexit_p | ||
142 | #define __devexit_p(x) x | ||
143 | #endif | ||
144 | |||
145 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0)) | ||
146 | |||
147 | #define pci_get_drvdata(dev) (dev)->sysdata | ||
148 | #define pci_set_drvdata(dev, value) (dev)->sysdata = (value) | ||
149 | |||
150 | |||
151 | |||
152 | struct pci_device_id { | ||
153 | unsigned int vendor, device; | ||
154 | unsigned int subvendor, subdevice; | ||
155 | unsigned int class, class_mask; | ||
156 | unsigned long driver_data; | ||
157 | }; | ||
158 | |||
159 | struct pci_driver { | ||
160 | struct list_head node; | ||
161 | char *name; | ||
162 | const struct pci_device_id *id_table; | ||
163 | int (*probe)(struct pci_dev *dev, | ||
164 | const struct pci_device_id *id); | ||
165 | void (*remove)(struct pci_dev *dev); | ||
166 | void (*suspend)(struct pci_dev *dev); | ||
167 | void (*resume)(struct pci_dev *dev); | ||
168 | }; | ||
169 | |||
170 | #define MODULE_DEVICE_TABLE(type, name) | ||
171 | #define PCI_ANY_ID (~0) | ||
172 | |||
173 | |||
174 | #define pci_module_init pci_register_driver | ||
175 | extern int pci_register_driver(struct pci_driver *drv); | ||
176 | extern void pci_unregister_driver(struct pci_driver *drv); | ||
177 | |||
178 | #endif | ||
179 | |||
180 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 18)) | ||
181 | #define pci_module_init pci_register_driver | ||
182 | #endif | ||
183 | |||
184 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 2, 18)) | ||
185 | #ifdef MODULE | ||
186 | #define module_init(x) int init_module(void) { return x(); } | ||
187 | #define module_exit(x) void cleanup_module(void) { x(); } | ||
188 | #else | ||
189 | #define module_init(x) __initcall(x); | ||
190 | #define module_exit(x) __exitcall(x); | ||
191 | #endif | ||
192 | #endif | ||
193 | |||
194 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 48)) | ||
195 | #define list_for_each(pos, head) \ | ||
196 | for (pos = (head)->next; pos != (head); pos = pos->next) | ||
197 | #endif | ||
198 | |||
199 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 13)) | ||
200 | #define pci_resource_start(dev, bar) ((dev)->base_address[(bar)]) | ||
201 | #elif (LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 44)) | ||
202 | #define pci_resource_start(dev, bar) ((dev)->resource[(bar)].start) | ||
203 | #endif | ||
204 | |||
205 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 23)) | ||
206 | #define pci_enable_device(dev) do { } while (0) | ||
207 | #endif | ||
208 | |||
209 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 14)) | ||
210 | #define net_device device | ||
211 | #endif | ||
212 | |||
213 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 42)) | ||
214 | |||
215 | |||
216 | |||
217 | #ifndef PCI_DMA_TODEVICE | ||
218 | #define PCI_DMA_TODEVICE 1 | ||
219 | #define PCI_DMA_FROMDEVICE 2 | ||
220 | #endif | ||
221 | |||
222 | typedef u32 dma_addr_t; | ||
223 | |||
224 | |||
225 | static inline int get_order(unsigned long size) | ||
226 | { | ||
227 | int order; | ||
228 | |||
229 | size = (size-1) >> (PAGE_SHIFT-1); | ||
230 | order = -1; | ||
231 | do { | ||
232 | size >>= 1; | ||
233 | order++; | ||
234 | } while (size); | ||
235 | return order; | ||
236 | } | ||
237 | |||
238 | static inline void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size, | ||
239 | dma_addr_t *dma_handle) | ||
240 | { | ||
241 | void *ret; | ||
242 | int gfp = GFP_ATOMIC | GFP_DMA; | ||
243 | |||
244 | ret = (void *)__get_free_pages(gfp, get_order(size)); | ||
245 | |||
246 | if (ret != NULL) { | ||
247 | memset(ret, 0, size); | ||
248 | *dma_handle = virt_to_bus(ret); | ||
249 | } | ||
250 | return ret; | ||
251 | } | ||
252 | static inline void pci_free_consistent(struct pci_dev *hwdev, size_t size, | ||
253 | void *vaddr, dma_addr_t dma_handle) | ||
254 | { | ||
255 | free_pages((unsigned long)vaddr, get_order(size)); | ||
256 | } | ||
257 | #define pci_map_single(cookie, address, size, dir) virt_to_bus(address) | ||
258 | #define pci_unmap_single(cookie, address, size, dir) | ||
259 | |||
260 | #endif | ||
261 | |||
262 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 43)) | ||
263 | |||
264 | #define dev_kfree_skb_any(a) dev_kfree_skb(a) | ||
265 | #define netif_down(dev) do { (dev)->start = 0; } while (0) | ||
266 | |||
267 | |||
268 | #ifndef _COMPAT_NETDEVICE_H | ||
269 | |||
270 | |||
271 | |||
272 | #define dev_kfree_skb_irq(a) dev_kfree_skb(a) | ||
273 | #define netif_wake_queue(dev) \ | ||
274 | do { clear_bit(0, &(dev)->tbusy); mark_bh(NET_BH); } while (0) | ||
275 | #define netif_stop_queue(dev) set_bit(0, &(dev)->tbusy) | ||
276 | |||
277 | static inline void netif_start_queue(struct net_device *dev) | ||
278 | { | ||
279 | dev->tbusy = 0; | ||
280 | dev->interrupt = 0; | ||
281 | dev->start = 1; | ||
282 | } | ||
283 | |||
284 | #define netif_queue_stopped(dev) (dev)->tbusy | ||
285 | #define netif_running(dev) (dev)->start | ||
286 | |||
287 | #endif | ||
288 | |||
289 | #define netif_device_attach(dev) netif_start_queue(dev) | ||
290 | #define netif_device_detach(dev) netif_stop_queue(dev) | ||
291 | |||
292 | |||
293 | #define tasklet_struct tq_struct | ||
294 | static inline void tasklet_schedule(struct tasklet_struct *tasklet) | ||
295 | { | ||
296 | queue_task(tasklet, &tq_immediate); | ||
297 | mark_bh(IMMEDIATE_BH); | ||
298 | } | ||
299 | |||
300 | static inline void tasklet_init(struct tasklet_struct *tasklet, | ||
301 | void (*func)(unsigned long), | ||
302 | unsigned long data) | ||
303 | { | ||
304 | tasklet->next = NULL; | ||
305 | tasklet->sync = 0; | ||
306 | tasklet->routine = (void (*)(void *))func; | ||
307 | tasklet->data = (void *)data; | ||
308 | } | ||
309 | #define tasklet_kill(tasklet) { do {} while (0); } | ||
310 | |||
311 | |||
312 | #define del_timer_sync(timer) del_timer(timer) | ||
313 | |||
314 | #else | ||
315 | |||
316 | #define netif_down(dev) | ||
317 | |||
318 | #endif | ||
319 | |||
320 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 3)) | ||
321 | |||
322 | |||
323 | #define PREPARE_TQUEUE(_tq, _routine, _data) \ | ||
324 | do { \ | ||
325 | (_tq)->routine = _routine; \ | ||
326 | (_tq)->data = _data; \ | ||
327 | } while (0) | ||
328 | |||
329 | |||
330 | #define INIT_TQUEUE(_tq, _routine, _data) \ | ||
331 | do { \ | ||
332 | INIT_LIST_HEAD(&(_tq)->list); \ | ||
333 | (_tq)->sync = 0; \ | ||
334 | PREPARE_TQUEUE((_tq), (_routine), (_data)); \ | ||
335 | } while (0) | ||
336 | |||
337 | #endif | ||
338 | |||
339 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 6)) | ||
340 | |||
341 | |||
342 | |||
343 | static inline int | ||
344 | pci_save_state(struct pci_dev *dev, u32 *buffer) | ||
345 | { | ||
346 | int i; | ||
347 | if (buffer) { | ||
348 | for (i = 0; i < 16; i++) | ||
349 | pci_read_config_dword(dev, i * 4, &buffer[i]); | ||
350 | } | ||
351 | return 0; | ||
352 | } | ||
353 | |||
354 | static inline int | ||
355 | pci_restore_state(struct pci_dev *dev, u32 *buffer) | ||
356 | { | ||
357 | int i; | ||
358 | |||
359 | if (buffer) { | ||
360 | for (i = 0; i < 16; i++) | ||
361 | pci_write_config_dword(dev, i * 4, buffer[i]); | ||
362 | } | ||
363 | |||
364 | else { | ||
365 | for (i = 0; i < 6; i ++) | ||
366 | pci_write_config_dword(dev, | ||
367 | PCI_BASE_ADDRESS_0 + (i * 4), | ||
368 | pci_resource_start(dev, i)); | ||
369 | pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq); | ||
370 | } | ||
371 | return 0; | ||
372 | } | ||
373 | |||
374 | #endif | ||
375 | |||
376 | |||
377 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 19)) | ||
378 | #define read_c0_count() read_32bit_cp0_register(CP0_COUNT) | ||
379 | #endif | ||
380 | |||
381 | |||
382 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24)) | ||
383 | #ifndef SET_MODULE_OWNER | ||
384 | #define SET_MODULE_OWNER(dev) do {} while (0) | ||
385 | #define OLD_MOD_INC_USE_COUNT MOD_INC_USE_COUNT | ||
386 | #define OLD_MOD_DEC_USE_COUNT MOD_DEC_USE_COUNT | ||
387 | #else | ||
388 | #define OLD_MOD_INC_USE_COUNT do {} while (0) | ||
389 | #define OLD_MOD_DEC_USE_COUNT do {} while (0) | ||
390 | #endif | ||
391 | #else | ||
392 | #ifndef SET_MODULE_OWNER | ||
393 | #define SET_MODULE_OWNER(dev) do {} while (0) | ||
394 | #endif | ||
395 | #ifndef MOD_INC_USE_COUNT | ||
396 | #define MOD_INC_USE_COUNT do {} while (0) | ||
397 | #endif | ||
398 | #ifndef MOD_DEC_USE_COUNT | ||
399 | #define MOD_DEC_USE_COUNT do {} while (0) | ||
400 | #endif | ||
401 | #define OLD_MOD_INC_USE_COUNT MOD_INC_USE_COUNT | ||
402 | #define OLD_MOD_DEC_USE_COUNT MOD_DEC_USE_COUNT | ||
403 | #endif | ||
404 | |||
405 | #ifndef SET_NETDEV_DEV | ||
406 | #define SET_NETDEV_DEV(net, pdev) do {} while (0) | ||
407 | #endif | ||
408 | |||
409 | #ifndef HAVE_FREE_NETDEV | ||
410 | #define free_netdev(dev) kfree(dev) | ||
411 | #endif | ||
412 | |||
413 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)) | ||
414 | |||
415 | #define af_packet_priv data | ||
416 | #endif | ||
417 | |||
418 | |||
419 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) | ||
420 | #define DRV_SUSPEND_STATE_TYPE pm_message_t | ||
421 | #else | ||
422 | #define DRV_SUSPEND_STATE_TYPE uint32 | ||
423 | #endif | ||
424 | |||
425 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) | ||
426 | #define CHECKSUM_HW CHECKSUM_PARTIAL | ||
427 | #endif | ||
428 | |||
429 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)) | ||
430 | #define KILL_PROC(pid, sig) \ | ||
431 | { \ | ||
432 | struct task_struct *tsk; \ | ||
433 | tsk = pid_task(find_vpid(pid), PIDTYPE_PID); \ | ||
434 | if (tsk) send_sig(sig, tsk, 1); \ | ||
435 | } | ||
436 | #else | ||
437 | #define KILL_PROC(pid, sig) \ | ||
438 | { \ | ||
439 | kill_proc(pid, sig, 1); \ | ||
440 | } | ||
441 | #endif | ||
442 | |||
443 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)) | ||
444 | #define netdev_priv(dev) dev->priv | ||
445 | #endif | ||
446 | |||
447 | #endif | ||