xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8821cs/include/hal_com_reg.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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