Merge tag 'docs-4.11-fixes' of git://git.lwn.net/linux
[linux-2.6-block.git] / drivers / staging / rtl8192u / r8192U_hw.h
CommitLineData
8fc8598e 1/*
d3566af6
DR
2 * This is part of rtl8187 OpenSource driver.
3 * Copyright (C) Andrea Merello 2004-2005 <andrea.merello@gmail.com>
4 * Released under the terms of GPL (General Public Licence)
5 *
6 * Parts of this driver are based on the GPL part of the
7 * official Realtek driver.
8 * Parts of this driver are based on the rtl8180 driver skeleton
9 * from Patric Schenke & Andres Salomon.
10 * Parts of this driver are based on the Intel Pro Wireless
11 * 2100 GPL driver.
12 *
13 * We want to thank the Authors of those projects
14 * and the Ndiswrapper project Authors.
15 */
8fc8598e
JC
16
17/* Mariusz Matuszek added full registers definition with Realtek's name */
18
19/* this file contains register definitions for the rtl8187 MAC controller */
20#ifndef R8192_HW
21#define R8192_HW
22
23typedef enum _VERSION_819xU{
24 VERSION_819xU_A, // A-cut
25 VERSION_819xU_B, // B-cut
26 VERSION_819xU_C,// C-cut
41389e29 27} VERSION_819xU, *PVERSION_819xU;
8fc8598e
JC
28//added for different RF type
29typedef enum _RT_RF_TYPE_DEF
30{
31 RF_1T2R = 0,
32 RF_2T4R,
33
34 RF_819X_MAX_TYPE
35}RT_RF_TYPE_DEF;
36
37
38typedef enum _BaseBand_Config_Type{
39 BaseBand_Config_PHY_REG = 0, //Radio Path A
40 BaseBand_Config_AGC_TAB = 1, //Radio Path B
41}BaseBand_Config_Type, *PBaseBand_Config_Type;
8fc8598e
JC
42#define RTL8187_REQT_READ 0xc0
43#define RTL8187_REQT_WRITE 0x40
44#define RTL8187_REQ_GET_REGS 0x05
45#define RTL8187_REQ_SET_REGS 0x05
46
47#define MAX_TX_URB 5
48#define MAX_RX_URB 16
49
50#define R8180_MAX_RETRY 255
51//#define MAX_RX_NORMAL_URB 3
52//#define MAX_RX_COMMAND_URB 2
53#define RX_URB_SIZE 9100
54
55#define BB_ANTATTEN_CHAN14 0x0c
56#define BB_ANTENNA_B 0x40
57
56b3152e
AB
58#define BB_HOST_BANG BIT(30)
59#define BB_HOST_BANG_EN BIT(2)
60#define BB_HOST_BANG_CLK BIT(1)
61#define BB_HOST_BANG_RW BIT(3)
8fc8598e
JC
62#define BB_HOST_BANG_DATA 1
63
64//#if (RTL819X_FPGA_VER & RTL819X_FPGA_VIVI_070920)
65#define AFR 0x010
56b3152e
AB
66#define AFR_CardBEn BIT(0)
67#define AFR_CLKRUN_SEL BIT(1)
68#define AFR_FuncRegEn BIT(2)
8fc8598e
JC
69#define RTL8190_EEPROM_ID 0x8129
70#define EEPROM_VID 0x02
71#define EEPROM_PID 0x04
72#define EEPROM_NODE_ADDRESS_BYTE_0 0x0C
73
74#define EEPROM_TxPowerDiff 0x1F
75#define EEPROM_ThermalMeter 0x20
76#define EEPROM_PwDiff 0x21 //0x21
77#define EEPROM_CrystalCap 0x22 //0x22
78
79#define EEPROM_TxPwIndex_CCK 0x23 //0x23
80#define EEPROM_TxPwIndex_OFDM_24G 0x24 //0x24~0x26
81#define EEPROM_TxPwIndex_CCK_V1 0x29 //0x29~0x2B
82#define EEPROM_TxPwIndex_OFDM_24G_V1 0x2C //0x2C~0x2E
83#define EEPROM_TxPwIndex_Ver 0x27 //0x27
84
85#define EEPROM_Default_TxPowerDiff 0x0
86#define EEPROM_Default_ThermalMeter 0x7
87#define EEPROM_Default_PwDiff 0x4
88#define EEPROM_Default_CrystalCap 0x5
89#define EEPROM_Default_TxPower 0x1010
90#define EEPROM_Customer_ID 0x7B //0x7B:CustomerID
91#define EEPROM_ChannelPlan 0x16 //0x7C
92#define EEPROM_IC_VER 0x7d //0x7D
93#define EEPROM_CRC 0x7e //0x7E~0x7F
94
95#define EEPROM_CID_DEFAULT 0x0
96#define EEPROM_CID_CAMEO 0x1
97#define EEPROM_CID_RUNTOP 0x2
98#define EEPROM_CID_Senao 0x3
99#define EEPROM_CID_TOSHIBA 0x4 // Toshiba setting, Merge by Jacken, 2008/01/31
100#define EEPROM_CID_NetCore 0x5
101#define EEPROM_CID_Nettronix 0x6
102#define EEPROM_CID_Pronet 0x7
103#define EEPROM_CID_DLINK 0x8
104
105#define AC_PARAM_TXOP_LIMIT_OFFSET 16
106#define AC_PARAM_ECW_MAX_OFFSET 12
107#define AC_PARAM_ECW_MIN_OFFSET 8
108#define AC_PARAM_AIFS_OFFSET 0
109
110//#endif
111enum _RTL8192Usb_HW {
112
113 PCIF = 0x009, // PCI Function Register 0x0009h~0x000bh
114#define BB_GLOBAL_RESET_BIT 0x1
115 BB_GLOBAL_RESET = 0x020, // BasebandGlobal Reset Register
116 BSSIDR = 0x02E, // BSSID Register
117 CMDR = 0x037, // Command register
118#define CR_RST 0x10
119#define CR_RE 0x08
120#define CR_TE 0x04
121#define CR_MulRW 0x01
122 SIFS = 0x03E, // SIFS register
123 TCR = 0x040, // Transmit Configuration Register
124
35997ff0 125#define TCR_MXDMA_2048 7
8fc8598e
JC
126#define TCR_LRL_OFFSET 0
127#define TCR_SRL_OFFSET 8
128#define TCR_MXDMA_OFFSET 21
56b3152e 129#define TCR_SAT BIT(24) // Enable Rate depedent ack timeout timer
8fc8598e 130 RCR = 0x044, // Receive Configuration Register
56b3152e
AB
131#define MAC_FILTER_MASK (BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(5) | \
132 BIT(12) | BIT(18) | BIT(19) | BIT(20) | BIT(21) | \
133 BIT(22) | BIT(23))
134#define RX_FIFO_THRESHOLD_MASK (BIT(13) | BIT(14) | BIT(15))
8fc8598e
JC
135#define RX_FIFO_THRESHOLD_SHIFT 13
136#define RX_FIFO_THRESHOLD_128 3
137#define RX_FIFO_THRESHOLD_256 4
138#define RX_FIFO_THRESHOLD_512 5
139#define RX_FIFO_THRESHOLD_1024 6
140#define RX_FIFO_THRESHOLD_NONE 7
56b3152e 141#define MAX_RX_DMA_MASK (BIT(8) | BIT(9) | BIT(10))
8fc8598e
JC
142#define RCR_MXDMA_OFFSET 8
143#define RCR_FIFO_OFFSET 13
56b3152e
AB
144#define RCR_ONLYERLPKT BIT(31) // Early Receiving based on Packet Size.
145#define RCR_ENCS2 BIT(30) // Enable Carrier Sense Detection Method 2
146#define RCR_ENCS1 BIT(29) // Enable Carrier Sense Detection Method 1
147#define RCR_ENMBID BIT(27) // Enable Multiple BssId.
148#define RCR_ACKTXBW (BIT(24) | BIT(25)) // TXBW Setting of ACK frames
149#define RCR_CBSSID BIT(23) // Accept BSSID match packet
150#define RCR_APWRMGT BIT(22) // Accept power management packet
151#define RCR_ADD3 BIT(21) // Accept address 3 match packet
152#define RCR_AMF BIT(20) // Accept management type frame
153#define RCR_ACF BIT(19) // Accept control type frame
154#define RCR_ADF BIT(18) // Accept data type frame
155#define RCR_RXFTH BIT(13) // Rx FIFO Threshold
156#define RCR_AICV BIT(12) // Accept ICV error packet
157#define RCR_ACRC32 BIT(5) // Accept CRC32 error packet
158#define RCR_AB BIT(3) // Accept broadcast packet
159#define RCR_AM BIT(2) // Accept multicast packet
160#define RCR_APM BIT(1) // Accept physical match packet
161#define RCR_AAP BIT(0) // Accept all unicast packet
8fc8598e
JC
162 SLOT_TIME = 0x049, // Slot Time Register
163 ACK_TIMEOUT = 0x04c, // Ack Timeout Register
164 PIFS_TIME = 0x04d, // PIFS time
165 USTIME = 0x04e, // Microsecond Tuning Register, Sets the microsecond time unit used by MAC clock.
166 EDCAPARA_BE = 0x050, // EDCA Parameter of AC BE
167 EDCAPARA_BK = 0x054, // EDCA Parameter of AC BK
168 EDCAPARA_VO = 0x058, // EDCA Parameter of AC VO
169 EDCAPARA_VI = 0x05C, // EDCA Parameter of AC VI
170 RFPC = 0x05F, // Rx FIFO Packet Count
171 CWRR = 0x060, // Contention Window Report Register
172 BCN_TCFG = 0x062, // Beacon Time Configuration
173#define BCN_TCFG_CW_SHIFT 8
174#define BCN_TCFG_IFS 0
175 BCN_INTERVAL = 0x070, // Beacon Interval (TU)
176 ATIMWND = 0x072, // ATIM Window Size (TU)
177 BCN_DRV_EARLY_INT = 0x074, // Driver Early Interrupt Time (TU). Time to send interrupt to notify to change beacon content before TBTT
178 BCN_DMATIME = 0x076, // Beacon DMA and ATIM interrupt time (US). Indicates the time before TBTT to perform beacon queue DMA
179 BCN_ERR_THRESH = 0x078, // Beacon Error Threshold
180 RWCAM = 0x0A0, //IN 8190 Data Sheet is called CAMcmd
181 WCAMI = 0x0A4, // Software write CAM input content
182 RCAMO = 0x0A8, // Software read/write CAM config
183 SECR = 0x0B0, //Security Configuration Register
56b3152e
AB
184#define SCR_TxUseDK BIT(0) //Force Tx Use Default Key
185#define SCR_RxUseDK BIT(1) //Force Rx Use Default Key
186#define SCR_TxEncEnable BIT(2) //Enable Tx Encryption
187#define SCR_RxDecEnable BIT(3) //Enable Rx Decryption
188#define SCR_SKByA2 BIT(4) //Search kEY BY A2
189#define SCR_NoSKMC BIT(5) //No Key Search for Multicast
8fc8598e
JC
190#define SCR_UseDK 0x01
191#define SCR_TxSecEnable 0x02
192#define SCR_RxSecEnable 0x04
193 TPPoll = 0x0fd, // Transmit priority polling register
194 PSR = 0x0ff, // Page Select Register
195#define CPU_CCK_LOOPBACK 0x00030000
196#define CPU_GEN_SYSTEM_RESET 0x00000001
197#define CPU_GEN_FIRMWARE_RESET 0x00000008
198#define CPU_GEN_BOOT_RDY 0x00000010
199#define CPU_GEN_FIRM_RDY 0x00000020
200#define CPU_GEN_PUT_CODE_OK 0x00000080
201#define CPU_GEN_BB_RST 0x00000100
202#define CPU_GEN_PWR_STB_CPU 0x00000004
203#define CPU_GEN_NO_LOOPBACK_MSK 0xFFF8FFFF // Set bit18,17,16 to 0. Set bit19
204#define CPU_GEN_NO_LOOPBACK_SET 0x00080000 // Set BIT19 to 1
205
206//----------------------------------------------------------------------------
207// 8190 CPU General Register (offset 0x100, 4 byte)
208//----------------------------------------------------------------------------
209#define CPU_CCK_LOOPBACK 0x00030000
210#define CPU_GEN_SYSTEM_RESET 0x00000001
211#define CPU_GEN_FIRMWARE_RESET 0x00000008
212#define CPU_GEN_BOOT_RDY 0x00000010
213#define CPU_GEN_FIRM_RDY 0x00000020
214#define CPU_GEN_PUT_CODE_OK 0x00000080
215#define CPU_GEN_BB_RST 0x00000100
216#define CPU_GEN_PWR_STB_CPU 0x00000004
217#define CPU_GEN_NO_LOOPBACK_MSK 0xFFF8FFFF // Set bit18,17,16 to 0. Set bit19
218#define CPU_GEN_NO_LOOPBACK_SET 0x00080000 // Set BIT19 to 1
219 CPU_GEN = 0x100, // CPU Reset Register
220 LED1Cfg = 0x154,// LED1 Configuration Register
e406322b 221 LED0Cfg = 0x155,// LED0 Configuration Register
8fc8598e
JC
222
223 AcmAvg = 0x170, // ACM Average Period Register
224 AcmHwCtrl = 0x171, // ACM Hardware Control Register
225//----------------------------------------------------------------------------
226////
227//// 8190 AcmHwCtrl bits (offset 0x171, 1 byte)
228////----------------------------------------------------------------------------
229//
56b3152e
AB
230#define AcmHw_HwEn BIT(0)
231#define AcmHw_BeqEn BIT(1)
232#define AcmHw_ViqEn BIT(2)
233#define AcmHw_VoqEn BIT(3)
234#define AcmHw_BeqStatus BIT(4)
235#define AcmHw_ViqStatus BIT(5)
236#define AcmHw_VoqStatus BIT(6)
8fc8598e
JC
237
238 AcmFwCtrl = 0x172, // ACM Firmware Control Register
239 AES_11N_FIX = 0x173,
240 VOAdmTime = 0x174, // VO Queue Admitted Time Register
241 VIAdmTime = 0x178, // VI Queue Admitted Time Register
242 BEAdmTime = 0x17C, // BE Queue Admitted Time Register
243 RQPN1 = 0x180, // Reserved Queue Page Number , Vo Vi, Be, Bk
244 RQPN2 = 0x184, // Reserved Queue Page Number, HCCA, Cmd, Mgnt, High
245 RQPN3 = 0x188, // Reserved Queue Page Number, Bcn, Public,
246// QPRR = 0x1E0, // Queue Page Report per TID
247 QPNR = 0x1D0, //0x1F0, // Queue Packet Number report per TID
248 BQDA = 0x200, // Beacon Queue Descriptor Address
249 HQDA = 0x204, // High Priority Queue Descriptor Address
250 CQDA = 0x208, // Command Queue Descriptor Address
251 MQDA = 0x20C, // Management Queue Descriptor Address
252 HCCAQDA = 0x210, // HCCA Queue Descriptor Address
253 VOQDA = 0x214, // VO Queue Descriptor Address
254 VIQDA = 0x218, // VI Queue Descriptor Address
255 BEQDA = 0x21C, // BE Queue Descriptor Address
256 BKQDA = 0x220, // BK Queue Descriptor Address
257 RCQDA = 0x224, // Receive command Queue Descriptor Address
258 RDQDA = 0x228, // Receive Queue Descriptor Start Address
259
260 MAR0 = 0x240, // Multicast filter.
261 MAR4 = 0x244,
262
263 CCX_PERIOD = 0x250, // CCX Measurement Period Register, in unit of TU.
264 CLM_RESULT = 0x251, // CCA Busy fraction register.
265 NHM_PERIOD = 0x252, // NHM Measurement Period register, in unit of TU.
266
267 NHM_THRESHOLD0 = 0x253, // Noise Histogram Meashorement0.
268 NHM_THRESHOLD1 = 0x254, // Noise Histogram Meashorement1.
269 NHM_THRESHOLD2 = 0x255, // Noise Histogram Meashorement2.
270 NHM_THRESHOLD3 = 0x256, // Noise Histogram Meashorement3.
271 NHM_THRESHOLD4 = 0x257, // Noise Histogram Meashorement4.
272 NHM_THRESHOLD5 = 0x258, // Noise Histogram Meashorement5.
273 NHM_THRESHOLD6 = 0x259, // Noise Histogram Meashorement6
274
275 MCTRL = 0x25A, // Measurement Control
276
277 NHM_RPI_COUNTER0 = 0x264, // Noise Histogram RPI counter0, the fraction of signal strength < NHM_THRESHOLD0.
278 NHM_RPI_COUNTER1 = 0x265, // Noise Histogram RPI counter1, the fraction of signal strength in (NHM_THRESHOLD0, NHM_THRESHOLD1].
279 NHM_RPI_COUNTER2 = 0x266, // Noise Histogram RPI counter2, the fraction of signal strength in (NHM_THRESHOLD1, NHM_THRESHOLD2].
280 NHM_RPI_COUNTER3 = 0x267, // Noise Histogram RPI counter3, the fraction of signal strength in (NHM_THRESHOLD2, NHM_THRESHOLD3].
281 NHM_RPI_COUNTER4 = 0x268, // Noise Histogram RPI counter4, the fraction of signal strength in (NHM_THRESHOLD3, NHM_THRESHOLD4].
282 NHM_RPI_COUNTER5 = 0x269, // Noise Histogram RPI counter5, the fraction of signal strength in (NHM_THRESHOLD4, NHM_THRESHOLD5].
283 NHM_RPI_COUNTER6 = 0x26A, // Noise Histogram RPI counter6, the fraction of signal strength in (NHM_THRESHOLD5, NHM_THRESHOLD6].
284 NHM_RPI_COUNTER7 = 0x26B, // Noise Histogram RPI counter7, the fraction of signal strength in (NHM_THRESHOLD6, NHM_THRESHOLD7].
56b3152e
AB
285#define BW_OPMODE_11J BIT(0)
286#define BW_OPMODE_5G BIT(1)
287#define BW_OPMODE_20MHZ BIT(2)
8fc8598e
JC
288 BW_OPMODE = 0x300, // Bandwidth operation mode
289 MSR = 0x303, // Media Status register
56b3152e 290#define MSR_LINK_MASK (BIT(0)|BIT(1))
8fc8598e
JC
291#define MSR_LINK_MANAGED 2
292#define MSR_LINK_NONE 0
293#define MSR_LINK_SHIFT 0
294#define MSR_LINK_ADHOC 1
295#define MSR_LINK_MASTER 3
56b3152e 296#define MSR_LINK_ENEDCA BIT(4)
8fc8598e
JC
297 RETRY_LIMIT = 0x304, // Retry Limit [15:8]-short, [7:0]-long
298#define RETRY_LIMIT_SHORT_SHIFT 8
299#define RETRY_LIMIT_LONG_SHIFT 0
300 TSFR = 0x308,
301 RRSR = 0x310, // Response Rate Set
302#define RRSR_RSC_OFFSET 21
303#define RRSR_SHORT_OFFSET 23
304#define RRSR_RSC_DUPLICATE 0x600000
305#define RRSR_RSC_LOWSUBCHNL 0x400000
306#define RRSR_RSC_UPSUBCHANL 0x200000
307#define RRSR_SHORT 0x800000
56b3152e
AB
308#define RRSR_1M BIT(0)
309#define RRSR_2M BIT(1)
310#define RRSR_5_5M BIT(2)
311#define RRSR_11M BIT(3)
312#define RRSR_6M BIT(4)
313#define RRSR_9M BIT(5)
314#define RRSR_12M BIT(6)
315#define RRSR_18M BIT(7)
316#define RRSR_24M BIT(8)
317#define RRSR_36M BIT(9)
318#define RRSR_48M BIT(10)
319#define RRSR_54M BIT(11)
320#define RRSR_MCS0 BIT(12)
321#define RRSR_MCS1 BIT(13)
322#define RRSR_MCS2 BIT(14)
323#define RRSR_MCS3 BIT(15)
324#define RRSR_MCS4 BIT(16)
325#define RRSR_MCS5 BIT(17)
326#define RRSR_MCS6 BIT(18)
327#define RRSR_MCS7 BIT(19)
328#define BRSR_AckShortPmb BIT(23) // CCK ACK: use Short Preamble or not.
8fc8598e
JC
329 RATR0 = 0x320, // Rate Adaptive Table register1
330 UFWP = 0x318,
331 DRIVER_RSSI = 0x32c, // Driver tell Firmware current RSSI
332//----------------------------------------------------------------------------
333// 8190 Rate Adaptive Table Register (offset 0x320, 4 byte)
334//----------------------------------------------------------------------------
335//CCK
336#define RATR_1M 0x00000001
337#define RATR_2M 0x00000002
338#define RATR_55M 0x00000004
339#define RATR_11M 0x00000008
340//OFDM
341#define RATR_6M 0x00000010
342#define RATR_9M 0x00000020
343#define RATR_12M 0x00000040
344#define RATR_18M 0x00000080
345#define RATR_24M 0x00000100
346#define RATR_36M 0x00000200
347#define RATR_48M 0x00000400
348#define RATR_54M 0x00000800
349//MCS 1 Spatial Stream
350#define RATR_MCS0 0x00001000
351#define RATR_MCS1 0x00002000
352#define RATR_MCS2 0x00004000
353#define RATR_MCS3 0x00008000
354#define RATR_MCS4 0x00010000
355#define RATR_MCS5 0x00020000
356#define RATR_MCS6 0x00040000
357#define RATR_MCS7 0x00080000
358//MCS 2 Spatial Stream
359#define RATR_MCS8 0x00100000
360#define RATR_MCS9 0x00200000
361#define RATR_MCS10 0x00400000
362#define RATR_MCS11 0x00800000
363#define RATR_MCS12 0x01000000
364#define RATR_MCS13 0x02000000
365#define RATR_MCS14 0x04000000
366#define RATR_MCS15 0x08000000
367// ALL CCK Rate
368#define RATE_ALL_CCK RATR_1M|RATR_2M|RATR_55M|RATR_11M
369#define RATE_ALL_OFDM_AG RATR_6M|RATR_9M|RATR_12M|RATR_18M|RATR_24M\
370 |RATR_36M|RATR_48M|RATR_54M
371#define RATE_ALL_OFDM_1SS RATR_MCS0|RATR_MCS1|RATR_MCS2|RATR_MCS3 | \
372 RATR_MCS4|RATR_MCS5|RATR_MCS6|RATR_MCS7
373#define RATE_ALL_OFDM_2SS RATR_MCS8|RATR_MCS9 |RATR_MCS10|RATR_MCS11| \
374 RATR_MCS12|RATR_MCS13|RATR_MCS14|RATR_MCS15
375
376 MCS_TXAGC = 0x340, // MCS AGC
377 CCK_TXAGC = 0x348, // CCK AGC
378// ISR = 0x350, // Interrupt Status Register
379// IMR = 0x354, // Interrupt Mask Register
380// IMR_POLL = 0x360,
381 MacBlkCtrl = 0x403, // Mac block on/off control register
382
35997ff0 383 EPROM_CMD = 0xfe58,
56b3152e
AB
384#define Cmd9346CR_9356SEL BIT(4)
385#define EPROM_CMD_RESERVED_MASK BIT(5)
8fc8598e 386#define EPROM_CMD_OPERATING_MODE_SHIFT 6
56b3152e 387#define EPROM_CMD_OPERATING_MODE_MASK (BIT(7) | BIT(6))
8fc8598e
JC
388#define EPROM_CMD_CONFIG 0x3
389#define EPROM_CMD_NORMAL 0
390#define EPROM_CMD_LOAD 1
391#define EPROM_CMD_PROGRAM 2
b3d42bf1
XR
392#define EPROM_CS_BIT BIT(3)
393#define EPROM_CK_BIT BIT(2)
394#define EPROM_W_BIT BIT(1)
395#define EPROM_R_BIT BIT(0)
396
35997ff0
SH
397 MAC0 = 0x000,
398 MAC1 = 0x001,
399 MAC2 = 0x002,
400 MAC3 = 0x003,
401 MAC4 = 0x004,
402 MAC5 = 0x005,
8fc8598e 403
8fc8598e
JC
404};
405//----------------------------------------------------------------------------
406// 818xB AnaParm & AnaParm2 Register
407//----------------------------------------------------------------------------
408//#define ANAPARM_ASIC_ON 0x45090658
409//#define ANAPARM2_ASIC_ON 0x727f3f52
410#define GPI 0x108
411#define GPO 0x109
412#define GPE 0x10a
413#endif