summaryrefslogtreecommitdiffstats
path: root/target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192c_reg.h
blob: f43a0395261f6784e29aaacbdd601bdcc423cd6e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
/*
 *  Header file of 8192C register
 *
 *	 $Id: 8192c_reg.h,v 1.7.2.2 2010/09/20 09:00:10 button Exp $
 *
 *  Copyright (c) 2009 Realtek Semiconductor Corp.
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 */

#ifndef _8192C_REG_H_
#define _8192C_REG_H_

#ifndef WLAN_HAL_INTERNAL_USED


//============================================================
//       8192C Regsiter offset definition
//============================================================


//
// MAC register 0x000 - 0x6AFh
// 1. System Configure Register. (Offset 0x000 - 0x0FFh)
// 2. MACTOP General Configuration. (Offset 0x100 - 0x1FFh)
//		General Purpose Timer. (Offset 0x150 - 0x16Fh)
// 3. TXDMA/RXDMA Configuration. (Offset 0x200 - 0x2FFh)
// 4. PCIE EMAC Reserved Region. (Offset 0x300 - 0x3FFh)
// 5. PTCL/EDCA Configuration. (Offset 0x400 - 0x4FFh)
// 6. WMAC Configuration. (Offset 0x600 - 0x7FFh)
// 		MACID Setting Register. (Offset 0x610 - 0x62Fh)
// 		Timing Control Register. (Offset 0x630 - 0x64Fh)
// 		WMAC, BA, CCX Related Register. (Offset 0x650 - 0x66Fh)
// 		Security Control Register. (Offset 0x670 - 0x68Fh)
// 		Power Save Control Register. (Offset 0x690 - 0x69Fh)
// 		General Purpose Register. (Offset 0x6A0 - 0x6AFh)
//


//
// 1. System Configure Register. (Offset 0x000 - 0x0FFh)
//
#define		SYS_ISO_CTRL		0x000	// System Isolation Interface Control.
#define		SYS_FUNC_EN		0x002	// System Function Enable.
#define		APS_FSMCO			0x004	// Auto Power Sequence Control/Option.
#define		SYS_CLKR			0x008	// System Clock.
#define		CR9346				0x00A	// 93C46 (93C56) Command.
#define		EE_VPD				0x00C	// EEPROM VPD Data.
#define		AFE_MISC			0x010	// AFE Misc.
#define		SPS0_CTRL			0x011	// Switching Power Supply 0 Control.
#define		SPS_OCP_CFG		0x018	// SPS Over Current Protection Configuration.
#define		RSV_CTRL0			0x01C	// Reserved Control.
#define		RF_CTRL				0x01F	// RF Block Control.
#define		LDOA15_CTRL		0x020	// V15 Digital LDO Control.
#define		LDOV12D_CTRL		0x021	// V12 Digital LDO Control.
#define		LDOHCI12_CTRL		0x022	// V12 Digital LDO Control.
#define		LPLDO_CTRL			0x023	// Low Power LDO Control.
#define		AFE_XTAL_CTRL		0x024	// AFE Crystal Control.
#define		AFE_PLL_CTRL		0x028	// AFE_PLL_CTRL Enable.
#define		RSV_CTRL1			0x02C	// Reserved Control.
#define		EFUSE_CTRL			0x030	// E-Fuse Control.
#define		EFUSE_TEST			0x034	// E-Fuse Test Control.
#define		PWR_DATA			0x038	// Power on Data.
#define		CAL_TIMER			0x03C	// Hardware Calibration Timer.
#define		ACLK_MON			0x03E	// Analog Clock Monitor.
#define		GPIO_MUXCFG		0x040	// GPIO_MUX Configuration.
#define		GPIO_PIN_CTRL		0x044	// GPIO[7:0] PIN Control.
#define		GPIO_INTM			0x048	// GPIO Interrupt Monitor Register.
#define		LEDCFG				0x04C	// System PINMUX Configuration.
#define		FSIMR				0x050	// Firmware System Interrupt Mask.
#define		FSISR				0x054	// Firmware System Interrupt Status.

#define		MCUFWDL			0x080	// MCU Firmware Down Load Control.
#define		MCUTSTCFG			0x084	// MCU Firmware Test Configuration.
#define		MCUDMSG_I			0x088	// MCU Firmware Debug Message.
#define		MCUDMSG_II			0x08C	// MCU Firmware Debug Message.

#define		BIST_CTRL			0x0D0  	// BIST/SCAN CONTROL
#define		C_BIST_RPT			0x0D4  	// BIST Report
#define		BIST_ROM_RPT		0x0D8  	// BIST ROM Report
#define		USB_SIE_INTF		0x0E0  	// USB SIE Access Interface
#define		PCIE_MIO_INTF		0x0E4  	// PCIE MIO Access Interface
#define		PCIE_MIO_INTD		0x0E8	// PCIE MIO Access Interface DATA.
#define		HPON_FSM			0x0EC	// Power On FSM Monitor/Control.
#define		SYS_CFG			0x0F0	// System Configuration Status


//
// 2. MACTOP General Configuration. (Offset 0x100 - 0x1FFh)
//
#define		CR					0x100  // Command Register.
#define		PBP					0x104  // Packet Buffer Page.
#define		TRXDMA_CTRL		0x10C  // TRXDMA Control.
#define		TRXFF_BNDY			0x114  // TX/RX FIFO Boundary
#define		TRXFF_STATUS		0x118  // PKTFF Status
#define		RXFF_PTR			0x11C  // RXFF Write/Read Pointer
#define		HIMR				0x120  // Host Interrupt Mask.
#define		HISR				0x124  // Host Interrupt Status.
#define		HIMRE				0x128  // Host Interrupt Mask Extension.
#define		HISRE				0x12C  // Host Interrupt Status Extension.
#define		CPWM				0x12F  // Current Power Mode.
#define		FWIMR				0x130  // Firmware WLAN Interrupt Mask.
#define		FWISR				0x134  // Firmware WLAN Interrupt Status.
#define		FTIMR				0x138  // Firmware Timer Interrupt Mask.
#define		FTISR				0x13C  // Firmware Timer Interrupt Status.
#define		PKTBUF_DBG_CTRL	0x140  // TX/RX Packet Buffer Debug Control.
#define		PKTBUF_DBG_DATA_L	0x144  // TX/RX Packet Buffer Debug Data.
#define		PKTBUF_DBG_DATA_H	0x148  // TX/RX Packet Buffer Debug Data.
//		General Purpose Timer. (Offset 0x150 - 0x16Fh)
#define		TC0_CTRL			0x150  // Timer/Counter 0 Control.
#define		TC1_CTRL			0x154  // Timer/Counter 1 Control.
#define		TC2_CTRL			0x158  // Timer/Counter 2 Control.
#define		TC3_CTRL			0x15C  // Timer/Counter 3 Control.
#define		TC4_CTRL			0x160	// Timer/Counter 4 Control.
#define		TCUNIT_BASE		0x164	// Timer/Counter Unit Base.
//		General Purpose Timer. (Offset 0x150 - 0x16Fh)
#define		MBIST_START		0x174	// MACTOP BIST START Pulse.
#define		MBIST_DONE			0x178	// MACTOP BIST DONE.
#define		MBIST_FAIL			0x17C	// MACTOP BIST FAIL.

#define		C2H_SYNC_BYTE		0x1AF	// 8051 set to 0xFF, Driver set to 0x0 after read C2H content 
#define		MCUTST_I			0x1C0	// MCU Firmware TST-I.
#define		MCUTST_II			0x1C4	// MCU Firmware TST-II.
#define		MCU_UNLOCK		 0x01C7	// is used for Unlock MCU infinite-loop
#define		FMETHR				0x1C8	// Firmware Message Exchange to Host.
#define		HMETFR				0x1CC	// Host Message Interrupt to Firmware.
#define		HMEBOX_0	 		0x1D0	// Host Message BOX_0 to Firmware.
#define		HMEBOX_1			0x1D4	// Host Message BOX_1 to Firmware.
#define		HMEBOX_2			0x1D8	// Host Message BOX_2 to Firmware.
#define		HMEBOX_3			0x1DC	// Host Message BOX_3 to Firmware.
#define		LLT_INI				0x1E0	// LLT Entries Initial Indirect Access Control.
#define		BB_ACCEESS_CTRL	0x1E8	// BB Indirect Access Control.
#define		BB_ACCESS_DATA	0x1EC	// BaseBand Indirect Access Data.
#define		MREG_HCIDBG		0x1F0	// MAC REG for HCI debug.
#define		MREG_CPUDBG		0x1F4	// MAC REG for CPU debug.


//
// 3. TXDMA/RXDMA Configuration. (Offset 0x200 - 0x2FFh)
//
#define		RQPN				0x200	// Reserved Queue Page Number.
#define		FIFOPAGE			0x204	// Available FIFO Page Number.
#define		TDECTRL			0x208	// Tx DMA Engine Control.
#define		TXDMA_OFFSET_CHK	0x20C	// TXDMA Offset Check.
#define		TXDMA_STATUS		0x210	// TXDMA Status.
#define		RQPN_NPQ			0x214	// RQPN for Normal Queue Register

#define		RXDMA_AGG_PG_TH	0x280	// RXDMA AGG PG Threshold.
#define		RXPKT_NUM			0x284	// RX Packet Number.
#define		RXDMA_STATUS		0x288	// RXDMA Status.


//
// 4. PCIE EMAC Reserved Region. (Offset 0x300 - 0x3FFh)
//
#define		PCIE_CTRL_REG		0x300	// PCIE DMA Control.
#define		INT_MIG			0x304	// Interrupt Migration.
#define		BCNQ_DESA			0x308	// TX Beacon Descriptor Address.
#define		HQ_DESA			0x310	// TX High Queue Descriptor.
#define		MGQ_DESA			0x318	// TX Manage Queue Descriptor Address.
#define		VOQ_DESA			0x320	// TX VO Queue Descriptor Address.
#define		VIQ_DESA			0x328	// TX VI Queue Descriptor Address.
#define		BEQ_DESA			0x330	// TX BE Queue Descriptor Address.
#define		BKQ_DESA			0x338	// TX BK Queue Descriptor Address.
#define		RX_DESA			0x340	// RX Queue Descriptor Address.
#define		DBI					0x348	// Backdoor REG for Access Configuration SPACE.
#define		MDIO				0x354	// MDIO for Access PCIE PHY.
#define		DBG_SEL			0x360	// Debug Selection
#define		UART_CTRL			0x364	// UART Control.
#define		UART_TX_DESA		0x370	// UART TX Descriptor Address.
#define		UART_RX_DESA		0x378	// UART RX Descriptor Address.


//
// 5. PTCL/EDCA Configuration. (Offset 0x400 - 0x4FFh)
//
#define		VOQ_INFO			0x400	//
#define		VIQ_INFO			0x404	//
#define		BEQ_INFO			0x408	//
#define		BKQ_INFO			0x40C	//
#define		MGQ_INFO			0x410	//
#define		HIQ_INFO			0x414	//
#define		BCNQ_INFO			0x418	//
#define		TXPKT_EMPTY		0x41B	// TXPKTBUF Packet Empty.
#define		CPU_MGQ_INFO		0x41C	// TXPKTBUF Packet Empty.
#define		FWHW_TXQ_CTRL	0x420	// FWHW TX Queue Control.
#define		HWSEQ_CTRL		0x423	// HW Sequence Number Control.
#define		TXPKTBUF_BCNQ_BDNY	0x424	// BCNQ Boundary.
#define		TXPKTBUF_MGQ_BDNY	0x425	// MGQ Boundary.
#define		MULTI_BCNQ_EN		0x426	//
#define		MULTI_BCNQ_OFFSET		0x427	//
#define		SPEC_SIFS_A		0x428	//
#define		RL					0x42A	//
#define		DARFRC				0x430	// Data Auto Rate Fallback Retry Count.
#define		RARFRC				0x438	// Response Auto Rate Fallback Retry Count.
#define		RRSR				0x440	// Response Rate Set.
#define		ARFR0				0x444	// Data Auto Rate Fallback 0.
#define		ARFR1				0x448	// Auto Rate Fallback 1.
#define		ARFR2				0x44C	// Auto Rate Fallback 2.
#define		ARFR3				0x450	// Auto Rate Fallback 3.
#define		AGGLEN_LMT		0x458	// Aggregation Length.
#define		AMPDU_MIN_SPACE	0x45C	// AMPDU Min Space.
#define		TXPKTBUF_WMAC_LBK_BF_HD	0x45D	// LBK Buffer Head Page
#define		FAST_EDCA_CTRL	0x460	// Fast EDCA Mode.
#define		RD_RESP_PKT_TH	0x463	// RD Responder Packet Threshold.
#define		INIRTS_RATE_SEL	0x480	// Initial RTS Rate SEL.
#define		INIDATA_RATE_SEL	0x484	// Initial Data Rate SEL.
#define		POWER_STATUS		0x4A4	// POWER STATUS.
#define		POWER_STAGE1		0x4B4	// POWER STAGE1.
#define		POWER_STAGE2		0x4B8	// POWER STAGE2.---------------???
#define		PKT_LIFE_TIME		0x4C0	// PKT LIFT TIME.
#define		STBC_SETTING		0x4C4	// STBC.
#define		PROT_MODE_CTRL	0x4C8	// PROTECT MODE Control.
#define		BAR_MODE_CTRL		0x4CC	// BAR MODE Control.
#define		RA_TRY_RATE_AGG_LMT	0x4CF	// Rate Adaptive Try Rate Aggregation Limit.
#define		NQOS_SEQ			0x4DC	// Non-QoS SEQ Number.
#define		QOS_SEQ			0x4DE	// QoS SEQ Number.
#define		NEED_CPU_HANDLE	0x4E0	// Need CPU Handle.
#define		PTCL_ERR_STATUS	0x4E1	// Protocol Function Error Status.
#define		PKT_LOSE_RPT		0x4E2	// PKT Lose Report.
#define		Dummy				0x4FC	// Dummy.

#define		EDCA_VO_PARA		0x500	// EDCA Parameter.
#define		EDCA_VI_PARA		0x504	// EDCA Parameter.
#define		EDCA_BE_PARA		0x508	// EDCA Parameter.
#define		EDCA_BK_PARA		0x50C	// EDCA Parameter.
#define		BCNTCFG			0x510	// Beacon Time Configuration.
#define		PIFS				0x512	// PIFS.
#define		RDG_PIFS			0x513	// RDG PIFS.
#define		SIFS_CCK			0x514	// SIFS for CCK.
#define		SIFS_OFDM			0x516	// SIFS for OFDM.
#define		AGGR_BK_TIME		0x51A	// AGGR BREAK TIME.
#define		SLOT_TIME			0x51B	// Slot Time.
#define		TX_PTCL_CTRL		0x520	// TX Protocol Control.
#define		TXPAUSE			0x522	// Transmission Pause.
#define		DIS_TXREQ_CLR		0x523	// Disable TX Request Clear Function.
#define		RD_CTRL			0x524	// RD Control.
#define		TBTT_PROHIBIT		0x540	// TBTT Prohibit.
#define		RD_NAV_NXT		0x544	// RD NAV Protect Next Time.
#define		NAV_PROT_LEN		0x546	// NAV Protection Length.
#define		BCN_CTRL			0x550	// Bcnq Control.
#define		USTIME_TSF			0x551	// US Time Tuning for TSF.
#define		MBID_NUM			0x552	// MBSSID Beacon Number.
#define		MBSSID_BCN_SPACE	0x554	// MBSSID Beacon Space.
#define		DRVERLYINT			0x558	// Beacon Driver Early Interrupt.
#define		BCNDMATIM			0x559	// BCN DMA and ATIM INT Time.-----------------???
#define		ATIMWND			0x55A	// ATIM Window Time.
#define		BCN_MAX_ERR		0x55D	// BCN MAX ERROR.
#define		RXTSF_OFFSET_CCK	0x55E	// CCK BCN OFFSET.
#define		RXTSF_OFFSET_OFDM	0x55F	// OFDM BCN OFFSET.
#define		TSFTR				0x560	// TSF Timer.
#define		INIT_TSFTR			0x564	// TSF Timer Initial Value.
#define		PSTIMER			0x580	// PS TIMER and Timeout INT.
#define		TIMER0				0x584	// TIMER0 INT.
#define		TIMER1				0x588	// TIMER1 INT.
#define		ACMHWCTRL			0x5C0	// ACM HW Control.
#define		ACMRSTCTRL			0x5C1	// ACM RST.
#define		ACMAVG				0x5C2	// ACM Average.
#define		VO_ADMTIME		0x5C4	// VO Admission Time.
#define		VI_ADMTIME			0x5C6	// VI Admission Time.
#define		BE_ADMTIME		0x5C8	// BE Admission Time.
#define		EDCA_RANDOM_GEN	0x5CC	// EDCA Random Number Generator.
#define		C_SCH_TXCMD		0x5D0	// TX_CMD.
#define		NOA_PARAM			0x5E0	// P2P NoA Parameter


//
// 6. WMAC Configuration. (Offset 0x600 - 0x7FFh)
//
#define		APSD_CTRL			0x600	// APSD Control.
#define		BWOPMODE			0x603	// BW Operation Mode.
#define		TCR					0x604	// Transmission Configuration.
#define		RCR					0x608	// Receive Configuration.
#define		RX_PKT_LIMIT		0x60C	// RX Packet Length Limit.
#define		RX_DLK_TIME		0x60D	// RX Deadlock Time.
#define		RX_DRVINFO_SZ		0x60F	// RX Driver INFO Size Register.
//		MACID Setting Register. (Offset 0x610 - 0x62Fh)
#define		MACID				0x610	// MAC ID.
#define		BSSIDR				0x618	// BSSID.
#define		MAR					0x620	// Multicast Address.
#define		MBIDCAMCFG		0x628	// MBSSID CAM Configuration.
//		MACID Setting Register. (Offset 0x610 - 0x62Fh)

//		Timing Control Register. (Offset 0x630 - 0x64Fh)
#define		USTIME_EDCA		0x638	// US Time Tuning for EDCA.
#define		SPEC_SIFS_B		0x63A	// Specification SIFS.
#define		RESP_SIFS_CCK		0x63C	// Response SIFS for CCK.
#define		RESP_SIFS_OFDM	0x63E	// Response SIFS for OFDM.
#define		ACKTO				0x640	// ACK Timeout.
#define		CTS2TO				0x641	// CTS2 Timeout.
#define		EIFS				0x642	// EIFS.
//		Timing Control Register. (Offset 0x630 - 0x64Fh)

//		WMAC, BA, CCX Related Register. (Offset 0x650 - 0x66Fh)
#define		NAV_CTRL			0x650	// NAV Control.
#define		BACAMCMD			0x654	// Block ACK CAM Command.
#define		BACAMCONTENT 		0x658	// Block ACK CAM Content.
#define		LBDLY		 		0x660	// Loopback Delay.
#define		FWDLY		 		0x661	// FW Delay.
#define		RXERR_RPT	 		0x664	// RX Error Report.
#define		WMAC_TRXPTCL_CTL	0x668	// WMAC TX/RX Protocol Control.
//		WMAC, BA, CCX Related Register. (Offset 0x650 - 0x66Fh)

//		Security Control Register. (Offset 0x670 - 0x68Fh)
#define		CAMCMD				0x670	// CAM Command.
#define		CAMWRITE			0x674	// CAM Write.
#define		CAMREAD			0x678	// CAM Read.
#define		CAMDBG				0x67C	// CAM Debug.
#define		SECCFG				0x680	// Security Configuration.
//		Security Control Register. (Offset 0x670 - 0x68Fh)

