1 /* 2 ************************************************************************* 3 * Ralink Tech Inc. 4 * 5F., No.36, Taiyuan St., Jhubei City, 5 * Hsinchu County 302, 6 * Taiwan, R.O.C. 7 * 8 * (c) Copyright 2002-2007, Ralink Technology, Inc. 9 * 10 * This program is free software; you can redistribute it and/or modify * 11 * it under the terms of the GNU General Public License as published by * 12 * the Free Software Foundation; either version 2 of the License, or * 13 * (at your option) any later version. * 14 * * 15 * This program is distributed in the hope that it will be useful, * 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 18 * GNU General Public License for more details. * 19 * * 20 * You should have received a copy of the GNU General Public License * 21 * along with this program; if not, write to the * 22 * Free Software Foundation, Inc., * 23 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 24 * * 25 ************************************************************************* 26 */ 27 28 #ifndef __ATE_H__ 29 #define __ATE_H__ 30 31 #ifndef UCOS 32 #define ate_print printk 33 #define ATEDBGPRINT DBGPRINT 34 #ifdef RT2860 35 #define EEPROM_SIZE 0x200 36 #ifdef CONFIG_STA_SUPPORT 37 #define EEPROM_BIN_FILE_NAME "/etc/Wireless/RT2860STA/e2p.bin" 38 #endif // CONFIG_STA_SUPPORT // 39 #endif // RT2860 // 40 41 #else // !UCOS // 42 #define fATE_LOAD_EEPROM 0x0C43 43 #ifdef CONFIG_PRINTK 44 extern INT ConsoleResponse(IN PUCHAR buff); 45 extern int (*remote_display)(char *); 46 extern void puts (const char *s); 47 48 /* specificly defined to redirect and show ate-related messages to host. */ 49 /* Try to define ate_print as a macro. */ 50 #define ate_print(fmt, args...) \ 51 do{ int (*org_remote_display)(char *) = NULL; \ 52 org_remote_display = remote_display;\ 53 /* Save original "remote_display" */\ 54 remote_display = (int (*)(char *))ConsoleResponse; \ 55 printk(fmt, ## args); \ 56 /* Restore the remote_display function pointer */ \ 57 remote_display = org_remote_display; }while(0) 58 59 #define ATEDBGPRINT(Level, Fmt) \ 60 { \ 61 if ((Level) <= RTDebugLevel) \ 62 { \ 63 ate_print Fmt; \ 64 } \ 65 } 66 #endif // CONFIG_PRINTK // 67 #endif // !UCOS // 68 69 #define ATE_ON(_p) (((_p)->ate.Mode) != ATE_STOP) 70 71 /* RT2880_iNIC will define "RT2860". */ 72 #ifdef RT2860 73 #define ATE_BBP_IO_READ8_BY_REG_ID(_A, _I, _pV) \ 74 { \ 75 BBP_CSR_CFG_STRUC BbpCsr; \ 76 int i, k; \ 77 for (i=0; i<MAX_BUSY_COUNT; i++) \ 78 { \ 79 RTMP_IO_READ32(_A, BBP_CSR_CFG, &BbpCsr.word); \ 80 if (BbpCsr.field.Busy == BUSY) \ 81 { \ 82 continue; \ 83 } \ 84 BbpCsr.word = 0; \ 85 BbpCsr.field.fRead = 1; \ 86 BbpCsr.field.BBP_RW_MODE = 1; \ 87 BbpCsr.field.Busy = 1; \ 88 BbpCsr.field.RegNum = _I; \ 89 RTMP_IO_WRITE32(_A, BBP_CSR_CFG, BbpCsr.word); \ 90 for (k=0; k<MAX_BUSY_COUNT; k++) \ 91 { \ 92 RTMP_IO_READ32(_A, BBP_CSR_CFG, &BbpCsr.word); \ 93 if (BbpCsr.field.Busy == IDLE) \ 94 break; \ 95 } \ 96 if ((BbpCsr.field.Busy == IDLE) && \ 97 (BbpCsr.field.RegNum == _I)) \ 98 { \ 99 *(_pV) = (UCHAR)BbpCsr.field.Value; \ 100 break; \ 101 } \ 102 } \ 103 if (BbpCsr.field.Busy == BUSY) \ 104 { \ 105 ATEDBGPRINT(RT_DEBUG_ERROR, ("BBP read R%d fail\n", _I)); \ 106 *(_pV) = (_A)->BbpWriteLatch[_I]; \ 107 } \ 108 } 109 110 #define ATE_BBP_IO_WRITE8_BY_REG_ID(_A, _I, _V) \ 111 { \ 112 BBP_CSR_CFG_STRUC BbpCsr; \ 113 int BusyCnt; \ 114 for (BusyCnt=0; BusyCnt<MAX_BUSY_COUNT; BusyCnt++) \ 115 { \ 116 RTMP_IO_READ32(_A, BBP_CSR_CFG, &BbpCsr.word); \ 117 if (BbpCsr.field.Busy == BUSY) \ 118 continue; \ 119 BbpCsr.word = 0; \ 120 BbpCsr.field.fRead = 0; \ 121 BbpCsr.field.BBP_RW_MODE = 1; \ 122 BbpCsr.field.Busy = 1; \ 123 BbpCsr.field.Value = _V; \ 124 BbpCsr.field.RegNum = _I; \ 125 RTMP_IO_WRITE32(_A, BBP_CSR_CFG, BbpCsr.word); \ 126 (_A)->BbpWriteLatch[_I] = _V; \ 127 break; \ 128 } \ 129 if (BusyCnt == MAX_BUSY_COUNT) \ 130 { \ 131 ATEDBGPRINT(RT_DEBUG_ERROR, ("BBP write R%d fail\n", _I)); \ 132 } \ 133 } 134 #endif // RT2860 // 135 136 /* RT2880_iNIC will define RT2860. */ 137 #ifdef RT2860 138 #define EEPROM_SIZE 0x200 139 /* iNIC has its own EEPROM_BIN_FILE_NAME */ 140 #ifndef UCOS 141 #ifdef CONFIG_STA_SUPPORT 142 #define EEPROM_BIN_FILE_NAME "/etc/Wireless/RT2860STA/e2p.bin" 143 #endif // CONFIG_STA_SUPPORT // 144 #endif // !UCOS // 145 #endif // RT2860 // 146 147 148 149 VOID rt_ee_read_all( 150 IN PRTMP_ADAPTER pAd, 151 OUT USHORT *Data); 152 153 154 VOID rt_ee_write_all( 155 IN PRTMP_ADAPTER pAd, 156 IN USHORT *Data); 157 158 INT Set_ATE_Proc( 159 IN PRTMP_ADAPTER pAd, 160 IN PUCHAR arg); 161 162 INT Set_ATE_DA_Proc( 163 IN PRTMP_ADAPTER pAd, 164 IN PUCHAR arg); 165 166 INT Set_ATE_SA_Proc( 167 IN PRTMP_ADAPTER pAd, 168 IN PUCHAR arg); 169 170 INT Set_ATE_BSSID_Proc( 171 IN PRTMP_ADAPTER pAd, 172 IN PUCHAR arg); 173 174 INT Set_ATE_CHANNEL_Proc( 175 IN PRTMP_ADAPTER pAd, 176 IN PUCHAR arg); 177 178 INT Set_ATE_TX_POWER0_Proc( 179 IN PRTMP_ADAPTER pAd, 180 IN PUCHAR arg); 181 182 INT Set_ATE_TX_POWER1_Proc( 183 IN PRTMP_ADAPTER pAd, 184 IN PUCHAR arg); 185 186 INT Set_ATE_TX_Antenna_Proc( 187 IN PRTMP_ADAPTER pAd, 188 IN PUCHAR arg); 189 190 INT Set_ATE_RX_Antenna_Proc( 191 IN PRTMP_ADAPTER pAd, 192 IN PUCHAR arg); 193 194 INT Set_ATE_TX_FREQOFFSET_Proc( 195 IN PRTMP_ADAPTER pAd, 196 IN PUCHAR arg); 197 198 INT Set_ATE_TX_BW_Proc( 199 IN PRTMP_ADAPTER pAd, 200 IN PUCHAR arg); 201 202 INT Set_ATE_TX_LENGTH_Proc( 203 IN PRTMP_ADAPTER pAd, 204 IN PUCHAR arg); 205 206 INT Set_ATE_TX_COUNT_Proc( 207 IN PRTMP_ADAPTER pAd, 208 IN PUCHAR arg); 209 210 INT Set_ATE_TX_MCS_Proc( 211 IN PRTMP_ADAPTER pAd, 212 IN PUCHAR arg); 213 214 INT Set_ATE_TX_MODE_Proc( 215 IN PRTMP_ADAPTER pAd, 216 IN PUCHAR arg); 217 218 INT Set_ATE_TX_GI_Proc( 219 IN PRTMP_ADAPTER pAd, 220 IN PUCHAR arg); 221 222 223 INT Set_ATE_RX_FER_Proc( 224 IN PRTMP_ADAPTER pAd, 225 IN PUCHAR arg); 226 227 INT Set_ATE_Read_RF_Proc( 228 IN PRTMP_ADAPTER pAd, 229 IN PUCHAR arg); 230 231 INT Set_ATE_Write_RF1_Proc( 232 IN PRTMP_ADAPTER pAd, 233 IN PUCHAR arg); 234 235 INT Set_ATE_Write_RF2_Proc( 236 IN PRTMP_ADAPTER pAd, 237 IN PUCHAR arg); 238 239 INT Set_ATE_Write_RF3_Proc( 240 IN PRTMP_ADAPTER pAd, 241 IN PUCHAR arg); 242 243 INT Set_ATE_Write_RF4_Proc( 244 IN PRTMP_ADAPTER pAd, 245 IN PUCHAR arg); 246 247 INT Set_ATE_Load_E2P_Proc( 248 IN PRTMP_ADAPTER pAd, 249 IN PUCHAR arg); 250 251 INT Set_ATE_Read_E2P_Proc( 252 IN PRTMP_ADAPTER pAd, 253 IN PUCHAR arg); 254 255 INT Set_ATE_Show_Proc( 256 IN PRTMP_ADAPTER pAd, 257 IN PUCHAR arg); 258 259 INT Set_ATE_Help_Proc( 260 IN PRTMP_ADAPTER pAd, 261 IN PUCHAR arg); 262 263 #ifdef RALINK_ATE 264 #ifdef RALINK_28xx_QA 265 VOID ATE_QA_Statistics( 266 IN PRTMP_ADAPTER pAd, 267 IN PRXWI_STRUC pRxWI, 268 IN PRT28XX_RXD_STRUC p28xxRxD, 269 IN PHEADER_802_11 pHeader); 270 271 VOID RtmpDoAte( 272 IN PRTMP_ADAPTER pAdapter, 273 IN struct iwreq *wrq); 274 275 VOID BubbleSort( 276 IN INT32 n, 277 IN INT32 a[]); 278 279 VOID CalNoiseLevel( 280 IN PRTMP_ADAPTER pAdapter, 281 IN UCHAR channel, 282 OUT INT32 buffer[3][10]); 283 284 BOOLEAN SyncTxRxConfig( 285 IN PRTMP_ADAPTER pAdapter, 286 IN USHORT offset, 287 IN UCHAR value); 288 289 #if 0 290 INT Set_TxStart_Proc( 291 IN PRTMP_ADAPTER pAd, 292 IN PUCHAR arg); 293 #endif // 0 // 294 295 INT Set_TxStop_Proc( 296 IN PRTMP_ADAPTER pAd, 297 IN PUCHAR arg); 298 299 INT Set_RxStop_Proc( 300 IN PRTMP_ADAPTER pAd, 301 IN PUCHAR arg); 302 303 #if 0 304 INT Set_EERead_Proc( 305 IN PRTMP_ADAPTER pAd, 306 IN PUCHAR arg); 307 308 INT Set_EEWrite_Proc( 309 IN PRTMP_ADAPTER pAd, 310 IN PUCHAR arg); 311 312 INT Set_BBPRead_Proc( 313 IN PRTMP_ADAPTER pAd, 314 IN PUCHAR arg); 315 316 INT Set_BBPWrite_Proc( 317 IN PRTMP_ADAPTER pAd, 318 IN PUCHAR arg); 319 320 INT Set_RFWrite_Proc( 321 IN PRTMP_ADAPTER pAd, 322 IN PUCHAR arg); 323 #endif // end of #if 0 // 324 #endif // RALINK_28xx_QA // 325 #endif // RALINK_ATE // 326 327 VOID ATEAsicSwitchChannel( 328 IN PRTMP_ADAPTER pAd); 329 330 VOID ATEAsicAdjustTxPower( 331 IN PRTMP_ADAPTER pAd); 332 333 VOID ATEDisableAsicProtect( 334 IN PRTMP_ADAPTER pAd); 335 336 CHAR ATEConvertToRssi( 337 IN PRTMP_ADAPTER pAd, 338 IN CHAR Rssi, 339 IN UCHAR RssiNumber); 340 341 VOID ATESampleRssi( 342 IN PRTMP_ADAPTER pAd, 343 IN PRXWI_STRUC pRxWI); 344 345 346 #ifdef CONFIG_STA_SUPPORT 347 VOID RTMPStationStop( 348 IN PRTMP_ADAPTER pAd); 349 350 VOID RTMPStationStart( 351 IN PRTMP_ADAPTER pAd); 352 #endif // CONFIG_STA_SUPPORT // 353 #endif // __ATE_H__ // 354