1/*
2 * public_types.h
3 *
4 * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 *  * Redistributions of source code must retain the above copyright
12 *    notice, this list of conditions and the following disclaimer.
13 *  * Redistributions in binary form must reproduce the above copyright
14 *    notice, this list of conditions and the following disclaimer in
15 *    the documentation and/or other materials provided with the
16 *    distribution.
17 *  * Neither the name Texas Instruments nor the names of its
18 *    contributors may be used to endorse or promote products derived
19 *    from this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 */
33
34/**********************************************************************************************************************
35
36  FILENAME:       public_types.h
37
38  DESCRIPTION:    Basic types and general macros, bit manipulations, etc.
39
40
41
42***********************************************************************************************************************/
43#ifndef PUBLIC_TYPES_H
44#define PUBLIC_TYPES_H
45
46
47/******************************************************************************
48
49    Basic definitions
50
51******************************************************************************/
52#ifndef uint8
53typedef unsigned char   uint8;
54#endif
55#ifndef uint16
56typedef unsigned short  uint16;
57#endif
58#ifndef uint32
59typedef unsigned long int    uint32;
60#endif
61#ifndef uint64
62typedef unsigned long long    uint64;
63#endif
64
65
66#ifndef int8
67typedef signed char     int8;
68#endif
69#ifndef int16
70typedef short           int16;
71#endif
72#ifndef int32
73typedef long int        int32;
74#endif
75#ifndef int64
76typedef long long       int64;
77#endif
78
79
80#ifdef HOST_COMPILE
81    #ifndef TI_TRUE
82    #define TI_TRUE  1
83    #endif
84    #ifndef TI_FALSE
85    #define TI_FALSE 0
86    #endif
87#else
88    #ifndef TRUE
89    #define TRUE  1
90    #endif
91    #ifndef FALSE
92    #define FALSE 0
93    #endif
94    #define STATIC			static
95    #define INLINE			inline
96#endif
97
98/* !! LAC - NULL definition conflicts with the compilers version.
99   I redid this definition to the ANSI version....
100    #define NULL 0
101*/
102#if !defined( NULL )
103#if defined( __cplusplus )
104#define NULL 0
105#else
106#define NULL ((void *)0)
107#endif
108#endif
109
110/* Bool_e should be used when we need it to be a byte. */
111typedef uint8           Bool_e;
112
113/* Bool32 should be used whenever possible for efficiency */
114typedef uint32          Bool32;
115
116/* to align enum to 32/16 bits */
117#define MAX_POSITIVE32 0x7FFFFFFF
118#define MAX_POSITIVE16 0x7FFF
119#define MAX_POSITIVE8  0x7F
120
121#define MAC_ADDR_SIZE							6   /* In Bytes */
122#define MAC_ADDRESS_MANUFACTURE_TYPE_LENGHT		3   /* In Bytes */
123#define MAC_ADDRESS_STATION_ID_LENGHT			3   /* In Bytes */
124
125#ifdef HOST_COMPILE
126#else
127typedef struct macAddress_t
128{
129    uint8 addr[MAC_ADDR_SIZE];
130}macAddress_t;
131#endif
132
133
134#define  BIT_0    0x00000001
135#define  BIT_1    0x00000002
136#define  BIT_2    0x00000004
137#define  BIT_3    0x00000008
138#define  BIT_4    0x00000010
139#define  BIT_5    0x00000020
140#define  BIT_6    0x00000040
141#define  BIT_7    0x00000080
142#define  BIT_8    0x00000100
143#define  BIT_9    0x00000200
144#define  BIT_10   0x00000400
145#define  BIT_11   0x00000800
146#define  BIT_12   0x00001000
147#define  BIT_13   0x00002000
148#define  BIT_14   0x00004000
149#define  BIT_15   0x00008000
150#define  BIT_16   0x00010000
151#define  BIT_17   0x00020000
152#define  BIT_18   0x00040000
153#define  BIT_19   0x00080000
154#define  BIT_20   0x00100000
155#define  BIT_21   0x00200000
156#define  BIT_22   0x00400000
157#define  BIT_23   0x00800000
158#define  BIT_24   0x01000000
159#define  BIT_25   0x02000000
160#define  BIT_26   0x04000000
161#define  BIT_27   0x08000000
162#define  BIT_28   0x10000000
163#define  BIT_29   0x20000000
164#define  BIT_30   0x40000000
165#define  BIT_31   0x80000000
166
167#define  BIT_32   0x00000001
168#define  BIT_33   0x00000002
169#define  BIT_34   0x00000004
170#define  BIT_35   0x00000008
171#define  BIT_36   0x00000010
172#define  BIT_37   0x00000020
173#define  BIT_38   0x00000040
174#define  BIT_39   0x00000080
175#define  BIT_40   0x00000100
176#define  BIT_41   0x00000200
177#define  BIT_42   0x00000400
178#define  BIT_43   0x00000800
179#define  BIT_44   0x00001000
180#define  BIT_45   0x00002000
181#define  BIT_46   0x00004000
182#define  BIT_47   0x00008000
183#define  BIT_48   0x00010000
184#define  BIT_49   0x00020000
185#define  BIT_50   0x00040000
186#define  BIT_51   0x00080000
187#define  BIT_52   0x00100000
188#define  BIT_53   0x00200000
189#define  BIT_54   0x00400000
190#define  BIT_55   0x00800000
191#define  BIT_56   0x01000000
192#define  BIT_57   0x02000000
193#define  BIT_58   0x04000000
194#define  BIT_59   0x08000000
195#define  BIT_60   0x10000000
196#define  BIT_61   0x20000000
197#define  BIT_62   0x40000000
198#define  BIT_63   0x80000000
199
200
201/******************************************************************************
202
203    CHANNELS, BAND & REG DOMAINS definitions
204
205******************************************************************************/
206
207
208typedef uint8 Channel_e;
209
210typedef enum
211{
212    RADIO_BAND_2_4GHZ = 0,  /* 2.4 Ghz band */
213    RADIO_BAND_5GHZ = 1,    /* 5 Ghz band */
214    RADIO_BAND_JAPAN_4_9_GHZ = 2,
215    DEFAULT_BAND = RADIO_BAND_2_4GHZ,
216    INVALID_BAND = 0x7E,
217    MAX_RADIO_BANDS = 0x7F
218} RadioBand_enum;
219
220#ifdef HOST_COMPILE
221typedef uint8 RadioBand_e;
222#else
223typedef RadioBand_enum RadioBand_e;
224#endif
225
226/* The following enum is used in the FW for HIF interface only !!!!! */
227typedef enum
228{
229    HW_BIT_RATE_1MBPS   = BIT_0 ,
230    HW_BIT_RATE_2MBPS   = BIT_1 ,
231    HW_BIT_RATE_5_5MBPS = BIT_2 ,
232    HW_BIT_RATE_6MBPS   = BIT_3 ,
233    HW_BIT_RATE_9MBPS   = BIT_4 ,
234    HW_BIT_RATE_11MBPS  = BIT_5 ,
235    HW_BIT_RATE_12MBPS  = BIT_6 ,
236    HW_BIT_RATE_18MBPS  = BIT_7 ,
237    HW_BIT_RATE_22MBPS  = BIT_8 ,
238    HW_BIT_RATE_24MBPS  = BIT_9 ,
239    HW_BIT_RATE_36MBPS  = BIT_10,
240    HW_BIT_RATE_48MBPS  = BIT_11,
241    HW_BIT_RATE_54MBPS  = BIT_12,
242    HW_BIT_RATE_MCS_0  	= BIT_13,
243    HW_BIT_RATE_MCS_1  	= BIT_14,
244    HW_BIT_RATE_MCS_2  	= BIT_15,
245    HW_BIT_RATE_MCS_3  	= BIT_16,
246    HW_BIT_RATE_MCS_4  	= BIT_17,
247    HW_BIT_RATE_MCS_5  	= BIT_18,
248    HW_BIT_RATE_MCS_6  	= BIT_19,
249    HW_BIT_RATE_MCS_7  	= BIT_20
250} EHwBitRate;
251
252/* The following enum is used in the FW for HIF interface only !!!!! */
253typedef enum
254{
255    txPolicyMcs7 = 0,
256    txPolicyMcs6,
257    txPolicyMcs5,
258    txPolicyMcs4,
259    txPolicyMcs3,
260    txPolicyMcs2,
261    txPolicyMcs1,
262    txPolicyMcs0,
263    txPolicy54,
264    txPolicy48,
265    txPolicy36,
266    txPolicy24,
267    txPolicy22,
268    txPolicy18,
269    txPolicy12,
270    txPolicy11,
271    txPolicy9,
272    txPolicy6,
273    txPolicy5_5,
274    txPolicy2,
275    txPolicy1,
276    MAX_NUM_OF_TX_RATES_IN_CLASS,
277    TX_RATE_INDEX_ENUM_MAX_SIZE = 0xFF
278} ETxRateClassId;
279
280
281
282
283#define SHORT_PREAMBLE_BIT   BIT_0 /* CCK or Barker depending on the rate */
284#define OFDM_RATE_BIT        BIT_6
285#define PBCC_RATE_BIT        BIT_7
286
287
288typedef enum
289{
290    CCK_LONG = 0,
291    CCK_SHORT = SHORT_PREAMBLE_BIT,
292    PBCC_LONG = PBCC_RATE_BIT,
293    PBCC_SHORT = PBCC_RATE_BIT | SHORT_PREAMBLE_BIT,
294    OFDM = OFDM_RATE_BIT
295} Mod_enum;
296
297#ifdef HOST_COMPILE
298typedef  uint8 Mod_e;
299#else
300typedef  Mod_enum Mod_e;
301#endif
302
303
304typedef uint16 BasicRateSet_t;
305
306
307/******************************************************************************
308
309Transmit-Descriptor RATE-SET field definitions...
310
311******************************************************************************/
312
313typedef uint32 EHwRateBitFiled;/* set with EHwBitRate values */
314
315#ifdef HOST_COMPILE
316typedef uint8  TxRateIndex_t;  /* set with ETxRateClassId values */
317#else
318typedef ETxRateClassId TxRateIndex_t;
319#endif
320
321/******************************************************************************
322
323    CHIP_ID definitions
324
325******************************************************************************/
326#define TNETW1150_PG10_CHIP_ID          0x04010101
327#define TNETW1150_PG11_CHIP_ID          0x04020101
328#define TNETW1150_CHIP_ID               0x04030101  /* 1150 PG2.0, 1250, 1350, 1450*/
329#define TNETW1350A_CHIP_ID              0x06010101
330#define TNETW1251_CHIP_ID_PG1_0         0x07010101
331#define TNETW1251_CHIP_ID_PG1_1         0x07020101
332#define TNETW1251_CHIP_ID_PG1_2	        0x07030101
333#define TNETW1273_CHIP_ID_PG1_0	        0x04030101
334#define TNETW1273_CHIP_ID_PG1_1	        0x04030111
335
336#define CHECK_CHIP_ID(chipId) (CHIP_ID_B == chipId)
337
338/******************************************************************************
339Enable bits for SOC1251 PG1.2
340******************************************************************************/
341#define PDET_BINARY_OFFSET_EN   BIT_0
342#define STOP_TOGGLE_MONADC_EN   BIT_1
343#define RX_ADC_BIAS_DEC_EN      BIT_2
344#define RX_LNB_AND_DIGI_GAIN_EN BIT_3
345
346
347#endif /* PUBLIC_TYPES_H*/
348