//		Power Save Control Register. (Offset 0x690 - 0x69Fh)
#define		WOW_CTRL			0x690	// Wake On WLAN Control.
#define		PSSTATUS			0x691	// Power Save Status.
#define		PS_RX_INFO			0x692	// Power Save RX Information.
#define		LPNAV_CTRL			0x694	// Low Power NAV Control.
#define		WKFMCAM_CMD		0x698	// Wakeup Frame CAM Command.
#define		WKFMCAM_RWD		0x69C	// Wakeup Frame Read/Write Data.
//		Power Save Control Register. (Offset 0x690 - 0x69Fh)

//		General Purpose Register. (Offset 0x6A0 - 0x6AFh)
#define		RXFLTMAP0			0x6A0	// RX Filter Map Group 0.
#define		RXFLTMAP1			0x6A2	// RX Filter Map Group 1.
#define		RXFLTMAP2			0x6A4	// RX Filter Map Group 2.
#define		BCN_PSR_RPT		0x6A8	// Beacon Parser Report.
#define		CALB32K_CTRL		0x6AC	// Calibration 32K Control.
//		General Purpose Register. (Offset 0x6A0 - 0x6AFh)
#define		PKT_MON_CTRL		0x6B4	// Packet Monitor Control.
#define		BT_COEX_TABLE		0x6C0	// BT-Coexistence Control.
#define		WMAC_RESP_TXINFO	0x6D8	// Response TXINFO.


//============================================================================
//       8192C Regsiter Bit and Content definition
//============================================================================


//
// 1. System Configure Register. (Offset 0x000 - 0x0FFh)
//
//----------------------------------------------------------------------------
//       8192C SYS_ISO_CTRL bits				(Offset 0x0, 16bit)
//----------------------------------------------------------------------------
#define		PWC_EV12V			BIT(15)	// Power Cut for eFuse 1.2V, 1: Power valid; 0: Power invalid.
#define		PWC_EV25V			BIT(14)	// Power Cut for eFuse 2.5V, 1: force PSW open; 0: PSW turn on by efuse ctrl.
#define		ISO_DIOR			BIT(9)	// RF Digital I/O to Power On, 1: isolation; 0: attach.
#define		ISO_EB2CORE		BIT(8)	// eFuse cell output to Power On, 1: isolation; 0: attach.
#define		ISO_DIOE			BIT(7)	// Extra Digital I/O to Power On, 1: isolation; 0: attach.
#define		ISO_DIOP			BIT(6)	// PCIe Digital I/O to Power On, 1: isolation; 0: attach.
#define		ISO_IP2MAC			BIT(5)	// Analog Ips to Digital 1.2V, 1: isolation; 0: attach (no used).
#define		ISO_PD2CORE		BIT(4)	// PCIe Digital 1.2V to Power On/Core 1.2V, 1: isolation; 0: attach.
#define		ISO_PA2PCIE		BIT(3)	// PCIe Analog 1.2V to PCIe 3.3V and Digital 1.2V, 1: isolation; 0: attach.
#define		ISO_UD2CORE		BIT(2)	// USB Digital 1.2V to Power On/Core 1.2V, 1: isolation; 0: attach.
#define		ISO_UA2USB			BIT(1)	// USB Analog 1.2V to USB 3.3V and Digital 1.2V, 1: isolation; 0: attach.
#define		ISO_MD2PP			BIT(0)	// MACTOP/BB/PCIe Digital to Power On, 1: isolation; 0: attach.

//----------------------------------------------------------------------------
//       8192C SYS_FUNC_EN bits					(Offset 0x2, 16bit)
//----------------------------------------------------------------------------
#define		FEN_MREGEN		BIT(15)	// MAC I/O Registers Enable.
#define		FEN_HWPDN			BIT(14)	// 0 : force All analog blocks shutdown, 1 : keep Analog Blocks alive.
#define		FEN_DIO_RF			BIT(13)	// Enable RF Digital I/O.
#define		FEN_ELDR			BIT(12)	// Enable EEPROM Loader (Loader POR).
#define		FEN_DCORE			BIT(11)	// enable Core Digital (MACTOP POR).
#define		FEN_CPUEN			BIT(10)	// Enable MCU Core (CPU RST).
#define		FEN_DIOE			BIT(9)	// Extra Debug I/O PAD Enable.
#define		FEN_PCIED			BIT(8)	// enable PCIe eMAC.
#define		FEN_PPLL			BIT(7)	// Enable PCIe PHY_PLL (no used).
#define		FEN_PCIEA			BIT(6)	// Enable PCIe PHY.
#define		FEN_DIO_PCIE		BIT(5)	// Enable PCIe Digital I/O (no used).
#define		FEN_USBD			BIT(4)	// Enable USB_SIE.
#define		FEN_UPLL			BIT(3)	// Enable USB PHY_PLL (no used).
#define		FEN_USBA			BIT(2)	// Enable USB PHY.
#define		FEN_BB_GLB_RST	BIT(1)	// When this bit is set to "0", whole BB is reset. When this bit is set, BB is enabled.
#define		FEN_BBRSTB			BIT(0)	// When this bit is set to "0", CCK and OFDM are disabled,
										// and clock are gated. Otherwise, CCK and OFDM are enabled.

//----------------------------------------------------------------------------
//       8192C APS_FSMCO bits					(Offset 0x4, 32bit)
//----------------------------------------------------------------------------
#define		XOP_BTCK			BIT(31)	// BT Option for never turn off XTAL & SPS.
#define		SOP_A8M			BIT(30)	// Suspend option not to turn analog Clock Mode to 500K Hz, 1: keep 8M, 0: 500K.
#define		SOP_RCK			BIT(29)	// Suspend option not to turn off Hreg Clock (8M/500KHz), 1: clock on, 0: clock off.
#define		SOP_AMB			BIT(28)	// Suspend option not to turn off AFE MB, 1: MB on, 0: MB off.
#define		SOP_ABG			BIT(27)	// Suspend option not to turn off AFE BG, 1: BG on, 0: BG off.
#define		SOP_FUSE			BIT(26)	// Suspend option to turn off Efuse Power or reset Loader, 1: Fuse Pwr Off, 0: Fuse Pwr On.
#define		SOP_MRST			BIT(25)	// Suspend option not to turn off MAC Reset, 1: MAC not reset, 0: MaC reset.
#define		SOP_CRST			BIT(24)	// Susoend option not to turn off 8051 clock, 1: 8051 clock on, 0:8051 clock off.
#define		ROP_SPS			BIT(22)	// Resume option to skip turn On SPS.
#define		ROP_PWR			BIT(21)	// Resume option to skip wait Power Ready, 1: pwr up no delay, 0: wait pwr stable.
#define		ROP_ALD			BIT(20)	// Resume option to skip autoload, 1: not autoload, 0: autoload.
#define		OP_SWRST			BIT(19)	// Option for Software Reset to Reset 8051.
#define		SUS_HOST			BIT(17)	// Power FSM turn to HOST SUS.
#define		RDY_MACON			BIT(16)	// Power FSM turn all power, clock ready for MAC.
#define		APDM_HPDN			BIT(15)	// Auto Power Down to CHIP-off State (Power-Down).
#define		APDM_HOST			BIT(14)	// Auto Power Down to HOST-off State (Card-Disable).
#define		APDM_MAC			BIT(13)	// Auto Power Down to WLAN-Off State (Radio-off).
#define		AFSM_PCIE			BIT(12)	// When this bit is set, PCIE suspends via HW FSM control flow.
#define		AFSM_HSUS			BIT(11)	// 1: Host Suspend through FSM operation; 0: Host Suspend by gated.
#define		APFM_RSM			BIT(10)	// Auto Power On State Machine Resume, auto clear when EE load done.
#define		APFM_OFF			BIT(9)	// Auto FSM to Turn Off, include clock, isolation, power control.
#define		APFM_ONMAC		BIT(8)	// Auto FSM to Turn On, include clock, isolation, power control for MAC only.
#define		BT_SUSEN			BIT(7)	// Enable BT suspend control.
#define		RDY_MACDIS			BIT(6)	// Disable MAC power Ready Output for Test Mode.
#define		PDN_PL				BIT(5)	// PDn polarity control, 0: Low active, 1: High active.
#define		PDN_EN				BIT(4)	// Enable GPIO-11 as Hardware PowerDown/Resume Source.
#define		PFM_WOWL			BIT(3)	// Wake On Lan indicator for H/W FSM.
#define		PFM_LDKP			BIT(2)	// Loader Initial data when re-enable loader.
#define		PFM_ALDN			BIT(1)	// HCI Region load done, inform HCI block.
#define		PFM_LDALL			BIT(0)	// EEPROM autoload 0x00~60h Enable.

//----------------------------------------------------------------------------
//       8192C SYS_CLKR bits					(Offset 0x8, 16bit)
//----------------------------------------------------------------------------
#define		RING_CLK_EN					BIT(13)	// HPON Ring Clock Enable, 1: Enable; 0 : Disable.
#define		SYS_CLK_EN						BIT(12)	// MCU Clock Enable, 1: Enable; 0 : Disable.
#define		MAC_CLK_EN						BIT(11)	// MAC Clock Enable, 1: Enable, 0 : Disable.
#define		SEC_CLK_EN						BIT(10)	// SEC Clock Enable, 1 :Enable, 0 :Disable.
#define		PHY_SSC_RSTB					BIT(9)	// PHY SSC Enable (0: Disable, 1: Enable).
#define		CLKR_80M_SSC_EN_HOLD_PHS0	BIT(8)	// 80M Clock Hold phase 0.
#define		CLKR_80M_SSC_DIS				BIT(7)	// 80M Clock SSC Disable.
#define		LOADER_CLK_EN					BIT(5)	// Loader (eFuse/EEPROM) Clock Enable.
#define		MACSLP							BIT(4)	// MAC SLEEP.
#define		ROMD16V_EN					BIT(2)	// Analog Clock source Divide 16 Mode for EEPROM.
#define		ANA8M							BIT(1)	// Analog Clock source rate, 1: 8M Hz, 0: 500K Hz.
#define		CNTD16V_EN						BIT(0)	// Analog Clock source Divide 16 Mode for Hardware Timer.

//----------------------------------------------------------------------------
//       8192C CR9346 bits						(Offset 0xA, 16bit)
//----------------------------------------------------------------------------
#define		VPDIDX_SHIFT		8	// VPD mode, EEPROM Index.
#define		VPDIDX_Mask		0x0FF
#define		EEM1_0_SHIFT		6	// Operating Mode.
#define		EEM1_0_Mask		0x03
#define		EEPROM_EN			BIT(5)	// EEPROM/Efuse is found when set to 1.
#define		EERPOMSEL			BIT(4)	// System EEPROM select (power on selected by GPIO-0).
#define		EECS				BIT(3)	// reflect the state of the EECS.
#define		EESK				BIT(2)	// reflect the state of the EESK.
#define		EEDI				BIT(1)	// reflect the state of the EEDI.
#define		EEDO				BIT(0)	// reflect the state of the EEDO.


#ifdef EN_EFUSE
#define		CmdEEPROM_En						BIT(5)	 // EEPROM enable when set 1
#define		CmdEERPOMSEL						BIT(4) // System EEPROM select, 0: boot from E-FUSE, 1: The EEPROM used is 9346
#define		AutoLoadEEPROM						(CmdEEPROM_En|CmdEERPOMSEL)
#define		AutoLoadEFUSE						CmdEEPROM_En


#ifdef CONFIG_RTL_92C_SUPPORT

#define EEPROM_TxPowerCCK			0x5A // CCK Tx Power base
#define	EEPROM_TxPowerHT40_1S		0x60 // HT40 Tx Power base
#define	EEPROM_TxPowerHT40_2SDiff	0x66 // HT40 Tx Power diff
#define EEPROM_TxPowerHT20Diff		0x69 // HT20 Tx Power diff
#define EEPROM_TxPowerOFDMDiff		0x6C // OFDM Tx Power diff
#define EEPROM_MACADDRESS			0x16 // OFDM Tx Power diff
#define EEPROM_THERMAL_METER		0x78 //[4:0]
#endif

#endif


//----------------------------------------------------------------------------
//       8192S AFE_MISC bits						(Offset 0x10, 8bits)
//----------------------------------------------------------------------------
#define		MAC_ID_EN			BIT(7)	// Reserved for RF_ID selection to be MAC.
#define		AFE_MBEN			BIT(1)	// Enable AFE Macro Block's Mbias.
#define		AFE_BGEN			BIT(0)	// Enable AFE Macro Block's Bandgap.

//----------------------------------------------------------------------------
//       8192C SPS0_CTRL bits					(Offset 0x11-17, 56bits)
//----------------------------------------------------------------------------
#define		SW18_LDO_R			BIT(19)	// LDO_R_L1 = 1 => LDO resistor connect.
#define		SW18_V15ADJ_SHIFT		16	// v15adj_L1<2:0>  output.
#define		SW18_V15ADJ_Mask		0x07
#define		SW18_VOL_SHIFT		12	// VOL_L1<3:0>  output.
#define		SW18_VOL_Mask			0x0F
#define		SW18_IN_SHIFT			9	// IN_L1<2:0> output.
#define		SW18_IN_Mask			0x07
#define		SW18_TBOX_SHIFT		7	// TBOC_L1<1:0> output.
#define		SW18_TBOX_Mask		0x03
#define		SW18_SET_DELAY		BIT(6)	// SET_DELAY_L1=1=> nonoverlap delay increases.
#define		SW18_SEL				BIT(5)	// SD_L1 = 1 => turn off quickly.
#define		SW18_STD_SHIFT		3	// STD_L1<1:0> time.
#define		SW18_STD_Mask			0x03
#define		SW18_SD				BIT(2)	// SD_L1 = 1 => turn off quickly.
#define		SW18_AREN				BIT(1)	// 3.3->1.8 for PFM  Anti-ring.
#define		SW18_R3_B1			BIT(0)	//

#define		SW18_R3_B0			BIT(31)	//
#define		SW18_R2_SHIFT			29	//
#define		SW18_R2_Mask			0x03
#define		SW18_R1_SHIFT			27	//
#define		SW18_R1_Mask			0x03
#define		SW18_C3_SHIFT			25	//
#define		SW18_C3_Mask			0x03
#define		SW18_C2_SHIFT			23	//
#define		SW18_C2_Mask			0x03
#define		SW18_C1_SHIFT			21	//
#define		SW18_C1_Mask			0x03
#define		SW18_SCREF_SHIFT		19	// For FDUAL, tune reference frequency.
#define		SW18_SCREF_Mask		0x03
#define		SW18_SCPFM_SHIFT		17	// For FDUAL, tune pfm frequency.
#define		SW18_SCPFM_Mask		0x03
#define		SW18_PWFMTUNE_SHIFT	14	//
#define		SW18_PWFMTUNE_Mask	0x07
#define		SW18_SELSTOP			BIT(13)	// SEL_STOP_L1 = 0 => no delay.
#define		SW18_SELD_SHIFT		11	// Bit(1)=1 enable clamp maximum duty, bit(0)=1 enable clamp minimum duty
#define		SW18_SELD_Mask		0x03
#define		SW18_POWOCP			BIT(10)	// POWOCP_L1=1=> enable over current protection.
#define		SW18_OCP_SHIFT		7	//
#define		SW18_OCP_Mask			0x07
#define		SW18_SFREQ_SHIFT		5	//
#define		SW18_SFREQ_Mask		0x03
#define		SW18_SFREQC			BIT(4)	//
#define		SW18_FPWM				BIT(3)	// FPWM_L1 = 1 => force PWM, FPWM_L1 = 0 => force PFM.
#define		SW18_FDUAL			BIT(2)	// FDUAL_L1 =1 => PWM or PFM.
#define		SW18_SWEN				BIT(1)	// Enable VSPS18_SW Macro Block.
#define		SW18_LDEN				BIT(0)	// Enable VSPS18_LDO Macro Block.

//----------------------------------------------------------------------------
//       8192C SPS_OCP_CFG bits					(Offset 0x18-1B, 32bits)
//----------------------------------------------------------------------------
#define		SPS18_OCP_DIS			BIT(31)	// sps18 ocp, 0:enable, 1:disable.
#define		SPS18_OCP_TH_SHIFT	16	// Sps18 ocp threshold.
#define		SPS18_OCP_TH_Mask		0x07FFF
#define		OCP_WINDOW_SHIFT		0	// Ocp monitor window width configure, count on ana_clk/16.
#define		OCP_WINDOW_Mask		0x0FFFF

//----------------------------------------------------------------------------
//       8192C RSV_CTRL0 bits					(Offset 0x1C-1E, 24bits)
//----------------------------------------------------------------------------
#define		HREG_DBG_SHIFT	8	// HREG Access Debug.
#define		HREG_DBG_Mask		0x0FFFF
#define		LOCK_ALL_EN		BIT(7)	// 1:Enable 'Locked All' setting by Hardware, 0: Hardware Enable 'Locked All' denied.
#define		R_DIS_PRST_1		BIT(6)	// Control if PERST can reset MACCORE.
#define		R_DIS_PRST_0		BIT(5)	// Control if PERST can reset MACCORE.
#define		WLOCK_40			BIT(4)	// 1:Register Write Locked, 0: Register Accessible by SW/FW.
#define		WLOCK_08			BIT(3)	// 1:Register Write Locked, 0: Register Accessible by SW/FW.
#define		WLOCK_04			BIT(2)	// 1:Register Write Locked, 0: Register Accessible by SW/FW.
#define		WLOCK_00			BIT(1)	// 1:Register Write Locked, 0: Register Accessible by SW/FW.
#define		WLOCK_ALL			BIT(0)	// 1:Register Write Locked, 0: Register Accessible by SW/FW.

//----------------------------------------------------------------------------
//       8192C RF_CTRL bits						(Offset 0x1F, 8bits)
//----------------------------------------------------------------------------
#define		RF_SDMRSTB			BIT(2)	// Reset RF SDM Module (low active).
#define		RF_RSTB			BIT(1)	// Reset RF Module (low active).
#define		RF_EN				BIT(0)	// Enable RF Module.

//----------------------------------------------------------------------------
//       8192C LDOA15_CTRL bits					(Offset 0x20, 8bits)
//----------------------------------------------------------------------------
#define		LDA15_VOADJ_SHIFT	4	//
#define		LDA15_VOADJ_Mask	0x0F
#define		LDA15_STBY			BIT(3)	// LDOA15 Standby Mode.
#define		LDA15_OBUF			BIT(2)	// LDOA15 Output Buffered.
#define		REG_VOS			BIT(1)	// LDOA15 Add Offset voltage.
#define		LDA15_EN			BIT(0)	// Enable LDOA15 Macro Block.

//----------------------------------------------------------------------------
//       8192C LDOV12D_CTRL bits				(Offset 0x21, 8bits)
//----------------------------------------------------------------------------
#define		LDV12_VADJ_SHIFT	4	// LDOVD12 voltage adjust.
#define		LDV12_VADJ_Mask	0x0F
#define		LDV12_BUFO			BIT(2)	// LDOVD12 buffer output Mode.
#define		LDV12_SDBY			BIT(1)	// LDOVD12 standby mode.
#define		LDV12_EN			BIT(0)	// Enable LDOA12 Macro Block.

