45 #define RF2525E 0x0204 61 #define SECCSR0 0x0028 101 #define PCICSR 0x008c 107 #define TIMECSR2 0x00a8 110 #define TIMECSR3 0x00b4 118 #define PWRCSR0 0x00c4 119 #define PSCSR0 0x00c8 120 #define PSCSR1 0x00cc 121 #define PSCSR2 0x00d0 122 #define PSCSR3 0x00d4 123 #define PWRCSR1 0x00d8 124 #define TIMECSR 0x00dc 125 #define MACCSR0 0x00e0 126 #define MACCSR1 0x00e4 127 #define RALINKCSR 0x00e8 128 #define BCNCSR 0x00ec 133 #define BBPCSR 0x00f0 135 #define LEDCSR 0x00f8 137 #define SECCSR3 0x00fc 144 #define PRIPTR 0x0108 145 #define ATIMPTR 0x010c 147 #define TXACKCSR0 0x0110 148 #define ACKCNT0 0x0114 149 #define ACKCNT1 0x0118 154 #define GPIOCSR 0x0120 155 #define FIFOCSR0 0x0128 156 #define FIFOCSR1 0x012c 157 #define BCNCSR1 0x0130 158 #define MACCSR2 0x0134 159 #define TESTCSR 0x0138 160 #define ARCSR2 0x013c 161 #define ARCSR3 0x0140 162 #define ARCSR4 0x0144 163 #define ARCSR5 0x0148 164 #define ARTCSR0 0x014c 165 #define ARTCSR1 0x0150 166 #define ARTCSR2 0x0154 167 #define SECCSR1 0x0158 168 #define BBPCSR1 0x015c 169 #define DBANDCSR0 0x0160 170 #define DBANDCSR1 0x0164 171 #define BBPPCSR 0x0168 172 #define DBGSEL0 0x016c 173 #define DBGSEL1 0x0170 174 #define BISTCSR 0x0174 175 #define MCAST0 0x0178 176 #define MCAST1 0x017c 177 #define UARTCSR0 0x0180 178 #define UARTCSR1 0x0184 179 #define UARTCSR3 0x0188 180 #define UARTCSR4 0x018c 181 #define UART2CSR0 0x0190 182 #define UART2CSR1 0x0194 183 #define UART2CSR3 0x0198 184 #define UART2CSR4 0x019c 189 #define EEPROM_ANTENNA 0x10 190 #define EEPROM_GEOGRAPHY 0x12 191 #define EEPROM_BBP_START 0x13 192 #define EEPROM_BBP_END 0x22 194 #define EEPROM_BBP_SIZE 16 204 #define CSR1_SOFT_RESET FIELD32(0, 0x00000001) 205 #define CSR1_BBP_RESET FIELD32(1, 0x00000002) 206 #define CSR1_HOST_READY FIELD32(2, 0x00000004) 211 #define CSR3_BYTE0 FIELD32(0, 0x000000ff) 212 #define CSR3_BYTE1 FIELD32(8, 0x0000ff00) 213 #define CSR3_BYTE2 FIELD32(16, 0x00ff0000) 214 #define CSR3_BYTE3 FIELD32(24, 0xff000000) 219 #define CSR4_BYTE4 FIELD32(0, 0x000000ff) 220 #define CSR4_BYTE5 FIELD32(8, 0x0000ff00) 225 #define CSR5_BYTE0 FIELD32(0, 0x000000ff) 226 #define CSR5_BYTE1 FIELD32(8, 0x0000ff00) 227 #define CSR5_BYTE2 FIELD32(16, 0x00ff0000) 228 #define CSR5_BYTE3 FIELD32(24, 0xff000000) 233 #define CSR6_BYTE4 FIELD32(0, 0x000000ff) 234 #define CSR6_BYTE5 FIELD32(8, 0x0000ff00) 240 #define CSR7_TBCN_EXPIRE FIELD32(0, 0x00000001) 241 #define CSR7_TWAKE_EXPIRE FIELD32(1, 0x00000002) 242 #define CSR7_TATIMW_EXPIRE FIELD32(2, 0x00000004) 243 #define CSR7_TXDONE_TXRING FIELD32(3, 0x00000008) 244 #define CSR7_TXDONE_ATIMRING FIELD32(4, 0x00000010) 245 #define CSR7_TXDONE_PRIORING FIELD32(5, 0x00000020) 246 #define CSR7_RXDONE FIELD32(6, 0x00000040) 247 #define CSR7_DECRYPTION_DONE FIELD32(7, 0x00000080) 248 #define CSR7_ENCRYPTION_DONE FIELD32(8, 0x00000100) 249 #define CSR7_UART1_TX_TRESHOLD FIELD32(9, 0x00000200) 250 #define CSR7_UART1_RX_TRESHOLD FIELD32(10, 0x00000400) 251 #define CSR7_UART1_IDLE_TRESHOLD FIELD32(11, 0x00000800) 252 #define CSR7_UART1_TX_BUFF_ERROR FIELD32(12, 0x00001000) 253 #define CSR7_UART1_RX_BUFF_ERROR FIELD32(13, 0x00002000) 254 #define CSR7_UART2_TX_TRESHOLD FIELD32(14, 0x00004000) 255 #define CSR7_UART2_RX_TRESHOLD FIELD32(15, 0x00008000) 256 #define CSR7_UART2_IDLE_TRESHOLD FIELD32(16, 0x00010000) 257 #define CSR7_UART2_TX_BUFF_ERROR FIELD32(17, 0x00020000) 258 #define CSR7_UART2_RX_BUFF_ERROR FIELD32(18, 0x00040000) 259 #define CSR7_TIMER_CSR3_EXPIRE FIELD32(19, 0x00080000) 265 #define CSR8_TBCN_EXPIRE FIELD32(0, 0x00000001) 266 #define CSR8_TWAKE_EXPIRE FIELD32(1, 0x00000002) 267 #define CSR8_TATIMW_EXPIRE FIELD32(2, 0x00000004) 268 #define CSR8_TXDONE_TXRING FIELD32(3, 0x00000008) 269 #define CSR8_TXDONE_ATIMRING FIELD32(4, 0x00000010) 270 #define CSR8_TXDONE_PRIORING FIELD32(5, 0x00000020) 271 #define CSR8_RXDONE FIELD32(6, 0x00000040) 272 #define CSR8_DECRYPTION_DONE FIELD32(7, 0x00000080) 273 #define CSR8_ENCRYPTION_DONE FIELD32(8, 0x00000100) 274 #define CSR8_UART1_TX_TRESHOLD FIELD32(9, 0x00000200) 275 #define CSR8_UART1_RX_TRESHOLD FIELD32(10, 0x00000400) 276 #define CSR8_UART1_IDLE_TRESHOLD FIELD32(11, 0x00000800) 277 #define CSR8_UART1_TX_BUFF_ERROR FIELD32(12, 0x00001000) 278 #define CSR8_UART1_RX_BUFF_ERROR FIELD32(13, 0x00002000) 279 #define CSR8_UART2_TX_TRESHOLD FIELD32(14, 0x00004000) 280 #define CSR8_UART2_RX_TRESHOLD FIELD32(15, 0x00008000) 281 #define CSR8_UART2_IDLE_TRESHOLD FIELD32(16, 0x00010000) 282 #define CSR8_UART2_TX_BUFF_ERROR FIELD32(17, 0x00020000) 283 #define CSR8_UART2_RX_BUFF_ERROR FIELD32(18, 0x00040000) 284 #define CSR8_TIMER_CSR3_EXPIRE FIELD32(19, 0x00080000) 289 #define CSR9_MAX_FRAME_UNIT FIELD32(7, 0x00000f80) 294 #define SECCSR0_KICK_DECRYPT FIELD32(0, 0x00000001) 295 #define SECCSR0_ONE_SHOT FIELD32(1, 0x00000002) 296 #define SECCSR0_DESC_ADDRESS FIELD32(2, 0xfffffffc) 301 #define CSR11_CWMIN FIELD32(0, 0x0000000f) 302 #define CSR11_CWMAX FIELD32(4, 0x000000f0) 303 #define CSR11_SLOT_TIME FIELD32(8, 0x00001f00) 304 #define CSR11_CW_SELECT FIELD32(13, 0x00002000) 305 #define CSR11_LONG_RETRY FIELD32(16, 0x00ff0000) 306 #define CSR11_SHORT_RETRY FIELD32(24, 0xff000000) 312 #define CSR12_BEACON_INTERVAL FIELD32(0, 0x0000ffff) 313 #define CSR12_CFPMAX_DURATION FIELD32(16, 0xffff0000) 319 #define CSR13_ATIMW_DURATION FIELD32(0, 0x0000ffff) 320 #define CSR13_CFP_PERIOD FIELD32(16, 0x00ff0000) 325 #define CSR14_TSF_COUNT FIELD32(0, 0x00000001) 326 #define CSR14_TSF_SYNC FIELD32(1, 0x00000006) 327 #define CSR14_TBCN FIELD32(3, 0x00000008) 328 #define CSR14_TCFP FIELD32(4, 0x00000010) 329 #define CSR14_TATIMW FIELD32(5, 0x00000020) 330 #define CSR14_BEACON_GEN FIELD32(6, 0x00000040) 331 #define CSR14_CFP_COUNT_PRELOAD FIELD32(8, 0x0000ff00) 332 #define CSR14_TBCM_PRELOAD FIELD32(16, 0xffff0000) 337 #define CSR15_CFP FIELD32(0, 0x00000001) 338 #define CSR15_ATIMW FIELD32(1, 0x00000002) 339 #define CSR15_BEACON_SENT FIELD32(2, 0x00000004) 344 #define CSR16_LOW_TSFTIMER FIELD32(0, 0xffffffff) 349 #define CSR17_HIGH_TSFTIMER FIELD32(0, 0xffffffff) 354 #define CSR18_SIFS FIELD32(0, 0x000001ff) 355 #define CSR18_PIFS FIELD32(16, 0x01f00000) 360 #define CSR19_DIFS FIELD32(0, 0x0000ffff) 361 #define CSR19_EIFS FIELD32(16, 0xffff0000) 366 #define CSR20_DELAY_AFTER_TBCN FIELD32(0, 0x0000ffff) 367 #define CSR20_TBCN_BEFORE_WAKEUP FIELD32(16, 0x00ff0000) 368 #define CSR20_AUTOWAKE FIELD32(24, 0x01000000) 373 #define CSR21_RELOAD FIELD32(0, 0x00000001) 374 #define CSR21_EEPROM_DATA_CLOCK FIELD32(1, 0x00000002) 375 #define CSR21_EEPROM_CHIP_SELECT FIELD32(2, 0x00000004) 376 #define CSR21_EEPROM_DATA_IN FIELD32(3, 0x00000008) 377 #define CSR21_EEPROM_DATA_OUT FIELD32(4, 0x00000010) 378 #define CSR21_TYPE_93C46 FIELD32(5, 0x00000020) 383 #define CSR22_CFP_DURATION_REMAIN FIELD32(0, 0x0000ffff) 384 #define CSR22_RELOAD_CFP_DURATION FIELD32(16, 0x00010000) 394 #define TXCSR0_KICK_TX FIELD32(0, 0x00000001) 395 #define TXCSR0_KICK_ATIM FIELD32(1, 0x00000002) 396 #define TXCSR0_KICK_PRIO FIELD32(2, 0x00000004) 397 #define TXCSR0_ABORT FIELD32(3, 0x00000008) 402 #define TXCSR1_ACK_TIMEOUT FIELD32(0, 0x000001ff) 403 #define TXCSR1_ACK_CONSUME_TIME FIELD32(9, 0x0003fe00) 404 #define TXCSR1_TSF_OFFSET FIELD32(18, 0x00fc0000) 405 #define TXCSR1_AUTORESPONDER FIELD32(24, 0x01000000) 410 #define TXCSR2_TXD_SIZE FIELD32(0, 0x000000ff) 411 #define TXCSR2_NUM_TXD FIELD32(8, 0x0000ff00) 412 #define TXCSR2_NUM_ATIM FIELD32(16, 0x00ff0000) 413 #define TXCSR2_NUM_PRIO FIELD32(24, 0xff000000) 418 #define TXCSR3_TX_RING_REGISTER FIELD32(0, 0xffffffff) 423 #define TXCSR4_ATIM_RING_REGISTER FIELD32(0, 0xffffffff) 428 #define TXCSR5_PRIO_RING_REGISTER FIELD32(0, 0xffffffff) 433 #define TXCSR6_BEACON_REGISTER FIELD32(0, 0xffffffff) 438 #define TXCSR7_AR_POWERMANAGEMENT FIELD32(0, 0x00000001) 443 #define TXCSR8_CCK_SIGNAL FIELD32(0, 0x000000ff) 444 #define TXCSR8_CCK_SERVICE FIELD32(8, 0x0000ff00) 445 #define TXCSR8_CCK_LENGTH_LOW FIELD32(16, 0x00ff0000) 446 #define TXCSR8_CCK_LENGTH_HIGH FIELD32(24, 0xff000000) 451 #define TXCSR9_OFDM_RATE FIELD32(0, 0x000000ff) 452 #define TXCSR9_OFDM_SERVICE FIELD32(8, 0x0000ff00) 453 #define TXCSR9_OFDM_LENGTH_LOW FIELD32(16, 0x00ff0000) 454 #define TXCSR9_OFDM_LENGTH_HIGH FIELD32(24, 0xff000000) 459 #define RXCSR0_DISABLE_RX FIELD32(0, 0x00000001) 460 #define RXCSR0_DROP_CRC FIELD32(1, 0x00000002) 461 #define RXCSR0_DROP_PHYSICAL FIELD32(2, 0x00000004) 462 #define RXCSR0_DROP_CONTROL FIELD32(3, 0x00000008) 463 #define RXCSR0_DROP_NOT_TO_ME FIELD32(4, 0x00000010) 464 #define RXCSR0_DROP_TODS FIELD32(5, 0x00000020) 465 #define RXCSR0_DROP_VERSION_ERROR FIELD32(6, 0x00000040) 466 #define RXCSR0_PASS_CRC FIELD32(7, 0x00000080) 467 #define RXCSR0_PASS_PLCP FIELD32(8, 0x00000100) 468 #define RXCSR0_DROP_MCAST FIELD32(9, 0x00000200) 469 #define RXCSR0_DROP_BCAST FIELD32(10, 0x00000400) 470 #define RXCSR0_ENABLE_QOS FIELD32(11, 0x00000800) 475 #define RXCSR1_RXD_SIZE FIELD32(0, 0x000000ff) 476 #define RXCSR1_NUM_RXD FIELD32(8, 0x0000ff00) 481 #define RXCSR2_RX_RING_REGISTER FIELD32(0, 0xffffffff) 486 #define RXCSR3_BBP_ID0 FIELD32(0, 0x0000007f) 487 #define RXCSR3_BBP_ID0_VALID FIELD32(7, 0x00000080) 488 #define RXCSR3_BBP_ID1 FIELD32(8, 0x00007f00) 489 #define RXCSR3_BBP_ID1_VALID FIELD32(15, 0x00008000) 490 #define RXCSR3_BBP_ID2 FIELD32(16, 0x007f0000) 491 #define RXCSR3_BBP_ID2_VALID FIELD32(23, 0x00800000) 492 #define RXCSR3_BBP_ID3 FIELD32(24, 0x7f000000) 493 #define RXCSR3_BBP_ID3_VALID FIELD32(31, 0x80000000) 498 #define ARCSR1_AR_BBP_DATA2 FIELD32(0, 0x000000ff) 499 #define ARCSR1_AR_BBP_ID2 FIELD32(8, 0x0000ff00) 500 #define ARCSR1_AR_BBP_DATA3 FIELD32(16, 0x00ff0000) 501 #define ARCSR1_AR_BBP_ID3 FIELD32(24, 0xff000000) 511 #define PCICSR_BIG_ENDIAN FIELD32(0, 0x00000001) 512 #define PCICSR_RX_TRESHOLD FIELD32(1, 0x00000006) 514 #define PCICSR_TX_TRESHOLD FIELD32(3, 0x00000018) 516 #define PCICSR_BURST_LENTH FIELD32(5, 0x00000060) 518 #define PCICSR_ENABLE_CLK FIELD32(7, 0x00000080) 520 #define PCICSR_READ_MULTIPLE FIELD32(8, 0x00000100) 521 #define PCICSR_WRITE_INVALID FIELD32(9, 0x00000200) 527 #define PWRCSR1_SET_STATE FIELD32(0, 0x00000001) 528 #define PWRCSR1_BBP_DESIRE_STATE FIELD32(1, 0x00000006) 529 #define PWRCSR1_RF_DESIRE_STATE FIELD32(3, 0x00000018) 530 #define PWRCSR1_BBP_CURR_STATE FIELD32(5, 0x00000060) 531 #define PWRCSR1_RF_CURR_STATE FIELD32(7, 0x00000180) 532 #define PWRCSR1_PUT_TO_SLEEP FIELD32(9, 0x00000200) 537 #define TIMECSR_US_COUNT FIELD32(0, 0x000000ff) 538 #define TIMECSR_US_64_COUNT FIELD32(8, 0x0000ff00) 539 #define TIMECSR_BEACON_EXPECT FIELD32(16, 0x00070000) 544 #define MACCSR1_KICK_RX FIELD32(0, 0x00000001) 545 #define MACCSR1_ONESHOT_RXMODE FIELD32(1, 0x00000002) 546 #define MACCSR1_BBPRX_RESET_MODE FIELD32(2, 0x00000004) 547 #define MACCSR1_AUTO_TXBBP FIELD32(3, 0x00000008) 548 #define MACCSR1_AUTO_RXBBP FIELD32(4, 0x00000010) 549 #define MACCSR1_LOOPBACK FIELD32(5, 0x00000060) 551 #define MACCSR1_INTERSIL_IF FIELD32(7, 0x00000080) 556 #define RALINKCSR_AR_BBP_DATA0 FIELD32(0, 0x000000ff) 557 #define RALINKCSR_AR_BBP_ID0 FIELD32(8, 0x00007f00) 558 #define RALINKCSR_AR_BBP_VALID0 FIELD32(15, 0x00008000) 559 #define RALINKCSR_AR_BBP_DATA1 FIELD32(16, 0x00ff0000) 560 #define RALINKCSR_AR_BBP_ID1 FIELD32(24, 0x7f000000) 561 #define RALINKCSR_AR_BBP_VALID1 FIELD32(31, 0x80000000) 566 #define BCNCSR_CHANGE FIELD32(0, 0x00000001) 567 #define BCNCSR_DELTATIME FIELD32(1, 0x0000001e) 568 #define BCNCSR_NUM_BEACON FIELD32(5, 0x00001fe0) 569 #define BCNCSR_MODE FIELD32(13, 0x00006000) 570 #define BCNCSR_PLUS FIELD32(15, 0x00008000) 575 #define BBPCSR_VALUE FIELD32(0, 0x000000ff) 576 #define BBPCSR_REGNUM FIELD32(8, 0x00007f00) 577 #define BBPCSR_BUSY FIELD32(15, 0x00008000) 578 #define BBPCSR_WRITE_CONTROL FIELD32(16, 0x00010000) 583 #define RFCSR_VALUE FIELD32(0, 0x00ffffff) 584 #define RFCSR_NUMBER_OF_BITS FIELD32(24, 0x1f000000) 585 #define RFCSR_IF_SELECT FIELD32(29, 0x20000000) 586 #define RFCSR_PLL_LD FIELD32(30, 0x40000000) 587 #define RFCSR_BUSY FIELD32(31, 0x80000000) 592 #define LEDCSR_ON_PERIOD FIELD32(0, 0x000000ff) 593 #define LEDCSR_OFF_PERIOD FIELD32(8, 0x0000ff00) 594 #define LEDCSR_LINK FIELD32(16, 0x00010000) 595 #define LEDCSR_ACTIVITY FIELD32(17, 0x00020000) 596 #define LEDCSR_LINK_POLARITY FIELD32(18, 0x00040000) 597 #define LEDCSR_ACTIVITY_POLARITY FIELD32(19, 0x00080000) 598 #define LEDCSR_LED_DEFAULT FIELD32(20, 0x00100000) 603 #define GPIOCSR_BIT0 FIELD32(0, 0x00000001) 604 #define GPIOCSR_BIT1 FIELD32(1, 0x00000002) 605 #define GPIOCSR_BIT2 FIELD32(2, 0x00000004) 606 #define GPIOCSR_BIT3 FIELD32(3, 0x00000008) 607 #define GPIOCSR_BIT4 FIELD32(4, 0x00000010) 608 #define GPIOCSR_BIT5 FIELD32(5, 0x00000020) 609 #define GPIOCSR_BIT6 FIELD32(6, 0x00000040) 610 #define GPIOCSR_BIT7 FIELD32(7, 0x00000080) 611 #define GPIOCSR_DIR0 FIELD32(8, 0x00000100) 612 #define GPIOCSR_DIR1 FIELD32(9, 0x00000200) 613 #define GPIOCSR_DIR2 FIELD32(10, 0x00000400) 614 #define GPIOCSR_DIR3 FIELD32(11, 0x00000800) 615 #define GPIOCSR_DIR4 FIELD32(12, 0x00001000) 616 #define GPIOCSR_DIR5 FIELD32(13, 0x00002000) 617 #define GPIOCSR_DIR6 FIELD32(14, 0x00004000) 618 #define GPIOCSR_DIR7 FIELD32(15, 0x00008000) 623 #define BCNCSR1_PRELOAD FIELD32(0, 0x0000ffff) 624 #define BCNCSR1_BEACON_CWMIN FIELD32(16, 0x000f0000) 629 #define MACCSR2_DELAY FIELD32(0, 0x000000ff) 634 #define SECCSR1_KICK_ENCRYPT FIELD32(0, 0x00000001) 635 #define SECCSR1_ONE_SHOT FIELD32(1, 0x00000002) 636 #define SECCSR1_DESC_ADDRESS FIELD32(2, 0xfffffffc) 641 #define RF1_TUNER FIELD32(17, 0x00020000) 642 #define RF3_TUNER FIELD32(8, 0x00000100) 643 #define RF3_TXPOWER FIELD32(9, 0x00003e00) 653 #define EEPROM_WIDTH_93c46 6 654 #define EEPROM_WIDTH_93c66 8 655 #define EEPROM_WRITE_OPCODE 0x05 656 #define EEPROM_READ_OPCODE 0x06 661 #define EEPROM_ANTENNA_NUM FIELD16(0, 0x0003) 662 #define EEPROM_ANTENNA_TX_DEFAULT FIELD16(2, 0x000c) 663 #define EEPROM_ANTENNA_RX_DEFAULT FIELD16(4, 0x0030) 664 #define EEPROM_ANTENNA_LED_MODE FIELD16(6, 0x01c0) 666 #define EEPROM_ANTENNA_DYN_TXAGC FIELD16(9, 0x0200) 667 #define EEPROM_ANTENNA_HARDWARE_RADIO FIELD16(10, 0x0400) 668 #define EEPROM_ANTENNA_RF_TYPE FIELD16(11, 0xf800) 673 #define EEPROM_GEOGRAPHY_GEO FIELD16(8, 0x0f00) 678 #define EEPROM_NIC_CARDBUS_ACCEL FIELD16(0, 0x0001) 679 #define EEPROM_NIC_DYN_BBP_TUNE FIELD16(1, 0x0002) 680 #define EEPROM_NIC_CCK_TX_POWER FIELD16(2, 0x000c) 685 #define EEPROM_TX_POWER1 FIELD16(0, 0x00ff) 686 #define EEPROM_TX_POWER2 FIELD16(8, 0xff00) 691 #define EEPROM_BBP_VALUE FIELD16(0, 0x00ff) 692 #define EEPROM_BBP_REG_ID FIELD16(8, 0xff00) 697 #define EEPROM_VERSION_FAE FIELD16(0, 0x00ff) 698 #define EEPROM_VERSION FIELD16(8, 0xff00) 707 #define SIZE_DESCRIPTOR 48 714 #define TXD_W0_OWNER_NIC FIELD32(0, 0x00000001) 715 #define TXD_W0_VALID FIELD32(1, 0x00000002) 716 #define TXD_W0_RESULT FIELD32(2, 0x0000001c) 717 #define TXD_W0_RETRY_COUNT FIELD32(5, 0x000000e0) 718 #define TXD_W0_MORE_FRAG FIELD32(8, 0x00000100) 719 #define TXD_W0_ACK FIELD32(9, 0x00000200) 720 #define TXD_W0_TIMESTAMP FIELD32(10, 0x00000400) 721 #define TXD_W0_OFDM FIELD32(11, 0x00000800) 722 #define TXD_W0_CIPHER_OWNER FIELD32(12, 0x00001000) 723 #define TXD_W0_IFS FIELD32(13, 0x00006000) 724 #define TXD_W0_RETRY_MODE FIELD32(15, 0x00008000) 725 #define TXD_W0_DATABYTE_COUNT FIELD32(16, 0x0fff0000) 726 #define TXD_W0_CIPHER_ALG FIELD32(29, 0xe0000000) 729 #define TXD_W1_BUFFER_ADDRESS FIELD32(0, 0xffffffff) 732 #define TXD_W2_IV_OFFSET FIELD32(0, 0x0000003f) 733 #define TXD_W2_AIFS FIELD32(6, 0x000000c0) 734 #define TXD_W2_CWMIN FIELD32(8, 0x00000f00) 735 #define TXD_W2_CWMAX FIELD32(12, 0x0000f000) 738 #define TXD_W3_PLCP_SIGNAL FIELD32(0, 0x000000ff) 739 #define TXD_W3_PLCP_SERVICE FIELD32(8, 0x0000ff00) 740 #define TXD_W3_PLCP_LENGTH_LOW FIELD32(16, 0x00ff0000) 741 #define TXD_W3_PLCP_LENGTH_HIGH FIELD32(24, 0xff000000) 744 #define TXD_W4_IV FIELD32(0, 0xffffffff) 747 #define TXD_W5_EIV FIELD32(0, 0xffffffff) 750 #define TXD_W6_KEY FIELD32(0, 0xffffffff) 753 #define TXD_W7_KEY FIELD32(0, 0xffffffff) 756 #define TXD_W8_KEY FIELD32(0, 0xffffffff) 759 #define TXD_W9_KEY FIELD32(0, 0xffffffff) 762 #define TXD_W10_RTS FIELD32(0, 0x00000001) 763 #define TXD_W10_TX_RATE FIELD32(0, 0x000000fe) 764 } __attribute__ ((packed));
771 #define RXD_W0_OWNER_NIC FIELD32(0, 0x00000001) 772 #define RXD_W0_UNICAST_TO_ME FIELD32(1, 0x00000002) 773 #define RXD_W0_MULTICAST FIELD32(2, 0x00000004) 774 #define RXD_W0_BROADCAST FIELD32(3, 0x00000008) 775 #define RXD_W0_MY_BSS FIELD32(4, 0x00000010) 776 #define RXD_W0_CRC FIELD32(5, 0x00000020) 777 #define RXD_W0_OFDM FIELD32(6, 0x00000040) 778 #define RXD_W0_PHYSICAL_ERROR FIELD32(7, 0x00000080) 779 #define RXD_W0_CIPHER_OWNER FIELD32(8, 0x00000100) 780 #define RXD_W0_ICV_ERROR FIELD32(9, 0x00000200) 781 #define RXD_W0_IV_OFFSET FIELD32(10, 0x0000fc00) 782 #define RXD_W0_DATABYTE_COUNT FIELD32(16, 0x0fff0000) 783 #define RXD_W0_CIPHER_ALG FIELD32(29, 0xe0000000) 786 #define RXD_W1_BUFFER_ADDRESS FIELD32(0, 0xffffffff) 789 #define RXD_W2_BBR0 FIELD32(0, 0x000000ff) 790 #define RXD_W2_RSSI FIELD32(8, 0x0000ff00) 791 #define RXD_W2_TA FIELD32(16, 0xffff0000) 794 #define RXD_W3_TA FIELD32(0, 0xffffffff) 797 #define RXD_W4_IV FIELD32(0, 0xffffffff) 800 #define RXD_W5_EIV FIELD32(0, 0xffffffff) 803 #define RXD_W6_KEY FIELD32(0, 0xffffffff) 806 #define RXD_W7_KEY FIELD32(0, 0xffffffff) 809 #define RXD_W8_KEY FIELD32(0, 0xffffffff) 812 #define RXD_W9_KEY FIELD32(0, 0xffffffff) 815 #define RXD_W10_DROP FIELD32(0, 0x00000001) 816 } __attribute__ ((packed));
828 struct pci_dev *pci_dev;
833 struct _rt2x00_chip chip;
839 void __iomem *csr_addr;
844 struct _rf_channel channel;
856 u16 eeprom[EEPROM_BBP_SIZE];
861 struct _data_ring rx;
862 struct _data_ring tx;
864 rtdm_irq_t irq_handle;
867 } __attribute__ ((packed));
869 static int rt2x00_get_rf_value(
const struct _rt2x00_chip *chip,
const u8 channel,
struct _rf_channel *rf_reg) {
873 index = rt2x00_get_channel_index(channel);
877 memset(rf_reg, 0x00,
sizeof(*rf_reg));
879 if(rt2x00_rf(chip, RF2522)){
880 rf_reg->rf1 = 0x00002050;
881 rf_reg->rf3 = 0x00000101;
884 if(rt2x00_rf(chip, RF2523)){
885 rf_reg->rf1 = 0x00022010;
886 rf_reg->rf3 = 0x000e0111;
887 rf_reg->rf4 = 0x00000a1b;
890 if(rt2x00_rf(chip, RF2524)){
891 rf_reg->rf1 = 0x00032020;
892 rf_reg->rf3 = 0x00000101;
893 rf_reg->rf4 = 0x00000a1b;
896 if(rt2x00_rf(chip, RF2525)){
897 rf_reg->rf1 = 0x00022020;
898 rf_reg->rf2 = 0x00080000;
899 rf_reg->rf3 = 0x00060111;
900 rf_reg->rf4 = 0x00000a1b;
903 if(rt2x00_rf(chip, RF2525E)){
904 rf_reg->rf2 = 0x00080000;
905 rf_reg->rf3 = 0x00060111;
908 if(rt2x00_rf(chip, RF5222)){
909 rf_reg->rf3 = 0x00000101;
916 rf_reg->rf2 = 0x000c1fda + (index * 0x14);
918 rf_reg->rf2 += 0x0000001c;
922 rf_reg->rf2 |= 0x00000c9e + (index * 0x04);
923 if(rf_reg->rf2 & 0x00000040)
924 rf_reg->rf2 += 0x00000040;
927 rf_reg->rf4 &= ~0x00000018;
932 if(OFDM_CHANNEL(channel)){
933 rf_reg->rf1 = 0x00022020;
934 rf_reg->rf2 |= 0x00001136 + (index * 0x04);
935 if(rf_reg->rf2 & 0x00000040)
936 rf_reg->rf2 += 0x00000040;
939 rf_reg->rf4 = 0x00000a1b;
941 rf_reg->rf4 = 0x00000a0b;
944 else if(UNII_LOW_CHANNEL(channel)){
945 rf_reg->rf1 = 0x00022010;
946 rf_reg->rf2 = 0x00018896 + (index * 0x04);
947 rf_reg->rf4 = 0x00000a1f;
949 else if(HIPERLAN2_CHANNEL(channel)){
950 rf_reg->rf1 = 0x00022010;
951 rf_reg->rf2 = 0x00008802 + (index * 0x04);
952 rf_reg->rf4 = 0x00000a0f;
954 else if(UNII_HIGH_CHANNEL(channel)){
955 rf_reg->rf1 = 0x00022020;
956 rf_reg->rf2 = 0x000090a6 + (index * 0x08);
957 rf_reg->rf4 = 0x00000a07;
961 rf_reg->rf1 = cpu_to_le32(rf_reg->rf1);
962 rf_reg->rf2 = cpu_to_le32(rf_reg->rf2);
963 rf_reg->rf3 = cpu_to_le32(rf_reg->rf3);
964 rf_reg->rf4 = cpu_to_le32(rf_reg->rf4);
973 rt2x00_get_txpower(
const struct _rt2x00_chip *chip,
const u8 tx_power) {
975 return tx_power / 100 * 31;
999 static inline int rt2x00_pci_alloc_ring(
1000 struct _rt2x00_core *core,
1001 struct _data_ring *ring,
1003 const u16 max_entries,
1004 const u16 entry_size,
1005 const u16 desc_size) {
1007 struct _rt2x00_pci *rt2x00pci = rt2x00_priv(core);
1009 rt2x00_init_ring(core, ring, ring_type, max_entries, entry_size, desc_size);
1011 ring->data_addr = dma_alloc_coherent(&rt2x00pci->pci_dev->dev, ring->mem_size, &ring->data_dma, GFP_KERNEL);
1012 if(!ring->data_addr)
1015 memset(ring->data_addr, 0x00, ring->mem_size);
1021 rt2x00_pci_alloc_rings(
struct _rt2x00_core *core) {
1023 struct _rt2x00_pci *rt2x00pci = rt2x00_priv(core);
1025 if(rt2x00_pci_alloc_ring(core, &rt2x00pci->rx, RING_RX, RX_ENTRIES, DATA_FRAME_SIZE, SIZE_DESCRIPTOR)
1026 || rt2x00_pci_alloc_ring(core, &rt2x00pci->tx, RING_TX, TX_ENTRIES, DATA_FRAME_SIZE, SIZE_DESCRIPTOR)) {
1027 ERROR(
"DMA allocation failed.\n");
1035 rt2x00_pci_free_ring(
struct _data_ring *ring) {
1037 struct _rt2x00_pci *rt2x00pci = rt2x00_priv(ring->core);
1040 dma_free_coherent(&rt2x00pci->pci_dev->dev, ring->mem_size, ring->data_addr, ring->data_dma);
1041 ring->data_addr = NULL;
1043 rt2x00_deinit_ring(ring);
1047 rt2x00_pci_free_rings(
struct _rt2x00_core *core) {
1049 struct _rt2x00_pci *rt2x00pci = rt2x00_priv(core);
1051 rt2x00_pci_free_ring(&rt2x00pci->rx);
1052 rt2x00_pci_free_ring(&rt2x00pci->tx);
1058 #define DESC_BASE(__ring) ( (void*)((__ring)->data_addr) ) 1059 #define DATA_BASE(__ring) ( (void*)(DESC_BASE(__ring) + ((__ring)->max_entries * (__ring)->desc_size)) ) 1061 #define __DESC_ADDR(__ring, __index) ( (void*)(DESC_BASE(__ring) + ((__index) * (__ring)->desc_size)) ) 1062 #define __DATA_ADDR(__ring, __index) ( (void*)(DATA_BASE(__ring) + ((__index) * (__ring)->entry_size)) ) 1064 #define DESC_ADDR(__ring) ( __DESC_ADDR(__ring, (__ring)->index) ) 1065 #define DESC_ADDR_DONE(__ring) ( __DESC_ADDR(__ring, (__ring)->index_done) ) 1067 #define DATA_ADDR(__ring) ( __DATA_ADDR(__ring, (__ring)->index) ) 1068 #define DATA_ADDR_DONE(__ring) ( __DATA_ADDR(__ring, (__ring)->index_done) ) 1078 #define REGISTER_BUSY_COUNT 10 1079 #define REGISTER_BUSY_DELAY 100 1082 rt2x00_register_read(
const struct _rt2x00_pci *rt2x00pci,
const unsigned long offset, u32 *value) {
1084 *value = readl((
void*)(rt2x00pci->csr_addr + offset));
1088 rt2x00_register_multiread(
const struct _rt2x00_pci *rt2x00pci,
const unsigned long offset, u32 *value,
const u16 length) {
1090 memcpy_fromio((
void*)value, (
void*)(rt2x00pci->csr_addr + offset), length);
1094 rt2x00_register_write(
const struct _rt2x00_pci *rt2x00pci,
const unsigned long offset,
const u32 value) {
1096 writel(value, (
void*)(rt2x00pci->csr_addr + offset));
1100 rt2x00_register_multiwrite(
const struct _rt2x00_pci *rt2x00pci,
const unsigned long offset, u32 *value,
const u16 length) {
1102 memcpy_toio((
void*)(rt2x00pci->csr_addr + offset), (
void*)value, length);
1106 rt2x00_bbp_regwrite(
const struct _rt2x00_pci *rt2x00pci,
const u8 reg_id,
const u8 value) {
1108 u32 reg = 0x00000000;
1111 for(counter = 0x00; counter < REGISTER_BUSY_COUNT; counter++){
1112 rt2x00_register_read(rt2x00pci, BBPCSR, ®);
1113 if(!rt2x00_get_field32(reg, BBPCSR_BUSY))
1115 udelay(REGISTER_BUSY_DELAY);
1118 ERROR(
"BBPCSR register busy. Write failed\n");
1123 rt2x00_set_field32(®, BBPCSR_VALUE, value);
1124 rt2x00_set_field32(®, BBPCSR_REGNUM, reg_id);
1125 rt2x00_set_field32(®, BBPCSR_BUSY, 1);
1126 rt2x00_set_field32(®, BBPCSR_WRITE_CONTROL, 1);
1128 rt2x00_register_write(rt2x00pci, BBPCSR, reg);
1132 rt2x00_bbp_regread(
const struct _rt2x00_pci *rt2x00pci,
const u8 reg_id, u8 *value) {
1134 u32 reg = 0x00000000;
1141 rt2x00_set_field32(®, BBPCSR_REGNUM, reg_id);
1142 rt2x00_set_field32(®, BBPCSR_BUSY, 1);
1143 rt2x00_set_field32(®, BBPCSR_WRITE_CONTROL, 0);
1145 rt2x00_register_write(rt2x00pci, BBPCSR, reg);
1147 for(counter = 0x00; counter < REGISTER_BUSY_COUNT; counter++){
1148 rt2x00_register_read(rt2x00pci, BBPCSR, ®);
1149 if(!rt2x00_get_field32(reg, BBPCSR_BUSY)){
1150 *value = rt2x00_get_field32(reg, BBPCSR_VALUE);
1153 udelay(REGISTER_BUSY_DELAY);
1156 ERROR(
"BBPCSR register busy. Read failed\n");
1160 static void rt2x00_rf_regwrite(
const struct _rt2x00_pci *rt2x00pci,
const u32 value) {
1162 u32 reg = 0x00000000;
1165 for(counter = 0x00; counter < REGISTER_BUSY_COUNT; counter++){
1166 rt2x00_register_read(rt2x00pci, RFCSR, ®);
1167 if(!rt2x00_get_field32(reg, RFCSR_BUSY))
1169 udelay(REGISTER_BUSY_DELAY);
1172 ERROR(
"RFCSR register busy. Write failed\n");
1177 rt2x00_set_field32(®, RFCSR_NUMBER_OF_BITS, 20);
1178 rt2x00_set_field32(®, RFCSR_IF_SELECT, 0);
1179 rt2x00_set_field32(®, RFCSR_BUSY, 1);
1183 rt2x00_register_write(rt2x00pci, RFCSR, reg);
1194 rt2x00_eeprom_pulse_high(
const struct _rt2x00_pci *rt2x00pci, u32 *flags) {
1196 rt2x00_set_field32(flags, CSR21_EEPROM_DATA_CLOCK, 1);
1197 rt2x00_register_write(rt2x00pci, CSR21, *flags);
1202 rt2x00_eeprom_pulse_low(
const struct _rt2x00_pci *rt2x00pci, u32 *flags) {
1204 rt2x00_set_field32(flags, CSR21_EEPROM_DATA_CLOCK, 0);
1205 rt2x00_register_write(rt2x00pci, CSR21, *flags);
1210 rt2x00_eeprom_shift_out_bits(
const struct _rt2x00_pci *rt2x00pci,
const u16 data,
const u16 count) {
1212 u32 flags = 0x00000000;
1213 u32 mask = 0x0001 << (count - 1);
1215 rt2x00_register_read(rt2x00pci, CSR21, &flags);
1220 rt2x00_set_field32(&flags, CSR21_EEPROM_DATA_IN, 0);
1221 rt2x00_set_field32(&flags, CSR21_EEPROM_DATA_OUT, 0);
1230 rt2x00_set_field32(&flags, CSR21_EEPROM_DATA_IN, (data & mask) ? 1 : 0);
1232 rt2x00_register_write(rt2x00pci, CSR21, flags);
1234 rt2x00_eeprom_pulse_high(rt2x00pci, &flags);
1235 rt2x00_eeprom_pulse_low(rt2x00pci, &flags);
1243 rt2x00_set_field32(&flags, CSR21_EEPROM_DATA_IN, 0);
1244 rt2x00_register_write(rt2x00pci, CSR21, flags);
1248 rt2x00_eeprom_shift_in_bits(
const struct _rt2x00_pci *rt2x00pci, u16 *data) {
1250 u32 flags = 0x00000000;
1253 rt2x00_register_read(rt2x00pci, CSR21, &flags);
1258 rt2x00_set_field32(&flags, CSR21_EEPROM_DATA_IN, 0);
1259 rt2x00_set_field32(&flags, CSR21_EEPROM_DATA_OUT, 0);
1264 for(counter = 0; counter < 16; counter++){
1270 rt2x00_eeprom_pulse_high(rt2x00pci, &flags);
1272 rt2x00_register_read(rt2x00pci, CSR21, &flags);
1277 rt2x00_set_field32(&flags, CSR21_EEPROM_DATA_IN, 0);
1278 if(rt2x00_get_field32(flags, CSR21_EEPROM_DATA_OUT))
1281 rt2x00_eeprom_pulse_low(rt2x00pci, &flags);
1286 rt2x00_eeprom_read_word(
const struct _rt2x00_pci *rt2x00pci,
const u8 word) {
1288 u32 flags = 0x00000000;
1294 rt2x00_register_read(rt2x00pci, CSR21, &flags);
1295 rt2x00_set_field32(&flags, CSR21_EEPROM_DATA_IN, 0);
1296 rt2x00_set_field32(&flags, CSR21_EEPROM_DATA_OUT, 0);
1297 rt2x00_set_field32(&flags, CSR21_EEPROM_DATA_CLOCK, 0);
1298 rt2x00_set_field32(&flags, CSR21_EEPROM_CHIP_SELECT, 1);
1299 rt2x00_register_write(rt2x00pci, CSR21, flags);
1304 rt2x00_eeprom_pulse_high(rt2x00pci, &flags);
1305 rt2x00_eeprom_pulse_low(rt2x00pci, &flags);
1310 rt2x00_eeprom_shift_out_bits(rt2x00pci, EEPROM_READ_OPCODE, 3);
1311 rt2x00_eeprom_shift_out_bits(rt2x00pci, word, rt2x00pci->eeprom_width);
1313 rt2x00_eeprom_shift_in_bits(rt2x00pci, &data);
1318 rt2x00_register_read(rt2x00pci, CSR21, &flags);
1319 rt2x00_set_field32(&flags, CSR21_EEPROM_DATA_IN, 0);
1320 rt2x00_set_field32(&flags, CSR21_EEPROM_CHIP_SELECT, 0);
1321 rt2x00_register_write(rt2x00pci, CSR21, flags);
1326 rt2x00_eeprom_pulse_high(rt2x00pci, &flags);
1327 rt2x00_eeprom_pulse_low(rt2x00pci, &flags);
ipipe_spinlock_t rtdm_lock_t
Lock variable.
Definition: driver.h:551