Add aliases for Corerev >= 16, Corerev >= 22, and 802.11ac
[b43-tools.git] / debug / include / spr.inc
1 #ifndef SPECIAL_PURPOSE_REGISTER_H_
2 #define SPECIAL_PURPOSE_REGISTER_H_
3
4 /* Special purpose register definitions */
5
6 #define SPR_RXE_0x00                            spr000
7 #define SPR_RXE_Copy_Offset                     spr001
8 #define SPR_RXE_Copy_Length                     spr002
9 #define SPR_RXE_FIFOCTL0                        spr003
10 #define SPR_RXE_FIFOCTL1                        spr004
11 #define  RXE_FIFOCTL1_STARTCOPY                 0 /* bit0: Start copying the data into the FIFO */
12 #define  RXE_FIFOCTL1_SUSPEND                   2 /* bit2: Suspend the RX engine. Used during TX */
13 #define  RXE_FIFOCTL1_HAVEPAD                   5 /* bit5: Padding for RX frame present */
14 #define SPR_Received_Frame_Count                spr005
15 #define SPR_RXE_0x0c                            spr006
16 #define SPR_RXE_RXHDR_OFFSET                    spr007
17 #define SPR_RXE_RXHDR_LEN                       spr008
18 #define SPR_RXE_PHYRXSTAT0                      spr009
19 #define SPR_RXE_PHYRXSTAT1                      spr00a
20 #define SPR_RXE_0x16                            spr00b
21 #define SPR_RXE_FRAMELEN                        spr00c
22 #define SPR_RXE_0x1a                            spr00d
23 #define  RXE_0x1a_OVERFLOW                      15 /* bit15: Indicate FIFO overflow */
24 #define SPR_RXE_ENCODING                        spr00e
25 #define  RXE_ENCODING_OFDM                      13 /* bit13: Frame encoding was OFDM */
26 #define SPR_RXE_0x1e                            spr00f
27 #define SPR_RCM_Control                         spr010
28 #define SPR_RCM_Match_Data                      spr011
29 #define SPR_RCM_Match_Mask                      spr012
30 #define SPR_RCM_Match_Delay                     spr013
31 #define SPR_RCM_Condition_Mask_Low              spr014
32 #define SPR_RCM_Condition_Mask_High             spr015
33 #define SPR_RCM_Condition_Delay                 spr016
34 #define SPR_RXE_0x2e                            spr017
35 #define SPR_Ext_IHR_Address                     spr018
36 #define SPR_Ext_IHR_Data                        spr019
37 #define SPR_RXE_PHYRXSTAT2                      spr01a
38 #define SPR_RXE_PHYRXSTAT3                      spr01b
39 #define SPR_PHY_Mode                            spr01c
40 #define SPR_RCM_TA_Control                      spr01d
41 #define SPR_RCM_TA_Size                         spr01e
42 #define SPR_RCM_TA_Address_0                    spr01f
43 #define SPR_RCM_TA_Address_1                    spr020
44 #define SPR_RCM_TA_Address_2                    spr021
45 #define SPR_RXE_0x44                            spr022
46 #define SPR_RXE_0x46                            spr023
47 #define SPR_RXE_0x48                            spr024
48 #define SPR_RXE_0x4a                            spr025
49 #define SPR_RXE_0x4c                            spr026
50 #define SPR_RXE_0x4e                            spr027
51 #define SPR_RXE_0x50                            spr028
52 #define SPR_RXE_0x52                            spr029
53 #define SPR_RXE_0x54                            spr02a
54 #define SPR_RXE_0x56                            spr02b
55 #define SPR_RXE_0x58                            spr02c
56 #define SPR_RXE_0x5a                            spr02d
57 #define SPR_RXE_0x5c                            spr02e
58 #define SPR_RXE_0x5e                            spr02f
59 #define SPR_RXE_0x60                            spr030
60 #define SPR_RXE_0x62                            spr031
61 #define SPR_RXE_0x64                            spr032
62 #define SPR_RXE_0x66                            spr033
63 #define SPR_RXE_0x68                            spr034
64 #define SPR_RXE_0x6a                            spr035
65 #define SPR_RXE_0x6c                            spr036
66 #define SPR_RXE_0x6e                            spr037
67 #define SPR_RXE_0x70                            spr038
68 #define SPR_RXE_0x72                            spr039
69 #define SPR_RXE_0x74                            spr03a
70 #define SPR_RXE_0x76                            spr03b
71 #define SPR_RXE_0x78                            spr03c
72 #define SPR_RXE_0x7a                            spr03d
73 #define SPR_RXE_0x7c                            spr03e
74 #define SPR_RXE_0x7e                            spr03f
75 #define SPR_MAC_MAX_NAP                         spr040
76 #define SPR_MAC_CTLHI                           spr041
77 #define SPR_MAC_IRQLO                           spr042
78 #define SPR_MAC_IRQHI                           spr043
79 #define SPR_MAC_IRQMASKLO                       spr044
80 #define SPR_MAC_IRQMASKHI                       spr045
81 #define SPR_PSM_0x0c                            spr046
82 #define SPR_MAC_CMD                             spr047
83 #define  MACCMD_BEAC0                           0 /* bit0: Beacon 0 busy/valid */
84 #define  MACCMD_BEAC1                           1 /* bit1: Beacon 1 busy/valid */
85 #define  MACCMD_DFQ                             2 /* bit2: Directed frame queue valid */
86 #define  MACCMD_CCA                             3 /* bit3: Channel clear assessment */
87 #define  MACCMD_BGNOISE                         4 /* bit4: BG-noise measurement request */
88 #define SPR_BRC                                 spr048
89 #define  BRC_TXMOREFRAGS                        4 /* bit4: Set if there are more TX frags to come */
90 #define SPR_PHY_HDR_Parameter                   spr049
91 #define SPR_Postcard                            spr04a
92 #define SPR_Postcard_Location_Low               spr04b
93 #define SPR_Postcard_Location_High              spr04c
94 #define SPR_GPIO_IN                             spr04d
95 #define SPR_GPIO_OUT                            spr04e
96 #define SPR_GPIO_OUTEN                          spr04f
97 #define SPR_BRED0                               spr050
98 #define SPR_BRED1                               spr051
99 #define SPR_BRED2                               spr052
100 #define SPR_BRED3                               spr053
101 #define SPR_BRCL0                               spr054
102 #define SPR_BRCL1                               spr055
103 #define SPR_BRCL2                               spr056
104 #define SPR_BRCL3                               spr057
105 #define SPR_BRPO0                               spr058
106 #define SPR_BRPO1                               spr059
107 #define SPR_BRPO2                               spr05a
108 #define SPR_BRPO3                               spr05b
109 #define SPR_BRWK0                               spr05c
110 #define SPR_BRWK1                               spr05d
111 #define SPR_BRWK2                               spr05e
112 #define SPR_BRWK3                               spr05f
113 #define SPR_BASE0                               spr060 /* Offset Register 0 */
114 #define SPR_BASE1                               spr061 /* Offset Register 1 */
115 #define SPR_BASE2                               spr062 /* Offset Register 2 */
116 #define SPR_BASE3                               spr063 /* Offset Register 3 */
117 #define SPR_BASE4                               spr064 /* Offset Register 4 */
118 #define SPR_BASE5                               spr065 /* Offset Register 5 */
119 #define SPR_BASE6                               spr066 /* Do not use. It's broken! */
120 #define SPR_PSM_0x4e                            spr067
121 #define SPR_PC0                                 spr068 /* Link Register 0 */
122 #define SPR_PC1                                 spr069 /* Link Register 1 */
123 #define SPR_PC2                                 spr06a /* Link Register 2 */
124 #define SPR_PC3                                 spr06b /* Link Register 3 */
125 #define SPR_PSM_COND                            spr06c /* PSM external condition bits */
126 #define SPR_PSM_0x5a                            spr06d
127 #define SPR_PSM_0x5c                            spr06e
128 #define SPR_PSM_0x5e                            spr06f
129 #define SPR_PSM_0x60                            spr070
130 #define SPR_PSM_0x62                            spr071
131 #define SPR_PSM_0x64                            spr072
132 #define SPR_PSM_0x66                            spr073
133 #define SPR_PSM_0x68                            spr074
134 #define SPR_PSM_0x6a                            spr075
135 #define SPR_PSM_0x6c                            spr076
136 #define SPR_PSM_0x6e                            spr077
137 #define SPR_PSM_0x70                            spr078
138 #define SPR_PSM_0x72                            spr079
139 #define SPR_PSM_0x74                            spr07a
140 #define SPR_PSM_0x76                            spr07b
141 #define SPR_PSM_0x78                            spr07c
142 #define SPR_PSM_0x7a                            spr07d
143 #define SPR_PSM_0x7c                            spr07e
144 #define SPR_PSM_0x7e                            spr07f
145 #define SPR_TXE0_CTL                            spr080
146 #define  TXE_CTL_ENABLED                        0 /* bit0: The engine is enabled */
147 #define  TXE_CTL_FCS                            14 /* bit14: Generate the FCS */
148 #define SPR_TXE0_AUX                            spr081
149 #define SPR_TXE0_TS_LOC                         spr082
150 #define SPR_TXE0_TIMEOUT                        spr083
151 #define SPR_TXE0_WM0                            spr084
152 #define SPR_TXE0_WM1                            spr085
153 #define SPR_TXE0_PHY_CTL                        spr086
154 #define SPR_TXE0_STATUS                         spr087
155 #define  TXE_STATUS_BUSY                        7 /* bit7: TX engine busy */
156 #define  TXE_STATUS_MEND                        10 /* bit10: TXE M end */
157 #define SPR_TXE0_0x16                           spr08b
158
159 // New Registers; Source: d11.h 578947 2015-08-13 04:46:06Z
160 // http://github.com/tuapuikia/asuswrt-phantom/blob/master/release/src-rt-7.14.114.x/src/include/d11.h
161 #define SPR_TXE0_MMPLCP0        spr088
162 #define SPR_TXE0_MMPLCP1        spr089
163 #define SPR_TXE0_PHY_CTL1       spr08a
164
165 #define SPR_TX_STATUS0                          spr08c
166 #define SPR_TX_STATUS1                          spr08d
167 #define SPR_TX_STATUS2                          spr08e
168 #define SPR_TX_STATUS3                          spr08f
169 #define SPR_TXE0_FIFO_Def                       spr090
170
171 // New Registers; Source: d11.h 578947 2015-08-13 04:46:06Z
172 // http://github.com/tuapuikia/asuswrt-phantom/blob/master/release/src-rt-7.14.114.x/src/include/d11.h
173 #define SPR_TXE0_FIFO_Frame_Count       spr091      /* Corerev >= 16 */
174 #define SPR_TXE0_FIFO_Byte_Count        spr092      /* Corerev >= 16 */
175 #define SPR_TXE0_FIFO_Head              spr093      /* Corerev >= 16 */
176 #define SPR_TXE0_FIFO_Read_Pointer      spr094      /* Corerev >= 16 */
177 #define SPR_TXE0_FIFO_Write_Pointer     spr095      /* Corerev >= 16 */
178 #define SPR_TXE0_FIFO_DEF1              spr096      /* Corerev >= 16 */
179
180 // New Registers; Source: d11.h 578947 2015-08-13 04:46:06Z
181 // http://github.com/tuapuikia/asuswrt-phantom/blob/master/release/src-rt-7.14.114.x/src/include/d11.h
182 #define SPR_TXE0_AGGFIFO_CMD            spr097
183 #define SPR_TXE0_AGGFIFO_STAT           spr098
184 #define SPR_TXE0_AGGFIFO_CFG_Control    spr099
185 #define SPR_TXE0_AGGFIFO_CFG_Data       spr09a
186 #define SPR_TXE0_AGGFIFO_MPDUNUM        spr09b
187 #define SPR_TXE0_AGGFIFO_Length         spr09c
188 #define SPR_TXE0_AGGFIFO_BMP            spr09d
189 #define SPR_TXE0_AGGFIFO_ACKEDCNT       spr09e
190 #define SPR_TXE0_AGGFIFO_SEL            spr09f
191
192 #define SPR_TXE0_FIFO_CMD                       spr0a0
193 #define  TXE_FIFO_CMD_TXDONE                    13 /* bit13: Set after the current transmission finished */
194 #define  TXE_FIFO_CMD_COPY                      14 /* bit14: Start copying of data */
195 #define SPR_TXE0_FIFO_FLUSH                     spr0a1
196 #define SPR_TXE0_FIFO_THRES                     spr0a2
197 #define SPR_TXE0_FIFO_RDY                       spr0a3 /* FIFO-ready bitmask. bit-nr = FIFO-nr */
198 #define SPR_TXE0_FIFO_PRI_RDY                   spr0a4
199 #define SPR_TXE0_FIFO_RQ_PRI                    spr0a5
200 #define SPR_TXE0_Template_TX_Pointer            spr0a6
201 #define SPR_TXE0_0x4e                           spr0a7
202 #define SPR_TXE0_Template_Pointer               spr0a8
203
204 // New Registers; Source: d11.h 578947 2015-08-13 04:46:06Z
205 // http://github.com/tuapuikia/asuswrt-phantom/blob/master/release/src-rt-7.14.114.x/src/include/d11.h
206 #define SPR_TXE0_CLCT_STRPTR      spr0a9                /* Corerev >= 22 */
207 #define SPR_TXE0_CLCT_STPPTR      spr0aa                /* Corerev >= 22 */
208 #define SPR_TXE0_CLCT_CURPTR      spr0ab                /* Corerev >= 22 */
209 #define SPR_TXE0_AGGFIFO_Data     spr0ac
210
211 #define SPR_TXE0_0x5a                           spr0ad
212 #define SPR_TXE0_0x5c                           spr0ae
213 #define SPR_TXE0_0x5e                           spr0af
214
215 #define SPR_TXE0_Template_Data_Low              spr0b0
216 #define SPR_TXE0_Template_Data_High             spr0b1
217 #define SPR_TXE0_0x64                           spr0b2
218 #define SPR_TXE0_0x66                           spr0b3
219 #define SPR_TXE0_SELECT                         spr0b4
220 #define  TXE_SELECT_DST                         0x0003 /* Destination code mask */
221 #define   TXE_SELECT_DST_SHM                    0x0001 /* Destination code for the SHM */
222 #define   TXE_SELECT_DST_PHY                    0x0002 /* Destination code for the PHY */
223 #define   TXE_SELECT_DST_DISCARD                0x0003 /* Destination code for discarding */
224 #define  TXE_SELECT_USE_TXCNT                   2 /* bit2: Use the TX_COUNT register */
225 #define  TXE_SELECT_UNK0x20                     5 /* bit5: ??FIXME: Unknown meaning. Seems to be PHY related. */
226 #define  TXE_SELECT_SRC                         0x1F00 /* Source code mask */
227 #define  TXE_SELECT_SRC_SHIFT                   8
228 #define   TXE_SELECT_SRC_FIFO0                  0x0000 /* Source code for FIFO 0 */
229 #define   TXE_SELECT_SRC_FIFO1                  0x0100 /* Source code for FIFO 1 */
230 #define   TXE_SELECT_SRC_FIFO2                  0x0200 /* Source code for FIFO 2 */
231 #define   TXE_SELECT_SRC_FIFO3                  0x0300 /* Source code for FIFO 3 */
232 #define   TXE_SELECT_SRC_FIFO4                  0x0400 /* Source code for FIFO 4 */
233 #define   TXE_SELECT_SRC_FIFO5                  0x0500 /* Source code for FIFO 5 */
234 #define   TXE_SELECT_SRC_FIFO6                  0x0600 /* Source code for FIFO 6 */
235 #define   TXE_SELECT_SRC_FIFO7                  0x0700 /* Source code for FIFO 7 */
236 #define   TXE_SELECT_SRC_TRAM                   0x0800 /* Source code for Template Ram */
237 #define SPR_TXE0_TX_COUNT                       spr0b5 /* Number of bytes to process */
238 #define SPR_TXE0_TX_SHM_ADDR                    spr0b6 /* The SHM address to copy the TX header to (in bytes!) */
239 #define SPR_TXE0_0x6e                           spr0b7
240 #define SPR_TXE0_0x70                           spr0b8
241 #define SPR_TXE0_0x72                           spr0b9
242 #define SPR_TXE0_0x74                           spr0ba
243 #define SPR_TXE0_0x76                           spr0bb
244 #define SPR_TXE0_0x78                           spr0bc
245 #define SPR_TXE0_0x7a                           spr0bd
246 #define SPR_TXE0_0x7c                           spr0be
247 #define SPR_TXE0_0x7e                           spr0bf
248 /* Transmit Modify Engine masks */
249 #define SPR_TME_MASK0                           spr0c0
250 #define SPR_TME_MASK2                           spr0c1
251 #define SPR_TME_MASK4                           spr0c2
252 #define SPR_TME_MASK6                           spr0c3
253 #define SPR_TME_MASK8                           spr0c4
254 #define SPR_TME_MASK10                          spr0c5
255 #define SPR_TME_MASK12                          spr0c6
256 #define SPR_TME_MASK14                          spr0c7
257 #define SPR_TME_MASK16                          spr0c8
258 #define SPR_TME_MASK18                          spr0c9
259 #define SPR_TME_MASK20                          spr0ca
260 #define SPR_TME_MASK22                          spr0cb
261 #define SPR_TME_MASK24                          spr0cc
262 #define SPR_TME_MASK26                          spr0cd
263 #define SPR_TME_MASK28                          spr0ce
264 #define SPR_TME_MASK30                          spr0cf
265 #define SPR_TME_MASK32                          spr0d0
266 #define SPR_TME_MASK34                          spr0d1
267 #define SPR_TME_MASK36                          spr0d2
268 #define SPR_TME_MASK38                          spr0d3
269 #define SPR_TME_MASK40                          spr0d4
270 #define SPR_TME_MASK42                          spr0d5
271 #define SPR_TME_MASK44                          spr0d6
272 #define SPR_TME_MASK46                          spr0d7
273 #define SPR_TME_MASK48                          spr0d8
274 #define SPR_TME_MASK50                          spr0d9
275 #define SPR_TME_MASK52                          spr0da
276 #define SPR_TME_MASK54                          spr0db
277 #define SPR_TME_MASK56                          spr0dc
278 #define SPR_TME_MASK58                          spr0dd
279 #define SPR_TME_MASK60                          spr0de
280 #define SPR_TME_MASK62                          spr0df
281 /* Transmit Modify Engine values */
282 #define SPR_TME_VAL0                            spr0e0
283 #define SPR_TME_VAL2                            spr0e1
284 #define SPR_TME_VAL4                            spr0e2
285 #define SPR_TME_VAL6                            spr0e3
286 #define SPR_TME_VAL8                            spr0e4
287 #define SPR_TME_VAL10                           spr0e5
288 #define SPR_TME_VAL12                           spr0e6
289 #define SPR_TME_VAL14                           spr0e7
290 #define SPR_TME_VAL16                           spr0e8
291 #define SPR_TME_VAL18                           spr0e9
292 #define SPR_TME_VAL20                           spr0ea
293 #define SPR_TME_VAL22                           spr0eb
294 #define SPR_TME_VAL24                           spr0ec
295 #define SPR_TME_VAL26                           spr0ed
296 #define SPR_TME_VAL28                           spr0ee
297 #define SPR_TME_VAL30                           spr0ef
298 #define SPR_TME_VAL32                           spr0f0
299 #define SPR_TME_VAL34                           spr0f1
300 #define SPR_TME_VAL36                           spr0f2
301 #define SPR_TME_VAL38                           spr0f3
302 #define SPR_TME_VAL40                           spr0f4
303 #define SPR_TME_VAL42                           spr0f5
304 #define SPR_TME_VAL44                           spr0f6
305 #define SPR_TME_VAL46                           spr0f7
306 #define SPR_TME_VAL48                           spr0f8
307 #define SPR_TME_VAL50                           spr0f9
308 #define SPR_TME_VAL52                           spr0fa
309 #define SPR_TME_VAL54                           spr0fb
310 #define SPR_TME_VAL56                           spr0fc
311 #define SPR_TME_VAL58                           spr0fd
312 #define SPR_TME_VAL60                           spr0fe
313 #define SPR_TME_VAL62                           spr0ff
314 #define SPR_TSF_0x00                            spr100
315 #define SPR_TSF_0x02                            spr101
316 #define SPR_TSF_CFP_Start_Low                   spr102
317 #define SPR_TSF_CFP_Start_High                  spr103
318 #define SPR_TSF_0x08                            spr104
319 #define SPR_TSF_0x0a                            spr105
320 #define SPR_TSF_0x0c                            spr106
321 #define SPR_TSF_0x0e                            spr107
322 #define SPR_TSF_0x10                            spr108
323 #define SPR_TSF_CFP_PreTBTT                     spr109
324 #define SPR_TSF_0x14                            spr10a
325 #define SPR_TSF_0x16                            spr10b
326 #define SPR_TSF_0x18                            spr10c
327 #define SPR_TSF_0x1a                            spr10d
328 #define SPR_TSF_0x1c                            spr10e
329 #define SPR_TSF_0x1e                            spr10f
330 #define SPR_TSF_0x20                            spr110
331 #define SPR_TSF_0x22                            spr111
332 #define SPR_TSF_0x24                            spr112
333 #define SPR_TSF_0x26                            spr113
334 #define SPR_TSF_0x28                            spr114
335 #define SPR_TSF_0x2a                            spr115
336 #define SPR_TX_FES_Time                         spr116
337 #define SPR_TSF_0x2e                            spr117
338 #define SPR_TSF_0x30                            spr118
339 #define SPR_TSF_WORD0                           spr119
340 #define SPR_TSF_WORD1                           spr11a
341 #define SPR_TSF_WORD2                           spr11b
342 #define SPR_TSF_WORD3                           spr11c
343 #define SPR_TSF_0x3a                            spr11d
344 #define SPR_TSF_0x3c                            spr11e
345 #define SPR_TSF_0x3e                            spr11f
346 #define SPR_TSF_0x40                            spr120
347 #define SPR_TSF_0x42                            spr121
348 #define SPR_TSF_0x44                            spr122
349 #define SPR_TSF_GPT0_STAT                       spr123
350 #define  GPT_STAT_EN                            15 /* bit15: Enable the timer */
351 #define  GPT_STAT_8MHZ                          14 /* bit14: Use 8MHz base (otherwise 88MHz) */
352 #define SPR_TSF_GPT1_STAT                       spr124
353 #define SPR_TSF_GPT0_CNTLO                      spr125
354 #define SPR_TSF_GPT1_CNTLO                      spr126
355 #define SPR_TSF_GPT0_CNTHI                      spr127
356 #define SPR_TSF_GPT1_CNTHI                      spr128
357 #define SPR_TSF_GPT0_VALLO                      spr129
358 #define SPR_TSF_GPT1_VALLO                      spr12a
359 #define SPR_TSF_GPT0_VALHI                      spr12b
360 #define SPR_TSF_GPT1_VALHI                      spr12c
361 #define SPR_TSF_RANDOM                          spr12d
362 #define SPR_TSF_0x5c                            spr12e
363 #define SPR_TSF_0x5e                            spr12f
364 #define SPR_TSF_0x60                            spr130
365 #define SPR_TSF_0x62                            spr131
366 #define SPR_TSF_0x64                            spr132
367 #define SPR_TSF_GPT2_STAT                       spr133
368 #define SPR_TSF_GPT2_CNTLO                      spr134
369 #define SPR_TSF_GPT2_CNTHI                      spr135
370 #define SPR_TSF_GPT2_VALLO                      spr136
371 #define SPR_TSF_GPT2_VALHI                      spr137
372 #define SPR_TSF_GPT_ALL_STAT                    spr138
373 #define SPR_TSF_0x72                            spr139
374 #define SPR_TSF_0x74                            spr13a
375 #define SPR_TSF_0x76                            spr13b
376 #define SPR_TSF_0x78                            spr13c
377 #define SPR_TSF_0x7a                            spr13d
378 #define SPR_TSF_0x7c                            spr13e
379 #define SPR_TSF_0x7e                            spr13f
380 #define SPR_IFS_sifs_rx_tx_tx                   spr140
381 #define SPR_IFS_sifs_nav_tx                     spr141
382 #define SPR_IFS_slot                            spr142
383 #define SPR_IFS_0x06                            spr143
384 #define SPR_IFS_CTL                             spr144
385 #define SPR_IFS_BKOFFTIME                       spr145 /* BackoffTime; in units of PHY slots */
386 #define SPR_IFS_0x0c                            spr146
387 #define SPR_IFS_0x0e                            spr147
388 #define SPR_IFS_STAT                            spr148
389 #define SPR_IFS_med_busy_ctl                    spr149
390 #define SPR_IFS_if_tx_duration                  spr14a
391 #define SPR_IFS_0x16                            spr14b
392 #define SPR_IFS_0x18                            spr14c
393 #define SPR_IFS_0x1a                            spr14d
394
395 // New Registers; Source: d11.h 578947 2015-08-13 04:46:06Z
396 // http://github.com/tuapuikia/asuswrt-phantom/blob/master/release/src-rt-7.14.114.x/src/include/d11.h
397 /* EDCF support in dot11macs with corerevs >= 16 */
398 #define SPR_IFS_AIFSN       spr14e
399 #define SPR_IFS_CTL1        spr14f
400
401 #define SPR_SCC_Control                         spr150
402 #define SPR_SCC_Timer_Low                       spr151
403 #define SPR_SCC_Timer_High                      spr152
404 #define SPR_SCC_Divisor                         spr153
405 #define SPR_SCC_Fast_Powerup_Delay              spr154
406 #define SPR_SCC_Period                          spr155
407 #define SPR_SCC_Period_Divisor                  spr156
408
409 // New Registers; Source: d11.h 578947 2015-08-13 04:46:06Z
410 // http://github.com/tuapuikia/asuswrt-phantom/blob/master/release/src-rt-7.14.114.x/src/include/d11.h
411 #define SPR_SCC_CAL_Timer_Low       spr157
412 #define SPR_SCC_CAL_Timer_High      spr158
413
414 #define SPR_IFS_0x32                            spr159
415
416 // New Registers; Source: d11.h 578947 2015-08-13 04:46:06Z
417 // http://github.com/tuapuikia/asuswrt-phantom/blob/master/release/src-rt-7.14.114.x/src/include/d11.h
418 /* BTCX block on corerev >=13 */
419 #define SPR_BTCX_Control                      spr15a
420 #define SPR_BTCX_Stat                         spr15b
421 #define SPR_BTCX_Transmit_Control             spr15c
422 #define SPR_BTCX_PRI_WIN                      spr15d
423 #define SPR_BTCX_TX_Conf_Timer                spr15e
424 #define SPR_BTCX_ANT_SW_Timer                 spr15f
425 #define SPR_BTCX_PRV_RFACT_Timer              spr160
426 #define SPR_BTCX_CUR_RFACT_Timer              spr161
427 #define SPR_BTCX_RFACT_DUR_Timer              spr162
428 #define SPR_IFS_CTL_SEL_PRICRS                spr163
429 #define SPR_IFS_CTL_SEL_SECCRS                spr164
430
431 #define SPR_IFS_0x4a                            spr165
432 #define SPR_IFS_0x4c                            spr166
433 #define SPR_IFS_0x4e                            spr167
434 #define SPR_IFS_0x50                            spr168
435 #define SPR_IFS_0x52                            spr169
436 #define SPR_IFS_0x54                            spr16a
437 #define SPR_IFS_0x56                            spr16b
438 #define SPR_IFS_0x58                            spr16c
439 #define SPR_IFS_0x5a                            spr16d
440 #define SPR_IFS_0x5c                            spr16e
441 #define SPR_IFS_0x5e                            spr16f
442 #define SPR_IFS_0x60                            spr170
443 #define SPR_IFS_0x62                            spr171
444 #define SPR_IFS_0x64                            spr172
445 #define SPR_IFS_0x66                            spr173
446 #define SPR_IFS_0x68                            spr174
447 #define SPR_IFS_0x6a                            spr175
448 #define SPR_IFS_0x6c                            spr176
449 #define SPR_IFS_0x6e                            spr177
450
451 // New Registers; Source: d11.h 578947 2015-08-13 04:46:06Z
452 // http://github.com/tuapuikia/asuswrt-phantom/blob/master/release/src-rt-7.14.114.x/src/include/d11.h
453 /* ECI regs on corerev >=14 */
454 #define SPR_BTCX_ECI_Address                  spr178
455 #define SPR_BTCX_ECI_Data                     spr179
456
457 #define SPR_IFS_0x74                            spr17a
458 #define SPR_IFS_0x76                            spr17b
459 #define SPR_IFS_0x78                            spr17c
460 #define SPR_IFS_0x7a                            spr17d
461 #define SPR_IFS_0x7c                            spr17e
462 #define SPR_IFS_0x7e                            spr17f
463
464 #define SPR_NAV_CTL                             spr180
465 #define SPR_NAV_STAT                            spr181
466 #define SPR_NAV_0x04                            spr182
467 #define SPR_NAV_0x06                            spr183
468 #define SPR_NAV_0x08                            spr184
469 #define SPR_NAV_0x0a                            spr185
470 #define SPR_NAV_ALLOCATION                      spr186
471 #define SPR_NAV_0x0e                            spr187
472 #define SPR_NAV_0x10                            spr188
473 #define SPR_NAV_0x12                            spr189
474 #define SPR_NAV_0x14                            spr18a
475 #define SPR_NAV_0x16                            spr18b
476 #define SPR_NAV_0x18                            spr18c
477 #define SPR_NAV_0x1a                            spr18d
478 #define SPR_NAV_0x1c                            spr18e
479 #define SPR_NAV_0x1e                            spr18f
480 #define SPR_NAV_0x20                            spr190
481 #define SPR_NAV_0x22                            spr191
482 #define SPR_NAV_0x24                            spr192
483 #define SPR_NAV_0x26                            spr193
484 #define SPR_NAV_0x28                            spr194
485 #define SPR_NAV_0x2a                            spr195
486 #define SPR_NAV_0x2c                            spr196
487 #define SPR_NAV_0x2e                            spr197
488 #define SPR_NAV_0x30                            spr198
489 #define SPR_NAV_0x32                            spr199
490 #define SPR_NAV_0x34                            spr19a
491 #define SPR_NAV_0x36                            spr19b
492 #define SPR_NAV_0x38                            spr19c
493 #define SPR_NAV_0x3a                            spr19d
494 #define SPR_NAV_0x3c                            spr19e
495 #define SPR_NAV_0x3e                            spr19f
496 #define SPR_NAV_0x40                            spr1a0
497 #define SPR_NAV_0x42                            spr1a1
498 #define SPR_NAV_0x44                            spr1a2
499 #define SPR_NAV_0x46                            spr1a3
500 #define SPR_NAV_0x48                            spr1a4
501 #define SPR_NAV_0x4a                            spr1a5
502 #define SPR_NAV_0x4c                            spr1a6
503 #define SPR_NAV_0x4e                            spr1a7
504 #define SPR_NAV_0x50                            spr1a8
505 #define SPR_NAV_0x52                            spr1a9
506 #define SPR_NAV_0x54                            spr1aa
507 #define SPR_NAV_0x56                            spr1ab
508 #define SPR_NAV_0x58                            spr1ac
509 #define SPR_NAV_0x5a                            spr1ad
510 #define SPR_NAV_0x5c                            spr1ae
511 #define SPR_NAV_0x5e                            spr1af
512 #define SPR_NAV_0x60                            spr1b0
513 #define SPR_NAV_0x62                            spr1b1
514 #define SPR_NAV_0x64                            spr1b2
515 #define SPR_NAV_0x66                            spr1b3
516 #define SPR_NAV_0x68                            spr1b4
517 #define SPR_NAV_0x6a                            spr1b5
518 #define SPR_NAV_0x6c                            spr1b6
519 #define SPR_NAV_0x6e                            spr1b7
520 #define SPR_NAV_0x70                            spr1b8
521 #define SPR_NAV_0x72                            spr1b9
522 #define SPR_NAV_0x74                            spr1ba
523 #define SPR_NAV_0x76                            spr1bb
524 #define SPR_NAV_0x78                            spr1bc
525 #define SPR_NAV_0x7a                            spr1bd
526 #define SPR_NAV_0x7c                            spr1be
527 #define SPR_NAV_0x7e                            spr1bf
528 #define SPR_WEP_0x00                            spr1c0
529 #define SPR_WEP_0x02                            spr1c1
530 #define SPR_WEP_0x04                            spr1c2
531 #define SPR_WEP_0x06                            spr1c3
532 #define SPR_WEP_0x08                            spr1c4
533 #define SPR_WEP_0x0a                            spr1c5
534 #define SPR_WEP_0x0c                            spr1c6
535 #define SPR_WEP_0x0e                            spr1c7
536 #define SPR_WEP_0x10                            spr1c8
537 #define SPR_WEP_0x12                            spr1c9
538 #define SPR_WEP_0x14                            spr1ca
539 #define SPR_WEP_0x16                            spr1cb
540 #define SPR_WEP_0x18                            spr1cc
541 #define SPR_WEP_0x1a                            spr1cd
542 #define SPR_WEP_0x1c                            spr1ce
543 #define SPR_WEP_0x1e                            spr1cf
544 #define SPR_WEP_0x20                            spr1d0
545 #define SPR_WEP_0x22                            spr1d1
546 #define SPR_WEP_0x24                            spr1d2
547 #define SPR_WEP_0x26                            spr1d3
548 #define SPR_WEP_0x28                            spr1d4
549 #define SPR_WEP_0x2a                            spr1d5
550 #define SPR_WEP_0x2c                            spr1d6
551 #define SPR_WEP_0x2e                            spr1d7
552 #define SPR_WEP_0x30                            spr1d8
553 #define SPR_WEP_0x32                            spr1d9
554 #define SPR_WEP_0x34                            spr1da
555 #define SPR_WEP_0x36                            spr1db
556 #define SPR_WEP_0x38                            spr1dc
557 #define SPR_WEP_0x3a                            spr1dd
558 #define SPR_WEP_0x3c                            spr1de
559 #define SPR_WEP_0x3e                            spr1df
560 #define SPR_WEP_CTL                             spr1e0
561 #define SPR_WEP_IV_Location                     spr1e1
562 #define SPR_WEP_IV_Key                          spr1e2
563 #define SPR_WEP_WKey                            spr1e3
564 #define SPR_WEP_0x48                            spr1e4
565 #define SPR_WEP_0x4a                            spr1e5
566 #define SPR_WEP_0x4c                            spr1e6
567 #define SPR_WEP_0x4e                            spr1e7
568 #define SPR_WEP_0x50                            spr1e8
569 #define SPR_WEP_0x52                            spr1e9
570 #define SPR_WEP_0x54                            spr1ea
571 #define SPR_WEP_AES_Control                     spr1eb
572 #define SPR_WEP_0x58                            spr1ec
573 #define SPR_WEP_0x5a                            spr1ed
574 #define SPR_WEP_0x5c                            spr1ee
575 #define SPR_WEP_0x5e                            spr1ef
576 #define SPR_PMQ_control_low                     spr1f0
577 #define SPR_PMQ_control_high                    spr1f1
578 #define SPR_PMQ_pat_0                           spr1f2
579 #define SPR_PMQ_pat_1                           spr1f3
580 #define SPR_PMQ_pat_2                           spr1f4
581 #define SPR_PMQ_dat                             spr1f5
582 #define SPR_PMQ_dat_or                          spr1f6
583 #define SPR_PMQ_0x0e                            spr1f7
584 #define SPR_PMQ_pat_h0                          spr1f8
585 #define SPR_PMQ_pat_h1                          spr1f9
586 #define SPR_PMQ_pat_h2                          spr1fa
587 #define SPR_PMQ_dat_h                           spr1fb
588 #define SPR_PMQ_0x18                            spr1fc
589 #define SPR_PMQ_0x1a                            spr1fd
590 #define SPR_PMQ_0x1c                            spr1fe
591 #define SPR_PMQ_0x1e                            spr1ff
592
593 // New 802.11ac Registers; Source: d11.h 578947 2015-08-13 04:46:06Z
594 // http://github.com/tuapuikia/asuswrt-phantom/blob/master/release/src-rt-7.14.114.x/src/include/d11.h
595 /* AQM */
596 #define SPR_AQM_Config                  spr200
597 #define SPR_AQM_FIFO_Def                spr201
598 #define SPR_AQM_Max_IDX                 spr202
599 #define SPR_AQM_RCVD_BA0                spr203
600 #define SPR_AQM_RCVD_BA1                spr204
601 #define SPR_AQM_RCVD_BA2                spr205
602 #define SPR_AQM_RCVD_BA3                spr206
603 #define SPR_AQM_BASSN                   spr207
604 #define SPR_AQM_REFSN                   spr208
605 #define SPR_AQM_Max_Agg_Len_Low         spr209
606 #define SPR_AQM_Max_Agg_Len_High        spr20a
607 #define SPR_AQM_Agg_Params              spr20b
608 #define SPR_AQM_Min_MPDU_Length         spr20c
609 #define SPR_AQM_MAC_Adj_Length          spr20d
610 #define SPR_AQM_Debug_Bus_Control       spr20e
611 #define SPR_AQM_Agg_Stats               spr210
612 #define SPR_AQM_Agg_Len_Low             spr211
613 #define SPR_AQM_Agg_Len_High            spr212
614 #define SPR_AQM_IDX_FIFO                spr213
615 #define SPR_AQM_MPDU_Len_FIFO           spr214
616 #define SPR_AQM_TX_Control_FIFO         spr215
617 #define SPR_AQM_Upd_BA0                 spr216
618 #define SPR_AQM_Upd_BA1                 spr217
619 #define SPR_AQM_Upd_BA2                 spr218
620 #define SPR_AQM_Upd_BA3                 spr219
621 #define SPR_AQM_ACK_Control             spr21a
622 #define SPR_AQM_Cons_Control            spr21b
623 #define SPR_AQM_FIFO_Ready              spr21c
624 #define SPR_AQM_Start_Loc               spr21d
625 #define SPR_TDCCTL                      spr220
626 #define SPR_TDC_PLCP0                   spr221
627 #define SPR_TDC_PLCP1                   spr222
628 #define SPR_TDC_Frame_Length0           spr223
629 #define SPR_TDC_Frame_Length1           spr224
630 #define SPR_TDC_TX_Time                 spr225
631 #define SPR_TDC_VHT_Sig_B0              spr226
632 #define SPR_TDC_VHT_Sig_B1              spr227
633 #define SPR_TDC_VHT_L_Sig_Len           spr228
634 #define SPR_TDC_VHT_N_Sym0              spr229
635 #define SPR_TDC_VHT_N_Sym1              spr22a
636 #define SPR_TDC_VHT_PSDU_Len0           spr22b
637 #define SPR_TDC_VHT_PSDU_Len1           spr22c
638 #define SPR_TDC_VHT_MAC_PAD             spr22d
639 #define SPR_SHMDMA_Control              spr230
640 #define SPR_SHMDMA_TXDC_Address         spr231
641 #define SPR_SHMDMA_SHM_Address          spr232
642 #define SPR_SHMDMA_Xfer_Cnt             spr233
643 #define SPR_TXDC_Address                spr234
644 #define SPR_TXDC_Data                   spr235
645 /* RXE Register */
646 #define SPR_MHP_Status                  spr240
647 #define SPR_MHP_FC                      spr241
648 #define SPR_MHP_DUR                     spr242
649 #define SPR_MHP_SC                      spr243
650 #define SPR_MHP_QOS                     spr244
651 #define SPR_MHP_HTC_High                spr245
652 #define SPR_MHP_HTC_Low                 spr246
653 #define SPR_MHP_Addr1_High              spr247
654 #define SPR_MHP_Addr1_Mid               spr248
655 #define SPR_MHP_Addr1_Low               spr249
656 #define SPR_MHP_Addr2_High              spr250
657 #define SPR_MHP_Addr2_Mid               spr251
658 #define SPR_MHP_Addr2_Low               spr252
659 #define SPR_MHP_Addr3_High              spr253
660 #define SPR_MHP_Addr3_Mid               spr254
661 #define SPR_MHP_Addr3_Low               spr255
662 #define SPR_MHP_Addr4_High              spr256
663 #define SPR_MHP_Addr4_Mid               spr257
664 #define SPR_MHP_Addr4_Low               spr258
665 #define SPR_MHP_CFG                     spr259
666 #define SPR_DAGG_CTL2                   spr260
667 #define SPR_DAGG_BYTESLEFT              spr261
668 #define SPR_DAGG_SH_OFFSET              spr262
669 #define SPR_DAGG_STAT                   spr263
670 #define SPR_DAGG_LEN                    spr264
671 #define SPR_TXBA_Control                spr265
672 #define SPR_TXBA_Data_Select            spr266
673 #define SPR_TXBA_Data                   spr267
674 #define SPR_AMT_Control                 spr270
675 #define SPR_AMT_Status                  spr271
676 #define SPR_AMT_Limit                   spr272
677 #define SPR_AMT_Attr                    spr273
678 #define SPR_AMT_Match1                  spr274
679 #define SPR_AMT_Match2                  spr275
680 #define SPR_AMT_Table_Address           spr276
681 #define SPR_AMT_Table_Data              spr277
682 #define SPR_AMT_Table_Value             spr278
683 #define SPR_AMT_Debug_Select            spr279
684 #define SPR_ROE_Control                 spr280
685 #define SPR_ROE_Status                  spr281
686 #define SPR_ROE_IP_Checksum             spr282
687 #define SPR_ROE_TCPUDP_Checksum         spr283
688 #define SPR_PSO_Control                 spr290
689 #define SPR_PSO_RX_Words_Watermark      spr291
690 #define SPR_PSO_RX_Cnt_Watermark        spr292
691 #define SPR_OBFF_Control                spr298
692 #define SPR_OBFF_RX_Words_Watermark     spr299
693 #define SPR_OBFF_RX_Cnt_Watermark       spr29a
694 /* TOE */
695 #define SPR_TOE_Control                 spr300
696 #define SPR_TOE_Rst                     spr301
697 #define SPR_TOE_CSumNZ                  spr302
698 #define SPR_TX_Serial_Control           spr320
699 #define SPR_TX_PLCP_Sig0                spr321
700 #define SPR_TX_PLCP_Sig1                spr322
701 #define SPR_TX_PLCP_HT_Sig0             spr323
702 #define SPR_TX_PLCP_HT_Sig1             spr324
703 #define SPR_TX_PLCP_HT_Sig2             spr325
704 #define SPR_TX_PLCP_VHT_SigB0           spr326
705 #define SPR_TX_PLCP_VHT_SigB1           spr327
706 #define SPR_MAC_Header_From_SHM_Length  spr329
707 #define SPR_TX_PLCP_Length              spr32a
708 #define SPR_TX_BF_Rpt_Length            spr32c
709 #define SPR_TX_BF_Control               spr330
710 #define SPR_Bfm_Rpt_Offset              spr331
711 #define SPR_Bfm_Rpt_Length              spr332
712 #define SPR_TX_BF_BfeRptRdCnt           spr333
713
714 /* Named definitions for the Transmit Modify Engine MASK registers */
715 #define SPR_TME_M_PLCP0                         SPR_TME_MASK0   /* PLCP header (low) */
716 #define SPR_TME_M_PLCP1                         SPR_TME_MASK2   /* PLCP header (middle) */
717 #define SPR_TME_M_PLCP2                         SPR_TME_MASK4   /* PLCP header (high) */
718 #define SPR_TME_M_FCTL                          SPR_TME_MASK6   /* Frame control */
719 #define SPR_TME_M_DURID                         SPR_TME_MASK8   /* Duration / ID */
720 #define SPR_TME_M_ADDR1_0                       SPR_TME_MASK10  /* Address 1 (low) */
721 #define SPR_TME_M_ADDR1_1                       SPR_TME_MASK12  /* Address 1 (middle) */
722 #define SPR_TME_M_ADDR1_2                       SPR_TME_MASK14  /* Address 1 (high) */
723 #define SPR_TME_M_ADDR2_0                       SPR_TME_MASK16  /* Address 2 (low) */
724 #define SPR_TME_M_ADDR2_1                       SPR_TME_MASK18  /* Address 2 (middle) */
725 #define SPR_TME_M_ADDR2_2                       SPR_TME_MASK20  /* Address 2 (high) */
726 #define SPR_TME_M_ADDR3_0                       SPR_TME_MASK22  /* Address 3 (low) */
727 #define SPR_TME_M_ADDR3_1                       SPR_TME_MASK24  /* Address 3 (middle) */
728 #define SPR_TME_M_ADDR3_2                       SPR_TME_MASK26  /* Address 3 (high) */
729 #define SPR_TME_M_SEQ                           SPR_TME_MASK28  /* Sequence control */
730 #define SPR_TME_M_ADDR4_0                       SPR_TME_MASK30  /* Address 4 (low) */
731 #define SPR_TME_M_ADDR4_1                       SPR_TME_MASK32  /* Address 4 (middle) */
732 #define SPR_TME_M_ADDR4_2                       SPR_TME_MASK34  /* Address 4 (high) */
733
734 /* Named definitions for the Transmit Modify Engine VALUE registers */
735 #define SPR_TME_V_PLCP0                         SPR_TME_VAL0    /* PLCP header (low) */
736 #define SPR_TME_V_PLCP1                         SPR_TME_VAL2    /* PLCP header (middle) */
737 #define SPR_TME_V_PLCP2                         SPR_TME_VAL4    /* PLCP header (high) */
738 #define SPR_TME_V_FCTL                          SPR_TME_VAL6    /* Frame control */
739 #define SPR_TME_V_DURID                         SPR_TME_VAL8    /* Duration / ID */
740 #define SPR_TME_V_ADDR1_0                       SPR_TME_VAL10   /* Address 1 (low) */
741 #define SPR_TME_V_ADDR1_1                       SPR_TME_VAL12   /* Address 1 (middle) */
742 #define SPR_TME_V_ADDR1_2                       SPR_TME_VAL14   /* Address 1 (high) */
743 #define SPR_TME_V_ADDR2_0                       SPR_TME_VAL16   /* Address 2 (low) */
744 #define SPR_TME_V_ADDR2_1                       SPR_TME_VAL18   /* Address 2 (middle) */
745 #define SPR_TME_V_ADDR2_2                       SPR_TME_VAL20   /* Address 2 (high) */
746 #define SPR_TME_V_ADDR3_0                       SPR_TME_VAL22   /* Address 3 (low) */
747 #define SPR_TME_V_ADDR3_1                       SPR_TME_VAL24   /* Address 3 (middle) */
748 #define SPR_TME_V_ADDR3_2                       SPR_TME_VAL26   /* Address 3 (high) */
749 #define SPR_TME_V_SEQ                           SPR_TME_VAL28   /* Sequence control */
750 #define SPR_TME_V_ADDR4_0                       SPR_TME_VAL30   /* Address 4 (low) */
751 #define SPR_TME_V_ADDR4_1                       SPR_TME_VAL32   /* Address 4 (middle) */
752 #define SPR_TME_V_ADDR4_2                       SPR_TME_VAL34   /* Address 4 (high) */
753
754
755 /* Interrupts (SPR_MAC_IRQLO/HI) */
756 #define IRQLO_MAC_SUSPENDED     0x0001
757 #define IRQLO_BEACONTEMP_AVAIL  0x0002
758 #define IRQLO_TBTT_INDI         0x0004
759 #define IRQLO_BEACON_TX_OK      0x0008
760 #define IRQLO_BEACON_CANCEL     0x0010
761 #define IRQLO_ATIM_END          0x0020
762 #define IRQLO_PMQ               0x0040
763 #define IRQLO_UNDEFINED_0       0x0080
764 #define IRQLO_PIO_WORKAROUND    0x0100
765 #define IRQLO_MAC_TXERR         0x0200
766 #define IRQLO_UNDEFINED_2       0x0400
767 #define IRQLO_PHY_TXERR         0x0800
768 #define IRQLO_PMEVENT           0x1000
769 #define IRQLO_TIMER0            0x2000
770 #define IRQLO_TIMER1            0x4000
771 #define IRQLO_DMA               0x8000
772 #define IRQHI_TXFIFO_FLUSH_OK   0x0001
773 #define IRQHI_CCA_MEASURE_OK    0x0002
774 #define IRQHI_NOISESAMPLE_OK    0x0004
775 #define IRQHI_UNDEFINED_3       0x0008
776 #define IRQHI_UNDEFINED_4       0x0010
777 #define IRQHI_UNDEFINED_5       0x0020
778 #define IRQHI_UNDEFINED_6       0x0040
779 #define IRQHI_UNDEFINED_7       0x0080
780 #define IRQHI_UNDEFINED_8       0x0100
781 #define IRQHI_UNDEFINED_9       0x0200
782 #define IRQHI_UNDEFINED_10      0x0400
783 #define IRQHI_DEBUG             0x0800
784 #define IRQHI_RFKILL            0x1000
785 #define IRQHI_TX_OK             0x2000
786 #define IRQHI_PHY_G_CHANGED     0x4000
787 #define IRQHI_TIMEOUT           0x8000
788
789
790 /* MAC Control High bits */
791 #define MACCTL_BE               0 /* bit0: Big Endian mode */
792 #define MACCTL_INFRA            1 /* bit1: Infrastructure mode */
793 #define MACCTL_AP               2 /* bit2: AccessPoint mode */
794 #define MACCTL_RADIOLOCK        3 /* bit3: Radio lock */
795 #define MACCTL_BEACPROMISC      4 /* bit4: Beacon Promiscuous */
796 #define MACCTL_KEEP_BADPLCP     5 /* bit5: Keep frames with bad PLCP */
797 #define MACCTL_KEEP_CTL         6 /* bit6: Keep control frames */
798 #define MACCTL_KEEP_BAD         7 /* bit7: Keep bad frames (FCS) */
799 #define MACCTL_PROMISC          8 /* bit8: Promiscuous mode */
800 #define MACCTL_HWPS             9 /* bit9: Hardware Power Saving */
801 #define MACCTL_AWAKE            10 /* bit10: Device is awake */
802 #define MACCTL_CLOSEDNET        11 /* bit11: Closed net (no SSID bcast) */
803 #define MACCTL_TBTTHOLD         12 /* bit12: TBTT Hold */
804 #define MACCTL_DISCTXSTAT       13 /* bit13: Discard TX status */
805 #define MACCTL_DISCPMQ          14 /* bit14: Discard Power Management Queue */
806 #define MACCTL_GMODE            15 /* bit15: G Mode */
807
808
809 /* The FIFO queue numbers */
810 #define FIFO_BK                 0 /* Background */
811 #define FIFO_BE                 1 /* Best Effort */
812 #define FIFO_VI                 2 /* Video */
813 #define FIFO_VO                 3 /* Voice */
814 #define FIFO_MCAST              4 /* Broadcast / Multicast */
815 #define FIFO_ATIM               5 /* ATIM window info */
816
817 // 802.11 Frame Types; Source: mac_structures.h 578947 2015-08-13 04:46:06Z
818 // http://lxr.free-electrons.com/source/drivers/staging/winbond/mac_structures.h?v=2.6.32
819 //-----  management : Type of Bits (2, 3) and Subtype of Bits (4, 5, 6, 7)
820 #define MAC_SUBTYPE_MNGMNT_ASSOC_REQUEST    0x00
821 #define MAC_SUBTYPE_MNGMNT_ASSOC_RESPONSE   0x10
822 #define MAC_SUBTYPE_MNGMNT_REASSOC_REQUEST  0x20
823 #define MAC_SUBTYPE_MNGMNT_REASSOC_RESPONSE 0x30
824 #define MAC_SUBTYPE_MNGMNT_PROBE_REQUEST    0x40
825 #define MAC_SUBTYPE_MNGMNT_PROBE_RESPONSE   0x50
826 #define MAC_SUBTYPE_MNGMNT_BEACON           0x80
827 #define MAC_SUBTYPE_MNGMNT_ATIM             0x90
828 #define MAC_SUBTYPE_MNGMNT_DISASSOCIATION   0xA0
829 #define MAC_SUBTYPE_MNGMNT_AUTHENTICATION   0xB0
830 #define MAC_SUBTYPE_MNGMNT_DEAUTHENTICATION 0xC0
831 //-----  control : Type of Bits (2, 3) and Subtype of Bits (4, 5, 6, 7)
832 #define MAC_SUBTYPE_CONTROL_PSPOLL          0xA4
833 #define MAC_SUBTYPE_CONTROL_RTS             0xB4
834 #define MAC_SUBTYPE_CONTROL_CTS             0xC4
835 #define MAC_SUBTYPE_CONTROL_ACK             0xD4
836 #define MAC_SUBTYPE_CONTROL_CFEND           0xE4
837 #define MAC_SUBTYPE_CONTROL_CFEND_CFACK     0xF4
838 //-----  data : Type of Bits (2, 3) and Subtype of Bits (4, 5, 6, 7)
839 #define MAC_SUBTYPE_DATA                    0x08
840 #define MAC_SUBTYPE_DATA_CFACK              0x18
841 #define MAC_SUBTYPE_DATA_CFPOLL             0x28
842 #define MAC_SUBTYPE_DATA_CFACK_CFPOLL       0x38
843 #define MAC_SUBTYPE_DATA_NULL               0x48
844 #define MAC_SUBTYPE_DATA_CFACK_NULL         0x58
845 #define MAC_SUBTYPE_DATA_CFPOLL_NULL        0x68
846 #define MAC_SUBTYPE_DATA_CFACK_CFPOLL_NULL  0x78
847
848
849 #endif /* SPECIAL_PURPOSE_REGISTER_H_ */
850
851 // vim: syntax=b43 ts=8