1*4882a593Smuzhiyun /****************************************************************************** 2*4882a593Smuzhiyun * 3*4882a593Smuzhiyun * Copyright(c) 2007 - 2017 Realtek Corporation. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * This program is free software; you can redistribute it and/or modify it 6*4882a593Smuzhiyun * under the terms of version 2 of the GNU General Public License as 7*4882a593Smuzhiyun * published by the Free Software Foundation. 8*4882a593Smuzhiyun * 9*4882a593Smuzhiyun * This program is distributed in the hope that it will be useful, but WITHOUT 10*4882a593Smuzhiyun * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11*4882a593Smuzhiyun * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12*4882a593Smuzhiyun * more details. 13*4882a593Smuzhiyun * 14*4882a593Smuzhiyun *****************************************************************************/ 15*4882a593Smuzhiyun #ifndef __HAL_COMMON_REG_H__ 16*4882a593Smuzhiyun #define __HAL_COMMON_REG_H__ 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun #define MAC_ADDR_LEN 6 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun #define HAL_NAV_UPPER_UNIT 128 /* micro-second */ 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun /* 8188E PKT_BUFF_ACCESS_CTRL value */ 24*4882a593Smuzhiyun #define TXPKT_BUF_SELECT 0x69 25*4882a593Smuzhiyun #define RXPKT_BUF_SELECT 0xA5 26*4882a593Smuzhiyun #define TXREPORT_BUF_SELECT 0x7F 27*4882a593Smuzhiyun #define DISABLE_TRXPKT_BUF_ACCESS 0x0 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun #ifndef RTW_HALMAC 30*4882a593Smuzhiyun /* ************************************************************ 31*4882a593Smuzhiyun * 32*4882a593Smuzhiyun * ************************************************************ */ 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun /* ----------------------------------------------------- 35*4882a593Smuzhiyun * 36*4882a593Smuzhiyun * 0x0000h ~ 0x00FFh System Configuration 37*4882a593Smuzhiyun * 38*4882a593Smuzhiyun * ----------------------------------------------------- */ 39*4882a593Smuzhiyun #define REG_SYS_ISO_CTRL 0x0000 40*4882a593Smuzhiyun #define REG_SYS_FUNC_EN 0x0002 41*4882a593Smuzhiyun #define REG_APS_FSMCO 0x0004 42*4882a593Smuzhiyun #define REG_SYS_CLKR 0x0008 43*4882a593Smuzhiyun #define REG_SYS_CLK_CTRL REG_SYS_CLKR 44*4882a593Smuzhiyun #define REG_9346CR 0x000A 45*4882a593Smuzhiyun #define REG_SYS_EEPROM_CTRL 0x000A 46*4882a593Smuzhiyun #define REG_EE_VPD 0x000C 47*4882a593Smuzhiyun #define REG_AFE_MISC 0x0010 48*4882a593Smuzhiyun #define REG_SPS0_CTRL 0x0011 49*4882a593Smuzhiyun #define REG_SPS0_CTRL_6 0x0016 50*4882a593Smuzhiyun #define REG_POWER_OFF_IN_PROCESS 0x0017 51*4882a593Smuzhiyun #define REG_SPS_OCP_CFG 0x0018 52*4882a593Smuzhiyun #define REG_RSV_CTRL 0x001C 53*4882a593Smuzhiyun #define REG_RF_CTRL 0x001F 54*4882a593Smuzhiyun #define REG_LDOA15_CTRL 0x0020 55*4882a593Smuzhiyun #define REG_LDOV12D_CTRL 0x0021 56*4882a593Smuzhiyun #define REG_LDOHCI12_CTRL 0x0022 57*4882a593Smuzhiyun #define REG_LPLDO_CTRL 0x0023 58*4882a593Smuzhiyun #define REG_AFE_XTAL_CTRL 0x0024 59*4882a593Smuzhiyun #define REG_AFE_LDO_CTRL 0x0027 /* 1.5v for 8188EE test chip, 1.4v for MP chip */ 60*4882a593Smuzhiyun #define REG_AFE_PLL_CTRL 0x0028 61*4882a593Smuzhiyun #define REG_MAC_PHY_CTRL 0x002c /* for 92d, DMDP, SMSP, DMSP contrl */ 62*4882a593Smuzhiyun #define REG_APE_PLL_CTRL_EXT 0x002c 63*4882a593Smuzhiyun #define REG_EFUSE_CTRL 0x0030 64*4882a593Smuzhiyun #define REG_EFUSE_TEST 0x0034 65*4882a593Smuzhiyun #define REG_PWR_DATA 0x0038 66*4882a593Smuzhiyun #define REG_CAL_TIMER 0x003C 67*4882a593Smuzhiyun #define REG_ACLK_MON 0x003E 68*4882a593Smuzhiyun #define REG_GPIO_MUXCFG 0x0040 69*4882a593Smuzhiyun #define REG_GPIO_IO_SEL 0x0042 70*4882a593Smuzhiyun #define REG_MAC_PINMUX_CFG 0x0043 71*4882a593Smuzhiyun #define REG_GPIO_PIN_CTRL 0x0044 72*4882a593Smuzhiyun #define REG_GPIO_INTM 0x0048 73*4882a593Smuzhiyun #define REG_LEDCFG0 0x004C 74*4882a593Smuzhiyun #define REG_LEDCFG1 0x004D 75*4882a593Smuzhiyun #define REG_LEDCFG2 0x004E 76*4882a593Smuzhiyun #define REG_LEDCFG3 0x004F 77*4882a593Smuzhiyun #define REG_FSIMR 0x0050 78*4882a593Smuzhiyun #define REG_FSISR 0x0054 79*4882a593Smuzhiyun #define REG_HSIMR 0x0058 80*4882a593Smuzhiyun #define REG_HSISR 0x005c 81*4882a593Smuzhiyun #define REG_GPIO_PIN_CTRL_2 0x0060 /* RTL8723 WIFI/BT/GPS Multi-Function GPIO Pin Control. */ 82*4882a593Smuzhiyun #define REG_GPIO_IO_SEL_2 0x0062 /* RTL8723 WIFI/BT/GPS Multi-Function GPIO Select. */ 83*4882a593Smuzhiyun #define REG_PAD_CTRL_1 0x0064 84*4882a593Smuzhiyun #define REG_MULTI_FUNC_CTRL 0x0068 /* RTL8723 WIFI/BT/GPS Multi-Function control source. */ 85*4882a593Smuzhiyun #define REG_GSSR 0x006c 86*4882a593Smuzhiyun #define REG_AFE_XTAL_CTRL_EXT 0x0078 /* RTL8188E */ 87*4882a593Smuzhiyun #define REG_XCK_OUT_CTRL 0x007c /* RTL8188E */ 88*4882a593Smuzhiyun #define REG_MCUFWDL 0x0080 89*4882a593Smuzhiyun #define REG_WOL_EVENT 0x0081 /* RTL8188E */ 90*4882a593Smuzhiyun #define REG_MCUTSTCFG 0x0084 91*4882a593Smuzhiyun #define REG_FDHM0 0x0088 92*4882a593Smuzhiyun #define REG_HOST_SUSP_CNT 0x00BC /* RTL8192C Host suspend counter on FPGA platform */ 93*4882a593Smuzhiyun #define REG_SYSTEM_ON_CTRL 0x00CC /* For 8723AE Reset after S3 */ 94*4882a593Smuzhiyun #define REG_EFUSE_ACCESS 0x00CF /* Efuse access protection for RTL8723 */ 95*4882a593Smuzhiyun #define REG_BIST_SCAN 0x00D0 96*4882a593Smuzhiyun #define REG_BIST_RPT 0x00D4 97*4882a593Smuzhiyun #define REG_BIST_ROM_RPT 0x00D8 98*4882a593Smuzhiyun #define REG_USB_SIE_INTF 0x00E0 99*4882a593Smuzhiyun #define REG_PCIE_MIO_INTF 0x00E4 100*4882a593Smuzhiyun #define REG_PCIE_MIO_INTD 0x00E8 101*4882a593Smuzhiyun #define REG_HPON_FSM 0x00EC 102*4882a593Smuzhiyun #define REG_SYS_CFG 0x00F0 103*4882a593Smuzhiyun #define REG_GPIO_OUTSTS 0x00F4 /* For RTL8723 only. */ 104*4882a593Smuzhiyun #define REG_TYPE_ID 0x00FC 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun /* 107*4882a593Smuzhiyun * 2010/12/29 MH Add for 92D 108*4882a593Smuzhiyun * */ 109*4882a593Smuzhiyun #define REG_MAC_PHY_CTRL_NORMAL 0x00f8 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun /* ----------------------------------------------------- 113*4882a593Smuzhiyun * 114*4882a593Smuzhiyun * 0x0100h ~ 0x01FFh MACTOP General Configuration 115*4882a593Smuzhiyun * 116*4882a593Smuzhiyun * ----------------------------------------------------- */ 117*4882a593Smuzhiyun #define REG_CR 0x0100 118*4882a593Smuzhiyun #define REG_PBP 0x0104 119*4882a593Smuzhiyun #define REG_PKT_BUFF_ACCESS_CTRL 0x0106 120*4882a593Smuzhiyun #define REG_TRXDMA_CTRL 0x010C 121*4882a593Smuzhiyun #define REG_TRXFF_BNDY 0x0114 122*4882a593Smuzhiyun #define REG_TRXFF_STATUS 0x0118 123*4882a593Smuzhiyun #define REG_RXFF_PTR 0x011C 124*4882a593Smuzhiyun #define REG_HIMR 0x0120 125*4882a593Smuzhiyun #define REG_FE1IMR 0x0120 126*4882a593Smuzhiyun #define REG_HISR 0x0124 127*4882a593Smuzhiyun #define REG_HIMRE 0x0128 128*4882a593Smuzhiyun #define REG_HISRE 0x012C 129*4882a593Smuzhiyun #define REG_CPWM 0x012F 130*4882a593Smuzhiyun #define REG_FWIMR 0x0130 131*4882a593Smuzhiyun #define REG_FWISR 0x0134 132*4882a593Smuzhiyun #define REG_FTIMR 0x0138 133*4882a593Smuzhiyun #define REG_FTISR 0x013C /* RTL8192C */ 134*4882a593Smuzhiyun #define REG_PKTBUF_DBG_CTRL 0x0140 135*4882a593Smuzhiyun #define REG_RXPKTBUF_CTRL (REG_PKTBUF_DBG_CTRL+2) 136*4882a593Smuzhiyun #define REG_PKTBUF_DBG_DATA_L 0x0144 137*4882a593Smuzhiyun #define REG_PKTBUF_DBG_DATA_H 0x0148 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun #define REG_TC0_CTRL 0x0150 140*4882a593Smuzhiyun #define REG_TC1_CTRL 0x0154 141*4882a593Smuzhiyun #define REG_TC2_CTRL 0x0158 142*4882a593Smuzhiyun #define REG_TC3_CTRL 0x015C 143*4882a593Smuzhiyun #define REG_TC4_CTRL 0x0160 144*4882a593Smuzhiyun #define REG_TCUNIT_BASE 0x0164 145*4882a593Smuzhiyun #define REG_MBIST_START 0x0174 146*4882a593Smuzhiyun #define REG_MBIST_DONE 0x0178 147*4882a593Smuzhiyun #define REG_MBIST_FAIL 0x017C 148*4882a593Smuzhiyun #define REG_32K_CTRL 0x0194 /* RTL8188E */ 149*4882a593Smuzhiyun #define REG_C2HEVT_MSG_NORMAL 0x01A0 150*4882a593Smuzhiyun #define REG_C2HEVT_CLEAR 0x01AF 151*4882a593Smuzhiyun #define REG_MCUTST_1 0x01c0 152*4882a593Smuzhiyun #define REG_MCUTST_WOWLAN 0x01C7 /* Defined after 8188E series. */ 153*4882a593Smuzhiyun #define REG_FMETHR 0x01C8 154*4882a593Smuzhiyun #define REG_HMETFR 0x01CC 155*4882a593Smuzhiyun #define REG_HMEBOX_0 0x01D0 156*4882a593Smuzhiyun #define REG_HMEBOX_1 0x01D4 157*4882a593Smuzhiyun #define REG_HMEBOX_2 0x01D8 158*4882a593Smuzhiyun #define REG_HMEBOX_3 0x01DC 159*4882a593Smuzhiyun #define REG_LLT_INIT 0x01E0 160*4882a593Smuzhiyun #define REG_HMEBOX_EXT_0 0x01F0 161*4882a593Smuzhiyun #define REG_HMEBOX_EXT_1 0x01F4 162*4882a593Smuzhiyun #define REG_HMEBOX_EXT_2 0x01F8 163*4882a593Smuzhiyun #define REG_HMEBOX_EXT_3 0x01FC 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun /* ----------------------------------------------------- 167*4882a593Smuzhiyun * 168*4882a593Smuzhiyun * 0x0200h ~ 0x027Fh TXDMA Configuration 169*4882a593Smuzhiyun * 170*4882a593Smuzhiyun * ----------------------------------------------------- */ 171*4882a593Smuzhiyun #define REG_RQPN 0x0200 172*4882a593Smuzhiyun #define REG_FIFOPAGE 0x0204 173*4882a593Smuzhiyun #define REG_TDECTRL 0x0208 174*4882a593Smuzhiyun #define REG_TXDMA_OFFSET_CHK 0x020C 175*4882a593Smuzhiyun #define REG_TXDMA_STATUS 0x0210 176*4882a593Smuzhiyun #define REG_RQPN_NPQ 0x0214 177*4882a593Smuzhiyun #define REG_TQPNT1 0x0218 178*4882a593Smuzhiyun #define REG_TQPNT2 0x021C 179*4882a593Smuzhiyun #define REG_AUTO_LLT 0x0224 180*4882a593Smuzhiyun 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun /* ----------------------------------------------------- 183*4882a593Smuzhiyun * 184*4882a593Smuzhiyun * 0x0280h ~ 0x02FFh RXDMA Configuration 185*4882a593Smuzhiyun * 186*4882a593Smuzhiyun * ----------------------------------------------------- */ 187*4882a593Smuzhiyun #define REG_RXDMA_AGG_PG_TH 0x0280 188*4882a593Smuzhiyun #define REG_RXPKT_NUM 0x0284 189*4882a593Smuzhiyun #define REG_RXDMA_STATUS 0x0288 190*4882a593Smuzhiyun 191*4882a593Smuzhiyun /* ----------------------------------------------------- 192*4882a593Smuzhiyun * 193*4882a593Smuzhiyun * 0x0300h ~ 0x03FFh PCIe 194*4882a593Smuzhiyun * 195*4882a593Smuzhiyun * ----------------------------------------------------- */ 196*4882a593Smuzhiyun #ifndef CONFIG_TRX_BD_ARCH /* prevent CONFIG_TRX_BD_ARCH to use old registers */ 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun #define REG_PCIE_CTRL_REG 0x0300 199*4882a593Smuzhiyun #define REG_INT_MIG 0x0304 /* Interrupt Migration */ 200*4882a593Smuzhiyun #define REG_BCNQ_DESA 0x0308 /* TX Beacon Descriptor Address */ 201*4882a593Smuzhiyun #define REG_HQ_DESA 0x0310 /* TX High Queue Descriptor Address */ 202*4882a593Smuzhiyun #define REG_MGQ_DESA 0x0318 /* TX Manage Queue Descriptor Address */ 203*4882a593Smuzhiyun #define REG_VOQ_DESA 0x0320 /* TX VO Queue Descriptor Address */ 204*4882a593Smuzhiyun #define REG_VIQ_DESA 0x0328 /* TX VI Queue Descriptor Address */ 205*4882a593Smuzhiyun #define REG_BEQ_DESA 0x0330 /* TX BE Queue Descriptor Address */ 206*4882a593Smuzhiyun #define REG_BKQ_DESA 0x0338 /* TX BK Queue Descriptor Address */ 207*4882a593Smuzhiyun #define REG_RX_DESA 0x0340 /* RX Queue Descriptor Address */ 208*4882a593Smuzhiyun /* sherry added for DBI Read/Write 20091126 */ 209*4882a593Smuzhiyun #define REG_DBI_WDATA 0x0348 /* Backdoor REG for Access Configuration */ 210*4882a593Smuzhiyun #define REG_DBI_RDATA 0x034C /* Backdoor REG for Access Configuration */ 211*4882a593Smuzhiyun #define REG_DBI_CTRL 0x0350 /* Backdoor REG for Access Configuration */ 212*4882a593Smuzhiyun #define REG_DBI_FLAG 0x0352 /* Backdoor REG for Access Configuration */ 213*4882a593Smuzhiyun #define REG_MDIO 0x0354 /* MDIO for Access PCIE PHY */ 214*4882a593Smuzhiyun #define REG_DBG_SEL 0x0360 /* Debug Selection Register */ 215*4882a593Smuzhiyun #define REG_WATCH_DOG 0x0368 216*4882a593Smuzhiyun #define REG_RX_RXBD_NUM 0x0382 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun /* RTL8723 series ------------------------------- */ 219*4882a593Smuzhiyun #define REG_PCIE_HISR_EN 0x0394 /* PCIE Local Interrupt Enable Register */ 220*4882a593Smuzhiyun #define REG_PCIE_HISR 0x03A0 221*4882a593Smuzhiyun #define REG_PCIE_HISRE 0x03A4 222*4882a593Smuzhiyun #define REG_PCIE_HIMR 0x03A8 223*4882a593Smuzhiyun #define REG_PCIE_HIMRE 0x03AC 224*4882a593Smuzhiyun 225*4882a593Smuzhiyun #endif /* !CONFIG_TRX_BD_ARCH */ 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun #define REG_USB_HIMR 0xFE38 228*4882a593Smuzhiyun #define REG_USB_HIMRE 0xFE3C 229*4882a593Smuzhiyun #define REG_USB_HISR 0xFE78 230*4882a593Smuzhiyun #define REG_USB_HISRE 0xFE7C 231*4882a593Smuzhiyun 232*4882a593Smuzhiyun 233*4882a593Smuzhiyun /* ----------------------------------------------------- 234*4882a593Smuzhiyun * 235*4882a593Smuzhiyun * 0x0400h ~ 0x047Fh Protocol Configuration 236*4882a593Smuzhiyun * 237*4882a593Smuzhiyun * ----------------------------------------------------- */ 238*4882a593Smuzhiyun 239*4882a593Smuzhiyun /* 92C, 92D */ 240*4882a593Smuzhiyun #define REG_VOQ_INFO 0x0400 241*4882a593Smuzhiyun #define REG_VIQ_INFO 0x0404 242*4882a593Smuzhiyun #define REG_BEQ_INFO 0x0408 243*4882a593Smuzhiyun #define REG_BKQ_INFO 0x040C 244*4882a593Smuzhiyun 245*4882a593Smuzhiyun /* 88E, 8723A, 8812A, 8821A, 92E, 8723B */ 246*4882a593Smuzhiyun #define REG_Q0_INFO 0x400 247*4882a593Smuzhiyun #define REG_Q1_INFO 0x404 248*4882a593Smuzhiyun #define REG_Q2_INFO 0x408 249*4882a593Smuzhiyun #define REG_Q3_INFO 0x40C 250*4882a593Smuzhiyun 251*4882a593Smuzhiyun #define REG_MGQ_INFO 0x0410 252*4882a593Smuzhiyun #define REG_HGQ_INFO 0x0414 253*4882a593Smuzhiyun #define REG_BCNQ_INFO 0x0418 254*4882a593Smuzhiyun #define REG_TXPKT_EMPTY 0x041A 255*4882a593Smuzhiyun #define REG_CPU_MGQ_INFORMATION 0x041C 256*4882a593Smuzhiyun #define REG_FWHW_TXQ_CTRL 0x0420 257*4882a593Smuzhiyun #define REG_HWSEQ_CTRL 0x0423 258*4882a593Smuzhiyun #define REG_BCNQ_BDNY 0x0424 259*4882a593Smuzhiyun #define REG_MGQ_BDNY 0x0425 260*4882a593Smuzhiyun #define REG_LIFETIME_EN 0x0426 261*4882a593Smuzhiyun #define REG_MULTI_BCNQ_OFFSET 0x0427 262*4882a593Smuzhiyun #define REG_SPEC_SIFS 0x0428 263*4882a593Smuzhiyun #define REG_RETRY_LIMIT 0x042A 264*4882a593Smuzhiyun #define REG_DARFRC 0x0430 265*4882a593Smuzhiyun #define REG_RARFRC 0x0438 266*4882a593Smuzhiyun #define REG_RRSR 0x0440 267*4882a593Smuzhiyun #define REG_ARFR0 0x0444 268*4882a593Smuzhiyun #define REG_ARFR1 0x0448 269*4882a593Smuzhiyun #define REG_ARFR2 0x044C 270*4882a593Smuzhiyun #define REG_ARFR3 0x0450 271*4882a593Smuzhiyun #define REG_CCK_CHECK 0x0454 272*4882a593Smuzhiyun #define REG_BCNQ1_BDNY 0x0457 273*4882a593Smuzhiyun 274*4882a593Smuzhiyun #define REG_AGGLEN_LMT 0x0458 275*4882a593Smuzhiyun #define REG_AMPDU_MIN_SPACE 0x045C 276*4882a593Smuzhiyun #define REG_WMAC_LBK_BF_HD 0x045D 277*4882a593Smuzhiyun #define REG_FAST_EDCA_CTRL 0x0460 278*4882a593Smuzhiyun #define REG_RD_RESP_PKT_TH 0x0463 279*4882a593Smuzhiyun 280*4882a593Smuzhiyun /* 8723A, 8812A, 8821A, 92E, 8723B */ 281*4882a593Smuzhiyun #define REG_Q4_INFO 0x468 282*4882a593Smuzhiyun #define REG_Q5_INFO 0x46C 283*4882a593Smuzhiyun #define REG_Q6_INFO 0x470 284*4882a593Smuzhiyun #define REG_Q7_INFO 0x474 285*4882a593Smuzhiyun 286*4882a593Smuzhiyun #define REG_INIRTS_RATE_SEL 0x0480 287*4882a593Smuzhiyun #define REG_INIDATA_RATE_SEL 0x0484 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun /* 8723B, 92E, 8812A, 8821A*/ 290*4882a593Smuzhiyun #define REG_MACID_SLEEP_3 0x0484 291*4882a593Smuzhiyun #define REG_MACID_SLEEP_1 0x0488 292*4882a593Smuzhiyun 293*4882a593Smuzhiyun #define REG_POWER_STAGE1 0x04B4 294*4882a593Smuzhiyun #define REG_POWER_STAGE2 0x04B8 295*4882a593Smuzhiyun #define REG_PKT_LIFE_TIME 0x04C0 296*4882a593Smuzhiyun #define REG_PKT_LIFE_TIME_VO_VI 0x04C0 297*4882a593Smuzhiyun #define REG_PKT_LIFE_TIME_BE_BK 0x04C2 298*4882a593Smuzhiyun #define REG_STBC_SETTING 0x04C4 299*4882a593Smuzhiyun #define REG_QUEUE_CTRL 0x04C6 300*4882a593Smuzhiyun #define REG_SINGLE_AMPDU_CTRL 0x04c7 301*4882a593Smuzhiyun #define REG_PROT_MODE_CTRL 0x04C8 302*4882a593Smuzhiyun #define REG_MAX_AGGR_NUM 0x04CA 303*4882a593Smuzhiyun #define REG_RTS_MAX_AGGR_NUM 0x04CB 304*4882a593Smuzhiyun #define REG_BAR_MODE_CTRL 0x04CC 305*4882a593Smuzhiyun #define REG_RA_TRY_RATE_AGG_LMT 0x04CF 306*4882a593Smuzhiyun 307*4882a593Smuzhiyun /* 8723A */ 308*4882a593Smuzhiyun #define REG_MACID_DROP 0x04D0 309*4882a593Smuzhiyun 310*4882a593Smuzhiyun /* 88E */ 311*4882a593Smuzhiyun #define REG_EARLY_MODE_CONTROL 0x04D0 312*4882a593Smuzhiyun 313*4882a593Smuzhiyun /* 8723B, 92E, 8812A, 8821A */ 314*4882a593Smuzhiyun #define REG_MACID_SLEEP_2 0x04D0 315*4882a593Smuzhiyun 316*4882a593Smuzhiyun /* 8723A, 8723B, 92E, 8812A, 8821A */ 317*4882a593Smuzhiyun #define REG_MACID_SLEEP 0x04D4 318*4882a593Smuzhiyun 319*4882a593Smuzhiyun #define REG_NQOS_SEQ 0x04DC 320*4882a593Smuzhiyun #define REG_HW_SEQ0 0x04D8 321*4882a593Smuzhiyun #define REG_HW_SEQ1 0x04DA 322*4882a593Smuzhiyun #define REG_HW_SEQ2 0x04DC 323*4882a593Smuzhiyun #define REG_HW_SEQ3 0x04DE 324*4882a593Smuzhiyun 325*4882a593Smuzhiyun #define REG_QOS_SEQ 0x04DE 326*4882a593Smuzhiyun #define REG_NEED_CPU_HANDLE 0x04E0 327*4882a593Smuzhiyun #define REG_PKT_LOSE_RPT 0x04E1 328*4882a593Smuzhiyun #define REG_PTCL_ERR_STATUS 0x04E2 329*4882a593Smuzhiyun #define REG_TX_RPT_CTRL 0x04EC 330*4882a593Smuzhiyun #define REG_TX_RPT_TIME 0x04F0 /* 2 byte */ 331*4882a593Smuzhiyun #define REG_DUMMY 0x04FC 332*4882a593Smuzhiyun 333*4882a593Smuzhiyun /* ----------------------------------------------------- 334*4882a593Smuzhiyun * 335*4882a593Smuzhiyun * 0x0500h ~ 0x05FFh EDCA Configuration 336*4882a593Smuzhiyun * 337*4882a593Smuzhiyun * ----------------------------------------------------- */ 338*4882a593Smuzhiyun #define REG_EDCA_VO_PARAM 0x0500 339*4882a593Smuzhiyun #define REG_EDCA_VI_PARAM 0x0504 340*4882a593Smuzhiyun #define REG_EDCA_BE_PARAM 0x0508 341*4882a593Smuzhiyun #define REG_EDCA_BK_PARAM 0x050C 342*4882a593Smuzhiyun #define REG_BCNTCFG 0x0510 343*4882a593Smuzhiyun #define REG_PIFS 0x0512 344*4882a593Smuzhiyun #define REG_RDG_PIFS 0x0513 345*4882a593Smuzhiyun #define REG_SIFS_CTX 0x0514 346*4882a593Smuzhiyun #define REG_SIFS_TRX 0x0516 347*4882a593Smuzhiyun #define REG_TSFTR_SYN_OFFSET 0x0518 348*4882a593Smuzhiyun #define REG_AGGR_BREAK_TIME 0x051A 349*4882a593Smuzhiyun #define REG_SLOT 0x051B 350*4882a593Smuzhiyun #define REG_TX_PTCL_CTRL 0x0520 351*4882a593Smuzhiyun #define REG_TXPAUSE 0x0522 352*4882a593Smuzhiyun #define REG_DIS_TXREQ_CLR 0x0523 353*4882a593Smuzhiyun #define REG_RD_CTRL 0x0524 354*4882a593Smuzhiyun /* 355*4882a593Smuzhiyun * Format for offset 540h-542h: 356*4882a593Smuzhiyun * [3:0]: TBTT prohibit setup in unit of 32us. The time for HW getting beacon content before TBTT. 357*4882a593Smuzhiyun * [7:4]: Reserved. 358*4882a593Smuzhiyun * [19:8]: TBTT prohibit hold in unit of 32us. The time for HW holding to send the beacon packet. 359*4882a593Smuzhiyun * [23:20]: Reserved 360*4882a593Smuzhiyun * Description: 361*4882a593Smuzhiyun * | 362*4882a593Smuzhiyun * |<--Setup--|--Hold------------>| 363*4882a593Smuzhiyun * --------------|---------------------- 364*4882a593Smuzhiyun * | 365*4882a593Smuzhiyun * TBTT 366*4882a593Smuzhiyun * Note: We cannot update beacon content to HW or send any AC packets during the time between Setup and Hold. 367*4882a593Smuzhiyun * Described by Designer Tim and Bruce, 2011-01-14. 368*4882a593Smuzhiyun * */ 369*4882a593Smuzhiyun #define REG_TBTT_PROHIBIT 0x0540 370*4882a593Smuzhiyun #define REG_RD_NAV_NXT 0x0544 371*4882a593Smuzhiyun #define REG_NAV_PROT_LEN 0x0546 372*4882a593Smuzhiyun #define REG_BCN_CTRL 0x0550 373*4882a593Smuzhiyun #define REG_BCN_CTRL_1 0x0551 374*4882a593Smuzhiyun #define REG_MBID_NUM 0x0552 375*4882a593Smuzhiyun #define REG_DUAL_TSF_RST 0x0553 376*4882a593Smuzhiyun #define REG_MBSSID_BCN_SPACE 0x0554 377*4882a593Smuzhiyun #define REG_DRVERLYINT 0x0558 378*4882a593Smuzhiyun #define REG_BCNDMATIM 0x0559 379*4882a593Smuzhiyun #define REG_ATIMWND 0x055A 380*4882a593Smuzhiyun #define REG_USTIME_TSF 0x055C 381*4882a593Smuzhiyun #define REG_BCN_MAX_ERR 0x055D 382*4882a593Smuzhiyun #define REG_RXTSF_OFFSET_CCK 0x055E 383*4882a593Smuzhiyun #define REG_RXTSF_OFFSET_OFDM 0x055F 384*4882a593Smuzhiyun #define REG_TSFTR 0x0560 385*4882a593Smuzhiyun #define REG_TSFTR1 0x0568 /* HW Port 1 TSF Register */ 386*4882a593Smuzhiyun #define REG_ATIMWND_1 0x0570 387*4882a593Smuzhiyun #define REG_P2P_CTWIN 0x0572 /* 1 Byte long (in unit of TU) */ 388*4882a593Smuzhiyun #define REG_PSTIMER 0x0580 389*4882a593Smuzhiyun #define REG_TIMER0 0x0584 390*4882a593Smuzhiyun #define REG_TIMER1 0x0588 391*4882a593Smuzhiyun #define REG_HIQ_NO_LMT_EN 0x05A7 392*4882a593Smuzhiyun #define REG_ACMHWCTRL 0x05C0 393*4882a593Smuzhiyun #define REG_NOA_DESC_SEL 0x05CF 394*4882a593Smuzhiyun #define REG_NOA_DESC_DURATION 0x05E0 395*4882a593Smuzhiyun #define REG_NOA_DESC_INTERVAL 0x05E4 396*4882a593Smuzhiyun #define REG_NOA_DESC_START 0x05E8 397*4882a593Smuzhiyun #define REG_NOA_DESC_COUNT 0x05EC 398*4882a593Smuzhiyun 399*4882a593Smuzhiyun #define REG_DMC 0x05F0 /* Dual MAC Co-Existence Register */ 400*4882a593Smuzhiyun #define REG_SCH_TX_CMD 0x05F8 401*4882a593Smuzhiyun 402*4882a593Smuzhiyun #define REG_FW_RESET_TSF_CNT_1 0x05FC 403*4882a593Smuzhiyun #define REG_FW_RESET_TSF_CNT_0 0x05FD 404*4882a593Smuzhiyun #define REG_FW_BCN_DIS_CNT 0x05FE 405*4882a593Smuzhiyun 406*4882a593Smuzhiyun /* ----------------------------------------------------- 407*4882a593Smuzhiyun * 408*4882a593Smuzhiyun * 0x0600h ~ 0x07FFh WMAC Configuration 409*4882a593Smuzhiyun * 410*4882a593Smuzhiyun * ----------------------------------------------------- */ 411*4882a593Smuzhiyun #define REG_APSD_CTRL 0x0600 412*4882a593Smuzhiyun #define REG_BWOPMODE 0x0603 413*4882a593Smuzhiyun #define REG_TCR 0x0604 414*4882a593Smuzhiyun #define REG_RCR 0x0608 415*4882a593Smuzhiyun #define REG_RX_PKT_LIMIT 0x060C 416*4882a593Smuzhiyun #define REG_RX_DLK_TIME 0x060D 417*4882a593Smuzhiyun #define REG_RX_DRVINFO_SZ 0x060F 418*4882a593Smuzhiyun 419*4882a593Smuzhiyun #define REG_MACID 0x0610 420*4882a593Smuzhiyun #define REG_BSSID 0x0618 421*4882a593Smuzhiyun #define REG_MAR 0x0620 422*4882a593Smuzhiyun #define REG_MBIDCAMCFG_1 0x0628 423*4882a593Smuzhiyun #define REG_MBIDCAMCFG_2 0x062C 424*4882a593Smuzhiyun 425*4882a593Smuzhiyun #define REG_PNO_STATUS 0x0631 426*4882a593Smuzhiyun #define REG_USTIME_EDCA 0x0638 427*4882a593Smuzhiyun #define REG_MAC_SPEC_SIFS 0x063A 428*4882a593Smuzhiyun /* 20100719 Joseph: Hardware register definition change. (HW datasheet v54) */ 429*4882a593Smuzhiyun #define REG_RESP_SIFS_CCK 0x063C /* [15:8]SIFS_R2T_OFDM, [7:0]SIFS_R2T_CCK */ 430*4882a593Smuzhiyun #define REG_RESP_SIFS_OFDM 0x063E /* [15:8]SIFS_T2T_OFDM, [7:0]SIFS_T2T_CCK */ 431*4882a593Smuzhiyun 432*4882a593Smuzhiyun #define REG_ACKTO 0x0640 433*4882a593Smuzhiyun #define REG_CTS2TO 0x0641 434*4882a593Smuzhiyun #define REG_EIFS 0x0642 435*4882a593Smuzhiyun 436*4882a593Smuzhiyun /*REG_TCR*/ 437*4882a593Smuzhiyun #define BIT_PWRBIT_OW_EN BIT(7) 438*4882a593Smuzhiyun 439*4882a593Smuzhiyun /* RXERR_RPT */ 440*4882a593Smuzhiyun #define RXERR_TYPE_OFDM_PPDU 0 441*4882a593Smuzhiyun #define RXERR_TYPE_OFDM_FALSE_ALARM 1 442*4882a593Smuzhiyun #define RXERR_TYPE_OFDM_MPDU_OK 2 443*4882a593Smuzhiyun #define RXERR_TYPE_OFDM_MPDU_FAIL 3 444*4882a593Smuzhiyun #define RXERR_TYPE_CCK_PPDU 4 445*4882a593Smuzhiyun #define RXERR_TYPE_CCK_FALSE_ALARM 5 446*4882a593Smuzhiyun #define RXERR_TYPE_CCK_MPDU_OK 6 447*4882a593Smuzhiyun #define RXERR_TYPE_CCK_MPDU_FAIL 7 448*4882a593Smuzhiyun #define RXERR_TYPE_HT_PPDU 8 449*4882a593Smuzhiyun #define RXERR_TYPE_HT_FALSE_ALARM 9 450*4882a593Smuzhiyun #define RXERR_TYPE_HT_MPDU_TOTAL 10 451*4882a593Smuzhiyun #define RXERR_TYPE_HT_MPDU_OK 11 452*4882a593Smuzhiyun #define RXERR_TYPE_HT_MPDU_FAIL 12 453*4882a593Smuzhiyun #define RXERR_TYPE_RX_FULL_DROP 15 454*4882a593Smuzhiyun 455*4882a593Smuzhiyun #define RXERR_COUNTER_MASK 0xFFFFF 456*4882a593Smuzhiyun #define RXERR_RPT_RST BIT(27) 457*4882a593Smuzhiyun #define _RXERR_RPT_SEL(type) ((type) << 28) 458*4882a593Smuzhiyun 459*4882a593Smuzhiyun /* 460*4882a593Smuzhiyun * Note: 461*4882a593Smuzhiyun * The NAV upper value is very important to WiFi 11n 5.2.3 NAV test. The default value is 462*4882a593Smuzhiyun * always too small, but the WiFi TestPlan test by 25,000 microseconds of NAV through sending 463*4882a593Smuzhiyun * CTS in the air. We must update this value greater than 25,000 microseconds to pass the item. 464*4882a593Smuzhiyun * The offset of NAV_UPPER in 8192C Spec is incorrect, and the offset should be 0x0652. Commented 465*4882a593Smuzhiyun * by SD1 Scott. 466*4882a593Smuzhiyun * By Bruce, 2011-07-18. 467*4882a593Smuzhiyun * */ 468*4882a593Smuzhiyun #define REG_NAV_UPPER 0x0652 /* unit of 128 */ 469*4882a593Smuzhiyun 470*4882a593Smuzhiyun /* WMA, BA, CCX */ 471*4882a593Smuzhiyun #define REG_NAV_CTRL 0x0650 472*4882a593Smuzhiyun #define REG_BACAMCMD 0x0654 473*4882a593Smuzhiyun #define REG_BACAMCONTENT 0x0658 474*4882a593Smuzhiyun #define REG_LBDLY 0x0660 475*4882a593Smuzhiyun #define REG_FWDLY 0x0661 476*4882a593Smuzhiyun #define REG_RXERR_RPT 0x0664 477*4882a593Smuzhiyun #define REG_WMAC_TRXPTCL_CTL 0x0668 478*4882a593Smuzhiyun 479*4882a593Smuzhiyun /* Security */ 480*4882a593Smuzhiyun #define REG_CAMCMD 0x0670 481*4882a593Smuzhiyun #define REG_CAMWRITE 0x0674 482*4882a593Smuzhiyun #define REG_CAMREAD 0x0678 483*4882a593Smuzhiyun #define REG_CAMDBG 0x067C 484*4882a593Smuzhiyun #define REG_SECCFG 0x0680 485*4882a593Smuzhiyun 486*4882a593Smuzhiyun /* Power */ 487*4882a593Smuzhiyun #define REG_WOW_CTRL 0x0690 488*4882a593Smuzhiyun #define REG_PS_RX_INFO 0x0692 489*4882a593Smuzhiyun #define REG_WMMPS_UAPSD_TID 0x0693 490*4882a593Smuzhiyun #define REG_WKFMCAM_CMD 0x0698 491*4882a593Smuzhiyun #define REG_WKFMCAM_NUM REG_WKFMCAM_CMD 492*4882a593Smuzhiyun #define REG_WKFMCAM_RWD 0x069C 493*4882a593Smuzhiyun #define REG_RXFLTMAP0 0x06A0 494*4882a593Smuzhiyun #define REG_RXFLTMAP1 0x06A2 495*4882a593Smuzhiyun #define REG_RXFLTMAP2 0x06A4 496*4882a593Smuzhiyun #define REG_BCN_PSR_RPT 0x06A8 497*4882a593Smuzhiyun #define REG_BT_COEX_TABLE 0x06C0 498*4882a593Smuzhiyun 499*4882a593Smuzhiyun #define BIT_WKFCAM_WE BIT(16) 500*4882a593Smuzhiyun #define BIT_WKFCAM_POLLING_V1 BIT(31) 501*4882a593Smuzhiyun #define BIT_WKFCAM_CLR_V1 BIT(30) 502*4882a593Smuzhiyun #define BIT_SHIFT_WKFCAM_ADDR_V2 8 503*4882a593Smuzhiyun #define BIT_MASK_WKFCAM_ADDR_V2 0xff 504*4882a593Smuzhiyun #define BIT_WKFCAM_ADDR_V2(x) (((x) & BIT_MASK_WKFCAM_ADDR_V2) << BIT_SHIFT_WKFCAM_ADDR_V2) 505*4882a593Smuzhiyun 506*4882a593Smuzhiyun /* Hardware Port 1 */ 507*4882a593Smuzhiyun #define REG_MACID1 0x0700 508*4882a593Smuzhiyun #define REG_BSSID1 0x0708 509*4882a593Smuzhiyun 510*4882a593Smuzhiyun /* Enable/Disable Port 0 and Port 1 for Specific ICs (ex. 8192F)*/ 511*4882a593Smuzhiyun #define REG_WLAN_ACT_MASK_CTRL_1 0x076C 512*4882a593Smuzhiyun 513*4882a593Smuzhiyun /* GPIO Control */ 514*4882a593Smuzhiyun #define REG_SW_GPIO_SHARE_CTRL_0 0x1038 515*4882a593Smuzhiyun #define REG_SW_GPIO_SHARE_CTRL_1 0x103C 516*4882a593Smuzhiyun #define REG_SW_GPIO_A_OUT 0x1040 517*4882a593Smuzhiyun #define REG_SW_GPIO_A_OEN 0x1044 518*4882a593Smuzhiyun #define REG_SW_GPIO_B_OEN 0x1058 519*4882a593Smuzhiyun #define REG_SW_GPIO_B_OUT 0x105C 520*4882a593Smuzhiyun 521*4882a593Smuzhiyun /* Hardware Port 2 */ 522*4882a593Smuzhiyun #define REG_MACID2 0x1620 523*4882a593Smuzhiyun #define REG_BSSID2 0x1628 524*4882a593Smuzhiyun /* Hardware Port 3*/ 525*4882a593Smuzhiyun #define REG_MACID3 0x1630 526*4882a593Smuzhiyun #define REG_BSSID3 0x1638 527*4882a593Smuzhiyun /* Hardware Port 4 */ 528*4882a593Smuzhiyun #define REG_MACID4 0x1640 529*4882a593Smuzhiyun #define REG_BSSID4 0x1648 530*4882a593Smuzhiyun 531*4882a593Smuzhiyun 532*4882a593Smuzhiyun #define REG_CR_EXT 0x1100 533*4882a593Smuzhiyun 534*4882a593Smuzhiyun /* ----------------------------------------------------- 535*4882a593Smuzhiyun * 536*4882a593Smuzhiyun * 0xFE00h ~ 0xFE55h USB Configuration 537*4882a593Smuzhiyun * 538*4882a593Smuzhiyun * ----------------------------------------------------- */ 539*4882a593Smuzhiyun #define REG_USB_INFO 0xFE17 540*4882a593Smuzhiyun #define REG_USB_SPECIAL_OPTION 0xFE55 541*4882a593Smuzhiyun #define REG_USB_DMA_AGG_TO 0xFE5B 542*4882a593Smuzhiyun #define REG_USB_AGG_TO 0xFE5C 543*4882a593Smuzhiyun #define REG_USB_AGG_TH 0xFE5D 544*4882a593Smuzhiyun 545*4882a593Smuzhiyun #define REG_USB_HRPWM 0xFE58 546*4882a593Smuzhiyun #define REG_USB_HCPWM 0xFE57 547*4882a593Smuzhiyun 548*4882a593Smuzhiyun /* for 92DU high_Queue low_Queue Normal_Queue select */ 549*4882a593Smuzhiyun #define REG_USB_High_NORMAL_Queue_Select_MAC0 0xFE44 550*4882a593Smuzhiyun /* #define REG_USB_LOW_Queue_Select_MAC0 0xFE45 */ 551*4882a593Smuzhiyun #define REG_USB_High_NORMAL_Queue_Select_MAC1 0xFE47 552*4882a593Smuzhiyun /* #define REG_USB_LOW_Queue_Select_MAC1 0xFE48 */ 553*4882a593Smuzhiyun 554*4882a593Smuzhiyun /* For test chip */ 555*4882a593Smuzhiyun #define REG_TEST_USB_TXQS 0xFE48 556*4882a593Smuzhiyun #define REG_TEST_SIE_VID 0xFE60 /* 0xFE60~0xFE61 */ 557*4882a593Smuzhiyun #define REG_TEST_SIE_PID 0xFE62 /* 0xFE62~0xFE63 */ 558*4882a593Smuzhiyun #define REG_TEST_SIE_OPTIONAL 0xFE64 559*4882a593Smuzhiyun #define REG_TEST_SIE_CHIRP_K 0xFE65 560*4882a593Smuzhiyun #define REG_TEST_SIE_PHY 0xFE66 /* 0xFE66~0xFE6B */ 561*4882a593Smuzhiyun #define REG_TEST_SIE_MAC_ADDR 0xFE70 /* 0xFE70~0xFE75 */ 562*4882a593Smuzhiyun #define REG_TEST_SIE_STRING 0xFE80 /* 0xFE80~0xFEB9 */ 563*4882a593Smuzhiyun 564*4882a593Smuzhiyun 565*4882a593Smuzhiyun /* For normal chip */ 566*4882a593Smuzhiyun #define REG_NORMAL_SIE_VID 0xFE60 /* 0xFE60~0xFE61 */ 567*4882a593Smuzhiyun #define REG_NORMAL_SIE_PID 0xFE62 /* 0xFE62~0xFE63 */ 568*4882a593Smuzhiyun #define REG_NORMAL_SIE_OPTIONAL 0xFE64 569*4882a593Smuzhiyun #define REG_NORMAL_SIE_EP 0xFE65 /* 0xFE65~0xFE67 */ 570*4882a593Smuzhiyun #define REG_NORMAL_SIE_PHY 0xFE68 /* 0xFE68~0xFE6B */ 571*4882a593Smuzhiyun #define REG_NORMAL_SIE_OPTIONAL2 0xFE6C 572*4882a593Smuzhiyun #define REG_NORMAL_SIE_GPS_EP 0xFE6D /* 0xFE6D, for RTL8723 only. */ 573*4882a593Smuzhiyun #define REG_NORMAL_SIE_MAC_ADDR 0xFE70 /* 0xFE70~0xFE75 */ 574*4882a593Smuzhiyun #define REG_NORMAL_SIE_STRING 0xFE80 /* 0xFE80~0xFEDF */ 575*4882a593Smuzhiyun 576*4882a593Smuzhiyun 577*4882a593Smuzhiyun /* ----------------------------------------------------- 578*4882a593Smuzhiyun * 579*4882a593Smuzhiyun * Redifine 8192C register definition for compatibility 580*4882a593Smuzhiyun * 581*4882a593Smuzhiyun * ----------------------------------------------------- */ 582*4882a593Smuzhiyun 583*4882a593Smuzhiyun /* TODO: use these definition when using REG_xxx naming rule. 584*4882a593Smuzhiyun * NOTE: DO NOT Remove these definition. Use later. */ 585*4882a593Smuzhiyun 586*4882a593Smuzhiyun #define EFUSE_CTRL REG_EFUSE_CTRL /* E-Fuse Control. */ 587*4882a593Smuzhiyun #define EFUSE_TEST REG_EFUSE_TEST /* E-Fuse Test. */ 588*4882a593Smuzhiyun #define MSR (REG_CR + 2) /* Media Status register */ 589*4882a593Smuzhiyun /* #define ISR REG_HISR */ 590*4882a593Smuzhiyun #define MSR1 REG_CR_EXT 591*4882a593Smuzhiyun 592*4882a593Smuzhiyun #define TSFR REG_TSFTR /* Timing Sync Function Timer Register. */ 593*4882a593Smuzhiyun #define TSFR1 REG_TSFTR1 /* HW Port 1 TSF Register */ 594*4882a593Smuzhiyun 595*4882a593Smuzhiyun #define PBP REG_PBP 596*4882a593Smuzhiyun 597*4882a593Smuzhiyun /* Redifine MACID register, to compatible prior ICs. */ 598*4882a593Smuzhiyun #define IDR0 REG_MACID /* MAC ID Register, Offset 0x0050-0x0053 */ 599*4882a593Smuzhiyun #define IDR4 (REG_MACID + 4) /* MAC ID Register, Offset 0x0054-0x0055 */ 600*4882a593Smuzhiyun 601*4882a593Smuzhiyun /* Unused register */ 602*4882a593Smuzhiyun #define UnusedRegister 0x1BF 603*4882a593Smuzhiyun #define DCAM UnusedRegister 604*4882a593Smuzhiyun #define PSR UnusedRegister 605*4882a593Smuzhiyun #define BBAddr UnusedRegister 606*4882a593Smuzhiyun #define PhyDataR UnusedRegister 607*4882a593Smuzhiyun 608*4882a593Smuzhiyun /* Min Spacing related settings. */ 609*4882a593Smuzhiyun #define MAX_MSS_DENSITY_2T 0x13 610*4882a593Smuzhiyun #define MAX_MSS_DENSITY_1T 0x0A 611*4882a593Smuzhiyun 612*4882a593Smuzhiyun /* ---------------------------------------------------------------------------- 613*4882a593Smuzhiyun * 8192C Cmd9346CR bits (Offset 0xA, 16bit) 614*4882a593Smuzhiyun * ---------------------------------------------------------------------------- */ 615*4882a593Smuzhiyun #define CmdEEPROM_En BIT(5) /* EEPROM enable when set 1 */ 616*4882a593Smuzhiyun #define CmdEERPOMSEL BIT(4) /* System EEPROM select, 0: boot from E-FUSE, 1: The EEPROM used is 9346 */ 617*4882a593Smuzhiyun #define Cmd9346CR_9356SEL BIT(4) 618*4882a593Smuzhiyun 619*4882a593Smuzhiyun /* ---------------------------------------------------------------------------- 620*4882a593Smuzhiyun * 8192C GPIO MUX Configuration Register (offset 0x40, 4 byte) 621*4882a593Smuzhiyun * ---------------------------------------------------------------------------- */ 622*4882a593Smuzhiyun #define GPIOSEL_GPIO 0 623*4882a593Smuzhiyun #define GPIOSEL_ENBT BIT(5) 624*4882a593Smuzhiyun 625*4882a593Smuzhiyun /* ---------------------------------------------------------------------------- 626*4882a593Smuzhiyun * 8192C GPIO PIN Control Register (offset 0x44, 4 byte) 627*4882a593Smuzhiyun * ---------------------------------------------------------------------------- */ 628*4882a593Smuzhiyun #define GPIO_IN REG_GPIO_PIN_CTRL /* GPIO pins input value */ 629*4882a593Smuzhiyun #define GPIO_OUT (REG_GPIO_PIN_CTRL+1) /* GPIO pins output value */ 630*4882a593Smuzhiyun #define GPIO_IO_SEL (REG_GPIO_PIN_CTRL+2) /* GPIO pins output enable when a bit is set to "1"; otherwise, input is configured. */ 631*4882a593Smuzhiyun #define GPIO_MOD (REG_GPIO_PIN_CTRL+3) 632*4882a593Smuzhiyun 633*4882a593Smuzhiyun /* ---------------------------------------------------------------------------- 634*4882a593Smuzhiyun * 8811A GPIO PIN Control Register (offset 0x60, 4 byte) 635*4882a593Smuzhiyun * ---------------------------------------------------------------------------- */ 636*4882a593Smuzhiyun #define GPIO_IN_8811A REG_GPIO_PIN_CTRL_2 /* GPIO pins input value */ 637*4882a593Smuzhiyun #define GPIO_OUT_8811A (REG_GPIO_PIN_CTRL_2+1) /* GPIO pins output value */ 638*4882a593Smuzhiyun #define GPIO_IO_SEL_8811A (REG_GPIO_PIN_CTRL_2+2) /* GPIO pins output enable when a bit is set to "1"; otherwise, input is configured. */ 639*4882a593Smuzhiyun #define GPIO_MOD_8811A (REG_GPIO_PIN_CTRL_2+3) 640*4882a593Smuzhiyun 641*4882a593Smuzhiyun /* ---------------------------------------------------------------------------- 642*4882a593Smuzhiyun * 8723/8188E Host System Interrupt Mask Register (offset 0x58, 32 byte) 643*4882a593Smuzhiyun * ---------------------------------------------------------------------------- */ 644*4882a593Smuzhiyun #define HSIMR_GPIO12_0_INT_EN BIT(0) 645*4882a593Smuzhiyun #define HSIMR_SPS_OCP_INT_EN BIT(5) 646*4882a593Smuzhiyun #define HSIMR_RON_INT_EN BIT(6) 647*4882a593Smuzhiyun #define HSIMR_PDN_INT_EN BIT(7) 648*4882a593Smuzhiyun #define HSIMR_GPIO9_INT_EN BIT(25) 649*4882a593Smuzhiyun 650*4882a593Smuzhiyun /* ---------------------------------------------------------------------------- 651*4882a593Smuzhiyun * 8723/8188E Host System Interrupt Status Register (offset 0x5C, 32 byte) 652*4882a593Smuzhiyun * ---------------------------------------------------------------------------- */ 653*4882a593Smuzhiyun #define HSISR_GPIO12_0_INT BIT(0) 654*4882a593Smuzhiyun #define HSISR_SPS_OCP_INT BIT(5) 655*4882a593Smuzhiyun #define HSISR_RON_INT BIT(6) 656*4882a593Smuzhiyun #define HSISR_PDNINT BIT(7) 657*4882a593Smuzhiyun #define HSISR_GPIO9_INT BIT(25) 658*4882a593Smuzhiyun 659*4882a593Smuzhiyun /* ---------------------------------------------------------------------------- 660*4882a593Smuzhiyun * 8192C (MSR) Media Status Register (Offset 0x4C, 8 bits) 661*4882a593Smuzhiyun * ---------------------------------------------------------------------------- */ 662*4882a593Smuzhiyun /* 663*4882a593Smuzhiyun Network Type 664*4882a593Smuzhiyun 00: No link 665*4882a593Smuzhiyun 01: Link in ad hoc network 666*4882a593Smuzhiyun 10: Link in infrastructure network 667*4882a593Smuzhiyun 11: AP mode 668*4882a593Smuzhiyun Default: 00b. 669*4882a593Smuzhiyun */ 670*4882a593Smuzhiyun #define MSR_NOLINK 0x00 671*4882a593Smuzhiyun #define MSR_ADHOC 0x01 672*4882a593Smuzhiyun #define MSR_INFRA 0x02 673*4882a593Smuzhiyun #define MSR_AP 0x03 674*4882a593Smuzhiyun 675*4882a593Smuzhiyun /* ---------------------------------------------------------------------------- 676*4882a593Smuzhiyun * USB INTR CONTENT 677*4882a593Smuzhiyun * ---------------------------------------------------------------------------- */ 678*4882a593Smuzhiyun #define USB_C2H_CMDID_OFFSET 0 679*4882a593Smuzhiyun #define USB_C2H_SEQ_OFFSET 1 680*4882a593Smuzhiyun #define USB_C2H_EVENT_OFFSET 2 681*4882a593Smuzhiyun #define USB_INTR_CPWM_OFFSET 16 682*4882a593Smuzhiyun #define USB_INTR_CONTENT_C2H_OFFSET 0 683*4882a593Smuzhiyun #define USB_INTR_CONTENT_CPWM1_OFFSET 16 684*4882a593Smuzhiyun #define USB_INTR_CONTENT_CPWM2_OFFSET 20 685*4882a593Smuzhiyun #define USB_INTR_CONTENT_HISR_OFFSET 48 686*4882a593Smuzhiyun #define USB_INTR_CONTENT_HISRE_OFFSET 52 687*4882a593Smuzhiyun #define USB_INTR_CONTENT_LENGTH 56 688*4882a593Smuzhiyun 689*4882a593Smuzhiyun 690*4882a593Smuzhiyun /* WOL bit information */ 691*4882a593Smuzhiyun #define HAL92C_WOL_PTK_UPDATE_EVENT BIT(0) 692*4882a593Smuzhiyun #define HAL92C_WOL_GTK_UPDATE_EVENT BIT(1) 693*4882a593Smuzhiyun #define HAL92C_WOL_DISASSOC_EVENT BIT(2) 694*4882a593Smuzhiyun #define HAL92C_WOL_DEAUTH_EVENT BIT(3) 695*4882a593Smuzhiyun #define HAL92C_WOL_FW_DISCONNECT_EVENT BIT(4) 696*4882a593Smuzhiyun 697*4882a593Smuzhiyun 698*4882a593Smuzhiyun /*---------------------------------------------------------------------------- 699*4882a593Smuzhiyun ** REG_CCK_CHECK (offset 0x454) 700*4882a593Smuzhiyun ------------------------------------------------------------------------------*/ 701*4882a593Smuzhiyun #define BIT_BCN_PORT_SEL BIT(5) 702*4882a593Smuzhiyun #define BIT_EN_BCN_PKT_REL BIT(6) 703*4882a593Smuzhiyun 704*4882a593Smuzhiyun #endif /* RTW_HALMAC */ 705*4882a593Smuzhiyun 706*4882a593Smuzhiyun /* ---------------------------------------------------------------------------- 707*4882a593Smuzhiyun * Response Rate Set Register (offset 0x440, 24bits) 708*4882a593Smuzhiyun * ---------------------------------------------------------------------------- */ 709*4882a593Smuzhiyun #define RRSR_1M BIT(0) 710*4882a593Smuzhiyun #define RRSR_2M BIT(1) 711*4882a593Smuzhiyun #define RRSR_5_5M BIT(2) 712*4882a593Smuzhiyun #define RRSR_11M BIT(3) 713*4882a593Smuzhiyun #define RRSR_6M BIT(4) 714*4882a593Smuzhiyun #define RRSR_9M BIT(5) 715*4882a593Smuzhiyun #define RRSR_12M BIT(6) 716*4882a593Smuzhiyun #define RRSR_18M BIT(7) 717*4882a593Smuzhiyun #define RRSR_24M BIT(8) 718*4882a593Smuzhiyun #define RRSR_36M BIT(9) 719*4882a593Smuzhiyun #define RRSR_48M BIT(10) 720*4882a593Smuzhiyun #define RRSR_54M BIT(11) 721*4882a593Smuzhiyun #define RRSR_MCS0 BIT(12) 722*4882a593Smuzhiyun #define RRSR_MCS1 BIT(13) 723*4882a593Smuzhiyun #define RRSR_MCS2 BIT(14) 724*4882a593Smuzhiyun #define RRSR_MCS3 BIT(15) 725*4882a593Smuzhiyun #define RRSR_MCS4 BIT(16) 726*4882a593Smuzhiyun #define RRSR_MCS5 BIT(17) 727*4882a593Smuzhiyun #define RRSR_MCS6 BIT(18) 728*4882a593Smuzhiyun #define RRSR_MCS7 BIT(19) 729*4882a593Smuzhiyun 730*4882a593Smuzhiyun #define RRSR_CCK_RATES (RRSR_11M | RRSR_5_5M | RRSR_2M | RRSR_1M) 731*4882a593Smuzhiyun #define RRSR_OFDM_RATES (RRSR_54M | RRSR_48M | RRSR_36M | RRSR_24M | RRSR_18M | RRSR_12M | RRSR_9M | RRSR_6M) 732*4882a593Smuzhiyun 733*4882a593Smuzhiyun /* ---------------------------------------------------------------------------- 734*4882a593Smuzhiyun * Rate Definition 735*4882a593Smuzhiyun * ---------------------------------------------------------------------------- */ 736*4882a593Smuzhiyun /* CCK */ 737*4882a593Smuzhiyun #define RATR_1M 0x00000001 738*4882a593Smuzhiyun #define RATR_2M 0x00000002 739*4882a593Smuzhiyun #define RATR_55M 0x00000004 740*4882a593Smuzhiyun #define RATR_11M 0x00000008 741*4882a593Smuzhiyun /* OFDM */ 742*4882a593Smuzhiyun #define RATR_6M 0x00000010 743*4882a593Smuzhiyun #define RATR_9M 0x00000020 744*4882a593Smuzhiyun #define RATR_12M 0x00000040 745*4882a593Smuzhiyun #define RATR_18M 0x00000080 746*4882a593Smuzhiyun #define RATR_24M 0x00000100 747*4882a593Smuzhiyun #define RATR_36M 0x00000200 748*4882a593Smuzhiyun #define RATR_48M 0x00000400 749*4882a593Smuzhiyun #define RATR_54M 0x00000800 750*4882a593Smuzhiyun /* MCS 1 Spatial Stream */ 751*4882a593Smuzhiyun #define RATR_MCS0 0x00001000 752*4882a593Smuzhiyun #define RATR_MCS1 0x00002000 753*4882a593Smuzhiyun #define RATR_MCS2 0x00004000 754*4882a593Smuzhiyun #define RATR_MCS3 0x00008000 755*4882a593Smuzhiyun #define RATR_MCS4 0x00010000 756*4882a593Smuzhiyun #define RATR_MCS5 0x00020000 757*4882a593Smuzhiyun #define RATR_MCS6 0x00040000 758*4882a593Smuzhiyun #define RATR_MCS7 0x00080000 759*4882a593Smuzhiyun /* MCS 2 Spatial Stream */ 760*4882a593Smuzhiyun #define RATR_MCS8 0x00100000 761*4882a593Smuzhiyun #define RATR_MCS9 0x00200000 762*4882a593Smuzhiyun #define RATR_MCS10 0x00400000 763*4882a593Smuzhiyun #define RATR_MCS11 0x00800000 764*4882a593Smuzhiyun #define RATR_MCS12 0x01000000 765*4882a593Smuzhiyun #define RATR_MCS13 0x02000000 766*4882a593Smuzhiyun #define RATR_MCS14 0x04000000 767*4882a593Smuzhiyun #define RATR_MCS15 0x08000000 768*4882a593Smuzhiyun 769*4882a593Smuzhiyun /* CCK */ 770*4882a593Smuzhiyun #define RATE_1M BIT(0) 771*4882a593Smuzhiyun #define RATE_2M BIT(1) 772*4882a593Smuzhiyun #define RATE_5_5M BIT(2) 773*4882a593Smuzhiyun #define RATE_11M BIT(3) 774*4882a593Smuzhiyun /* OFDM */ 775*4882a593Smuzhiyun #define RATE_6M BIT(4) 776*4882a593Smuzhiyun #define RATE_9M BIT(5) 777*4882a593Smuzhiyun #define RATE_12M BIT(6) 778*4882a593Smuzhiyun #define RATE_18M BIT(7) 779*4882a593Smuzhiyun #define RATE_24M BIT(8) 780*4882a593Smuzhiyun #define RATE_36M BIT(9) 781*4882a593Smuzhiyun #define RATE_48M BIT(10) 782*4882a593Smuzhiyun #define RATE_54M BIT(11) 783*4882a593Smuzhiyun /* MCS 1 Spatial Stream */ 784*4882a593Smuzhiyun #define RATE_MCS0 BIT(12) 785*4882a593Smuzhiyun #define RATE_MCS1 BIT(13) 786*4882a593Smuzhiyun #define RATE_MCS2 BIT(14) 787*4882a593Smuzhiyun #define RATE_MCS3 BIT(15) 788*4882a593Smuzhiyun #define RATE_MCS4 BIT(16) 789*4882a593Smuzhiyun #define RATE_MCS5 BIT(17) 790*4882a593Smuzhiyun #define RATE_MCS6 BIT(18) 791*4882a593Smuzhiyun #define RATE_MCS7 BIT(19) 792*4882a593Smuzhiyun /* MCS 2 Spatial Stream */ 793*4882a593Smuzhiyun #define RATE_MCS8 BIT(20) 794*4882a593Smuzhiyun #define RATE_MCS9 BIT(21) 795*4882a593Smuzhiyun #define RATE_MCS10 BIT(22) 796*4882a593Smuzhiyun #define RATE_MCS11 BIT(23) 797*4882a593Smuzhiyun #define RATE_MCS12 BIT(24) 798*4882a593Smuzhiyun #define RATE_MCS13 BIT(25) 799*4882a593Smuzhiyun #define RATE_MCS14 BIT(26) 800*4882a593Smuzhiyun #define RATE_MCS15 BIT(27) 801*4882a593Smuzhiyun 802*4882a593Smuzhiyun 803*4882a593Smuzhiyun /* ALL CCK Rate */ 804*4882a593Smuzhiyun #define RATE_ALL_CCK (RATR_1M | RATR_2M | RATR_55M | RATR_11M) 805*4882a593Smuzhiyun #define RATE_ALL_OFDM_AG (RATR_6M | RATR_9M | RATR_12M | RATR_18M | RATR_24M|\ 806*4882a593Smuzhiyun RATR_36M | RATR_48M | RATR_54M) 807*4882a593Smuzhiyun #define RATE_ALL_OFDM_1SS (RATR_MCS0 | RATR_MCS1 | RATR_MCS2 | RATR_MCS3 |\ 808*4882a593Smuzhiyun RATR_MCS4 | RATR_MCS5 | RATR_MCS6 | RATR_MCS7) 809*4882a593Smuzhiyun #define RATE_ALL_OFDM_2SS (RATR_MCS8 | RATR_MCS9 | RATR_MCS10 | RATR_MCS11|\ 810*4882a593Smuzhiyun RATR_MCS12 | RATR_MCS13 | RATR_MCS14 | RATR_MCS15) 811*4882a593Smuzhiyun 812*4882a593Smuzhiyun #define RATE_BITMAP_ALL 0xFFFFF 813*4882a593Smuzhiyun 814*4882a593Smuzhiyun /* Only use CCK 1M rate for ACK */ 815*4882a593Smuzhiyun #define RATE_RRSR_CCK_ONLY_1M 0xFFFF1 816*4882a593Smuzhiyun #define RATE_RRSR_WITHOUT_CCK 0xFFFF0 817*4882a593Smuzhiyun 818*4882a593Smuzhiyun /* ---------------------------------------------------------------------------- 819*4882a593Smuzhiyun * BW_OPMODE bits (Offset 0x603, 8bit) 820*4882a593Smuzhiyun * ---------------------------------------------------------------------------- */ 821*4882a593Smuzhiyun #define BW_OPMODE_20MHZ BIT(2) 822*4882a593Smuzhiyun #define BW_OPMODE_5G BIT(1) 823*4882a593Smuzhiyun 824*4882a593Smuzhiyun /* ---------------------------------------------------------------------------- 825*4882a593Smuzhiyun * CAM Config Setting (offset 0x680, 1 byte) 826*4882a593Smuzhiyun * ---------------------------------------------------------------------------- */ 827*4882a593Smuzhiyun #define CAM_VALID BIT(15) 828*4882a593Smuzhiyun #define CAM_NOTVALID 0x0000 829*4882a593Smuzhiyun #define CAM_USEDK BIT(5) 830*4882a593Smuzhiyun 831*4882a593Smuzhiyun #define CAM_CONTENT_COUNT 8 832*4882a593Smuzhiyun 833*4882a593Smuzhiyun #define CAM_NONE 0x0 834*4882a593Smuzhiyun #define CAM_WEP40 0x01 835*4882a593Smuzhiyun #define CAM_TKIP 0x02 836*4882a593Smuzhiyun #define CAM_AES 0x04 837*4882a593Smuzhiyun #define CAM_WEP104 0x05 838*4882a593Smuzhiyun #define CAM_SMS4 0x6 839*4882a593Smuzhiyun 840*4882a593Smuzhiyun #define TOTAL_CAM_ENTRY 32 841*4882a593Smuzhiyun #define HALF_CAM_ENTRY 16 842*4882a593Smuzhiyun 843*4882a593Smuzhiyun #define CAM_CONFIG_USEDK _TRUE 844*4882a593Smuzhiyun #define CAM_CONFIG_NO_USEDK _FALSE 845*4882a593Smuzhiyun 846*4882a593Smuzhiyun #define CAM_WRITE BIT(16) 847*4882a593Smuzhiyun #define CAM_READ 0x00000000 848*4882a593Smuzhiyun #define CAM_POLLINIG BIT(31) 849*4882a593Smuzhiyun 850*4882a593Smuzhiyun /* 851*4882a593Smuzhiyun * 10. Power Save Control Registers 852*4882a593Smuzhiyun * */ 853*4882a593Smuzhiyun #define WOW_PMEN BIT(0) /* Power management Enable. */ 854*4882a593Smuzhiyun #define WOW_WOMEN BIT(1) /* WoW function on or off. */ 855*4882a593Smuzhiyun #define WOW_MAGIC BIT(2) /* Magic packet */ 856*4882a593Smuzhiyun #define WOW_UWF BIT(3) /* Unicast Wakeup frame. */ 857*4882a593Smuzhiyun 858*4882a593Smuzhiyun /* 859*4882a593Smuzhiyun * 12. Host Interrupt Status Registers 860*4882a593Smuzhiyun * 861*4882a593Smuzhiyun * ---------------------------------------------------------------------------- 862*4882a593Smuzhiyun * 8190 IMR/ISR bits 863*4882a593Smuzhiyun * ---------------------------------------------------------------------------- */ 864*4882a593Smuzhiyun #define IMR8190_DISABLED 0x0 865*4882a593Smuzhiyun #define IMR_DISABLED 0x0 866*4882a593Smuzhiyun /* IMR DW0 Bit 0-31 */ 867*4882a593Smuzhiyun #define IMR_BCNDMAINT6 BIT(31) /* Beacon DMA Interrupt 6 */ 868*4882a593Smuzhiyun #define IMR_BCNDMAINT5 BIT(30) /* Beacon DMA Interrupt 5 */ 869*4882a593Smuzhiyun #define IMR_BCNDMAINT4 BIT(29) /* Beacon DMA Interrupt 4 */ 870*4882a593Smuzhiyun #define IMR_BCNDMAINT3 BIT(28) /* Beacon DMA Interrupt 3 */ 871*4882a593Smuzhiyun #define IMR_BCNDMAINT2 BIT(27) /* Beacon DMA Interrupt 2 */ 872*4882a593Smuzhiyun #define IMR_BCNDMAINT1 BIT(26) /* Beacon DMA Interrupt 1 */ 873*4882a593Smuzhiyun #define IMR_BCNDOK8 BIT(25) /* Beacon Queue DMA OK Interrupt 8 */ 874*4882a593Smuzhiyun #define IMR_BCNDOK7 BIT(24) /* Beacon Queue DMA OK Interrupt 7 */ 875*4882a593Smuzhiyun #define IMR_BCNDOK6 BIT(23) /* Beacon Queue DMA OK Interrupt 6 */ 876*4882a593Smuzhiyun #define IMR_BCNDOK5 BIT(22) /* Beacon Queue DMA OK Interrupt 5 */ 877*4882a593Smuzhiyun #define IMR_BCNDOK4 BIT(21) /* Beacon Queue DMA OK Interrupt 4 */ 878*4882a593Smuzhiyun #define IMR_BCNDOK3 BIT(20) /* Beacon Queue DMA OK Interrupt 3 */ 879*4882a593Smuzhiyun #define IMR_BCNDOK2 BIT(19) /* Beacon Queue DMA OK Interrupt 2 */ 880*4882a593Smuzhiyun #define IMR_BCNDOK1 BIT(18) /* Beacon Queue DMA OK Interrupt 1 */ 881*4882a593Smuzhiyun #define IMR_TIMEOUT2 BIT(17) /* Timeout interrupt 2 */ 882*4882a593Smuzhiyun #define IMR_TIMEOUT1 BIT(16) /* Timeout interrupt 1 */ 883*4882a593Smuzhiyun #define IMR_TXFOVW BIT(15) /* Transmit FIFO Overflow */ 884*4882a593Smuzhiyun #define IMR_PSTIMEOUT BIT(14) /* Power save time out interrupt */ 885*4882a593Smuzhiyun #define IMR_BcnInt BIT(13) /* Beacon DMA Interrupt 0 */ 886*4882a593Smuzhiyun #define IMR_RXFOVW BIT(12) /* Receive FIFO Overflow */ 887*4882a593Smuzhiyun #define IMR_RDU BIT(11) /* Receive Descriptor Unavailable */ 888*4882a593Smuzhiyun #define IMR_ATIMEND BIT(10) /* For 92C, ATIM Window End Interrupt. For 8723 and later ICs, it also means P2P CTWin End interrupt. */ 889*4882a593Smuzhiyun #define IMR_BDOK BIT(9) /* Beacon Queue DMA OK Interrupt */ 890*4882a593Smuzhiyun #define IMR_HIGHDOK BIT(8) /* High Queue DMA OK Interrupt */ 891*4882a593Smuzhiyun #define IMR_TBDOK BIT(7) /* Transmit Beacon OK interrupt */ 892*4882a593Smuzhiyun #define IMR_MGNTDOK BIT(6) /* Management Queue DMA OK Interrupt */ 893*4882a593Smuzhiyun #define IMR_TBDER BIT(5) /* For 92C, Transmit Beacon Error Interrupt */ 894*4882a593Smuzhiyun #define IMR_BKDOK BIT(4) /* AC_BK DMA OK Interrupt */ 895*4882a593Smuzhiyun #define IMR_BEDOK BIT(3) /* AC_BE DMA OK Interrupt */ 896*4882a593Smuzhiyun #define IMR_VIDOK BIT(2) /* AC_VI DMA OK Interrupt */ 897*4882a593Smuzhiyun #define IMR_VODOK BIT(1) /* AC_VO DMA Interrupt */ 898*4882a593Smuzhiyun #define IMR_ROK BIT(0) /* Receive DMA OK Interrupt */ 899*4882a593Smuzhiyun 900*4882a593Smuzhiyun /* 13. Host Interrupt Status Extension Register (Offset: 0x012C-012Eh) */ 901*4882a593Smuzhiyun #define IMR_TSF_BIT32_TOGGLE BIT(15) 902*4882a593Smuzhiyun #define IMR_BcnInt_E BIT(12) 903*4882a593Smuzhiyun #define IMR_TXERR BIT(11) 904*4882a593Smuzhiyun #define IMR_RXERR BIT(10) 905*4882a593Smuzhiyun #define IMR_C2HCMD BIT(9) 906*4882a593Smuzhiyun #define IMR_CPWM BIT(8) 907*4882a593Smuzhiyun /* RSVD [2-7] */ 908*4882a593Smuzhiyun #define IMR_OCPINT BIT(1) 909*4882a593Smuzhiyun #define IMR_WLANOFF BIT(0) 910*4882a593Smuzhiyun 911*4882a593Smuzhiyun /* ---------------------------------------------------------------------------- 912*4882a593Smuzhiyun * 8723E series PCIE Host IMR/ISR bit 913*4882a593Smuzhiyun * ---------------------------------------------------------------------------- */ 914*4882a593Smuzhiyun /* IMR DW0 Bit 0-31 */ 915*4882a593Smuzhiyun #define PHIMR_TIMEOUT2 BIT(31) 916*4882a593Smuzhiyun #define PHIMR_TIMEOUT1 BIT(30) 917*4882a593Smuzhiyun #define PHIMR_PSTIMEOUT BIT(29) 918*4882a593Smuzhiyun #define PHIMR_GTINT4 BIT(28) 919*4882a593Smuzhiyun #define PHIMR_GTINT3 BIT(27) 920*4882a593Smuzhiyun #define PHIMR_TXBCNERR BIT(26) 921*4882a593Smuzhiyun #define PHIMR_TXBCNOK BIT(25) 922*4882a593Smuzhiyun #define PHIMR_TSF_BIT32_TOGGLE BIT(24) 923*4882a593Smuzhiyun #define PHIMR_BCNDMAINT3 BIT(23) 924*4882a593Smuzhiyun #define PHIMR_BCNDMAINT2 BIT(22) 925*4882a593Smuzhiyun #define PHIMR_BCNDMAINT1 BIT(21) 926*4882a593Smuzhiyun #define PHIMR_BCNDMAINT0 BIT(20) 927*4882a593Smuzhiyun #define PHIMR_BCNDOK3 BIT(19) 928*4882a593Smuzhiyun #define PHIMR_BCNDOK2 BIT(18) 929*4882a593Smuzhiyun #define PHIMR_BCNDOK1 BIT(17) 930*4882a593Smuzhiyun #define PHIMR_BCNDOK0 BIT(16) 931*4882a593Smuzhiyun #define PHIMR_HSISR_IND_ON BIT(15) 932*4882a593Smuzhiyun #define PHIMR_BCNDMAINT_E BIT(14) 933*4882a593Smuzhiyun #define PHIMR_ATIMEND_E BIT(13) 934*4882a593Smuzhiyun #define PHIMR_ATIM_CTW_END BIT(12) 935*4882a593Smuzhiyun #define PHIMR_HISRE_IND BIT(11) /* RO. HISRE Indicator (HISRE & HIMRE is true, this bit is set to 1) */ 936*4882a593Smuzhiyun #define PHIMR_C2HCMD BIT(10) 937*4882a593Smuzhiyun #define PHIMR_CPWM2 BIT(9) 938*4882a593Smuzhiyun #define PHIMR_CPWM BIT(8) 939*4882a593Smuzhiyun #define PHIMR_HIGHDOK BIT(7) /* High Queue DMA OK Interrupt */ 940*4882a593Smuzhiyun #define PHIMR_MGNTDOK BIT(6) /* Management Queue DMA OK Interrupt */ 941*4882a593Smuzhiyun #define PHIMR_BKDOK BIT(5) /* AC_BK DMA OK Interrupt */ 942*4882a593Smuzhiyun #define PHIMR_BEDOK BIT(4) /* AC_BE DMA OK Interrupt */ 943*4882a593Smuzhiyun #define PHIMR_VIDOK BIT(3) /* AC_VI DMA OK Interrupt */ 944*4882a593Smuzhiyun #define PHIMR_VODOK BIT(2) /* AC_VO DMA Interrupt */ 945*4882a593Smuzhiyun #define PHIMR_RDU BIT(1) /* Receive Descriptor Unavailable */ 946*4882a593Smuzhiyun #define PHIMR_ROK BIT(0) /* Receive DMA OK Interrupt */ 947*4882a593Smuzhiyun 948*4882a593Smuzhiyun /* PCIE Host Interrupt Status Extension bit */ 949*4882a593Smuzhiyun #define PHIMR_BCNDMAINT7 BIT(23) 950*4882a593Smuzhiyun #define PHIMR_BCNDMAINT6 BIT(22) 951*4882a593Smuzhiyun #define PHIMR_BCNDMAINT5 BIT(21) 952*4882a593Smuzhiyun #define PHIMR_BCNDMAINT4 BIT(20) 953*4882a593Smuzhiyun #define PHIMR_BCNDOK7 BIT(19) 954*4882a593Smuzhiyun #define PHIMR_BCNDOK6 BIT(18) 955*4882a593Smuzhiyun #define PHIMR_BCNDOK5 BIT(17) 956*4882a593Smuzhiyun #define PHIMR_BCNDOK4 BIT(16) 957*4882a593Smuzhiyun /* bit12 15: RSVD */ 958*4882a593Smuzhiyun #define PHIMR_TXERR BIT(11) 959*4882a593Smuzhiyun #define PHIMR_RXERR BIT(10) 960*4882a593Smuzhiyun #define PHIMR_TXFOVW BIT(9) 961*4882a593Smuzhiyun #define PHIMR_RXFOVW BIT(8) 962*4882a593Smuzhiyun /* bit2-7: RSVD */ 963*4882a593Smuzhiyun #define PHIMR_OCPINT BIT(1) 964*4882a593Smuzhiyun /* bit0: RSVD */ 965*4882a593Smuzhiyun 966*4882a593Smuzhiyun #define UHIMR_TIMEOUT2 BIT(31) 967*4882a593Smuzhiyun #define UHIMR_TIMEOUT1 BIT(30) 968*4882a593Smuzhiyun #define UHIMR_PSTIMEOUT BIT(29) 969*4882a593Smuzhiyun #define UHIMR_GTINT4 BIT(28) 970*4882a593Smuzhiyun #define UHIMR_GTINT3 BIT(27) 971*4882a593Smuzhiyun #define UHIMR_TXBCNERR BIT(26) 972*4882a593Smuzhiyun #define UHIMR_TXBCNOK BIT(25) 973*4882a593Smuzhiyun #define UHIMR_TSF_BIT32_TOGGLE BIT(24) 974*4882a593Smuzhiyun #define UHIMR_BCNDMAINT3 BIT(23) 975*4882a593Smuzhiyun #define UHIMR_BCNDMAINT2 BIT(22) 976*4882a593Smuzhiyun #define UHIMR_BCNDMAINT1 BIT(21) 977*4882a593Smuzhiyun #define UHIMR_BCNDMAINT0 BIT(20) 978*4882a593Smuzhiyun #define UHIMR_BCNDOK3 BIT(19) 979*4882a593Smuzhiyun #define UHIMR_BCNDOK2 BIT(18) 980*4882a593Smuzhiyun #define UHIMR_BCNDOK1 BIT(17) 981*4882a593Smuzhiyun #define UHIMR_BCNDOK0 BIT(16) 982*4882a593Smuzhiyun #define UHIMR_HSISR_IND BIT(15) 983*4882a593Smuzhiyun #define UHIMR_BCNDMAINT_E BIT(14) 984*4882a593Smuzhiyun /* RSVD BIT(13) */ 985*4882a593Smuzhiyun #define UHIMR_CTW_END BIT(12) 986*4882a593Smuzhiyun /* RSVD BIT(11) */ 987*4882a593Smuzhiyun #define UHIMR_C2HCMD BIT(10) 988*4882a593Smuzhiyun #define UHIMR_CPWM2 BIT(9) 989*4882a593Smuzhiyun #define UHIMR_CPWM BIT(8) 990*4882a593Smuzhiyun #define UHIMR_HIGHDOK BIT(7) /* High Queue DMA OK Interrupt */ 991*4882a593Smuzhiyun #define UHIMR_MGNTDOK BIT(6) /* Management Queue DMA OK Interrupt */ 992*4882a593Smuzhiyun #define UHIMR_BKDOK BIT(5) /* AC_BK DMA OK Interrupt */ 993*4882a593Smuzhiyun #define UHIMR_BEDOK BIT(4) /* AC_BE DMA OK Interrupt */ 994*4882a593Smuzhiyun #define UHIMR_VIDOK BIT(3) /* AC_VI DMA OK Interrupt */ 995*4882a593Smuzhiyun #define UHIMR_VODOK BIT(2) /* AC_VO DMA Interrupt */ 996*4882a593Smuzhiyun #define UHIMR_RDU BIT(1) /* Receive Descriptor Unavailable */ 997*4882a593Smuzhiyun #define UHIMR_ROK BIT(0) /* Receive DMA OK Interrupt */ 998*4882a593Smuzhiyun 999*4882a593Smuzhiyun /* USB Host Interrupt Status Extension bit */ 1000*4882a593Smuzhiyun #define UHIMR_BCNDMAINT7 BIT(23) 1001*4882a593Smuzhiyun #define UHIMR_BCNDMAINT6 BIT(22) 1002*4882a593Smuzhiyun #define UHIMR_BCNDMAINT5 BIT(21) 1003*4882a593Smuzhiyun #define UHIMR_BCNDMAINT4 BIT(20) 1004*4882a593Smuzhiyun #define UHIMR_BCNDOK7 BIT(19) 1005*4882a593Smuzhiyun #define UHIMR_BCNDOK6 BIT(18) 1006*4882a593Smuzhiyun #define UHIMR_BCNDOK5 BIT(17) 1007*4882a593Smuzhiyun #define UHIMR_BCNDOK4 BIT(16) 1008*4882a593Smuzhiyun /* bit14-15: RSVD */ 1009*4882a593Smuzhiyun #define UHIMR_ATIMEND_E BIT(13) 1010*4882a593Smuzhiyun #define UHIMR_ATIMEND BIT(12) 1011*4882a593Smuzhiyun #define UHIMR_TXERR BIT(11) 1012*4882a593Smuzhiyun #define UHIMR_RXERR BIT(10) 1013*4882a593Smuzhiyun #define UHIMR_TXFOVW BIT(9) 1014*4882a593Smuzhiyun #define UHIMR_RXFOVW BIT(8) 1015*4882a593Smuzhiyun /* bit2-7: RSVD */ 1016*4882a593Smuzhiyun #define UHIMR_OCPINT BIT(1) 1017*4882a593Smuzhiyun /* bit0: RSVD */ 1018*4882a593Smuzhiyun 1019*4882a593Smuzhiyun 1020*4882a593Smuzhiyun #define HAL_NIC_UNPLUG_ISR 0xFFFFFFFF /* The value when the NIC is unplugged for PCI. */ 1021*4882a593Smuzhiyun #define HAL_NIC_UNPLUG_PCI_ISR 0xEAEAEAEA /* The value when the NIC is unplugged for PCI in PCI interrupt (page 3). */ 1022*4882a593Smuzhiyun 1023*4882a593Smuzhiyun /* ---------------------------------------------------------------------------- 1024*4882a593Smuzhiyun * 8188 IMR/ISR bits 1025*4882a593Smuzhiyun * ---------------------------------------------------------------------------- */ 1026*4882a593Smuzhiyun #define IMR_DISABLED_88E 0x0 1027*4882a593Smuzhiyun /* IMR DW0(0x0060-0063) Bit 0-31 */ 1028*4882a593Smuzhiyun #define IMR_TXCCK_88E BIT(30) /* TXRPT interrupt when CCX bit of the packet is set */ 1029*4882a593Smuzhiyun #define IMR_PSTIMEOUT_88E BIT(29) /* Power Save Time Out Interrupt */ 1030*4882a593Smuzhiyun #define IMR_GTINT4_88E BIT(28) /* When GTIMER4 expires, this bit is set to 1 */ 1031*4882a593Smuzhiyun #define IMR_GTINT3_88E BIT(27) /* When GTIMER3 expires, this bit is set to 1 */ 1032*4882a593Smuzhiyun #define IMR_TBDER_88E BIT(26) /* Transmit Beacon0 Error */ 1033*4882a593Smuzhiyun #define IMR_TBDOK_88E BIT(25) /* Transmit Beacon0 OK */ 1034*4882a593Smuzhiyun #define IMR_TSF_BIT32_TOGGLE_88E BIT(24) /* TSF Timer BIT32 toggle indication interrupt */ 1035*4882a593Smuzhiyun #define IMR_BCNDMAINT0_88E BIT(20) /* Beacon DMA Interrupt 0 */ 1036*4882a593Smuzhiyun #define IMR_BCNDERR0_88E BIT(16) /* Beacon Queue DMA Error 0 */ 1037*4882a593Smuzhiyun #define IMR_HSISR_IND_ON_INT_88E BIT(15) /* HSISR Indicator (HSIMR & HSISR is true, this bit is set to 1) */ 1038*4882a593Smuzhiyun #define IMR_BCNDMAINT_E_88E BIT(14) /* Beacon DMA Interrupt Extension for Win7 */ 1039*4882a593Smuzhiyun #define IMR_ATIMEND_88E BIT(12) /* CTWidnow End or ATIM Window End */ 1040*4882a593Smuzhiyun #define IMR_HISR1_IND_INT_88E BIT(11) /* HISR1 Indicator (HISR1 & HIMR1 is true, this bit is set to 1) */ 1041*4882a593Smuzhiyun #define IMR_C2HCMD_88E BIT(10) /* CPU to Host Command INT Status, Write 1 clear */ 1042*4882a593Smuzhiyun #define IMR_CPWM2_88E BIT(9) /* CPU power Mode exchange INT Status, Write 1 clear */ 1043*4882a593Smuzhiyun #define IMR_CPWM_88E BIT(8) /* CPU power Mode exchange INT Status, Write 1 clear */ 1044*4882a593Smuzhiyun #define IMR_HIGHDOK_88E BIT(7) /* High Queue DMA OK */ 1045*4882a593Smuzhiyun #define IMR_MGNTDOK_88E BIT(6) /* Management Queue DMA OK */ 1046*4882a593Smuzhiyun #define IMR_BKDOK_88E BIT(5) /* AC_BK DMA OK */ 1047*4882a593Smuzhiyun #define IMR_BEDOK_88E BIT(4) /* AC_BE DMA OK */ 1048*4882a593Smuzhiyun #define IMR_VIDOK_88E BIT(3) /* AC_VI DMA OK */ 1049*4882a593Smuzhiyun #define IMR_VODOK_88E BIT(2) /* AC_VO DMA OK */ 1050*4882a593Smuzhiyun #define IMR_RDU_88E BIT(1) /* Rx Descriptor Unavailable */ 1051*4882a593Smuzhiyun #define IMR_ROK_88E BIT(0) /* Receive DMA OK */ 1052*4882a593Smuzhiyun 1053*4882a593Smuzhiyun /* IMR DW1(0x00B4-00B7) Bit 0-31 */ 1054*4882a593Smuzhiyun #define IMR_BCNDMAINT7_88E BIT(27) /* Beacon DMA Interrupt 7 */ 1055*4882a593Smuzhiyun #define IMR_BCNDMAINT6_88E BIT(26) /* Beacon DMA Interrupt 6 */ 1056*4882a593Smuzhiyun #define IMR_BCNDMAINT5_88E BIT(25) /* Beacon DMA Interrupt 5 */ 1057*4882a593Smuzhiyun #define IMR_BCNDMAINT4_88E BIT(24) /* Beacon DMA Interrupt 4 */ 1058*4882a593Smuzhiyun #define IMR_BCNDMAINT3_88E BIT(23) /* Beacon DMA Interrupt 3 */ 1059*4882a593Smuzhiyun #define IMR_BCNDMAINT2_88E BIT(22) /* Beacon DMA Interrupt 2 */ 1060*4882a593Smuzhiyun #define IMR_BCNDMAINT1_88E BIT(21) /* Beacon DMA Interrupt 1 */ 1061*4882a593Smuzhiyun #define IMR_BCNDOK7_88E BIT(20) /* Beacon Queue DMA OK Interrupt 7 */ 1062*4882a593Smuzhiyun #define IMR_BCNDOK6_88E BIT(19) /* Beacon Queue DMA OK Interrupt 6 */ 1063*4882a593Smuzhiyun #define IMR_BCNDOK5_88E BIT(18) /* Beacon Queue DMA OK Interrupt 5 */ 1064*4882a593Smuzhiyun #define IMR_BCNDOK4_88E BIT(17) /* Beacon Queue DMA OK Interrupt 4 */ 1065*4882a593Smuzhiyun #define IMR_BCNDOK3_88E BIT(16) /* Beacon Queue DMA OK Interrupt 3 */ 1066*4882a593Smuzhiyun #define IMR_BCNDOK2_88E BIT(15) /* Beacon Queue DMA OK Interrupt 2 */ 1067*4882a593Smuzhiyun #define IMR_BCNDOK1_88E BIT(14) /* Beacon Queue DMA OK Interrupt 1 */ 1068*4882a593Smuzhiyun #define IMR_ATIMEND_E_88E BIT(13) /* ATIM Window End Extension for Win7 */ 1069*4882a593Smuzhiyun #define IMR_TXERR_88E BIT(11) /* Tx Error Flag Interrupt Status, write 1 clear. */ 1070*4882a593Smuzhiyun #define IMR_RXERR_88E BIT(10) /* Rx Error Flag INT Status, Write 1 clear */ 1071*4882a593Smuzhiyun #define IMR_TXFOVW_88E BIT(9) /* Transmit FIFO Overflow */ 1072*4882a593Smuzhiyun #define IMR_RXFOVW_88E BIT(8) /* Receive FIFO Overflow */ 1073*4882a593Smuzhiyun 1074*4882a593Smuzhiyun /*=================================================================== 1075*4882a593Smuzhiyun ===================================================================== 1076*4882a593Smuzhiyun Here the register defines are for 92C. When the define is as same with 92C, 1077*4882a593Smuzhiyun we will use the 92C's define for the consistency 1078*4882a593Smuzhiyun So the following defines for 92C is not entire!!!!!! 1079*4882a593Smuzhiyun ===================================================================== 1080*4882a593Smuzhiyun =====================================================================*/ 1081*4882a593Smuzhiyun /* 1082*4882a593Smuzhiyun Based on Datasheet V33---090401 1083*4882a593Smuzhiyun Register Summary 1084*4882a593Smuzhiyun Current IOREG MAP 1085*4882a593Smuzhiyun 0x0000h ~ 0x00FFh System Configuration (256 Bytes) 1086*4882a593Smuzhiyun 0x0100h ~ 0x01FFh MACTOP General Configuration (256 Bytes) 1087*4882a593Smuzhiyun 0x0200h ~ 0x027Fh TXDMA Configuration (128 Bytes) 1088*4882a593Smuzhiyun 0x0280h ~ 0x02FFh RXDMA Configuration (128 Bytes) 1089*4882a593Smuzhiyun 0x0300h ~ 0x03FFh PCIE EMAC Reserved Region (256 Bytes) 1090*4882a593Smuzhiyun 0x0400h ~ 0x04FFh Protocol Configuration (256 Bytes) 1091*4882a593Smuzhiyun 0x0500h ~ 0x05FFh EDCA Configuration (256 Bytes) 1092*4882a593Smuzhiyun 0x0600h ~ 0x07FFh WMAC Configuration (512 Bytes) 1093*4882a593Smuzhiyun 0x2000h ~ 0x3FFFh 8051 FW Download Region (8196 Bytes) 1094*4882a593Smuzhiyun */ 1095*4882a593Smuzhiyun /* ---------------------------------------------------------------------------- */ 1096*4882a593Smuzhiyun /* 8192C (TXPAUSE) transmission pause (Offset 0x522, 8 bits) */ 1097*4882a593Smuzhiyun /* ---------------------------------------------------------------------------- */ 1098*4882a593Smuzhiyun /* Note: 1099*4882a593Smuzhiyun * The the bits of stoping AC(VO/VI/BE/BK) queue in datasheet RTL8192S/RTL8192C are wrong, 1100*4882a593Smuzhiyun * the correct arragement is VO - Bit0, VI - Bit1, BE - Bit2, and BK - Bit3. 1101*4882a593Smuzhiyun * 8723 and 88E may be not correct either in the eralier version. Confirmed with DD Tim. 1102*4882a593Smuzhiyun * By Bruce, 2011-09-22. */ 1103*4882a593Smuzhiyun #define StopBecon BIT(6) 1104*4882a593Smuzhiyun #define StopHigh BIT(5) 1105*4882a593Smuzhiyun #define StopMgt BIT(4) 1106*4882a593Smuzhiyun #define StopBK BIT(3) 1107*4882a593Smuzhiyun #define StopBE BIT(2) 1108*4882a593Smuzhiyun #define StopVI BIT(1) 1109*4882a593Smuzhiyun #define StopVO BIT(0) 1110*4882a593Smuzhiyun 1111*4882a593Smuzhiyun /* ---------------------------------------------------------------------------- 1112*4882a593Smuzhiyun * 8192C (RCR) Receive Configuration Register (Offset 0x608, 32 bits) 1113*4882a593Smuzhiyun * ---------------------------------------------------------------------------- */ 1114*4882a593Smuzhiyun #define RCR_APPFCS BIT(31) /* WMAC append FCS after pauload */ 1115*4882a593Smuzhiyun #define RCR_APP_MIC BIT(30) /* MACRX will retain the MIC at the bottom of the packet. */ 1116*4882a593Smuzhiyun #define RCR_APP_ICV BIT(29) /* MACRX will retain the ICV at the bottom of the packet. */ 1117*4882a593Smuzhiyun #define RCR_APP_PHYST_RXFF BIT(28) /* PHY Status is appended before RX packet in RXFF */ 1118*4882a593Smuzhiyun #define RCR_APP_BA_SSN BIT(27) /* SSN of previous TXBA is appended as after original RXDESC as the 4-th DW of RXDESC. */ 1119*4882a593Smuzhiyun #define RCR_VHT_DACK BIT(26) /* This bit to control response type for vht single mpdu data packet. 1. ACK as response 0. BA as response */ 1120*4882a593Smuzhiyun #define RCR_TCPOFLD_EN BIT(25) /* Enable TCP checksum offload */ 1121*4882a593Smuzhiyun #define RCR_ENMBID BIT(24) /* Enable Multiple BssId. Only response ACK to the packets whose DID(A1) matching to the addresses in the MBSSID CAM Entries. */ 1122*4882a593Smuzhiyun #define RCR_LSIGEN BIT(23) /* Enable LSIG TXOP Protection function. Search KEYCAM for each rx packet to check if LSIGEN bit is set. */ 1123*4882a593Smuzhiyun #define RCR_MFBEN BIT(22) /* Enable immediate MCS Feedback function. When Rx packet with MRQ = 1'b1, then search KEYCAM to find sender's MCS Feedback function and send response. */ 1124*4882a593Smuzhiyun #define RCR_DISCHKPPDLLEN BIT(21) /* Do not check PPDU while the PPDU length is smaller than 14 byte. */ 1125*4882a593Smuzhiyun #define RCR_PKTCTL_DLEN BIT(20) /* While rx path dead lock occurs, reset rx path */ 1126*4882a593Smuzhiyun #define RCR_DISGCLK BIT(19) /* Disable macrx clock gating control (no used) */ 1127*4882a593Smuzhiyun #define RCR_TIM_PARSER_EN BIT(18) /* RX Beacon TIM Parser. */ 1128*4882a593Smuzhiyun #define RCR_BC_MD_EN BIT(17) /* Broadcast data packet more data bit check interrupt enable.*/ 1129*4882a593Smuzhiyun #define RCR_UC_MD_EN BIT(16) /* Unicast data packet more data bit check interrupt enable. */ 1130*4882a593Smuzhiyun #define RCR_RXSK_PERPKT BIT(15) /* Executing key search per MPDU */ 1131*4882a593Smuzhiyun #define RCR_HTC_LOC_CTRL BIT(14) /* MFC<--HTC = 1 MFC-->HTC = 0 */ 1132*4882a593Smuzhiyun #define RCR_AMF BIT(13) /* Accept management type frame */ 1133*4882a593Smuzhiyun #define RCR_ACF BIT(12) /* Accept control type frame. Control frames BA, BAR, and PS-Poll (when in AP mode) are not controlled by this bit. They are controlled by ADF. */ 1134*4882a593Smuzhiyun #define RCR_ADF BIT(11) /* Accept data type frame. This bit also regulates BA, BAR, and PS-Poll (AP mode only). */ 1135*4882a593Smuzhiyun #define RCR_DISDECMYPKT BIT(10) /* This bit determines whether hw need to do decryption.1: If A1 match, do decryption.0: Do decryption. */ 1136*4882a593Smuzhiyun #define RCR_AICV BIT(9) /* Accept ICV error packet */ 1137*4882a593Smuzhiyun #define RCR_ACRC32 BIT(8) /* Accept CRC32 error packet */ 1138*4882a593Smuzhiyun #define RCR_CBSSID_BCN BIT(7) /* Accept BSSID match packet (Rx beacon, probe rsp) */ 1139*4882a593Smuzhiyun #define RCR_CBSSID_DATA BIT(6) /* Accept BSSID match packet (Data) */ 1140*4882a593Smuzhiyun #define RCR_APWRMGT BIT(5) /* Accept power management packet */ 1141*4882a593Smuzhiyun #define RCR_ADD3 BIT(4) /* Accept address 3 match packet */ 1142*4882a593Smuzhiyun #define RCR_AB BIT(3) /* Accept broadcast packet */ 1143*4882a593Smuzhiyun #define RCR_AM BIT(2) /* Accept multicast packet */ 1144*4882a593Smuzhiyun #define RCR_APM BIT(1) /* Accept physical match packet */ 1145*4882a593Smuzhiyun #define RCR_AAP BIT(0) /* Accept all unicast packet */ 1146*4882a593Smuzhiyun 1147*4882a593Smuzhiyun 1148*4882a593Smuzhiyun /* ----------------------------------------------------- 1149*4882a593Smuzhiyun * 1150*4882a593Smuzhiyun * 0x0000h ~ 0x00FFh System Configuration 1151*4882a593Smuzhiyun * 1152*4882a593Smuzhiyun * ----------------------------------------------------- */ 1153*4882a593Smuzhiyun 1154*4882a593Smuzhiyun /* 2 SYS_ISO_CTRL */ 1155*4882a593Smuzhiyun #define ISO_MD2PP BIT(0) 1156*4882a593Smuzhiyun #define ISO_UA2USB BIT(1) 1157*4882a593Smuzhiyun #define ISO_UD2CORE BIT(2) 1158*4882a593Smuzhiyun #define ISO_PA2PCIE BIT(3) 1159*4882a593Smuzhiyun #define ISO_PD2CORE BIT(4) 1160*4882a593Smuzhiyun #define ISO_IP2MAC BIT(5) 1161*4882a593Smuzhiyun #define ISO_DIOP BIT(6) 1162*4882a593Smuzhiyun #define ISO_DIOE BIT(7) 1163*4882a593Smuzhiyun #define ISO_EB2CORE BIT(8) 1164*4882a593Smuzhiyun #define ISO_DIOR BIT(9) 1165*4882a593Smuzhiyun #define PWC_EV12V BIT(15) 1166*4882a593Smuzhiyun 1167*4882a593Smuzhiyun 1168*4882a593Smuzhiyun /* 2 SYS_FUNC_EN */ 1169*4882a593Smuzhiyun #define FEN_BBRSTB BIT(0) 1170*4882a593Smuzhiyun #define FEN_BB_GLB_RSTn BIT(1) 1171*4882a593Smuzhiyun #define FEN_USBA BIT(2) 1172*4882a593Smuzhiyun #define FEN_UPLL BIT(3) 1173*4882a593Smuzhiyun #define FEN_USBD BIT(4) 1174*4882a593Smuzhiyun #define FEN_DIO_PCIE BIT(5) 1175*4882a593Smuzhiyun #define FEN_PCIEA BIT(6) 1176*4882a593Smuzhiyun #define FEN_PPLL BIT(7) 1177*4882a593Smuzhiyun #define FEN_PCIED BIT(8) 1178*4882a593Smuzhiyun #define FEN_DIOE BIT(9) 1179*4882a593Smuzhiyun #define FEN_CPUEN BIT(10) 1180*4882a593Smuzhiyun #define FEN_DCORE BIT(11) 1181*4882a593Smuzhiyun #define FEN_ELDR BIT(12) 1182*4882a593Smuzhiyun #define FEN_EN_25_1 BIT(13) 1183*4882a593Smuzhiyun #define FEN_HWPDN BIT(14) 1184*4882a593Smuzhiyun #define FEN_MREGEN BIT(15) 1185*4882a593Smuzhiyun 1186*4882a593Smuzhiyun /* 2 APS_FSMCO */ 1187*4882a593Smuzhiyun #define PFM_LDALL BIT(0) 1188*4882a593Smuzhiyun #define PFM_ALDN BIT(1) 1189*4882a593Smuzhiyun #define PFM_LDKP BIT(2) 1190*4882a593Smuzhiyun #define PFM_WOWL BIT(3) 1191*4882a593Smuzhiyun #define EnPDN BIT(4) 1192*4882a593Smuzhiyun #define PDN_PL BIT(5) 1193*4882a593Smuzhiyun #define APFM_ONMAC BIT(8) 1194*4882a593Smuzhiyun #define APFM_OFF BIT(9) 1195*4882a593Smuzhiyun #define APFM_RSM BIT(10) 1196*4882a593Smuzhiyun #define AFSM_HSUS BIT(11) 1197*4882a593Smuzhiyun #define AFSM_PCIE BIT(12) 1198*4882a593Smuzhiyun #define APDM_MAC BIT(13) 1199*4882a593Smuzhiyun #define APDM_HOST BIT(14) 1200*4882a593Smuzhiyun #define APDM_HPDN BIT(15) 1201*4882a593Smuzhiyun #define RDY_MACON BIT(16) 1202*4882a593Smuzhiyun #define SUS_HOST BIT(17) 1203*4882a593Smuzhiyun #define ROP_ALD BIT(20) 1204*4882a593Smuzhiyun #define ROP_PWR BIT(21) 1205*4882a593Smuzhiyun #define ROP_SPS BIT(22) 1206*4882a593Smuzhiyun #define SOP_MRST BIT(25) 1207*4882a593Smuzhiyun #define SOP_FUSE BIT(26) 1208*4882a593Smuzhiyun #define SOP_ABG BIT(27) 1209*4882a593Smuzhiyun #define SOP_AMB BIT(28) 1210*4882a593Smuzhiyun #define SOP_RCK BIT(29) 1211*4882a593Smuzhiyun #define SOP_A8M BIT(30) 1212*4882a593Smuzhiyun #define XOP_BTCK BIT(31) 1213*4882a593Smuzhiyun 1214*4882a593Smuzhiyun /* 2 SYS_CLKR */ 1215*4882a593Smuzhiyun #define ANAD16V_EN BIT(0) 1216*4882a593Smuzhiyun #define ANA8M BIT(1) 1217*4882a593Smuzhiyun #define MACSLP BIT(4) 1218*4882a593Smuzhiyun #define LOADER_CLK_EN BIT(5) 1219*4882a593Smuzhiyun 1220*4882a593Smuzhiyun 1221*4882a593Smuzhiyun /* 2 9346CR /REG_SYS_EEPROM_CTRL */ 1222*4882a593Smuzhiyun #define BOOT_FROM_EEPROM BIT(4) 1223*4882a593Smuzhiyun #define EEPROMSEL BIT(4) 1224*4882a593Smuzhiyun #define EEPROM_EN BIT(5) 1225*4882a593Smuzhiyun 1226*4882a593Smuzhiyun 1227*4882a593Smuzhiyun /* 2 RF_CTRL */ 1228*4882a593Smuzhiyun #define RF_EN BIT(0) 1229*4882a593Smuzhiyun #define RF_RSTB BIT(1) 1230*4882a593Smuzhiyun #define RF_SDMRSTB BIT(2) 1231*4882a593Smuzhiyun 1232*4882a593Smuzhiyun 1233*4882a593Smuzhiyun /* 2 LDOV12D_CTRL */ 1234*4882a593Smuzhiyun #define LDV12_EN BIT(0) 1235*4882a593Smuzhiyun #define LDV12_SDBY BIT(1) 1236*4882a593Smuzhiyun #define LPLDO_HSM BIT(2) 1237*4882a593Smuzhiyun #define LPLDO_LSM_DIS BIT(3) 1238*4882a593Smuzhiyun #define _LDV12_VADJ(x) (((x) & 0xF) << 4) 1239*4882a593Smuzhiyun 1240*4882a593Smuzhiyun 1241*4882a593Smuzhiyun 1242*4882a593Smuzhiyun /* 2 EFUSE_TEST (For RTL8723 partially) */ 1243*4882a593Smuzhiyun #define EF_TRPT BIT(7) 1244*4882a593Smuzhiyun #define EF_CELL_SEL (BIT(8) | BIT(9)) /* 00: Wifi Efuse, 01: BT Efuse0, 10: BT Efuse1, 11: BT Efuse2 */ 1245*4882a593Smuzhiyun #define LDOE25_EN BIT(31) 1246*4882a593Smuzhiyun #define EFUSE_SEL(x) (((x) & 0x3) << 8) 1247*4882a593Smuzhiyun #define EFUSE_SEL_MASK 0x300 1248*4882a593Smuzhiyun #define EFUSE_WIFI_SEL_0 0x0 1249*4882a593Smuzhiyun #define EFUSE_BT_SEL_0 0x1 1250*4882a593Smuzhiyun #define EFUSE_BT_SEL_1 0x2 1251*4882a593Smuzhiyun #define EFUSE_BT_SEL_2 0x3 1252*4882a593Smuzhiyun 1253*4882a593Smuzhiyun /* 2 REG_GPIO_INTM (Offset 0x0048) */ 1254*4882a593Smuzhiyun #define BIT_EXTWOL_EN BIT(16) 1255*4882a593Smuzhiyun 1256*4882a593Smuzhiyun /* 2 REG_LED_CFG (Offset 0x004C) */ 1257*4882a593Smuzhiyun #define BIT_SW_SPDT_SEL BIT(22) 1258*4882a593Smuzhiyun 1259*4882a593Smuzhiyun /* 2 REG_SW_GPIO_SHARE_CTRL_0 (Offset 0x1038) */ 1260*4882a593Smuzhiyun #define BIT_BTGP_WAKE_LOC (BIT(10) | BIT(11)) 1261*4882a593Smuzhiyun #define BIT_SW_GPIO_FUNC BIT(0) 1262*4882a593Smuzhiyun 1263*4882a593Smuzhiyun /* 2 REG_SW_GPIO_SHARE_CTRL_1 (Offset 0x103C) */ 1264*4882a593Smuzhiyun #define BIT_WLMAC_DBG_LOC (BIT(9) | BIT(10)) 1265*4882a593Smuzhiyun #define BIT_WL_GPIO_SEL (BIT(30) | BIT(31)) 1266*4882a593Smuzhiyun 1267*4882a593Smuzhiyun /* 2 8051FWDL 1268*4882a593Smuzhiyun * 2 MCUFWDL */ 1269*4882a593Smuzhiyun #define MCUFWDL_EN BIT(0) 1270*4882a593Smuzhiyun #define MCUFWDL_RDY BIT(1) 1271*4882a593Smuzhiyun #define FWDL_ChkSum_rpt BIT(2) 1272*4882a593Smuzhiyun #define MACINI_RDY BIT(3) 1273*4882a593Smuzhiyun #define BBINI_RDY BIT(4) 1274*4882a593Smuzhiyun #define RFINI_RDY BIT(5) 1275*4882a593Smuzhiyun #define WINTINI_RDY BIT(6) 1276*4882a593Smuzhiyun #define RAM_DL_SEL BIT(7) 1277*4882a593Smuzhiyun #define CPU_DL_READY BIT(15) /* add flag by gw for fw download ready 20130826 */ 1278*4882a593Smuzhiyun #define ROM_DLEN BIT(19) 1279*4882a593Smuzhiyun #define CPRST BIT(23) 1280*4882a593Smuzhiyun 1281*4882a593Smuzhiyun 1282*4882a593Smuzhiyun /* 2 REG_SYS_CFG */ 1283*4882a593Smuzhiyun #define XCLK_VLD BIT(0) 1284*4882a593Smuzhiyun #define ACLK_VLD BIT(1) 1285*4882a593Smuzhiyun #define UCLK_VLD BIT(2) 1286*4882a593Smuzhiyun #define PCLK_VLD BIT(3) 1287*4882a593Smuzhiyun #define PCIRSTB BIT(4) 1288*4882a593Smuzhiyun #define V15_VLD BIT(5) 1289*4882a593Smuzhiyun #define SW_OFFLOAD_EN BIT(7) 1290*4882a593Smuzhiyun #define SIC_IDLE BIT(8) 1291*4882a593Smuzhiyun #define BD_MAC2 BIT(9) 1292*4882a593Smuzhiyun #define BD_MAC1 BIT(10) 1293*4882a593Smuzhiyun #define IC_MACPHY_MODE BIT(11) 1294*4882a593Smuzhiyun #define CHIP_VER (BIT(12) | BIT(13) | BIT(14) | BIT(15)) 1295*4882a593Smuzhiyun #define BT_FUNC BIT(16) 1296*4882a593Smuzhiyun #define VENDOR_ID BIT(19) 1297*4882a593Smuzhiyun #define EXT_VENDOR_ID (BIT(18) | BIT(19)) /* Currently only for RTL8723B */ 1298*4882a593Smuzhiyun #define PAD_HWPD_IDN BIT(22) 1299*4882a593Smuzhiyun #define TRP_VAUX_EN BIT(23) /* RTL ID */ 1300*4882a593Smuzhiyun #define TRP_BT_EN BIT(24) 1301*4882a593Smuzhiyun #define BD_PKG_SEL BIT(25) 1302*4882a593Smuzhiyun #define BD_HCI_SEL BIT(26) 1303*4882a593Smuzhiyun #define TYPE_ID BIT(27) 1304*4882a593Smuzhiyun #define RF_TYPE_ID BIT(27) 1305*4882a593Smuzhiyun 1306*4882a593Smuzhiyun #define RTL_ID BIT(23) /* TestChip ID, 1:Test(RLE); 0:MP(RL) */ 1307*4882a593Smuzhiyun #define SPS_SEL BIT(24) /* 1:LDO regulator mode; 0:Switching regulator mode */ 1308*4882a593Smuzhiyun 1309*4882a593Smuzhiyun 1310*4882a593Smuzhiyun #define CHIP_VER_RTL_MASK 0xF000 /* Bit 12 ~ 15 */ 1311*4882a593Smuzhiyun #define CHIP_VER_RTL_SHIFT 12 1312*4882a593Smuzhiyun #define EXT_VENDOR_ID_SHIFT 18 1313*4882a593Smuzhiyun 1314*4882a593Smuzhiyun /* 2 REG_GPIO_OUTSTS (For RTL8723 only) */ 1315*4882a593Smuzhiyun #define EFS_HCI_SEL (BIT(0) | BIT(1)) 1316*4882a593Smuzhiyun #define PAD_HCI_SEL (BIT(2) | BIT(3)) 1317*4882a593Smuzhiyun #define HCI_SEL (BIT(4) | BIT(5)) 1318*4882a593Smuzhiyun #define PKG_SEL_HCI BIT(6) 1319*4882a593Smuzhiyun #define FEN_GPS BIT(7) 1320*4882a593Smuzhiyun #define FEN_BT BIT(8) 1321*4882a593Smuzhiyun #define FEN_WL BIT(9) 1322*4882a593Smuzhiyun #define FEN_PCI BIT(10) 1323*4882a593Smuzhiyun #define FEN_USB BIT(11) 1324*4882a593Smuzhiyun #define BTRF_HWPDN_N BIT(12) 1325*4882a593Smuzhiyun #define WLRF_HWPDN_N BIT(13) 1326*4882a593Smuzhiyun #define PDN_BT_N BIT(14) 1327*4882a593Smuzhiyun #define PDN_GPS_N BIT(15) 1328*4882a593Smuzhiyun #define BT_CTL_HWPDN BIT(16) 1329*4882a593Smuzhiyun #define GPS_CTL_HWPDN BIT(17) 1330*4882a593Smuzhiyun #define PPHY_SUSB BIT(20) 1331*4882a593Smuzhiyun #define UPHY_SUSB BIT(21) 1332*4882a593Smuzhiyun #define PCI_SUSEN BIT(22) 1333*4882a593Smuzhiyun #define USB_SUSEN BIT(23) 1334*4882a593Smuzhiyun #define RF_RL_ID (BIT(31) | BIT(30) | BIT(29) | BIT(28)) 1335*4882a593Smuzhiyun 1336*4882a593Smuzhiyun 1337*4882a593Smuzhiyun /* ----------------------------------------------------- 1338*4882a593Smuzhiyun * 1339*4882a593Smuzhiyun * 0x0100h ~ 0x01FFh MACTOP General Configuration 1340*4882a593Smuzhiyun * 1341*4882a593Smuzhiyun * ----------------------------------------------------- */ 1342*4882a593Smuzhiyun 1343*4882a593Smuzhiyun /* 2 Function Enable Registers 1344*4882a593Smuzhiyun * 2 CR */ 1345*4882a593Smuzhiyun #define HCI_TXDMA_EN BIT(0) 1346*4882a593Smuzhiyun #define HCI_RXDMA_EN BIT(1) 1347*4882a593Smuzhiyun #define TXDMA_EN BIT(2) 1348*4882a593Smuzhiyun #define RXDMA_EN BIT(3) 1349*4882a593Smuzhiyun #define PROTOCOL_EN BIT(4) 1350*4882a593Smuzhiyun #define SCHEDULE_EN BIT(5) 1351*4882a593Smuzhiyun #define MACTXEN BIT(6) 1352*4882a593Smuzhiyun #define MACRXEN BIT(7) 1353*4882a593Smuzhiyun #define ENSWBCN BIT(8) 1354*4882a593Smuzhiyun #define ENSEC BIT(9) 1355*4882a593Smuzhiyun #define CALTMR_EN BIT(10) /* 32k CAL TMR enable */ 1356*4882a593Smuzhiyun 1357*4882a593Smuzhiyun /* Network type */ 1358*4882a593Smuzhiyun #define _NETTYPE(x) (((x) & 0x3) << 16) 1359*4882a593Smuzhiyun #define MASK_NETTYPE 0x30000 1360*4882a593Smuzhiyun #define NT_NO_LINK 0x0 1361*4882a593Smuzhiyun #define NT_LINK_AD_HOC 0x1 1362*4882a593Smuzhiyun #define NT_LINK_AP 0x2 1363*4882a593Smuzhiyun #define NT_AS_AP 0x3 1364*4882a593Smuzhiyun 1365*4882a593Smuzhiyun /* 2 PBP - Page Size Register */ 1366*4882a593Smuzhiyun #define GET_RX_PAGE_SIZE(value) ((value) & 0xF) 1367*4882a593Smuzhiyun #define GET_TX_PAGE_SIZE(value) (((value) & 0xF0) >> 4) 1368*4882a593Smuzhiyun #define _PSRX_MASK 0xF 1369*4882a593Smuzhiyun #define _PSTX_MASK 0xF0 1370*4882a593Smuzhiyun #define _PSRX(x) (x) 1371*4882a593Smuzhiyun #define _PSTX(x) ((x) << 4) 1372*4882a593Smuzhiyun 1373*4882a593Smuzhiyun #define PBP_64 0x0 1374*4882a593Smuzhiyun #define PBP_128 0x1 1375*4882a593Smuzhiyun #define PBP_256 0x2 1376*4882a593Smuzhiyun #define PBP_512 0x3 1377*4882a593Smuzhiyun #define PBP_1024 0x4 1378*4882a593Smuzhiyun 1379*4882a593Smuzhiyun 1380*4882a593Smuzhiyun /* 2 TX/RXDMA */ 1381*4882a593Smuzhiyun #define RXDMA_ARBBW_EN BIT(0) 1382*4882a593Smuzhiyun #define RXSHFT_EN BIT(1) 1383*4882a593Smuzhiyun #define RXDMA_AGG_EN BIT(2) 1384*4882a593Smuzhiyun #define QS_VO_QUEUE BIT(8) 1385*4882a593Smuzhiyun #define QS_VI_QUEUE BIT(9) 1386*4882a593Smuzhiyun #define QS_BE_QUEUE BIT(10) 1387*4882a593Smuzhiyun #define QS_BK_QUEUE BIT(11) 1388*4882a593Smuzhiyun #define QS_MANAGER_QUEUE BIT(12) 1389*4882a593Smuzhiyun #define QS_HIGH_QUEUE BIT(13) 1390*4882a593Smuzhiyun 1391*4882a593Smuzhiyun #define HQSEL_VOQ BIT(0) 1392*4882a593Smuzhiyun #define HQSEL_VIQ BIT(1) 1393*4882a593Smuzhiyun #define HQSEL_BEQ BIT(2) 1394*4882a593Smuzhiyun #define HQSEL_BKQ BIT(3) 1395*4882a593Smuzhiyun #define HQSEL_MGTQ BIT(4) 1396*4882a593Smuzhiyun #define HQSEL_HIQ BIT(5) 1397*4882a593Smuzhiyun 1398*4882a593Smuzhiyun /* For normal driver, 0x10C */ 1399*4882a593Smuzhiyun #define _TXDMA_CMQ_MAP(x) (((x) & 0x3) << 16) 1400*4882a593Smuzhiyun #define _TXDMA_HIQ_MAP(x) (((x) & 0x3) << 14) 1401*4882a593Smuzhiyun #define _TXDMA_MGQ_MAP(x) (((x) & 0x3) << 12) 1402*4882a593Smuzhiyun #define _TXDMA_BKQ_MAP(x) (((x) & 0x3) << 10) 1403*4882a593Smuzhiyun #define _TXDMA_BEQ_MAP(x) (((x) & 0x3) << 8) 1404*4882a593Smuzhiyun #define _TXDMA_VIQ_MAP(x) (((x) & 0x3) << 6) 1405*4882a593Smuzhiyun #define _TXDMA_VOQ_MAP(x) (((x) & 0x3) << 4) 1406*4882a593Smuzhiyun 1407*4882a593Smuzhiyun #define QUEUE_EXTRA 0 1408*4882a593Smuzhiyun #define QUEUE_LOW 1 1409*4882a593Smuzhiyun #define QUEUE_NORMAL 2 1410*4882a593Smuzhiyun #define QUEUE_HIGH 3 1411*4882a593Smuzhiyun #define QUEUE_EXTRA_1 4 1412*4882a593Smuzhiyun #define QUEUE_EXTRA_2 5 1413*4882a593Smuzhiyun 1414*4882a593Smuzhiyun /* 2 TRXFF_BNDY */ 1415*4882a593Smuzhiyun 1416*4882a593Smuzhiyun 1417*4882a593Smuzhiyun /* 2 LLT_INIT */ 1418*4882a593Smuzhiyun #define _LLT_NO_ACTIVE 0x0 1419*4882a593Smuzhiyun #define _LLT_WRITE_ACCESS 0x1 1420*4882a593Smuzhiyun #define _LLT_READ_ACCESS 0x2 1421*4882a593Smuzhiyun 1422*4882a593Smuzhiyun #define _LLT_INIT_DATA(x) ((x) & 0xFF) 1423*4882a593Smuzhiyun #define _LLT_INIT_ADDR(x) (((x) & 0xFF) << 8) 1424*4882a593Smuzhiyun #define _LLT_OP(x) (((x) & 0x3) << 30) 1425*4882a593Smuzhiyun #define _LLT_OP_VALUE(x) (((x) >> 30) & 0x3) 1426*4882a593Smuzhiyun 1427*4882a593Smuzhiyun 1428*4882a593Smuzhiyun /* ----------------------------------------------------- 1429*4882a593Smuzhiyun * 1430*4882a593Smuzhiyun * 0x0200h ~ 0x027Fh TXDMA Configuration 1431*4882a593Smuzhiyun * 1432*4882a593Smuzhiyun * ----------------------------------------------------- */ 1433*4882a593Smuzhiyun /* 2 RQPN */ 1434*4882a593Smuzhiyun #define _HPQ(x) ((x) & 0xFF) 1435*4882a593Smuzhiyun #define _LPQ(x) (((x) & 0xFF) << 8) 1436*4882a593Smuzhiyun #define _PUBQ(x) (((x) & 0xFF) << 16) 1437*4882a593Smuzhiyun #define _NPQ(x) ((x) & 0xFF) /* NOTE: in RQPN_NPQ register */ 1438*4882a593Smuzhiyun #define _EPQ(x) (((x) & 0xFF) << 16) /* NOTE: in RQPN_EPQ register */ 1439*4882a593Smuzhiyun 1440*4882a593Smuzhiyun 1441*4882a593Smuzhiyun #define HPQ_PUBLIC_DIS BIT(24) 1442*4882a593Smuzhiyun #define LPQ_PUBLIC_DIS BIT(25) 1443*4882a593Smuzhiyun #define LD_RQPN BIT(31) 1444*4882a593Smuzhiyun 1445*4882a593Smuzhiyun 1446*4882a593Smuzhiyun /* 2 TDECTL */ 1447*4882a593Smuzhiyun #define BLK_DESC_NUM_SHIFT 4 1448*4882a593Smuzhiyun #define BLK_DESC_NUM_MASK 0xF 1449*4882a593Smuzhiyun 1450*4882a593Smuzhiyun 1451*4882a593Smuzhiyun /* 2 TXDMA_OFFSET_CHK */ 1452*4882a593Smuzhiyun #define DROP_DATA_EN BIT(9) 1453*4882a593Smuzhiyun 1454*4882a593Smuzhiyun /* 2 AUTO_LLT */ 1455*4882a593Smuzhiyun #define BIT_SHIFT_TXPKTNUM 24 1456*4882a593Smuzhiyun #define BIT_MASK_TXPKTNUM 0xff 1457*4882a593Smuzhiyun #define BIT_TXPKTNUM(x) (((x) & BIT_MASK_TXPKTNUM) << BIT_SHIFT_TXPKTNUM) 1458*4882a593Smuzhiyun 1459*4882a593Smuzhiyun #define BIT_TDE_DBG_SEL BIT(23) 1460*4882a593Smuzhiyun #define BIT_AUTO_INIT_LLT BIT(16) 1461*4882a593Smuzhiyun 1462*4882a593Smuzhiyun #define BIT_SHIFT_Tx_OQT_free_space 8 1463*4882a593Smuzhiyun #define BIT_MASK_Tx_OQT_free_space 0xff 1464*4882a593Smuzhiyun #define BIT_Tx_OQT_free_space(x) (((x) & BIT_MASK_Tx_OQT_free_space) << BIT_SHIFT_Tx_OQT_free_space) 1465*4882a593Smuzhiyun 1466*4882a593Smuzhiyun 1467*4882a593Smuzhiyun /* ----------------------------------------------------- 1468*4882a593Smuzhiyun * 1469*4882a593Smuzhiyun * 0x0120h ~ 0x0123h RX DMA Configuration 1470*4882a593Smuzhiyun * 1471*4882a593Smuzhiyun * ----------------------------------------------------- */ 1472*4882a593Smuzhiyun #define BIT_FS_RXDONE_INT_EN BIT(16) 1473*4882a593Smuzhiyun 1474*4882a593Smuzhiyun 1475*4882a593Smuzhiyun /* REG_RXPKT_NUM (Offset 0x0284) */ 1476*4882a593Smuzhiyun #define BIT_RW_RELEASE_EN BIT(18) 1477*4882a593Smuzhiyun 1478*4882a593Smuzhiyun /* ----------------------------------------------------- 1479*4882a593Smuzhiyun * 1480*4882a593Smuzhiyun * 0x0280h ~ 0x028Bh RX DMA Configuration 1481*4882a593Smuzhiyun * 1482*4882a593Smuzhiyun * ----------------------------------------------------- */ 1483*4882a593Smuzhiyun 1484*4882a593Smuzhiyun /* 2 REG_RXDMA_CONTROL, 0x0286h 1485*4882a593Smuzhiyun * Write only. When this bit is set, RXDMA will decrease RX PKT counter by one. Before 1486*4882a593Smuzhiyun * this bit is polled, FW shall update RXFF_RD_PTR first. This register is write pulse and auto clear. 1487*4882a593Smuzhiyun * #define RXPKT_RELEASE_POLL BIT(0) 1488*4882a593Smuzhiyun * Read only. When RXMA finishes on-going DMA operation, RXMDA will report idle state in 1489*4882a593Smuzhiyun * this bit. FW can start releasing packets after RXDMA entering idle mode. 1490*4882a593Smuzhiyun * #define RXDMA_IDLE BIT(1) 1491*4882a593Smuzhiyun * When this bit is set, RXDMA will enter this mode after on-going RXDMA packet to host 1492*4882a593Smuzhiyun * completed, and stop DMA packet to host. RXDMA will then report Default: 0; 1493*4882a593Smuzhiyun * #define RW_RELEASE_EN BIT(2) */ 1494*4882a593Smuzhiyun 1495*4882a593Smuzhiyun /* 2 REG_RXPKT_NUM, 0x0284 */ 1496*4882a593Smuzhiyun #define RXPKT_RELEASE_POLL BIT(16) 1497*4882a593Smuzhiyun #define RXDMA_IDLE BIT(17) 1498*4882a593Smuzhiyun #define RW_RELEASE_EN BIT(18) 1499*4882a593Smuzhiyun 1500*4882a593Smuzhiyun /* ----------------------------------------------------- 1501*4882a593Smuzhiyun * 1502*4882a593Smuzhiyun * 0x0400h ~ 0x047Fh Protocol Configuration 1503*4882a593Smuzhiyun * 1504*4882a593Smuzhiyun * ----------------------------------------------------- */ 1505*4882a593Smuzhiyun /* 2 FWHW_TXQ_CTRL */ 1506*4882a593Smuzhiyun #define EN_AMPDU_RTY_NEW BIT(7) 1507*4882a593Smuzhiyun 1508*4882a593Smuzhiyun 1509*4882a593Smuzhiyun /* 2 SPEC SIFS */ 1510*4882a593Smuzhiyun #define _SPEC_SIFS_CCK(x) ((x) & 0xFF) 1511*4882a593Smuzhiyun #define _SPEC_SIFS_OFDM(x) (((x) & 0xFF) << 8) 1512*4882a593Smuzhiyun 1513*4882a593Smuzhiyun /* 2 RL */ 1514*4882a593Smuzhiyun #define BIT_SHIFT_SRL 8 1515*4882a593Smuzhiyun #define BIT_MASK_SRL 0x3f 1516*4882a593Smuzhiyun #define BIT_SRL(x) (((x) & BIT_MASK_SRL) << BIT_SHIFT_SRL) 1517*4882a593Smuzhiyun 1518*4882a593Smuzhiyun #define BIT_SHIFT_LRL 0 1519*4882a593Smuzhiyun #define BIT_MASK_LRL 0x3f 1520*4882a593Smuzhiyun #define BIT_LRL(x) (((x) & BIT_MASK_LRL) << BIT_SHIFT_LRL) 1521*4882a593Smuzhiyun 1522*4882a593Smuzhiyun #define RL_VAL_AP 7 1523*4882a593Smuzhiyun #ifdef CONFIG_RTW_CUSTOMIZE_RLSTA 1524*4882a593Smuzhiyun #define RL_VAL_STA CONFIG_RTW_CUSTOMIZE_RLSTA 1525*4882a593Smuzhiyun #else 1526*4882a593Smuzhiyun #define RL_VAL_STA 0x30 1527*4882a593Smuzhiyun #endif 1528*4882a593Smuzhiyun /* ----------------------------------------------------- 1529*4882a593Smuzhiyun * 1530*4882a593Smuzhiyun * 0x0500h ~ 0x05FFh EDCA Configuration 1531*4882a593Smuzhiyun * 1532*4882a593Smuzhiyun * ----------------------------------------------------- */ 1533*4882a593Smuzhiyun 1534*4882a593Smuzhiyun /* 2 EDCA setting */ 1535*4882a593Smuzhiyun #define AC_PARAM_TXOP_LIMIT_OFFSET 16 1536*4882a593Smuzhiyun #define AC_PARAM_ECW_MAX_OFFSET 12 1537*4882a593Smuzhiyun #define AC_PARAM_ECW_MIN_OFFSET 8 1538*4882a593Smuzhiyun #define AC_PARAM_AIFS_OFFSET 0 1539*4882a593Smuzhiyun 1540*4882a593Smuzhiyun /* 2 BCN_CTRL */ 1541*4882a593Smuzhiyun #define EN_TXBCN_RPT BIT(2) 1542*4882a593Smuzhiyun #define EN_BCN_FUNCTION BIT(3) 1543*4882a593Smuzhiyun #define STOP_BCNQ BIT(6) 1544*4882a593Smuzhiyun #define DIS_RX_BSSID_FIT BIT(6) 1545*4882a593Smuzhiyun 1546*4882a593Smuzhiyun #define DIS_ATIM BIT(0) 1547*4882a593Smuzhiyun #define DIS_BCNQ_SUB BIT(1) 1548*4882a593Smuzhiyun #define DIS_TSF_UDT BIT(4) 1549*4882a593Smuzhiyun 1550*4882a593Smuzhiyun /* 2 ACMHWCTRL */ 1551*4882a593Smuzhiyun #define AcmHw_HwEn BIT(0) 1552*4882a593Smuzhiyun #define AcmHw_VoqEn BIT(1) 1553*4882a593Smuzhiyun #define AcmHw_ViqEn BIT(2) 1554*4882a593Smuzhiyun #define AcmHw_BeqEn BIT(3) 1555*4882a593Smuzhiyun #define AcmHw_VoqStatus BIT(5) 1556*4882a593Smuzhiyun #define AcmHw_ViqStatus BIT(6) 1557*4882a593Smuzhiyun #define AcmHw_BeqStatus BIT(7) 1558*4882a593Smuzhiyun 1559*4882a593Smuzhiyun /* 2 */ /* REG_DUAL_TSF_RST (0x553) */ 1560*4882a593Smuzhiyun #define DUAL_TSF_RST_P2P BIT(4) 1561*4882a593Smuzhiyun 1562*4882a593Smuzhiyun /* 2 */ /* REG_NOA_DESC_SEL (0x5CF) */ 1563*4882a593Smuzhiyun #define NOA_DESC_SEL_0 0 1564*4882a593Smuzhiyun #define NOA_DESC_SEL_1 BIT(4) 1565*4882a593Smuzhiyun 1566*4882a593Smuzhiyun /* ----------------------------------------------------- 1567*4882a593Smuzhiyun * 1568*4882a593Smuzhiyun * 0x0600h ~ 0x07FFh WMAC Configuration 1569*4882a593Smuzhiyun * 1570*4882a593Smuzhiyun * ----------------------------------------------------- */ 1571*4882a593Smuzhiyun 1572*4882a593Smuzhiyun /* 2 APSD_CTRL */ 1573*4882a593Smuzhiyun #define APSDOFF BIT(6) 1574*4882a593Smuzhiyun 1575*4882a593Smuzhiyun /* 2 TCR */ 1576*4882a593Smuzhiyun #define TSFRST BIT(0) 1577*4882a593Smuzhiyun #define DIS_GCLK BIT(1) 1578*4882a593Smuzhiyun #define PAD_SEL BIT(2) 1579*4882a593Smuzhiyun #define PWR_ST BIT(6) 1580*4882a593Smuzhiyun #define PWRBIT_OW_EN BIT(7) 1581*4882a593Smuzhiyun #define ACRC BIT(8) 1582*4882a593Smuzhiyun #define CFENDFORM BIT(9) 1583*4882a593Smuzhiyun #define ICV BIT(10) 1584*4882a593Smuzhiyun 1585*4882a593Smuzhiyun 1586*4882a593Smuzhiyun /* 2 RCR */ 1587*4882a593Smuzhiyun #define AAP BIT(0) 1588*4882a593Smuzhiyun #define APM BIT(1) 1589*4882a593Smuzhiyun #define AM BIT(2) 1590*4882a593Smuzhiyun #define AB BIT(3) 1591*4882a593Smuzhiyun #define ADD3 BIT(4) 1592*4882a593Smuzhiyun #define APWRMGT BIT(5) 1593*4882a593Smuzhiyun #define CBSSID BIT(6) 1594*4882a593Smuzhiyun #define CBSSID_DATA BIT(6) 1595*4882a593Smuzhiyun #define CBSSID_BCN BIT(7) 1596*4882a593Smuzhiyun #define ACRC32 BIT(8) 1597*4882a593Smuzhiyun #define AICV BIT(9) 1598*4882a593Smuzhiyun #define ADF BIT(11) 1599*4882a593Smuzhiyun #define ACF BIT(12) 1600*4882a593Smuzhiyun #define AMF BIT(13) 1601*4882a593Smuzhiyun #define HTC_LOC_CTRL BIT(14) 1602*4882a593Smuzhiyun #define UC_DATA_EN BIT(16) 1603*4882a593Smuzhiyun #define BM_DATA_EN BIT(17) 1604*4882a593Smuzhiyun #define MFBEN BIT(22) 1605*4882a593Smuzhiyun #define LSIGEN BIT(23) 1606*4882a593Smuzhiyun #define EnMBID BIT(24) 1607*4882a593Smuzhiyun #define FORCEACK BIT(26) 1608*4882a593Smuzhiyun #define APP_BASSN BIT(27) 1609*4882a593Smuzhiyun #define APP_PHYSTS BIT(28) 1610*4882a593Smuzhiyun #define APP_ICV BIT(29) 1611*4882a593Smuzhiyun #define APP_MIC BIT(30) 1612*4882a593Smuzhiyun #define APP_FCS BIT(31) 1613*4882a593Smuzhiyun 1614*4882a593Smuzhiyun 1615*4882a593Smuzhiyun /* 2 SECCFG */ 1616*4882a593Smuzhiyun #define SCR_TxUseDK BIT(0) /* Force Tx Use Default Key */ 1617*4882a593Smuzhiyun #define SCR_RxUseDK BIT(1) /* Force Rx Use Default Key */ 1618*4882a593Smuzhiyun #define SCR_TxEncEnable BIT(2) /* Enable Tx Encryption */ 1619*4882a593Smuzhiyun #define SCR_RxDecEnable BIT(3) /* Enable Rx Decryption */ 1620*4882a593Smuzhiyun #define SCR_SKByA2 BIT(4) /* Search kEY BY A2 */ 1621*4882a593Smuzhiyun #define SCR_NoSKMC BIT(5) /* No Key Search Multicast */ 1622*4882a593Smuzhiyun #define SCR_TXBCUSEDK BIT(6) /* Force Tx Broadcast packets Use Default Key */ 1623*4882a593Smuzhiyun #define SCR_RXBCUSEDK BIT(7) /* Force Rx Broadcast packets Use Default Key */ 1624*4882a593Smuzhiyun #define SCR_CHK_KEYID BIT(8) 1625*4882a593Smuzhiyun #define SCR_CHK_BMC BIT(9) /* add option to support a2+keyid+bcm */ 1626*4882a593Smuzhiyun 1627*4882a593Smuzhiyun /*REG_MBIDCAMCFG (Offset 0x0628/0x62C)*/ 1628*4882a593Smuzhiyun #define BIT_MBIDCAM_POLL BIT(31) 1629*4882a593Smuzhiyun #define BIT_MBIDCAM_WT_EN BIT(30) 1630*4882a593Smuzhiyun 1631*4882a593Smuzhiyun #define MBIDCAM_ADDR_MASK 0x1F 1632*4882a593Smuzhiyun #define MBIDCAM_ADDR_SHIFT 24 1633*4882a593Smuzhiyun 1634*4882a593Smuzhiyun #define BIT_MBIDCAM_VALID BIT(23) 1635*4882a593Smuzhiyun #define BIT_LSIC_TXOP_EN BIT(17) 1636*4882a593Smuzhiyun #define BIT_CTS_EN BIT(16) 1637*4882a593Smuzhiyun 1638*4882a593Smuzhiyun /*REG_RXFLTMAP1 (Offset 0x6A2)*/ 1639*4882a593Smuzhiyun #define BIT_CTRLFLT10EN BIT(10) /*PS-POLL*/ 1640*4882a593Smuzhiyun 1641*4882a593Smuzhiyun /*REG_WLAN_ACT_MASK_CTRL_1 (Offset 0x76C)*/ 1642*4882a593Smuzhiyun #define EN_PORT_0_FUNCTION BIT(12) 1643*4882a593Smuzhiyun #define EN_PORT_1_FUNCTION BIT(13) 1644*4882a593Smuzhiyun 1645*4882a593Smuzhiyun /* ----------------------------------------------------- 1646*4882a593Smuzhiyun * 1647*4882a593Smuzhiyun * SDIO Bus Specification 1648*4882a593Smuzhiyun * 1649*4882a593Smuzhiyun * ----------------------------------------------------- */ 1650*4882a593Smuzhiyun 1651*4882a593Smuzhiyun /* I/O bus domain address mapping */ 1652*4882a593Smuzhiyun #define SDIO_LOCAL_BASE 0x10250000 1653*4882a593Smuzhiyun #define WLAN_IOREG_BASE 0x10260000 1654*4882a593Smuzhiyun #define FIRMWARE_FIFO_BASE 0x10270000 1655*4882a593Smuzhiyun #define TX_HIQ_BASE 0x10310000 1656*4882a593Smuzhiyun #define TX_MIQ_BASE 0x10320000 1657*4882a593Smuzhiyun #define TX_LOQ_BASE 0x10330000 1658*4882a593Smuzhiyun #define TX_EPQ_BASE 0x10350000 1659*4882a593Smuzhiyun #define RX_RX0FF_BASE 0x10340000 1660*4882a593Smuzhiyun 1661*4882a593Smuzhiyun /* SDIO host local register space mapping. */ 1662*4882a593Smuzhiyun #define SDIO_LOCAL_MSK 0x0FFF 1663*4882a593Smuzhiyun #define WLAN_IOREG_MSK 0x7FFF 1664*4882a593Smuzhiyun #define WLAN_FIFO_MSK 0x1FFF /* Aggregation Length[12:0] */ 1665*4882a593Smuzhiyun #define WLAN_RX0FF_MSK 0x0003 1666*4882a593Smuzhiyun 1667*4882a593Smuzhiyun #define SDIO_WITHOUT_REF_DEVICE_ID 0 /* Without reference to the SDIO Device ID */ 1668*4882a593Smuzhiyun #define SDIO_LOCAL_DEVICE_ID 0 /* 0b[16], 000b[15:13] */ 1669*4882a593Smuzhiyun #define WLAN_TX_HIQ_DEVICE_ID 4 /* 0b[16], 100b[15:13] */ 1670*4882a593Smuzhiyun #define WLAN_TX_MIQ_DEVICE_ID 5 /* 0b[16], 101b[15:13] */ 1671*4882a593Smuzhiyun #define WLAN_TX_LOQ_DEVICE_ID 6 /* 0b[16], 110b[15:13] */ 1672*4882a593Smuzhiyun #define WLAN_TX_EXQ_DEVICE_ID 3 /* 0b[16], 011b[15:13] */ 1673*4882a593Smuzhiyun #define WLAN_RX0FF_DEVICE_ID 7 /* 0b[16], 111b[15:13] */ 1674*4882a593Smuzhiyun #define WLAN_IOREG_DEVICE_ID 8 /* 1b[16] */ 1675*4882a593Smuzhiyun 1676*4882a593Smuzhiyun /* SDIO Tx Free Page Index */ 1677*4882a593Smuzhiyun #define HI_QUEUE_IDX 0 1678*4882a593Smuzhiyun #define MID_QUEUE_IDX 1 1679*4882a593Smuzhiyun #define LOW_QUEUE_IDX 2 1680*4882a593Smuzhiyun #define PUBLIC_QUEUE_IDX 3 1681*4882a593Smuzhiyun 1682*4882a593Smuzhiyun #define SDIO_MAX_TX_QUEUE 3 /* HIQ, MIQ and LOQ */ 1683*4882a593Smuzhiyun #define SDIO_MAX_RX_QUEUE 1 1684*4882a593Smuzhiyun 1685*4882a593Smuzhiyun #define SDIO_REG_TX_CTRL 0x0000 /* SDIO Tx Control */ 1686*4882a593Smuzhiyun #define SDIO_REG_TIMEOUT 0x0002/*SDIO status timeout*/ 1687*4882a593Smuzhiyun #define SDIO_REG_HIMR 0x0014 /* SDIO Host Interrupt Mask */ 1688*4882a593Smuzhiyun #define SDIO_REG_HISR 0x0018 /* SDIO Host Interrupt Service Routine */ 1689*4882a593Smuzhiyun #define SDIO_REG_HCPWM 0x0019 /* HCI Current Power Mode */ 1690*4882a593Smuzhiyun #define SDIO_REG_RX0_REQ_LEN 0x001C /* RXDMA Request Length */ 1691*4882a593Smuzhiyun #define SDIO_REG_OQT_FREE_PG 0x001E /* OQT Free Page */ 1692*4882a593Smuzhiyun #define SDIO_REG_FREE_TXPG 0x0020 /* Free Tx Buffer Page */ 1693*4882a593Smuzhiyun #define SDIO_REG_HCPWM1 0x0024 /* HCI Current Power Mode 1 */ 1694*4882a593Smuzhiyun #define SDIO_REG_HCPWM2 0x0026 /* HCI Current Power Mode 2 */ 1695*4882a593Smuzhiyun #define SDIO_REG_FREE_TXPG_SEQ 0x0028 /* Free Tx Page Sequence */ 1696*4882a593Smuzhiyun #define SDIO_REG_HTSFR_INFO 0x0030 /* HTSF Informaion */ 1697*4882a593Smuzhiyun #define SDIO_REG_HRPWM1 0x0080 /* HCI Request Power Mode 1 */ 1698*4882a593Smuzhiyun #define SDIO_REG_HRPWM2 0x0082 /* HCI Request Power Mode 2 */ 1699*4882a593Smuzhiyun #define SDIO_REG_HPS_CLKR 0x0084 /* HCI Power Save Clock */ 1700*4882a593Smuzhiyun #define SDIO_REG_HSUS_CTRL 0x0086 /* SDIO HCI Suspend Control */ 1701*4882a593Smuzhiyun #define SDIO_REG_HIMR_ON 0x0090 /* SDIO Host Extension Interrupt Mask Always */ 1702*4882a593Smuzhiyun #define SDIO_REG_HISR_ON 0x0091 /* SDIO Host Extension Interrupt Status Always */ 1703*4882a593Smuzhiyun 1704*4882a593Smuzhiyun #define SDIO_HIMR_DISABLED 0 1705*4882a593Smuzhiyun 1706*4882a593Smuzhiyun /* RTL8723/RTL8188E SDIO Host Interrupt Mask Register */ 1707*4882a593Smuzhiyun #define SDIO_HIMR_RX_REQUEST_MSK BIT(0) 1708*4882a593Smuzhiyun #define SDIO_HIMR_AVAL_MSK BIT(1) 1709*4882a593Smuzhiyun #define SDIO_HIMR_TXERR_MSK BIT(2) 1710*4882a593Smuzhiyun #define SDIO_HIMR_RXERR_MSK BIT(3) 1711*4882a593Smuzhiyun #define SDIO_HIMR_TXFOVW_MSK BIT(4) 1712*4882a593Smuzhiyun #define SDIO_HIMR_RXFOVW_MSK BIT(5) 1713*4882a593Smuzhiyun #define SDIO_HIMR_TXBCNOK_MSK BIT(6) 1714*4882a593Smuzhiyun #define SDIO_HIMR_TXBCNERR_MSK BIT(7) 1715*4882a593Smuzhiyun #define SDIO_HIMR_BCNERLY_INT_MSK BIT(16) 1716*4882a593Smuzhiyun #define SDIO_HIMR_C2HCMD_MSK BIT(17) 1717*4882a593Smuzhiyun #define SDIO_HIMR_CPWM1_MSK BIT(18) 1718*4882a593Smuzhiyun #define SDIO_HIMR_CPWM2_MSK BIT(19) 1719*4882a593Smuzhiyun #define SDIO_HIMR_HSISR_IND_MSK BIT(20) 1720*4882a593Smuzhiyun #define SDIO_HIMR_GTINT3_IND_MSK BIT(21) 1721*4882a593Smuzhiyun #define SDIO_HIMR_GTINT4_IND_MSK BIT(22) 1722*4882a593Smuzhiyun #define SDIO_HIMR_PSTIMEOUT_MSK BIT(23) 1723*4882a593Smuzhiyun #define SDIO_HIMR_OCPINT_MSK BIT(24) 1724*4882a593Smuzhiyun #define SDIO_HIMR_ATIMEND_MSK BIT(25) 1725*4882a593Smuzhiyun #define SDIO_HIMR_ATIMEND_E_MSK BIT(26) 1726*4882a593Smuzhiyun #define SDIO_HIMR_CTWEND_MSK BIT(27) 1727*4882a593Smuzhiyun 1728*4882a593Smuzhiyun /* RTL8188E SDIO Specific */ 1729*4882a593Smuzhiyun #define SDIO_HIMR_MCU_ERR_MSK BIT(28) 1730*4882a593Smuzhiyun #define SDIO_HIMR_TSF_BIT32_TOGGLE_MSK BIT(29) 1731*4882a593Smuzhiyun 1732*4882a593Smuzhiyun /* SDIO Host Interrupt Service Routine */ 1733*4882a593Smuzhiyun #define SDIO_HISR_RX_REQUEST BIT(0) 1734*4882a593Smuzhiyun #define SDIO_HISR_AVAL BIT(1) 1735*4882a593Smuzhiyun #define SDIO_HISR_TXERR BIT(2) 1736*4882a593Smuzhiyun #define SDIO_HISR_RXERR BIT(3) 1737*4882a593Smuzhiyun #define SDIO_HISR_TXFOVW BIT(4) 1738*4882a593Smuzhiyun #define SDIO_HISR_RXFOVW BIT(5) 1739*4882a593Smuzhiyun #define SDIO_HISR_TXBCNOK BIT(6) 1740*4882a593Smuzhiyun #define SDIO_HISR_TXBCNERR BIT(7) 1741*4882a593Smuzhiyun #define SDIO_HISR_BCNERLY_INT BIT(16) 1742*4882a593Smuzhiyun #define SDIO_HISR_C2HCMD BIT(17) 1743*4882a593Smuzhiyun #define SDIO_HISR_CPWM1 BIT(18) 1744*4882a593Smuzhiyun #define SDIO_HISR_CPWM2 BIT(19) 1745*4882a593Smuzhiyun #define SDIO_HISR_HSISR_IND BIT(20) 1746*4882a593Smuzhiyun #define SDIO_HISR_GTINT3_IND BIT(21) 1747*4882a593Smuzhiyun #define SDIO_HISR_GTINT4_IND BIT(22) 1748*4882a593Smuzhiyun #define SDIO_HISR_PSTIMEOUT BIT(23) 1749*4882a593Smuzhiyun #define SDIO_HISR_OCPINT BIT(24) 1750*4882a593Smuzhiyun #define SDIO_HISR_ATIMEND BIT(25) 1751*4882a593Smuzhiyun #define SDIO_HISR_ATIMEND_E BIT(26) 1752*4882a593Smuzhiyun #define SDIO_HISR_CTWEND BIT(27) 1753*4882a593Smuzhiyun 1754*4882a593Smuzhiyun /* RTL8188E SDIO Specific */ 1755*4882a593Smuzhiyun #define SDIO_HISR_MCU_ERR BIT(28) 1756*4882a593Smuzhiyun #define SDIO_HISR_TSF_BIT32_TOGGLE BIT(29) 1757*4882a593Smuzhiyun 1758*4882a593Smuzhiyun #define MASK_SDIO_HISR_CLEAR (SDIO_HISR_TXERR |\ 1759*4882a593Smuzhiyun SDIO_HISR_RXERR |\ 1760*4882a593Smuzhiyun SDIO_HISR_TXFOVW |\ 1761*4882a593Smuzhiyun SDIO_HISR_RXFOVW |\ 1762*4882a593Smuzhiyun SDIO_HISR_TXBCNOK |\ 1763*4882a593Smuzhiyun SDIO_HISR_TXBCNERR |\ 1764*4882a593Smuzhiyun SDIO_HISR_C2HCMD |\ 1765*4882a593Smuzhiyun SDIO_HISR_CPWM1 |\ 1766*4882a593Smuzhiyun SDIO_HISR_CPWM2 |\ 1767*4882a593Smuzhiyun SDIO_HISR_HSISR_IND |\ 1768*4882a593Smuzhiyun SDIO_HISR_GTINT3_IND |\ 1769*4882a593Smuzhiyun SDIO_HISR_GTINT4_IND |\ 1770*4882a593Smuzhiyun SDIO_HISR_PSTIMEOUT |\ 1771*4882a593Smuzhiyun SDIO_HISR_OCPINT) 1772*4882a593Smuzhiyun 1773*4882a593Smuzhiyun /* SDIO HCI Suspend Control Register */ 1774*4882a593Smuzhiyun #define HCI_RESUME_PWR_RDY BIT(1) 1775*4882a593Smuzhiyun #define HCI_SUS_CTRL BIT(0) 1776*4882a593Smuzhiyun 1777*4882a593Smuzhiyun /* SDIO Tx FIFO related */ 1778*4882a593Smuzhiyun #define SDIO_TX_FREE_PG_QUEUE 4 /* The number of Tx FIFO free page */ 1779*4882a593Smuzhiyun #define SDIO_TX_FIFO_PAGE_SZ 128 1780*4882a593Smuzhiyun 1781*4882a593Smuzhiyun /* indirect access */ 1782*4882a593Smuzhiyun #ifdef CONFIG_SDIO_INDIRECT_ACCESS 1783*4882a593Smuzhiyun #define SDIO_REG_INDIRECT_REG_CFG 0x40 1784*4882a593Smuzhiyun #define SDIO_REG_INDIRECT_REG_DATA 0x44 1785*4882a593Smuzhiyun #define SET_INDIRECT_REG_ADDR(_cmd, _addr) SET_BITS_TO_LE_2BYTE(((u8 *)(_cmd)) + 0, 0, 16, (_addr)) 1786*4882a593Smuzhiyun #define SET_INDIRECT_REG_SIZE_1BYTE(_cmd) SET_BITS_TO_LE_1BYTE(((u8 *)(_cmd)) + 2, 0, 2, 0) 1787*4882a593Smuzhiyun #define SET_INDIRECT_REG_SIZE_2BYTE(_cmd) SET_BITS_TO_LE_1BYTE(((u8 *)(_cmd)) + 2, 0, 2, 1) 1788*4882a593Smuzhiyun #define SET_INDIRECT_REG_SIZE_4BYTE(_cmd) SET_BITS_TO_LE_1BYTE(((u8 *)(_cmd)) + 2, 0, 2, 2) 1789*4882a593Smuzhiyun #define SET_INDIRECT_REG_WRITE(_cmd) SET_BITS_TO_LE_1BYTE(((u8 *)(_cmd)) + 2, 2, 1, 1) 1790*4882a593Smuzhiyun #define SET_INDIRECT_REG_READ(_cmd) SET_BITS_TO_LE_1BYTE(((u8 *)(_cmd)) + 2, 3, 1, 1) 1791*4882a593Smuzhiyun #define GET_INDIRECT_REG_RDY(_cmd) LE_BITS_TO_1BYTE(((u8 *)(_cmd)) + 2, 4, 1) 1792*4882a593Smuzhiyun #endif/*CONFIG_SDIO_INDIRECT_ACCESS*/ 1793*4882a593Smuzhiyun 1794*4882a593Smuzhiyun #ifdef CONFIG_SDIO_HCI 1795*4882a593Smuzhiyun #define MAX_TX_AGG_PACKET_NUMBER 0x8 1796*4882a593Smuzhiyun #else 1797*4882a593Smuzhiyun #define MAX_TX_AGG_PACKET_NUMBER 0xFF 1798*4882a593Smuzhiyun #define MAX_TX_AGG_PACKET_NUMBER_8812 64 1799*4882a593Smuzhiyun #endif 1800*4882a593Smuzhiyun 1801*4882a593Smuzhiyun /* ----------------------------------------------------- 1802*4882a593Smuzhiyun * 1803*4882a593Smuzhiyun * 0xFE00h ~ 0xFE55h USB Configuration 1804*4882a593Smuzhiyun * 1805*4882a593Smuzhiyun * ----------------------------------------------------- */ 1806*4882a593Smuzhiyun 1807*4882a593Smuzhiyun /* 2 USB Information (0xFE17) */ 1808*4882a593Smuzhiyun #define USB_IS_HIGH_SPEED 0 1809*4882a593Smuzhiyun #define USB_IS_FULL_SPEED 1 1810*4882a593Smuzhiyun #define USB_SPEED_MASK BIT(5) 1811*4882a593Smuzhiyun 1812*4882a593Smuzhiyun #define USB_NORMAL_SIE_EP_MASK 0xF 1813*4882a593Smuzhiyun #define USB_NORMAL_SIE_EP_SHIFT 4 1814*4882a593Smuzhiyun 1815*4882a593Smuzhiyun /* 2 Special Option */ 1816*4882a593Smuzhiyun #define USB_AGG_EN BIT(3) 1817*4882a593Smuzhiyun 1818*4882a593Smuzhiyun /* 0; Use interrupt endpoint to upload interrupt pkt 1819*4882a593Smuzhiyun * 1; Use bulk endpoint to upload interrupt pkt, */ 1820*4882a593Smuzhiyun #define INT_BULK_SEL BIT(4) 1821*4882a593Smuzhiyun 1822*4882a593Smuzhiyun /* 2REG_C2HEVT_CLEAR */ 1823*4882a593Smuzhiyun #define C2H_EVT_HOST_CLOSE 0x00 /* Set by driver and notify FW that the driver has read the C2H command message */ 1824*4882a593Smuzhiyun #define C2H_EVT_FW_CLOSE 0xFF /* Set by FW indicating that FW had set the C2H command message and it's not yet read by driver. */ 1825*4882a593Smuzhiyun 1826*4882a593Smuzhiyun 1827*4882a593Smuzhiyun /* 2REG_MULTI_FUNC_CTRL(For RTL8723 Only) */ 1828*4882a593Smuzhiyun #define WL_HWPDN_EN BIT(0) /* Enable GPIO[9] as WiFi HW PDn source */ 1829*4882a593Smuzhiyun #define WL_HWPDN_SL BIT(1) /* WiFi HW PDn polarity control */ 1830*4882a593Smuzhiyun #define WL_FUNC_EN BIT(2) /* WiFi function enable */ 1831*4882a593Smuzhiyun #define WL_HWROF_EN BIT(3) /* Enable GPIO[9] as WiFi RF HW PDn source */ 1832*4882a593Smuzhiyun #define BT_HWPDN_EN BIT(16) /* Enable GPIO[11] as BT HW PDn source */ 1833*4882a593Smuzhiyun #define BT_HWPDN_SL BIT(17) /* BT HW PDn polarity control */ 1834*4882a593Smuzhiyun #define BT_FUNC_EN BIT(18) /* BT function enable */ 1835*4882a593Smuzhiyun #define BT_HWROF_EN BIT(19) /* Enable GPIO[11] as BT/GPS RF HW PDn source */ 1836*4882a593Smuzhiyun #define GPS_HWPDN_EN BIT(20) /* Enable GPIO[10] as GPS HW PDn source */ 1837*4882a593Smuzhiyun #define GPS_HWPDN_SL BIT(21) /* GPS HW PDn polarity control */ 1838*4882a593Smuzhiyun #define GPS_FUNC_EN BIT(22) /* GPS function enable */ 1839*4882a593Smuzhiyun 1840*4882a593Smuzhiyun /* 3 REG_LIFECTRL_CTRL */ 1841*4882a593Smuzhiyun #define HAL92C_EN_PKT_LIFE_TIME_BK BIT(3) 1842*4882a593Smuzhiyun #define HAL92C_EN_PKT_LIFE_TIME_BE BIT(2) 1843*4882a593Smuzhiyun #define HAL92C_EN_PKT_LIFE_TIME_VI BIT(1) 1844*4882a593Smuzhiyun #define HAL92C_EN_PKT_LIFE_TIME_VO BIT(0) 1845*4882a593Smuzhiyun 1846*4882a593Smuzhiyun #define HAL92C_MSDU_LIFE_TIME_UNIT 128 /* in us, said by Tim. */ 1847*4882a593Smuzhiyun 1848*4882a593Smuzhiyun /* 2 8192D PartNo. */ 1849*4882a593Smuzhiyun #define PARTNO_92D_NIC (BIT7 | BIT6) 1850*4882a593Smuzhiyun #define PARTNO_92D_NIC_REMARK (BIT5 | BIT4) 1851*4882a593Smuzhiyun #define PARTNO_SINGLE_BAND_VS BIT(3) 1852*4882a593Smuzhiyun #define PARTNO_SINGLE_BAND_VS_REMARK BIT(1) 1853*4882a593Smuzhiyun #define PARTNO_CONCURRENT_BAND_VC (BIT3 | BIT2) 1854*4882a593Smuzhiyun #define PARTNO_CONCURRENT_BAND_VC_REMARK (BIT1 | BIT0) 1855*4882a593Smuzhiyun 1856*4882a593Smuzhiyun /* ******************************************************** 1857*4882a593Smuzhiyun * General definitions 1858*4882a593Smuzhiyun * ******************************************************** */ 1859*4882a593Smuzhiyun 1860*4882a593Smuzhiyun #ifdef CONFIG_USB_HCI 1861*4882a593Smuzhiyun #define LAST_ENTRY_OF_TX_PKT_BUFFER_8188E(__Adapter) (175) 1862*4882a593Smuzhiyun #else 1863*4882a593Smuzhiyun #define LAST_ENTRY_OF_TX_PKT_BUFFER_8188E(__Adapter) (IS_VENDOR_8188E_I_CUT_SERIES(__Adapter) ? 255 : 175) 1864*4882a593Smuzhiyun #endif 1865*4882a593Smuzhiyun #define LAST_ENTRY_OF_TX_PKT_BUFFER_8812 255 1866*4882a593Smuzhiyun #define LAST_ENTRY_OF_TX_PKT_BUFFER_8723B 255 1867*4882a593Smuzhiyun #define LAST_ENTRY_OF_TX_PKT_BUFFER_8192C 255 1868*4882a593Smuzhiyun #define LAST_ENTRY_OF_TX_PKT_BUFFER_8703B 255 1869*4882a593Smuzhiyun #define LAST_ENTRY_OF_TX_PKT_BUFFER_DUAL_MAC 127 1870*4882a593Smuzhiyun #define LAST_ENTRY_OF_TX_PKT_BUFFER_8188F 255 1871*4882a593Smuzhiyun #define LAST_ENTRY_OF_TX_PKT_BUFFER_8188GTV 255 1872*4882a593Smuzhiyun #define LAST_ENTRY_OF_TX_PKT_BUFFER_8723D 255 1873*4882a593Smuzhiyun #define LAST_ENTRY_OF_TX_PKT_BUFFER_8710B 255 1874*4882a593Smuzhiyun #define LAST_ENTRY_OF_TX_PKT_BUFFER_8192F 255 1875*4882a593Smuzhiyun #define LAST_ENTRY_OF_TX_PKT_BUFFER_8723F 255 1876*4882a593Smuzhiyun #define POLLING_LLT_THRESHOLD 20 1877*4882a593Smuzhiyun #if defined(CONFIG_RTL8723B) && defined(CONFIG_PCI_HCI) 1878*4882a593Smuzhiyun #define POLLING_READY_TIMEOUT_COUNT 6000 1879*4882a593Smuzhiyun #else 1880*4882a593Smuzhiyun #define POLLING_READY_TIMEOUT_COUNT 1000 1881*4882a593Smuzhiyun #endif 1882*4882a593Smuzhiyun 1883*4882a593Smuzhiyun 1884*4882a593Smuzhiyun /* GPIO BIT */ 1885*4882a593Smuzhiyun #define HAL_8812A_HW_GPIO_WPS_BIT BIT(2) 1886*4882a593Smuzhiyun #define HAL_8192C_HW_GPIO_WPS_BIT BIT(2) 1887*4882a593Smuzhiyun #define HAL_8192EU_HW_GPIO_WPS_BIT BIT(7) 1888*4882a593Smuzhiyun #define HAL_8188E_HW_GPIO_WPS_BIT BIT(7) 1889*4882a593Smuzhiyun 1890*4882a593Smuzhiyun #endif /* __HAL_COMMON_H__ */ 1891