1 /****************************************************************************** 2 * Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved. 3 * 4 * This program is distributed in the hope that it will be useful, but WITHOUT 5 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 6 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 7 * more details. 8 * 9 * You should have received a copy of the GNU General Public License along with 10 * this program; if not, write to the Free Software Foundation, Inc., 11 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA 12 * 13 * The full GNU General Public License is included in this distribution in the 14 * file called LICENSE. 15 * 16 * Contact Information: 17 * wlanfae <wlanfae@realtek.com> 18 ******************************************************************************/ 19 20 21 #ifndef R8190P_DEF_H 22 #define R8190P_DEF_H 23 24 #include <linux/types.h> 25 26 #define MAX_SILENT_RESET_RX_SLOT_NUM 10 27 28 #define RX_MPDU_QUEUE 0 29 #define RX_CMD_QUEUE 1 30 31 32 enum rtl819x_loopback { 33 RTL819X_NO_LOOPBACK = 0, 34 RTL819X_MAC_LOOPBACK = 1, 35 RTL819X_DMA_LOOPBACK = 2, 36 RTL819X_CCK_LOOPBACK = 3, 37 }; 38 39 40 #define RESET_DELAY_8185 20 41 42 #define RT_IBSS_INT_MASKS (IMR_BcnInt | IMR_BcnInt | IMR_TBDOK | IMR_TBDER) 43 44 #define DESC90_RATE1M 0x00 45 #define DESC90_RATE2M 0x01 46 #define DESC90_RATE5_5M 0x02 47 #define DESC90_RATE11M 0x03 48 #define DESC90_RATE6M 0x04 49 #define DESC90_RATE9M 0x05 50 #define DESC90_RATE12M 0x06 51 #define DESC90_RATE18M 0x07 52 #define DESC90_RATE24M 0x08 53 #define DESC90_RATE36M 0x09 54 #define DESC90_RATE48M 0x0a 55 #define DESC90_RATE54M 0x0b 56 #define DESC90_RATEMCS0 0x00 57 #define DESC90_RATEMCS1 0x01 58 #define DESC90_RATEMCS2 0x02 59 #define DESC90_RATEMCS3 0x03 60 #define DESC90_RATEMCS4 0x04 61 #define DESC90_RATEMCS5 0x05 62 #define DESC90_RATEMCS6 0x06 63 #define DESC90_RATEMCS7 0x07 64 #define DESC90_RATEMCS8 0x08 65 #define DESC90_RATEMCS9 0x09 66 #define DESC90_RATEMCS10 0x0a 67 #define DESC90_RATEMCS11 0x0b 68 #define DESC90_RATEMCS12 0x0c 69 #define DESC90_RATEMCS13 0x0d 70 #define DESC90_RATEMCS14 0x0e 71 #define DESC90_RATEMCS15 0x0f 72 #define DESC90_RATEMCS32 0x20 73 74 #define SHORT_SLOT_TIME 9 75 #define NON_SHORT_SLOT_TIME 20 76 77 78 #define MAX_LINES_HWCONFIG_TXT 1000 79 #define MAX_BYTES_LINE_HWCONFIG_TXT 128 80 81 #define SW_THREE_WIRE 0 82 #define HW_THREE_WIRE 2 83 84 #define BT_DEMO_BOARD 0 85 #define BT_QA_BOARD 1 86 #define BT_FPGA 2 87 88 #define RX_SMOOTH 20 89 90 #define QSLT_BK 0x1 91 #define QSLT_BE 0x0 92 #define QSLT_VI 0x4 93 #define QSLT_VO 0x6 94 #define QSLT_BEACON 0x10 95 #define QSLT_HIGH 0x11 96 #define QSLT_MGNT 0x12 97 #define QSLT_CMD 0x13 98 99 #define NUM_OF_FIRMWARE_QUEUE 10 100 #define NUM_OF_PAGES_IN_FW 0x100 101 #define NUM_OF_PAGE_IN_FW_QUEUE_BK 0x007 102 #define NUM_OF_PAGE_IN_FW_QUEUE_BE 0x0aa 103 #define NUM_OF_PAGE_IN_FW_QUEUE_VI 0x024 104 #define NUM_OF_PAGE_IN_FW_QUEUE_VO 0x007 105 #define NUM_OF_PAGE_IN_FW_QUEUE_HCCA 0 106 #define NUM_OF_PAGE_IN_FW_QUEUE_CMD 0x2 107 #define NUM_OF_PAGE_IN_FW_QUEUE_MGNT 0x10 108 #define NUM_OF_PAGE_IN_FW_QUEUE_HIGH 0 109 #define NUM_OF_PAGE_IN_FW_QUEUE_BCN 0x4 110 #define NUM_OF_PAGE_IN_FW_QUEUE_PUB 0xd 111 112 #define NUM_OF_PAGE_IN_FW_QUEUE_BK_DTM 0x026 113 #define NUM_OF_PAGE_IN_FW_QUEUE_BE_DTM 0x048 114 #define NUM_OF_PAGE_IN_FW_QUEUE_VI_DTM 0x048 115 #define NUM_OF_PAGE_IN_FW_QUEUE_VO_DTM 0x026 116 #define NUM_OF_PAGE_IN_FW_QUEUE_PUB_DTM 0x00 117 118 #define APPLIED_RESERVED_QUEUE_IN_FW 0x80000000 119 #define RSVD_FW_QUEUE_PAGE_BK_SHIFT 0x00 120 #define RSVD_FW_QUEUE_PAGE_BE_SHIFT 0x08 121 #define RSVD_FW_QUEUE_PAGE_VI_SHIFT 0x10 122 #define RSVD_FW_QUEUE_PAGE_VO_SHIFT 0x18 123 #define RSVD_FW_QUEUE_PAGE_MGNT_SHIFT 0x10 124 #define RSVD_FW_QUEUE_PAGE_BCN_SHIFT 0x00 125 #define RSVD_FW_QUEUE_PAGE_PUB_SHIFT 0x08 126 127 #define HAL_PRIME_CHNL_OFFSET_DONT_CARE 0 128 #define HAL_PRIME_CHNL_OFFSET_LOWER 1 129 #define HAL_PRIME_CHNL_OFFSET_UPPER 2 130 131 132 enum version_8190_loopback { 133 VERSION_8190_BD = 0x3, 134 VERSION_8190_BE 135 }; 136 137 #define IC_VersionCut_C 0x2 138 #define IC_VersionCut_D 0x3 139 #define IC_VersionCut_E 0x4 140 141 enum rf_optype { 142 RF_OP_By_SW_3wire = 0, 143 RF_OP_By_FW, 144 RF_OP_MAX 145 }; 146 147 148 enum power_save_mode { 149 POWER_SAVE_MODE_ACTIVE, 150 POWER_SAVE_MODE_SAVE, 151 }; 152 153 enum interface_select_8190pci { 154 INTF_SEL1_MINICARD = 0, 155 INTF_SEL0_PCIE = 1, 156 INTF_SEL2_RSV = 2, 157 INTF_SEL3_RSV = 3, 158 }; 159 160 struct bb_reg_definition { 161 u32 rfintfs; 162 u32 rfintfi; 163 u32 rfintfo; 164 u32 rfintfe; 165 u32 rf3wireOffset; 166 u32 rfLSSI_Select; 167 u32 rfTxGainStage; 168 u32 rfHSSIPara1; 169 u32 rfHSSIPara2; 170 u32 rfSwitchControl; 171 u32 rfAGCControl1; 172 u32 rfAGCControl2; 173 u32 rfRxIQImbalance; 174 u32 rfRxAFE; 175 u32 rfTxIQImbalance; 176 u32 rfTxAFE; 177 u32 rfLSSIReadBack; 178 u32 rfLSSIReadBackPi; 179 }; 180 181 struct tx_fwinfo { 182 u8 TxRate:7; 183 u8 CtsEnable:1; 184 u8 RtsRate:7; 185 u8 RtsEnable:1; 186 u8 TxHT:1; 187 u8 Short:1; 188 u8 TxBandwidth:1; 189 u8 TxSubCarrier:2; 190 u8 STBC:2; 191 u8 AllowAggregation:1; 192 u8 RtsHT:1; 193 u8 RtsShort:1; 194 u8 RtsBandwidth:1; 195 u8 RtsSubcarrier:2; 196 u8 RtsSTBC:2; 197 u8 EnableCPUDur:1; 198 199 u32 RxMF:2; 200 u32 RxAMD:3; 201 u32 Reserved1:3; 202 u32 TxAGCOffset:4; 203 u32 TxAGCSign:1; 204 u32 Tx_INFO_RSVD:6; 205 u32 PacketID:13; 206 }; 207 208 struct tx_fwinfo_8190pci { 209 u8 TxRate:7; 210 u8 CtsEnable:1; 211 u8 RtsRate:7; 212 u8 RtsEnable:1; 213 u8 TxHT:1; 214 u8 Short:1; 215 u8 TxBandwidth:1; 216 u8 TxSubCarrier:2; 217 u8 STBC:2; 218 u8 AllowAggregation:1; 219 u8 RtsHT:1; 220 u8 RtsShort:1; 221 u8 RtsBandwidth:1; 222 u8 RtsSubcarrier:2; 223 u8 RtsSTBC:2; 224 u8 EnableCPUDur:1; 225 226 u32 RxMF:2; 227 u32 RxAMD:3; 228 u32 TxPerPktInfoFeedback:1; 229 u32 Reserved1:2; 230 u32 TxAGCOffset:4; 231 u32 TxAGCSign:1; 232 u32 RAW_TXD:1; 233 u32 Retry_Limit:4; 234 u32 Reserved2:1; 235 u32 PacketID:13; 236 237 238 }; 239 240 241 #define TX_DESC_SIZE 32 242 243 #define TX_DESC_CMD_SIZE 32 244 245 246 #define TX_STATUS_DESC_SIZE 32 247 248 #define TX_FWINFO_SIZE 8 249 250 251 #define RX_DESC_SIZE 16 252 253 #define RX_STATUS_DESC_SIZE 16 254 255 #define RX_DRIVER_INFO_SIZE 8 256 257 struct log_int_8190 { 258 u32 nIMR_COMDOK; 259 u32 nIMR_MGNTDOK; 260 u32 nIMR_HIGH; 261 u32 nIMR_VODOK; 262 u32 nIMR_VIDOK; 263 u32 nIMR_BEDOK; 264 u32 nIMR_BKDOK; 265 u32 nIMR_ROK; 266 u32 nIMR_RCOK; 267 u32 nIMR_TBDOK; 268 u32 nIMR_BDOK; 269 u32 nIMR_RXFOVW; 270 }; 271 272 struct phy_ofdm_rx_status_rxsc_sgien_exintfflag { 273 u8 reserved:4; 274 u8 rxsc:2; 275 u8 sgi_en:1; 276 u8 ex_intf_flag:1; 277 }; 278 279 struct phy_sts_ofdm_819xpci { 280 u8 trsw_gain_X[4]; 281 u8 pwdb_all; 282 u8 cfosho_X[4]; 283 u8 cfotail_X[4]; 284 u8 rxevm_X[2]; 285 u8 rxsnr_X[4]; 286 u8 pdsnr_X[2]; 287 u8 csi_current_X[2]; 288 u8 csi_target_X[2]; 289 u8 sigevm; 290 u8 max_ex_pwr; 291 u8 sgi_en; 292 u8 rxsc_sgien_exflg; 293 }; 294 295 struct phy_sts_cck_819xpci { 296 u8 adc_pwdb_X[4]; 297 u8 sq_rpt; 298 u8 cck_agc_rpt; 299 }; 300 301 302 #define PHY_RSSI_SLID_WIN_MAX 100 303 #define PHY_Beacon_RSSI_SLID_WIN_MAX 10 304 305 struct tx_desc { 306 u16 PktSize; 307 u8 Offset; 308 u8 Reserved1:3; 309 u8 CmdInit:1; 310 u8 LastSeg:1; 311 u8 FirstSeg:1; 312 u8 LINIP:1; 313 u8 OWN:1; 314 315 u8 TxFWInfoSize; 316 u8 RATid:3; 317 u8 DISFB:1; 318 u8 USERATE:1; 319 u8 MOREFRAG:1; 320 u8 NoEnc:1; 321 u8 PIFS:1; 322 u8 QueueSelect:5; 323 u8 NoACM:1; 324 u8 Resv:2; 325 u8 SecCAMID:5; 326 u8 SecDescAssign:1; 327 u8 SecType:2; 328 329 u16 TxBufferSize; 330 u8 PktId:7; 331 u8 Resv1:1; 332 u8 Reserved2; 333 334 u32 TxBuffAddr; 335 336 u32 NextDescAddress; 337 338 u32 Reserved5; 339 u32 Reserved6; 340 u32 Reserved7; 341 }; 342 343 344 struct tx_desc_cmd { 345 u16 PktSize; 346 u8 Reserved1; 347 u8 CmdType:3; 348 u8 CmdInit:1; 349 u8 LastSeg:1; 350 u8 FirstSeg:1; 351 u8 LINIP:1; 352 u8 OWN:1; 353 354 u16 ElementReport; 355 u16 Reserved2; 356 357 u16 TxBufferSize; 358 u16 Reserved3; 359 360 u32 TxBuffAddr; 361 u32 NextDescAddress; 362 u32 Reserved4; 363 u32 Reserved5; 364 u32 Reserved6; 365 }; 366 367 struct rx_desc { 368 u16 Length:14; 369 u16 CRC32:1; 370 u16 ICV:1; 371 u8 RxDrvInfoSize; 372 u8 Shift:2; 373 u8 PHYStatus:1; 374 u8 SWDec:1; 375 u8 LastSeg:1; 376 u8 FirstSeg:1; 377 u8 EOR:1; 378 u8 OWN:1; 379 380 u32 Reserved2; 381 382 u32 Reserved3; 383 384 u32 BufferAddress; 385 386 }; 387 388 389 struct rx_fwinfo { 390 u16 Reserved1:12; 391 u16 PartAggr:1; 392 u16 FirstAGGR:1; 393 u16 Reserved2:2; 394 395 u8 RxRate:7; 396 u8 RxHT:1; 397 398 u8 BW:1; 399 u8 SPLCP:1; 400 u8 Reserved3:2; 401 u8 PAM:1; 402 u8 Mcast:1; 403 u8 Bcast:1; 404 u8 Reserved4:1; 405 406 u32 TSFL; 407 408 }; 409 410 #endif 411