Fix license missed during initial conversion
[open-ath9k-htc-firmware.git] / target_firmware / wlan / ah_osdep.h
1 /*-
2  * Copyright (c) 2002-2004 Sam Leffler, Errno Consulting, Atheros
3  * Communications, Inc.  All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following NO
10  *    ''WARRANTY'' disclaimer below (''Disclaimer''), without
11  *    modification.
12  * 2. Redistributions in binary form must reproduce at minimum a
13  *    disclaimer similar to the Disclaimer below and any redistribution
14  *    must be conditioned upon including a substantially similar
15  *    Disclaimer requirement for further binary redistribution.
16  * 3. Neither the names of the above-listed copyright holders nor the
17  *    names of any contributors may be used to endorse or promote
18  *    product derived from this software without specific prior written
19  *    permission.
20  *
21  * NO WARRANTY
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23  * ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24  * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT,
25  * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
26  * IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE
27  * FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
29  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
30  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
31  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
32  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33  * SUCH DAMAGES.
34  *
35  * $Id: //depot/sw/branches/fusion_usb/target_firmware/wlan/target/hal/main/linux/ah_osdep.h#1 $
36  */
37 #ifndef _ATH_AH_OSDEP_H_
38 #define _ATH_AH_OSDEP_H_
39 /*
40  * Atheros Hardware Access Layer (HAL) OS Dependent Definitions.
41  */
42
43 /*
44  * Starting with 2.6.4 the kernel supports a configuration option
45  * to pass parameters in registers.  If this is enabled we must
46  * mark all function interfaces in+out of the HAL to pass parameters
47  * on the stack as this is the convention used internally (for
48  * maximum portability).
49  *
50  * XXX A lot of functions have __ahdecl in their definition but not declaration
51  * So compile breaks.
52  * Since This is only an issue for i386 which has regparam enabled, instead of
53  * changing the vanilla FC3 kernel, for now, remove the regparm
54  * disabling.
55  */
56
57 #include <adf_os_types.h>
58 #include <adf_os_dma.h>
59 #include <adf_os_timer.h>
60 #include <adf_os_time.h>
61 #include <adf_os_lock.h>
62 #include <adf_os_io.h>
63 #include <adf_os_mem.h>
64 #include <adf_os_module.h>
65 #include <adf_os_util.h>
66 #include <adf_os_stdtypes.h>
67 #include <adf_os_defer.h>
68 #include <adf_os_atomic.h>
69 #include <adf_nbuf.h>
70 #include <adf_net.h>
71
72 /* CONFIG_REGPARM has been removed from 2.6.20 onwards.
73  * Since this is relevant only for i386 architectures, changing check to
74  * i386.
75  */
76
77 #ifdef __adf_i386__
78 #define __ahdecl    __attribute__((regparm(0)))
79 #else
80 #define __ahdecl
81 #endif
82 #ifndef adf_os_packed
83 #define adf_os_packed    __attribute__((__packed__))
84 #endif
85 #ifdef __FreeBSD__
86 /*
87  * When building the HAL proper we use no GPL-contaminated include
88  * files and must define these types ourself.  Beware of these being
89  * mismatched against the contents of <linux/types.h>
90  */
91 /* NB: arm defaults to unsigned so be explicit */
92 /* cometothis later when seperating os deps */
93 typedef __va_list va_list;
94 // typedef void *va_list;
95 #define va_start(ap, last) \
96         __builtin_stdarg_start((ap), (last))
97
98 #define va_end(ap) \
99         __builtin_va_end(ap)
100 #endif
101
102 /*
103  * Linux/BSD gcc compatibility shims.
104  */
105 #ifdef TODO //freebsd has definition
106 #define __printflike(_a,_b) \
107     __attribute__ ((__format__ (__printf__, _a, _b)))
108 #endif
109 #ifndef __va_list
110 #define __va_list   va_list
111 #endif
112 #ifdef TODO //freebsd has definition
113 #define OS_INLINE   __inline
114 #endif
115
116 typedef void* HAL_SOFTC;
117 typedef a_int32_t HAL_BUS_TAG;
118 typedef void* HAL_BUS_HANDLE;
119 typedef a_uint32_t HAL_BUS_ADDR;         /* XXX architecture dependent */
120
121 /*
122  * Delay n microseconds.
123  */
124 extern  void __ahdecl ath_hal_delay(a_int32_t);
125 #define OS_DELAY(_n)    ath_hal_delay(_n)
126
127 extern  void* __ahdecl ath_hal_ioremap(a_uint32_t addr, a_uint32_t len);
128 #define OS_REMAP(_addr, _len)       ath_hal_ioremap(_addr, _len)
129
130 #define OS_MEMCPY(_d, _s, _n)   ath_hal_memcpy(_d,_s,_n)
131 extern void * __ahdecl ath_hal_memcpy(void *, const void *, size_t);
132
133 #ifndef abs
134 #define abs(_a)     __builtin_abs(_a)
135 #endif
136
137 struct ath_hal;
138 extern  a_uint32_t __ahdecl ath_hal_getuptime(struct ath_hal *);
139 #define OS_GETUPTIME(_ah)   ath_hal_getuptime(_ah)
140
141 #ifndef __bswap32
142 #define __bswap32(_x)   (_x)
143 #endif
144 #ifndef __bswap16
145 #define __bswap16(_x)   (_x)
146 #endif
147
148 #define AH_USE_EEPROM     0x00000001
149 extern  struct ath_hal *_ath_hal_attach_tgt( a_uint32_t, HAL_SOFTC, adf_os_device_t,
150        a_uint32_t flags, void* status);
151 #endif /* _ATH_AH_OSDEP_H_ */