1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun Copyright (C) 2004 - 2009 Ivo van Doorn <IvDoorn@gmail.com> 4*4882a593Smuzhiyun <http://rt2x00.serialmonkey.com> 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun /* 9*4882a593Smuzhiyun Module: rt2500pci 10*4882a593Smuzhiyun Abstract: Data structures and registers for the rt2500pci module. 11*4882a593Smuzhiyun Supported chipsets: RT2560. 12*4882a593Smuzhiyun */ 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #ifndef RT2500PCI_H 15*4882a593Smuzhiyun #define RT2500PCI_H 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun /* 18*4882a593Smuzhiyun * RF chip defines. 19*4882a593Smuzhiyun */ 20*4882a593Smuzhiyun #define RF2522 0x0000 21*4882a593Smuzhiyun #define RF2523 0x0001 22*4882a593Smuzhiyun #define RF2524 0x0002 23*4882a593Smuzhiyun #define RF2525 0x0003 24*4882a593Smuzhiyun #define RF2525E 0x0004 25*4882a593Smuzhiyun #define RF5222 0x0010 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun /* 28*4882a593Smuzhiyun * RT2560 version 29*4882a593Smuzhiyun */ 30*4882a593Smuzhiyun #define RT2560_VERSION_B 2 31*4882a593Smuzhiyun #define RT2560_VERSION_C 3 32*4882a593Smuzhiyun #define RT2560_VERSION_D 4 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun /* 35*4882a593Smuzhiyun * Signal information. 36*4882a593Smuzhiyun * Default offset is required for RSSI <-> dBm conversion. 37*4882a593Smuzhiyun */ 38*4882a593Smuzhiyun #define DEFAULT_RSSI_OFFSET 121 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun /* 41*4882a593Smuzhiyun * Register layout information. 42*4882a593Smuzhiyun */ 43*4882a593Smuzhiyun #define CSR_REG_BASE 0x0000 44*4882a593Smuzhiyun #define CSR_REG_SIZE 0x0174 45*4882a593Smuzhiyun #define EEPROM_BASE 0x0000 46*4882a593Smuzhiyun #define EEPROM_SIZE 0x0200 47*4882a593Smuzhiyun #define BBP_BASE 0x0000 48*4882a593Smuzhiyun #define BBP_SIZE 0x0040 49*4882a593Smuzhiyun #define RF_BASE 0x0004 50*4882a593Smuzhiyun #define RF_SIZE 0x0010 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun /* 53*4882a593Smuzhiyun * Number of TX queues. 54*4882a593Smuzhiyun */ 55*4882a593Smuzhiyun #define NUM_TX_QUEUES 2 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun /* 58*4882a593Smuzhiyun * Control/Status Registers(CSR). 59*4882a593Smuzhiyun * Some values are set in TU, whereas 1 TU == 1024 us. 60*4882a593Smuzhiyun */ 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun /* 63*4882a593Smuzhiyun * CSR0: ASIC revision number. 64*4882a593Smuzhiyun */ 65*4882a593Smuzhiyun #define CSR0 0x0000 66*4882a593Smuzhiyun #define CSR0_REVISION FIELD32(0x0000ffff) 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun /* 69*4882a593Smuzhiyun * CSR1: System control register. 70*4882a593Smuzhiyun * SOFT_RESET: Software reset, 1: reset, 0: normal. 71*4882a593Smuzhiyun * BBP_RESET: Hardware reset, 1: reset, 0, release. 72*4882a593Smuzhiyun * HOST_READY: Host ready after initialization. 73*4882a593Smuzhiyun */ 74*4882a593Smuzhiyun #define CSR1 0x0004 75*4882a593Smuzhiyun #define CSR1_SOFT_RESET FIELD32(0x00000001) 76*4882a593Smuzhiyun #define CSR1_BBP_RESET FIELD32(0x00000002) 77*4882a593Smuzhiyun #define CSR1_HOST_READY FIELD32(0x00000004) 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun /* 80*4882a593Smuzhiyun * CSR2: System admin status register (invalid). 81*4882a593Smuzhiyun */ 82*4882a593Smuzhiyun #define CSR2 0x0008 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun /* 85*4882a593Smuzhiyun * CSR3: STA MAC address register 0. 86*4882a593Smuzhiyun */ 87*4882a593Smuzhiyun #define CSR3 0x000c 88*4882a593Smuzhiyun #define CSR3_BYTE0 FIELD32(0x000000ff) 89*4882a593Smuzhiyun #define CSR3_BYTE1 FIELD32(0x0000ff00) 90*4882a593Smuzhiyun #define CSR3_BYTE2 FIELD32(0x00ff0000) 91*4882a593Smuzhiyun #define CSR3_BYTE3 FIELD32(0xff000000) 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun /* 94*4882a593Smuzhiyun * CSR4: STA MAC address register 1. 95*4882a593Smuzhiyun */ 96*4882a593Smuzhiyun #define CSR4 0x0010 97*4882a593Smuzhiyun #define CSR4_BYTE4 FIELD32(0x000000ff) 98*4882a593Smuzhiyun #define CSR4_BYTE5 FIELD32(0x0000ff00) 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun /* 101*4882a593Smuzhiyun * CSR5: BSSID register 0. 102*4882a593Smuzhiyun */ 103*4882a593Smuzhiyun #define CSR5 0x0014 104*4882a593Smuzhiyun #define CSR5_BYTE0 FIELD32(0x000000ff) 105*4882a593Smuzhiyun #define CSR5_BYTE1 FIELD32(0x0000ff00) 106*4882a593Smuzhiyun #define CSR5_BYTE2 FIELD32(0x00ff0000) 107*4882a593Smuzhiyun #define CSR5_BYTE3 FIELD32(0xff000000) 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun /* 110*4882a593Smuzhiyun * CSR6: BSSID register 1. 111*4882a593Smuzhiyun */ 112*4882a593Smuzhiyun #define CSR6 0x0018 113*4882a593Smuzhiyun #define CSR6_BYTE4 FIELD32(0x000000ff) 114*4882a593Smuzhiyun #define CSR6_BYTE5 FIELD32(0x0000ff00) 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun /* 117*4882a593Smuzhiyun * CSR7: Interrupt source register. 118*4882a593Smuzhiyun * Write 1 to clear. 119*4882a593Smuzhiyun * TBCN_EXPIRE: Beacon timer expired interrupt. 120*4882a593Smuzhiyun * TWAKE_EXPIRE: Wakeup timer expired interrupt. 121*4882a593Smuzhiyun * TATIMW_EXPIRE: Timer of atim window expired interrupt. 122*4882a593Smuzhiyun * TXDONE_TXRING: Tx ring transmit done interrupt. 123*4882a593Smuzhiyun * TXDONE_ATIMRING: Atim ring transmit done interrupt. 124*4882a593Smuzhiyun * TXDONE_PRIORING: Priority ring transmit done interrupt. 125*4882a593Smuzhiyun * RXDONE: Receive done interrupt. 126*4882a593Smuzhiyun * DECRYPTION_DONE: Decryption done interrupt. 127*4882a593Smuzhiyun * ENCRYPTION_DONE: Encryption done interrupt. 128*4882a593Smuzhiyun * UART1_TX_TRESHOLD: UART1 TX reaches threshold. 129*4882a593Smuzhiyun * UART1_RX_TRESHOLD: UART1 RX reaches threshold. 130*4882a593Smuzhiyun * UART1_IDLE_TRESHOLD: UART1 IDLE over threshold. 131*4882a593Smuzhiyun * UART1_TX_BUFF_ERROR: UART1 TX buffer error. 132*4882a593Smuzhiyun * UART1_RX_BUFF_ERROR: UART1 RX buffer error. 133*4882a593Smuzhiyun * UART2_TX_TRESHOLD: UART2 TX reaches threshold. 134*4882a593Smuzhiyun * UART2_RX_TRESHOLD: UART2 RX reaches threshold. 135*4882a593Smuzhiyun * UART2_IDLE_TRESHOLD: UART2 IDLE over threshold. 136*4882a593Smuzhiyun * UART2_TX_BUFF_ERROR: UART2 TX buffer error. 137*4882a593Smuzhiyun * UART2_RX_BUFF_ERROR: UART2 RX buffer error. 138*4882a593Smuzhiyun * TIMER_CSR3_EXPIRE: TIMECSR3 timer expired (802.1H quiet period). 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun */ 141*4882a593Smuzhiyun #define CSR7 0x001c 142*4882a593Smuzhiyun #define CSR7_TBCN_EXPIRE FIELD32(0x00000001) 143*4882a593Smuzhiyun #define CSR7_TWAKE_EXPIRE FIELD32(0x00000002) 144*4882a593Smuzhiyun #define CSR7_TATIMW_EXPIRE FIELD32(0x00000004) 145*4882a593Smuzhiyun #define CSR7_TXDONE_TXRING FIELD32(0x00000008) 146*4882a593Smuzhiyun #define CSR7_TXDONE_ATIMRING FIELD32(0x00000010) 147*4882a593Smuzhiyun #define CSR7_TXDONE_PRIORING FIELD32(0x00000020) 148*4882a593Smuzhiyun #define CSR7_RXDONE FIELD32(0x00000040) 149*4882a593Smuzhiyun #define CSR7_DECRYPTION_DONE FIELD32(0x00000080) 150*4882a593Smuzhiyun #define CSR7_ENCRYPTION_DONE FIELD32(0x00000100) 151*4882a593Smuzhiyun #define CSR7_UART1_TX_TRESHOLD FIELD32(0x00000200) 152*4882a593Smuzhiyun #define CSR7_UART1_RX_TRESHOLD FIELD32(0x00000400) 153*4882a593Smuzhiyun #define CSR7_UART1_IDLE_TRESHOLD FIELD32(0x00000800) 154*4882a593Smuzhiyun #define CSR7_UART1_TX_BUFF_ERROR FIELD32(0x00001000) 155*4882a593Smuzhiyun #define CSR7_UART1_RX_BUFF_ERROR FIELD32(0x00002000) 156*4882a593Smuzhiyun #define CSR7_UART2_TX_TRESHOLD FIELD32(0x00004000) 157*4882a593Smuzhiyun #define CSR7_UART2_RX_TRESHOLD FIELD32(0x00008000) 158*4882a593Smuzhiyun #define CSR7_UART2_IDLE_TRESHOLD FIELD32(0x00010000) 159*4882a593Smuzhiyun #define CSR7_UART2_TX_BUFF_ERROR FIELD32(0x00020000) 160*4882a593Smuzhiyun #define CSR7_UART2_RX_BUFF_ERROR FIELD32(0x00040000) 161*4882a593Smuzhiyun #define CSR7_TIMER_CSR3_EXPIRE FIELD32(0x00080000) 162*4882a593Smuzhiyun 163*4882a593Smuzhiyun /* 164*4882a593Smuzhiyun * CSR8: Interrupt mask register. 165*4882a593Smuzhiyun * Write 1 to mask interrupt. 166*4882a593Smuzhiyun * TBCN_EXPIRE: Beacon timer expired interrupt. 167*4882a593Smuzhiyun * TWAKE_EXPIRE: Wakeup timer expired interrupt. 168*4882a593Smuzhiyun * TATIMW_EXPIRE: Timer of atim window expired interrupt. 169*4882a593Smuzhiyun * TXDONE_TXRING: Tx ring transmit done interrupt. 170*4882a593Smuzhiyun * TXDONE_ATIMRING: Atim ring transmit done interrupt. 171*4882a593Smuzhiyun * TXDONE_PRIORING: Priority ring transmit done interrupt. 172*4882a593Smuzhiyun * RXDONE: Receive done interrupt. 173*4882a593Smuzhiyun * DECRYPTION_DONE: Decryption done interrupt. 174*4882a593Smuzhiyun * ENCRYPTION_DONE: Encryption done interrupt. 175*4882a593Smuzhiyun * UART1_TX_TRESHOLD: UART1 TX reaches threshold. 176*4882a593Smuzhiyun * UART1_RX_TRESHOLD: UART1 RX reaches threshold. 177*4882a593Smuzhiyun * UART1_IDLE_TRESHOLD: UART1 IDLE over threshold. 178*4882a593Smuzhiyun * UART1_TX_BUFF_ERROR: UART1 TX buffer error. 179*4882a593Smuzhiyun * UART1_RX_BUFF_ERROR: UART1 RX buffer error. 180*4882a593Smuzhiyun * UART2_TX_TRESHOLD: UART2 TX reaches threshold. 181*4882a593Smuzhiyun * UART2_RX_TRESHOLD: UART2 RX reaches threshold. 182*4882a593Smuzhiyun * UART2_IDLE_TRESHOLD: UART2 IDLE over threshold. 183*4882a593Smuzhiyun * UART2_TX_BUFF_ERROR: UART2 TX buffer error. 184*4882a593Smuzhiyun * UART2_RX_BUFF_ERROR: UART2 RX buffer error. 185*4882a593Smuzhiyun * TIMER_CSR3_EXPIRE: TIMECSR3 timer expired (802.1H quiet period). 186*4882a593Smuzhiyun */ 187*4882a593Smuzhiyun #define CSR8 0x0020 188*4882a593Smuzhiyun #define CSR8_TBCN_EXPIRE FIELD32(0x00000001) 189*4882a593Smuzhiyun #define CSR8_TWAKE_EXPIRE FIELD32(0x00000002) 190*4882a593Smuzhiyun #define CSR8_TATIMW_EXPIRE FIELD32(0x00000004) 191*4882a593Smuzhiyun #define CSR8_TXDONE_TXRING FIELD32(0x00000008) 192*4882a593Smuzhiyun #define CSR8_TXDONE_ATIMRING FIELD32(0x00000010) 193*4882a593Smuzhiyun #define CSR8_TXDONE_PRIORING FIELD32(0x00000020) 194*4882a593Smuzhiyun #define CSR8_RXDONE FIELD32(0x00000040) 195*4882a593Smuzhiyun #define CSR8_DECRYPTION_DONE FIELD32(0x00000080) 196*4882a593Smuzhiyun #define CSR8_ENCRYPTION_DONE FIELD32(0x00000100) 197*4882a593Smuzhiyun #define CSR8_UART1_TX_TRESHOLD FIELD32(0x00000200) 198*4882a593Smuzhiyun #define CSR8_UART1_RX_TRESHOLD FIELD32(0x00000400) 199*4882a593Smuzhiyun #define CSR8_UART1_IDLE_TRESHOLD FIELD32(0x00000800) 200*4882a593Smuzhiyun #define CSR8_UART1_TX_BUFF_ERROR FIELD32(0x00001000) 201*4882a593Smuzhiyun #define CSR8_UART1_RX_BUFF_ERROR FIELD32(0x00002000) 202*4882a593Smuzhiyun #define CSR8_UART2_TX_TRESHOLD FIELD32(0x00004000) 203*4882a593Smuzhiyun #define CSR8_UART2_RX_TRESHOLD FIELD32(0x00008000) 204*4882a593Smuzhiyun #define CSR8_UART2_IDLE_TRESHOLD FIELD32(0x00010000) 205*4882a593Smuzhiyun #define CSR8_UART2_TX_BUFF_ERROR FIELD32(0x00020000) 206*4882a593Smuzhiyun #define CSR8_UART2_RX_BUFF_ERROR FIELD32(0x00040000) 207*4882a593Smuzhiyun #define CSR8_TIMER_CSR3_EXPIRE FIELD32(0x00080000) 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun /* 210*4882a593Smuzhiyun * CSR9: Maximum frame length register. 211*4882a593Smuzhiyun * MAX_FRAME_UNIT: Maximum frame length in 128b unit, default: 12. 212*4882a593Smuzhiyun */ 213*4882a593Smuzhiyun #define CSR9 0x0024 214*4882a593Smuzhiyun #define CSR9_MAX_FRAME_UNIT FIELD32(0x00000f80) 215*4882a593Smuzhiyun 216*4882a593Smuzhiyun /* 217*4882a593Smuzhiyun * SECCSR0: WEP control register. 218*4882a593Smuzhiyun * KICK_DECRYPT: Kick decryption engine, self-clear. 219*4882a593Smuzhiyun * ONE_SHOT: 0: ring mode, 1: One shot only mode. 220*4882a593Smuzhiyun * DESC_ADDRESS: Descriptor physical address of frame. 221*4882a593Smuzhiyun */ 222*4882a593Smuzhiyun #define SECCSR0 0x0028 223*4882a593Smuzhiyun #define SECCSR0_KICK_DECRYPT FIELD32(0x00000001) 224*4882a593Smuzhiyun #define SECCSR0_ONE_SHOT FIELD32(0x00000002) 225*4882a593Smuzhiyun #define SECCSR0_DESC_ADDRESS FIELD32(0xfffffffc) 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun /* 228*4882a593Smuzhiyun * CSR11: Back-off control register. 229*4882a593Smuzhiyun * CWMIN: CWmin. Default cwmin is 31 (2^5 - 1). 230*4882a593Smuzhiyun * CWMAX: CWmax. Default cwmax is 1023 (2^10 - 1). 231*4882a593Smuzhiyun * SLOT_TIME: Slot time, default is 20us for 802.11b 232*4882a593Smuzhiyun * CW_SELECT: CWmin/CWmax selection, 1: Register, 0: TXD. 233*4882a593Smuzhiyun * LONG_RETRY: Long retry count. 234*4882a593Smuzhiyun * SHORT_RETRY: Short retry count. 235*4882a593Smuzhiyun */ 236*4882a593Smuzhiyun #define CSR11 0x002c 237*4882a593Smuzhiyun #define CSR11_CWMIN FIELD32(0x0000000f) 238*4882a593Smuzhiyun #define CSR11_CWMAX FIELD32(0x000000f0) 239*4882a593Smuzhiyun #define CSR11_SLOT_TIME FIELD32(0x00001f00) 240*4882a593Smuzhiyun #define CSR11_CW_SELECT FIELD32(0x00002000) 241*4882a593Smuzhiyun #define CSR11_LONG_RETRY FIELD32(0x00ff0000) 242*4882a593Smuzhiyun #define CSR11_SHORT_RETRY FIELD32(0xff000000) 243*4882a593Smuzhiyun 244*4882a593Smuzhiyun /* 245*4882a593Smuzhiyun * CSR12: Synchronization configuration register 0. 246*4882a593Smuzhiyun * All units in 1/16 TU. 247*4882a593Smuzhiyun * BEACON_INTERVAL: Beacon interval, default is 100 TU. 248*4882a593Smuzhiyun * CFP_MAX_DURATION: Cfp maximum duration, default is 100 TU. 249*4882a593Smuzhiyun */ 250*4882a593Smuzhiyun #define CSR12 0x0030 251*4882a593Smuzhiyun #define CSR12_BEACON_INTERVAL FIELD32(0x0000ffff) 252*4882a593Smuzhiyun #define CSR12_CFP_MAX_DURATION FIELD32(0xffff0000) 253*4882a593Smuzhiyun 254*4882a593Smuzhiyun /* 255*4882a593Smuzhiyun * CSR13: Synchronization configuration register 1. 256*4882a593Smuzhiyun * All units in 1/16 TU. 257*4882a593Smuzhiyun * ATIMW_DURATION: Atim window duration. 258*4882a593Smuzhiyun * CFP_PERIOD: Cfp period, default is 0 TU. 259*4882a593Smuzhiyun */ 260*4882a593Smuzhiyun #define CSR13 0x0034 261*4882a593Smuzhiyun #define CSR13_ATIMW_DURATION FIELD32(0x0000ffff) 262*4882a593Smuzhiyun #define CSR13_CFP_PERIOD FIELD32(0x00ff0000) 263*4882a593Smuzhiyun 264*4882a593Smuzhiyun /* 265*4882a593Smuzhiyun * CSR14: Synchronization control register. 266*4882a593Smuzhiyun * TSF_COUNT: Enable tsf auto counting. 267*4882a593Smuzhiyun * TSF_SYNC: Tsf sync, 0: disable, 1: infra, 2: ad-hoc/master mode. 268*4882a593Smuzhiyun * TBCN: Enable tbcn with reload value. 269*4882a593Smuzhiyun * TCFP: Enable tcfp & cfp / cp switching. 270*4882a593Smuzhiyun * TATIMW: Enable tatimw & atim window switching. 271*4882a593Smuzhiyun * BEACON_GEN: Enable beacon generator. 272*4882a593Smuzhiyun * CFP_COUNT_PRELOAD: Cfp count preload value. 273*4882a593Smuzhiyun * TBCM_PRELOAD: Tbcn preload value in units of 64us. 274*4882a593Smuzhiyun */ 275*4882a593Smuzhiyun #define CSR14 0x0038 276*4882a593Smuzhiyun #define CSR14_TSF_COUNT FIELD32(0x00000001) 277*4882a593Smuzhiyun #define CSR14_TSF_SYNC FIELD32(0x00000006) 278*4882a593Smuzhiyun #define CSR14_TBCN FIELD32(0x00000008) 279*4882a593Smuzhiyun #define CSR14_TCFP FIELD32(0x00000010) 280*4882a593Smuzhiyun #define CSR14_TATIMW FIELD32(0x00000020) 281*4882a593Smuzhiyun #define CSR14_BEACON_GEN FIELD32(0x00000040) 282*4882a593Smuzhiyun #define CSR14_CFP_COUNT_PRELOAD FIELD32(0x0000ff00) 283*4882a593Smuzhiyun #define CSR14_TBCM_PRELOAD FIELD32(0xffff0000) 284*4882a593Smuzhiyun 285*4882a593Smuzhiyun /* 286*4882a593Smuzhiyun * CSR15: Synchronization status register. 287*4882a593Smuzhiyun * CFP: ASIC is in contention-free period. 288*4882a593Smuzhiyun * ATIMW: ASIC is in ATIM window. 289*4882a593Smuzhiyun * BEACON_SENT: Beacon is send. 290*4882a593Smuzhiyun */ 291*4882a593Smuzhiyun #define CSR15 0x003c 292*4882a593Smuzhiyun #define CSR15_CFP FIELD32(0x00000001) 293*4882a593Smuzhiyun #define CSR15_ATIMW FIELD32(0x00000002) 294*4882a593Smuzhiyun #define CSR15_BEACON_SENT FIELD32(0x00000004) 295*4882a593Smuzhiyun 296*4882a593Smuzhiyun /* 297*4882a593Smuzhiyun * CSR16: TSF timer register 0. 298*4882a593Smuzhiyun */ 299*4882a593Smuzhiyun #define CSR16 0x0040 300*4882a593Smuzhiyun #define CSR16_LOW_TSFTIMER FIELD32(0xffffffff) 301*4882a593Smuzhiyun 302*4882a593Smuzhiyun /* 303*4882a593Smuzhiyun * CSR17: TSF timer register 1. 304*4882a593Smuzhiyun */ 305*4882a593Smuzhiyun #define CSR17 0x0044 306*4882a593Smuzhiyun #define CSR17_HIGH_TSFTIMER FIELD32(0xffffffff) 307*4882a593Smuzhiyun 308*4882a593Smuzhiyun /* 309*4882a593Smuzhiyun * CSR18: IFS timer register 0. 310*4882a593Smuzhiyun * SIFS: Sifs, default is 10 us. 311*4882a593Smuzhiyun * PIFS: Pifs, default is 30 us. 312*4882a593Smuzhiyun */ 313*4882a593Smuzhiyun #define CSR18 0x0048 314*4882a593Smuzhiyun #define CSR18_SIFS FIELD32(0x000001ff) 315*4882a593Smuzhiyun #define CSR18_PIFS FIELD32(0x001f0000) 316*4882a593Smuzhiyun 317*4882a593Smuzhiyun /* 318*4882a593Smuzhiyun * CSR19: IFS timer register 1. 319*4882a593Smuzhiyun * DIFS: Difs, default is 50 us. 320*4882a593Smuzhiyun * EIFS: Eifs, default is 364 us. 321*4882a593Smuzhiyun */ 322*4882a593Smuzhiyun #define CSR19 0x004c 323*4882a593Smuzhiyun #define CSR19_DIFS FIELD32(0x0000ffff) 324*4882a593Smuzhiyun #define CSR19_EIFS FIELD32(0xffff0000) 325*4882a593Smuzhiyun 326*4882a593Smuzhiyun /* 327*4882a593Smuzhiyun * CSR20: Wakeup timer register. 328*4882a593Smuzhiyun * DELAY_AFTER_TBCN: Delay after tbcn expired in units of 1/16 TU. 329*4882a593Smuzhiyun * TBCN_BEFORE_WAKEUP: Number of beacon before wakeup. 330*4882a593Smuzhiyun * AUTOWAKE: Enable auto wakeup / sleep mechanism. 331*4882a593Smuzhiyun */ 332*4882a593Smuzhiyun #define CSR20 0x0050 333*4882a593Smuzhiyun #define CSR20_DELAY_AFTER_TBCN FIELD32(0x0000ffff) 334*4882a593Smuzhiyun #define CSR20_TBCN_BEFORE_WAKEUP FIELD32(0x00ff0000) 335*4882a593Smuzhiyun #define CSR20_AUTOWAKE FIELD32(0x01000000) 336*4882a593Smuzhiyun 337*4882a593Smuzhiyun /* 338*4882a593Smuzhiyun * CSR21: EEPROM control register. 339*4882a593Smuzhiyun * RELOAD: Write 1 to reload eeprom content. 340*4882a593Smuzhiyun * TYPE_93C46: 1: 93c46, 0:93c66. 341*4882a593Smuzhiyun */ 342*4882a593Smuzhiyun #define CSR21 0x0054 343*4882a593Smuzhiyun #define CSR21_RELOAD FIELD32(0x00000001) 344*4882a593Smuzhiyun #define CSR21_EEPROM_DATA_CLOCK FIELD32(0x00000002) 345*4882a593Smuzhiyun #define CSR21_EEPROM_CHIP_SELECT FIELD32(0x00000004) 346*4882a593Smuzhiyun #define CSR21_EEPROM_DATA_IN FIELD32(0x00000008) 347*4882a593Smuzhiyun #define CSR21_EEPROM_DATA_OUT FIELD32(0x00000010) 348*4882a593Smuzhiyun #define CSR21_TYPE_93C46 FIELD32(0x00000020) 349*4882a593Smuzhiyun 350*4882a593Smuzhiyun /* 351*4882a593Smuzhiyun * CSR22: CFP control register. 352*4882a593Smuzhiyun * CFP_DURATION_REMAIN: Cfp duration remain, in units of TU. 353*4882a593Smuzhiyun * RELOAD_CFP_DURATION: Write 1 to reload cfp duration remain. 354*4882a593Smuzhiyun */ 355*4882a593Smuzhiyun #define CSR22 0x0058 356*4882a593Smuzhiyun #define CSR22_CFP_DURATION_REMAIN FIELD32(0x0000ffff) 357*4882a593Smuzhiyun #define CSR22_RELOAD_CFP_DURATION FIELD32(0x00010000) 358*4882a593Smuzhiyun 359*4882a593Smuzhiyun /* 360*4882a593Smuzhiyun * Transmit related CSRs. 361*4882a593Smuzhiyun * Some values are set in TU, whereas 1 TU == 1024 us. 362*4882a593Smuzhiyun */ 363*4882a593Smuzhiyun 364*4882a593Smuzhiyun /* 365*4882a593Smuzhiyun * TXCSR0: TX Control Register. 366*4882a593Smuzhiyun * KICK_TX: Kick tx ring. 367*4882a593Smuzhiyun * KICK_ATIM: Kick atim ring. 368*4882a593Smuzhiyun * KICK_PRIO: Kick priority ring. 369*4882a593Smuzhiyun * ABORT: Abort all transmit related ring operation. 370*4882a593Smuzhiyun */ 371*4882a593Smuzhiyun #define TXCSR0 0x0060 372*4882a593Smuzhiyun #define TXCSR0_KICK_TX FIELD32(0x00000001) 373*4882a593Smuzhiyun #define TXCSR0_KICK_ATIM FIELD32(0x00000002) 374*4882a593Smuzhiyun #define TXCSR0_KICK_PRIO FIELD32(0x00000004) 375*4882a593Smuzhiyun #define TXCSR0_ABORT FIELD32(0x00000008) 376*4882a593Smuzhiyun 377*4882a593Smuzhiyun /* 378*4882a593Smuzhiyun * TXCSR1: TX Configuration Register. 379*4882a593Smuzhiyun * ACK_TIMEOUT: Ack timeout, default = sifs + 2*slottime + acktime @ 1mbps. 380*4882a593Smuzhiyun * ACK_CONSUME_TIME: Ack consume time, default = sifs + acktime @ 1mbps. 381*4882a593Smuzhiyun * TSF_OFFSET: Insert tsf offset. 382*4882a593Smuzhiyun * AUTORESPONDER: Enable auto responder which include ack & cts. 383*4882a593Smuzhiyun */ 384*4882a593Smuzhiyun #define TXCSR1 0x0064 385*4882a593Smuzhiyun #define TXCSR1_ACK_TIMEOUT FIELD32(0x000001ff) 386*4882a593Smuzhiyun #define TXCSR1_ACK_CONSUME_TIME FIELD32(0x0003fe00) 387*4882a593Smuzhiyun #define TXCSR1_TSF_OFFSET FIELD32(0x00fc0000) 388*4882a593Smuzhiyun #define TXCSR1_AUTORESPONDER FIELD32(0x01000000) 389*4882a593Smuzhiyun 390*4882a593Smuzhiyun /* 391*4882a593Smuzhiyun * TXCSR2: Tx descriptor configuration register. 392*4882a593Smuzhiyun * TXD_SIZE: Tx descriptor size, default is 48. 393*4882a593Smuzhiyun * NUM_TXD: Number of tx entries in ring. 394*4882a593Smuzhiyun * NUM_ATIM: Number of atim entries in ring. 395*4882a593Smuzhiyun * NUM_PRIO: Number of priority entries in ring. 396*4882a593Smuzhiyun */ 397*4882a593Smuzhiyun #define TXCSR2 0x0068 398*4882a593Smuzhiyun #define TXCSR2_TXD_SIZE FIELD32(0x000000ff) 399*4882a593Smuzhiyun #define TXCSR2_NUM_TXD FIELD32(0x0000ff00) 400*4882a593Smuzhiyun #define TXCSR2_NUM_ATIM FIELD32(0x00ff0000) 401*4882a593Smuzhiyun #define TXCSR2_NUM_PRIO FIELD32(0xff000000) 402*4882a593Smuzhiyun 403*4882a593Smuzhiyun /* 404*4882a593Smuzhiyun * TXCSR3: TX Ring Base address register. 405*4882a593Smuzhiyun */ 406*4882a593Smuzhiyun #define TXCSR3 0x006c 407*4882a593Smuzhiyun #define TXCSR3_TX_RING_REGISTER FIELD32(0xffffffff) 408*4882a593Smuzhiyun 409*4882a593Smuzhiyun /* 410*4882a593Smuzhiyun * TXCSR4: TX Atim Ring Base address register. 411*4882a593Smuzhiyun */ 412*4882a593Smuzhiyun #define TXCSR4 0x0070 413*4882a593Smuzhiyun #define TXCSR4_ATIM_RING_REGISTER FIELD32(0xffffffff) 414*4882a593Smuzhiyun 415*4882a593Smuzhiyun /* 416*4882a593Smuzhiyun * TXCSR5: TX Prio Ring Base address register. 417*4882a593Smuzhiyun */ 418*4882a593Smuzhiyun #define TXCSR5 0x0074 419*4882a593Smuzhiyun #define TXCSR5_PRIO_RING_REGISTER FIELD32(0xffffffff) 420*4882a593Smuzhiyun 421*4882a593Smuzhiyun /* 422*4882a593Smuzhiyun * TXCSR6: Beacon Base address register. 423*4882a593Smuzhiyun */ 424*4882a593Smuzhiyun #define TXCSR6 0x0078 425*4882a593Smuzhiyun #define TXCSR6_BEACON_RING_REGISTER FIELD32(0xffffffff) 426*4882a593Smuzhiyun 427*4882a593Smuzhiyun /* 428*4882a593Smuzhiyun * TXCSR7: Auto responder control register. 429*4882a593Smuzhiyun * AR_POWERMANAGEMENT: Auto responder power management bit. 430*4882a593Smuzhiyun */ 431*4882a593Smuzhiyun #define TXCSR7 0x007c 432*4882a593Smuzhiyun #define TXCSR7_AR_POWERMANAGEMENT FIELD32(0x00000001) 433*4882a593Smuzhiyun 434*4882a593Smuzhiyun /* 435*4882a593Smuzhiyun * TXCSR8: CCK Tx BBP register. 436*4882a593Smuzhiyun */ 437*4882a593Smuzhiyun #define TXCSR8 0x0098 438*4882a593Smuzhiyun #define TXCSR8_BBP_ID0 FIELD32(0x0000007f) 439*4882a593Smuzhiyun #define TXCSR8_BBP_ID0_VALID FIELD32(0x00000080) 440*4882a593Smuzhiyun #define TXCSR8_BBP_ID1 FIELD32(0x00007f00) 441*4882a593Smuzhiyun #define TXCSR8_BBP_ID1_VALID FIELD32(0x00008000) 442*4882a593Smuzhiyun #define TXCSR8_BBP_ID2 FIELD32(0x007f0000) 443*4882a593Smuzhiyun #define TXCSR8_BBP_ID2_VALID FIELD32(0x00800000) 444*4882a593Smuzhiyun #define TXCSR8_BBP_ID3 FIELD32(0x7f000000) 445*4882a593Smuzhiyun #define TXCSR8_BBP_ID3_VALID FIELD32(0x80000000) 446*4882a593Smuzhiyun 447*4882a593Smuzhiyun /* 448*4882a593Smuzhiyun * TXCSR9: OFDM TX BBP registers 449*4882a593Smuzhiyun * OFDM_SIGNAL: BBP rate field address for OFDM. 450*4882a593Smuzhiyun * OFDM_SERVICE: BBP service field address for OFDM. 451*4882a593Smuzhiyun * OFDM_LENGTH_LOW: BBP length low byte address for OFDM. 452*4882a593Smuzhiyun * OFDM_LENGTH_HIGH: BBP length high byte address for OFDM. 453*4882a593Smuzhiyun */ 454*4882a593Smuzhiyun #define TXCSR9 0x0094 455*4882a593Smuzhiyun #define TXCSR9_OFDM_RATE FIELD32(0x000000ff) 456*4882a593Smuzhiyun #define TXCSR9_OFDM_SERVICE FIELD32(0x0000ff00) 457*4882a593Smuzhiyun #define TXCSR9_OFDM_LENGTH_LOW FIELD32(0x00ff0000) 458*4882a593Smuzhiyun #define TXCSR9_OFDM_LENGTH_HIGH FIELD32(0xff000000) 459*4882a593Smuzhiyun 460*4882a593Smuzhiyun /* 461*4882a593Smuzhiyun * Receive related CSRs. 462*4882a593Smuzhiyun * Some values are set in TU, whereas 1 TU == 1024 us. 463*4882a593Smuzhiyun */ 464*4882a593Smuzhiyun 465*4882a593Smuzhiyun /* 466*4882a593Smuzhiyun * RXCSR0: RX Control Register. 467*4882a593Smuzhiyun * DISABLE_RX: Disable rx engine. 468*4882a593Smuzhiyun * DROP_CRC: Drop crc error. 469*4882a593Smuzhiyun * DROP_PHYSICAL: Drop physical error. 470*4882a593Smuzhiyun * DROP_CONTROL: Drop control frame. 471*4882a593Smuzhiyun * DROP_NOT_TO_ME: Drop not to me unicast frame. 472*4882a593Smuzhiyun * DROP_TODS: Drop frame tods bit is true. 473*4882a593Smuzhiyun * DROP_VERSION_ERROR: Drop version error frame. 474*4882a593Smuzhiyun * PASS_CRC: Pass all packets with crc attached. 475*4882a593Smuzhiyun * PASS_CRC: Pass all packets with crc attached. 476*4882a593Smuzhiyun * PASS_PLCP: Pass all packets with 4 bytes PLCP attached. 477*4882a593Smuzhiyun * DROP_MCAST: Drop multicast frames. 478*4882a593Smuzhiyun * DROP_BCAST: Drop broadcast frames. 479*4882a593Smuzhiyun * ENABLE_QOS: Accept QOS data frame and parse QOS field. 480*4882a593Smuzhiyun */ 481*4882a593Smuzhiyun #define RXCSR0 0x0080 482*4882a593Smuzhiyun #define RXCSR0_DISABLE_RX FIELD32(0x00000001) 483*4882a593Smuzhiyun #define RXCSR0_DROP_CRC FIELD32(0x00000002) 484*4882a593Smuzhiyun #define RXCSR0_DROP_PHYSICAL FIELD32(0x00000004) 485*4882a593Smuzhiyun #define RXCSR0_DROP_CONTROL FIELD32(0x00000008) 486*4882a593Smuzhiyun #define RXCSR0_DROP_NOT_TO_ME FIELD32(0x00000010) 487*4882a593Smuzhiyun #define RXCSR0_DROP_TODS FIELD32(0x00000020) 488*4882a593Smuzhiyun #define RXCSR0_DROP_VERSION_ERROR FIELD32(0x00000040) 489*4882a593Smuzhiyun #define RXCSR0_PASS_CRC FIELD32(0x00000080) 490*4882a593Smuzhiyun #define RXCSR0_PASS_PLCP FIELD32(0x00000100) 491*4882a593Smuzhiyun #define RXCSR0_DROP_MCAST FIELD32(0x00000200) 492*4882a593Smuzhiyun #define RXCSR0_DROP_BCAST FIELD32(0x00000400) 493*4882a593Smuzhiyun #define RXCSR0_ENABLE_QOS FIELD32(0x00000800) 494*4882a593Smuzhiyun 495*4882a593Smuzhiyun /* 496*4882a593Smuzhiyun * RXCSR1: RX descriptor configuration register. 497*4882a593Smuzhiyun * RXD_SIZE: Rx descriptor size, default is 32b. 498*4882a593Smuzhiyun * NUM_RXD: Number of rx entries in ring. 499*4882a593Smuzhiyun */ 500*4882a593Smuzhiyun #define RXCSR1 0x0084 501*4882a593Smuzhiyun #define RXCSR1_RXD_SIZE FIELD32(0x000000ff) 502*4882a593Smuzhiyun #define RXCSR1_NUM_RXD FIELD32(0x0000ff00) 503*4882a593Smuzhiyun 504*4882a593Smuzhiyun /* 505*4882a593Smuzhiyun * RXCSR2: RX Ring base address register. 506*4882a593Smuzhiyun */ 507*4882a593Smuzhiyun #define RXCSR2 0x0088 508*4882a593Smuzhiyun #define RXCSR2_RX_RING_REGISTER FIELD32(0xffffffff) 509*4882a593Smuzhiyun 510*4882a593Smuzhiyun /* 511*4882a593Smuzhiyun * RXCSR3: BBP ID register for Rx operation. 512*4882a593Smuzhiyun * BBP_ID#: BBP register # id. 513*4882a593Smuzhiyun * BBP_ID#_VALID: BBP register # id is valid or not. 514*4882a593Smuzhiyun */ 515*4882a593Smuzhiyun #define RXCSR3 0x0090 516*4882a593Smuzhiyun #define RXCSR3_BBP_ID0 FIELD32(0x0000007f) 517*4882a593Smuzhiyun #define RXCSR3_BBP_ID0_VALID FIELD32(0x00000080) 518*4882a593Smuzhiyun #define RXCSR3_BBP_ID1 FIELD32(0x00007f00) 519*4882a593Smuzhiyun #define RXCSR3_BBP_ID1_VALID FIELD32(0x00008000) 520*4882a593Smuzhiyun #define RXCSR3_BBP_ID2 FIELD32(0x007f0000) 521*4882a593Smuzhiyun #define RXCSR3_BBP_ID2_VALID FIELD32(0x00800000) 522*4882a593Smuzhiyun #define RXCSR3_BBP_ID3 FIELD32(0x7f000000) 523*4882a593Smuzhiyun #define RXCSR3_BBP_ID3_VALID FIELD32(0x80000000) 524*4882a593Smuzhiyun 525*4882a593Smuzhiyun /* 526*4882a593Smuzhiyun * ARCSR1: Auto Responder PLCP config register 1. 527*4882a593Smuzhiyun * AR_BBP_DATA#: Auto responder BBP register # data. 528*4882a593Smuzhiyun * AR_BBP_ID#: Auto responder BBP register # Id. 529*4882a593Smuzhiyun */ 530*4882a593Smuzhiyun #define ARCSR1 0x009c 531*4882a593Smuzhiyun #define ARCSR1_AR_BBP_DATA2 FIELD32(0x000000ff) 532*4882a593Smuzhiyun #define ARCSR1_AR_BBP_ID2 FIELD32(0x0000ff00) 533*4882a593Smuzhiyun #define ARCSR1_AR_BBP_DATA3 FIELD32(0x00ff0000) 534*4882a593Smuzhiyun #define ARCSR1_AR_BBP_ID3 FIELD32(0xff000000) 535*4882a593Smuzhiyun 536*4882a593Smuzhiyun /* 537*4882a593Smuzhiyun * Miscellaneous Registers. 538*4882a593Smuzhiyun * Some values are set in TU, whereas 1 TU == 1024 us. 539*4882a593Smuzhiyun 540*4882a593Smuzhiyun */ 541*4882a593Smuzhiyun 542*4882a593Smuzhiyun /* 543*4882a593Smuzhiyun * PCICSR: PCI control register. 544*4882a593Smuzhiyun * BIG_ENDIAN: 1: big endian, 0: little endian. 545*4882a593Smuzhiyun * RX_TRESHOLD: Rx threshold in dw to start pci access 546*4882a593Smuzhiyun * 0: 16dw (default), 1: 8dw, 2: 4dw, 3: 32dw. 547*4882a593Smuzhiyun * TX_TRESHOLD: Tx threshold in dw to start pci access 548*4882a593Smuzhiyun * 0: 0dw (default), 1: 1dw, 2: 4dw, 3: forward. 549*4882a593Smuzhiyun * BURST_LENTH: Pci burst length 0: 4dw (default, 1: 8dw, 2: 16dw, 3:32dw. 550*4882a593Smuzhiyun * ENABLE_CLK: Enable clk_run, pci clock can't going down to non-operational. 551*4882a593Smuzhiyun * READ_MULTIPLE: Enable memory read multiple. 552*4882a593Smuzhiyun * WRITE_INVALID: Enable memory write & invalid. 553*4882a593Smuzhiyun */ 554*4882a593Smuzhiyun #define PCICSR 0x008c 555*4882a593Smuzhiyun #define PCICSR_BIG_ENDIAN FIELD32(0x00000001) 556*4882a593Smuzhiyun #define PCICSR_RX_TRESHOLD FIELD32(0x00000006) 557*4882a593Smuzhiyun #define PCICSR_TX_TRESHOLD FIELD32(0x00000018) 558*4882a593Smuzhiyun #define PCICSR_BURST_LENTH FIELD32(0x00000060) 559*4882a593Smuzhiyun #define PCICSR_ENABLE_CLK FIELD32(0x00000080) 560*4882a593Smuzhiyun #define PCICSR_READ_MULTIPLE FIELD32(0x00000100) 561*4882a593Smuzhiyun #define PCICSR_WRITE_INVALID FIELD32(0x00000200) 562*4882a593Smuzhiyun 563*4882a593Smuzhiyun /* 564*4882a593Smuzhiyun * CNT0: FCS error count. 565*4882a593Smuzhiyun * FCS_ERROR: FCS error count, cleared when read. 566*4882a593Smuzhiyun */ 567*4882a593Smuzhiyun #define CNT0 0x00a0 568*4882a593Smuzhiyun #define CNT0_FCS_ERROR FIELD32(0x0000ffff) 569*4882a593Smuzhiyun 570*4882a593Smuzhiyun /* 571*4882a593Smuzhiyun * Statistic Register. 572*4882a593Smuzhiyun * CNT1: PLCP error count. 573*4882a593Smuzhiyun * CNT2: Long error count. 574*4882a593Smuzhiyun */ 575*4882a593Smuzhiyun #define TIMECSR2 0x00a8 576*4882a593Smuzhiyun #define CNT1 0x00ac 577*4882a593Smuzhiyun #define CNT2 0x00b0 578*4882a593Smuzhiyun #define TIMECSR3 0x00b4 579*4882a593Smuzhiyun 580*4882a593Smuzhiyun /* 581*4882a593Smuzhiyun * CNT3: CCA false alarm count. 582*4882a593Smuzhiyun */ 583*4882a593Smuzhiyun #define CNT3 0x00b8 584*4882a593Smuzhiyun #define CNT3_FALSE_CCA FIELD32(0x0000ffff) 585*4882a593Smuzhiyun 586*4882a593Smuzhiyun /* 587*4882a593Smuzhiyun * Statistic Register. 588*4882a593Smuzhiyun * CNT4: Rx FIFO overflow count. 589*4882a593Smuzhiyun * CNT5: Tx FIFO underrun count. 590*4882a593Smuzhiyun */ 591*4882a593Smuzhiyun #define CNT4 0x00bc 592*4882a593Smuzhiyun #define CNT5 0x00c0 593*4882a593Smuzhiyun 594*4882a593Smuzhiyun /* 595*4882a593Smuzhiyun * Baseband Control Register. 596*4882a593Smuzhiyun */ 597*4882a593Smuzhiyun 598*4882a593Smuzhiyun /* 599*4882a593Smuzhiyun * PWRCSR0: Power mode configuration register. 600*4882a593Smuzhiyun */ 601*4882a593Smuzhiyun #define PWRCSR0 0x00c4 602*4882a593Smuzhiyun 603*4882a593Smuzhiyun /* 604*4882a593Smuzhiyun * Power state transition time registers. 605*4882a593Smuzhiyun */ 606*4882a593Smuzhiyun #define PSCSR0 0x00c8 607*4882a593Smuzhiyun #define PSCSR1 0x00cc 608*4882a593Smuzhiyun #define PSCSR2 0x00d0 609*4882a593Smuzhiyun #define PSCSR3 0x00d4 610*4882a593Smuzhiyun 611*4882a593Smuzhiyun /* 612*4882a593Smuzhiyun * PWRCSR1: Manual power control / status register. 613*4882a593Smuzhiyun * Allowed state: 0 deep_sleep, 1: sleep, 2: standby, 3: awake. 614*4882a593Smuzhiyun * SET_STATE: Set state. Write 1 to trigger, self cleared. 615*4882a593Smuzhiyun * BBP_DESIRE_STATE: BBP desired state. 616*4882a593Smuzhiyun * RF_DESIRE_STATE: RF desired state. 617*4882a593Smuzhiyun * BBP_CURR_STATE: BBP current state. 618*4882a593Smuzhiyun * RF_CURR_STATE: RF current state. 619*4882a593Smuzhiyun * PUT_TO_SLEEP: Put to sleep. Write 1 to trigger, self cleared. 620*4882a593Smuzhiyun */ 621*4882a593Smuzhiyun #define PWRCSR1 0x00d8 622*4882a593Smuzhiyun #define PWRCSR1_SET_STATE FIELD32(0x00000001) 623*4882a593Smuzhiyun #define PWRCSR1_BBP_DESIRE_STATE FIELD32(0x00000006) 624*4882a593Smuzhiyun #define PWRCSR1_RF_DESIRE_STATE FIELD32(0x00000018) 625*4882a593Smuzhiyun #define PWRCSR1_BBP_CURR_STATE FIELD32(0x00000060) 626*4882a593Smuzhiyun #define PWRCSR1_RF_CURR_STATE FIELD32(0x00000180) 627*4882a593Smuzhiyun #define PWRCSR1_PUT_TO_SLEEP FIELD32(0x00000200) 628*4882a593Smuzhiyun 629*4882a593Smuzhiyun /* 630*4882a593Smuzhiyun * TIMECSR: Timer control register. 631*4882a593Smuzhiyun * US_COUNT: 1 us timer count in units of clock cycles. 632*4882a593Smuzhiyun * US_64_COUNT: 64 us timer count in units of 1 us timer. 633*4882a593Smuzhiyun * BEACON_EXPECT: Beacon expect window. 634*4882a593Smuzhiyun */ 635*4882a593Smuzhiyun #define TIMECSR 0x00dc 636*4882a593Smuzhiyun #define TIMECSR_US_COUNT FIELD32(0x000000ff) 637*4882a593Smuzhiyun #define TIMECSR_US_64_COUNT FIELD32(0x0000ff00) 638*4882a593Smuzhiyun #define TIMECSR_BEACON_EXPECT FIELD32(0x00070000) 639*4882a593Smuzhiyun 640*4882a593Smuzhiyun /* 641*4882a593Smuzhiyun * MACCSR0: MAC configuration register 0. 642*4882a593Smuzhiyun */ 643*4882a593Smuzhiyun #define MACCSR0 0x00e0 644*4882a593Smuzhiyun 645*4882a593Smuzhiyun /* 646*4882a593Smuzhiyun * MACCSR1: MAC configuration register 1. 647*4882a593Smuzhiyun * KICK_RX: Kick one-shot rx in one-shot rx mode. 648*4882a593Smuzhiyun * ONESHOT_RXMODE: Enable one-shot rx mode for debugging. 649*4882a593Smuzhiyun * BBPRX_RESET_MODE: Ralink bbp rx reset mode. 650*4882a593Smuzhiyun * AUTO_TXBBP: Auto tx logic access bbp control register. 651*4882a593Smuzhiyun * AUTO_RXBBP: Auto rx logic access bbp control register. 652*4882a593Smuzhiyun * LOOPBACK: Loopback mode. 0: normal, 1: internal, 2: external, 3:rsvd. 653*4882a593Smuzhiyun * INTERSIL_IF: Intersil if calibration pin. 654*4882a593Smuzhiyun */ 655*4882a593Smuzhiyun #define MACCSR1 0x00e4 656*4882a593Smuzhiyun #define MACCSR1_KICK_RX FIELD32(0x00000001) 657*4882a593Smuzhiyun #define MACCSR1_ONESHOT_RXMODE FIELD32(0x00000002) 658*4882a593Smuzhiyun #define MACCSR1_BBPRX_RESET_MODE FIELD32(0x00000004) 659*4882a593Smuzhiyun #define MACCSR1_AUTO_TXBBP FIELD32(0x00000008) 660*4882a593Smuzhiyun #define MACCSR1_AUTO_RXBBP FIELD32(0x00000010) 661*4882a593Smuzhiyun #define MACCSR1_LOOPBACK FIELD32(0x00000060) 662*4882a593Smuzhiyun #define MACCSR1_INTERSIL_IF FIELD32(0x00000080) 663*4882a593Smuzhiyun 664*4882a593Smuzhiyun /* 665*4882a593Smuzhiyun * RALINKCSR: Ralink Rx auto-reset BBCR. 666*4882a593Smuzhiyun * AR_BBP_DATA#: Auto reset BBP register # data. 667*4882a593Smuzhiyun * AR_BBP_ID#: Auto reset BBP register # id. 668*4882a593Smuzhiyun */ 669*4882a593Smuzhiyun #define RALINKCSR 0x00e8 670*4882a593Smuzhiyun #define RALINKCSR_AR_BBP_DATA0 FIELD32(0x000000ff) 671*4882a593Smuzhiyun #define RALINKCSR_AR_BBP_ID0 FIELD32(0x00007f00) 672*4882a593Smuzhiyun #define RALINKCSR_AR_BBP_VALID0 FIELD32(0x00008000) 673*4882a593Smuzhiyun #define RALINKCSR_AR_BBP_DATA1 FIELD32(0x00ff0000) 674*4882a593Smuzhiyun #define RALINKCSR_AR_BBP_ID1 FIELD32(0x7f000000) 675*4882a593Smuzhiyun #define RALINKCSR_AR_BBP_VALID1 FIELD32(0x80000000) 676*4882a593Smuzhiyun 677*4882a593Smuzhiyun /* 678*4882a593Smuzhiyun * BCNCSR: Beacon interval control register. 679*4882a593Smuzhiyun * CHANGE: Write one to change beacon interval. 680*4882a593Smuzhiyun * DELTATIME: The delta time value. 681*4882a593Smuzhiyun * NUM_BEACON: Number of beacon according to mode. 682*4882a593Smuzhiyun * MODE: Please refer to asic specs. 683*4882a593Smuzhiyun * PLUS: Plus or minus delta time value. 684*4882a593Smuzhiyun */ 685*4882a593Smuzhiyun #define BCNCSR 0x00ec 686*4882a593Smuzhiyun #define BCNCSR_CHANGE FIELD32(0x00000001) 687*4882a593Smuzhiyun #define BCNCSR_DELTATIME FIELD32(0x0000001e) 688*4882a593Smuzhiyun #define BCNCSR_NUM_BEACON FIELD32(0x00001fe0) 689*4882a593Smuzhiyun #define BCNCSR_MODE FIELD32(0x00006000) 690*4882a593Smuzhiyun #define BCNCSR_PLUS FIELD32(0x00008000) 691*4882a593Smuzhiyun 692*4882a593Smuzhiyun /* 693*4882a593Smuzhiyun * BBP / RF / IF Control Register. 694*4882a593Smuzhiyun */ 695*4882a593Smuzhiyun 696*4882a593Smuzhiyun /* 697*4882a593Smuzhiyun * BBPCSR: BBP serial control register. 698*4882a593Smuzhiyun * VALUE: Register value to program into BBP. 699*4882a593Smuzhiyun * REGNUM: Selected BBP register. 700*4882a593Smuzhiyun * BUSY: 1: asic is busy execute BBP programming. 701*4882a593Smuzhiyun * WRITE_CONTROL: 1: write BBP, 0: read BBP. 702*4882a593Smuzhiyun */ 703*4882a593Smuzhiyun #define BBPCSR 0x00f0 704*4882a593Smuzhiyun #define BBPCSR_VALUE FIELD32(0x000000ff) 705*4882a593Smuzhiyun #define BBPCSR_REGNUM FIELD32(0x00007f00) 706*4882a593Smuzhiyun #define BBPCSR_BUSY FIELD32(0x00008000) 707*4882a593Smuzhiyun #define BBPCSR_WRITE_CONTROL FIELD32(0x00010000) 708*4882a593Smuzhiyun 709*4882a593Smuzhiyun /* 710*4882a593Smuzhiyun * RFCSR: RF serial control register. 711*4882a593Smuzhiyun * VALUE: Register value + id to program into rf/if. 712*4882a593Smuzhiyun * NUMBER_OF_BITS: Number of bits used in value (i:20, rfmd:22). 713*4882a593Smuzhiyun * IF_SELECT: Chip to program: 0: rf, 1: if. 714*4882a593Smuzhiyun * PLL_LD: Rf pll_ld status. 715*4882a593Smuzhiyun * BUSY: 1: asic is busy execute rf programming. 716*4882a593Smuzhiyun */ 717*4882a593Smuzhiyun #define RFCSR 0x00f4 718*4882a593Smuzhiyun #define RFCSR_VALUE FIELD32(0x00ffffff) 719*4882a593Smuzhiyun #define RFCSR_NUMBER_OF_BITS FIELD32(0x1f000000) 720*4882a593Smuzhiyun #define RFCSR_IF_SELECT FIELD32(0x20000000) 721*4882a593Smuzhiyun #define RFCSR_PLL_LD FIELD32(0x40000000) 722*4882a593Smuzhiyun #define RFCSR_BUSY FIELD32(0x80000000) 723*4882a593Smuzhiyun 724*4882a593Smuzhiyun /* 725*4882a593Smuzhiyun * LEDCSR: LED control register. 726*4882a593Smuzhiyun * ON_PERIOD: On period, default 70ms. 727*4882a593Smuzhiyun * OFF_PERIOD: Off period, default 30ms. 728*4882a593Smuzhiyun * LINK: 0: linkoff, 1: linkup. 729*4882a593Smuzhiyun * ACTIVITY: 0: idle, 1: active. 730*4882a593Smuzhiyun * LINK_POLARITY: 0: active low, 1: active high. 731*4882a593Smuzhiyun * ACTIVITY_POLARITY: 0: active low, 1: active high. 732*4882a593Smuzhiyun * LED_DEFAULT: LED state for "enable" 0: ON, 1: OFF. 733*4882a593Smuzhiyun */ 734*4882a593Smuzhiyun #define LEDCSR 0x00f8 735*4882a593Smuzhiyun #define LEDCSR_ON_PERIOD FIELD32(0x000000ff) 736*4882a593Smuzhiyun #define LEDCSR_OFF_PERIOD FIELD32(0x0000ff00) 737*4882a593Smuzhiyun #define LEDCSR_LINK FIELD32(0x00010000) 738*4882a593Smuzhiyun #define LEDCSR_ACTIVITY FIELD32(0x00020000) 739*4882a593Smuzhiyun #define LEDCSR_LINK_POLARITY FIELD32(0x00040000) 740*4882a593Smuzhiyun #define LEDCSR_ACTIVITY_POLARITY FIELD32(0x00080000) 741*4882a593Smuzhiyun #define LEDCSR_LED_DEFAULT FIELD32(0x00100000) 742*4882a593Smuzhiyun 743*4882a593Smuzhiyun /* 744*4882a593Smuzhiyun * SECCSR3: AES control register. 745*4882a593Smuzhiyun */ 746*4882a593Smuzhiyun #define SECCSR3 0x00fc 747*4882a593Smuzhiyun 748*4882a593Smuzhiyun /* 749*4882a593Smuzhiyun * ASIC pointer information. 750*4882a593Smuzhiyun * RXPTR: Current RX ring address. 751*4882a593Smuzhiyun * TXPTR: Current Tx ring address. 752*4882a593Smuzhiyun * PRIPTR: Current Priority ring address. 753*4882a593Smuzhiyun * ATIMPTR: Current ATIM ring address. 754*4882a593Smuzhiyun */ 755*4882a593Smuzhiyun #define RXPTR 0x0100 756*4882a593Smuzhiyun #define TXPTR 0x0104 757*4882a593Smuzhiyun #define PRIPTR 0x0108 758*4882a593Smuzhiyun #define ATIMPTR 0x010c 759*4882a593Smuzhiyun 760*4882a593Smuzhiyun /* 761*4882a593Smuzhiyun * TXACKCSR0: TX ACK timeout. 762*4882a593Smuzhiyun */ 763*4882a593Smuzhiyun #define TXACKCSR0 0x0110 764*4882a593Smuzhiyun 765*4882a593Smuzhiyun /* 766*4882a593Smuzhiyun * ACK timeout count registers. 767*4882a593Smuzhiyun * ACKCNT0: TX ACK timeout count. 768*4882a593Smuzhiyun * ACKCNT1: RX ACK timeout count. 769*4882a593Smuzhiyun */ 770*4882a593Smuzhiyun #define ACKCNT0 0x0114 771*4882a593Smuzhiyun #define ACKCNT1 0x0118 772*4882a593Smuzhiyun 773*4882a593Smuzhiyun /* 774*4882a593Smuzhiyun * GPIO and others. 775*4882a593Smuzhiyun */ 776*4882a593Smuzhiyun 777*4882a593Smuzhiyun /* 778*4882a593Smuzhiyun * GPIOCSR: GPIO control register. 779*4882a593Smuzhiyun * GPIOCSR_VALx: GPIO value 780*4882a593Smuzhiyun * GPIOCSR_DIRx: GPIO direction: 0 = output; 1 = input 781*4882a593Smuzhiyun */ 782*4882a593Smuzhiyun #define GPIOCSR 0x0120 783*4882a593Smuzhiyun #define GPIOCSR_VAL0 FIELD32(0x00000001) 784*4882a593Smuzhiyun #define GPIOCSR_VAL1 FIELD32(0x00000002) 785*4882a593Smuzhiyun #define GPIOCSR_VAL2 FIELD32(0x00000004) 786*4882a593Smuzhiyun #define GPIOCSR_VAL3 FIELD32(0x00000008) 787*4882a593Smuzhiyun #define GPIOCSR_VAL4 FIELD32(0x00000010) 788*4882a593Smuzhiyun #define GPIOCSR_VAL5 FIELD32(0x00000020) 789*4882a593Smuzhiyun #define GPIOCSR_VAL6 FIELD32(0x00000040) 790*4882a593Smuzhiyun #define GPIOCSR_VAL7 FIELD32(0x00000080) 791*4882a593Smuzhiyun #define GPIOCSR_DIR0 FIELD32(0x00000100) 792*4882a593Smuzhiyun #define GPIOCSR_DIR1 FIELD32(0x00000200) 793*4882a593Smuzhiyun #define GPIOCSR_DIR2 FIELD32(0x00000400) 794*4882a593Smuzhiyun #define GPIOCSR_DIR3 FIELD32(0x00000800) 795*4882a593Smuzhiyun #define GPIOCSR_DIR4 FIELD32(0x00001000) 796*4882a593Smuzhiyun #define GPIOCSR_DIR5 FIELD32(0x00002000) 797*4882a593Smuzhiyun #define GPIOCSR_DIR6 FIELD32(0x00004000) 798*4882a593Smuzhiyun #define GPIOCSR_DIR7 FIELD32(0x00008000) 799*4882a593Smuzhiyun 800*4882a593Smuzhiyun /* 801*4882a593Smuzhiyun * FIFO pointer registers. 802*4882a593Smuzhiyun * FIFOCSR0: TX FIFO pointer. 803*4882a593Smuzhiyun * FIFOCSR1: RX FIFO pointer. 804*4882a593Smuzhiyun */ 805*4882a593Smuzhiyun #define FIFOCSR0 0x0128 806*4882a593Smuzhiyun #define FIFOCSR1 0x012c 807*4882a593Smuzhiyun 808*4882a593Smuzhiyun /* 809*4882a593Smuzhiyun * BCNCSR1: Tx BEACON offset time control register. 810*4882a593Smuzhiyun * PRELOAD: Beacon timer offset in units of usec. 811*4882a593Smuzhiyun * BEACON_CWMIN: 2^CwMin. 812*4882a593Smuzhiyun */ 813*4882a593Smuzhiyun #define BCNCSR1 0x0130 814*4882a593Smuzhiyun #define BCNCSR1_PRELOAD FIELD32(0x0000ffff) 815*4882a593Smuzhiyun #define BCNCSR1_BEACON_CWMIN FIELD32(0x000f0000) 816*4882a593Smuzhiyun 817*4882a593Smuzhiyun /* 818*4882a593Smuzhiyun * MACCSR2: TX_PE to RX_PE turn-around time control register 819*4882a593Smuzhiyun * DELAY: RX_PE low width, in units of pci clock cycle. 820*4882a593Smuzhiyun */ 821*4882a593Smuzhiyun #define MACCSR2 0x0134 822*4882a593Smuzhiyun #define MACCSR2_DELAY FIELD32(0x000000ff) 823*4882a593Smuzhiyun 824*4882a593Smuzhiyun /* 825*4882a593Smuzhiyun * TESTCSR: TEST mode selection register. 826*4882a593Smuzhiyun */ 827*4882a593Smuzhiyun #define TESTCSR 0x0138 828*4882a593Smuzhiyun 829*4882a593Smuzhiyun /* 830*4882a593Smuzhiyun * ARCSR2: 1 Mbps ACK/CTS PLCP. 831*4882a593Smuzhiyun */ 832*4882a593Smuzhiyun #define ARCSR2 0x013c 833*4882a593Smuzhiyun #define ARCSR2_SIGNAL FIELD32(0x000000ff) 834*4882a593Smuzhiyun #define ARCSR2_SERVICE FIELD32(0x0000ff00) 835*4882a593Smuzhiyun #define ARCSR2_LENGTH FIELD32(0xffff0000) 836*4882a593Smuzhiyun 837*4882a593Smuzhiyun /* 838*4882a593Smuzhiyun * ARCSR3: 2 Mbps ACK/CTS PLCP. 839*4882a593Smuzhiyun */ 840*4882a593Smuzhiyun #define ARCSR3 0x0140 841*4882a593Smuzhiyun #define ARCSR3_SIGNAL FIELD32(0x000000ff) 842*4882a593Smuzhiyun #define ARCSR3_SERVICE FIELD32(0x0000ff00) 843*4882a593Smuzhiyun #define ARCSR3_LENGTH FIELD32(0xffff0000) 844*4882a593Smuzhiyun 845*4882a593Smuzhiyun /* 846*4882a593Smuzhiyun * ARCSR4: 5.5 Mbps ACK/CTS PLCP. 847*4882a593Smuzhiyun */ 848*4882a593Smuzhiyun #define ARCSR4 0x0144 849*4882a593Smuzhiyun #define ARCSR4_SIGNAL FIELD32(0x000000ff) 850*4882a593Smuzhiyun #define ARCSR4_SERVICE FIELD32(0x0000ff00) 851*4882a593Smuzhiyun #define ARCSR4_LENGTH FIELD32(0xffff0000) 852*4882a593Smuzhiyun 853*4882a593Smuzhiyun /* 854*4882a593Smuzhiyun * ARCSR5: 11 Mbps ACK/CTS PLCP. 855*4882a593Smuzhiyun */ 856*4882a593Smuzhiyun #define ARCSR5 0x0148 857*4882a593Smuzhiyun #define ARCSR5_SIGNAL FIELD32(0x000000ff) 858*4882a593Smuzhiyun #define ARCSR5_SERVICE FIELD32(0x0000ff00) 859*4882a593Smuzhiyun #define ARCSR5_LENGTH FIELD32(0xffff0000) 860*4882a593Smuzhiyun 861*4882a593Smuzhiyun /* 862*4882a593Smuzhiyun * ARTCSR0: CCK ACK/CTS payload consumed time for 1/2/5.5/11 mbps. 863*4882a593Smuzhiyun */ 864*4882a593Smuzhiyun #define ARTCSR0 0x014c 865*4882a593Smuzhiyun #define ARTCSR0_ACK_CTS_11MBS FIELD32(0x000000ff) 866*4882a593Smuzhiyun #define ARTCSR0_ACK_CTS_5_5MBS FIELD32(0x0000ff00) 867*4882a593Smuzhiyun #define ARTCSR0_ACK_CTS_2MBS FIELD32(0x00ff0000) 868*4882a593Smuzhiyun #define ARTCSR0_ACK_CTS_1MBS FIELD32(0xff000000) 869*4882a593Smuzhiyun 870*4882a593Smuzhiyun 871*4882a593Smuzhiyun /* 872*4882a593Smuzhiyun * ARTCSR1: OFDM ACK/CTS payload consumed time for 6/9/12/18 mbps. 873*4882a593Smuzhiyun */ 874*4882a593Smuzhiyun #define ARTCSR1 0x0150 875*4882a593Smuzhiyun #define ARTCSR1_ACK_CTS_6MBS FIELD32(0x000000ff) 876*4882a593Smuzhiyun #define ARTCSR1_ACK_CTS_9MBS FIELD32(0x0000ff00) 877*4882a593Smuzhiyun #define ARTCSR1_ACK_CTS_12MBS FIELD32(0x00ff0000) 878*4882a593Smuzhiyun #define ARTCSR1_ACK_CTS_18MBS FIELD32(0xff000000) 879*4882a593Smuzhiyun 880*4882a593Smuzhiyun /* 881*4882a593Smuzhiyun * ARTCSR2: OFDM ACK/CTS payload consumed time for 24/36/48/54 mbps. 882*4882a593Smuzhiyun */ 883*4882a593Smuzhiyun #define ARTCSR2 0x0154 884*4882a593Smuzhiyun #define ARTCSR2_ACK_CTS_24MBS FIELD32(0x000000ff) 885*4882a593Smuzhiyun #define ARTCSR2_ACK_CTS_36MBS FIELD32(0x0000ff00) 886*4882a593Smuzhiyun #define ARTCSR2_ACK_CTS_48MBS FIELD32(0x00ff0000) 887*4882a593Smuzhiyun #define ARTCSR2_ACK_CTS_54MBS FIELD32(0xff000000) 888*4882a593Smuzhiyun 889*4882a593Smuzhiyun /* 890*4882a593Smuzhiyun * SECCSR1: WEP control register. 891*4882a593Smuzhiyun * KICK_ENCRYPT: Kick encryption engine, self-clear. 892*4882a593Smuzhiyun * ONE_SHOT: 0: ring mode, 1: One shot only mode. 893*4882a593Smuzhiyun * DESC_ADDRESS: Descriptor physical address of frame. 894*4882a593Smuzhiyun */ 895*4882a593Smuzhiyun #define SECCSR1 0x0158 896*4882a593Smuzhiyun #define SECCSR1_KICK_ENCRYPT FIELD32(0x00000001) 897*4882a593Smuzhiyun #define SECCSR1_ONE_SHOT FIELD32(0x00000002) 898*4882a593Smuzhiyun #define SECCSR1_DESC_ADDRESS FIELD32(0xfffffffc) 899*4882a593Smuzhiyun 900*4882a593Smuzhiyun /* 901*4882a593Smuzhiyun * BBPCSR1: BBP TX configuration. 902*4882a593Smuzhiyun */ 903*4882a593Smuzhiyun #define BBPCSR1 0x015c 904*4882a593Smuzhiyun #define BBPCSR1_CCK FIELD32(0x00000003) 905*4882a593Smuzhiyun #define BBPCSR1_CCK_FLIP FIELD32(0x00000004) 906*4882a593Smuzhiyun #define BBPCSR1_OFDM FIELD32(0x00030000) 907*4882a593Smuzhiyun #define BBPCSR1_OFDM_FLIP FIELD32(0x00040000) 908*4882a593Smuzhiyun 909*4882a593Smuzhiyun /* 910*4882a593Smuzhiyun * Dual band configuration registers. 911*4882a593Smuzhiyun * DBANDCSR0: Dual band configuration register 0. 912*4882a593Smuzhiyun * DBANDCSR1: Dual band configuration register 1. 913*4882a593Smuzhiyun */ 914*4882a593Smuzhiyun #define DBANDCSR0 0x0160 915*4882a593Smuzhiyun #define DBANDCSR1 0x0164 916*4882a593Smuzhiyun 917*4882a593Smuzhiyun /* 918*4882a593Smuzhiyun * BBPPCSR: BBP Pin control register. 919*4882a593Smuzhiyun */ 920*4882a593Smuzhiyun #define BBPPCSR 0x0168 921*4882a593Smuzhiyun 922*4882a593Smuzhiyun /* 923*4882a593Smuzhiyun * MAC special debug mode selection registers. 924*4882a593Smuzhiyun * DBGSEL0: MAC special debug mode selection register 0. 925*4882a593Smuzhiyun * DBGSEL1: MAC special debug mode selection register 1. 926*4882a593Smuzhiyun */ 927*4882a593Smuzhiyun #define DBGSEL0 0x016c 928*4882a593Smuzhiyun #define DBGSEL1 0x0170 929*4882a593Smuzhiyun 930*4882a593Smuzhiyun /* 931*4882a593Smuzhiyun * BISTCSR: BBP BIST register. 932*4882a593Smuzhiyun */ 933*4882a593Smuzhiyun #define BISTCSR 0x0174 934*4882a593Smuzhiyun 935*4882a593Smuzhiyun /* 936*4882a593Smuzhiyun * Multicast filter registers. 937*4882a593Smuzhiyun * MCAST0: Multicast filter register 0. 938*4882a593Smuzhiyun * MCAST1: Multicast filter register 1. 939*4882a593Smuzhiyun */ 940*4882a593Smuzhiyun #define MCAST0 0x0178 941*4882a593Smuzhiyun #define MCAST1 0x017c 942*4882a593Smuzhiyun 943*4882a593Smuzhiyun /* 944*4882a593Smuzhiyun * UART registers. 945*4882a593Smuzhiyun * UARTCSR0: UART1 TX register. 946*4882a593Smuzhiyun * UARTCSR1: UART1 RX register. 947*4882a593Smuzhiyun * UARTCSR3: UART1 frame control register. 948*4882a593Smuzhiyun * UARTCSR4: UART1 buffer control register. 949*4882a593Smuzhiyun * UART2CSR0: UART2 TX register. 950*4882a593Smuzhiyun * UART2CSR1: UART2 RX register. 951*4882a593Smuzhiyun * UART2CSR3: UART2 frame control register. 952*4882a593Smuzhiyun * UART2CSR4: UART2 buffer control register. 953*4882a593Smuzhiyun */ 954*4882a593Smuzhiyun #define UARTCSR0 0x0180 955*4882a593Smuzhiyun #define UARTCSR1 0x0184 956*4882a593Smuzhiyun #define UARTCSR3 0x0188 957*4882a593Smuzhiyun #define UARTCSR4 0x018c 958*4882a593Smuzhiyun #define UART2CSR0 0x0190 959*4882a593Smuzhiyun #define UART2CSR1 0x0194 960*4882a593Smuzhiyun #define UART2CSR3 0x0198 961*4882a593Smuzhiyun #define UART2CSR4 0x019c 962*4882a593Smuzhiyun 963*4882a593Smuzhiyun /* 964*4882a593Smuzhiyun * BBP registers. 965*4882a593Smuzhiyun * The wordsize of the BBP is 8 bits. 966*4882a593Smuzhiyun */ 967*4882a593Smuzhiyun 968*4882a593Smuzhiyun /* 969*4882a593Smuzhiyun * R2: TX antenna control 970*4882a593Smuzhiyun */ 971*4882a593Smuzhiyun #define BBP_R2_TX_ANTENNA FIELD8(0x03) 972*4882a593Smuzhiyun #define BBP_R2_TX_IQ_FLIP FIELD8(0x04) 973*4882a593Smuzhiyun 974*4882a593Smuzhiyun /* 975*4882a593Smuzhiyun * R14: RX antenna control 976*4882a593Smuzhiyun */ 977*4882a593Smuzhiyun #define BBP_R14_RX_ANTENNA FIELD8(0x03) 978*4882a593Smuzhiyun #define BBP_R14_RX_IQ_FLIP FIELD8(0x04) 979*4882a593Smuzhiyun 980*4882a593Smuzhiyun /* 981*4882a593Smuzhiyun * BBP_R70 982*4882a593Smuzhiyun */ 983*4882a593Smuzhiyun #define BBP_R70_JAPAN_FILTER FIELD8(0x08) 984*4882a593Smuzhiyun 985*4882a593Smuzhiyun /* 986*4882a593Smuzhiyun * RF registers 987*4882a593Smuzhiyun */ 988*4882a593Smuzhiyun 989*4882a593Smuzhiyun /* 990*4882a593Smuzhiyun * RF 1 991*4882a593Smuzhiyun */ 992*4882a593Smuzhiyun #define RF1_TUNER FIELD32(0x00020000) 993*4882a593Smuzhiyun 994*4882a593Smuzhiyun /* 995*4882a593Smuzhiyun * RF 3 996*4882a593Smuzhiyun */ 997*4882a593Smuzhiyun #define RF3_TUNER FIELD32(0x00000100) 998*4882a593Smuzhiyun #define RF3_TXPOWER FIELD32(0x00003e00) 999*4882a593Smuzhiyun 1000*4882a593Smuzhiyun /* 1001*4882a593Smuzhiyun * EEPROM content. 1002*4882a593Smuzhiyun * The wordsize of the EEPROM is 16 bits. 1003*4882a593Smuzhiyun */ 1004*4882a593Smuzhiyun 1005*4882a593Smuzhiyun /* 1006*4882a593Smuzhiyun * HW MAC address. 1007*4882a593Smuzhiyun */ 1008*4882a593Smuzhiyun #define EEPROM_MAC_ADDR_0 0x0002 1009*4882a593Smuzhiyun #define EEPROM_MAC_ADDR_BYTE0 FIELD16(0x00ff) 1010*4882a593Smuzhiyun #define EEPROM_MAC_ADDR_BYTE1 FIELD16(0xff00) 1011*4882a593Smuzhiyun #define EEPROM_MAC_ADDR1 0x0003 1012*4882a593Smuzhiyun #define EEPROM_MAC_ADDR_BYTE2 FIELD16(0x00ff) 1013*4882a593Smuzhiyun #define EEPROM_MAC_ADDR_BYTE3 FIELD16(0xff00) 1014*4882a593Smuzhiyun #define EEPROM_MAC_ADDR_2 0x0004 1015*4882a593Smuzhiyun #define EEPROM_MAC_ADDR_BYTE4 FIELD16(0x00ff) 1016*4882a593Smuzhiyun #define EEPROM_MAC_ADDR_BYTE5 FIELD16(0xff00) 1017*4882a593Smuzhiyun 1018*4882a593Smuzhiyun /* 1019*4882a593Smuzhiyun * EEPROM antenna. 1020*4882a593Smuzhiyun * ANTENNA_NUM: Number of antenna's. 1021*4882a593Smuzhiyun * TX_DEFAULT: Default antenna 0: diversity, 1: A, 2: B. 1022*4882a593Smuzhiyun * RX_DEFAULT: Default antenna 0: diversity, 1: A, 2: B. 1023*4882a593Smuzhiyun * LED_MODE: 0: default, 1: TX/RX activity,2: Single (ignore link), 3: rsvd. 1024*4882a593Smuzhiyun * DYN_TXAGC: Dynamic TX AGC control. 1025*4882a593Smuzhiyun * HARDWARE_RADIO: 1: Hardware controlled radio. Read GPIO0. 1026*4882a593Smuzhiyun * RF_TYPE: Rf_type of this adapter. 1027*4882a593Smuzhiyun */ 1028*4882a593Smuzhiyun #define EEPROM_ANTENNA 0x10 1029*4882a593Smuzhiyun #define EEPROM_ANTENNA_NUM FIELD16(0x0003) 1030*4882a593Smuzhiyun #define EEPROM_ANTENNA_TX_DEFAULT FIELD16(0x000c) 1031*4882a593Smuzhiyun #define EEPROM_ANTENNA_RX_DEFAULT FIELD16(0x0030) 1032*4882a593Smuzhiyun #define EEPROM_ANTENNA_LED_MODE FIELD16(0x01c0) 1033*4882a593Smuzhiyun #define EEPROM_ANTENNA_DYN_TXAGC FIELD16(0x0200) 1034*4882a593Smuzhiyun #define EEPROM_ANTENNA_HARDWARE_RADIO FIELD16(0x0400) 1035*4882a593Smuzhiyun #define EEPROM_ANTENNA_RF_TYPE FIELD16(0xf800) 1036*4882a593Smuzhiyun 1037*4882a593Smuzhiyun /* 1038*4882a593Smuzhiyun * EEPROM NIC config. 1039*4882a593Smuzhiyun * CARDBUS_ACCEL: 0: enable, 1: disable. 1040*4882a593Smuzhiyun * DYN_BBP_TUNE: 0: enable, 1: disable. 1041*4882a593Smuzhiyun * CCK_TX_POWER: CCK TX power compensation. 1042*4882a593Smuzhiyun */ 1043*4882a593Smuzhiyun #define EEPROM_NIC 0x11 1044*4882a593Smuzhiyun #define EEPROM_NIC_CARDBUS_ACCEL FIELD16(0x0001) 1045*4882a593Smuzhiyun #define EEPROM_NIC_DYN_BBP_TUNE FIELD16(0x0002) 1046*4882a593Smuzhiyun #define EEPROM_NIC_CCK_TX_POWER FIELD16(0x000c) 1047*4882a593Smuzhiyun 1048*4882a593Smuzhiyun /* 1049*4882a593Smuzhiyun * EEPROM geography. 1050*4882a593Smuzhiyun * GEO: Default geography setting for device. 1051*4882a593Smuzhiyun */ 1052*4882a593Smuzhiyun #define EEPROM_GEOGRAPHY 0x12 1053*4882a593Smuzhiyun #define EEPROM_GEOGRAPHY_GEO FIELD16(0x0f00) 1054*4882a593Smuzhiyun 1055*4882a593Smuzhiyun /* 1056*4882a593Smuzhiyun * EEPROM BBP. 1057*4882a593Smuzhiyun */ 1058*4882a593Smuzhiyun #define EEPROM_BBP_START 0x13 1059*4882a593Smuzhiyun #define EEPROM_BBP_SIZE 16 1060*4882a593Smuzhiyun #define EEPROM_BBP_VALUE FIELD16(0x00ff) 1061*4882a593Smuzhiyun #define EEPROM_BBP_REG_ID FIELD16(0xff00) 1062*4882a593Smuzhiyun 1063*4882a593Smuzhiyun /* 1064*4882a593Smuzhiyun * EEPROM TXPOWER 1065*4882a593Smuzhiyun */ 1066*4882a593Smuzhiyun #define EEPROM_TXPOWER_START 0x23 1067*4882a593Smuzhiyun #define EEPROM_TXPOWER_SIZE 7 1068*4882a593Smuzhiyun #define EEPROM_TXPOWER_1 FIELD16(0x00ff) 1069*4882a593Smuzhiyun #define EEPROM_TXPOWER_2 FIELD16(0xff00) 1070*4882a593Smuzhiyun 1071*4882a593Smuzhiyun /* 1072*4882a593Smuzhiyun * RSSI <-> dBm offset calibration 1073*4882a593Smuzhiyun */ 1074*4882a593Smuzhiyun #define EEPROM_CALIBRATE_OFFSET 0x3e 1075*4882a593Smuzhiyun #define EEPROM_CALIBRATE_OFFSET_RSSI FIELD16(0x00ff) 1076*4882a593Smuzhiyun 1077*4882a593Smuzhiyun /* 1078*4882a593Smuzhiyun * DMA descriptor defines. 1079*4882a593Smuzhiyun */ 1080*4882a593Smuzhiyun #define TXD_DESC_SIZE (11 * sizeof(__le32)) 1081*4882a593Smuzhiyun #define RXD_DESC_SIZE (11 * sizeof(__le32)) 1082*4882a593Smuzhiyun 1083*4882a593Smuzhiyun /* 1084*4882a593Smuzhiyun * TX descriptor format for TX, PRIO, ATIM and Beacon Ring. 1085*4882a593Smuzhiyun */ 1086*4882a593Smuzhiyun 1087*4882a593Smuzhiyun /* 1088*4882a593Smuzhiyun * Word0 1089*4882a593Smuzhiyun */ 1090*4882a593Smuzhiyun #define TXD_W0_OWNER_NIC FIELD32(0x00000001) 1091*4882a593Smuzhiyun #define TXD_W0_VALID FIELD32(0x00000002) 1092*4882a593Smuzhiyun #define TXD_W0_RESULT FIELD32(0x0000001c) 1093*4882a593Smuzhiyun #define TXD_W0_RETRY_COUNT FIELD32(0x000000e0) 1094*4882a593Smuzhiyun #define TXD_W0_MORE_FRAG FIELD32(0x00000100) 1095*4882a593Smuzhiyun #define TXD_W0_ACK FIELD32(0x00000200) 1096*4882a593Smuzhiyun #define TXD_W0_TIMESTAMP FIELD32(0x00000400) 1097*4882a593Smuzhiyun #define TXD_W0_OFDM FIELD32(0x00000800) 1098*4882a593Smuzhiyun #define TXD_W0_CIPHER_OWNER FIELD32(0x00001000) 1099*4882a593Smuzhiyun #define TXD_W0_IFS FIELD32(0x00006000) 1100*4882a593Smuzhiyun #define TXD_W0_RETRY_MODE FIELD32(0x00008000) 1101*4882a593Smuzhiyun #define TXD_W0_DATABYTE_COUNT FIELD32(0x0fff0000) 1102*4882a593Smuzhiyun #define TXD_W0_CIPHER_ALG FIELD32(0xe0000000) 1103*4882a593Smuzhiyun 1104*4882a593Smuzhiyun /* 1105*4882a593Smuzhiyun * Word1 1106*4882a593Smuzhiyun */ 1107*4882a593Smuzhiyun #define TXD_W1_BUFFER_ADDRESS FIELD32(0xffffffff) 1108*4882a593Smuzhiyun 1109*4882a593Smuzhiyun /* 1110*4882a593Smuzhiyun * Word2 1111*4882a593Smuzhiyun */ 1112*4882a593Smuzhiyun #define TXD_W2_IV_OFFSET FIELD32(0x0000003f) 1113*4882a593Smuzhiyun #define TXD_W2_AIFS FIELD32(0x000000c0) 1114*4882a593Smuzhiyun #define TXD_W2_CWMIN FIELD32(0x00000f00) 1115*4882a593Smuzhiyun #define TXD_W2_CWMAX FIELD32(0x0000f000) 1116*4882a593Smuzhiyun 1117*4882a593Smuzhiyun /* 1118*4882a593Smuzhiyun * Word3: PLCP information 1119*4882a593Smuzhiyun */ 1120*4882a593Smuzhiyun #define TXD_W3_PLCP_SIGNAL FIELD32(0x000000ff) 1121*4882a593Smuzhiyun #define TXD_W3_PLCP_SERVICE FIELD32(0x0000ff00) 1122*4882a593Smuzhiyun #define TXD_W3_PLCP_LENGTH_LOW FIELD32(0x00ff0000) 1123*4882a593Smuzhiyun #define TXD_W3_PLCP_LENGTH_HIGH FIELD32(0xff000000) 1124*4882a593Smuzhiyun 1125*4882a593Smuzhiyun /* 1126*4882a593Smuzhiyun * Word4 1127*4882a593Smuzhiyun */ 1128*4882a593Smuzhiyun #define TXD_W4_IV FIELD32(0xffffffff) 1129*4882a593Smuzhiyun 1130*4882a593Smuzhiyun /* 1131*4882a593Smuzhiyun * Word5 1132*4882a593Smuzhiyun */ 1133*4882a593Smuzhiyun #define TXD_W5_EIV FIELD32(0xffffffff) 1134*4882a593Smuzhiyun 1135*4882a593Smuzhiyun /* 1136*4882a593Smuzhiyun * Word6-9: Key 1137*4882a593Smuzhiyun */ 1138*4882a593Smuzhiyun #define TXD_W6_KEY FIELD32(0xffffffff) 1139*4882a593Smuzhiyun #define TXD_W7_KEY FIELD32(0xffffffff) 1140*4882a593Smuzhiyun #define TXD_W8_KEY FIELD32(0xffffffff) 1141*4882a593Smuzhiyun #define TXD_W9_KEY FIELD32(0xffffffff) 1142*4882a593Smuzhiyun 1143*4882a593Smuzhiyun /* 1144*4882a593Smuzhiyun * Word10 1145*4882a593Smuzhiyun */ 1146*4882a593Smuzhiyun #define TXD_W10_RTS FIELD32(0x00000001) 1147*4882a593Smuzhiyun #define TXD_W10_TX_RATE FIELD32(0x000000fe) 1148*4882a593Smuzhiyun 1149*4882a593Smuzhiyun /* 1150*4882a593Smuzhiyun * RX descriptor format for RX Ring. 1151*4882a593Smuzhiyun */ 1152*4882a593Smuzhiyun 1153*4882a593Smuzhiyun /* 1154*4882a593Smuzhiyun * Word0 1155*4882a593Smuzhiyun */ 1156*4882a593Smuzhiyun #define RXD_W0_OWNER_NIC FIELD32(0x00000001) 1157*4882a593Smuzhiyun #define RXD_W0_UNICAST_TO_ME FIELD32(0x00000002) 1158*4882a593Smuzhiyun #define RXD_W0_MULTICAST FIELD32(0x00000004) 1159*4882a593Smuzhiyun #define RXD_W0_BROADCAST FIELD32(0x00000008) 1160*4882a593Smuzhiyun #define RXD_W0_MY_BSS FIELD32(0x00000010) 1161*4882a593Smuzhiyun #define RXD_W0_CRC_ERROR FIELD32(0x00000020) 1162*4882a593Smuzhiyun #define RXD_W0_OFDM FIELD32(0x00000040) 1163*4882a593Smuzhiyun #define RXD_W0_PHYSICAL_ERROR FIELD32(0x00000080) 1164*4882a593Smuzhiyun #define RXD_W0_CIPHER_OWNER FIELD32(0x00000100) 1165*4882a593Smuzhiyun #define RXD_W0_ICV_ERROR FIELD32(0x00000200) 1166*4882a593Smuzhiyun #define RXD_W0_IV_OFFSET FIELD32(0x0000fc00) 1167*4882a593Smuzhiyun #define RXD_W0_DATABYTE_COUNT FIELD32(0x0fff0000) 1168*4882a593Smuzhiyun #define RXD_W0_CIPHER_ALG FIELD32(0xe0000000) 1169*4882a593Smuzhiyun 1170*4882a593Smuzhiyun /* 1171*4882a593Smuzhiyun * Word1 1172*4882a593Smuzhiyun */ 1173*4882a593Smuzhiyun #define RXD_W1_BUFFER_ADDRESS FIELD32(0xffffffff) 1174*4882a593Smuzhiyun 1175*4882a593Smuzhiyun /* 1176*4882a593Smuzhiyun * Word2 1177*4882a593Smuzhiyun */ 1178*4882a593Smuzhiyun #define RXD_W2_SIGNAL FIELD32(0x000000ff) 1179*4882a593Smuzhiyun #define RXD_W2_RSSI FIELD32(0x0000ff00) 1180*4882a593Smuzhiyun #define RXD_W2_TA FIELD32(0xffff0000) 1181*4882a593Smuzhiyun 1182*4882a593Smuzhiyun /* 1183*4882a593Smuzhiyun * Word3 1184*4882a593Smuzhiyun */ 1185*4882a593Smuzhiyun #define RXD_W3_TA FIELD32(0xffffffff) 1186*4882a593Smuzhiyun 1187*4882a593Smuzhiyun /* 1188*4882a593Smuzhiyun * Word4 1189*4882a593Smuzhiyun */ 1190*4882a593Smuzhiyun #define RXD_W4_IV FIELD32(0xffffffff) 1191*4882a593Smuzhiyun 1192*4882a593Smuzhiyun /* 1193*4882a593Smuzhiyun * Word5 1194*4882a593Smuzhiyun */ 1195*4882a593Smuzhiyun #define RXD_W5_EIV FIELD32(0xffffffff) 1196*4882a593Smuzhiyun 1197*4882a593Smuzhiyun /* 1198*4882a593Smuzhiyun * Word6-9: Key 1199*4882a593Smuzhiyun */ 1200*4882a593Smuzhiyun #define RXD_W6_KEY FIELD32(0xffffffff) 1201*4882a593Smuzhiyun #define RXD_W7_KEY FIELD32(0xffffffff) 1202*4882a593Smuzhiyun #define RXD_W8_KEY FIELD32(0xffffffff) 1203*4882a593Smuzhiyun #define RXD_W9_KEY FIELD32(0xffffffff) 1204*4882a593Smuzhiyun 1205*4882a593Smuzhiyun /* 1206*4882a593Smuzhiyun * Word10 1207*4882a593Smuzhiyun */ 1208*4882a593Smuzhiyun #define RXD_W10_DROP FIELD32(0x00000001) 1209*4882a593Smuzhiyun 1210*4882a593Smuzhiyun /* 1211*4882a593Smuzhiyun * Macros for converting txpower from EEPROM to mac80211 value 1212*4882a593Smuzhiyun * and from mac80211 value to register value. 1213*4882a593Smuzhiyun */ 1214*4882a593Smuzhiyun #define MIN_TXPOWER 0 1215*4882a593Smuzhiyun #define MAX_TXPOWER 31 1216*4882a593Smuzhiyun #define DEFAULT_TXPOWER 24 1217*4882a593Smuzhiyun 1218*4882a593Smuzhiyun #define TXPOWER_FROM_DEV(__txpower) \ 1219*4882a593Smuzhiyun (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower) 1220*4882a593Smuzhiyun 1221*4882a593Smuzhiyun #define TXPOWER_TO_DEV(__txpower) \ 1222*4882a593Smuzhiyun clamp_t(char, __txpower, MIN_TXPOWER, MAX_TXPOWER) 1223*4882a593Smuzhiyun 1224*4882a593Smuzhiyun #endif /* RT2500PCI_H */ 1225