Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 | /* SPDX-License-Identifier: GPL-2.0+ */ /* * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc. * All rights reserved. * * Purpose: MAC routines * * Author: Tevin Chen * * Date: May 21, 1996 * * Revision History: * 07-01-2003 Bryan YC Fan: Re-write codes to support VT3253 spec. * 08-25-2003 Kyle Hsu: Porting MAC functions from sim53. * 09-03-2003 Bryan YC Fan: Add MACvDisableProtectMD & MACvEnableProtectMD */ #ifndef __MAC_H__ #define __MAC_H__ #include <linux/bits.h> #include "device.h" #define REV_ID_VT3253_A0 0x00 #define REV_ID_VT3253_A1 0x01 #define REV_ID_VT3253_B0 0x08 #define REV_ID_VT3253_B1 0x09 /* Registers in the MAC */ #define MAC_REG_BISTCMD 0x04 #define MAC_REG_BISTSR0 0x05 #define MAC_REG_BISTSR1 0x06 #define MAC_REG_BISTSR2 0x07 #define MAC_REG_I2MCSR 0x08 #define MAC_REG_I2MTGID 0x09 #define MAC_REG_I2MTGAD 0x0a #define MAC_REG_I2MCFG 0x0b #define MAC_REG_I2MDIPT 0x0c #define MAC_REG_I2MDOPT 0x0e #define MAC_REG_USBSUS 0x0f #define MAC_REG_LOCALID 0x14 #define MAC_REG_TESTCFG 0x15 #define MAC_REG_JUMPER0 0x16 #define MAC_REG_JUMPER1 0x17 #define MAC_REG_TMCTL 0x18 #define MAC_REG_TMDATA0 0x1c #define MAC_REG_TMDATA1 0x1d #define MAC_REG_TMDATA2 0x1e #define MAC_REG_TMDATA3 0x1f /* MAC Parameter related */ #define MAC_REG_LRT 0x20 #define MAC_REG_SRT 0x21 #define MAC_REG_SIFS 0x22 #define MAC_REG_DIFS 0x23 #define MAC_REG_EIFS 0x24 #define MAC_REG_SLOT 0x25 #define MAC_REG_BI 0x26 #define MAC_REG_CWMAXMIN0 0x28 #define MAC_REG_LINKOFFTOTM 0x2a #define MAC_REG_SWTMOT 0x2b #define MAC_REG_RTSOKCNT 0x2c #define MAC_REG_RTSFAILCNT 0x2d #define MAC_REG_ACKFAILCNT 0x2e #define MAC_REG_FCSERRCNT 0x2f /* TSF Related */ #define MAC_REG_TSFCNTR 0x30 #define MAC_REG_NEXTTBTT 0x38 #define MAC_REG_TSFOFST 0x40 #define MAC_REG_TFTCTL 0x48 /* WMAC Control/Status Related */ #define MAC_REG_ENCFG0 0x4c #define MAC_REG_ENCFG1 0x4d #define MAC_REG_ENCFG2 0x4e #define MAC_REG_CFG 0x50 #define MAC_REG_TEST 0x52 #define MAC_REG_HOSTCR 0x54 #define MAC_REG_MACCR 0x55 #define MAC_REG_RCR 0x56 #define MAC_REG_TCR 0x57 #define MAC_REG_IMR 0x58 #define MAC_REG_ISR 0x5c #define MAC_REG_ISR1 0x5d /* Power Saving Related */ #define MAC_REG_PSCFG 0x60 #define MAC_REG_PSCTL 0x61 #define MAC_REG_PSPWRSIG 0x62 #define MAC_REG_BBCR13 0x63 #define MAC_REG_AIDATIM 0x64 #define MAC_REG_PWBT 0x66 #define MAC_REG_WAKEOKTMR 0x68 #define MAC_REG_CALTMR 0x69 #define MAC_REG_SYNSPACCNT 0x6a #define MAC_REG_WAKSYNOPT 0x6b /* Baseband/IF Control Group */ #define MAC_REG_BBREGCTL 0x6c #define MAC_REG_CHANNEL 0x6d #define MAC_REG_BBREGADR 0x6e #define MAC_REG_BBREGDATA 0x6f #define MAC_REG_IFREGCTL 0x70 #define MAC_REG_IFDATA 0x71 #define MAC_REG_ITRTMSET 0x74 #define MAC_REG_PAPEDELAY 0x77 #define MAC_REG_SOFTPWRCTL 0x78 #define MAC_REG_SOFTPWRCTL2 0x79 #define MAC_REG_GPIOCTL0 0x7a #define MAC_REG_GPIOCTL1 0x7b /* MiscFF PIO related */ #define MAC_REG_MISCFFNDEX 0xbc #define MAC_REG_MISCFFCTL 0xbe #define MAC_REG_MISCFFDATA 0xc0 /* MAC Configuration Group */ #define MAC_REG_PAR0 0xc4 #define MAC_REG_PAR4 0xc8 #define MAC_REG_BSSID0 0xcc #define MAC_REG_BSSID4 0xd0 #define MAC_REG_MAR0 0xd4 #define MAC_REG_MAR4 0xd8 /* MAC RSPPKT INFO Group */ #define MAC_REG_RSPINF_B_1 0xdC #define MAC_REG_RSPINF_B_2 0xe0 #define MAC_REG_RSPINF_B_5 0xe4 #define MAC_REG_RSPINF_B_11 0xe8 #define MAC_REG_RSPINF_A_6 0xec #define MAC_REG_RSPINF_A_9 0xee #define MAC_REG_RSPINF_A_12 0xf0 #define MAC_REG_RSPINF_A_18 0xf2 #define MAC_REG_RSPINF_A_24 0xf4 #define MAC_REG_RSPINF_A_36 0xf6 #define MAC_REG_RSPINF_A_48 0xf8 #define MAC_REG_RSPINF_A_54 0xfa #define MAC_REG_RSPINF_A_72 0xfc /* Bits in the I2MCFG EEPROM register */ #define I2MCFG_BOUNDCTL BIT(7) #define I2MCFG_WAITCTL BIT(5) #define I2MCFG_SCLOECTL BIT(4) #define I2MCFG_WBUSYCTL BIT(3) #define I2MCFG_NORETRY BIT(2) #define I2MCFG_I2MLDSEQ BIT(1) #define I2MCFG_I2CMFAST BIT(0) /* Bits in the I2MCSR EEPROM register */ #define I2MCSR_EEMW BIT(7) #define I2MCSR_EEMR BIT(6) #define I2MCSR_AUTOLD BIT(3) #define I2MCSR_NACK BIT(1) #define I2MCSR_DONE BIT(0) /* Bits in the TMCTL register */ #define TMCTL_TSUSP BIT(2) #define TMCTL_TMD BIT(1) #define TMCTL_TE BIT(0) /* Bits in the TFTCTL register */ #define TFTCTL_HWUTSF BIT(7) #define TFTCTL_TBTTSYNC BIT(6) #define TFTCTL_HWUTSFEN BIT(5) #define TFTCTL_TSFCNTRRD BIT(4) #define TFTCTL_TBTTSYNCEN BIT(3) #define TFTCTL_TSFSYNCEN BIT(2) #define TFTCTL_TSFCNTRST BIT(1) #define TFTCTL_TSFCNTREN BIT(0) /* Bits in the EnhanceCFG_0 register */ #define EN_CFG_BB_TYPE_A 0x00 #define EN_CFG_BB_TYPE_B BIT(0) #define EN_CFG_BB_TYPE_G BIT(1) #define EN_CFG_BB_TYPE_MASK (EN_CFG_BB_TYPE_B | EN_CFG_BB_TYPE_G) #define EN_CFG_PROTECT_MD BIT(5) /* Bits in the EnhanceCFG_1 register */ #define EN_CFG_BCN_SUS_IND BIT(0) #define EN_CFG_BCN_SUS_CLR BIT(1) /* Bits in the EnhanceCFG_2 register */ #define EN_CFG_NXTBTTCFPSTR BIT(0) #define EN_CFG_BARKER_PREAM BIT(1) #define EN_CFG_PKT_BURST_MD BIT(2) /* Bits in the CFG register */ #define CFG_TKIPOPT BIT(7) #define CFG_RXDMAOPT BIT(6) #define CFG_TMOT_SW BIT(5) #define CFG_TMOT_HWLONG BIT(4) #define CFG_TMOT_HW 0x00 #define CFG_CFPENDOPT BIT(3) #define CFG_BCNSUSEN BIT(2) #define CFG_NOTXTIMEOUT BIT(1) #define CFG_NOBUFOPT BIT(0) /* Bits in the TEST register */ #define TEST_LBEXT BIT(7) #define TEST_LBINT BIT(6) #define TEST_LBNONE 0x00 #define TEST_SOFTINT BIT(5) #define TEST_CONTTX BIT(4) #define TEST_TXPE BIT(3) #define TEST_NAVDIS BIT(2) #define TEST_NOCTS BIT(1) #define TEST_NOACK BIT(0) /* Bits in the HOSTCR register */ #define HOSTCR_TXONST BIT(7) #define HOSTCR_RXONST BIT(6) #define HOSTCR_ADHOC BIT(5) #define HOSTCR_AP BIT(4) #define HOSTCR_TXON BIT(3) #define HOSTCR_RXON BIT(2) #define HOSTCR_MACEN BIT(1) #define HOSTCR_SOFTRST BIT(0) /* Bits in the MACCR register */ #define MACCR_SYNCFLUSHOK BIT(2) #define MACCR_SYNCFLUSH BIT(1) #define MACCR_CLRNAV BIT(0) /* Bits in the RCR register */ #define RCR_SSID BIT(7) #define RCR_RXALLTYPE BIT(6) #define RCR_UNICAST BIT(5) #define RCR_BROADCAST BIT(4) #define RCR_MULTICAST BIT(3) #define RCR_WPAERR BIT(2) #define RCR_ERRCRC BIT(1) #define RCR_BSSID BIT(0) /* Bits in the TCR register */ #define TCR_SYNCDCFOPT BIT(1) #define TCR_AUTOBCNTX BIT(0) /* ISR1 */ #define ISR_GPIO3 BIT(6) #define ISR_RXNOBUF BIT(3) #define ISR_MIBNEARFULL BIT(2) #define ISR_SOFTINT BIT(1) #define ISR_FETALERR BIT(0) #define LEDSTS_STS 0x06 #define LEDSTS_TMLEN 0x78 #define LEDSTS_OFF 0x00 #define LEDSTS_ON 0x02 #define LEDSTS_SLOW 0x04 #define LEDSTS_INTER 0x06 /* ISR0 */ #define ISR_WATCHDOG BIT(7) #define ISR_SOFTTIMER BIT(6) #define ISR_GPIO0 BIT(5) #define ISR_TBTT BIT(4) #define ISR_RXDMA0 BIT(3) #define ISR_BNTX BIT(2) #define ISR_ACTX BIT(0) /* Bits in the PSCFG register */ #define PSCFG_PHILIPMD BIT(6) #define PSCFG_WAKECALEN BIT(5) #define PSCFG_WAKETMREN BIT(4) #define PSCFG_BBPSPROG BIT(3) #define PSCFG_WAKESYN BIT(2) #define PSCFG_SLEEPSYN BIT(1) #define PSCFG_AUTOSLEEP BIT(0) /* Bits in the PSCTL register */ #define PSCTL_WAKEDONE BIT(5) #define PSCTL_PS BIT(4) #define PSCTL_GO2DOZE BIT(3) #define PSCTL_LNBCN BIT(2) #define PSCTL_ALBCN BIT(1) #define PSCTL_PSEN BIT(0) /* Bits in the PSPWSIG register */ #define PSSIG_WPE3 BIT(7) #define PSSIG_WPE2 BIT(6) #define PSSIG_WPE1 BIT(5) #define PSSIG_WRADIOPE BIT(4) #define PSSIG_SPE3 BIT(3) #define PSSIG_SPE2 BIT(2) #define PSSIG_SPE1 BIT(1) #define PSSIG_SRADIOPE BIT(0) /* Bits in the BBREGCTL register */ #define BBREGCTL_DONE BIT(2) #define BBREGCTL_REGR BIT(1) #define BBREGCTL_REGW BIT(0) /* Bits in the IFREGCTL register */ #define IFREGCTL_DONE BIT(2) #define IFREGCTL_IFRF BIT(1) #define IFREGCTL_REGW BIT(0) /* Bits in the SOFTPWRCTL register */ #define SOFTPWRCTL_RFLEOPT BIT(3) #define SOFTPWRCTL_TXPEINV BIT(1) #define SOFTPWRCTL_SWPECTI BIT(0) #define SOFTPWRCTL_SWPAPE BIT(5) #define SOFTPWRCTL_SWCALEN BIT(4) #define SOFTPWRCTL_SWRADIO_PE BIT(3) #define SOFTPWRCTL_SWPE2 BIT(2) #define SOFTPWRCTL_SWPE1 BIT(1) #define SOFTPWRCTL_SWPE3 BIT(0) /* Bits in the GPIOCTL1 register */ #define GPIO3_MD BIT(5) #define GPIO3_DATA BIT(6) #define GPIO3_INTMD BIT(7) /* Bits in the MISCFFCTL register */ #define MISCFFCTL_WRITE BIT(0) /* Loopback mode */ #define MAC_LB_EXT BIT(1) #define MAC_LB_INTERNAL BIT(0) #define MAC_LB_NONE 0x00 /* Ethernet address filter type */ #define PKT_TYPE_NONE 0x00 /* turn off receiver */ #define PKT_TYPE_ALL_MULTICAST BIT(7) #define PKT_TYPE_PROMISCUOUS BIT(6) #define PKT_TYPE_DIRECTED BIT(5) /* obselete */ #define PKT_TYPE_BROADCAST BIT(4) #define PKT_TYPE_MULTICAST BIT(3) #define PKT_TYPE_ERROR_WPA BIT(2) #define PKT_TYPE_ERROR_CRC BIT(1) #define PKT_TYPE_BSSID BIT(0) #define DEFAULT_BI 0x200 /* MiscFIFO Offset */ #define MISCFIFO_KEYETRY0 32 #define MISCFIFO_KEYENTRYSIZE 22 #define MAC_REVISION_A0 0x00 #define MAC_REVISION_A1 0x01 struct vnt_mac_set_key { union { struct { u8 addr[ETH_ALEN]; __le16 key_ctl; } write __packed; u32 swap[2]; } u; u8 key[WLAN_KEY_LEN_CCMP]; } __packed; int vnt_mac_set_filter(struct vnt_private *priv, u64 mc_filter); int vnt_mac_shutdown(struct vnt_private *priv); int vnt_mac_set_bb_type(struct vnt_private *priv, u8 type); int vnt_mac_disable_keyentry(struct vnt_private *priv, u8 entry_idx); int vnt_mac_set_keyentry(struct vnt_private *priv, u16 key_ctl, u32 entry_idx, u32 key_idx, u8 *addr, u8 *key); int vnt_mac_reg_bits_off(struct vnt_private *priv, u8 reg_ofs, u8 bits); int vnt_mac_reg_bits_on(struct vnt_private *priv, u8 reg_ofs, u8 bits); int vnt_mac_write_word(struct vnt_private *priv, u8 reg_ofs, u16 word); int vnt_mac_set_bssid_addr(struct vnt_private *priv, u8 *addr); int vnt_mac_enable_protect_mode(struct vnt_private *priv); int vnt_mac_disable_protect_mode(struct vnt_private *priv); int vnt_mac_enable_barker_preamble_mode(struct vnt_private *priv); int vnt_mac_disable_barker_preamble_mode(struct vnt_private *priv); int vnt_mac_set_beacon_interval(struct vnt_private *priv, u16 interval); int vnt_mac_set_led(struct vnt_private *privpriv, u8 state, u8 led); #endif /* __MAC_H__ */ |