diff options
author | Roman Yeryomin <roman@advem.lv> | 2012-09-13 00:40:35 +0300 |
---|---|---|
committer | Roman Yeryomin <roman@advem.lv> | 2012-12-03 00:13:21 +0200 |
commit | 5deb3317cb51ac52de922bb55f8492624018906d (patch) | |
tree | c2fbe6346699d9bb0f2100490c3029519bb8fde8 /target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192c_reg.h | |
parent | 0239d37124f9184b478a42de8a7fa1bc85a6a6fe (diff) |
Add realtek target files
Signed-off-by: Roman Yeryomin <roman@advem.lv>
Diffstat (limited to 'target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192c_reg.h')
-rw-r--r-- | target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192c_reg.h | 2329 |
1 files changed, 2329 insertions, 0 deletions
diff --git a/target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192c_reg.h b/target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192c_reg.h new file mode 100644 index 000000000..3767ae1b3 --- /dev/null +++ b/target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192c_reg.h @@ -0,0 +1,2329 @@ +/*
+ * 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_
+
+//============================================================
+// 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 MCUTST_I 0x1C0 // MCU Firmware TST-I.
+#define MCUTST_II 0x1C4 // MCU Firmware TST-II.
+#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 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 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 // #ifndef __INC_HAL8192SEREG_H
+
|