//----------------------------------------------------------------------------
//       8192C LDOHCI12_CTRL bits				(Offset 0x22, 8bits)
//----------------------------------------------------------------------------
#define		LDH12_SDBY			BIT(5)	// LDOHCI12 standby mode.
#define		LDH12_OBUF			BIT(4)	// Enable LDOHCI12 Macro Block.
#define		LDH12_VADJ_SHIFT	1	// LDOHCI12 voltage adjust.
#define		LDH12_VADJ_Mask	0x07
#define		LDH12_EN			BIT(0)	// Enable LDOHCI12 Macro Block.

//----------------------------------------------------------------------------
//       8192C LPLDO_CTRL bits					(Offset 0x23, 8bits)
//----------------------------------------------------------------------------
#define		LPLDH12_SLP			BIT(4)	// LPLDOH12 Sleep Mode.
#define		LPLDH12_VADJ_SHIFT	0	// LPLDOH12 voltage adjust.
#define		LPLDH12_VADJ_Mask		0x0F

//----------------------------------------------------------------------------
//       8192C AFE_XTAL_CTRL bits				(Offset 0x24-27, 32bits)
//----------------------------------------------------------------------------
#define		CKDLY_BT				BIT(29)	// Delay time of CLK_BT relate to CLK_DIG, 0: long time, 1: short time.
#define		CKDLY_DIG				BIT(28)	// Delay time of CLK_DIG relate to CLK_AFE, 0: long time, 1: short time.
#define		CKDLY_USB				BIT(27)	// Delay time of CLK_USB relate to CLK_AFE, 0: long time, 1: short time.
#define		CKDLY_AFE				BIT(26)	// Delay time of CLK_AFE relate to CLK_RF, 0: long time, 1: short time.
#define		XTAL_GPIO_SHIFT		23	//
#define		XTAL_GPIO_Mask		0x07
#define		XTAL_BT_DRV_SHIFT		21	// BT clock source Driving current: 11:most current, 00: less current.
#define		XTAL_BT_DRV_Mask		0x03
#define		XTAL_BT_GATE			BIT(20)	// Gated control: 1: BT Clock source gated, 0: clock enable (auto setting by trap data).
#define		XTAL_DIG_DRV_SHIFT	18	// DIG clock source 11:most current, 00: less current.
#define		XTAL_DIG_DRV_Mask		0x03
#define		XTAL_GATE_DIG			BIT(17)	// Gated control:1: DIG Clock source gated, 0: clock enable.
#define		XTAL_RF_DRV_SHIFT		15	// RF PLL Driving current: 11:most current, 00: less current.
#define		XTAL_RF_DRV_Mask		0x03
#define		XTAL_RF_GATE			BIT(14)	// Gated control: 1: RF Clock source gated, 0: clock enable.
#define		XTAL_AFE_DRV_SHIFT	12	// AFE PLL Driving current: 11:most current, 00: less current.
#define		XTAL_AFE_DRV_Mask		0x03
#define		XTAL_GATE_AFE			BIT(11)	// Gated control:1: USB Clock source gated, 0: clock enable.
#define		XTAL_USB_DRV_SHIFT	9	// USB PLL Driving current: 11:most current, 00: less current.
#define		XTAL_USB_DRV_Mask		0x03
#define		XTAL_GATE_USB			BIT(8)	// Gated control:1: USB Clock source gated, 0: clock enable.
#define		XTAL_CADJ_XI_SHIFT	4	// 1:add cap, 0:degrade cap.
#define		XTAL_CADJ_XI_Mask		0x0F
#define		XTAL_BOSC_SHIFT		2	// The bias current control of VCO block.
#define		XTAL_BOSC_Mask		0x03
#define		XTAL_BSEL				BIT(1)	// 1: schmitt trigger, 0:nand.
#define		XTAL_EN				BIT(0)	// Enable XTAL Macro block.

//----------------------------------------------------------------------------
//       8192C AFE_PLL_CTRL bits					(Offset 0x28-2B, 32bits)
//----------------------------------------------------------------------------
#define		AFE_DUMMY_SHIFT		25	// Dummy Registers.
#define		AFE_DUMMY_Mask		0x07
#define		APLL_1MEN				BIT(24)	// 1:Enable 0:output "1".
#define		APLL_40DRV_SHIFT		22	// clk diving 00: weak 11:strong.
#define		APLL_40DRV_Mask		0x03
#define		APLL_PLLDRV_SHIFT		20	// clk diving 00: weak 11:strong.
#define		APLL_PLLDRV_Mask		0x03
#define		APLL_88DRV_SHIFT		18	// clk diving 00: weak 11:strong.
#define		APLL_88DRV_Mask		0x03
#define		APLL_80DRV_SHIFT		16	// clk diving 00: weak 11:strong.
#define		APLL_80DRV_Mask		0x03
#define		APLL_80EN				BIT(15)	// 1:Enable 0:output "1".
#define		APLL_320EN				BIT(14)	// 1:Enable 0:output "1".
#define		APLL_320BIAS_SHIFT	11	// pll320 CP current selection.
#define		APLL_320BIAS_Mask		0x07
#define		APLL_BIAS_SHIFT		8	// pll CP current selection.
#define		APLL_BIAS_Mask			0x07
#define		APLL_KVCO_SHIFT		6	// pll VCO KVCO selection.
#define		APLL_KVCO_Mask		0x03
#define		APLL_LPFEN				BIT(5)	// enable PLL Bias Current LPF.
#define		APLL_WDOGB			BIT(4)	// enable watch dog 0: enable 1:disable.
#define		APLL_EDGE_SEL			BIT(3)	// Reference clock: 1 : negative edge, 0 : positive edge.
#define		APLL_FREF_SEL			BIT(2)	// Reference clock: 1 : 20MHz, 0 : 40MHz.
#define		APLL_320_EN			BIT(1)	// Enable AFE 320 PLL Macro Block.
#define		APLL_EN				BIT(0)	// Enable AFE PLL Macro Block.

//----------------------------------------------------------------------------
//       8192C EFUSE_CTRL bits					(Offset 0x30-33, 32bits)
//----------------------------------------------------------------------------
#define		EF_FLAG			BIT(31)	// Access Flag. Write "1" for Program; Write "0" for Read Access.
#define		EF_PGPD_SHIFT		28	// E-fuse program time.
#define		EF_PGPD_Mask		0x07
#define		EF_RDT_SHIFT		24	// E-fuse read time: in the unit of cycle time.
#define		EF_RDT_Mask		0x0F
#define		EF_PGT_SHIFT		20	// Programming setup time. In the unit of cycle time.(125ns).
#define		EF_PGT_Mask		0x0F
#define		EF_PD				BIT(19)	// Efuse power down.
#define		ALD_EN				BIT(18)	// Autoload Enable.
#define		EF_ADDR_SHIFT		8	// Access Address.
#define		EF_ADDR_Mask		0x03FF
#define		EF_DATA_SHIFT		0	// Access Data.
#define		EF_DATA_Mask		0x0FF

//----------------------------------------------------------------------------
//       8192C EFUSE_TEST bits					(Offset 0x34-37, 32bits)
//----------------------------------------------------------------------------
#define		LDOE25_EN			BIT(31)	// Enable LDOE25 Macro Block.
#define		LDOE25_VADJ_SHIFT	28	// LDOE25 voltage adjust.
#define		LDOE25_VADJ_Mask	0x07
#define		ADDR_END_Shift		25	// 92D_REG, Scan effuse end (1023-addr_end)
#define		ADDR_END_Mask		0x07
#define		ADDR_STR_Shift		18	// 92D_REG, Scan efuse from (addr_str*8)
#define		ADDR_STR_Mask		0x07F
#define		BYTE_CNT_EN		BIT(17)	// 92D_REG, 1: scan efuse in byte; 0: scan efuse in bit
#define		EF_SCAN_EN			BIT(16)	// 92D_REG, 1: efuse in scan process. 0: not in scan process
#define		EDATA1_SHIFT		8	// EEPROM offset 1 data (EE Byte-1).
#define		EDATA1_Mask		0x0FF
#define		EF_TRPT			BIT(7)	// Test Scan Report: 1 : Fail, 0 : OK.
#define		EF_TTHD_SHIFT		0	// Bit number for all cells scan test.
#define		EF_TTHD_Mask		0x07F

//----------------------------------------------------------------------------
//       8192C PWR_DATA bits					(Offset 0x38-3B, 32bits)
//----------------------------------------------------------------------------
#define		EDATA0_SHIFT		24	// EEPROM offset 0 data (EE Byte-0).
#define		EDATA0_Mask		0x0FF
#define		HTEST_SEL_SHIFT	16	// TEST Mode Select (EE Byte-7).
#define		HTEST_SEL_Mask	0x0FF
#define		HPON_STBP2_SHIFT	8	// HPON Stable time parameter (EE Byte-5).
#define		HPON_STBP2_Mask	0x0FF
#define		HPON_STBP1_SHIFT	0	// HPON Stable time parameter (EE Byte-2).
#define		HPON_STBP1_Mask	0x0FF

//----------------------------------------------------------------------------
//       8192C CAL_TIMER bits					(Offset 0x3C-3D, 16bits)
//----------------------------------------------------------------------------
#define		MATCH_CNT_SHIFT	8	// match counter for sleep mode.
#define		MATCH_CNT_Mask	0x0FF
#define		CAL_SCAL_SHIFT		0	// scaler fine tune for sleep mode (tune in Time unit).
#define		CAL_SCAL_Mask		0x0FF

//----------------------------------------------------------------------------
//       8192C ACLK_MON bits					(Offset 0x3E-3F, 16bits)
//----------------------------------------------------------------------------
#define		RCLK_MON_SHIFT	5	// ring clock monitor (with DPSTU scale).
#define		RCLK_MON_Mask		0x07FF
#define		CAL_TIMER_EN		BIT(4)	// calibration timer enable. This shall be turned off before sleep mode enable.
#define		DPSTU_SHIFT		2	// Deep Power Save Time Unit: 00: 64us, 01: 128us, 10: 192us, 11: 256 us.
#define		DPSTU_Mask			0x03
#define		SUS_16X			BIT(1)	// Scale timer 16x when suspend mode, (~250 S).
#define		RSM_EN				BIT(0)	// When Timer Expired, Resume Hardware StateMachine.

//----------------------------------------------------------------------------
//       8192C GPIO_MUXCFG bits					(Offset 0x40-43, 32 bits)
//----------------------------------------------------------------------------
#define		GPIO_MOD_H_SHIFT		28	// When bit is zero, corresponding port configured to data port;
										// otherwise, when a bit is set, and GPIO_IO_SEL is set to "0",
										// then it is interrupt mode..
#define		GPIO_MOD_H_Mask		0x0F
#define		GPIO_IO_SEL_H_SHIFT	24	// GPIO_IO_SEL[11:8], output when bit=1;input when bit=0.
#define		GPIO_IO_SEL_H_Mask	0x0F
#define		GPIO_OUT_H_SHIFT		20	// GPIO_OUT[11:8], GPIO pins output value.
#define		GPIO_OUT_H_Mask		0x0F
#define		GPIO_IN_H_SHIFT		16	// GPIO_IN[11:8], GPIO pins input value.
#define		GPIO_IN_H_Mask		0x0F
#define		SIC_LBK					BIT(15)	// Enable SIC_Loop_Back Mode, (auto set by ICFG).
#define		HTP_EN					BIT(14)   // 0 : Enable as Host Debug Port, 1 : Enable as Host Test Port.
#define		SIC_23					BIT(13)   // Enable SIC at 0: GPIO 9,10 pins ; 1 : GPIO 2,3 pins.
#define		SIC_EN					BIT(12)   // Enable GPIO Pins as SIC, (auto set by ICFG).
#define		SIC_SWRST				BIT(11)	// 0 : Reset SIC by SW, prevent SIC Dead Lock.
#define		PMAC_EN				BIT(10)	// PMAC Enable (auto set by ICFG).
#define		UART_SEL				BIT(9)	// Enable UART at 0: GPIO 6,7 pins; 1 : GPIO 9,10 pins.
#define		UART_EN				BIT(8)	// Enable GPIO Pins as UART.
#define		BTMode_SHIFT			6	// Bluetooth Mode.
#define		BTMode_Mask			0x03
#define		BT_EN					BIT(5)	// Enable GPIO0,1,2,3,8 Pins for Bluetooth.
#define		EROM_EN				BIT(4)	// Enable GPIO6 for EEDO, GPIO7 for EEDI, default Enable when 9346 selected
#define		TRSW1EN				BIT(3)	// Enable GPIO9,10 for TRSWN1, TRSWP1.
#define		TRSW0EN				BIT(2)	// Enable GPIO8 for TRSWN0.
#define		GPIOSEL_SHIFT			0	// GPIO Select.
#define		GPIOSEL_Mask			0x03

//----------------------------------------------------------------------------
//       8192C GPIO_PIN_CTRL bits				(Offset 0x44-47, 32 bits)
//----------------------------------------------------------------------------
#define		GPIO_MOD_L_SHIFT		24	// When bit is 0, corresponding port set as data port;
										// otherwise, when a bit=1, and GPIO_IO_SEL is set to "0",
										// then it is interrupt mode..
#define		GPIO_MOD_L_Mask		0x0FF
#define		GPIO_IO_SEL_L_SHIFT	16	// GPIO_IO_SEL[7:0], output when bit=1;input when bit=0.
#define		GPIO_IO_SEL_L_Mask	0x0FF
#define		GPIO_OUT_L_SHIFT		8	// GPIO_OUT[7:0], GPIO pins output value.
#define		GPIO_OUT_L_Mask		0x0FF
#define		GPIO_IN_L_SHIFT		0	// GPIO_IN[7:0], GPIO pins input value.
#define		GPIO_IN_L_Mask			0x0FF

//----------------------------------------------------------------------------
//       8192C GPIO_INTM bits					(Offset 0x48-4B, 32 bits)
//----------------------------------------------------------------------------
#define		MDBG_SEL_SHIFT		30	//
#define		MDBG_SEL_Mask			0x03
#define		GPIO_EXT_WOL_SHIFT	12	// External WOL source control.
#define		GPIO_EXT_WOL_Mask	0x0F
#define		GPIOB_INT_MD			BIT(11)	// 0=positive edge, 1=negative edge,  is sensed as interrupt.
#define		GPIOA_INT_MD			BIT(10)	// 0=positive edge, 1=negative edge,  is sensed as interrupt.
#define		GPIO9_INT_MD			BIT(9)	// 0=positive edge, 1=negative edge,  is sensed as interrupt.
#define		GPIO8_INT_MD			BIT(8)	// 0=positive edge, 1=negative edge,  is sensed as interrupt.
#define		GPIO7_INT_MD			BIT(7)	// 0=positive edge, 1=negative edge,  is sensed as interrupt.
#define		GPIO6_INT_MD			BIT(6)	// 0=positive edge, 1=negative edge,  is sensed as interrupt.
#define		GPIO5_INT_MD			BIT(5)	// 0=positive edge, 1=negative edge,  is sensed as interrupt.
#define		GPIO4_INT_MD			BIT(4)	// 0=positive edge, 1=negative edge,  is sensed as interrupt.
#define		GPIO3_INT_MD			BIT(3)	// 0=positive edge, 1=negative edge,  is sensed as interrupt.
#define		GPIO2_INT_MD			BIT(2)	// 0=positive edge, 1=negative edge,  is sensed as interrupt.
#define		GPIO1_INT_MD			BIT(1)	// 0=positive edge, 1=negative edge,  is sensed as interrupt.
#define		GPIO0_INT_MD			BIT(0)	// 0=positive edge, 1=negative edge,  is sensed as interrupt.

//----------------------------------------------------------------------------
//       8192C LEDCFG bits						(Offset 0x4C-4F, 32 bits)
//----------------------------------------------------------------------------
#define		GP8_LED			BIT(22)	// Enable GPIO-8 as LED2.
#define		LED2EN				BIT(21)	// Enable GPIO-10/GPIO-8 as LED2.
#define		LED2PL				BIT(20)	// LED2 polarity control.
#define		LED2SV				BIT(19)	// LED2 software value.
#define		LED2CM_SHIFT		16	// LED2 Control Mode.
#define		LED2CM_Mask		0x07
#define		LED1DIS				BIT(15)	// LED1 Disabled for analog signal usage,
										// 1: disable (input mode), 0:Enable (output mode).
#define		LED1PL				BIT(12)	// LED1 polarity control (auto-load configurable).
#define		LED1SV				BIT(11)	// LED1 software value.
#define		LED1CM_SHIFT		8	// LED1 Control Mode.
#define		LED1CM_Mask		0x07
#define		LED0DIS				BIT(7)	// LED1 Disabled for analog signal usage,
										// 1: disable (input mode), 0:Enable (output mode).
#define		LED0PL				BIT(4)	// LED0 polarity control (auto-load configurable).
#define		LED0SV				BIT(3)	// LED0 software value.
#define		LED0CM_SHIFT		0	// LED0 Control Mode.
#define		LED0CM_Mask		0x07

#define		LED_SW_CTRL			0
#define		LED_OFF				1
#define		LED_TX_RX_EVENT_ON	2
#define		LED_TX_RX_EVENT_OFF	3
#define		LED_TX_EVENT_ON		4
#define		LED_TX_EVENT_OFF		5
#define		LED_RX_EVENT_ON		6
#define		LED_RX_EVENT_OFF		7

//----------------------------------------------------------------------------
//       8192C FSIMR bits						(Offset 0x50-53, 32 bits)
//----------------------------------------------------------------------------
#define		PDNINT_EN			BIT(31)	// Enable Hardware Power Down interrupt source.
#define		SYS_TIMER_EN		BIT(30)	// Enable Hardware System Timer interrupt source.
#define		SPS_OCP_INT_EN	BIT(29)	// Enable SPS OCP alarm interrupt source.
#define		HPON_WRE_EN		BIT(28)	// Enable Continue access HPON registers interrupt source.
#define		GPIOB_INT_EN		BIT(23)	// Enable GPIOB interrupt source.
#define		GPIOA_INT_EN		BIT(22)	// Enable GPIOA interrupt source.
#define		GPIO9_INT_EN		BIT(21)	// Enable GPIO9 interrupt source.
#define		GPIO8_INT_EN		BIT(20)	// Enable GPIO8 interrupt source.
#define		GPIO7_INT_EN		BIT(19)	// Enable GPIO7 interrupt source.
#define		GPIO6_INT_EN		BIT(18)	// Enable GPIO6 interrupt source.
#define		GPIO5_INT_EN		BIT(17)	// Enable GPIO5 interrupt source.
#define		GPIO4_INT_EN		BIT(16)	// Enable GPIO4 interrupt source.
#define		GPIO3_INT_EN		BIT(15)	// Enable GPIO3 interrupt source.
#define		GPIO2_INT_EN		BIT(14)	// Enable GPIO2 interrupt source.
#define		GPIO1_INT_EN		BIT(13)	// Enable GPIO1 interrupt source.
#define		GPIO0_INT_EN		BIT(12)	// Enable GPIO0 interrupt source.

