1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* 3 Copyright (C) 2004 - 2009 Ivo van Doorn <IvDoorn@gmail.com> 4 <http://rt2x00.serialmonkey.com> 5 6 */ 7 8 /* 9 Module: rt2500usb 10 Abstract: Data structures and registers for the rt2500usb module. 11 Supported chipsets: RT2570. 12 */ 13 14 #ifndef RT2500USB_H 15 #define RT2500USB_H 16 17 /* 18 * RF chip defines. 19 */ 20 #define RF2522 0x0000 21 #define RF2523 0x0001 22 #define RF2524 0x0002 23 #define RF2525 0x0003 24 #define RF2525E 0x0005 25 #define RF5222 0x0010 26 27 /* 28 * RT2570 version 29 */ 30 #define RT2570_VERSION_B 2 31 #define RT2570_VERSION_C 3 32 #define RT2570_VERSION_D 4 33 34 /* 35 * Signal information. 36 * Default offset is required for RSSI <-> dBm conversion. 37 */ 38 #define DEFAULT_RSSI_OFFSET 120 39 40 /* 41 * Register layout information. 42 */ 43 #define CSR_REG_BASE 0x0400 44 #define CSR_REG_SIZE 0x0100 45 #define EEPROM_BASE 0x0000 46 #define EEPROM_SIZE 0x006e 47 #define BBP_BASE 0x0000 48 #define BBP_SIZE 0x0060 49 #define RF_BASE 0x0004 50 #define RF_SIZE 0x0010 51 52 /* 53 * Number of TX queues. 54 */ 55 #define NUM_TX_QUEUES 2 56 57 /* 58 * Control/Status Registers(CSR). 59 * Some values are set in TU, whereas 1 TU == 1024 us. 60 */ 61 62 /* 63 * MAC_CSR0: ASIC revision number. 64 */ 65 #define MAC_CSR0 0x0400 66 67 /* 68 * MAC_CSR1: System control. 69 * SOFT_RESET: Software reset, 1: reset, 0: normal. 70 * BBP_RESET: Hardware reset, 1: reset, 0, release. 71 * HOST_READY: Host ready after initialization. 72 */ 73 #define MAC_CSR1 0x0402 74 #define MAC_CSR1_SOFT_RESET FIELD16(0x00000001) 75 #define MAC_CSR1_BBP_RESET FIELD16(0x00000002) 76 #define MAC_CSR1_HOST_READY FIELD16(0x00000004) 77 78 /* 79 * MAC_CSR2: STA MAC register 0. 80 */ 81 #define MAC_CSR2 0x0404 82 #define MAC_CSR2_BYTE0 FIELD16(0x00ff) 83 #define MAC_CSR2_BYTE1 FIELD16(0xff00) 84 85 /* 86 * MAC_CSR3: STA MAC register 1. 87 */ 88 #define MAC_CSR3 0x0406 89 #define MAC_CSR3_BYTE2 FIELD16(0x00ff) 90 #define MAC_CSR3_BYTE3 FIELD16(0xff00) 91 92 /* 93 * MAC_CSR4: STA MAC register 2. 94 */ 95 #define MAC_CSR4 0X0408 96 #define MAC_CSR4_BYTE4 FIELD16(0x00ff) 97 #define MAC_CSR4_BYTE5 FIELD16(0xff00) 98 99 /* 100 * MAC_CSR5: BSSID register 0. 101 */ 102 #define MAC_CSR5 0x040a 103 #define MAC_CSR5_BYTE0 FIELD16(0x00ff) 104 #define MAC_CSR5_BYTE1 FIELD16(0xff00) 105 106 /* 107 * MAC_CSR6: BSSID register 1. 108 */ 109 #define MAC_CSR6 0x040c 110 #define MAC_CSR6_BYTE2 FIELD16(0x00ff) 111 #define MAC_CSR6_BYTE3 FIELD16(0xff00) 112 113 /* 114 * MAC_CSR7: BSSID register 2. 115 */ 116 #define MAC_CSR7 0x040e 117 #define MAC_CSR7_BYTE4 FIELD16(0x00ff) 118 #define MAC_CSR7_BYTE5 FIELD16(0xff00) 119 120 /* 121 * MAC_CSR8: Max frame length. 122 */ 123 #define MAC_CSR8 0x0410 124 #define MAC_CSR8_MAX_FRAME_UNIT FIELD16(0x0fff) 125 126 /* 127 * Misc MAC_CSR registers. 128 * MAC_CSR9: Timer control. 129 * MAC_CSR10: Slot time. 130 * MAC_CSR11: SIFS. 131 * MAC_CSR12: EIFS. 132 * MAC_CSR13: Power mode0. 133 * MAC_CSR14: Power mode1. 134 * MAC_CSR15: Power saving transition0 135 * MAC_CSR16: Power saving transition1 136 */ 137 #define MAC_CSR9 0x0412 138 #define MAC_CSR10 0x0414 139 #define MAC_CSR11 0x0416 140 #define MAC_CSR12 0x0418 141 #define MAC_CSR13 0x041a 142 #define MAC_CSR14 0x041c 143 #define MAC_CSR15 0x041e 144 #define MAC_CSR16 0x0420 145 146 /* 147 * MAC_CSR17: Manual power control / status register. 148 * Allowed state: 0 deep_sleep, 1: sleep, 2: standby, 3: awake. 149 * SET_STATE: Set state. Write 1 to trigger, self cleared. 150 * BBP_DESIRE_STATE: BBP desired state. 151 * RF_DESIRE_STATE: RF desired state. 152 * BBP_CURRENT_STATE: BBP current state. 153 * RF_CURRENT_STATE: RF current state. 154 * PUT_TO_SLEEP: Put to sleep. Write 1 to trigger, self cleared. 155 */ 156 #define MAC_CSR17 0x0422 157 #define MAC_CSR17_SET_STATE FIELD16(0x0001) 158 #define MAC_CSR17_BBP_DESIRE_STATE FIELD16(0x0006) 159 #define MAC_CSR17_RF_DESIRE_STATE FIELD16(0x0018) 160 #define MAC_CSR17_BBP_CURR_STATE FIELD16(0x0060) 161 #define MAC_CSR17_RF_CURR_STATE FIELD16(0x0180) 162 #define MAC_CSR17_PUT_TO_SLEEP FIELD16(0x0200) 163 164 /* 165 * MAC_CSR18: Wakeup timer register. 166 * DELAY_AFTER_BEACON: Delay after Tbcn expired in units of 1/16 TU. 167 * BEACONS_BEFORE_WAKEUP: Number of beacon before wakeup. 168 * AUTO_WAKE: Enable auto wakeup / sleep mechanism. 169 */ 170 #define MAC_CSR18 0x0424 171 #define MAC_CSR18_DELAY_AFTER_BEACON FIELD16(0x00ff) 172 #define MAC_CSR18_BEACONS_BEFORE_WAKEUP FIELD16(0x7f00) 173 #define MAC_CSR18_AUTO_WAKE FIELD16(0x8000) 174 175 /* 176 * MAC_CSR19: GPIO control register. 177 * MAC_CSR19_VALx: GPIO value 178 * MAC_CSR19_DIRx: GPIO direction: 0 = input; 1 = output 179 */ 180 #define MAC_CSR19 0x0426 181 #define MAC_CSR19_VAL0 FIELD16(0x0001) 182 #define MAC_CSR19_VAL1 FIELD16(0x0002) 183 #define MAC_CSR19_VAL2 FIELD16(0x0004) 184 #define MAC_CSR19_VAL3 FIELD16(0x0008) 185 #define MAC_CSR19_VAL4 FIELD16(0x0010) 186 #define MAC_CSR19_VAL5 FIELD16(0x0020) 187 #define MAC_CSR19_VAL6 FIELD16(0x0040) 188 #define MAC_CSR19_VAL7 FIELD16(0x0080) 189 #define MAC_CSR19_DIR0 FIELD16(0x0100) 190 #define MAC_CSR19_DIR1 FIELD16(0x0200) 191 #define MAC_CSR19_DIR2 FIELD16(0x0400) 192 #define MAC_CSR19_DIR3 FIELD16(0x0800) 193 #define MAC_CSR19_DIR4 FIELD16(0x1000) 194 #define MAC_CSR19_DIR5 FIELD16(0x2000) 195 #define MAC_CSR19_DIR6 FIELD16(0x4000) 196 #define MAC_CSR19_DIR7 FIELD16(0x8000) 197 198 /* 199 * MAC_CSR20: LED control register. 200 * ACTIVITY: 0: idle, 1: active. 201 * LINK: 0: linkoff, 1: linkup. 202 * ACTIVITY_POLARITY: 0: active low, 1: active high. 203 */ 204 #define MAC_CSR20 0x0428 205 #define MAC_CSR20_ACTIVITY FIELD16(0x0001) 206 #define MAC_CSR20_LINK FIELD16(0x0002) 207 #define MAC_CSR20_ACTIVITY_POLARITY FIELD16(0x0004) 208 209 /* 210 * MAC_CSR21: LED control register. 211 * ON_PERIOD: On period, default 70ms. 212 * OFF_PERIOD: Off period, default 30ms. 213 */ 214 #define MAC_CSR21 0x042a 215 #define MAC_CSR21_ON_PERIOD FIELD16(0x00ff) 216 #define MAC_CSR21_OFF_PERIOD FIELD16(0xff00) 217 218 /* 219 * MAC_CSR22: Collision window control register. 220 */ 221 #define MAC_CSR22 0x042c 222 223 /* 224 * Transmit related CSRs. 225 * Some values are set in TU, whereas 1 TU == 1024 us. 226 */ 227 228 /* 229 * TXRX_CSR0: Security control register. 230 */ 231 #define TXRX_CSR0 0x0440 232 #define TXRX_CSR0_ALGORITHM FIELD16(0x0007) 233 #define TXRX_CSR0_IV_OFFSET FIELD16(0x01f8) 234 #define TXRX_CSR0_KEY_ID FIELD16(0x1e00) 235 236 /* 237 * TXRX_CSR1: TX configuration. 238 * ACK_TIMEOUT: ACK Timeout in unit of 1-us. 239 * TSF_OFFSET: TSF offset in MAC header. 240 * AUTO_SEQUENCE: Let ASIC control frame sequence number. 241 */ 242 #define TXRX_CSR1 0x0442 243 #define TXRX_CSR1_ACK_TIMEOUT FIELD16(0x00ff) 244 #define TXRX_CSR1_TSF_OFFSET FIELD16(0x7f00) 245 #define TXRX_CSR1_AUTO_SEQUENCE FIELD16(0x8000) 246 247 /* 248 * TXRX_CSR2: RX control. 249 * DISABLE_RX: Disable rx engine. 250 * DROP_CRC: Drop crc error. 251 * DROP_PHYSICAL: Drop physical error. 252 * DROP_CONTROL: Drop control frame. 253 * DROP_NOT_TO_ME: Drop not to me unicast frame. 254 * DROP_TODS: Drop frame tods bit is true. 255 * DROP_VERSION_ERROR: Drop version error frame. 256 * DROP_MCAST: Drop multicast frames. 257 * DROP_BCAST: Drop broadcast frames. 258 */ 259 #define TXRX_CSR2 0x0444 260 #define TXRX_CSR2_DISABLE_RX FIELD16(0x0001) 261 #define TXRX_CSR2_DROP_CRC FIELD16(0x0002) 262 #define TXRX_CSR2_DROP_PHYSICAL FIELD16(0x0004) 263 #define TXRX_CSR2_DROP_CONTROL FIELD16(0x0008) 264 #define TXRX_CSR2_DROP_NOT_TO_ME FIELD16(0x0010) 265 #define TXRX_CSR2_DROP_TODS FIELD16(0x0020) 266 #define TXRX_CSR2_DROP_VERSION_ERROR FIELD16(0x0040) 267 #define TXRX_CSR2_DROP_MULTICAST FIELD16(0x0200) 268 #define TXRX_CSR2_DROP_BROADCAST FIELD16(0x0400) 269 270 /* 271 * RX BBP ID registers 272 * TXRX_CSR3: CCK RX BBP ID. 273 * TXRX_CSR4: OFDM RX BBP ID. 274 */ 275 #define TXRX_CSR3 0x0446 276 #define TXRX_CSR4 0x0448 277 278 /* 279 * TXRX_CSR5: CCK TX BBP ID0. 280 */ 281 #define TXRX_CSR5 0x044a 282 #define TXRX_CSR5_BBP_ID0 FIELD16(0x007f) 283 #define TXRX_CSR5_BBP_ID0_VALID FIELD16(0x0080) 284 #define TXRX_CSR5_BBP_ID1 FIELD16(0x7f00) 285 #define TXRX_CSR5_BBP_ID1_VALID FIELD16(0x8000) 286 287 /* 288 * TXRX_CSR6: CCK TX BBP ID1. 289 */ 290 #define TXRX_CSR6 0x044c 291 #define TXRX_CSR6_BBP_ID0 FIELD16(0x007f) 292 #define TXRX_CSR6_BBP_ID0_VALID FIELD16(0x0080) 293 #define TXRX_CSR6_BBP_ID1 FIELD16(0x7f00) 294 #define TXRX_CSR6_BBP_ID1_VALID FIELD16(0x8000) 295 296 /* 297 * TXRX_CSR7: OFDM TX BBP ID0. 298 */ 299 #define TXRX_CSR7 0x044e 300 #define TXRX_CSR7_BBP_ID0 FIELD16(0x007f) 301 #define TXRX_CSR7_BBP_ID0_VALID FIELD16(0x0080) 302 #define TXRX_CSR7_BBP_ID1 FIELD16(0x7f00) 303 #define TXRX_CSR7_BBP_ID1_VALID FIELD16(0x8000) 304 305 /* 306 * TXRX_CSR8: OFDM TX BBP ID1. 307 */ 308 #define TXRX_CSR8 0x0450 309 #define TXRX_CSR8_BBP_ID0 FIELD16(0x007f) 310 #define TXRX_CSR8_BBP_ID0_VALID FIELD16(0x0080) 311 #define TXRX_CSR8_BBP_ID1 FIELD16(0x7f00) 312 #define TXRX_CSR8_BBP_ID1_VALID FIELD16(0x8000) 313 314 /* 315 * TXRX_CSR9: TX ACK time-out. 316 */ 317 #define TXRX_CSR9 0x0452 318 319 /* 320 * TXRX_CSR10: Auto responder control. 321 */ 322 #define TXRX_CSR10 0x0454 323 #define TXRX_CSR10_AUTORESPOND_PREAMBLE FIELD16(0x0004) 324 325 /* 326 * TXRX_CSR11: Auto responder basic rate. 327 */ 328 #define TXRX_CSR11 0x0456 329 330 /* 331 * ACK/CTS time registers. 332 */ 333 #define TXRX_CSR12 0x0458 334 #define TXRX_CSR13 0x045a 335 #define TXRX_CSR14 0x045c 336 #define TXRX_CSR15 0x045e 337 #define TXRX_CSR16 0x0460 338 #define TXRX_CSR17 0x0462 339 340 /* 341 * TXRX_CSR18: Synchronization control register. 342 */ 343 #define TXRX_CSR18 0x0464 344 #define TXRX_CSR18_OFFSET FIELD16(0x000f) 345 #define TXRX_CSR18_INTERVAL FIELD16(0xfff0) 346 347 /* 348 * TXRX_CSR19: Synchronization control register. 349 * TSF_COUNT: Enable TSF auto counting. 350 * TSF_SYNC: Tsf sync, 0: disable, 1: infra, 2: ad-hoc/master mode. 351 * TBCN: Enable Tbcn with reload value. 352 * BEACON_GEN: Enable beacon generator. 353 */ 354 #define TXRX_CSR19 0x0466 355 #define TXRX_CSR19_TSF_COUNT FIELD16(0x0001) 356 #define TXRX_CSR19_TSF_SYNC FIELD16(0x0006) 357 #define TXRX_CSR19_TBCN FIELD16(0x0008) 358 #define TXRX_CSR19_BEACON_GEN FIELD16(0x0010) 359 360 /* 361 * TXRX_CSR20: Tx BEACON offset time control register. 362 * OFFSET: In units of usec. 363 * BCN_EXPECT_WINDOW: Default: 2^CWmin 364 */ 365 #define TXRX_CSR20 0x0468 366 #define TXRX_CSR20_OFFSET FIELD16(0x1fff) 367 #define TXRX_CSR20_BCN_EXPECT_WINDOW FIELD16(0xe000) 368 369 /* 370 * TXRX_CSR21 371 */ 372 #define TXRX_CSR21 0x046a 373 374 /* 375 * Encryption related CSRs. 376 * 377 */ 378 379 /* 380 * SEC_CSR0: Shared key 0, word 0 381 * SEC_CSR1: Shared key 0, word 1 382 * SEC_CSR2: Shared key 0, word 2 383 * SEC_CSR3: Shared key 0, word 3 384 * SEC_CSR4: Shared key 0, word 4 385 * SEC_CSR5: Shared key 0, word 5 386 * SEC_CSR6: Shared key 0, word 6 387 * SEC_CSR7: Shared key 0, word 7 388 */ 389 #define SEC_CSR0 0x0480 390 #define SEC_CSR1 0x0482 391 #define SEC_CSR2 0x0484 392 #define SEC_CSR3 0x0486 393 #define SEC_CSR4 0x0488 394 #define SEC_CSR5 0x048a 395 #define SEC_CSR6 0x048c 396 #define SEC_CSR7 0x048e 397 398 /* 399 * SEC_CSR8: Shared key 1, word 0 400 * SEC_CSR9: Shared key 1, word 1 401 * SEC_CSR10: Shared key 1, word 2 402 * SEC_CSR11: Shared key 1, word 3 403 * SEC_CSR12: Shared key 1, word 4 404 * SEC_CSR13: Shared key 1, word 5 405 * SEC_CSR14: Shared key 1, word 6 406 * SEC_CSR15: Shared key 1, word 7 407 */ 408 #define SEC_CSR8 0x0490 409 #define SEC_CSR9 0x0492 410 #define SEC_CSR10 0x0494 411 #define SEC_CSR11 0x0496 412 #define SEC_CSR12 0x0498 413 #define SEC_CSR13 0x049a 414 #define SEC_CSR14 0x049c 415 #define SEC_CSR15 0x049e 416 417 /* 418 * SEC_CSR16: Shared key 2, word 0 419 * SEC_CSR17: Shared key 2, word 1 420 * SEC_CSR18: Shared key 2, word 2 421 * SEC_CSR19: Shared key 2, word 3 422 * SEC_CSR20: Shared key 2, word 4 423 * SEC_CSR21: Shared key 2, word 5 424 * SEC_CSR22: Shared key 2, word 6 425 * SEC_CSR23: Shared key 2, word 7 426 */ 427 #define SEC_CSR16 0x04a0 428 #define SEC_CSR17 0x04a2 429 #define SEC_CSR18 0X04A4 430 #define SEC_CSR19 0x04a6 431 #define SEC_CSR20 0x04a8 432 #define SEC_CSR21 0x04aa 433 #define SEC_CSR22 0x04ac 434 #define SEC_CSR23 0x04ae 435 436 /* 437 * SEC_CSR24: Shared key 3, word 0 438 * SEC_CSR25: Shared key 3, word 1 439 * SEC_CSR26: Shared key 3, word 2 440 * SEC_CSR27: Shared key 3, word 3 441 * SEC_CSR28: Shared key 3, word 4 442 * SEC_CSR29: Shared key 3, word 5 443 * SEC_CSR30: Shared key 3, word 6 444 * SEC_CSR31: Shared key 3, word 7 445 */ 446 #define SEC_CSR24 0x04b0 447 #define SEC_CSR25 0x04b2 448 #define SEC_CSR26 0x04b4 449 #define SEC_CSR27 0x04b6 450 #define SEC_CSR28 0x04b8 451 #define SEC_CSR29 0x04ba 452 #define SEC_CSR30 0x04bc 453 #define SEC_CSR31 0x04be 454 455 #define KEY_ENTRY(__idx) \ 456 ( SEC_CSR0 + ((__idx) * 16) ) 457 458 /* 459 * PHY control registers. 460 */ 461 462 /* 463 * PHY_CSR0: RF switching timing control. 464 */ 465 #define PHY_CSR0 0x04c0 466 467 /* 468 * PHY_CSR1: TX PA configuration. 469 */ 470 #define PHY_CSR1 0x04c2 471 472 /* 473 * MAC configuration registers. 474 */ 475 476 /* 477 * PHY_CSR2: TX MAC configuration. 478 * NOTE: Both register fields are complete dummy, 479 * documentation and legacy drivers are unclear un 480 * what this register means or what fields exists. 481 */ 482 #define PHY_CSR2 0x04c4 483 #define PHY_CSR2_LNA FIELD16(0x0002) 484 #define PHY_CSR2_LNA_MODE FIELD16(0x3000) 485 486 /* 487 * PHY_CSR3: RX MAC configuration. 488 */ 489 #define PHY_CSR3 0x04c6 490 491 /* 492 * PHY_CSR4: Interface configuration. 493 */ 494 #define PHY_CSR4 0x04c8 495 #define PHY_CSR4_LOW_RF_LE FIELD16(0x0001) 496 497 /* 498 * BBP pre-TX registers. 499 * PHY_CSR5: BBP pre-TX CCK. 500 */ 501 #define PHY_CSR5 0x04ca 502 #define PHY_CSR5_CCK FIELD16(0x0003) 503 #define PHY_CSR5_CCK_FLIP FIELD16(0x0004) 504 505 /* 506 * BBP pre-TX registers. 507 * PHY_CSR6: BBP pre-TX OFDM. 508 */ 509 #define PHY_CSR6 0x04cc 510 #define PHY_CSR6_OFDM FIELD16(0x0003) 511 #define PHY_CSR6_OFDM_FLIP FIELD16(0x0004) 512 513 /* 514 * PHY_CSR7: BBP access register 0. 515 * BBP_DATA: BBP data. 516 * BBP_REG_ID: BBP register ID. 517 * BBP_READ_CONTROL: 0: write, 1: read. 518 */ 519 #define PHY_CSR7 0x04ce 520 #define PHY_CSR7_DATA FIELD16(0x00ff) 521 #define PHY_CSR7_REG_ID FIELD16(0x7f00) 522 #define PHY_CSR7_READ_CONTROL FIELD16(0x8000) 523 524 /* 525 * PHY_CSR8: BBP access register 1. 526 * BBP_BUSY: ASIC is busy execute BBP programming. 527 */ 528 #define PHY_CSR8 0x04d0 529 #define PHY_CSR8_BUSY FIELD16(0x0001) 530 531 /* 532 * PHY_CSR9: RF access register. 533 * RF_VALUE: Register value + id to program into rf/if. 534 */ 535 #define PHY_CSR9 0x04d2 536 #define PHY_CSR9_RF_VALUE FIELD16(0xffff) 537 538 /* 539 * PHY_CSR10: RF access register. 540 * RF_VALUE: Register value + id to program into rf/if. 541 * RF_NUMBER_OF_BITS: Number of bits used in value (i:20, rfmd:22). 542 * RF_IF_SELECT: Chip to program: 0: rf, 1: if. 543 * RF_PLL_LD: Rf pll_ld status. 544 * RF_BUSY: 1: asic is busy execute rf programming. 545 */ 546 #define PHY_CSR10 0x04d4 547 #define PHY_CSR10_RF_VALUE FIELD16(0x00ff) 548 #define PHY_CSR10_RF_NUMBER_OF_BITS FIELD16(0x1f00) 549 #define PHY_CSR10_RF_IF_SELECT FIELD16(0x2000) 550 #define PHY_CSR10_RF_PLL_LD FIELD16(0x4000) 551 #define PHY_CSR10_RF_BUSY FIELD16(0x8000) 552 553 /* 554 * STA_CSR0: FCS error count. 555 * FCS_ERROR: FCS error count, cleared when read. 556 */ 557 #define STA_CSR0 0x04e0 558 #define STA_CSR0_FCS_ERROR FIELD16(0xffff) 559 560 /* 561 * STA_CSR1: PLCP error count. 562 */ 563 #define STA_CSR1 0x04e2 564 565 /* 566 * STA_CSR2: LONG error count. 567 */ 568 #define STA_CSR2 0x04e4 569 570 /* 571 * STA_CSR3: CCA false alarm. 572 * FALSE_CCA_ERROR: False CCA error count, cleared when read. 573 */ 574 #define STA_CSR3 0x04e6 575 #define STA_CSR3_FALSE_CCA_ERROR FIELD16(0xffff) 576 577 /* 578 * STA_CSR4: RX FIFO overflow. 579 */ 580 #define STA_CSR4 0x04e8 581 582 /* 583 * STA_CSR5: Beacon sent counter. 584 */ 585 #define STA_CSR5 0x04ea 586 587 /* 588 * Statistics registers 589 */ 590 #define STA_CSR6 0x04ec 591 #define STA_CSR7 0x04ee 592 #define STA_CSR8 0x04f0 593 #define STA_CSR9 0x04f2 594 #define STA_CSR10 0x04f4 595 596 /* 597 * BBP registers. 598 * The wordsize of the BBP is 8 bits. 599 */ 600 601 /* 602 * R2: TX antenna control 603 */ 604 #define BBP_R2_TX_ANTENNA FIELD8(0x03) 605 #define BBP_R2_TX_IQ_FLIP FIELD8(0x04) 606 607 /* 608 * R14: RX antenna control 609 */ 610 #define BBP_R14_RX_ANTENNA FIELD8(0x03) 611 #define BBP_R14_RX_IQ_FLIP FIELD8(0x04) 612 613 /* 614 * RF registers. 615 */ 616 617 /* 618 * RF 1 619 */ 620 #define RF1_TUNER FIELD32(0x00020000) 621 622 /* 623 * RF 3 624 */ 625 #define RF3_TUNER FIELD32(0x00000100) 626 #define RF3_TXPOWER FIELD32(0x00003e00) 627 628 /* 629 * EEPROM contents. 630 */ 631 632 /* 633 * HW MAC address. 634 */ 635 #define EEPROM_MAC_ADDR_0 0x0002 636 #define EEPROM_MAC_ADDR_BYTE0 FIELD16(0x00ff) 637 #define EEPROM_MAC_ADDR_BYTE1 FIELD16(0xff00) 638 #define EEPROM_MAC_ADDR1 0x0003 639 #define EEPROM_MAC_ADDR_BYTE2 FIELD16(0x00ff) 640 #define EEPROM_MAC_ADDR_BYTE3 FIELD16(0xff00) 641 #define EEPROM_MAC_ADDR_2 0x0004 642 #define EEPROM_MAC_ADDR_BYTE4 FIELD16(0x00ff) 643 #define EEPROM_MAC_ADDR_BYTE5 FIELD16(0xff00) 644 645 /* 646 * EEPROM antenna. 647 * ANTENNA_NUM: Number of antenna's. 648 * TX_DEFAULT: Default antenna 0: diversity, 1: A, 2: B. 649 * RX_DEFAULT: Default antenna 0: diversity, 1: A, 2: B. 650 * LED_MODE: 0: default, 1: TX/RX activity, 2: Single (ignore link), 3: rsvd. 651 * DYN_TXAGC: Dynamic TX AGC control. 652 * HARDWARE_RADIO: 1: Hardware controlled radio. Read GPIO0. 653 * RF_TYPE: Rf_type of this adapter. 654 */ 655 #define EEPROM_ANTENNA 0x000b 656 #define EEPROM_ANTENNA_NUM FIELD16(0x0003) 657 #define EEPROM_ANTENNA_TX_DEFAULT FIELD16(0x000c) 658 #define EEPROM_ANTENNA_RX_DEFAULT FIELD16(0x0030) 659 #define EEPROM_ANTENNA_LED_MODE FIELD16(0x01c0) 660 #define EEPROM_ANTENNA_DYN_TXAGC FIELD16(0x0200) 661 #define EEPROM_ANTENNA_HARDWARE_RADIO FIELD16(0x0400) 662 #define EEPROM_ANTENNA_RF_TYPE FIELD16(0xf800) 663 664 /* 665 * EEPROM NIC config. 666 * CARDBUS_ACCEL: 0: enable, 1: disable. 667 * DYN_BBP_TUNE: 0: enable, 1: disable. 668 * CCK_TX_POWER: CCK TX power compensation. 669 */ 670 #define EEPROM_NIC 0x000c 671 #define EEPROM_NIC_CARDBUS_ACCEL FIELD16(0x0001) 672 #define EEPROM_NIC_DYN_BBP_TUNE FIELD16(0x0002) 673 #define EEPROM_NIC_CCK_TX_POWER FIELD16(0x000c) 674 675 /* 676 * EEPROM geography. 677 * GEO: Default geography setting for device. 678 */ 679 #define EEPROM_GEOGRAPHY 0x000d 680 #define EEPROM_GEOGRAPHY_GEO FIELD16(0x0f00) 681 682 /* 683 * EEPROM BBP. 684 */ 685 #define EEPROM_BBP_START 0x000e 686 #define EEPROM_BBP_SIZE 16 687 #define EEPROM_BBP_VALUE FIELD16(0x00ff) 688 #define EEPROM_BBP_REG_ID FIELD16(0xff00) 689 690 /* 691 * EEPROM TXPOWER 692 */ 693 #define EEPROM_TXPOWER_START 0x001e 694 #define EEPROM_TXPOWER_SIZE 7 695 #define EEPROM_TXPOWER_1 FIELD16(0x00ff) 696 #define EEPROM_TXPOWER_2 FIELD16(0xff00) 697 698 /* 699 * EEPROM Tuning threshold 700 */ 701 #define EEPROM_BBPTUNE 0x0030 702 #define EEPROM_BBPTUNE_THRESHOLD FIELD16(0x00ff) 703 704 /* 705 * EEPROM BBP R24 Tuning. 706 */ 707 #define EEPROM_BBPTUNE_R24 0x0031 708 #define EEPROM_BBPTUNE_R24_LOW FIELD16(0x00ff) 709 #define EEPROM_BBPTUNE_R24_HIGH FIELD16(0xff00) 710 711 /* 712 * EEPROM BBP R25 Tuning. 713 */ 714 #define EEPROM_BBPTUNE_R25 0x0032 715 #define EEPROM_BBPTUNE_R25_LOW FIELD16(0x00ff) 716 #define EEPROM_BBPTUNE_R25_HIGH FIELD16(0xff00) 717 718 /* 719 * EEPROM BBP R24 Tuning. 720 */ 721 #define EEPROM_BBPTUNE_R61 0x0033 722 #define EEPROM_BBPTUNE_R61_LOW FIELD16(0x00ff) 723 #define EEPROM_BBPTUNE_R61_HIGH FIELD16(0xff00) 724 725 /* 726 * EEPROM BBP VGC Tuning. 727 */ 728 #define EEPROM_BBPTUNE_VGC 0x0034 729 #define EEPROM_BBPTUNE_VGCUPPER FIELD16(0x00ff) 730 #define EEPROM_BBPTUNE_VGCLOWER FIELD16(0xff00) 731 732 /* 733 * EEPROM BBP R17 Tuning. 734 */ 735 #define EEPROM_BBPTUNE_R17 0x0035 736 #define EEPROM_BBPTUNE_R17_LOW FIELD16(0x00ff) 737 #define EEPROM_BBPTUNE_R17_HIGH FIELD16(0xff00) 738 739 /* 740 * RSSI <-> dBm offset calibration 741 */ 742 #define EEPROM_CALIBRATE_OFFSET 0x0036 743 #define EEPROM_CALIBRATE_OFFSET_RSSI FIELD16(0x00ff) 744 745 /* 746 * DMA descriptor defines. 747 */ 748 #define TXD_DESC_SIZE ( 5 * sizeof(__le32) ) 749 #define RXD_DESC_SIZE ( 4 * sizeof(__le32) ) 750 751 /* 752 * TX descriptor format for TX, PRIO, ATIM and Beacon Ring. 753 */ 754 755 /* 756 * Word0 757 */ 758 #define TXD_W0_PACKET_ID FIELD32(0x0000000f) 759 #define TXD_W0_RETRY_LIMIT FIELD32(0x000000f0) 760 #define TXD_W0_MORE_FRAG FIELD32(0x00000100) 761 #define TXD_W0_ACK FIELD32(0x00000200) 762 #define TXD_W0_TIMESTAMP FIELD32(0x00000400) 763 #define TXD_W0_OFDM FIELD32(0x00000800) 764 #define TXD_W0_NEW_SEQ FIELD32(0x00001000) 765 #define TXD_W0_IFS FIELD32(0x00006000) 766 #define TXD_W0_DATABYTE_COUNT FIELD32(0x0fff0000) 767 #define TXD_W0_CIPHER FIELD32(0x20000000) 768 #define TXD_W0_KEY_ID FIELD32(0xc0000000) 769 770 /* 771 * Word1 772 */ 773 #define TXD_W1_IV_OFFSET FIELD32(0x0000003f) 774 #define TXD_W1_AIFS FIELD32(0x000000c0) 775 #define TXD_W1_CWMIN FIELD32(0x00000f00) 776 #define TXD_W1_CWMAX FIELD32(0x0000f000) 777 778 /* 779 * Word2: PLCP information 780 */ 781 #define TXD_W2_PLCP_SIGNAL FIELD32(0x000000ff) 782 #define TXD_W2_PLCP_SERVICE FIELD32(0x0000ff00) 783 #define TXD_W2_PLCP_LENGTH_LOW FIELD32(0x00ff0000) 784 #define TXD_W2_PLCP_LENGTH_HIGH FIELD32(0xff000000) 785 786 /* 787 * Word3 788 */ 789 #define TXD_W3_IV FIELD32(0xffffffff) 790 791 /* 792 * Word4 793 */ 794 #define TXD_W4_EIV FIELD32(0xffffffff) 795 796 /* 797 * RX descriptor format for RX Ring. 798 */ 799 800 /* 801 * Word0 802 */ 803 #define RXD_W0_UNICAST_TO_ME FIELD32(0x00000002) 804 #define RXD_W0_MULTICAST FIELD32(0x00000004) 805 #define RXD_W0_BROADCAST FIELD32(0x00000008) 806 #define RXD_W0_MY_BSS FIELD32(0x00000010) 807 #define RXD_W0_CRC_ERROR FIELD32(0x00000020) 808 #define RXD_W0_OFDM FIELD32(0x00000040) 809 #define RXD_W0_PHYSICAL_ERROR FIELD32(0x00000080) 810 #define RXD_W0_CIPHER FIELD32(0x00000100) 811 #define RXD_W0_CIPHER_ERROR FIELD32(0x00000200) 812 #define RXD_W0_DATABYTE_COUNT FIELD32(0x0fff0000) 813 814 /* 815 * Word1 816 */ 817 #define RXD_W1_RSSI FIELD32(0x000000ff) 818 #define RXD_W1_SIGNAL FIELD32(0x0000ff00) 819 820 /* 821 * Word2 822 */ 823 #define RXD_W2_IV FIELD32(0xffffffff) 824 825 /* 826 * Word3 827 */ 828 #define RXD_W3_EIV FIELD32(0xffffffff) 829 830 /* 831 * Macros for converting txpower from EEPROM to mac80211 value 832 * and from mac80211 value to register value. 833 */ 834 #define MIN_TXPOWER 0 835 #define MAX_TXPOWER 31 836 #define DEFAULT_TXPOWER 24 837 838 #define TXPOWER_FROM_DEV(__txpower) \ 839 (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower) 840 841 #define TXPOWER_TO_DEV(__txpower) \ 842 clamp_t(char, __txpower, MIN_TXPOWER, MAX_TXPOWER) 843 844 #endif /* RT2500USB_H */ 845