blob: d806b89932fbb4b8ca4d0fb98381f40ab4c21850 [file] [log] [blame]
/*
* public_types.h
*
* Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* * Neither the name Texas Instruments nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**********************************************************************************************************************
FILENAME: public_types.h
DESCRIPTION: Basic types and general macros, bit manipulations, etc.
***********************************************************************************************************************/
#ifndef PUBLIC_TYPES_H
#define PUBLIC_TYPES_H
/******************************************************************************
Basic definitions
******************************************************************************/
#ifndef uint8
typedef unsigned char uint8;
#endif
#ifndef uint16
typedef unsigned short uint16;
#endif
#ifndef uint32
typedef unsigned long int uint32;
#endif
#ifndef uint64
typedef unsigned long long uint64;
#endif
#ifndef int8
typedef signed char int8;
#endif
#ifndef int16
typedef short int16;
#endif
#ifndef int32
typedef long int int32;
#endif
#ifndef int64
typedef long long int64;
#endif
#ifdef HOST_COMPILE
#ifndef TI_TRUE
#define TI_TRUE 1
#endif
#ifndef TI_FALSE
#define TI_FALSE 0
#endif
#else
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#define STATIC static
#define INLINE inline
#endif
/* !! LAC - NULL definition conflicts with the compilers version.
I redid this definition to the ANSI version....
#define NULL 0
*/
#if !defined( NULL )
#if defined( __cplusplus )
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
/* Bool_e should be used when we need it to be a byte. */
typedef uint8 Bool_e;
/* Bool32 should be used whenever possible for efficiency */
typedef uint32 Bool32;
/* to align enum to 32/16 bits */
#define MAX_POSITIVE32 0x7FFFFFFF
#define MAX_POSITIVE16 0x7FFF
#define MAX_POSITIVE8 0x7F
#define MAC_ADDR_SIZE 6 /* In Bytes */
#define MAC_ADDRESS_MANUFACTURE_TYPE_LENGHT 3 /* In Bytes */
#define MAC_ADDRESS_STATION_ID_LENGHT 3 /* In Bytes */
#ifdef HOST_COMPILE
#else
typedef struct macAddress_t
{
uint8 addr[MAC_ADDR_SIZE];
}macAddress_t;
#endif
#define BIT_0 0x00000001
#define BIT_1 0x00000002
#define BIT_2 0x00000004
#define BIT_3 0x00000008
#define BIT_4 0x00000010
#define BIT_5 0x00000020
#define BIT_6 0x00000040
#define BIT_7 0x00000080
#define BIT_8 0x00000100
#define BIT_9 0x00000200
#define BIT_10 0x00000400
#define BIT_11 0x00000800
#define BIT_12 0x00001000
#define BIT_13 0x00002000
#define BIT_14 0x00004000
#define BIT_15 0x00008000
#define BIT_16 0x00010000
#define BIT_17 0x00020000
#define BIT_18 0x00040000
#define BIT_19 0x00080000
#define BIT_20 0x00100000
#define BIT_21 0x00200000
#define BIT_22 0x00400000
#define BIT_23 0x00800000
#define BIT_24 0x01000000
#define BIT_25 0x02000000
#define BIT_26 0x04000000
#define BIT_27 0x08000000
#define BIT_28 0x10000000
#define BIT_29 0x20000000
#define BIT_30 0x40000000
#define BIT_31 0x80000000
#define BIT_32 0x00000001
#define BIT_33 0x00000002
#define BIT_34 0x00000004
#define BIT_35 0x00000008
#define BIT_36 0x00000010
#define BIT_37 0x00000020
#define BIT_38 0x00000040
#define BIT_39 0x00000080
#define BIT_40 0x00000100
#define BIT_41 0x00000200
#define BIT_42 0x00000400
#define BIT_43 0x00000800
#define BIT_44 0x00001000
#define BIT_45 0x00002000
#define BIT_46 0x00004000
#define BIT_47 0x00008000
#define BIT_48 0x00010000
#define BIT_49 0x00020000
#define BIT_50 0x00040000
#define BIT_51 0x00080000
#define BIT_52 0x00100000
#define BIT_53 0x00200000
#define BIT_54 0x00400000
#define BIT_55 0x00800000
#define BIT_56 0x01000000
#define BIT_57 0x02000000
#define BIT_58 0x04000000
#define BIT_59 0x08000000
#define BIT_60 0x10000000
#define BIT_61 0x20000000
#define BIT_62 0x40000000
#define BIT_63 0x80000000
/******************************************************************************
CHANNELS, BAND & REG DOMAINS definitions
******************************************************************************/
typedef uint8 Channel_e;
typedef enum
{
RADIO_BAND_2_4GHZ = 0, /* 2.4 Ghz band */
RADIO_BAND_5GHZ = 1, /* 5 Ghz band */
RADIO_BAND_JAPAN_4_9_GHZ = 2,
DEFAULT_BAND = RADIO_BAND_2_4GHZ,
INVALID_BAND = 0x7E,
MAX_RADIO_BANDS = 0x7F
} RadioBand_enum;
#ifdef HOST_COMPILE
typedef uint8 RadioBand_e;
#else
typedef RadioBand_enum RadioBand_e;
#endif
/* The following enum is used in the FW for HIF interface only !!!!! */
typedef enum
{
HW_BIT_RATE_1MBPS = BIT_0 ,
HW_BIT_RATE_2MBPS = BIT_1 ,
HW_BIT_RATE_5_5MBPS = BIT_2 ,
HW_BIT_RATE_6MBPS = BIT_3 ,
HW_BIT_RATE_9MBPS = BIT_4 ,
HW_BIT_RATE_11MBPS = BIT_5 ,
HW_BIT_RATE_12MBPS = BIT_6 ,
HW_BIT_RATE_18MBPS = BIT_7 ,
HW_BIT_RATE_22MBPS = BIT_8 ,
HW_BIT_RATE_24MBPS = BIT_9 ,
HW_BIT_RATE_36MBPS = BIT_10,
HW_BIT_RATE_48MBPS = BIT_11,
HW_BIT_RATE_54MBPS = BIT_12,
HW_BIT_RATE_MCS_0 = BIT_13,
HW_BIT_RATE_MCS_1 = BIT_14,
HW_BIT_RATE_MCS_2 = BIT_15,
HW_BIT_RATE_MCS_3 = BIT_16,
HW_BIT_RATE_MCS_4 = BIT_17,
HW_BIT_RATE_MCS_5 = BIT_18,
HW_BIT_RATE_MCS_6 = BIT_19,
HW_BIT_RATE_MCS_7 = BIT_20
} EHwBitRate;
/* The following enum is used in the FW for HIF interface only !!!!! */
typedef enum
{
txPolicyMcs7 = 0,
txPolicyMcs6,
txPolicyMcs5,
txPolicyMcs4,
txPolicyMcs3,
txPolicyMcs2,
txPolicyMcs1,
txPolicyMcs0,
txPolicy54,
txPolicy48,
txPolicy36,
txPolicy24,
txPolicy22,
txPolicy18,
txPolicy12,
txPolicy11,
txPolicy9,
txPolicy6,
txPolicy5_5,
txPolicy2,
txPolicy1,
MAX_NUM_OF_TX_RATES_IN_CLASS,
TX_RATE_INDEX_ENUM_MAX_SIZE = 0xFF
} ETxRateClassId;
#define SHORT_PREAMBLE_BIT BIT_0 /* CCK or Barker depending on the rate */
#define OFDM_RATE_BIT BIT_6
#define PBCC_RATE_BIT BIT_7
typedef enum
{
CCK_LONG = 0,
CCK_SHORT = SHORT_PREAMBLE_BIT,
PBCC_LONG = PBCC_RATE_BIT,
PBCC_SHORT = PBCC_RATE_BIT | SHORT_PREAMBLE_BIT,
OFDM = OFDM_RATE_BIT
} Mod_enum;
#ifdef HOST_COMPILE
typedef uint8 Mod_e;
#else
typedef Mod_enum Mod_e;
#endif
typedef uint16 BasicRateSet_t;
/******************************************************************************
Transmit-Descriptor RATE-SET field definitions...
******************************************************************************/
typedef uint32 EHwRateBitFiled;/* set with EHwBitRate values */
#ifdef HOST_COMPILE
typedef uint8 TxRateIndex_t; /* set with ETxRateClassId values */
#else
typedef ETxRateClassId TxRateIndex_t;
#endif
/******************************************************************************
CHIP_ID definitions
******************************************************************************/
#define TNETW1150_PG10_CHIP_ID 0x04010101
#define TNETW1150_PG11_CHIP_ID 0x04020101
#define TNETW1150_CHIP_ID 0x04030101 /* 1150 PG2.0, 1250, 1350, 1450*/
#define TNETW1350A_CHIP_ID 0x06010101
#define TNETW1251_CHIP_ID_PG1_0 0x07010101
#define TNETW1251_CHIP_ID_PG1_1 0x07020101
#define TNETW1251_CHIP_ID_PG1_2 0x07030101
#define TNETW1273_CHIP_ID_PG1_0 0x04030101
#define TNETW1273_CHIP_ID_PG1_1 0x04030111
#define CHECK_CHIP_ID(chipId) (CHIP_ID_B == chipId)
/******************************************************************************
Enable bits for SOC1251 PG1.2
******************************************************************************/
#define PDET_BINARY_OFFSET_EN BIT_0
#define STOP_TOGGLE_MONADC_EN BIT_1
#define RX_ADC_BIAS_DEC_EN BIT_2
#define RX_LNB_AND_DIGI_GAIN_EN BIT_3
#endif /* PUBLIC_TYPES_H*/