//----------------------------------------------------------------------------
//       8192C FSISR bits						(Offset 0x54-57, 32 bits)
//----------------------------------------------------------------------------
#define		PDNINT				BIT(31)	// Hardware Power Down interrupt.
#define		HWSYS_TIMER_INT	BIT(30)	// Hardware System Timer interrupt.
#define		SPS_OCP_INT		BIT(29)	// SPS OCP alarm interrupt.
#define		HPON_WRE			BIT(28)	// Continue access HPON registers interrupt. Write 1 clear.
#define		GPIOB_INT			BIT(23)	// GPIOB INT Status. Write 1 clear.
#define		GPIOA_INT			BIT(22)	// GPIOA INT Status. Write 1 clear.
#define		GPIO9_INT			BIT(21)	// GPIO9 INT Status. Write 1 clear.
#define		GPIO8_INT			BIT(20)	// GPIO8 INT Status. Write 1 clear.
#define		GPIO7_INT			BIT(19)	// GPIO7 INT Status. Write 1 clear.
#define		GPIO6_INT			BIT(18)	// GPIO6 INT Status. Write 1 clear.
#define		GPIO5_INT			BIT(17)	// GPIO5 INT Status. Write 1 clear.
#define		GPIO4_INT			BIT(16)	// GPIO4 INT Status. Write 1 clear.
#define		GPIO3_INT			BIT(15)	// GPIO3 INT Status. Write 1 clear.
#define		GPIO2_INT			BIT(14)	// GPIO2 INT Status. Write 1 clear.
#define		GPIO1_INT			BIT(13)	// GPIO1 INT Status. Write 1 clear.
#define		GPIO0_INT			BIT(12)	// GPIO0 INT Status. Write 1 clear.

//----------------------------------------------------------------------------
//       8192C MCUFWDL bits						(Offset 0x80-83, 32 bits)
//----------------------------------------------------------------------------
#define		RPWM_SHIFT		24	// Host Request Power State.
#define		RPWM_Mask			0x0FF
#define		CPRST				BIT(23)	// 8051 Reset Status.
#define		ROM_DLEN			BIT(19)	// ROM Download Enable (8051 Core will be reseted) FPGA only.
#define		ROM_PGE_SHIFT		16	// ROM Page (FPGA only).
#define		ROM_PGE_Mask		0x07
#define		MAC1_RFINI_RDY	BIT(10)	// 92D_REG, MAC1 MCU Initial RF ready
#define		MAC1_BBINI_RDY	BIT(9)	// 92D_REG, MAC1 MCU Initial BB ready
#define		MAC1_MACINI_RDY	BIT(8)	// 92D_REG, MAC1 MCU Initial MAC ready
#define		MCU_STATUS		BIT(7)	// 92D_REG, 1: SRAM, 0: ROM
#define		WINTINI_RDY		BIT(6)	// WLAN Interrupt Initial ready.
#define		MAC0_RFINI_RDY	BIT(5)	// MAC0 MCU Initial RF ready.
#define		MAC0_BBINI_RDY	BIT(4)	// MAC0 MCU Initial BB ready.
#define		MAC0_MACINI_RDY	BIT(3)	// MAC0 MCU Initial MAC ready.
#define		FWDL_CHKSUM_RPT	BIT(2)	// FWDL CheckSum report, 1: OK, 0 : Faill.
#define		MCUFWDL_RDY		BIT(1)	// Driver set this bit to notify MCU FW Download OK.
#define		MCUFWDL_EN		BIT(0)	// MCU Firmware download enable. 1:Enable, 0:Disable.

//----------------------------------------------------------------------------
//       8192C MCUTSTCFG bits					(Offset 0x84-87, 32 bits)
//----------------------------------------------------------------------------
#define		LBKTST_SHIFT		0	// LBK TST indicator.
#define		LBKTST_Mask		0x0FFFF

//----------------------------------------------------------------------------
//       8192C BIST_CTRL bits					(Offset 0xD0-D3, 32 bits)
//----------------------------------------------------------------------------
#define		BB_SPEED_SCAN		BIT(31)	// BB at speed scan mode Enable.
#define		SCAN_PLL_BYPASS	BIT(30)	// 92D_REG
#define		MBIST_RSTNI_Shift	8		// 92D_REG
#define		MBIST_RSTNI_Mask	0x07FF
#define		BIST_RESUME_PS	BIT(5)
#define		BIST_RESUME		BIT(4)
#define		BIST_DRF			BIT(3)	// 92D_REG
#define		BIST_RETEN			BIT(3)
#define		BIST_NORMAL		BIT(2)
#define		BIST_RSTN			BIT(1)
#define		BIST_CLK_EN		BIT(0)

//----------------------------------------------------------------------------
//       8192C C_BIST_RPT bits					(Offset 0xD4-D7, 32 bits)
//----------------------------------------------------------------------------
#define		C_MAC_BIST_FAIL			BIT(31)	// MAC_BIST_FAIL.
#define		C_USB_IRAM_FAIL			BIT(26)	// USB IRAM BIST FAIL.
#define		C_USB_RAM1_FAIL			BIT(25)	// USB RAM1 BIST FAIL.
#define		C_USB_PROM_FAIL			BIT(24)	// USB PROM BIST FAIL.
#define		C_PCIE_RETRY_BIST_FAIL	BIT(20)	// PCIE RETRY RAM BIST FAIL.
#define		C_PCIE_SOT_BIST_FAIL		BIT(19)	// PCIE RETRY SOT RAM BIST FAIL.
#define		C_PCIE_PH1_BIST_FAIL		BIT(18)	// PCIE PHDR RAM1 BIST FAIL.
#define		C_PCIE_PH0_BIST_FAIL		BIT(17)	// PCIE PHDR RAM0 BIST FAIL.
#define		C_PCIE_PD_BIST_FAIL		BIT(16)	// PCIE PDATA RAM BIST FAIL.
#define		C_MAC_BIST_RDY			BIT(10)	// MAC MBIST Test report Ready.
#define		C_USB_BIST_RDY			BIT(9)	// USB MBIST Test report Ready.
#define		C_PCIE_BIST_RDY			BIT(8)	// PCIE MBIST Test report Ready.
#define		C_MAC_BIST_START			BIT(2)	// MAC MBIST START PULSE.
#define		C_USB_BIST_START			BIT(1)	// USB MBIST START PULSE.
#define		C_PCIE_BIST_START			BIT(0)	// PCIE MBIST START PULSE.

//----------------------------------------------------------------------------
//       8192C USB_SIE_INTF bits					(Offset 0xE0-E3, 32 bits)
//----------------------------------------------------------------------------
#define		USB_SIE_INTF_WE			BIT(25)	// Write Enable of SIE interface.
#define		USB_SIE_INTF_BYIOREG		BIT(24)	// SIE Bypass IOREG interface.
#define		USB_SIE_INTF_ADDR_SHIFT	16	// The address of SIE register.
#define		USB_SIE_INTF_ADDR_Mask	0x0FF
#define		USB_SIE_INTF_RD_SHIFT		8	// The read data from USB SIE.
#define		USB_SIE_INTF_RD_Mask		0x0FF
#define		USB_SIE_INTF_WD_SHIFT	0	// The write data to USB SIE.
#define		USB_SIE_INTF_WD_Mask		0x0FF

//----------------------------------------------------------------------------
//       8192C PCIE_MIO_INTF bits				(Offset 0xE4-E7, 32 bits)
//----------------------------------------------------------------------------
#define		PCIE_MIO_BYIOREG		BIT(13)	// MIO bypass IOREG interface.
#define		PCIE_MIO_RE			BIT(12)	// Read Enable of MIO interface.
#define		PCIE_MIO_WE_SHIFT		8	// Write Byte Enable of MIO interface.
#define		PCIE_MIO_WE_Mask		0x0F
#define		PCIE_MIO_ADDR_SHIFT	0	// The address of PCIE MIO Access register.
#define		PCIE_MIO_ADDR_Mask	0x0FF

//----------------------------------------------------------------------------
//       8192C HPON_FSM bits					(Offset 0xEC-EF, 32 bits)
//----------------------------------------------------------------------------
#define		EVENT_FSM_SHIFT	16	// The State Machine Trigger Events.
#define		EVENT_FSM_Mask	0x0FFFF
#define		PMC_ADDR_SHIFT	8	// The Hardware Access HPON Register Addr.
#define		PMC_ADDR_Mask		0x0FF
#define		PMC_WR				BIT(7)	// The Hardware Access HPON Register Write Pulse.
#define		PMC_DATA			BIT(6)	// The Hardware Access HPON Register Data.
#define		FSM_STATE_SHIFT	0	// The State Machine Data.
#define		FSM_STATE_Mask	0x03F

//----------------------------------------------------------------------------
//       8192C SYS_CFG bits					(Offset 0xF0-F3, 32 bits)
//----------------------------------------------------------------------------
#define		TRP_ICFG_SHIFT			28	// Trapped ICFG data value.
#define		TRP_ICFG_Mask			0x0F
#define		TYPE_ID					BIT(27)	// 1: 8191C/8192C ; 0: 8188C.
#define		BD_HCI_SEL				BIT(26)	// Trapped HCI_SEL value.
#define		BD_PKG_SEL				BIT(25)	// Trapped PKG_ENG_SEL value.
#define		TRP_BT_EN				BIT(24)	// Trapped BT Chip Valid need XTAL & SPS resource.
#define		TRP_VAUX_EN			BIT(23)	// Trapped VAUX_EN.
#define		PAD_HWPD_IDN			BIT(22)	// HWPDN PAD status Indicator.
#define		PSC_TESTCFG_SHIFT		20	// Test Pin configuration.
#define		PSC_TESTCFG_Mask		0x03
#define		CHIP_VER_RL_SHIFT		16	// Chip version (RL6111).
#define		CHIP_VER_RL_Mask		0x0F
#define		CHIP_VER_RTL_SHIFT	12	// Test Chip version - 8188C (RLE0307) / 8191C (RLE0308).
#define		CHIP_VER_RTL_Mask		0x0F
#define		IC_MACPHY_MODE		BIT(11)	// 0: IC Normal Mode, 1: force IC PHY_ASIC Mode.
#define		BD_MAC1				BIT(10)	// Bonding option for MAC function-1 Enable.
#define		BD_MAC2				BIT(9)	// Bonding option for MAC function-2 Enable.
#define		SIC_IDLE				BIT(8)	// Indicator of SIC idle state.
#define		TRP_B15V_EN			BIT(7)	// Trapped option for 1.5V of board.
#define		OCP_SHUTDN			BIT(6)	// SPS OCP shutdown Chip.
#define		V15_VLD				BIT(5)	// 1.5V Power Ready, 1: Power Ready.
#define		PCIRSTB					BIT(4)	// PCIE External PERST, Pin Status.
#define		PCLK_VLD				BIT(3)	// PCIE PHY Clock Stable, 1: Clock Stable.
#define		UCLK_VLD				BIT(2)	// USB PHY Clock Stable, 1: Clock Stable.
#define		ACLK_VLD				BIT(1)	// AFE Clock Stable, 1: Clock Stable.
#define		XCLK_VLD				BIT(0)	// Xtal Clock Stable, 1: Clock Stable.


//
// 2. MACTOP General Configuration. (Offset 0x100 - 0x1FFh)
//
//----------------------------------------------------------------------------
//       8192C CR bits						(Offset 0x100-103, 32 bits)
//----------------------------------------------------------------------------
#define		LBMODE_SHIFT		24	// Loopback mode.
#define		LBMODE_Mask		0x0F
#define		NETYPE_SHIFT		16	// Network Type.
#define		NETYPE_Mask		0x03
#define		MAC_SEC_EN		BIT(9)	// Enable MAC security engine.
#define		ENSWBCN			BIT(8)	// Enable SW TX beacon.
#define		MACRXEN			BIT(7)	// MAC Receiver Enable.
#define		MACTXEN			BIT(6)	// MAC Transmitter Enable.
#define		SCHEDULE_EN		BIT(5)	// Schedule Enable.
#define		PROTOCOL_EN		BIT(4)	// protocol Block Function Enable.
#define		RXDMA_EN			BIT(3)	// RXDMA Function Enable.
#define		TXDMA_EN			BIT(2)	// TXDMA Function Enable.
#define		HCI_RXDMA_EN		BIT(1)	// HCI to RXDMA Interface Enable.
#define		HCI_TXDMA_EN		BIT(0)	// HCI to TXDMA Interface Enable.
// Loopback mode.
#define		LB_NORMAL			0x00
#define		LB_MAC				0x0B
#define		LB_MAC_DLY			0x03
#define		LB_PHY				0x01
#define		LB_DMA				0x07
#define		LB_DUAL_MAC		0x1B	// 92D_REG
// Network Type.
#define		NETYPE_NOLINK		0x00
#define		NETYPE_ADHOC		0x01
#define		NETYPE_INFRA		0x02
#define		NETYPE_AP			0x03

//----------------------------------------------------------------------------
//       8192C PBP bits						(Offset 0x104-107, 32 bits)
//----------------------------------------------------------------------------
#define		PSTX_SHIFT			4	// Page size of transmit packet buffer.
#define		PSTX_Mask			0x0F
#define		PSRX_SHIFT			0	// Page size of receive packet buffer and C2HCMD buffer.
#define		PSRX_Mask			0x0F
// Page size
#define		PBP_64B			0x00
#define		PBP_128B			0x01
#define		PBP_256B			0x02
#define		PBP_512B			0x03
#define		PBP_1024B			0x04

//----------------------------------------------------------------------------
//       8192C TRXDMA_CTRL bits				(Offset 0x10C-10D, 16 bits)
//----------------------------------------------------------------------------
#define		HPQ_SEL_SHIFT		8	// High Priority Queue Selection.
#define		HPQ_SEL_Mask		0x03F
#define		RXDMA_AGG_EN		BIT(2)	//
#define		RXSHFT_EN			BIT(1)	// When this bit is set, RX shift to fit alignment is enable.
#define		RXDMA_ARBBW_EN	BIT(0)	// Enable RXDMA Arbitrator priority for Host interface.
// High Priority Queue Selection.
#define		HPQ_SEL_VOQ		BIT(0)
#define		HPQ_SEL_VIQ		BIT(1)
#define		HPQ_SEL_BEQ		BIT(2)
#define		HPQ_SEL_BKQ		BIT(3)
#define		HPQ_SEL_MGQ		BIT(4)
#define		HPQ_SEL_HIQ		BIT(5)

//----------------------------------------------------------------------------
//       8192C TRXFF_BNDY bits				(Offset 0x114-117, 32 bits)
//----------------------------------------------------------------------------
#define		RXFF0_BNDY_SHIFT			16	// upper boundary of RXFF0.
#define		RXFF0_BNDY_Mask			0x0FFFF
#define		TXPKTBUF_PGBNDY_SHIFT	0	// From FWHW offload, sets the max pages controlled by TXDMA.
#define		TXPKTBUF_PGBNDY_Mask		0x0FF

//----------------------------------------------------------------------------
//       8192C TRXFF_STATUS bits				(Offset 0x118-11B, 32 bits)
//----------------------------------------------------------------------------
#define		TXPKTFF_FULL		BIT(16)	// TXDMA block the current TX pkt due to TXPKTBUF full, status bit will be set.
#define		RXFF1_OVF			BIT(1)	// When this bit is "1", RXFF1 is under overflow condition.
#define		RXFF0_OVF			BIT(0)	// When this bit is "1", RXFF0 is under overflow condition.

//----------------------------------------------------------------------------
//       8192C RXFF_PTR bits					(Offset 0x11C-11F, 32 bits)
//----------------------------------------------------------------------------
#define		RXFF0_RDPTR_SHIFT		16	// The read pointer address of RXFF0.
#define		RXFF0_RDPTR_Mask		0x0FFFF
#define		RXFF0_WTPTR_SHIFT		0	// The write pointer address of RXFF0.
#define		RXFF0_WTPTR_Mask		0x0FFFF

//----------------------------------------------------------------------------
//       8192C HIMR bits						(Offset 0x120-123, 32 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C HISR bits						(Offset 0x124-127, 32 bits)
//----------------------------------------------------------------------------
#define		HIMR_BCNDMA7		BIT(31)	// Beacon DMA Interrupt 7.
#define		HIMR_BCNDMA6		BIT(30)	// Beacon DMA Interrupt 6.
#define		HIMR_BCNDMA5		BIT(29)	// Beacon DMA Interrupt 5.
#define		HIMR_BCNDMA4		BIT(28)	// Beacon DMA Interrupt 4.
#define		HIMR_BCNDMA3		BIT(27)	// Beacon DMA Interrupt 3.
#define		HIMR_BCNDMA2		BIT(26)	// Beacon DMA Interrupt 2.
#define		HIMR_BCNDMA1		BIT(25)	// Beacon DMA Interrupt 1.
#define		HIMR_BCNDOK7		BIT(24)	// Beacon Queue DMA OK Interrupt7.
#define		HIMR_BCNDOK6		BIT(23)	// Beacon Queue DMA OK Interrupt6.
#define		HIMR_BCNDOK5		BIT(22)	// Beacon Queue DMA OK Interrupt5.
#define		HIMR_BCNDOK4		BIT(21)	// Beacon Queue DMA OK Interrupt4.
#define		HIMR_BCNDOK3		BIT(20)	// Beacon Queue DMA OK Interrupt3.
#define		HIMR_BCNDOK2		BIT(19)	// Beacon Queue DMA OK Interrupt2.
#define		HIMR_BCNDOK1		BIT(18)	// Beacon Queue DMA OK Interrupt1.
#define		HIMR_TIMEOUT2		BIT(17)	// Time Out Interrupt 2.
#define		HIMR_TIMEOUT1		BIT(16)	// Time Out Interrupt 1.
#define		HIMR_TXFOVW		BIT(15)	// Transmit packet buffer Overflow.
#define		HIMR_PSTIMEOUT	BIT(14)	// Power Save Time Out Interrupt.
#define		HIMR_BCNDMA0		BIT(13)	// Beacon DMA Interrupt 0.
#define		HIMR_RXFOVW		BIT(12)	// Receive packet buffer Overflow.
#define		HIMR_RDU			BIT(11)	// Receive Descriptor Unavailable.
#define		HIMR_ATIM_END		BIT(10)	// ATIM Window End Interrupt.
#define		HIMR_BCNDOK0		BIT(9)	// Beacon Queue DMA OK Interrupt0.
#define		HIMR_HIGHDOK		BIT(8)	// High Queue DMA OK Interrupt.
#define		HIMR_TXBCNOK		BIT(7)	// Transmit Beacon OK Interrupt.
#define		HIMR_MGTDOK		BIT(6)	// Management Queue DMA OK Interrupt.
#define		HIMR_TXBCNERR		BIT(5)	// Transmit Beacon Error Interrupt.
#define		HIMR_BKDOK			BIT(4)	// AC_BK DMA OK Interrupt.
#define		HIMR_BEDOK			BIT(3)	// AC_BE DMA OK Interrupt.
#define		HIMR_VIDOK			BIT(2)	// AC_VI DMA OK Interrupt.
#define		HIMR_VODOK		BIT(1)	// AC_VO DMA Interrupt.
#define		HIMR_ROK			BIT(0)	// Receive DMA OK Interrupt.

//----------------------------------------------------------------------------
//       8192C HIMRE bits					(Offset 0x128-12A, 24 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C HISRE bits					(Offset 0x12C-12E, 24 bits)
//----------------------------------------------------------------------------
#define		HIMRE_TXERR		BIT(11)	// Enable Tx Error Flag Interrupt.
#define		HIMRE_RXERR		BIT(10)	// Enable Rx Error Flag Interrupt.
#define		HIMRE_C2HCMD		BIT(9)	// Enable CPU to Host Command Interrupt.
#define		HIMRE_CPWM		BIT(8)	// Enable CPU power Mode exchange Interrupt.
#define		HIMRE_HBT_CMD		BIT(7)	// 92D_REG, Host BT_CMD interrupt mask
#define		HIMRE_OCPINT		BIT(1)	// Enable SPS_OCP Interrupt.
#define		HIMRE_WLANOFF		BIT(0)	// Enable WLAN power down Interrupt.

