root/drivers/staging/vt6655/mac.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0+ */
   2 /*
   3  * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
   4  * All rights reserved.
   5  *
   6  * File: mac.h
   7  *
   8  * Purpose: MAC routines
   9  *
  10  * Author: Tevin Chen
  11  *
  12  * Date: May 21, 1996
  13  *
  14  * Revision History:
  15  *      07-01-2003 Bryan YC Fan:  Re-write codes to support VT3253 spec.
  16  *      08-25-2003 Kyle Hsu:      Porting MAC functions from sim53.
  17  *      09-03-2003 Bryan YC Fan:  Add MACvDisableProtectMD & MACvEnableProtectMD
  18  */
  19 
  20 #ifndef __MAC_H__
  21 #define __MAC_H__
  22 
  23 #include "tmacro.h"
  24 #include "upc.h"
  25 
  26 /*---------------------  Export Definitions -------------------------*/
  27 /* Registers in the MAC */
  28 #define MAC_MAX_CONTEXT_SIZE_PAGE0  256
  29 #define MAC_MAX_CONTEXT_SIZE_PAGE1  128
  30 
  31 /* Registers not related to 802.11b */
  32 #define MAC_REG_BCFG0       0x00
  33 #define MAC_REG_BCFG1       0x01
  34 #define MAC_REG_FCR0        0x02
  35 #define MAC_REG_FCR1        0x03
  36 #define MAC_REG_BISTCMD     0x04
  37 #define MAC_REG_BISTSR0     0x05
  38 #define MAC_REG_BISTSR1     0x06
  39 #define MAC_REG_BISTSR2     0x07
  40 #define MAC_REG_I2MCSR      0x08
  41 #define MAC_REG_I2MTGID     0x09
  42 #define MAC_REG_I2MTGAD     0x0A
  43 #define MAC_REG_I2MCFG      0x0B
  44 #define MAC_REG_I2MDIPT     0x0C
  45 #define MAC_REG_I2MDOPT     0x0E
  46 #define MAC_REG_PMC0        0x10
  47 #define MAC_REG_PMC1        0x11
  48 #define MAC_REG_STICKHW     0x12
  49 #define MAC_REG_LOCALID     0x14
  50 #define MAC_REG_TESTCFG     0x15
  51 #define MAC_REG_JUMPER0     0x16
  52 #define MAC_REG_JUMPER1     0x17
  53 #define MAC_REG_TMCTL0      0x18
  54 #define MAC_REG_TMCTL1      0x19
  55 #define MAC_REG_TMDATA0     0x1C
  56 
  57 /* MAC Parameter related */
  58 #define MAC_REG_LRT         0x20
  59 #define MAC_REG_SRT         0x21
  60 #define MAC_REG_SIFS        0x22
  61 #define MAC_REG_DIFS        0x23
  62 #define MAC_REG_EIFS        0x24
  63 #define MAC_REG_SLOT        0x25
  64 #define MAC_REG_BI          0x26
  65 #define MAC_REG_CWMAXMIN0   0x28
  66 #define MAC_REG_LINKOFFTOTM 0x2A
  67 #define MAC_REG_SWTMOT      0x2B
  68 #define MAC_REG_MIBCNTR     0x2C
  69 #define MAC_REG_RTSOKCNT    0x2C
  70 #define MAC_REG_RTSFAILCNT  0x2D
  71 #define MAC_REG_ACKFAILCNT  0x2E
  72 #define MAC_REG_FCSERRCNT   0x2F
  73 
  74 /* TSF Related */
  75 #define MAC_REG_TSFCNTR     0x30
  76 #define MAC_REG_NEXTTBTT    0x38
  77 #define MAC_REG_TSFOFST     0x40
  78 #define MAC_REG_TFTCTL      0x48
  79 
  80 /* WMAC Control/Status Related */
  81 #define MAC_REG_ENCFG       0x4C
  82 #define MAC_REG_PAGE1SEL    0x4F
  83 #define MAC_REG_CFG         0x50
  84 #define MAC_REG_TEST        0x52
  85 #define MAC_REG_HOSTCR      0x54
  86 #define MAC_REG_MACCR       0x55
  87 #define MAC_REG_RCR         0x56
  88 #define MAC_REG_TCR         0x57
  89 #define MAC_REG_IMR         0x58
  90 #define MAC_REG_ISR         0x5C
  91 
  92 /* Power Saving Related */
  93 #define MAC_REG_PSCFG       0x60
  94 #define MAC_REG_PSCTL       0x61
  95 #define MAC_REG_PSPWRSIG    0x62
  96 #define MAC_REG_BBCR13      0x63
  97 #define MAC_REG_AIDATIM     0x64
  98 #define MAC_REG_PWBT        0x66
  99 #define MAC_REG_WAKEOKTMR   0x68
 100 #define MAC_REG_CALTMR      0x69
 101 #define MAC_REG_SYNSPACCNT  0x6A
 102 #define MAC_REG_WAKSYNOPT   0x6B
 103 
 104 /* Baseband/IF Control Group */
 105 #define MAC_REG_BBREGCTL    0x6C
 106 #define MAC_REG_CHANNEL     0x6D
 107 #define MAC_REG_BBREGADR    0x6E
 108 #define MAC_REG_BBREGDATA   0x6F
 109 #define MAC_REG_IFREGCTL    0x70
 110 #define MAC_REG_IFDATA      0x71
 111 #define MAC_REG_ITRTMSET    0x74
 112 #define MAC_REG_PAPEDELAY   0x77
 113 #define MAC_REG_SOFTPWRCTL  0x78
 114 #define MAC_REG_GPIOCTL0    0x7A
 115 #define MAC_REG_GPIOCTL1    0x7B
 116 
 117 /* MAC DMA Related Group */
 118 #define MAC_REG_TXDMACTL0   0x7C
 119 #define MAC_REG_TXDMAPTR0   0x80
 120 #define MAC_REG_AC0DMACTL   0x84
 121 #define MAC_REG_AC0DMAPTR   0x88
 122 #define MAC_REG_BCNDMACTL   0x8C
 123 #define MAC_REG_BCNDMAPTR   0x90
 124 #define MAC_REG_RXDMACTL0   0x94
 125 #define MAC_REG_RXDMAPTR0   0x98
 126 #define MAC_REG_RXDMACTL1   0x9C
 127 #define MAC_REG_RXDMAPTR1   0xA0
 128 #define MAC_REG_SYNCDMACTL  0xA4
 129 #define MAC_REG_SYNCDMAPTR  0xA8
 130 #define MAC_REG_ATIMDMACTL  0xAC
 131 #define MAC_REG_ATIMDMAPTR  0xB0
 132 
 133 /* MiscFF PIO related */
 134 #define MAC_REG_MISCFFNDEX  0xB4
 135 #define MAC_REG_MISCFFCTL   0xB6
 136 #define MAC_REG_MISCFFDATA  0xB8
 137 
 138 /* Extend SW Timer */
 139 #define MAC_REG_TMDATA1     0xBC
 140 
 141 /* WOW Related Group */
 142 #define MAC_REG_WAKEUPEN0   0xC0
 143 #define MAC_REG_WAKEUPEN1   0xC1
 144 #define MAC_REG_WAKEUPSR0   0xC2
 145 #define MAC_REG_WAKEUPSR1   0xC3
 146 #define MAC_REG_WAKE128_0   0xC4
 147 #define MAC_REG_WAKE128_1   0xD4
 148 #define MAC_REG_WAKE128_2   0xE4
 149 #define MAC_REG_WAKE128_3   0xF4
 150 
 151 /************** Page 1 ******************/
 152 #define MAC_REG_CRC_128_0   0x04
 153 #define MAC_REG_CRC_128_1   0x06
 154 #define MAC_REG_CRC_128_2   0x08
 155 #define MAC_REG_CRC_128_3   0x0A
 156 
 157 /* MAC Configuration Group */
 158 #define MAC_REG_PAR0        0x0C
 159 #define MAC_REG_PAR4        0x10
 160 #define MAC_REG_BSSID0      0x14
 161 #define MAC_REG_BSSID4      0x18
 162 #define MAC_REG_MAR0        0x1C
 163 #define MAC_REG_MAR4        0x20
 164 
 165 /* MAC RSPPKT INFO Group */
 166 #define MAC_REG_RSPINF_B_1  0x24
 167 #define MAC_REG_RSPINF_B_2  0x28
 168 #define MAC_REG_RSPINF_B_5  0x2C
 169 #define MAC_REG_RSPINF_B_11 0x30
 170 #define MAC_REG_RSPINF_A_6  0x34
 171 #define MAC_REG_RSPINF_A_9  0x36
 172 #define MAC_REG_RSPINF_A_12 0x38
 173 #define MAC_REG_RSPINF_A_18 0x3A
 174 #define MAC_REG_RSPINF_A_24 0x3C
 175 #define MAC_REG_RSPINF_A_36 0x3E
 176 #define MAC_REG_RSPINF_A_48 0x40
 177 #define MAC_REG_RSPINF_A_54 0x42
 178 #define MAC_REG_RSPINF_A_72 0x44
 179 
 180 /* 802.11h relative */
 181 #define MAC_REG_QUIETINIT   0x60
 182 #define MAC_REG_QUIETGAP    0x62
 183 #define MAC_REG_QUIETDUR    0x64
 184 #define MAC_REG_MSRCTL      0x66
 185 #define MAC_REG_MSRBBSTS    0x67
 186 #define MAC_REG_MSRSTART    0x68
 187 #define MAC_REG_MSRDURATION 0x70
 188 #define MAC_REG_CCAFRACTION 0x72
 189 #define MAC_REG_PWRCCK      0x73
 190 #define MAC_REG_PWROFDM     0x7C
 191 
 192 /* Bits in the BCFG0 register */
 193 #define BCFG0_PERROFF       0x40
 194 #define BCFG0_MRDMDIS       0x20
 195 #define BCFG0_MRDLDIS       0x10
 196 #define BCFG0_MWMEN         0x08
 197 #define BCFG0_VSERREN       0x02
 198 #define BCFG0_LATMEN        0x01
 199 
 200 /* Bits in the BCFG1 register */
 201 #define BCFG1_CFUNOPT       0x80
 202 #define BCFG1_CREQOPT       0x40
 203 #define BCFG1_DMA8          0x10
 204 #define BCFG1_ARBITOPT      0x08
 205 #define BCFG1_PCIMEN        0x04
 206 #define BCFG1_MIOEN         0x02
 207 #define BCFG1_CISDLYEN      0x01
 208 
 209 /* Bits in RAMBIST registers */
 210 #define BISTCMD_TSTPAT5     0x00
 211 #define BISTCMD_TSTPATA     0x80
 212 #define BISTCMD_TSTERR      0x20
 213 #define BISTCMD_TSTPATF     0x18
 214 #define BISTCMD_TSTPAT0     0x10
 215 #define BISTCMD_TSTMODE     0x04
 216 #define BISTCMD_TSTITTX     0x03
 217 #define BISTCMD_TSTATRX     0x02
 218 #define BISTCMD_TSTATTX     0x01
 219 #define BISTCMD_TSTRX       0x00
 220 #define BISTSR0_BISTGO      0x01
 221 #define BISTSR1_TSTSR       0x01
 222 #define BISTSR2_CMDPRTEN    0x02
 223 #define BISTSR2_RAMTSTEN    0x01
 224 
 225 /* Bits in the I2MCFG EEPROM register */
 226 #define I2MCFG_BOUNDCTL     0x80
 227 #define I2MCFG_WAITCTL      0x20
 228 #define I2MCFG_SCLOECTL     0x10
 229 #define I2MCFG_WBUSYCTL     0x08
 230 #define I2MCFG_NORETRY      0x04
 231 #define I2MCFG_I2MLDSEQ     0x02
 232 #define I2MCFG_I2CMFAST     0x01
 233 
 234 /* Bits in the I2MCSR EEPROM register */
 235 #define I2MCSR_EEMW         0x80
 236 #define I2MCSR_EEMR         0x40
 237 #define I2MCSR_AUTOLD       0x08
 238 #define I2MCSR_NACK         0x02
 239 #define I2MCSR_DONE         0x01
 240 
 241 /* Bits in the PMC1 register */
 242 #define SPS_RST             0x80
 243 #define PCISTIKY            0x40
 244 #define PME_OVR             0x02
 245 
 246 /* Bits in the STICKYHW register */
 247 #define STICKHW_DS1_SHADOW  0x02
 248 #define STICKHW_DS0_SHADOW  0x01
 249 
 250 /* Bits in the TMCTL register */
 251 #define TMCTL_TSUSP         0x04
 252 #define TMCTL_TMD           0x02
 253 #define TMCTL_TE            0x01
 254 
 255 /* Bits in the TFTCTL register */
 256 #define TFTCTL_HWUTSF       0x80
 257 #define TFTCTL_TBTTSYNC     0x40
 258 #define TFTCTL_HWUTSFEN     0x20
 259 #define TFTCTL_TSFCNTRRD    0x10
 260 #define TFTCTL_TBTTSYNCEN   0x08
 261 #define TFTCTL_TSFSYNCEN    0x04
 262 #define TFTCTL_TSFCNTRST    0x02
 263 #define TFTCTL_TSFCNTREN    0x01
 264 
 265 /* Bits in the EnhanceCFG register */
 266 #define EnCFG_BarkerPream   0x00020000
 267 #define EnCFG_NXTBTTCFPSTR  0x00010000
 268 #define EnCFG_BcnSusClr     0x00000200
 269 #define EnCFG_BcnSusInd     0x00000100
 270 #define EnCFG_CFP_ProtectEn 0x00000040
 271 #define EnCFG_ProtectMd     0x00000020
 272 #define EnCFG_HwParCFP      0x00000010
 273 #define EnCFG_CFNULRSP      0x00000004
 274 #define EnCFG_BBType_MASK   0x00000003
 275 #define EnCFG_BBType_g      0x00000002
 276 #define EnCFG_BBType_b      0x00000001
 277 #define EnCFG_BBType_a      0x00000000
 278 
 279 /* Bits in the Page1Sel register */
 280 #define PAGE1_SEL           0x01
 281 
 282 /* Bits in the CFG register */
 283 #define CFG_TKIPOPT         0x80
 284 #define CFG_RXDMAOPT        0x40
 285 #define CFG_TMOT_SW         0x20
 286 #define CFG_TMOT_HWLONG     0x10
 287 #define CFG_TMOT_HW         0x00
 288 #define CFG_CFPENDOPT       0x08
 289 #define CFG_BCNSUSEN        0x04
 290 #define CFG_NOTXTIMEOUT     0x02
 291 #define CFG_NOBUFOPT        0x01
 292 
 293 /* Bits in the TEST register */
 294 #define TEST_LBEXT          0x80
 295 #define TEST_LBINT          0x40
 296 #define TEST_LBNONE         0x00
 297 #define TEST_SOFTINT        0x20
 298 #define TEST_CONTTX         0x10
 299 #define TEST_TXPE           0x08
 300 #define TEST_NAVDIS         0x04
 301 #define TEST_NOCTS          0x02
 302 #define TEST_NOACK          0x01
 303 
 304 /* Bits in the HOSTCR register */
 305 #define HOSTCR_TXONST       0x80
 306 #define HOSTCR_RXONST       0x40
 307 #define HOSTCR_ADHOC        0x20 /* Network Type 1 = Ad-hoc */
 308 #define HOSTCR_AP           0x10 /* Port Type 1 = AP */
 309 #define HOSTCR_TXON         0x08 /* 0000 1000 */
 310 #define HOSTCR_RXON         0x04 /* 0000 0100 */
 311 #define HOSTCR_MACEN        0x02 /* 0000 0010 */
 312 #define HOSTCR_SOFTRST      0x01 /* 0000 0001 */
 313 
 314 /* Bits in the MACCR register */
 315 #define MACCR_SYNCFLUSHOK   0x04
 316 #define MACCR_SYNCFLUSH     0x02
 317 #define MACCR_CLRNAV        0x01
 318 
 319 /* Bits in the MAC_REG_GPIOCTL0 register */
 320 #define LED_ACTSET           0x01
 321 #define LED_RFOFF            0x02
 322 #define LED_NOCONNECT        0x04
 323 
 324 /* Bits in the RCR register */
 325 #define RCR_SSID            0x80
 326 #define RCR_RXALLTYPE       0x40
 327 #define RCR_UNICAST         0x20
 328 #define RCR_BROADCAST       0x10
 329 #define RCR_MULTICAST       0x08
 330 #define RCR_WPAERR          0x04
 331 #define RCR_ERRCRC          0x02
 332 #define RCR_BSSID           0x01
 333 
 334 /* Bits in the TCR register */
 335 #define TCR_SYNCDCFOPT      0x02
 336 #define TCR_AUTOBCNTX       0x01 /* Beacon automatically transmit enable */
 337 
 338 /* Bits in the IMR register */
 339 #define IMR_MEASURESTART    0x80000000
 340 #define IMR_QUIETSTART      0x20000000
 341 #define IMR_RADARDETECT     0x10000000
 342 #define IMR_MEASUREEND      0x08000000
 343 #define IMR_SOFTTIMER1      0x00200000
 344 #define IMR_RXDMA1          0x00001000 /* 0000 0000 0001 0000 0000 0000 */
 345 #define IMR_RXNOBUF         0x00000800
 346 #define IMR_MIBNEARFULL     0x00000400
 347 #define IMR_SOFTINT         0x00000200
 348 #define IMR_FETALERR        0x00000100
 349 #define IMR_WATCHDOG        0x00000080
 350 #define IMR_SOFTTIMER       0x00000040
 351 #define IMR_GPIO            0x00000020
 352 #define IMR_TBTT            0x00000010
 353 #define IMR_RXDMA0          0x00000008
 354 #define IMR_BNTX            0x00000004
 355 #define IMR_AC0DMA          0x00000002
 356 #define IMR_TXDMA0          0x00000001
 357 
 358 /* Bits in the ISR register */
 359 #define ISR_MEASURESTART    0x80000000
 360 #define ISR_QUIETSTART      0x20000000
 361 #define ISR_RADARDETECT     0x10000000
 362 #define ISR_MEASUREEND      0x08000000
 363 #define ISR_SOFTTIMER1      0x00200000
 364 #define ISR_RXDMA1          0x00001000 /* 0000 0000 0001 0000 0000 0000 */
 365 #define ISR_RXNOBUF         0x00000800 /* 0000 0000 0000 1000 0000 0000 */
 366 #define ISR_MIBNEARFULL     0x00000400 /* 0000 0000 0000 0100 0000 0000 */
 367 #define ISR_SOFTINT         0x00000200
 368 #define ISR_FETALERR        0x00000100
 369 #define ISR_WATCHDOG        0x00000080
 370 #define ISR_SOFTTIMER       0x00000040
 371 #define ISR_GPIO            0x00000020
 372 #define ISR_TBTT            0x00000010
 373 #define ISR_RXDMA0          0x00000008
 374 #define ISR_BNTX            0x00000004
 375 #define ISR_AC0DMA          0x00000002
 376 #define ISR_TXDMA0          0x00000001
 377 
 378 /* Bits in the PSCFG register */
 379 #define PSCFG_PHILIPMD      0x40
 380 #define PSCFG_WAKECALEN     0x20
 381 #define PSCFG_WAKETMREN     0x10
 382 #define PSCFG_BBPSPROG      0x08
 383 #define PSCFG_WAKESYN       0x04
 384 #define PSCFG_SLEEPSYN      0x02
 385 #define PSCFG_AUTOSLEEP     0x01
 386 
 387 /* Bits in the PSCTL register */
 388 #define PSCTL_WAKEDONE      0x20
 389 #define PSCTL_PS            0x10
 390 #define PSCTL_GO2DOZE       0x08
 391 #define PSCTL_LNBCN         0x04
 392 #define PSCTL_ALBCN         0x02
 393 #define PSCTL_PSEN          0x01
 394 
 395 /* Bits in the PSPWSIG register */
 396 #define PSSIG_WPE3          0x80
 397 #define PSSIG_WPE2          0x40
 398 #define PSSIG_WPE1          0x20
 399 #define PSSIG_WRADIOPE      0x10
 400 #define PSSIG_SPE3          0x08
 401 #define PSSIG_SPE2          0x04
 402 #define PSSIG_SPE1          0x02
 403 #define PSSIG_SRADIOPE      0x01
 404 
 405 /* Bits in the BBREGCTL register */
 406 #define BBREGCTL_DONE       0x04
 407 #define BBREGCTL_REGR       0x02
 408 #define BBREGCTL_REGW       0x01
 409 
 410 /* Bits in the IFREGCTL register */
 411 #define IFREGCTL_DONE       0x04
 412 #define IFREGCTL_IFRF       0x02
 413 #define IFREGCTL_REGW       0x01
 414 
 415 /* Bits in the SOFTPWRCTL register */
 416 #define SOFTPWRCTL_RFLEOPT      0x0800
 417 #define SOFTPWRCTL_TXPEINV      0x0200
 418 #define SOFTPWRCTL_SWPECTI      0x0100
 419 #define SOFTPWRCTL_SWPAPE       0x0020
 420 #define SOFTPWRCTL_SWCALEN      0x0010
 421 #define SOFTPWRCTL_SWRADIO_PE   0x0008
 422 #define SOFTPWRCTL_SWPE2        0x0004
 423 #define SOFTPWRCTL_SWPE1        0x0002
 424 #define SOFTPWRCTL_SWPE3        0x0001
 425 
 426 /* Bits in the GPIOCTL1 register */
 427 #define GPIO1_DATA1             0x20
 428 #define GPIO1_MD1               0x10
 429 #define GPIO1_DATA0             0x02
 430 #define GPIO1_MD0               0x01
 431 
 432 /* Bits in the DMACTL register */
 433 #define DMACTL_CLRRUN       0x00080000
 434 #define DMACTL_RUN          0x00000008
 435 #define DMACTL_WAKE         0x00000004
 436 #define DMACTL_DEAD         0x00000002
 437 #define DMACTL_ACTIVE       0x00000001
 438 
 439 /* Bits in the RXDMACTL0 register */
 440 #define RX_PERPKT           0x00000100
 441 #define RX_PERPKTCLR        0x01000000
 442 
 443 /* Bits in the BCNDMACTL register */
 444 #define BEACON_READY        0x01
 445 
 446 /* Bits in the MISCFFCTL register */
 447 #define MISCFFCTL_WRITE     0x0001
 448 
 449 /* Bits in WAKEUPEN0 */
 450 #define WAKEUPEN0_DIRPKT    0x10
 451 #define WAKEUPEN0_LINKOFF   0x08
 452 #define WAKEUPEN0_ATIMEN    0x04
 453 #define WAKEUPEN0_TIMEN     0x02
 454 #define WAKEUPEN0_MAGICEN   0x01
 455 
 456 /* Bits in WAKEUPEN1 */
 457 #define WAKEUPEN1_128_3     0x08
 458 #define WAKEUPEN1_128_2     0x04
 459 #define WAKEUPEN1_128_1     0x02
 460 #define WAKEUPEN1_128_0     0x01
 461 
 462 /* Bits in WAKEUPSR0 */
 463 #define WAKEUPSR0_DIRPKT    0x10
 464 #define WAKEUPSR0_LINKOFF   0x08
 465 #define WAKEUPSR0_ATIMEN    0x04
 466 #define WAKEUPSR0_TIMEN     0x02
 467 #define WAKEUPSR0_MAGICEN   0x01
 468 
 469 /* Bits in WAKEUPSR1 */
 470 #define WAKEUPSR1_128_3     0x08
 471 #define WAKEUPSR1_128_2     0x04
 472 #define WAKEUPSR1_128_1     0x02
 473 #define WAKEUPSR1_128_0     0x01
 474 
 475 /* Bits in the MAC_REG_GPIOCTL register */
 476 #define GPIO0_MD            0x01
 477 #define GPIO0_DATA          0x02
 478 #define GPIO0_INTMD         0x04
 479 #define GPIO1_MD            0x10
 480 #define GPIO1_DATA          0x20
 481 
 482 /* Bits in the MSRCTL register */
 483 #define MSRCTL_FINISH       0x80
 484 #define MSRCTL_READY        0x40
 485 #define MSRCTL_RADARDETECT  0x20
 486 #define MSRCTL_EN           0x10
 487 #define MSRCTL_QUIETTXCHK   0x08
 488 #define MSRCTL_QUIETRPT     0x04
 489 #define MSRCTL_QUIETINT     0x02
 490 #define MSRCTL_QUIETEN      0x01
 491 
 492 /* Bits in the MSRCTL1 register */
 493 #define MSRCTL1_TXPWR       0x08
 494 #define MSRCTL1_CSAPAREN    0x04
 495 #define MSRCTL1_TXPAUSE     0x01
 496 
 497 /* Loopback mode */
 498 #define MAC_LB_EXT          0x02
 499 #define MAC_LB_INTERNAL     0x01
 500 #define MAC_LB_NONE         0x00
 501 
 502 #define Default_BI              0x200
 503 
 504 /* MiscFIFO Offset */
 505 #define MISCFIFO_KEYETRY0       32
 506 #define MISCFIFO_KEYENTRYSIZE   22
 507 #define MISCFIFO_SYNINFO_IDX    10
 508 #define MISCFIFO_SYNDATA_IDX    11
 509 #define MISCFIFO_SYNDATASIZE    21
 510 
 511 /* enabled mask value of irq */
 512 #define IMR_MASK_VALUE     (IMR_SOFTTIMER1 |    \
 513                             IMR_RXDMA1 |        \
 514                             IMR_RXNOBUF |       \
 515                             IMR_MIBNEARFULL |   \
 516                             IMR_SOFTINT |       \
 517                             IMR_FETALERR |      \
 518                             IMR_WATCHDOG |      \
 519                             IMR_SOFTTIMER |     \
 520                             IMR_GPIO |          \
 521                             IMR_TBTT |          \
 522                             IMR_RXDMA0 |        \
 523                             IMR_BNTX |          \
 524                             IMR_AC0DMA |        \
 525                             IMR_TXDMA0)
 526 
 527 /* max time out delay time */
 528 #define W_MAX_TIMEOUT       0xFFF0U
 529 
 530 /* wait time within loop */
 531 #define CB_DELAY_LOOP_WAIT  10 /* 10ms */
 532 
 533 /* revision id */
 534 #define REV_ID_VT3253_A0    0x00
 535 #define REV_ID_VT3253_A1    0x01
 536 #define REV_ID_VT3253_B0    0x08
 537 #define REV_ID_VT3253_B1    0x09
 538 
 539 /*---------------------  Export Types  ------------------------------*/
 540 
 541 /*---------------------  Export Macros ------------------------------*/
 542 
 543 #define MACvRegBitsOn(iobase, byRegOfs, byBits)                 \
 544 do {                                                                    \
 545         unsigned char byData;                                           \
 546         VNSvInPortB(iobase + byRegOfs, &byData);                        \
 547         VNSvOutPortB(iobase + byRegOfs, byData | (byBits));             \
 548 } while (0)
 549 
 550 #define MACvWordRegBitsOn(iobase, byRegOfs, wBits)                      \
 551 do {                                                                    \
 552         unsigned short wData;                                           \
 553         VNSvInPortW(iobase + byRegOfs, &wData);                 \
 554         VNSvOutPortW(iobase + byRegOfs, wData | (wBits));               \
 555 } while (0)
 556 
 557 #define MACvDWordRegBitsOn(iobase, byRegOfs, dwBits)                    \
 558 do {                                                                    \
 559         unsigned long dwData;                                           \
 560         VNSvInPortD(iobase + byRegOfs, &dwData);                        \
 561         VNSvOutPortD(iobase + byRegOfs, dwData | (dwBits));             \
 562 } while (0)
 563 
 564 #define MACvRegBitsOnEx(iobase, byRegOfs, byMask, byBits)               \
 565 do {                                                                    \
 566         unsigned char byData;                                           \
 567         VNSvInPortB(iobase + byRegOfs, &byData);                        \
 568         byData &= byMask;                                               \
 569         VNSvOutPortB(iobase + byRegOfs, byData | (byBits));             \
 570 } while (0)
 571 
 572 #define MACvRegBitsOff(iobase, byRegOfs, byBits)                        \
 573 do {                                                                    \
 574         unsigned char byData;                                           \
 575         VNSvInPortB(iobase + byRegOfs, &byData);                        \
 576         VNSvOutPortB(iobase + byRegOfs, byData & ~(byBits));            \
 577 } while (0)
 578 
 579 #define MACvWordRegBitsOff(iobase, byRegOfs, wBits)                     \
 580 do {                                                                    \
 581         unsigned short wData;                                           \
 582         VNSvInPortW(iobase + byRegOfs, &wData);                 \
 583         VNSvOutPortW(iobase + byRegOfs, wData & ~(wBits));              \
 584 } while (0)
 585 
 586 #define MACvDWordRegBitsOff(iobase, byRegOfs, dwBits)                   \
 587 do {                                                                    \
 588         unsigned long dwData;                                           \
 589         VNSvInPortD(iobase + byRegOfs, &dwData);                        \
 590         VNSvOutPortD(iobase + byRegOfs, dwData & ~(dwBits));            \
 591 } while (0)
 592 
 593 #define MACvGetCurrRx0DescAddr(iobase, pdwCurrDescAddr) \
 594         VNSvInPortD(iobase + MAC_REG_RXDMAPTR0,         \
 595                     (unsigned long *)pdwCurrDescAddr)
 596 
 597 #define MACvGetCurrRx1DescAddr(iobase, pdwCurrDescAddr) \
 598         VNSvInPortD(iobase + MAC_REG_RXDMAPTR1,         \
 599                     (unsigned long *)pdwCurrDescAddr)
 600 
 601 #define MACvGetCurrTx0DescAddr(iobase, pdwCurrDescAddr) \
 602         VNSvInPortD(iobase + MAC_REG_TXDMAPTR0,         \
 603                     (unsigned long *)pdwCurrDescAddr)
 604 
 605 #define MACvGetCurrAC0DescAddr(iobase, pdwCurrDescAddr) \
 606         VNSvInPortD(iobase + MAC_REG_AC0DMAPTR,         \
 607                     (unsigned long *)pdwCurrDescAddr)
 608 
 609 #define MACvGetCurrSyncDescAddr(iobase, pdwCurrDescAddr)        \
 610         VNSvInPortD(iobase + MAC_REG_SYNCDMAPTR,                \
 611                     (unsigned long *)pdwCurrDescAddr)
 612 
 613 #define MACvGetCurrATIMDescAddr(iobase, pdwCurrDescAddr)        \
 614         VNSvInPortD(iobase + MAC_REG_ATIMDMAPTR,                \
 615                     (unsigned long *)pdwCurrDescAddr)
 616 
 617 /* set the chip with current BCN tx descriptor address */
 618 #define MACvSetCurrBCNTxDescAddr(iobase, dwCurrDescAddr)        \
 619         VNSvOutPortD(iobase + MAC_REG_BCNDMAPTR,                \
 620                      dwCurrDescAddr)
 621 
 622 /* set the chip with current BCN length */
 623 #define MACvSetCurrBCNLength(iobase, wCurrBCNLength)            \
 624         VNSvOutPortW(iobase + MAC_REG_BCNDMACTL+2,              \
 625                      wCurrBCNLength)
 626 
 627 #define MACvReadBSSIDAddress(iobase, pbyEtherAddr)              \
 628 do {                                                            \
 629         VNSvOutPortB(iobase + MAC_REG_PAGE1SEL, 1);             \
 630         VNSvInPortB(iobase + MAC_REG_BSSID0,                    \
 631                     (unsigned char *)pbyEtherAddr);             \
 632         VNSvInPortB(iobase + MAC_REG_BSSID0 + 1,                \
 633                     pbyEtherAddr + 1);                          \
 634         VNSvInPortB(iobase + MAC_REG_BSSID0 + 2,                \
 635                     pbyEtherAddr + 2);                          \
 636         VNSvInPortB(iobase + MAC_REG_BSSID0 + 3,                \
 637                     pbyEtherAddr + 3);                          \
 638         VNSvInPortB(iobase + MAC_REG_BSSID0 + 4,                \
 639                     pbyEtherAddr + 4);                          \
 640         VNSvInPortB(iobase + MAC_REG_BSSID0 + 5,                \
 641                     pbyEtherAddr + 5);                          \
 642         VNSvOutPortB(iobase + MAC_REG_PAGE1SEL, 0);             \
 643 } while (0)
 644 
 645 #define MACvWriteBSSIDAddress(iobase, pbyEtherAddr)             \
 646 do {                                                            \
 647         VNSvOutPortB(iobase + MAC_REG_PAGE1SEL, 1);             \
 648         VNSvOutPortB(iobase + MAC_REG_BSSID0,                   \
 649                      *(pbyEtherAddr));                          \
 650         VNSvOutPortB(iobase + MAC_REG_BSSID0 + 1,               \
 651                      *(pbyEtherAddr + 1));                      \
 652         VNSvOutPortB(iobase + MAC_REG_BSSID0 + 2,               \
 653                      *(pbyEtherAddr + 2));                      \
 654         VNSvOutPortB(iobase + MAC_REG_BSSID0 + 3,               \
 655                      *(pbyEtherAddr + 3));                      \
 656         VNSvOutPortB(iobase + MAC_REG_BSSID0 + 4,               \
 657                      *(pbyEtherAddr + 4));                      \
 658         VNSvOutPortB(iobase + MAC_REG_BSSID0 + 5,               \
 659                      *(pbyEtherAddr + 5));                      \
 660         VNSvOutPortB(iobase + MAC_REG_PAGE1SEL, 0);             \
 661 } while (0)
 662 
 663 #define MACvReadEtherAddress(iobase, pbyEtherAddr)              \
 664 do {                                                            \
 665         VNSvOutPortB(iobase + MAC_REG_PAGE1SEL, 1);             \
 666         VNSvInPortB(iobase + MAC_REG_PAR0,                      \
 667                     (unsigned char *)pbyEtherAddr);             \
 668         VNSvInPortB(iobase + MAC_REG_PAR0 + 1,          \
 669                     pbyEtherAddr + 1);                          \
 670         VNSvInPortB(iobase + MAC_REG_PAR0 + 2,          \
 671                     pbyEtherAddr + 2);                          \
 672         VNSvInPortB(iobase + MAC_REG_PAR0 + 3,          \
 673                     pbyEtherAddr + 3);                          \
 674         VNSvInPortB(iobase + MAC_REG_PAR0 + 4,          \
 675                     pbyEtherAddr + 4);                          \
 676         VNSvInPortB(iobase + MAC_REG_PAR0 + 5,          \
 677                     pbyEtherAddr + 5);                          \
 678         VNSvOutPortB(iobase + MAC_REG_PAGE1SEL, 0);             \
 679 } while (0)
 680 
 681 #define MACvWriteEtherAddress(iobase, pbyEtherAddr)             \
 682 do {                                                            \
 683         VNSvOutPortB(iobase + MAC_REG_PAGE1SEL, 1);             \
 684         VNSvOutPortB(iobase + MAC_REG_PAR0,                     \
 685                      *pbyEtherAddr);                            \
 686         VNSvOutPortB(iobase + MAC_REG_PAR0 + 1,         \
 687                      *(pbyEtherAddr + 1));                      \
 688         VNSvOutPortB(iobase + MAC_REG_PAR0 + 2,         \
 689                      *(pbyEtherAddr + 2));                      \
 690         VNSvOutPortB(iobase + MAC_REG_PAR0 + 3,         \
 691                      *(pbyEtherAddr + 3));                      \
 692         VNSvOutPortB(iobase + MAC_REG_PAR0 + 4,         \
 693                      *(pbyEtherAddr + 4));                      \
 694         VNSvOutPortB(iobase + MAC_REG_PAR0 + 5,         \
 695                      *(pbyEtherAddr + 5));                      \
 696         VNSvOutPortB(iobase + MAC_REG_PAGE1SEL, 0);             \
 697 } while (0)
 698 
 699 #define MACvClearISR(iobase)                                            \
 700         VNSvOutPortD(iobase + MAC_REG_ISR, IMR_MASK_VALUE)
 701 
 702 #define MACvStart(iobase)                                               \
 703         VNSvOutPortB(iobase + MAC_REG_HOSTCR,                           \
 704                      (HOSTCR_MACEN | HOSTCR_RXON | HOSTCR_TXON))
 705 
 706 #define MACvRx0PerPktMode(iobase)                                       \
 707         VNSvOutPortD(iobase + MAC_REG_RXDMACTL0, RX_PERPKT)
 708 
 709 #define MACvRx0BufferFillMode(iobase)                                   \
 710         VNSvOutPortD(iobase + MAC_REG_RXDMACTL0, RX_PERPKTCLR)
 711 
 712 #define MACvRx1PerPktMode(iobase)                                       \
 713         VNSvOutPortD(iobase + MAC_REG_RXDMACTL1, RX_PERPKT)
 714 
 715 #define MACvRx1BufferFillMode(iobase)                                   \
 716         VNSvOutPortD(iobase + MAC_REG_RXDMACTL1, RX_PERPKTCLR)
 717 
 718 #define MACvRxOn(iobase)                                                \
 719         MACvRegBitsOn(iobase, MAC_REG_HOSTCR, HOSTCR_RXON)
 720 
 721 #define MACvReceive0(iobase)                                            \
 722 do {                                                                    \
 723         unsigned long dwData;                                           \
 724         VNSvInPortD(iobase + MAC_REG_RXDMACTL0, &dwData);               \
 725         if (dwData & DMACTL_RUN)                                        \
 726                 VNSvOutPortD(iobase + MAC_REG_RXDMACTL0, DMACTL_WAKE); \
 727         else                                                            \
 728                 VNSvOutPortD(iobase + MAC_REG_RXDMACTL0, DMACTL_RUN); \
 729 } while (0)
 730 
 731 #define MACvReceive1(iobase)                                            \
 732 do {                                                                    \
 733         unsigned long dwData;                                           \
 734         VNSvInPortD(iobase + MAC_REG_RXDMACTL1, &dwData);               \
 735         if (dwData & DMACTL_RUN)                                        \
 736                 VNSvOutPortD(iobase + MAC_REG_RXDMACTL1, DMACTL_WAKE); \
 737         else                                                            \
 738                 VNSvOutPortD(iobase + MAC_REG_RXDMACTL1, DMACTL_RUN); \
 739 } while (0)
 740 
 741 #define MACvTxOn(iobase)                                                \
 742         MACvRegBitsOn(iobase, MAC_REG_HOSTCR, HOSTCR_TXON)
 743 
 744 #define MACvTransmit0(iobase)                                           \
 745 do {                                                                    \
 746         unsigned long dwData;                                           \
 747         VNSvInPortD(iobase + MAC_REG_TXDMACTL0, &dwData);               \
 748         if (dwData & DMACTL_RUN)                                        \
 749                 VNSvOutPortD(iobase + MAC_REG_TXDMACTL0, DMACTL_WAKE); \
 750         else                                                            \
 751                 VNSvOutPortD(iobase + MAC_REG_TXDMACTL0, DMACTL_RUN); \
 752 } while (0)
 753 
 754 #define MACvTransmitAC0(iobase)                                 \
 755 do {                                                                    \
 756         unsigned long dwData;                                           \
 757         VNSvInPortD(iobase + MAC_REG_AC0DMACTL, &dwData);               \
 758         if (dwData & DMACTL_RUN)                                        \
 759                 VNSvOutPortD(iobase + MAC_REG_AC0DMACTL, DMACTL_WAKE); \
 760         else                                                            \
 761                 VNSvOutPortD(iobase + MAC_REG_AC0DMACTL, DMACTL_RUN); \
 762 } while (0)
 763 
 764 #define MACvTransmitSYNC(iobase)                                        \
 765 do {                                                                    \
 766         unsigned long dwData;                                           \
 767         VNSvInPortD(iobase + MAC_REG_SYNCDMACTL, &dwData);              \
 768         if (dwData & DMACTL_RUN)                                        \
 769                 VNSvOutPortD(iobase + MAC_REG_SYNCDMACTL, DMACTL_WAKE); \
 770         else                                                            \
 771                 VNSvOutPortD(iobase + MAC_REG_SYNCDMACTL, DMACTL_RUN); \
 772 } while (0)
 773 
 774 #define MACvTransmitATIM(iobase)                                        \
 775 do {                                                                    \
 776         unsigned long dwData;                                           \
 777         VNSvInPortD(iobase + MAC_REG_ATIMDMACTL, &dwData);              \
 778         if (dwData & DMACTL_RUN)                                        \
 779                 VNSvOutPortD(iobase + MAC_REG_ATIMDMACTL, DMACTL_WAKE); \
 780         else                                                            \
 781                 VNSvOutPortD(iobase + MAC_REG_ATIMDMACTL, DMACTL_RUN); \
 782 } while (0)
 783 
 784 #define MACvTransmitBCN(iobase)                                 \
 785         VNSvOutPortB(iobase + MAC_REG_BCNDMACTL, BEACON_READY)
 786 
 787 #define MACvClearStckDS(iobase)                                 \
 788 do {                                                                    \
 789         unsigned char byOrgValue;                                       \
 790         VNSvInPortB(iobase + MAC_REG_STICKHW, &byOrgValue);             \
 791         byOrgValue = byOrgValue & 0xFC;                                 \
 792         VNSvOutPortB(iobase + MAC_REG_STICKHW, byOrgValue);             \
 793 } while (0)
 794 
 795 #define MACvReadISR(iobase, pdwValue)                           \
 796         VNSvInPortD(iobase + MAC_REG_ISR, pdwValue)
 797 
 798 #define MACvWriteISR(iobase, dwValue)                           \
 799         VNSvOutPortD(iobase + MAC_REG_ISR, dwValue)
 800 
 801 #define MACvIntEnable(iobase, dwMask)                           \
 802         VNSvOutPortD(iobase + MAC_REG_IMR, dwMask)
 803 
 804 #define MACvIntDisable(iobase)                          \
 805         VNSvOutPortD(iobase + MAC_REG_IMR, 0)
 806 
 807 #define MACvSelectPage0(iobase)                         \
 808                 VNSvOutPortB(iobase + MAC_REG_PAGE1SEL, 0)
 809 
 810 #define MACvSelectPage1(iobase)                         \
 811         VNSvOutPortB(iobase + MAC_REG_PAGE1SEL, 1)
 812 
 813 #define MACvReadMIBCounter(iobase, pdwCounter)                  \
 814         VNSvInPortD(iobase + MAC_REG_MIBCNTR, pdwCounter)
 815 
 816 #define MACvPwrEvntDisable(iobase)                                      \
 817         VNSvOutPortW(iobase + MAC_REG_WAKEUPEN0, 0x0000)
 818 
 819 #define MACvEnableProtectMD(iobase)                                     \
 820 do {                                                                    \
 821         unsigned long dwOrgValue;                                       \
 822         VNSvInPortD(iobase + MAC_REG_ENCFG, &dwOrgValue);               \
 823         dwOrgValue = dwOrgValue | EnCFG_ProtectMd;                      \
 824         VNSvOutPortD(iobase + MAC_REG_ENCFG, dwOrgValue);               \
 825 } while (0)
 826 
 827 #define MACvDisableProtectMD(iobase)                                    \
 828 do {                                                                    \
 829         unsigned long dwOrgValue;                                       \
 830         VNSvInPortD(iobase + MAC_REG_ENCFG, &dwOrgValue);               \
 831         dwOrgValue = dwOrgValue & ~EnCFG_ProtectMd;                     \
 832         VNSvOutPortD(iobase + MAC_REG_ENCFG, dwOrgValue);               \
 833 } while (0)
 834 
 835 #define MACvEnableBarkerPreambleMd(iobase)                              \
 836 do {                                                                    \
 837         unsigned long dwOrgValue;                                       \
 838         VNSvInPortD(iobase + MAC_REG_ENCFG, &dwOrgValue);               \
 839         dwOrgValue = dwOrgValue | EnCFG_BarkerPream;                    \
 840         VNSvOutPortD(iobase + MAC_REG_ENCFG, dwOrgValue);               \
 841 } while (0)
 842 
 843 #define MACvDisableBarkerPreambleMd(iobase)                             \
 844 do {                                                                    \
 845         unsigned long dwOrgValue;                                       \
 846         VNSvInPortD(iobase + MAC_REG_ENCFG, &dwOrgValue);               \
 847         dwOrgValue = dwOrgValue & ~EnCFG_BarkerPream;                   \
 848         VNSvOutPortD(iobase + MAC_REG_ENCFG, dwOrgValue);               \
 849 } while (0)
 850 
 851 #define MACvSetBBType(iobase, byTyp)                                    \
 852 do {                                                                    \
 853         unsigned long dwOrgValue;                                       \
 854         VNSvInPortD(iobase + MAC_REG_ENCFG, &dwOrgValue);               \
 855         dwOrgValue = dwOrgValue & ~EnCFG_BBType_MASK;                   \
 856         dwOrgValue = dwOrgValue | (unsigned long)byTyp;                 \
 857         VNSvOutPortD(iobase + MAC_REG_ENCFG, dwOrgValue);               \
 858 } while (0)
 859 
 860 #define MACvReadATIMW(iobase, pwCounter)                                \
 861         VNSvInPortW(iobase + MAC_REG_AIDATIM, pwCounter)
 862 
 863 #define MACvWriteATIMW(iobase, wCounter)                                \
 864         VNSvOutPortW(iobase + MAC_REG_AIDATIM, wCounter)
 865 
 866 #define MACvWriteCRC16_128(iobase, byRegOfs, wCRC)              \
 867 do {                                                            \
 868         VNSvOutPortB(iobase + MAC_REG_PAGE1SEL, 1);             \
 869         VNSvOutPortW(iobase + byRegOfs, wCRC);          \
 870         VNSvOutPortB(iobase + MAC_REG_PAGE1SEL, 0);             \
 871 } while (0)
 872 
 873 #define MACvGPIOIn(iobase, pbyValue)                                    \
 874         VNSvInPortB(iobase + MAC_REG_GPIOCTL1, pbyValue)
 875 
 876 #define MACvSetRFLE_LatchBase(iobase)                                 \
 877         MACvWordRegBitsOn(iobase, MAC_REG_SOFTPWRCTL, SOFTPWRCTL_RFLEOPT)
 878 
 879 bool MACbIsRegBitsOff(struct vnt_private *priv, unsigned char byRegOfs,
 880                       unsigned char byTestBits);
 881 
 882 bool MACbIsIntDisable(struct vnt_private *priv);
 883 
 884 void MACvSetShortRetryLimit(struct vnt_private *priv,
 885                             unsigned char byRetryLimit);
 886 
 887 void MACvSetLongRetryLimit(struct vnt_private *priv, unsigned char byRetryLimit);
 888 
 889 void MACvSetLoopbackMode(struct vnt_private *priv, unsigned char byLoopbackMode);
 890 
 891 void MACvSaveContext(struct vnt_private *priv, unsigned char *pbyCxtBuf);
 892 void MACvRestoreContext(struct vnt_private *priv, unsigned char *pbyCxtBuf);
 893 
 894 bool MACbSoftwareReset(struct vnt_private *priv);
 895 bool MACbSafeSoftwareReset(struct vnt_private *priv);
 896 bool MACbSafeRxOff(struct vnt_private *priv);
 897 bool MACbSafeTxOff(struct vnt_private *priv);
 898 bool MACbSafeStop(struct vnt_private *priv);
 899 bool MACbShutdown(struct vnt_private *priv);
 900 void MACvInitialize(struct vnt_private *priv);
 901 void MACvSetCurrRx0DescAddr(struct vnt_private *priv,
 902                             u32 curr_desc_addr);
 903 void MACvSetCurrRx1DescAddr(struct vnt_private *priv,
 904                             u32 curr_desc_addr);
 905 void MACvSetCurrTXDescAddr(int iTxType, struct vnt_private *priv,
 906                            u32 curr_desc_addr);
 907 void MACvSetCurrTx0DescAddrEx(struct vnt_private *priv,
 908                               u32 curr_desc_addr);
 909 void MACvSetCurrAC0DescAddrEx(struct vnt_private *priv,
 910                               u32 curr_desc_addr);
 911 void MACvSetCurrSyncDescAddrEx(struct vnt_private *priv,
 912                                u32 curr_desc_addr);
 913 void MACvSetCurrATIMDescAddrEx(struct vnt_private *priv,
 914                                u32 curr_desc_addr);
 915 void MACvTimer0MicroSDelay(struct vnt_private *priv, unsigned int uDelay);
 916 void MACvOneShotTimer1MicroSec(struct vnt_private *priv, unsigned int uDelayTime);
 917 
 918 void MACvSetMISCFifo(struct vnt_private *priv, unsigned short wOffset,
 919                      u32 dwData);
 920 
 921 bool MACbPSWakeup(struct vnt_private *priv);
 922 
 923 void MACvSetKeyEntry(struct vnt_private *priv, unsigned short wKeyCtl,
 924                      unsigned int uEntryIdx, unsigned int uKeyIdx,
 925                      unsigned char *pbyAddr, u32 *pdwKey,
 926                      unsigned char byLocalID);
 927 void MACvDisableKeyEntry(struct vnt_private *priv, unsigned int uEntryIdx);
 928 
 929 #endif /* __MAC_H__ */

/* [<][>][^][v][top][bottom][index][help] */