348 lines
9.8 KiB
C
348 lines
9.8 KiB
C
/*
|
|
*************************************************************************
|
|
* Ralink Tech Inc.
|
|
* 5F., No.36, Taiyuan St., Jhubei City,
|
|
* Hsinchu County 302,
|
|
* Taiwan, R.O.C.
|
|
*
|
|
* (c) Copyright 2002-2007, Ralink Technology, Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
* This program is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* GNU General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU General Public License *
|
|
* along with this program; if not, write to the *
|
|
* Free Software Foundation, Inc., *
|
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
|
* *
|
|
*************************************************************************
|
|
*/
|
|
|
|
#ifndef __ATE_H__
|
|
#define __ATE_H__
|
|
|
|
#ifndef UCOS
|
|
#define ate_print printk
|
|
#define ATEDBGPRINT DBGPRINT
|
|
#define EEPROM_SIZE 0x200
|
|
#ifdef CONFIG_STA_SUPPORT
|
|
#define EEPROM_BIN_FILE_NAME "/etc/Wireless/RT2860STA/e2p.bin"
|
|
#endif // CONFIG_STA_SUPPORT //
|
|
|
|
#else // !UCOS //
|
|
#define fATE_LOAD_EEPROM 0x0C43
|
|
#ifdef CONFIG_PRINTK
|
|
extern INT ConsoleResponse(IN PUCHAR buff);
|
|
extern int (*remote_display)(char *);
|
|
extern void puts (const char *s);
|
|
|
|
/* specificly defined to redirect and show ate-related messages to host. */
|
|
/* Try to define ate_print as a macro. */
|
|
#define ate_print(fmt, args...) \
|
|
do{ int (*org_remote_display)(char *) = NULL; \
|
|
org_remote_display = remote_display;\
|
|
/* Save original "remote_display" */\
|
|
remote_display = (int (*)(char *))ConsoleResponse; \
|
|
printk(fmt, ## args); \
|
|
/* Restore the remote_display function pointer */ \
|
|
remote_display = org_remote_display; }while(0)
|
|
|
|
#define ATEDBGPRINT(Level, Fmt) \
|
|
{ \
|
|
if ((Level) <= RTDebugLevel) \
|
|
{ \
|
|
ate_print Fmt; \
|
|
} \
|
|
}
|
|
#endif // CONFIG_PRINTK //
|
|
#endif // !UCOS //
|
|
|
|
#define ATE_ON(_p) (((_p)->ate.Mode) != ATE_STOP)
|
|
|
|
/* RT2880_iNIC will define "RT2860". */
|
|
#define ATE_BBP_IO_READ8_BY_REG_ID(_A, _I, _pV) \
|
|
{ \
|
|
BBP_CSR_CFG_STRUC BbpCsr; \
|
|
int i, k; \
|
|
for (i=0; i<MAX_BUSY_COUNT; i++) \
|
|
{ \
|
|
RTMP_IO_READ32(_A, BBP_CSR_CFG, &BbpCsr.word); \
|
|
if (BbpCsr.field.Busy == BUSY) \
|
|
{ \
|
|
continue; \
|
|
} \
|
|
BbpCsr.word = 0; \
|
|
BbpCsr.field.fRead = 1; \
|
|
BbpCsr.field.BBP_RW_MODE = 1; \
|
|
BbpCsr.field.Busy = 1; \
|
|
BbpCsr.field.RegNum = _I; \
|
|
RTMP_IO_WRITE32(_A, BBP_CSR_CFG, BbpCsr.word); \
|
|
for (k=0; k<MAX_BUSY_COUNT; k++) \
|
|
{ \
|
|
RTMP_IO_READ32(_A, BBP_CSR_CFG, &BbpCsr.word); \
|
|
if (BbpCsr.field.Busy == IDLE) \
|
|
break; \
|
|
} \
|
|
if ((BbpCsr.field.Busy == IDLE) && \
|
|
(BbpCsr.field.RegNum == _I)) \
|
|
{ \
|
|
*(_pV) = (UCHAR)BbpCsr.field.Value; \
|
|
break; \
|
|
} \
|
|
} \
|
|
if (BbpCsr.field.Busy == BUSY) \
|
|
{ \
|
|
ATEDBGPRINT(RT_DEBUG_ERROR, ("BBP read R%d fail\n", _I)); \
|
|
*(_pV) = (_A)->BbpWriteLatch[_I]; \
|
|
} \
|
|
}
|
|
|
|
#define ATE_BBP_IO_WRITE8_BY_REG_ID(_A, _I, _V) \
|
|
{ \
|
|
BBP_CSR_CFG_STRUC BbpCsr; \
|
|
int BusyCnt; \
|
|
for (BusyCnt=0; BusyCnt<MAX_BUSY_COUNT; BusyCnt++) \
|
|
{ \
|
|
RTMP_IO_READ32(_A, BBP_CSR_CFG, &BbpCsr.word); \
|
|
if (BbpCsr.field.Busy == BUSY) \
|
|
continue; \
|
|
BbpCsr.word = 0; \
|
|
BbpCsr.field.fRead = 0; \
|
|
BbpCsr.field.BBP_RW_MODE = 1; \
|
|
BbpCsr.field.Busy = 1; \
|
|
BbpCsr.field.Value = _V; \
|
|
BbpCsr.field.RegNum = _I; \
|
|
RTMP_IO_WRITE32(_A, BBP_CSR_CFG, BbpCsr.word); \
|
|
(_A)->BbpWriteLatch[_I] = _V; \
|
|
break; \
|
|
} \
|
|
if (BusyCnt == MAX_BUSY_COUNT) \
|
|
{ \
|
|
ATEDBGPRINT(RT_DEBUG_ERROR, ("BBP write R%d fail\n", _I)); \
|
|
} \
|
|
}
|
|
|
|
/* RT2880_iNIC will define RT2860. */
|
|
#define EEPROM_SIZE 0x200
|
|
/* iNIC has its own EEPROM_BIN_FILE_NAME */
|
|
#ifndef UCOS
|
|
#ifdef CONFIG_STA_SUPPORT
|
|
#define EEPROM_BIN_FILE_NAME "/etc/Wireless/RT2860STA/e2p.bin"
|
|
#endif // CONFIG_STA_SUPPORT //
|
|
#endif // !UCOS //
|
|
|
|
|
|
|
|
VOID rt_ee_read_all(
|
|
IN PRTMP_ADAPTER pAd,
|
|
OUT USHORT *Data);
|
|
|
|
|
|
VOID rt_ee_write_all(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN USHORT *Data);
|
|
|
|
INT Set_ATE_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_DA_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_SA_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_BSSID_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_CHANNEL_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_TX_POWER0_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_TX_POWER1_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_TX_Antenna_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_RX_Antenna_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_TX_FREQOFFSET_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_TX_BW_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_TX_LENGTH_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_TX_COUNT_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_TX_MCS_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_TX_MODE_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_TX_GI_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
|
|
INT Set_ATE_RX_FER_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_Read_RF_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_Write_RF1_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_Write_RF2_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_Write_RF3_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_Write_RF4_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_Load_E2P_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_Read_E2P_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_Show_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_ATE_Help_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
#ifdef RALINK_ATE
|
|
#ifdef RALINK_28xx_QA
|
|
VOID ATE_QA_Statistics(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PRXWI_STRUC pRxWI,
|
|
IN PRT28XX_RXD_STRUC p28xxRxD,
|
|
IN PHEADER_802_11 pHeader);
|
|
|
|
VOID RtmpDoAte(
|
|
IN PRTMP_ADAPTER pAdapter,
|
|
IN struct iwreq *wrq);
|
|
|
|
VOID BubbleSort(
|
|
IN INT32 n,
|
|
IN INT32 a[]);
|
|
|
|
VOID CalNoiseLevel(
|
|
IN PRTMP_ADAPTER pAdapter,
|
|
IN UCHAR channel,
|
|
OUT INT32 buffer[3][10]);
|
|
|
|
BOOLEAN SyncTxRxConfig(
|
|
IN PRTMP_ADAPTER pAdapter,
|
|
IN USHORT offset,
|
|
IN UCHAR value);
|
|
|
|
#if 0
|
|
INT Set_TxStart_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
#endif // 0 //
|
|
|
|
INT Set_TxStop_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_RxStop_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
#if 0
|
|
INT Set_EERead_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_EEWrite_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_BBPRead_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_BBPWrite_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
|
|
INT Set_RFWrite_Proc(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PUCHAR arg);
|
|
#endif // end of #if 0 //
|
|
#endif // RALINK_28xx_QA //
|
|
#endif // RALINK_ATE //
|
|
|
|
VOID ATEAsicSwitchChannel(
|
|
IN PRTMP_ADAPTER pAd);
|
|
|
|
VOID ATEAsicAdjustTxPower(
|
|
IN PRTMP_ADAPTER pAd);
|
|
|
|
VOID ATEDisableAsicProtect(
|
|
IN PRTMP_ADAPTER pAd);
|
|
|
|
CHAR ATEConvertToRssi(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN CHAR Rssi,
|
|
IN UCHAR RssiNumber);
|
|
|
|
VOID ATESampleRssi(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PRXWI_STRUC pRxWI);
|
|
|
|
|
|
#ifdef CONFIG_STA_SUPPORT
|
|
VOID RTMPStationStop(
|
|
IN PRTMP_ADAPTER pAd);
|
|
|
|
VOID RTMPStationStart(
|
|
IN PRTMP_ADAPTER pAd);
|
|
#endif // CONFIG_STA_SUPPORT //
|
|
#endif // __ATE_H__ //
|