//----------------------------------------------------------------------------
//       8192C CPWM bits					(Offset 0x12F, 8 bits)
//----------------------------------------------------------------------------
#define		CPWM_TOGGLING	BIT(7)	// When this bit is toggled, interrtup is send to HISRE.CPWMINT.
#define		CPWM_MOD_SHIFT	0	// The current power mode index.
#define		CPWM_MOD_Mask	0x07F

//----------------------------------------------------------------------------
//       8192C FWIMR bits					(Offset 0x130-133, 32 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C FWISR bits					(Offset 0x134-137, 32 bits)
//----------------------------------------------------------------------------
#define		FWIMR_VOQ			BIT(31)	//
#define		FWIMR_VIQ			BIT(30)	//
#define		FWIMR_BEQ			BIT(29)	//
#define		FWIMR_BKQ			BIT(28)	//
#define		FWIMR_MGTQ		BIT(27)	//
#define		FWIMR_HIQ			BIT(26)	//
#define		FWIMR_TXPKTIN		BIT(25)	// interrupt is issued to inform MCU.
#define		FWIMR_TXBCNOK		BIT(24)	// interrupt is issued when a beacon frame is transmitted.
#define		FWIMR_TXBCNERR	BIT(23)	// interrupt is issued when beacon in TXPKTBUF fails to send out.
#define		FWIMR_RX_UMD0	BIT(22)	// receiving unicast data frame with More Data=0.
#define		FWIMR_RX_UMD1	BIT(21)	// receiving unicast data frame with More Data=1.
#define		FWIMR_RX_BMD0		BIT(20)	// receiving broadcast data frame with More Data=0.
#define		FWIMR_RX_BMD1		BIT(19)	// receiving broadcast data frame with More Data=1.
#define		FWIMR_BCN_RX		BIT(18)	// When receiving Beacon frame.
#define		FWIMR_TBTT		BIT(17)	// The exact TBTT time interrupt.
#define		FWIMR_BCNERLY		BIT(16)	// This interrupt is issue at the time set by DRVERLYINT register before TBTT time.
#define		FWIMR_BCNDMA7	BIT(15)	// When BCNDMA interval arrives before TBTT7, informs MCU to prepare beacon.
#define		FWIMR_BCNDMA6	BIT(14)	// When BCNDMA interval arrives before TBTT6, informs MCU to prepare beacon.
#define		FWIMR_BCNDMA5	BIT(13)	// When BCNDMA interval arrives before TBTT5, informs MCU to prepare beacon.
#define		FWIMR_BCNDMA4	BIT(12)	// When BCNDMA interval arrives before TBTT4, informs MCU to prepare beacon.
#define		FWIMR_BCNDMA3	BIT(11)	// When BCNDMA interval arrives before TBTT3, informs MCU to prepare beacon.
#define		FWIMR_BCNDMA2	BIT(10)	// When BCNDMA interval arrives before TBTT2, informs MCU to prepare beacon.
#define		FWIMR_BCNDMA1	BIT(9)	// When BCNDMA interval arrives before TBTT1, informs MCU to prepare beacon.
#define		FWIMR_BCNDMA0	BIT(8)	// When BCNDMA interval arrives before TBTT0, informs MCU to prepare beacon.
#define		FWIMR_LP_STBY		BIT(7)	// Low Power Standby Wake interrupt.
#define		FWIMR_ATIM		BIT(6)	// This interrupt is issued when it is at the time ATIM ms before ATIMWND expiring.
#define		FWIMR_HRCV		BIT(5)	// Host Recover CPU Loop Instruction.
#define		FWIMR_H2CCMD		BIT(4)	// Host To CPU Message Interrupt.
#define		FWIMR_RXDONE		BIT(3)	//
#define		FWIMR_ERRORHDL	BIT(2)	// FWHW/ TXDMA/ RXDMA/ WMAC error status interrupt.
#define		FWIMR_TXCCX		BIT(1)	//
#define		FWIMR_TXCLOSE		BIT(0)	//

//----------------------------------------------------------------------------
//       8192C FTIMR bits					(Offset 0x138-13B, 32 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C FTISR bits					(Offset 0x13C-13F, 32 bits)
//----------------------------------------------------------------------------
#define		FTIMR_FWBT_CMD	BIT(18)	// 92D_REG, FW BT_CMD interrupt mask
#define		FTIMR_RPWM		BIT(8)	// RPWM INT Status. Write 1 clear.
#define		FTIMR_PSTIMER		BIT(7)	// Enable PSTimer interrupt.
#define		FTIMR_TIMEOUT1	BIT(6)	// Enable Timer1 interrupt.
#define		FTIMR_TIMEOUT0	BIT(5)	// Enable Timer0 interrupt.
#define		FTIMR_GT4			BIT(4)	// Enable General Timer[4] interrupt.
#define		FTIMR_GT3			BIT(3)	// Enable General Timer[3] interrupt.
#define		FTIMR_GT2			BIT(2)	// Enable General Timer[2] interrupt.
#define		FTIMR_GT1			BIT(1)	// Enable General Timer[1] interrupt.
#define		FTIMR_GT0			BIT(0)	// Enable General Timer[0] interrupt.

//----------------------------------------------------------------------------
//       8192C PKTBUF_DBG_CTRL bits			(Offset 0x140-143, 32 bits)
//----------------------------------------------------------------------------
#define		RXPKTBUF_DBG				BIT(14)	// 1: Enable RXPKTBUF debug mode.
#define		TXPKTBUF_DBG				BIT(13)	// 1: Enable TXPKTBUF debug mode.
#define		PKTBUF_DBG_ADDR_SHIFT	0	// The address of TRXPKTBUF to be read.
#define		PKTBUF_DBG_ADDR_Mask		0x01FFF

//		General Purpose Timer. (Offset 0x150 - 0x16Fh)
//----------------------------------------------------------------------------
//       8192C TC0_CTRL bits					(Offset 0x150-153, 32 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C TC1_CTRL bits					(Offset 0x154-157, 32 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C TC2_CTRL bits					(Offset 0x158-15B, 32 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C TC3_CTRL bits					(Offset 0x15C-15F, 32 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C TC4_CTRL bits					(Offset 0x160-163, 32 bits)
//----------------------------------------------------------------------------
#define		TCINT_EN			BIT(26)	// When write "1" to this bit, Counter starts counting down.
#define		TCMODE				BIT(25)	// Timer/Counter mode.
#define		TCEN				BIT(24)	// Timer/Counter enable.
#define		TCData_SHIFT		0	// Timer/Counter data register. It specifies the time-out duration.
#define		TCData_Mask		0x0FFFFFF

//----------------------------------------------------------------------------
//       8192C TCUNIT_BASE bits				(Offset 0x164-165, 16 bits)
//----------------------------------------------------------------------------
#define		TCUNIT_BASE_TIME_SHIFT	0	// num of clocks that equals to the base time unit of timer/counter.
#define		TCUNIT_BASE_TIME_Mask	0x03FFF
//		General Purpose Timer. (Offset 0x150 - 0x16Fh)

//----------------------------------------------------------------------------
//       8192C MBIST_START bits				(Offset 0x174-177, 32 bits)
//----------------------------------------------------------------------------
#define		TXLLT_BISTP		BIT(10)	// TXLLT BIST Start Pulse.
#define		TXOQT_BISTP		BIT(9)	// TXOQT BIST Start Pulse.
#define		TXPKT_BISTP		BIT(8)	// TXPKT Buffer BIST Start Pulse.
#define		RXPKT_BISTP		BIT(7)	// RXPKT Buffer BIST Start Pulse.
#define		TXDBUF_BISTP		BIT(6)	// TXDBUF BIST Start Pulse.
#define		TXFIFO_BISTP		BIT(5)	// TXFIFO BIST Start Pulse.
#define		RXFIFO_BISTP		BIT(4)	// RXFIFO BIST Start Pulse.
#define		WKEYLLT_BISTP		BIT(3)	// WKEY BIST Start Pulse.
#define		WRXBA_BISTP		BIT(2)	// WRXBA BIST Start Pulse.

//----------------------------------------------------------------------------
//       8192C MBIST_DONE bits				(Offset 0x178-17B, 32 bits)
//----------------------------------------------------------------------------
#define		TXLLT_BISTD		BIT(10)	// TXLLT BIST Done.
#define		TXOQT_BISTD		BIT(9)	// TXOQT BIST Done.
#define		TXPKT_BISTD		BIT(8)	// TXPKT Buffer BIST Done.
#define		RXPKT_BISTD		BIT(7)	// RXPKT Buffer BIST Done.
#define		TXDBUF_BISTD		BIT(6)	// TXDBUF BIST Done.
#define		TXFIFO_BISTD		BIT(5)	// TXFIFO BIST Done.
#define		RXFIFO_BISTD		BIT(4)	// RXFIFO BIST Done.
#define		WKEYLLT_BISTD		BIT(3)	// WKEY BIST Done.
#define		WRXBA_BISTD		BIT(2)	// WRXBA BIST Done.

//----------------------------------------------------------------------------
//       8192C MBIST_FAIL bits				(Offset 0x17C-17F, 32 bits)
//----------------------------------------------------------------------------
#define		TXLLT_BISTF		BIT(10)	// TXLLT BIST Fail.
#define		TXOQT_BISTF		BIT(9)	// TXOQT BIST Fail.
#define		TXPKT_BISTF		BIT(8)	// TXPKT Buffer BIST Fail.
#define		RXPKT_BISTF		BIT(7)	// RXPKT Buffer BIST Fail.
#define		TXDBUF_BISTF		BIT(6)	// TXDBUF BIST Fail.
#define		TXFIFO_BISTF		BIT(5)	// TXFIFO BIST Fail.
#define		RXFIFO_BISTF		BIT(4)	// RXFIFO BIST Fail.
#define		WKEYLLT_BISTF		BIT(3)	// WKEY BIST Fail.
#define		WRXBA_BISTF		BIT(2)	// WRXBA BIST Fail.

//----------------------------------------------------------------------------
//       8192C FMETHR bits					(Offset 0x1C8-1CB, 32 bits)
//----------------------------------------------------------------------------
#define		FMSG_INT			BIT(31)	// Toggle this bit will generate interrupt to Host.
#define		FW_MSG_SHIFT		0	// User Defined Message.
#define		FW_MSG_Mask		0x07FFFFFFF

//----------------------------------------------------------------------------
//       8192C HMETFR bits					(Offset 0x1CC-1CF, 32 bits)
//----------------------------------------------------------------------------
#define		HRCV_MSG_SHIFT	24	// User Defined Message.
#define		HRCV_MSG_Mask		0x0FF
#define		INT_BOX3			BIT(3)	// MSG_BOX_3 Valid. Enable when the Entry is write.
#define		INT_BOX2			BIT(2)	// MSG_BOX_2 Valid. Enable when the Entry is write.
#define		INT_BOX1			BIT(1)	// MSG_BOX_1 Valid. Enable when the Entry is write.
#define		INT_BOX0			BIT(0)	// MSG_BOX_0 Valid. Enable when the Entry is write.

//----------------------------------------------------------------------------
//       8192C LLT_INI bits					(Offset 0x1E0-1E3, 32 bits)
//----------------------------------------------------------------------------
#define		LLTE_RWM_SHIFT		30	//
#define		LLTE_RWM_Mask			0x03
#define		LLTINI_PDATA_SHIFT	16	// LLT Entry Write/Read DATA for MCU.
#define		LLTINI_PDATA_Mask		0x0FF
#define		LLTINI_ADDR_SHIFT		8	// LLT Entry Access Offset.
#define		LLTINI_ADDR_Mask		0x0FF
#define		LLTINI_HDATA_SHIFT	0	// LLT Entry Write/Read DATA for HCI.
#define		LLTINI_HDATA_Mask		0x0FF
// LLTE_RWM
#define		LLTE_RWM_NO_ACTIVE	0x00
#define		LLTE_RWM_WR			0x01
#define		LLTE_RWM_RD			0x03

//----------------------------------------------------------------------------
//       8192C BB_ACCEESS_CTRL bits			(Offset 0x1E8-1EB, 32 bits)
//----------------------------------------------------------------------------
#define		BB_WRITE_READ_SHIFT	30	//
#define		BB_WRITE_READ_Mask	0x03
#define		BB_WRITE_EN_SHIFT		12	// Byte Write Enable.
#define		BB_WRITE_EN_Mask		0x0F
#define		BB_ADDR_SHIFT			2	// Baseband Access Write/Read Address (in DW unit).
#define		BB_ADDR_Mask			0x03FF
#define		BB_ERRACC				BIT(0)	// Duplicate Access when previous cycle pending (write one clear).


//
// 3. TXDMA/RXDMA Configuration. (Offset 0x200 - 0x2FFh)
//
//----------------------------------------------------------------------------
//       8192C RQPN bits						(Offset 0x200-203, 32 bits)
//----------------------------------------------------------------------------
#define		LD_RQPN			BIT(31)	// Write 1 to set RQPN bit[79:0] value to page numbers for initialization.
#define		LPQ_PUBLIC_DIS		BIT(25)	// bit=1, available Tx page size excludes the public queue.
#define		HPQ_PUBLIC_DIS		BIT(24)	// bit=1, available Tx page size excludes the public queue.
#define		PUBQ_SHIFT			16	// Public Reserved Page Number.
#define		PUBQ_Mask			0x0FF
#define		LPQ_SHIFT			8	// Low Priority Queue Reserved Page Number.
#define		LPQ_Mask			0x0FF
#define		HPQ_SHIFT			0	// High Priority Queue Reserved Page Number.
#define		HPQ_Mask			0x0FF

//----------------------------------------------------------------------------
//       8192C FIFOPAGE bits					(Offset 0x204-207, 32 bits)
//----------------------------------------------------------------------------
#define		TXPKTNUM_SHIFT		24	// Packet number in TXPKTBUF.
#define		TXPKTNUM_Mask			0x0FF
#define		PUB_AVAL_PG_SHIFT		16	// Available Public Queue Page Number.
#define		PUB_AVAL_PG_Mask		0x0FF
#define		LPQ_AVAL_PG_SHIFT		8	// Available Low Priority Queue Page Number.
#define		LPQ_AVAL_PG_Mask		0x0FF
#define		HPQ_AVAL_PG_SHIFT		0	// Available High Priority Queue Page Number.
#define		HPQ_AVAL_PG_Mask		0x0FF

//----------------------------------------------------------------------------
//       8192C TDECTRL bits					(Offset 0x208-20B, 32 bits)
//----------------------------------------------------------------------------
#define		LLT_FREE_PAGE_SHIFT	24	// LLT Free Page.
#define		LLT_FREE_PAGE_Mask	0x0FF
#define		BCN_VALID				BIT(16)	// bit=1, beacon packet has finished to write to txpktbuffer.
#define		BCN_HEAD_SHIFT		8	// head page of Bcnq packet which is Tx DMA filled.
#define		BCN_HEAD_Mask			0x0FF
#define		BLK_DESC_NUM_SHIFT	4	// The Most Number of Tx Descriptor per Bulk Out Only for USB.
#define		BLK_DESC_NUM_Mask	0x0F

//----------------------------------------------------------------------------
//       8192C TXDMA_OFFSET_CHK bits		(Offset 0x20C-20F, 32 bits)
//----------------------------------------------------------------------------
#define		PG_UNDER_TH_SHIFT	16	// Page threshold value is check by Tx DMA engine.
#define		PG_UNDER_TH_Mask		0x0FF
#define		CHK_PG_TH_EN			BIT(10)	// Enable Tx DMA to check total pages if it is under page threshold.
#define		DROP_DATA_EN			BIT(9)	// Enable Tx DMA to drop the redundant data of packet.
#define		CHECK_OFFSET_EN		BIT(8)	// Enable Tx DMA to check offset value.
#define		CHECK_OFFSET_SHIFT	0	// Offset value is check by Tx DMA engine.
#define		CHECK_OFFSET_Mask		0x0FF

//----------------------------------------------------------------------------
//       8192C TXDMA_STATUS bits			(Offset 0x210-213, 32 bits)
//----------------------------------------------------------------------------
#define		PAYLOAD_UDN		BIT(14)	// Payload is under the packet length of Tx descriptor.
#define		PAYLOAD_OVF		BIT(13)	// Payload is over the packet length of Tx descriptor.
#define		DSC_CHKSUM_FAIL	BIT(12)	// Tx descriptor checksum error.
#define		UNKNOWN_QSEL		BIT(11)	// An unknown QSEL of Tx descriptor is detected.
#define		EP_QSEL_DIFF		BIT(10)	// Tx Endpoint is unmatched with the QSEL of descriptor.
#define		TX_OFFS_UNMATCH	BIT(9)	// Tx offset is unmatched.
#define		TXOQT_UDN			BIT(8)	// TXOQT Underflow.
#define		TXOQT_OVF			BIT(7)	// TXOQT Overflow.
#define		TXDMA_SFF_UDN		BIT(6)	// TXDMA Sync FIFO Underflow.
#define		TXDMA_SFF_OVF		BIT(5)	// TXDMA Sync FIFO Overflow.
#define		LLT_NULL_PG		BIT(4)	// TXDMA reads NULL page.
#define		PAGE_UDN			BIT(3)	// Total pages included PTCL un-return pages under the total reserved pages.
#define		PAGE_OVF			BIT(2)	// Total pages included PTCL un-return pages over the total reserved pages.
#define		TXFF_PG_UDN		BIT(1)	// TXFF page underflow in TDE page controller.
#define		TXFF_PG_OVF		BIT(0)	// TXFF page overflow in TDE page controller.

//----------------------------------------------------------------------------
//       8192C RXDMA_AGG_PG_TH bits		(Offset 0x280-283, 32 bits)
//----------------------------------------------------------------------------
#define		RXDMA_AGG_PG_TH_LMT(x)	((x & 0x0FF)<<0)	// DMA inform host to receive pkts, when exceeds the threshold.

//----------------------------------------------------------------------------
//       8192C RXPKT_NUM bits				(Offset 0x284-287, 32 bits)
//----------------------------------------------------------------------------
#define		RXPKT_NUM_LMT_SHIFT	24	// number of packets in RXPKTBUF.
#define		RXPKT_NUM_LMT_Mask	0x0FF
#define		RW_RELEASE_EN			BIT(18)	// bit=1, RXDMA will enter this mode after RXDMA packet to host completed and stop.
#define		RXDMA_IDLE				BIT(17)	// RXDMA finishes DMA will report idle state in this bit.
#define		RXPKT_RELEASE_POLL	BIT(16)	// bit=1, RXDMA will decrease RX PKT counter by one.
#define		FW_UPD_RDPTR_SHIFT	0	// FW updates before write RXPKT_RELEASE_POLL to 1.
#define		FW_UPD_RDPTR_Mask	0x0FFFF

//----------------------------------------------------------------------------
//       8192C RXDMA_STATUS bits			(Offset 0x288-28B, 32 bits)
//----------------------------------------------------------------------------
#define		FW_POLL_ISSUE		BIT(5)	// FW Release Poll Error.
#define		RX_DATA_UDN		BIT(4)	// RX Data Underflow. Clear by SW.
#define		RX_SFF_UDN			BIT(3)	// RX Sync FIFO Underflow.
#define		RX_SFF_OVF			BIT(2)	// RX Sync FIFO Overflow.
#define		USB_REQ_LEN_OVF	BIT(1)	// USB RXAGGEN Error due to RX length overflow.
#define		RXPKT_OVF			BIT(0)	// When RX Packet is more than 255 packets remaining in FF.


//
// 4. PCIE EMAC Reserved Region. (Offset 0x300 - 0x3FFh)
//
//----------------------------------------------------------------------------
//       8192C PCIE_CTRL_REG bits			(Offset 0x300-303, 32 bits)
//----------------------------------------------------------------------------
#define		MAX_RXDMA_SHIFT	28	// RXDMA Burst Size selection.
#define		MAX_RXDMA_Mask	0x07
#define		MAX_TXDMA_SHIFT	24	// TXDMA Burst Size selection.
#define		MAX_TXDMA_Mask	0x07
#define		En_HWENTRL		BIT(19)	// Enable HW call EMAC to enter L23 actively.
#define		EN_SWENTR_L23		BIT(17)	// Enable SW call EMAC to enter L23.
#define		EN_HWEXITL1		BIT(16)	// Enable HW call EMAC to exit L1.
#define		BCNQSTOP			BIT(15)	// BCNQ DMA STOP.
#define		HQSTOP				BIT(14)	// HQ DMA STOP.
#define		MGQSTOP			BIT(13)	// VOKQ DMA STOP.
#define		VOQSTOP			BIT(12)	// VOKQ DMA STOP.
#define		VIQSTOP			BIT(11)	// VIQ DMA STOP.
#define		BEQSTOP			BIT(10)	// BEQ DMA STOP.
#define		BKQSTOP			BIT(9)	// BKQ DMA STOP.
#define		RXQSTOP			BIT(8)	// RX DMA STOP.
#define		HQ_POLL			BIT(7)	// High Queue Polling bit, read result will be hpqflag.
#define		MGQ_POLL			BIT(6)	// Manag Queue Polling bit, read result will be mgqflag.
#define		BCNQ_POLL			BIT(4)	// BCNQ Polling bit, read result will be bpqflag.
#define		VOQ_POLL			BIT(3)	// VOQ Polling bit, read result will be voqflag.
#define		VIQ_POLL			BIT(2)	// VIQ Polling bit, read result will be viqflag.
#define		BEQ_POLL			BIT(1)	// BEQ Polling bit, read result will be beqflag.
#define		BKQ_POLL			BIT(0)	// BKQ Polling bit, read result will be bkqflag.

//----------------------------------------------------------------------------
//       8192C INT_MIG bits					(Offset 0x304-307, 32 bits)
//----------------------------------------------------------------------------
#define		TTMRMIT_Shift			28	// 92D_REG, Tx timer mitigation
#define		TTMRMIT_Mask			0x0F
#define		TNUMMIT_Shift			24	// 92D_REG, Tx number mitigation
#define		TNUMMIT_Mask			0x0F
#define		RTMRMIT_Shift			20	// 92D_REG, Rx timer mitigation
#define		RTMRMIT_Mask			0x0F
#define		RNUMMIT_Shift			16	// 92D_REG, Rx number mitigation
#define		RNUMMIT_Mask			0x0F
#define		INTMT_SHIFT			16	// Interrupt Couter for setting Interrupt Migration.
#define		INTMT_Mask				0x0FFFF
#define		MIGRATE_TIMER_SHIFT	0	// Timer for setting Interrupt Migration.
#define		MIGRATE_TIMER_Mask	0x0FFFF

//----------------------------------------------------------------------------
//       8192C DBI bits						(Offset 0x348-353, 96 bits)
//----------------------------------------------------------------------------
#define		DBI_ACC_EXT		BIT(19)	// 92D_REG, DBI access external register on ELBI
#define		DBI_MACSEL			BIT(18)	// 92D_REG, DBI access MAC1 select
#define		DBI_RFLAG			BIT(17)	// DBI Read Flag.
#define		DBI_WFLAG			BIT(16)	// DBI Write Flag.
#define		DBI_WREN_SHIFT	12	// DBI Write Enable, High active.
#define		DBI_WREN_Mask		0x0F
#define		DBI_ADDR_SHIFT	0	// DBI Address.
#define		DBI_ADDR_Mask		0x0FFF

//----------------------------------------------------------------------------//
//       8192C MDIO bits						(Offset 0x354-35B, 64 bits)
//----------------------------------------------------------------------------
#define		ECRC_EN			BIT(7)	// ECRC Enable.
#define		MDIO_RFLAG			BIT(6)	// MDIO Read Flag.
#define		MDIO_WFLAG		BIT(5)	// MDIO Write Flag.
#define		MDIO_ADDR_SHIFT	0	// MDIO Address.
#define		MDIO_ADDR_Mask	0x01F

#define		MDIO_RDATA_SHIFT	16	// MDIO Read Data.
#define		MDIO_RDATA_Mask	0x0FFFF
#define		MDIO_WDATA_SHIFT	0	// MDIO Write Data.
#define		MDIO_WDATA_Mask	0x0FFFF

//----------------------------------------------------------------------------
//       8192C UART_CTRL bits				(Offset 0x364-36B, 64 bits)
//----------------------------------------------------------------------------
#define		UART_WDATA_H_SHIFT	0	// UART Write Data [31:8], read will be UART Read Data[31:8].
#define		UART_WDATA_H_Mask	0x0FFFFFF

#define		UART_DMA_STS_SHIFT	24	// UART DMA Status.
#define		UART_DMA_STS_Mask	0x07
#define		UART_DMA_MOD			BIT(20)	// UART DMA Mode.
#define		UART_RDMA				BIT(19)	// UART RX DMA Flag.
#define		UART_TDMA				BIT(18)	// UART TX DMA Flag.
#define		UART_RCMD				BIT(17)	// UART Read Command.
#define		UART_WCMD				BIT(16)	// UART Write Command.
#define		UART_ADDR_SHIFT		10	// UART Address.
#define		UART_ADDR_Mask		0x03F
#define		UART_WDATA_L_SHIFT	0	// UART Write Data [7:0], read will be UART Read Data[7:0].
#define		UART_WDATA_L_Mask	0x0FF


//
// 5. PTCL/EDCA Configuration. (Offset 0x400 - 0x4FFh)
//
//----------------------------------------------------------------------------
//       8192C VOQ_INFO bits				(Offset 0x400-403, 32 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C VIQ_INFO bits					(Offset 0x404-407, 32 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C BEQ_INFO bits					(Offset 0x408-40B, 32 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C BKQ_INFO bits					(Offset 0x40C-40F, 32 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C MGQ_INFO bits				(Offset 0x410-413, 32 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C HIQ_INFO bits					(Offset 0x414-417, 32 bits)
//----------------------------------------------------------------------------
#define		Q_CPU_HEAD_SHIFT	24	// MCU will handle q_pkt head.
#define		Q_CPU_HEAD_Mask	0x0FF
#define		Q_PKT_NUM_SHIFT	16	// total Q pkt number in TxPktbuffer.
#define		Q_PKT_NUM_Mask	0x0FF
#define		Q_FW_NUM_SHIFT	8	// total Q FW number in TxPktbuffer.
#define		Q_FW_NUM_Mask	0x0FF
#define		Q_HEAD_PG_SHIFT	0	// head page of the first packet of Q.
#define		Q_HEAD_PG_Mask	0x0FF

//----------------------------------------------------------------------------
//       8192C BCNQ_INFO bits				(Offset 0x418-41A, 24 bits)
//----------------------------------------------------------------------------
#define		BCNQ_PKT_NUM_SHIFT	16	// total BCNQ pkt number in TxPktbuffer.
#define		BCNQ_PKT_NUM_Mask	0x0FF
#define		BCNQ_FW_NUM_SHIFT	8	// total BCNQ FW number in TxPktbuffer.
#define		BCNQ_FW_NUM_Mask		0x0FF
#define		BCNQ_HEAD_PG_SHIFT	0	// head page of the first packet of BCNQ.
#define		BCNQ_HEAD_PG_Mask	0x0FF

//----------------------------------------------------------------------------
//       8192C TXPKT_EMPTY bits				(Offset 0x41B, 8 bits)
//----------------------------------------------------------------------------
#define		BCNQ_EMPTY		BIT(7)	// queue is empty. Report by MAC.
#define		HQQ_EMPTY			BIT(6)	// queue is empty. Report by MAC.
#define		HMGQ_EMPTY		BIT(5)	// queue is empty. Report by MAC.
#define		CMGQ_EMPTY		BIT(4)	// queue is empty. Report by MAC.
#define		BKQ_EMPTY			BIT(3)	// queue is empty. Report by MAC.
#define		BEQ_EMPTY			BIT(2)	// queue is empty. Report by MAC.
#define		VIQ_EMPTY			BIT(1)	// queue is empty. Report by MAC.
#define		VOQ_EMPTY			BIT(0)	// queue is empty. Report by MAC.

//----------------------------------------------------------------------------
//       8192C CPU_MGQ_INFO bits			(Offset 0x41C-41F, 32 bits)
//----------------------------------------------------------------------------
#define		CPUMGQ_FW_NUM_SHIFT		8	// total CPU MGQ fw number in TxPktbuffer.
#define		CPUMGQ_FW_NUM_Mask		0x0FF
#define		CPUMGQ_HEAD_PG_SHIFT	0	// head page of CPU MGQ.
#define		CPUMGQ_HEAD_PG_Mask		0x0FF

//----------------------------------------------------------------------------
//       8192C FWHW_TXQ_CTRL bits			(Offset 0x420-422, 24 bits)
//----------------------------------------------------------------------------
#define		RTS_LIMIT_IN_OFDM		BIT(23)	// 92D_REG, rts rate will not down to cck rate
#define		EN_BCNQ_DL				BIT(22)	// 92D_REG, 1: ptcl consider there is bcn pkt in txbuf; 0: mask bcn pkt num in bcnq
#define		EN_RD_RESP_NAV_BK	BIT(21)	// Control the RD responder NAV criteria for TX.
#define		EN_WR_FREE_TAIL		BIT(20)	// 1:Drive wirte Bcnq_boundary,Hw set free_tail in Boundary-1; 0:no update.
#define		CHK_LOSS_QSEL_SHIFT	17	//
#define		CHK_LOSS_QSEL_Mask	0x07
#define		EN_CHECK_LOSS			BIT(16)	// bit=1, HW will monitor packet loss from TXDMA.
#define		EN_QUEUE_RPT_SHIFT	8	// 1: HW will report tx_status  0: no report.
#define		EN_QUEUE_RPT_Mask	0x07F
#define		EN_AMPDU_RTY_NEW		BIT(7)	// AMPDU aggregation mode with retry MPDUs and new MPDUs.
#define		LIFETIME_EN			BIT(6)	// Enable lift time drop.
#define		EN_CPU_HANDLE_SHIFT	0	// PKT need cpu handle.
#define		EN_CPU_HANDLE_Mask	0x03F

//----------------------------------------------------------------------------
//       8192C HWSEQ_CTRL bits				(Offset 0x423, 8 bits)
//----------------------------------------------------------------------------
#define		HWSEQ_BCN_EN		BIT(6)	//
#define		HWSEQ_HI_EN		BIT(5)	//
#define		HWSEQ_MGT_EN		BIT(4)	//
#define		HWSEQ_BK_EN		BIT(3)	//
#define		HWSEQ_BE_EN		BIT(2)	//
#define		HWSEQ_VI_EN		BIT(1)	//
#define		HWSEQ_VO_EN		BIT(0)	//

//----------------------------------------------------------------------------
//       8192C MULTI_BCNQ_EN bits			(Offset 0x426, 8 bits)
//----------------------------------------------------------------------------
#define		MBID_BCNQ7_EN		BIT(7)	//
#define		MBID_BCNQ6_EN		BIT(6)	//
#define		MBID_BCNQ5_EN		BIT(5)	//
#define		MBID_BCNQ4_EN		BIT(4)	//
#define		MBID_BCNQ3_EN		BIT(3)	//
#define		MBID_BCNQ2_EN		BIT(2)	//
#define		MBID_BCNQ1_EN		BIT(1)	//
#define		MBID_BCNQ0_EN		BIT(0)	//

//----------------------------------------------------------------------------
//       8192C MULTI_BCNQ_OFFSET bits			(Offset 0x427, 8 bits)
//----------------------------------------------------------------------------
#define		MBCNQ_OFFSET_SHIFT	0	// page number between two consecutive BCNQ head page.
#define		MBCNQ_OFFSET_Mask	0x03

//----------------------------------------------------------------------------
//       8192C SPEC_SIFS bits					(Offset 0x428-429, 16 bits)
//----------------------------------------------------------------------------
#define		SPEC_SIFS_OFDM_SHIFT	8	// spec SIFS value for duration calculation.
#define		SPEC_SIFS_OFDM_Mask	0x0FF
#define		SPEC_SIFS_CCK_SHIFT	0	// spec SIFS value for duration calculation.
#define		SPEC_SIFS_CCK_Mask	0x0FF

//----------------------------------------------------------------------------
//       8192C RL bits							(Offset 0x42A-42B, 16 bits)
//----------------------------------------------------------------------------
#define		SRL_SHIFT			8	// Short Retry Limit.
#define		SRL_Mask			0x03F
#define		LRL_SHIFT			0	// Long Retry Limit.
#define		LRL_Mask			0x03F

//----------------------------------------------------------------------------
//       8192C DARFRC bits						(Offset 0x430-437, 64 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C RARFRC bits						(Offset 0x438-43F, 64 bits)
//----------------------------------------------------------------------------
#define		ARF_RC8_SHIFT		24	// Response Auto Rate Fallback Retry Count.
#define		ARF_RC8_Mask		0x01F
#define		ARF_RC7_SHIFT		16	// Response Auto Rate Fallback Retry Count.
#define		ARF_RC7_Mask		0x01F
#define		ARF_RC6_SHIFT		8	// Response Auto Rate Fallback Retry Count.
#define		ARF_RC6_Mask		0x01F
#define		ARF_RC5_SHIFT		0	// Response Auto Rate Fallback Retry Count.
#define		ARF_RC5_Mask		0x01F

#define		ARF_RC4_SHIFT		24	// Response Auto Rate Fallback Retry Count.
#define		ARF_RC4_Mask		0x01F
#define		ARF_RC3_SHIFT		16	// Response Auto Rate Fallback Retry Count.
#define		ARF_RC3_Mask		0x01F
#define		ARF_RC2_SHIFT		8	// Response Auto Rate Fallback Retry Count.
#define		ARF_RC2_Mask		0x01F
#define		ARF_RC1_SHIFT		0	// Response Auto Rate Fallback Retry Count.
#define		ARF_RC1_Mask		0x01F

//----------------------------------------------------------------------------
//       8192C RRSR bits							(Offset 0x440-442, 24 bits)
//----------------------------------------------------------------------------
#define		RRSR_SHORT			BIT(23)	// Respond with short preamble packet. Default is long preamble.
#define		RRSR_RSC_SHIFT		21	// Response frame sub-channel configuration.
#define		RRSR_RSC_Mask		0x03
#define		RRSC_BITMAP_SHIFT	0	// Response Auto Rate Fallback Retry Count.
#define		RRSC_BITMAP_Mask	0x0FFFFF

//----------------------------------------------------------------------------
//       8192C AGGLEN_LMT bits					(Offset 0x458-45B, 32 bits)
//----------------------------------------------------------------------------
#define		AGGLMT_MCS15S_SHIFT	28	// Aggregation Limit for MCS 15 SGI in the units of number of MPDUs.
#define		AGGLMT_MCS15S_Mask	0x0F
#define		AGGLMT_MCS15_SHIFT	24	// Aggregation Limit for MCS 13~15 in the units of number of MPDUs.
#define		AGGLMT_MCS15_Mask	0x0F
#define		AGGLMT_MCS12_SHIFT	20	// Aggregation Limit for MCS 11~12 in the units of number of MPDUs.
#define		AGGLMT_MCS12_Mask	0x0F
#define		AGGLMT_MCS10_SHIFT	16	// Aggregation Limit for MCS 8~10 in the units of number of MPDUs.
#define		AGGLMT_MCS10_Mask	0x0F
#define		AGGLMT_MCS7S_SHIFT	12	// Aggregation Limit for MCS 7 SGI in the units of number of MPDUs.
#define		AGGLMT_MCS7S_Mask	0x0F
#define		AGGLMT_MCS7_SHIFT	8	// Aggregation Limit for MCS 6~7 in the units of number of MPDUs.
#define		AGGLMT_MCS7_Mask		0x0F
#define		AGGLMT_MCS5_SHIFT	4	// Aggregation Limit for MCS 3~5 in the units of number of MPDUs.
#define		AGGLMT_MCS5_Mask		0x0F
#define		AGGLMT_MCS2_SHIFT	0	// Aggregation Limit for MCS 0~2 in the units of number of MPDUs.
#define		AGGLMT_MCS2_Mask		0x0F

//----------------------------------------------------------------------------
//       8192C AMPDU_MIN_SPACE bits				(Offset 0x45C, 8 bits)
//----------------------------------------------------------------------------
#define		MIN_SPACE_SHIFT	0	// The spacing between sub-frame.
#define		MIN_SPACE_Mask	0x07

//----------------------------------------------------------------------------
//       8192C FAST_EDCA_CTRL bits				(Offset 0x460-462, 24 bits)
//----------------------------------------------------------------------------
#define		FAST_EDCA_TO_SHIFT		16	// If pkt timeout, HW will contend channel using fast backoff.
#define		FAST_EDCA_TO_Mask		0x01F
#define		FAST_EDCA_PKT_TH_SHIFT	0	// If pkt in txpktbuffer over thrs. HW will fast backoff.
#define		FAST_EDCA_PKT_TH_Mask	0x0FFFF

//----------------------------------------------------------------------------
//       8192C RD_RESP_PKT_TH bits				(Offset 0x463, 8 bits)
//----------------------------------------------------------------------------
#define		RD_RESP_PKT_TH_LMT_SHIFT		0	// granted ACq pkt num beyond this, responder set More PPDU=1 & piggyback.
#define		RD_RESP_PKT_TH_LMT_Mask		0x01F

//----------------------------------------------------------------------------
//       8192C INIRTS_RATE_SEL bits				(Offset 0x480, 8 bits)
//----------------------------------------------------------------------------
#define		INIRTSMCS_SEL_SHIFT	0	// initial rate for Control type frame transmitted as EDCA originator.
#define		INIRTSMCS_SEL_Mask	0x03F

//----------------------------------------------------------------------------
//       8192C POWER_STAGE1 bits				(Offset 0x4B4-4B6, 24 bits)
//----------------------------------------------------------------------------
#define		PWR_STAGE1_SHIFT		0	// User define Power Stage1.
#define		PWR_STAGE1_Mask		0x0FFFFFF

//----------------------------------------------------------------------------
//       8192C POWER_STAGE2 bits				(Offset 0x4B8-4BA, 24 bits)
//----------------------------------------------------------------------------
#define		PWR_STAGE2_SHIFT		0	// User define Power Stage2.
#define		PWR_STAGE2_Mask		0x0FFFFFF

//----------------------------------------------------------------------------
//       8192C STBC_SETTING bits				(Offset 0x4C4, 8 bits)
//----------------------------------------------------------------------------
#define		NESS_SHIFT			2	//
#define		NESS_Mask			0x03
#define		STBC_CFEND_SHIFT	0	// CFEND STBC.
#define		STBC_CFEND_Mask	0x03

//----------------------------------------------------------------------------
//       8192C PROT_MODE_CTRL bits				(Offset 0x4C8-4C9, 16 bits)
//----------------------------------------------------------------------------
#define		RTS_TXTIME_TH_SHIFT	8	// RTS pkt txtime thrs
#define		RTS_TXTIME_TH_Mask	0x0FF
#define		RTS_LEN_TH_SHIFT		0	// RTS Length thrs.
#define		RTS_LEN_TH_Mask		0x0FF

//----------------------------------------------------------------------------
//       8192C BAR_MODE_CTRL bits				(Offset 0x4CC-4CE, 24 bits)
//----------------------------------------------------------------------------
#define		BAR_RTY_LMT_SHIFT			16	// BAR retry limit.
#define		BAR_RTY_LMT_Mask			0x03
#define		BAR_PKT_TXTIME_TH_SHIFT	8	// BAR pkt txtime thrs.
#define		BAR_PKT_TXTIME_TH_Mask	0x0FF
#define		BAR_PKTNUM_TH_SHIFT		0	// BAR Pktnum Thrs.
#define		BAR_PKTNUM_TH_Mask		0x0FF

//----------------------------------------------------------------------------
//       8192C RA_TRY_RATE_AGG_LMT bits			(Offset 0x4CF, 8 bits)
//----------------------------------------------------------------------------
#define		RA_BAR_RTY_LMT_SHIFT				5	// BAR retry limit.
#define		RA_BAR_RTY_LMT_Mask				0x07
#define		RA_TRY_RATE_AGG_LMT_NUM_SHIFT	0	// aggr pkt num limit for try up rate of when desc try bit=1.
#define		RA_TRY_RATE_AGG_LMT_NUM_Mask	0x01F

//----------------------------------------------------------------------------
//       8192C NQOS_SEQ bits					(Offset 0x4DC-4DD, 16 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C QOS_SEQ bits						(Offset 0x4DE-4DF, 16 bits)
//----------------------------------------------------------------------------
#define		N_QOS_SSN_SHIFT	0	// TXDESC HWSEQEN is set, MAC will overwrite SEQ control by this.
									// TXDESC HWSEQEN is set and QoS field is also set,
									// MAC will overwrite SEQ control by this.
#define		N_QOS_SSN_Mask	0x0FFF

//----------------------------------------------------------------------------
//       8192C NEED_CPU_HANDLE bits				(Offset 0x4E0, 8 bits)
//----------------------------------------------------------------------------
#define		NEED_CPU_HANDLE_Q_SHIFT	0	// 1:HW prepare ok, this q need cpu handle & poll.
#define		NEED_CPU_HANDLE_Q_Mask	0x03F

//----------------------------------------------------------------------------
//       8192C PTCL_ERR_STATUS bits				(Offset 0x4E1, 8 bits)
//----------------------------------------------------------------------------
#define		PTCL_TL_PG_OVF			BIT(7)	// Protocol Total Page out of range.
#define		TXHANG_ERR				BIT(5)	// TX time is greater than 32ms.
#define		HW_RD_NULL_STATUS_ERR	BIT(4)	// HW read null page counter error.
#define		HW_RD_NULL_CTN_ERR		BIT(3)	// HW Contention read null page counter error.
#define		HW_RD_NULL_CNT_ERR		BIT(2)	// HW read null page counter error.
#define		PTCL_TL_PG_ERR				BIT(1)	// Protocol Total page number error.
#define		DESC_QSEL_ERR				BIT(0)	// TXDESC QSEL field mismatch error.

//----------------------------------------------------------------------------
//       8192C PKT_LOSE_RPT bits					(Offset 0x4E2, 8 bits)
//----------------------------------------------------------------------------
#define		PKT_LOSE_BK		BIT(3)	// 1:queue happen pkt lose, 0:no lose.
#define		PKT_LOSE_BE		BIT(2)	// 1:queue happen pkt lose, 0:no lose.
#define		PKT_LOSE_VI		BIT(1)	// 1:queue happen pkt lose, 0:no lose.
#define		PKT_LOSE_VO		BIT(0)	// 1:queue happen pkt lose, 0:no lose.


//----------------------------------------------------------------------------
//       8192C EDCA_VO_PARA bits				(Offset 0x500-503, 32 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C EDCA_VI_PARA bits				(Offset 0x504-507, 32 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C EDCA_BE_PARA bits				(Offset 0x508-50B, 32 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C EDCA_BK_PARA bits				(Offset 0x50C-50F, 32 bits)
//----------------------------------------------------------------------------
#define		TXOP_SHIFT			16	// TXOP Limit.
#define		TXOP_Mask			0x0FFFF
#define		CW_SHIFT			8	// ECWmax/ECWmin
#define		CW_Mask			0x0FF
#define		AIFS_SHIFT			0	// Arbitrary Inter frame space.
#define		AIFS_Mask			0x0FF

//----------------------------------------------------------------------------
//       8192C BCNTCFG bits						(Offset 0x510-511, 16 bits)
//----------------------------------------------------------------------------
#define		BCNECW_SHIFT		8	// Beacon Contention Window.
#define		BCNECW_Mask		0x0F
#define		BCNIFS_SHIFT		0	// Beacon Interframe Space.
#define		BCNIFS_Mask		0x0FF

//----------------------------------------------------------------------------
//       8192C SIFS_CCK bits						(Offset 0x514-515, 16 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C SIFS_OFDM bits					(Offset 0x516-517, 16 bits)
//----------------------------------------------------------------------------
#define		SIFS_TRX_SHIFT		8	// SIFS time required for any immediate response.
#define		SIFS_TRX_Mask		0x0FF
#define		SIFS_CTX_SHIFT		0	// SIFS time required for consecutive TX events.
#define		SIFS_CTX_Mask		0x0FF

//----------------------------------------------------------------------------
//       8192C TX_PTCL_CTRL bits					(Offset 0x520-521, 16 bits)
//----------------------------------------------------------------------------
#define		DIS_CCA				BIT(15)	// bit=1, disable CCA.
#define		SIFS_BK_EN				BIT(12)	// SIFS Break Check Criteria enable for AMPDU aggregation.
#define		TXQ_NAV_MSK_SHIFT	8	// 1:Queue BKF must wait TX Nav finished, 0:Queue not need wait.
#define		TXQ_NAV_MSK_Mask		0x0F
#define		DIS_CW					BIT(7)	// bit=1, disable CW.
#define		RDG_END_TXOP			BIT(6)	// 1:Nav protect all txop, 0:Nav protect to next pkt.
#define		NAV_END_TXOP			BIT(5)	// 1:Nav protect all txop, 0:Nav protect to next pkt.
#define		AC_INBCN_HOLD			BIT(4)	// bit=1, HI queue will be sent first, and then AC queue will be sent.
#define		MGTQ_TXOP_EN			BIT(3)	// bit=1, MGTQ may sent packets by using ACQ TXOP.
#define		MGTQ_RTSMF_HOLD		BIT(2)	// bit=1, MGTQ will be hold until RTS or MF transaction finished.
#define		HIQ_RTSMF_HOLD		BIT(1)	// bit=1, HIQ will be hold until RTS or MF transaction finished.
#define		BCN_RTSMF_HOLD		BIT(0)	// bit=1, BCNQ will be hold until RTS or MF transaction finished.

//----------------------------------------------------------------------------
//       8192C TXPAUSE bits						(Offset 0x522, 8 bits)
//----------------------------------------------------------------------------
#define		STOP_BCN			BIT(6)	// Stop BCNQ Queue.
#define		STOP_HI			BIT(5)	// Stop High Queue.
#define		STOP_MGT			BIT(4)	// Stop Management Queue.
#define		STOP_VO			BIT(3)	// Stop VO Queue.
#define		STOP_VI				BIT(2)	// Stop VI Queue.
#define		STOP_BE			BIT(1)	// Stop BE Queue.
#define		STOP_BK			BIT(0)	// Stop BK Queue.

//----------------------------------------------------------------------------
//       8192C DIS_TXREQ_CLR bits				(Offset 0x523, 8 bits)
//----------------------------------------------------------------------------
#define		DIS_TXREQ_CLR_BCN		BIT(7)	// 1:if queue can't own channel ,txcmd will be cleared;0:Only TX_finish can clear txreq.
#define		DIS_TXREQ_CLR_HI		BIT(5)	// 1:if queue can't own channel ,txcmd will be cleared;0:Only TX_finish can clear txreq.
#define		DIS_TXREQ_CLR_MGQ		BIT(4)	// 1:if queue can't own channel ,txcmd will be cleared;0:Only TX_finish can clear txreq.
#define		DIS_TXREQ_CLR_VO		BIT(3)	// 1:if queue can't own channel ,txcmd will be cleared;0:Only TX_finish can clear txreq.
#define		DIS_TXREQ_CLR_VI		BIT(2)	// 1:if queue can't own channel ,txcmd will be cleared;0:Only TX_finish can clear txreq.
#define		DIS_TXREQ_CLR_BE		BIT(1)	// 1:if queue can't own channel ,txcmd will be cleared;0:Only TX_finish can clear txreq.
#define		DIS_TXREQ_CLR_BK		BIT(0)	// 1:if queue can't own channel ,txcmd will be cleared;0:Only TX_finish can clear txreq.

//----------------------------------------------------------------------------
//       8192C RD_CTRL bits						(Offset 0x524-525, 16 bits)
//----------------------------------------------------------------------------
#define		HIQ_NO_LMT_EN			BIT(12)
#define		EDCCA_MSK_CNTDWN		BIT(11)	// 1: disable, 0: enable,  EDCCA count down.
#define		DIS_TXOP_CFE			BIT(10)	// Disable TXOP_CFE function.
#define		DIS_LSIG_CFE			BIT(9)	// Disable LSIG_TXOP CF-END function.
#define		DIS_STBC_CFE			BIT(8)	// Disable STBC CF-END function.
#define		BKQ_RD_INIT_EN		BIT(7)	//
#define		BEQ_RD_INIT_EN		BIT(6)	//
#define		VIQ_RD_INIT_EN			BIT(5)	//
#define		VOQ_RD_INIT_EN		BIT(4)	//
#define		BKQ_RD_RESP_EN		BIT(3)	//
#define		BEQ_RD_RESP_EN		BIT(2)	//
#define		VIQ_RD_RESP_EN		BIT(1)	//
#define		VOQ_RD_RESP_EN		BIT(0)	//

//----------------------------------------------------------------------------
//       8192C TBTT_PROHIBIT bits				(Offset 0x540-541, 16 bits)
//----------------------------------------------------------------------------
#define		TBTT_HOLD_TIME_SHIFT			8	// TBTT_prohibit_hold, unit is 32 us.
#define		TBTT_HOLD_TIME_Mask			0xFFFFFF
#define		TBTT_PROHIBIT_SETUP_SHIFT	0	// TBTT_prohibit_setup, unit is 32us.
#define		TBTT_PROHIBIT_SETUP_Mask		0x0F

//----------------------------------------------------------------------------
//       8192C BCN_CTRL bits					(Offset 0x550, 8 bits)
//----------------------------------------------------------------------------

#define 	DIS_SUB_STATE		BIT(4)
#define 	DIS_SUB_STATE_N		BIT(1)
#define 	DIS_TSF_UPDATE		BIT(5)
#define 	DIS_TSF_UPDATE_N	BIT(4)
#define 	DIS_ATIM			BIT(0)


#define		BCN0_AUTO_SYNC	BIT(5)	// When this bit is set, TSFTR will update the timestamp in Beacon matched BSSID.
#define		DIS_TSF_UPT		BIT(4)	// 92D_REG, When this bit is set, tsf will not update
#define		EN_BCN_FUNCTION	BIT(3)	// bit=1, TSF and other beacon related functions are then enabled.
#define		EN_TXBCN_RPT		BIT(2)	//
#define		EN_MBSSID			BIT(1)	//
#define		PBCNQSEL			BIT(0)	//

//----------------------------------------------------------------------------
//       8192C USTIME_TSF bits					(Offset 0x551, 8 bits)
//----------------------------------------------------------------------------
#define		USTIME_TSF_TIME_SHIFT	0	// Set the microsecond time unit used by MAC TSF clock.
#define		USTIME_TSF_TIME_Mask		0x03F

//----------------------------------------------------------------------------
//       8192C MBID_NUM bits					(Offset 0x552, 8 bits)
//----------------------------------------------------------------------------
#define		MBID_BCN_NUM_SHIFT	0	// num of virtual interface num excluding the root.
#define		MBID_BCN_NUM_Mask	0x07

//----------------------------------------------------------------------------
//       8192C MBSSID_BCN_SPACE bits			(Offset 0x554-557, 32 bits)
//----------------------------------------------------------------------------
#define		BCN_SPACE2_SHIFT	16	//
#define		BCN_SPACE2_Mask	0x0FFFF
#define		BCN_SPACE1_SHIFT	0	//
#define		BCN_SPACE1_Mask	0x0FFFF

//----------------------------------------------------------------------------
//       8192C ACMHWCTRL bits					(Offset 0x5C0, 8 bits)
//----------------------------------------------------------------------------
#define		VOQ_ACM_STATUS	BIT(6)	// indicates if the used_time >= admitted_time of AC VO when HW ACM.
#define		VIQ_ACM_STATUS	BIT(5)	// indicates if the used_time >= admitted_time of AC VI when HW ACM.
#define		BEQ_ACM_STATUS	BIT(4)	// indicates if the used_time >= admitted_time of AC BE when HW ACM.
#define		VOQ_ACM_EN		BIT(3)	// enable ACM of VO queue.
#define		VIQ_ACM_EN			BIT(2)	// enable ACM of VI queue.
#define		BEQ_ACM_EN		BIT(1)	// enable ACM of BE queue.
#define		ACMHWEN			BIT(0)	// enable hardware to take control of ACM.

//----------------------------------------------------------------------------
//       8192C ACMRSTCTRL bits					(Offset 0x5C1, 8 bits)
//----------------------------------------------------------------------------
#define		VO_ACM_RST_USED_TIME		BIT(2)	// HwEn enabled, sw set this to inform hw to reset used_time.
#define		BE_ACM_RST_USED_TIME		BIT(1)	// HwEn enabled, sw set this to inform hw to reset used_time.
#define		VI_ACM_RST_USED_TIME		BIT(0)	// HwEn enabled, sw set this to inform hw to reset used_time.


//
// 6. WMAC Configuration. (Offset 0x600 - 0x7FFh)
//
//----------------------------------------------------------------------------
//       8192C APSD_CTRL bits					(Offset 0x600, 8 bits)
//----------------------------------------------------------------------------
#define		APSDOFF_STATUS	BIT(7)	//
#define		APSDOFF			BIT(6)	// bit=1, MAC issue sleep signal to disable BB/AFE/RF TRX function.

//----------------------------------------------------------------------------
//       8192C BWOPMODE bits					(Offset 0x603, 8 bits)
//----------------------------------------------------------------------------
#define		BW_20M				BIT(2)	// bit=1 indicate operating in 20Mhz bandwidth.

//----------------------------------------------------------------------------
//       8192C TCR bits							(Offset 0x604-607, 32 bits)
//----------------------------------------------------------------------------
#define		TSFT_CMP_SHIFT	16		// TSFT insertion compensation value.
#define		TSFT_CMP_Mask		0x0FF
#define		WMAC_TCR_ERRSTEN3		BIT(15)	// 92D_REG, Use phytxend_ps to reset mactx state machine
#define		WMAC_TCR_ERRSTEN2		BIT(14)	// 92D_REG, If txd fifo underflow when txtype is cmpba, reset mactx state machine
#define		WMAC_TCR_ERRSTEN1		BIT(13)	// 92D_REG, If txd fifo underflow, reset mactx state machine
#define		WMAC_TCR_ERRSTEN0		BIT(12)	// 92D_REG, Phytxend_ps comes but mactx still active, reset mactx state machine
#define		WMAC_TCR_TXSK_PERPKT		BIT(11)	// 92D_REG, Serche key for each mpdu
#define		ICV					BIT(10)	// Integrity Check Value.
#define		CFE_FORM			BIT(9)	// CF-End Frame Format.
#define		CRC					BIT(8)	// Append 32-bit Cyclic Redundancy Check.
#define		PWRBIT_OW_EN		BIT(7)	// bit=1, MAC overwrite pwr bit according to PWR_ST for data frame.
#define		PWR_ST				BIT(6)	// MAC will overwrite pwr bit accroding to PWR_ST for data frame.
#define		PAD_SEL			BIT(2)	// AMPDU Padding pattern selection.
#define		DIS_GCLK			BIT(1)	// Disable MACTX clock gating control.
#define		TSFRST				BIT(0)	// Reset TSF Timer to zero.

//----------------------------------------------------------------------------
//       8192C RCR bits							(Offset 0x608-60B, 32 bits)
//----------------------------------------------------------------------------
#define		RCR_APP_FCS		BIT(31)	// wmac RX will append FCS after payload.
#define		RCR_APP_MIC		BIT(30)	// bit=1, MACRX will retain the MIC at the bottom of the packet.
#define		RCR_APP_ICV		BIT(29)	// bit=1, MACRX will retain the ICV at the bottom of the packet.
#define		RCR_APP_PHYSTS	BIT(28)	// Append RXFF0 PHY Status Enable.
#define		RCR_APP_BASSN		BIT(27)	// Append SSN of previous TXBA Enable.
#define		RCR_MBID_EN		BIT(24)	// Enable Multiple BssId.
#define		RCR_LSIGEN			BIT(23)	// Enable LSIG TXOP Protection function.
#define		RCR_MFBEN			BIT(22)	// Enable immediate MCS Feedback function.
#define		RCR_BM_DATA_EN	BIT(17)	// BM_DATA_EN.
#define		RCR_UC_DATA_EN	BIT(16)	// Unicast data packet interrupt enable.
#define		RCR_HTC_LOC_CTRL	BIT(14)	// 1: HTC -> MFC, 0: MFC-> HTC.
#define		RCR_AMF			BIT(13)	// Accept Management Frame.
#define		RCR_ACF			BIT(12)	// Accept Control Frame.
#define		RCR_ADF			BIT(11)	// Accept Data Frame.
#define		RCR_AICV			BIT(9)	// Accept Integrity Check Value Error packets.
#define		RCR_ACRC32			BIT(8)	// Accept CRC32 Error packets.

#define		RCR_CBSSID_ADHOC		(BIT(6)|BIT(7))	// Check BSSID.
#define		RCR_CBSSID			BIT(6)	// Check BSSID.
#define		RCR_APWRMGT		BIT(5)	// Accept Power Management Packet.
#define		RCR_ADD3			BIT(4)	// Accept Address 3 Match Packets.
#define		RCR_AB				BIT(3)	// Accept Broadcast packets.
#define		RCR_AM				BIT(2)	// Accept Multicast packets.
#define		RCR_APM			BIT(1)	// Accept Physical Match packets.
#define		RCR_AAP			BIT(0)	// Accept Destination Address packets.

//----------------------------------------------------------------------------
//       8192C RX_PKT_LIMIT bits					(Offset 0x60C, 8 bits)
//----------------------------------------------------------------------------
#define		RXPKTLMT_SHIFT	0	// RX PKT Upper Limit.
#define		RXPKTLMT_Mask		0x03F

// 		MACID Setting Register. (Offset 0x610 - 0x62Fh)
//----------------------------------------------------------------------------
//       8192C MBIDCAMCFG bits					(Offset 0x628-62F, 64 bits)
//----------------------------------------------------------------------------
#define		MBIDCAM_POLL		BIT(31)	// Pooling bit.
#define		MBIDWRITE_EN		BIT(30)	// Write Enable.
#define		MBIDCAM_ADDR_SHIFT	24	// CAM Address.
#define		MBIDCAM_ADDR_Mask	0x01F
#define		MBIDCAM_VALID		BIT(23)	// CAM Valid bit.

// 		MACID Setting Register. (Offset 0x610 - 0x62Fh)

// 		Timing Control Register. (Offset 0x630 - 0x64Fh)
//----------------------------------------------------------------------------
//       8192C SPEC_SIFS bits					(Offset 0x63A-63B, 16 bits)
//----------------------------------------------------------------------------
#define		SPEC_SIFS_OFDM_SHIFT	8	// SIFS value for duration calculation.
#define		SPEC_SIFS_OFDM_Mask	0x0FF
#define		SPEC_SIFS_CCK_SHIFT	0	// SIFS value for duration calculation.
#define		SPEC_SIFS_CCK_Mask	0x0FF

//----------------------------------------------------------------------------
//       8192C RESP_SIFS_CCK bits				(Offset 0x63C-63D, 16 bits)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//       8192C RESP_SIFS_OFDM bits				(Offset 0x63E-63F, 16 bits)
//----------------------------------------------------------------------------
#define		SIFS_R2T_SHIFT		8	// SIFS time required for any immediate response.
#define		SIFS_R2T_Mask		0x0FF
#define		SIFS_T2T_SHIFT		0	// SIFS time required for consecutive TX events.
#define		SIFS_T2T_Mask		0x0FF

// 		Timing Control Register. (Offset 0x630 - 0x64Fh)

// 		WMAC, BA, CCX Related Register. (Offset 0x650 - 0x66Fh)
//----------------------------------------------------------------------------
//       8192C NAV_CTRL bits					(Offset 0x650-651, 16 bits)
//----------------------------------------------------------------------------
#define		NAV_UPPER_SHIFT	8	// When NAV update is beyond this, then update is aborted.
#define		NAV_UPPER_Mask	0x0FF
#define		RTSRST_SHIFT		0	// RTS NAV Reset Time.
#define		RTSRST_Mask		0x0FF

//----------------------------------------------------------------------------
//       8192C BACAMCMD bits					(Offset 0x654-657, 32 bits)
//----------------------------------------------------------------------------
#define		BACAM_POLL			BIT(31)	// Polling bit BA CAM.
#define		BACAM_RST			BIT(17)	// 1 to reset BA CAM. HW set invalid bit for all entries.
#define		BACAM_RW			BIT(16)	// 1=Write, 0=Read.
#define		BACAM_ADDR_SHIFT	0	// BA CAM address. Memory is double-word access.
#define		BACAM_ADDR_Mask	0x03F

//----------------------------------------------------------------------------
//       8192C LBDLY bits						(Offset 0x660, 8 bits)
//----------------------------------------------------------------------------
#define		LBDLY_LMT_SHIFT	0	// Loopback Delay.
#define		LBDLY_LMT_Mask	0x01F

//----------------------------------------------------------------------------
//       8192C FWDLY bits						(Offset 0x661, 8 bits)
//----------------------------------------------------------------------------
#define		FWDLY_LMT_SHIFT	0	// Firmware Delay.
#define		FWDLY_LMT_Mask	0x0F

//----------------------------------------------------------------------------
//       8192C RXERR_RPT bits					(Offset 0x664-667, 32 bits)
//----------------------------------------------------------------------------
#define		RXERR_RPT_SEL_SHIFT	28	//
#define		RXERR_RPT_SEL_Mask	0x0F
#define		RXERR_RPT_RST			BIT(27)	// Write "one" to set the counter to zero.
#define		RPT_COUNTER_SHIFT		0	// reported value corresponding to Report type selected.
#define		RPT_COUNTER_Mask		0x0FFFFF

//----------------------------------------------------------------------------
//       8192C WMAC_TRXPTCL_CTL bits			(Offset 0x668-66F, 64 bits)
//----------------------------------------------------------------------------
#define		ACKBA_TYPSEL_SHIFT		28	// Determine response type for RX BA.
#define		ACKBA_TYPSEL_Mask			0x0F
#define		ACKBA_ACKPCHK_SHIFT		24	//
#define		ACKBA_ACKPCHK_Mask		0x0F
#define		ACKBAR_ACKPCHK_SHIFT		12	//
#define		ACKBAR_ACKPCHK_Mask		0x0F
#define		DIS_TXBA_AMPDUFCSERR		BIT(4)	// Disable to send BA for responding RX AMPDU with FCS error subframe.
#define		DIS_TXBA_RXBARINFULL		BIT(3)	// Disable send BA for responding RX control wrapper BAR dropped by rxpkbuffer full.
#define		DIS_TXCFE_INFULL			BIT(2)	// Disable send CFE for responding RX control wrapper CFE dropped by rxpktbuffer full.
#define		DIS_TXCTS_INFULL			BIT(1)	// Disable send CTS for responding RX control wrapper RTS dropped by rxpktbuffer full.
#define		EN_TXCTS_INTXOP			BIT(0)	// Enable send CTS for responding RX RTS during our TXOP period.

#define		RESP_CHNBUSY_SHIFT		20	// Define channel busy condition in responder to determine RX busy.
#define		RESP_CHNBUSY_Mask		0x03
#define		RESP_DCTS_EN				BIT(19)	// Enable responder send dual CTS for responding Rx RTS.
#define		RESP_DCFE_EN				BIT(18)	// Enable responder send dual CF-END for responding RX CF-END.
#define		RESP_SPLCPEN				BIT(17)	// Enable responder send SPLCP CCK rsp for acknowledging Rx SPLCP CCK.
#define		RESP_SGIEN					BIT(16)	// Enable responder send SGI HT-OFDM rsp for acknowledging Rx SGI HT-OFDM pkt.

// 		WMAC, BA, CCX Related Register. (Offset 0x650 - 0x66Fh)

// 		Security Control Register. (Offset 0x670 - 0x68Fh)
//----------------------------------------------------------------------------
//       8192C CAMCMD bits						(Offset 0x670-673, 32 bits)
//----------------------------------------------------------------------------
#define		SECCAM_POLL			BIT(31)	// Security CAM Polling.
#define		SECCAM_CLR				BIT(30)	// Set 1 to clear all valid bits in CAM.
#define		MFBCAM_CLR			BIT(29)	// Write 1 to clear all MFB value in CAM.
#define		SECCAM_WE				BIT(16)	// Security CAM Write Enable.
#define		SECCAM_ADDR_SHIFT	0	// Security CAM Address Offset.
#define		SECCAM_ADDR_Mask		0x0FF

//----------------------------------------------------------------------------
//       8192C CAMDBG bits						(Offset 0x67C-67F, 32 bits)
//----------------------------------------------------------------------------
#define		SECCAM_INFO				BIT(31)	// Select TX/RX CAM Information.
#define		SEC_KEYFOUND				BIT(30)	// Security Key Found in CAM.
#define		SEC_CONFIG_SHIFT			24	// Security Configuration.
#define		SEC_CONFIG_Mask			0x03F
#define		SEC_KEYCONTENT_SHIFT		0	// Security CAM Address Offset.
#define		SEC_KEYCONTENT_Mask		0x0FFFFFF

//----------------------------------------------------------------------------
//       8192C SECCFG bits						(Offset 0x680, 8 bits)
//----------------------------------------------------------------------------
#define		CHK_KEYID			BIT(8)	// Key search engine need to check if key ID matched
#define		RXBCUSEDK			BIT(7)	// Force RX Broadcast packets Use Default Key
#define		TXBCUSEDK			BIT(6)	// Force Tx Broadcast packets Use Default Key
#define		NOSKMC				BIT(5)	// No Key Search for Multicast.
#define		SKBYA2				BIT(4)	// Search Key by A2.
#define		RXDEC				BIT(3)	// Enable Rx Decryption.
#define		TXENC				BIT(2)	// Enable Tx Encryption.
#define		RXUSEDK			BIT(1)	// Force Rx Use Default Key.
#define		TXUSEDK			BIT(0)	// Force Tx Use Default Key.

// 		Security Control Register. (Offset 0x670 - 0x68Fh)

// 		Power Save Control Register. (Offset 0x690 - 0x69Fh)
//----------------------------------------------------------------------------
//       8192C WOW_CTRL bits					(Offset 0x690, 8 bits)
//----------------------------------------------------------------------------
#define		FORCE_WAKEUP		BIT(7)	// Let Wakeup PIN be controllable by FW/Driver.
#define		UWF				BIT(3)	// Unicast Wakeup Frame.
#define		MAGIC				BIT(2)	// Magic Packet.
#define		WOWEN				BIT(1)	// WoW function on or off.
#define		PMEN				BIT(0)	// Power Management Enable.

//----------------------------------------------------------------------------
//       8192C PSSTATUS bits					(Offset 0x691, 8 bits)
//----------------------------------------------------------------------------
#define		PSSTATUS_SEL_SHIFT	0	// Indicate the present power save mode.
#define		PSSTATUS_SEL_Mask		0x0F

//----------------------------------------------------------------------------
//       8192C PS_RX_INFO bits					(Offset 0x692, 8 bits)
//----------------------------------------------------------------------------
#define		RXCTRLIN0			BIT(4)	// set to 1 if NIC received control frame with correct BSSID and DA.
#define		RXMGTIN0			BIT(3)	// set to 1 if NIC received management frame with correct BSSID and DA.
#define		RXDATAIN2			BIT(2)	// set to 1 if NIC received data frame with correct BSSID and DA.
#define		RXDATAIN1			BIT(1)	// set to 1 if NIC received data frame with correct BSSID and DA.
#define		RXDATAIN0			BIT(0)	// set to 1 if NIC received data frame with correct BSSID and DA.

//----------------------------------------------------------------------------
//       8192C LPNAV_CTRL bits					(Offset 0x694-697, 32 bits)
//----------------------------------------------------------------------------
#define		LPNAV_EN				BIT(31)	// Low Power NAV Mode Enable.
#define		LPNAV_EARLY_SHIFT		16	// in LPNAV mode, MAC will recall BB & RF into RX idle mode.
#define		LPNAV_EARLY_Mask		0x07FFF
#define		LPNAV_TH_SHIFT		0	// When NAV received is greater than this, then MAC enters LPNAV mode.
#define		LPNAV_TH_Mask			0x0FFFF

//----------------------------------------------------------------------------
//       8192C WKFMCAM_CMD bits				(Offset 0x698-69B, 32 bits)
//----------------------------------------------------------------------------
#define		WKFCAM_POLL			BIT(31)	// Wakeup Mask CAM Polling.
#define		WKFCAM_CLR			BIT(30)	// Set to one to clear all valid bits in CAM. After reset will self clear to 0.
#define		WKFCAM_WE				BIT(16)	// Wakeup Mask CAM Write Enable.
#define		WKFCAM_ADDR_SHIFT	0	// Wakeup Mask CAM Address Offset.
#define		WKFCAM_ADDR_Mask		0x03F

// 		Power Save Control Register. (Offset 0x690 - 0x69Fh)

// 		General Purpose Register. (Offset 0x6A0 - 0x6AFh)
//----------------------------------------------------------------------------
//       8192C RXFLTMAP0 bits					(Offset 0x6A0-6A1, 16 bits)
//----------------------------------------------------------------------------
#define		MGTFLTD_EN		BIT(13)	//
#define		MGTFLTC_EN			BIT(12)	//
#define		MGTFLTB_EN			BIT(11)	//
#define		MGTFLTA_EN		BIT(10)	//
#define		MGTFLT9_EN			BIT(9)	//
#define		MGTFLT8_EN			BIT(8)	//
#define		MGTFLT5_EN			BIT(5)	//
#define		MGTFLT4_EN			BIT(4)	//
#define		MGTFLT3_EN			BIT(3)	//
#define		MGTFLT2_EN			BIT(2)	//
#define		MGTFLT1_EN			BIT(1)	//
#define		MGTFLT0_EN			BIT(0)	//

//----------------------------------------------------------------------------
//       8192C RXFLTMAP1 bits					(Offset 0x6A2-6A3, 16 bits)
//----------------------------------------------------------------------------
#define		CTRLFLTF_EN		BIT(15)	//
#define		CTRLFLTE_EN		BIT(14)	//
#define		CTRLFLTD_EN		BIT(13)	//
#define		CTRLFLTC_EN		BIT(12)	//
#define		CTRLFLTB_EN		BIT(11)	//
#define		CTRLFLTA_EN		BIT(10)	//
#define		CTRLFLT9_EN		BIT(9)	//
#define		CTRLFLT8_EN		BIT(8)	//
#define		CTRLFLT7_EN		BIT(7)	//
#define		CTRLFLT6_EN		BIT(6)	//

//----------------------------------------------------------------------------
//       8192C RXFLTMAP2 bits					(Offset 0x6A4-6A5, 16 bits)
//----------------------------------------------------------------------------
#define		DATAFLTF_EN		BIT(15)	//
#define		DATAFLTE_EN		BIT(14)	//
#define		DATAFLTD_EN		BIT(13)	//
#define		DATAFLTC_EN		BIT(12)	//
#define		DATAFLTB_EN		BIT(11)	//
#define		DATAFLTA_EN		BIT(10)	//
#define		DATAFLT9_EN		BIT(9)	//
#define		DATAFLT8_EN		BIT(8)	//
#define		DATAFLT7_EN		BIT(7)	//
#define		DATAFLT6_EN		BIT(6)	//
#define		DATAFLT5_EN		BIT(5)	//
#define		DATAFLT4_EN		BIT(4)	//
#define		DATAFLT3_EN		BIT(3)	//
#define		DATAFLT2_EN		BIT(2)	//
#define		DATAFLT1_EN		BIT(1)	//
#define		DATAFLT0_EN		BIT(0)	//

//----------------------------------------------------------------------------
//       8192C BCN_PSR_RPT bits					(Offset 0x6A8-6AB, 32 bits)
//----------------------------------------------------------------------------
#define		DTIM_CNT_SHIFT	24	//
#define		DTIM_CNT_Mask		0x0FF
#define		DTIM_PERIOD_SHIFT	16	//
#define		DTIM_PERIOD_Mask	0x0FF
#define		DTIM				BIT(15)	//
#define		TIM					BIT(14)	//
#define		PS_AID_SHIFT		0	//
#define		PS_AID_Mask		0x07FF

//----------------------------------------------------------------------------
//       8192C CALB32K_CTRL bits				(Offset 0x6AC-6AF, 32 bits)
//----------------------------------------------------------------------------
#define		CALB32K_POLL		BIT(31)	//
#define		CALB32K_DONE		BIT(30)	//
#define		CAL_TIME_SHIFT		20	// Calibration time.
#define		CAL_TIME_Mask		0x03FF
#define		CAL_REPORT_SHIFT	0	//
#define		CAL_REPORT_Mask	0x0FFFFF

// 		General Purpose Register. (Offset 0x6A0 - 0x6AFh)

//----------------------------------------------------------------------------
//       8192C BT_COEX_TABLE bits				(Offset 0x6C0-6CF, 128 bits)
//----------------------------------------------------------------------------
#define		PRI_MASK_RX_RSP			BIT(30)	// Priority Mask for Rx Response Packet.
#define		PRI_MASK_RX_OFDM			BIT(29)	// Priority Mask for Rx OFDM.
#define		PRI_MASK_RX_CCK			BIT(28)	// Priority Mask for Rx CCK.
#define		PRI_MASK_TX_Q_SHIFT		21	// Priority Mask for Tx Queue.
#define		PRI_MASK_TX_Q_Mask		0x07F
#define		PRI_MASK_TX_NAV_SHIFT	13	// Priority Mask for Tx NAV.
#define		PRI_MASK_TX_NAV_Mask		0x0FF
#define		PRI_MASK_TX_CCK			BIT(12)	// Priority Mask for Tx CCK.
#define		PRI_MASK_TX_OFDM			BIT(11)	// Priority Mask for Tx OFDM.
#define		PRI_MASK_TX_RTY			BIT(10)	// Priority Mask for Tx Retry packet.
#define		PRI_MASK_TX_NUM_SHIFT	6	// Priority Mask for Tx packet num.
#define		PRI_MASK_TX_NUM_Mask		0x0F
#define		PRI_MASK_TX_TYPE_SHIFT	2	// Priority Mask for Tx packet type.
#define		PRI_MASK_TX_TYPE_Mask	0x0F
#define		C_OOB						BIT(1)	// out of band indication (0:in band,1:out of band).
#define		ANT_SEL					BIT(0)	// single or dual antenna selection (0:single,1:dual).

#define		BREAK_TABLE2_SHIFT		16	// Table used to break WLAN activity.
#define		BREAK_TABLE2_Mask			0x0FFFF
#define		BREAK_TABLE1_SHIFT		0	// Table used to break BT activity.
#define		BREAK_TABLE1_Mask			0x0FFFF

//----------------------------------------------------------------------------
//       8192C WMAC_RESP_TXINFO bits			(Offset 0x6D8-6DA, 24 bits)
//----------------------------------------------------------------------------
#define		RESP_TXAGC_B_SHIFT	13	//
#define		RESP_TXAGC_B_Mask		0x01F
#define		RESP_TXAGC_A_SHIFT	8	//
#define		RESP_TXAGC_A_Mask	0x01F
#define		RESP_ANTSEL_B			BIT(7)	//
#define		RESP_ANTSEL_A			BIT(6)	//
#define		RESP_TXANT_CCK_SHIFT	4	//
#define		RESP_TXANT_CCK_Mask	0x03
#define		RESP_TXANT_L_SHIFT	2	//
#define		RESP_TXANT_L_Mask		0x03
#define		RESP_TXANT_HT_SHIFT	0	//
#define		RESP_TXANT_HT_Mask	0x03

/*
//----------------------------------------------------------------------------
//       8192C Rate Definition
//----------------------------------------------------------------------------
//CCK
#define		RATR_1M				0x00000001
#define		RATR_2M				0x00000002
#define		RATR_55M				0x00000004
#define		RATR_11M				0x00000008
//OFDM
#define		RATR_6M				0x00000010
#define		RATR_9M				0x00000020
#define		RATR_12M				0x00000040
#define		RATR_18M				0x00000080
#define		RATR_24M				0x00000100
#define		RATR_36M				0x00000200
#define		RATR_48M				0x00000400
#define		RATR_54M				0x00000800
//MCS 1 Spatial Stream
#define		RATR_MCS0				0x00001000
#define		RATR_MCS1				0x00002000
#define		RATR_MCS2				0x00004000
#define		RATR_MCS3				0x00008000
#define		RATR_MCS4				0x00010000
#define		RATR_MCS5				0x00020000
#define		RATR_MCS6				0x00040000
#define		RATR_MCS7				0x00080000
//MCS 2 Spatial Stream
#define		RATR_MCS8				0x00100000
#define		RATR_MCS9				0x00200000
#define		RATR_MCS10				0x00400000
#define		RATR_MCS11				0x00800000
#define		RATR_MCS12				0x01000000
#define		RATR_MCS13				0x02000000
#define		RATR_MCS14				0x04000000
#define		RATR_MCS15				0x08000000
// ALL CCK Rate
#define	RATE_ALL_CCK				RATR_1M|RATR_2M|RATR_55M|RATR_11M
#define	RATE_ALL_OFDM_AG			RATR_6M|RATR_9M|RATR_12M|RATR_18M|RATR_24M|\
									RATR_36M|RATR_48M|RATR_54M
#define	RATE_ALL_OFDM_1SS			RATR_MCS0|RATR_MCS1|RATR_MCS2|RATR_MCS3 |\
									RATR_MCS4|RATR_MCS5|RATR_MCS6	|RATR_MCS7
#define	RATE_ALL_OFDM_2SS			RATR_MCS8|RATR_MCS9	|RATR_MCS10|RATR_MCS11|\
									RATR_MCS12|RATR_MCS13|RATR_MCS14|RATR_MCS15
*/

#endif  //WLAN_HAL_INTERNAL_USED

#endif // #ifndef __INC_HAL8192SEREG_H