Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / drivers / staging / rtl8723au / include / rtl8723a_spec.h
diff --git a/kernel/drivers/staging/rtl8723au/include/rtl8723a_spec.h b/kernel/drivers/staging/rtl8723au/include/rtl8723a_spec.h
new file mode 100644 (file)
index 0000000..2f18689
--- /dev/null
@@ -0,0 +1,2148 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ *******************************************************************************/
+#ifndef __RTL8723A_SPEC_H__
+#define __RTL8723A_SPEC_H__
+
+/*  */
+/*  */
+/*     0x0000h ~ 0x00FFh       System Configuration */
+/*  */
+/*  */
+#define REG_SYS_ISO_CTRL               0x0000
+#define REG_SYS_FUNC_EN                        0x0002
+#define REG_APS_FSMCO                  0x0004
+#define REG_SYS_CLKR                   0x0008
+#define REG_9346CR                     0x000A
+#define REG_EE_VPD                     0x000C
+#define REG_AFE_MISC                   0x0010
+#define REG_SPS0_CTRL                  0x0011
+#define REG_SPS_OCP_CFG                        0x0018
+#define REG_RSV_CTRL                   0x001C
+#define REG_RF_CTRL                    0x001F
+#define REG_LDOA15_CTRL                        0x0020
+#define REG_LDOV12D_CTRL               0x0021
+#define REG_LDOHCI12_CTRL              0x0022
+#define REG_LPLDO_CTRL                 0x0023
+#define REG_AFE_XTAL_CTRL              0x0024
+#define REG_AFE_PLL_CTRL               0x0028
+#define REG_MAC_PHY_CTRL               0x002c
+#define REG_EFUSE_CTRL                 0x0030
+#define REG_EFUSE_TEST                 0x0034
+#define REG_PWR_DATA                   0x0038
+#define REG_CAL_TIMER                  0x003C
+#define REG_ACLK_MON                   0x003E
+#define REG_GPIO_MUXCFG                        0x0040
+#define REG_GPIO_IO_SEL                        0x0042
+#define REG_MAC_PINMUX_CFG             0x0043
+#define REG_GPIO_PIN_CTRL              0x0044
+#define REG_GPIO_INTM                  0x0048
+#define REG_LEDCFG0                    0x004C
+#define REG_LEDCFG1                    0x004D
+#define REG_LEDCFG2                    0x004E
+#define REG_LEDCFG3                    0x004F
+#define REG_LEDCFG                     REG_LEDCFG2
+#define REG_FSIMR                      0x0050
+#define REG_FSISR                      0x0054
+#define REG_HSIMR                      0x0058
+#define REG_HSISR                      0x005c
+ /*  RTL8723 WIFI/BT/GPS Multi-Function GPIO Pin Control. */
+#define REG_GPIO_PIN_CTRL_2            0x0060
+ /*  RTL8723 WIFI/BT/GPS Multi-Function GPIO Select. */
+#define REG_GPIO_IO_SEL_2              0x0062
+ /*  RTL8723 WIFI/BT/GPS Multi-Function control source. */
+#define REG_MULTI_FUNC_CTRL            0x0068
+#define REG_MCUFWDL                    0x0080
+#define REG_HMEBOX_EXT_0               0x0088
+#define REG_HMEBOX_EXT_1               0x008A
+#define REG_HMEBOX_EXT_2               0x008C
+#define REG_HMEBOX_EXT_3               0x008E
+       /*  Host suspend counter on FPGA platform */
+#define REG_HOST_SUSP_CNT              0x00BC
+       /*  Efuse access protection for RTL8723 */
+#define REG_EFUSE_ACCESS               0x00CF
+#define REG_BIST_SCAN                  0x00D0
+#define REG_BIST_RPT                   0x00D4
+#define REG_BIST_ROM_RPT               0x00D8
+#define REG_USB_SIE_INTF               0x00E0
+#define REG_PCIE_MIO_INTF              0x00E4
+#define REG_PCIE_MIO_INTD              0x00E8
+#define REG_HPON_FSM                   0x00EC
+#define REG_SYS_CFG                    0x00F0
+#define REG_GPIO_OUTSTS                        0x00F4  /*  For RTL8723 only. */
+
+/*  */
+/*  */
+/*     0x0100h ~ 0x01FFh       MACTOP General Configuration */
+/*  */
+/*  */
+#define REG_CR                         0x0100
+#define REG_PBP                                0x0104
+#define REG_TRXDMA_CTRL                        0x010C
+#define REG_TRXFF_BNDY                 0x0114
+#define REG_TRXFF_STATUS               0x0118
+#define REG_RXFF_PTR                   0x011C
+#define REG_HIMR                       0x0120
+#define REG_HISR                       0x0124
+#define REG_HIMRE                      0x0128
+#define REG_HISRE                      0x012C
+#define REG_CPWM                       0x012F
+#define REG_FWIMR                      0x0130
+#define REG_FWISR                      0x0134
+#define REG_PKTBUF_DBG_CTRL            0x0140
+#define REG_PKTBUF_DBG_DATA_L          0x0144
+#define REG_PKTBUF_DBG_DATA_H          0x0148
+
+#define REG_TC0_CTRL                   0x0150
+#define REG_TC1_CTRL                   0x0154
+#define REG_TC2_CTRL                   0x0158
+#define REG_TC3_CTRL                   0x015C
+#define REG_TC4_CTRL                   0x0160
+#define REG_TCUNIT_BASE                        0x0164
+#define REG_MBIST_START                        0x0174
+#define REG_MBIST_DONE                 0x0178
+#define REG_MBIST_FAIL                 0x017C
+#define REG_C2HEVT_MSG_NORMAL          0x01A0
+#define REG_C2HEVT_CLEAR               0x01AF
+#define REG_C2HEVT_MSG_TEST            0x01B8
+#define REG_MCUTST_1                   0x01c0
+#define REG_FMETHR                     0x01C8
+#define REG_HMETFR                     0x01CC
+#define REG_HMEBOX_0                   0x01D0
+#define REG_HMEBOX_1                   0x01D4
+#define REG_HMEBOX_2                   0x01D8
+#define REG_HMEBOX_3                   0x01DC
+
+#define REG_LLT_INIT                   0x01E0
+#define REG_BB_ACCEESS_CTRL            0x01E8
+#define REG_BB_ACCESS_DATA             0x01EC
+
+
+/*  */
+/*  */
+/*     0x0200h ~ 0x027Fh       TXDMA Configuration */
+/*  */
+/*  */
+#define REG_RQPN                       0x0200
+#define REG_FIFOPAGE                   0x0204
+#define REG_TDECTRL                    0x0208
+#define REG_TXDMA_OFFSET_CHK           0x020C
+#define REG_TXDMA_STATUS               0x0210
+#define REG_RQPN_NPQ                   0x0214
+
+/*  */
+/*  */
+/*     0x0280h ~ 0x02FFh       RXDMA Configuration */
+/*  */
+/*  */
+#define REG_RXDMA_AGG_PG_TH            0x0280
+#define REG_RXPKT_NUM                  0x0284
+#define REG_RXDMA_STATUS               0x0288
+
+
+/*  */
+/*  */
+/*     0x0300h ~ 0x03FFh       PCIe */
+/*  */
+/*  */
+#define        REG_PCIE_CTRL_REG               0x0300
+#define        REG_INT_MIG                     0x0304  /*  Interrupt Migration */
+       /*  TX Beacon Descriptor Address */
+#define        REG_BCNQ_DESA                   0x0308
+       /*  TX High Queue Descriptor Address */
+#define        REG_HQ_DESA                     0x0310
+       /*  TX Manage Queue Descriptor Address */
+#define        REG_MGQ_DESA                    0x0318
+       /*  TX VO Queue Descriptor Address */
+#define        REG_VOQ_DESA                    0x0320
+       /*  TX VI Queue Descriptor Address */
+#define        REG_VIQ_DESA                    0x0328
+       /*  TX BE Queue Descriptor Address */
+#define        REG_BEQ_DESA                    0x0330
+       /*  TX BK Queue Descriptor Address */
+#define        REG_BKQ_DESA                    0x0338
+       /*  RX Queue    Descriptor Address */
+#define        REG_RX_DESA                     0x0340
+       /*  Backdoor REG for Access Configuration */
+#define        REG_DBI                         0x0348
+       /*  MDIO for Access PCIE PHY */
+#define        REG_MDIO                        0x0354
+       /*  Debug Selection Register */
+#define        REG_DBG_SEL                     0x0360
+       /* PCIe RPWM */
+#define        REG_PCIE_HRPWM                  0x0361
+       /* PCIe CPWM */
+#define        REG_PCIE_HCPWM                  0x0363
+       /*  UART        Control */
+#define        REG_UART_CTRL                   0x0364
+       /*  UART TX Descriptor Address */
+#define        REG_UART_TX_DESA                0x0370
+       /*  UART Rx Descriptor Address */
+#define        REG_UART_RX_DESA                0x0378
+
+
+/*  spec version 11 */
+/*  */
+/*  */
+/*     0x0400h ~ 0x047Fh       Protocol Configuration */
+/*  */
+/*  */
+#define REG_VOQ_INFORMATION            0x0400
+#define REG_VIQ_INFORMATION            0x0404
+#define REG_BEQ_INFORMATION            0x0408
+#define REG_BKQ_INFORMATION            0x040C
+#define REG_MGQ_INFORMATION            0x0410
+#define REG_HGQ_INFORMATION            0x0414
+#define REG_BCNQ_INFORMATION           0x0418
+
+
+#define REG_CPU_MGQ_INFORMATION                0x041C
+#define REG_FWHW_TXQ_CTRL              0x0420
+#define REG_HWSEQ_CTRL                 0x0423
+#define REG_TXPKTBUF_BCNQ_BDNY         0x0424
+#define REG_TXPKTBUF_MGQ_BDNY          0x0425
+#define REG_LIFETIME_EN                        0x0426
+#define REG_MULTI_BCNQ_OFFSET          0x0427
+#define REG_SPEC_SIFS                  0x0428
+#define REG_RL                         0x042A
+#define REG_DARFRC                     0x0430
+#define REG_RARFRC                     0x0438
+#define REG_RRSR                       0x0440
+#define REG_ARFR0                      0x0444
+#define REG_ARFR1                      0x0448
+#define REG_ARFR2                      0x044C
+#define REG_ARFR3                      0x0450
+#define REG_AGGLEN_LMT                 0x0458
+#define REG_AMPDU_MIN_SPACE            0x045C
+#define REG_TXPKTBUF_WMAC_LBK_BF_HD    0x045D
+#define REG_FAST_EDCA_CTRL             0x0460
+#define REG_RD_RESP_PKT_TH             0x0463
+#define REG_INIRTS_RATE_SEL            0x0480
+#define REG_INIDATA_RATE_SEL           0x0484
+
+
+#define REG_POWER_STATUS               0x04A4
+#define REG_POWER_STAGE1               0x04B4
+#define REG_POWER_STAGE2               0x04B8
+#define REG_PKT_VO_VI_LIFE_TIME                0x04C0
+#define REG_PKT_BE_BK_LIFE_TIME                0x04C2
+#define REG_STBC_SETTING               0x04C4
+#define REG_PROT_MODE_CTRL             0x04C8
+#define REG_MAX_AGGR_NUM               0x04CA
+#define REG_RTS_MAX_AGGR_NUM           0x04CB
+#define REG_BAR_MODE_CTRL              0x04CC
+#define REG_RA_TRY_RATE_AGG_LMT                0x04CF
+#define REG_NQOS_SEQ                   0x04DC
+#define REG_QOS_SEQ                    0x04DE
+#define REG_NEED_CPU_HANDLE            0x04E0
+#define REG_PKT_LOSE_RPT               0x04E1
+#define REG_PTCL_ERR_STATUS            0x04E2
+#define REG_DUMMY                      0x04FC
+
+
+
+/*  */
+/*  */
+/*     0x0500h ~ 0x05FFh       EDCA Configuration */
+/*  */
+/*  */
+#define REG_EDCA_VO_PARAM              0x0500
+#define REG_EDCA_VI_PARAM              0x0504
+#define REG_EDCA_BE_PARAM              0x0508
+#define REG_EDCA_BK_PARAM              0x050C
+#define REG_BCNTCFG                    0x0510
+#define REG_PIFS                       0x0512
+#define REG_RDG_PIFS                   0x0513
+#define REG_SIFS_CCK                   0x0514
+#define REG_SIFS_OFDM                  0x0516
+#define REG_SIFS_CTX                   0x0514
+#define REG_SIFS_TRX                   0x0516
+#define REG_TSFTR_SYN_OFFSET           0x0518
+#define REG_AGGR_BREAK_TIME            0x051A
+#define REG_SLOT                       0x051B
+#define REG_TX_PTCL_CTRL               0x0520
+#define REG_TXPAUSE                    0x0522
+#define REG_DIS_TXREQ_CLR              0x0523
+#define REG_RD_CTRL                    0x0524
+#define REG_TBTT_PROHIBIT              0x0540
+#define REG_RD_NAV_NXT                 0x0544
+#define REG_NAV_PROT_LEN               0x0546
+#define REG_BCN_CTRL                   0x0550
+#define REG_BCN_CTRL_1                 0x0551
+#define REG_MBID_NUM                   0x0552
+#define REG_DUAL_TSF_RST               0x0553
+       /*  The same as REG_MBSSID_BCN_SPACE */
+#define REG_BCN_INTERVAL               0x0554
+#define REG_MBSSID_BCN_SPACE           0x0554
+#define REG_DRVERLYINT                 0x0558
+#define REG_BCNDMATIM                  0x0559
+#define REG_ATIMWND                    0x055A
+#define REG_BCN_MAX_ERR                        0x055D
+#define REG_RXTSF_OFFSET_CCK           0x055E
+#define REG_RXTSF_OFFSET_OFDM          0x055F
+#define REG_TSFTR                      0x0560
+#define REG_TSFTR1                     0x0568
+#define REG_INIT_TSFTR                 0x0564
+#define REG_ATIMWND_1                  0x0570
+#define REG_PSTIMER                    0x0580
+#define REG_TIMER0                     0x0584
+#define REG_TIMER1                     0x0588
+#define REG_ACMHWCTRL                  0x05C0
+#define REG_ACMRSTCTRL                 0x05C1
+#define REG_ACMAVG                     0x05C2
+#define REG_VO_ADMTIME                 0x05C4
+#define REG_VI_ADMTIME                 0x05C6
+#define REG_BE_ADMTIME                 0x05C8
+#define REG_EDCA_RANDOM_GEN            0x05CC
+#define REG_SCH_TXCMD                  0x05D0
+
+/* define REG_FW_TSF_SYNC_CNT          0x04A0 */
+#define REG_FW_RESET_TSF_CNT_1         0x05FC
+#define REG_FW_RESET_TSF_CNT_0         0x05FD
+#define REG_FW_BCN_DIS_CNT             0x05FE
+
+/*  */
+/*  */
+/*     0x0600h ~ 0x07FFh       WMAC Configuration */
+/*  */
+/*  */
+#define REG_APSD_CTRL                  0x0600
+#define REG_BWOPMODE                   0x0603
+#define REG_TCR                                0x0604
+#define REG_RCR                                0x0608
+#define REG_RX_PKT_LIMIT               0x060C
+#define REG_RX_DLK_TIME                        0x060D
+#define REG_RX_DRVINFO_SZ              0x060F
+
+#define REG_MACID                      0x0610
+#define REG_BSSID                      0x0618
+#define REG_MAR                                0x0620
+#define REG_MBIDCAMCFG                 0x0628
+
+#define REG_USTIME_EDCA                        0x0638
+#define REG_MAC_SPEC_SIFS              0x063A
+
+/*  20100719 Joseph: Hardware register definition change. (HW datasheet v54) */
+       /*  [15:8]SIFS_R2T_OFDM, [7:0]SIFS_R2T_CCK */
+#define REG_R2T_SIFS                   0x063C
+       /*  [15:8]SIFS_T2T_OFDM, [7:0]SIFS_T2T_CCK */
+#define REG_T2T_SIFS                   0x063E
+#define REG_ACKTO                      0x0640
+#define REG_CTS2TO                     0x0641
+#define REG_EIFS                       0x0642
+
+/* WMA, BA, CCX */
+#define REG_NAV_CTRL                   0x0650
+#define REG_BACAMCMD                   0x0654
+#define REG_BACAMCONTENT               0x0658
+#define REG_LBDLY                      0x0660
+#define REG_FWDLY                      0x0661
+#define REG_RXERR_RPT                  0x0664
+#define REG_WMAC_TRXPTCL_CTL           0x0668
+
+
+/*  Security */
+#define REG_CAMCMD                     0x0670
+#define REG_CAMWRITE                   0x0674
+#define REG_CAMREAD                    0x0678
+#define REG_CAMDBG                     0x067C
+#define REG_SECCFG                     0x0680
+
+/*  Power */
+#define REG_WOW_CTRL                   0x0690
+#define REG_PSSTATUS                   0x0691
+#define REG_PS_RX_INFO                 0x0692
+#define REG_LPNAV_CTRL                 0x0694
+#define REG_WKFMCAM_CMD                        0x0698
+#define REG_WKFMCAM_RWD                        0x069C
+#define REG_RXFLTMAP0                  0x06A0
+#define REG_RXFLTMAP1                  0x06A2
+#define REG_RXFLTMAP2                  0x06A4
+#define REG_BCN_PSR_RPT                        0x06A8
+#define REG_CALB32K_CTRL               0x06AC
+#define REG_PKT_MON_CTRL               0x06B4
+#define REG_BT_COEX_TABLE              0x06C0
+#define REG_WMAC_RESP_TXINFO           0x06D8
+
+#define REG_MACID1                     0x0700
+#define REG_BSSID1                     0x0708
+
+
+/*  */
+/*  */
+/*     0xFE00h ~ 0xFE55h       USB Configuration */
+/*  */
+/*  */
+#define REG_USB_INFO                   0xFE17
+#define REG_USB_SPECIAL_OPTION         0xFE55
+#define REG_USB_DMA_AGG_TO             0xFE5B
+#define REG_USB_AGG_TO                 0xFE5C
+#define REG_USB_AGG_TH                 0xFE5D
+
+/*  For test chip */
+#define REG_TEST_USB_TXQS              0xFE48
+#define REG_TEST_SIE_VID               0xFE60          /*  0xFE60~0xFE61 */
+#define REG_TEST_SIE_PID               0xFE62          /*  0xFE62~0xFE63 */
+#define REG_TEST_SIE_OPTIONAL          0xFE64
+#define REG_TEST_SIE_CHIRP_K           0xFE65
+#define REG_TEST_SIE_PHY               0xFE66          /*  0xFE66~0xFE6B */
+#define REG_TEST_SIE_MAC_ADDR          0xFE70          /*  0xFE70~0xFE75 */
+#define REG_TEST_SIE_STRING            0xFE80          /*  0xFE80~0xFEB9 */
+
+
+/*  For normal chip */
+#define REG_NORMAL_SIE_VID             0xFE60          /*  0xFE60~0xFE61 */
+#define REG_NORMAL_SIE_PID             0xFE62          /*  0xFE62~0xFE63 */
+#define REG_NORMAL_SIE_OPTIONAL                0xFE64
+#define REG_NORMAL_SIE_EP              0xFE65          /*  0xFE65~0xFE67 */
+#define REG_NORMAL_SIE_PHY             0xFE68          /*  0xFE68~0xFE6B */
+#define REG_NORMAL_SIE_OPTIONAL2       0xFE6C
+#define REG_NORMAL_SIE_GPS_EP          0xFE6D          /*  RTL8723 only */
+#define REG_NORMAL_SIE_MAC_ADDR                0xFE70          /*  0xFE70~0xFE75 */
+#define REG_NORMAL_SIE_STRING          0xFE80          /*  0xFE80~0xFEDF */
+
+
+/*  */
+/*  */
+/*     Redifine 8192C register definition for compatibility */
+/*  */
+/*  */
+
+/*  TODO: use these definition when using REG_xxx naming rule. */
+/*  NOTE: DO NOT Remove these definition. Use later. */
+
+       /*  System Isolation Interface Control. */
+#define        SYS_ISO_CTRL                    REG_SYS_ISO_CTRL
+       /*  System Function Enable. */
+#define        SYS_FUNC_EN                     REG_SYS_FUNC_EN
+#define        SYS_CLK                         REG_SYS_CLKR
+       /*  93C46/93C56 Command Register. */
+#define        CR9346                          REG_9346CR
+       /*  E-Fuse Control. */
+#define        EFUSE_CTRL                      REG_EFUSE_CTRL
+       /*  E-Fuse Test. */
+#define        EFUSE_TEST                      REG_EFUSE_TEST
+       /*  Media Status register */
+#define        MSR                             (REG_CR + 2)
+#define        ISR                             REG_HISR
+       /*  Timing Sync Function Timer Register. */
+#define        TSFR                            REG_TSFTR
+
+       /*  MAC ID Register, Offset 0x0050-0x0053 */
+#define        MACIDR0                         REG_MACID
+       /*  MAC ID Register, Offset 0x0054-0x0055 */
+#define        MACIDR4                         (REG_MACID + 4)
+
+#define        PBP                             REG_PBP
+
+       /*  Redifine MACID register, to compatible prior ICs. */
+#define        IDR0                            MACIDR0
+#define        IDR4                            MACIDR4
+
+
+/*  */
+/*  9. Security Control Registers      (Offset: ) */
+/*  */
+       /*  Software write CAM input content */
+#define        WCAMI                           REG_CAMWRITE
+       /*  Software read/write CAM config */
+#define        RCAMO                           REG_CAMREAD
+#define        CAMDBG                          REG_CAMDBG
+       /* Security Configuration Register */
+#define        SECR                            REG_SECCFG
+
+/*  Unused register */
+#define        UnusedRegister                  0x1BF
+#define        DCAM                            UnusedRegister
+#define        PSR                             UnusedRegister
+#define        BBAddr                          UnusedRegister
+#define        PhyDataR                        UnusedRegister
+
+#define        InvalidBBRFValue                0x12345678
+
+/*  Min Spacing related settings. */
+#define        MAX_MSS_DENSITY_2T              0x13
+#define        MAX_MSS_DENSITY_1T              0x0A
+
+/*  */
+/* 8192C Cmd9346CR bits                        (Offset 0xA, 16bit) */
+/*  */
+        /*  EEPROM enable when set 1 */
+#define        CmdEEPROM_En                    BIT(5)
+       /*  System EEPROM select, 0: boot from E-FUSE,
+           1: The EEPROM used is 9346 */
+#define        CmdEERPOMSEL                    BIT(4)
+#define        Cmd9346CR_9356SEL               BIT(4)
+#define        AutoLoadEEPROM                  (CmdEEPROM_En|CmdEERPOMSEL)
+#define        AutoLoadEFUSE                   CmdEEPROM_En
+
+/*  */
+/* 8192C GPIO MUX Configuration Register (offset 0x40, 4 byte) */
+/*  */
+#define        GPIOSEL_GPIO                    0
+#define        GPIOSEL_ENBT                    BIT(5)
+
+/*  */
+/*        8192C GPIO PIN Control Register (offset 0x44, 4 byte) */
+/*  */
+       /*  GPIO pins input value */
+#define        GPIO_IN                         REG_GPIO_PIN_CTRL
+       /*  GPIO pins output value */
+#define        GPIO_OUT                        (REG_GPIO_PIN_CTRL+1)
+       /*  GPIO pins output enable when a bit is set to "1";
+           otherwise, input is configured. */
+#define        GPIO_IO_SEL                     (REG_GPIO_PIN_CTRL+2)
+#define        GPIO_MOD                        (REG_GPIO_PIN_CTRL+3)
+
+/*  */
+/* 8192C (MSR) Media Status Register   (Offset 0x4C, 8 bits) */
+/*  */
+/*
+Network Type
+00: No link
+01: Link in ad hoc network
+10: Link in infrastructure network
+11: AP mode
+Default: 00b.
+*/
+#define        MSR_NOLINK                      0x00
+#define        MSR_ADHOC                       0x01
+#define        MSR_INFRA                       0x02
+#define        MSR_AP                          0x03
+
+/*  */
+/*  6. Adaptive Control Registers  (Offset: 0x0160 - 0x01CF) */
+/*  */
+/*  */
+/* 8192C Response Rate Set Register    (offset 0x181, 24bits) */
+/*  */
+#define        RRSR_RSC_OFFSET                 21
+#define        RRSR_SHORT_OFFSET               23
+#define        RRSR_RSC_BW_40M                 0x600000
+#define        RRSR_RSC_UPSUBCHNL              0x400000
+#define        RRSR_RSC_LOWSUBCHNL             0x200000
+#define        RRSR_SHORT                      0x800000
+#define        RRSR_1M                         BIT(0)
+#define        RRSR_2M                         BIT(1)
+#define        RRSR_5_5M                       BIT(2)
+#define        RRSR_11M                        BIT(3)
+#define        RRSR_6M                         BIT(4)
+#define        RRSR_9M                         BIT(5)
+#define        RRSR_12M                        BIT(6)
+#define        RRSR_18M                        BIT(7)
+#define        RRSR_24M                        BIT(8)
+#define        RRSR_36M                        BIT(9)
+#define        RRSR_48M                        BIT(10)
+#define        RRSR_54M                        BIT(11)
+#define        RRSR_MCS0                       BIT(12)
+#define        RRSR_MCS1                       BIT(13)
+#define        RRSR_MCS2                       BIT(14)
+#define        RRSR_MCS3                       BIT(15)
+#define        RRSR_MCS4                       BIT(16)
+#define        RRSR_MCS5                       BIT(17)
+#define        RRSR_MCS6                       BIT(18)
+#define        RRSR_MCS7                       BIT(19)
+#define        BRSR_AckShortPmb                BIT(23)
+/*  CCK ACK: use Short Preamble or not */
+
+/*  */
+/* 8192C BW_OPMODE bits                        (Offset 0x203, 8bit) */
+/*  */
+#define        BW_OPMODE_20MHZ                 BIT(2)
+#define        BW_OPMODE_5G                    BIT(1)
+#define        BW_OPMODE_11J                   BIT(0)
+
+
+/*  */
+/* 8192C CAM Config Setting (offset 0x250, 1 byte) */
+/*  */
+#define        CAM_VALID                       BIT(15)
+#define        CAM_NOTVALID                    0x0000
+#define        CAM_USEDK                       BIT(5)
+
+#define        CAM_CONTENT_COUNT               8
+
+#define        CAM_NONE                        0x0
+#define        CAM_WEP40                       0x01
+#define        CAM_TKIP                        0x02
+#define        CAM_AES                         0x04
+#define        CAM_WEP104                      0x05
+
+#define        TOTAL_CAM_ENTRY                 32
+#define        HALF_CAM_ENTRY                  16
+
+#define        CAM_CONFIG_USEDK                true
+#define        CAM_CONFIG_NO_USEDK             false
+
+#define        CAM_WRITE                       BIT(16)
+#define        CAM_READ                        0x00000000
+#define        CAM_POLLINIG                    BIT(31)
+
+#define        SCR_UseDK                       0x01
+#define        SCR_TxSecEnable                 0x02
+#define        SCR_RxSecEnable                 0x04
+
+
+/*  */
+/*  12. Host Interrupt Status Registers         (Offset: 0x0300 - 0x030F) */
+/*  */
+/*  */
+/* 8190 IMR/ISR bits                   (offset 0xfd,  8bits) */
+/*  */
+#define        IMR8190_DISABLED                0x0
+/*  IMR DW0 Bit 0-31 */
+
+#define        IMR_BCNDMAINT6                  BIT(31) /*  Beacon DMA Interrupt 6 */
+#define        IMR_BCNDMAINT5                  BIT(30) /*  Beacon DMA Interrupt 5 */
+#define        IMR_BCNDMAINT4                  BIT(29) /*  Beacon DMA Interrupt 4 */
+#define        IMR_BCNDMAINT3                  BIT(28) /*  Beacon DMA Interrupt 3 */
+#define        IMR_BCNDMAINT2                  BIT(27) /*  Beacon DMA Interrupt 2 */
+#define        IMR_BCNDMAINT1                  BIT(26) /*  Beacon DMA Interrupt 1 */
+#define        IMR_BCNDOK8                     BIT(25) /*  Beacon Queue DMA OK
+                                                   Interrupt 8 */
+#define        IMR_BCNDOK7                     BIT(24) /*  Beacon Queue DMA OK
+                                                   Interrupt 7 */
+#define        IMR_BCNDOK6                     BIT(23) /*  Beacon Queue DMA OK
+                                                   Interrupt 6 */
+#define        IMR_BCNDOK5                     BIT(22) /*  Beacon Queue DMA OK
+                                                   Interrupt 5 */
+#define        IMR_BCNDOK4                     BIT(21) /*  Beacon Queue DMA OK
+                                                   Interrupt 4 */
+#define        IMR_BCNDOK3                     BIT(20) /*  Beacon Queue DMA OK
+                                                   Interrupt 3 */
+#define        IMR_BCNDOK2                     BIT(19) /*  Beacon Queue DMA OK
+                                                   Interrupt 2 */
+#define        IMR_BCNDOK1                     BIT(18) /*  Beacon Queue DMA OK
+                                                   Interrupt 1 */
+#define        IMR_TIMEOUT2                    BIT(17) /*  Timeout interrupt 2 */
+#define        IMR_TIMEOUT1                    BIT(16) /*  Timeout interrupt 1 */
+#define        IMR_TXFOVW                      BIT(15) /*  Transmit FIFO Overflow */
+#define        IMR_PSTIMEOUT                   BIT(14) /*  Power save time out
+                                                   interrupt */
+#define        IMR_BcnInt                      BIT(13) /*  Beacon DMA Interrupt 0 */
+#define        IMR_RXFOVW                      BIT(12) /*  Receive FIFO Overflow */
+#define        IMR_RDU                         BIT(11) /*  Receive Descriptor
+                                                   Unavailable */
+#define        IMR_ATIMEND                     BIT(10) /*  For 92C,ATIM Window
+                                                   End Interrupt */
+#define        IMR_BDOK                        BIT(9)  /*  Beacon Queue DMA OK
+                                                   Interrup */
+#define        IMR_HIGHDOK                     BIT(8)  /*  High Queue DMA OK
+                                                   Interrupt */
+#define        IMR_TBDOK                       BIT(7)  /*  Transmit Beacon OK
+                                                   interrup */
+#define        IMR_MGNTDOK                     BIT(6)  /*  Management Queue DMA OK
+                                                   Interrupt */
+#define        IMR_TBDER                       BIT(5)  /*  For 92C,Transmit Beacon
+                                                   Error Interrupt */
+#define        IMR_BKDOK                       BIT(4)  /*  AC_BK DMA OK Interrupt */
+#define        IMR_BEDOK                       BIT(3)  /*  AC_BE DMA OK Interrupt */
+#define        IMR_VIDOK                       BIT(2)  /*  AC_VI DMA OK Interrupt */
+#define        IMR_VODOK                       BIT(1)  /*  AC_VO DMA Interrupt */
+#define        IMR_ROK                         BIT(0)  /*  Receive DMA OK Interrupt */
+
+#define        IMR_RX_MASK                     (IMR_ROK|IMR_RDU|IMR_RXFOVW)
+#define        IMR_TX_MASK                     (IMR_VODOK|IMR_VIDOK|IMR_BEDOK| \
+                                        IMR_BKDOK|IMR_MGNTDOK|IMR_HIGHDOK| \
+                                        IMR_BDOK)
+
+/*  13. Host Interrupt Status Extension Register (Offset: 0x012C-012Eh) */
+#define        IMR_BcnInt_E                    BIT(12)
+#define        IMR_TXERR                       BIT(11)
+#define        IMR_RXERR                       BIT(10)
+#define        IMR_C2HCMD                      BIT(9)
+#define        IMR_CPWM                        BIT(8)
+/* RSVD [2-7] */
+#define        IMR_OCPINT                      BIT(1)
+#define        IMR_WLANOFF                     BIT(0)
+
+
+/*        8192C EEPROM/EFUSE share register definition. */
+
+/*  Default Value for EEPROM or EFUSE!!! */
+#define EEPROM_Default_TSSI                    0x0
+#define EEPROM_Default_TxPowerDiff             0x0
+#define EEPROM_Default_CrystalCap              0x5
+ /*  Default: 2X2, RTL8192CE(QFPN68) */
+#define EEPROM_Default_BoardType               0x02
+#define EEPROM_Default_TxPower                 0x1010
+#define EEPROM_Default_HT2T_TxPwr              0x10
+
+#define EEPROM_Default_LegacyHTTxPowerDiff     0x3
+#define EEPROM_Default_ThermalMeter            0x12
+
+#define EEPROM_Default_AntTxPowerDiff          0x0
+#define EEPROM_Default_TxPwDiff_CrystalCap     0x5
+#define EEPROM_Default_TxPowerLevel            0x22
+#define EEPROM_Default_HT40_2SDiff             0x0
+       /*  HT20<->40 default Tx Power Index Difference */
+#define EEPROM_Default_HT20_Diff               2
+#define EEPROM_Default_LegacyHTTxPowerDiff     0x3
+#define EEPROM_Default_HT40_PwrMaxOffset       0
+#define EEPROM_Default_HT20_PwrMaxOffset       0
+
+/*  For debug */
+#define EEPROM_Default_PID                     0x1234
+#define EEPROM_Default_VID                     0x5678
+#define EEPROM_Default_CustomerID              0xAB
+#define EEPROM_Default_SubCustomerID           0xCD
+#define EEPROM_Default_Version                 0
+
+#define EEPROM_CHANNEL_PLAN_FCC                        0x0
+#define EEPROM_CHANNEL_PLAN_IC                 0x1
+#define EEPROM_CHANNEL_PLAN_ETSI               0x2
+#define EEPROM_CHANNEL_PLAN_SPAIN              0x3
+#define EEPROM_CHANNEL_PLAN_FRANCE             0x4
+#define EEPROM_CHANNEL_PLAN_MKK                        0x5
+#define EEPROM_CHANNEL_PLAN_MKK1               0x6
+#define EEPROM_CHANNEL_PLAN_ISRAEL             0x7
+#define EEPROM_CHANNEL_PLAN_TELEC              0x8
+#define EEPROM_CHANNEL_PLAN_GLOBAL_DOMAIN      0x9
+#define EEPROM_CHANNEL_PLAN_WORLD_WIDE_13      0xA
+#define EEPROM_CHANNEL_PLAN_NCC                        0xB
+#define EEPROM_USB_OPTIONAL1                   0xE
+#define EEPROM_CHANNEL_PLAN_BY_HW_MASK         0x80
+
+
+#define EEPROM_CID_DEFAULT                     0x0
+#define EEPROM_CID_TOSHIBA                     0x4
+ /*  CCX test. By Bruce, 2009-02-25. */
+#define EEPROM_CID_CCX                         0x10
+#define EEPROM_CID_QMI                         0x0D
+ /*  added by chiyoko for dtm, 20090108 */
+#define EEPROM_CID_WHQL                                0xFE
+
+
+#define        RTL_EEPROM_ID                           0x8129
+
+#define        SUPPORT_HW_RADIO_DETECT(pHalData)               \
+       (pHalData->BoardType == BOARD_MINICARD ||       \
+       pHalData->BoardType == BOARD_USB_SOLO ||        \
+       pHalData->BoardType == BOARD_USB_COMBO)
+
+/*  */
+/*  EEPROM address for Test chip */
+/*  */
+#define EEPROM_TEST_USB_OPT            0x0E
+#define EEPROM_TEST_CHIRP_K            0x0F
+#define EEPROM_TEST_EP_SETTING         0x0E
+#define EEPROM_TEST_USB_PHY            0x10
+
+
+/*  */
+/*  EEPROM address for Normal chip */
+/*  */
+#define EEPROM_NORMAL_USB_OPT          0x0E
+#define EEPROM_NORMAL_CHIRP_K          0x0E    /*  Changed */
+#define EEPROM_NORMAL_EP_SETTING       0x0F    /*  Changed */
+#define EEPROM_NORMAL_USB_PHY          0x12    /*  Changed */
+
+enum {
+       BOARD_USB_DONGLE = 0,   /*  USB dongle */
+       BOARD_USB_High_PA = 1,  /*  USB dongle with high power PA */
+       BOARD_MINICARD = 2,     /*  Minicard */
+       BOARD_USB_SOLO = 3,     /*  USB solo-Slim module */
+       BOARD_USB_COMBO = 4,    /*  USB Combo-Slim module */
+};
+
+/*  Test chip and normal chip common define */
+/*  */
+/*  EEPROM address for both */
+/*  */
+#define EEPROM_ID0                     0x00
+#define EEPROM_ID1                     0x01
+#define EEPROM_RTK_RSV1                        0x02
+#define EEPROM_RTK_RSV2                        0x03
+#define EEPROM_RTK_RSV3                        0x04
+#define EEPROM_RTK_RSV4                        0x05
+#define EEPROM_RTK_RSV5                        0x06
+#define EEPROM_DBG_SEL                 0x07
+#define EEPROM_RTK_RSV6                        0x08
+#define EEPROM_VID                     0x0A
+#define EEPROM_PID                     0x0C
+
+#define EEPROM_MAC_ADDR                        0x16
+#define EEPROM_STRING                  0x1C
+#define EEPROM_SUBCUSTOMER_ID          0x59
+#define EEPROM_CCK_TX_PWR_INX          0x5A
+#define EEPROM_HT40_1S_TX_PWR_INX      0x60
+#define EEPROM_HT40_2S_TX_PWR_INX_DIFF 0x66
+#define EEPROM_HT20_TX_PWR_INX_DIFF    0x69
+#define EEPROM_OFDM_TX_PWR_INX_DIFF    0x6C
+#define EEPROM_HT40_MAX_PWR_OFFSET     0x6F
+#define EEPROM_HT20_MAX_PWR_OFFSET     0x72
+
+#define EEPROM_CHANNEL_PLAN            0x75
+#define EEPROM_TSSI_A                  0x76
+#define EEPROM_TSSI_B                  0x77
+#define EEPROM_THERMAL_METER           0x78
+#define EEPROM_RF_OPT1                 0x79
+#define EEPROM_RF_OPT2                 0x7A
+#define EEPROM_RF_OPT3                 0x7B
+#define EEPROM_RF_OPT4                 0x7C
+#define EEPROM_VERSION                 0x7E
+#define EEPROM_CUSTOMER_ID             0x7F
+
+        /* 0x0: RTL8188SU, 0x1: RTL8191SU, 0x2: RTL8192SU, 0x3: RTL8191GU */
+#define EEPROM_BoardType               0x54
+       /* 0x5C-0x76, Tx Power index. */
+#define EEPROM_TxPwIndex               0x5C
+       /*  Difference of gain index between legacy and high throughput OFDM. */
+#define EEPROM_PwDiff                  0x67
+       /*  CCK Tx Power */
+#define EEPROM_TxPowerCCK              0x5A
+
+/*  2009/02/09 Cosa Add for SD3 requirement */
+       /*  HT20 Tx Power Index Difference */
+#define EEPROM_TX_PWR_HT20_DIFF                0x6e
+       /*  HT20<->40 default Tx Power Index Difference */
+#define DEFAULT_HT20_TXPWR_DIFF                2
+       /*  OFDM Tx Power Index Difference */
+#define EEPROM_TX_PWR_OFDM_DIFF                0x71
+
+       /*  Power diff for channel group */
+#define EEPROM_TxPWRGroup              0x73
+       /*  Check if power safety is need */
+#define EEPROM_Regulatory              0x79
+
+       /*  92cu, 0x7E[4] */
+#define EEPROM_BLUETOOTH_COEXIST       0x7E
+#define EEPROM_NORMAL_BoardType                EEPROM_RF_OPT1  /* 7:5] */
+#define BOARD_TYPE_NORMAL_MASK         0xE0
+#define BOARD_TYPE_TEST_MASK           0x0F
+       /* BIT0 1 for build-in module, 0 for external dongle */
+#define EEPROM_EASY_REPLACEMENT                0x50
+/*  */
+/* EPROM content definitions */
+/*  */
+#define OS_LINK_SPEED                  BIT(5)
+
+#define BOARD_TYPE_MASK                        0xF
+
+#define BT_COEXISTENCE                 BIT(4)
+#define BT_CO_SHIFT                    4
+
+#define EP_NUMBER_MASK                 0x30    /* bit 4:5 0Eh */
+#define EP_NUMBER_SHIFT                        4
+
+
+#define USB_PHY_PARA_SIZE              5
+
+
+/*  */
+/*     \14EEPROM default value definitions */
+/*  */
+/*  Use 0xABCD instead of 0x8192 for debug */
+#define EEPROM_DEF_ID_0                        0xCD    /*  Byte 0x00 */
+#define EEPROM_DEF_ID_1                        0xAB    /*  Byte 0x01 */
+
+#define EEPROM_DEF_RTK_RSV_A3          0x74    /*  Byte 0x03 */
+#define EEPROM_DEF_RTK_RSV_A4          0x6D    /*  Byte 0x04 */
+#define EEPROM_DEF_RTK_RSV_A8          0xFF    /*  Byte 0x08 */
+
+#define EEPROM_DEF_VID_0               0x0A    /*  Byte 0x0A */
+#define EEPROM_DEF_VID_1               0x0B
+
+#define EEPROM_DEF_PID_0               0x92    /*  Byte 0x0C */
+#define EEPROM_DEF_PID_1               0x81
+
+
+#define EEPROM_TEST_DEF_USB_OPT                0x80    /*  Byte 0x0E */
+#define EEPROM_NORMAL_DEF_USB_OPT      0x00    /*  Byte 0x0E */
+
+#define EEPROM_DEF_CHIRPK              0x15    /*  Byte 0x0F */
+
+#define EEPROM_DEF_USB_PHY_0           0x85    /*  Byte 0x10 */
+#define EEPROM_DEF_USB_PHY_1           0x62    /*  Byte 0x11 */
+#define EEPROM_DEF_USB_PHY_2           0x9E    /*  Byte 0x12 */
+#define EEPROM_DEF_USB_PHY_3           0x06    /*  Byte 0x13 */
+
+#define EEPROM_DEF_TSSI_A              0x09    /*  Byte 0x78 */
+#define EEPROM_DEF_TSSI_B              0x09    /*  Byte 0x79 */
+
+
+#define EEPROM_DEF_THERMAL_METER       0x12    /*  Byte 0x7A */
+
+       /*  Check if power safety spec is need */
+#define RF_OPTION1                     0x79
+#define RF_OPTION2                     0x7A
+#define RF_OPTION3                     0x7B
+#define RF_OPTION4                     0x7C
+
+
+#define        EEPROM_USB_SN                   BIT(0)
+#define        EEPROM_USB_REMOTE_WAKEUP        BIT(1)
+#define        EEPROM_USB_DEVICE_PWR           BIT(2)
+#define        EEPROM_EP_NUMBER                (BIT(3)|BIT(4))
+
+/*===================================================================
+=====================================================================
+Here the register defines are for 92C. When the define is as same with 92C,
+we will use the 92C's define for the consistency
+So the following defines for 92C is not entire!!!!!!
+=====================================================================
+=====================================================================*/
+/*
+Based on Datasheet V33---090401
+Register Summary
+Current IOREG MAP
+0x0000h ~ 0x00FFh   System Configuration (256 Bytes)
+0x0100h ~ 0x01FFh   MACTOP General Configuration (256 Bytes)
+0x0200h ~ 0x027Fh   TXDMA Configuration (128 Bytes)
+0x0280h ~ 0x02FFh   RXDMA Configuration (128 Bytes)
+0x0300h ~ 0x03FFh   PCIE EMAC Reserved Region (256 Bytes)
+0x0400h ~ 0x04FFh   Protocol Configuration (256 Bytes)
+0x0500h ~ 0x05FFh   EDCA Configuration (256 Bytes)
+0x0600h ~ 0x07FFh   WMAC Configuration (512 Bytes)
+0x2000h ~ 0x3FFFh   8051 FW Download Region (8196 Bytes)
+*/
+
+/*  */
+/* 8192C (RCR) Receive Configuration Register  (Offset 0x608, 32 bits) */
+/*  */
+#define        RCR_APPFCS                      BIT(31) /* WMAC append FCS after payload*/
+#define        RCR_APP_MIC                     BIT(30)
+#define        RCR_APP_PHYSTS                  BIT(28)
+#define        RCR_APP_ICV                     BIT(29)
+#define        RCR_APP_PHYST_RXFF              BIT(28)
+#define        RCR_APP_BA_SSN                  BIT(27) /* Accept BA SSN */
+#define        RCR_ENMBID                      BIT(24) /* Enable Multiple BssId. */
+#define        RCR_LSIGEN                      BIT(23)
+#define        RCR_MFBEN                       BIT(22)
+#define        RCR_HTC_LOC_CTRL                BIT(14) /* MFC<--HTC=1 MFC-->HTC=0 */
+#define        RCR_AMF                         BIT(13) /* Accept management type frame */
+#define        RCR_ACF                         BIT(12) /* Accept control type frame */
+#define        RCR_ADF                         BIT(11) /* Accept data type frame */
+#define        RCR_AICV                        BIT(9)  /* Accept ICV error packet */
+#define        RCR_ACRC32                      BIT(8)  /* Accept CRC32 error packet */
+#define        RCR_CBSSID_BCN                  BIT(7)  /* Accept BSSID match packet
+                                                (Rx beacon, probe rsp) */
+#define        RCR_CBSSID_DATA                 BIT(6)  /* Accept BSSID match packet
+                                                (Data) */
+#define        RCR_CBSSID                      RCR_CBSSID_DATA /* Accept BSSID match
+                                                          packet */
+#define        RCR_APWRMGT                     BIT(5)  /* Accept power management
+                                                packet */
+#define        RCR_ADD3                        BIT(4)  /* Accept address 3 match
+                                                packet */
+#define        RCR_AB                          BIT(3)  /* Accept broadcast packet */
+#define        RCR_AM                          BIT(2)  /* Accept multicast packet */
+#define        RCR_APM                         BIT(1)  /* Accept physical match packet */
+#define        RCR_AAP                         BIT(0)  /* Accept all unicast packet */
+#define        RCR_MXDMA_OFFSET                8
+#define        RCR_FIFO_OFFSET                 13
+
+
+
+/*  */
+/* 8192c USB specific Regsiter Offset and Content definition, */
+/* 2009.08.18, added by vivi. for merge 92c and 92C into one driver */
+/*  */
+/* define APS_FSMCO                    0x0004  same with 92Ce */
+#define RSV_CTRL                       0x001C
+#define RD_CTRL                                0x0524
+
+/*  */
+/*  */
+/*     0xFE00h ~ 0xFE55h       USB Configuration */
+/*  */
+/*  */
+#define REG_USB_INFO                   0xFE17
+#define REG_USB_SPECIAL_OPTION         0xFE55
+#define REG_USB_DMA_AGG_TO             0xFE5B
+#define REG_USB_AGG_TO                 0xFE5C
+#define REG_USB_AGG_TH                 0xFE5D
+
+#define REG_USB_VID                    0xFE60
+#define REG_USB_PID                    0xFE62
+#define REG_USB_OPTIONAL               0xFE64
+#define REG_USB_CHIRP_K                        0xFE65
+#define REG_USB_PHY                    0xFE66
+#define REG_USB_MAC_ADDR               0xFE70
+
+#define REG_USB_HRPWM                  0xFE58
+#define REG_USB_HCPWM                  0xFE57
+
+#define        InvalidBBRFValue                0x12345678
+
+/*  */
+/*        8192C Regsiter Bit and Content definition */
+/*  */
+/*  */
+/*  */
+/*     0x0000h ~ 0x00FFh       System Configuration */
+/*  */
+/*  */
+
+/* 2 SPS0_CTRL */
+#define SW18_FPWM                      BIT(3)
+
+
+/* 2 SYS_ISO_CTRL */
+#define ISO_MD2PP                      BIT(0)
+#define ISO_UA2USB                     BIT(1)
+#define ISO_UD2CORE                    BIT(2)
+#define ISO_PA2PCIE                    BIT(3)
+#define ISO_PD2CORE                    BIT(4)
+#define ISO_IP2MAC                     BIT(5)
+#define ISO_DIOP                       BIT(6)
+#define ISO_DIOE                       BIT(7)
+#define ISO_EB2CORE                    BIT(8)
+#define ISO_DIOR                       BIT(9)
+
+#define PWC_EV25V                      BIT(14)
+#define PWC_EV12V                      BIT(15)
+
+
+/* 2 SYS_FUNC_EN */
+#define FEN_BBRSTB                     BIT(0)
+#define FEN_BB_GLB_RSTn                        BIT(1)
+#define FEN_USBA                       BIT(2)
+#define FEN_UPLL                       BIT(3)
+#define FEN_USBD                       BIT(4)
+#define FEN_DIO_PCIE                   BIT(5)
+#define FEN_PCIEA                      BIT(6)
+#define FEN_PPLL                       BIT(7)
+#define FEN_PCIED                      BIT(8)
+#define FEN_DIOE                       BIT(9)
+#define FEN_CPUEN                      BIT(10)
+#define FEN_DCORE                      BIT(11)
+#define FEN_ELDR                       BIT(12)
+#define FEN_DIO_RF                     BIT(13)
+#define FEN_HWPDN                      BIT(14)
+#define FEN_MREGEN                     BIT(15)
+
+/* 2 APS_FSMCO */
+#define PFM_LDALL                      BIT(0)
+#define PFM_ALDN                       BIT(1)
+#define PFM_LDKP                       BIT(2)
+#define PFM_WOWL                       BIT(3)
+#define EnPDN                          BIT(4)
+#define PDN_PL                         BIT(5)
+#define APFM_ONMAC                     BIT(8)
+#define APFM_OFF                       BIT(9)
+#define APFM_RSM                       BIT(10)
+#define AFSM_HSUS                      BIT(11)
+#define AFSM_PCIE                      BIT(12)
+#define APDM_MAC                       BIT(13)
+#define APDM_HOST                      BIT(14)
+#define APDM_HPDN                      BIT(15)
+#define RDY_MACON                      BIT(16)
+#define SUS_HOST                       BIT(17)
+#define ROP_ALD                                BIT(20)
+#define ROP_PWR                                BIT(21)
+#define ROP_SPS                                BIT(22)
+#define SOP_MRST                       BIT(25)
+#define SOP_FUSE                       BIT(26)
+#define SOP_ABG                                BIT(27)
+#define SOP_AMB                                BIT(28)
+#define SOP_RCK                                BIT(29)
+#define SOP_A8M                                BIT(30)
+#define XOP_BTCK                       BIT(31)
+
+/* 2 SYS_CLKR */
+#define ANAD16V_EN                     BIT(0)
+#define ANA8M                          BIT(1)
+#define MACSLP                         BIT(4)
+#define LOADER_CLK_EN                  BIT(5)
+#define _80M_SSC_DIS                   BIT(7)
+#define _80M_SSC_EN_HO                 BIT(8)
+#define PHY_SSC_RSTB                   BIT(9)
+#define SEC_CLK_EN                     BIT(10)
+#define MAC_CLK_EN                     BIT(11)
+#define SYS_CLK_EN                     BIT(12)
+#define RING_CLK_EN                    BIT(13)
+
+
+/* 2 9346CR */
+
+
+#define                EEDO                    BIT(0)
+#define                EEDI                    BIT(1)
+#define                EESK                    BIT(2)
+#define                EECS                    BIT(3)
+/* define      EERPROMSEL              BIT(4) */
+/* define      EEPROM_EN               BIT(5) */
+#define                BOOT_FROM_EEPROM        BIT(4)
+#define                EEPROM_EN               BIT(5)
+#define                EEM0                    BIT(6)
+#define                EEM1                    BIT(7)
+
+
+/* 2 AFE_MISC */
+#define AFE_BGEN                       BIT(0)
+#define AFE_MBEN                       BIT(1)
+#define MAC_ID_EN                      BIT(7)
+
+
+/* 2 SPS0_CTRL */
+
+
+/* 2 SPS_OCP_CFG */
+
+
+/* 2 RSV_CTRL */
+#define WLOCK_ALL                      BIT(0)
+#define WLOCK_00                       BIT(1)
+#define WLOCK_04                       BIT(2)
+#define WLOCK_08                       BIT(3)
+#define WLOCK_40                       BIT(4)
+#define R_DIS_PRST_0                   BIT(5)
+#define R_DIS_PRST_1                   BIT(6)
+#define LOCK_ALL_EN                    BIT(7)
+
+/* 2 RF_CTRL */
+#define RF_EN                          BIT(0)
+#define RF_RSTB                                BIT(1)
+#define RF_SDMRSTB                     BIT(2)
+
+
+
+/* 2 LDOA15_CTRL */
+#define LDA15_EN                       BIT(0)
+#define LDA15_STBY                     BIT(1)
+#define LDA15_OBUF                     BIT(2)
+#define LDA15_REG_VOS                  BIT(3)
+#define _LDA15_VOADJ(x)                        (((x) & 0x7) << 4)
+
+
+
+/* 2 LDOV12D_CTRL */
+#define LDV12_EN                       BIT(0)
+#define LDV12_SDBY                     BIT(1)
+#define LPLDO_HSM                      BIT(2)
+#define LPLDO_LSM_DIS                  BIT(3)
+#define _LDV12_VADJ(x)                 (((x) & 0xF) << 4)
+
+
+/* 2 AFE_XTAL_CTRL */
+#define XTAL_EN                                BIT(0)
+#define XTAL_BSEL                      BIT(1)
+#define _XTAL_BOSC(x)                  (((x) & 0x3) << 2)
+#define _XTAL_CADJ(x)                  (((x) & 0xF) << 4)
+#define XTAL_GATE_USB                  BIT(8)
+#define _XTAL_USB_DRV(x)               (((x) & 0x3) << 9)
+#define XTAL_GATE_AFE                  BIT(11)
+#define _XTAL_AFE_DRV(x)               (((x) & 0x3) << 12)
+#define XTAL_RF_GATE                   BIT(14)
+#define _XTAL_RF_DRV(x)                        (((x) & 0x3) << 15)
+#define XTAL_GATE_DIG                  BIT(17)
+#define _XTAL_DIG_DRV(x)               (((x) & 0x3) << 18)
+#define XTAL_BT_GATE                   BIT(20)
+#define _XTAL_BT_DRV(x)                        (((x) & 0x3) << 21)
+#define _XTAL_GPIO(x)                  (((x) & 0x7) << 23)
+
+
+#define CKDLY_AFE                      BIT(26)
+#define CKDLY_USB                      BIT(27)
+#define CKDLY_DIG                      BIT(28)
+#define CKDLY_BT                       BIT(29)
+
+
+/* 2 AFE_PLL_CTRL */
+#define APLL_EN                                BIT(0)
+#define APLL_320_EN                    BIT(1)
+#define APLL_FREF_SEL                  BIT(2)
+#define APLL_EDGE_SEL                  BIT(3)
+#define APLL_WDOGB                     BIT(4)
+#define APLL_LPFEN                     BIT(5)
+
+#define APLL_REF_CLK_13MHZ             0x1
+#define APLL_REF_CLK_19_2MHZ           0x2
+#define APLL_REF_CLK_20MHZ             0x3
+#define APLL_REF_CLK_25MHZ             0x4
+#define APLL_REF_CLK_26MHZ             0x5
+#define APLL_REF_CLK_38_4MHZ           0x6
+#define APLL_REF_CLK_40MHZ             0x7
+
+#define APLL_320EN                     BIT(14)
+#define APLL_80EN                      BIT(15)
+#define APLL_1MEN                      BIT(24)
+
+
+/* 2 EFUSE_CTRL */
+#define ALD_EN                         BIT(18)
+#define EF_PD                          BIT(19)
+#define EF_FLAG                                BIT(31)
+
+/* 2 EFUSE_TEST (For RTL8723 partially) */
+#define EF_TRPT                                BIT(7)
+       /*  00: Wifi Efuse, 01: BT Efuse0, 10: BT Efuse1, 11: BT Efuse2 */
+#define EF_CELL_SEL                    (BIT(8)|BIT(9))
+#define LDOE25_EN                      BIT(31)
+#define EFUSE_SEL(x)                   (((x) & 0x3) << 8)
+#define EFUSE_SEL_MASK                 0x300
+#define EFUSE_WIFI_SEL_0               0x0
+#define EFUSE_BT_SEL_0                 0x1
+#define EFUSE_BT_SEL_1                 0x2
+#define EFUSE_BT_SEL_2                 0x3
+
+#define EFUSE_ACCESS_ON                        0x69    /*  For RTL8723 only. */
+#define EFUSE_ACCESS_OFF               0x00    /*  For RTL8723 only. */
+
+/* 2 PWR_DATA */
+
+/* 2 CAL_TIMER */
+
+/* 2 ACLK_MON */
+#define RSM_EN                         BIT(0)
+#define Timer_EN                       BIT(4)
+
+
+/* 2 GPIO_MUXCFG */
+#define TRSW0EN                                BIT(2)
+#define TRSW1EN                                BIT(3)
+#define EROM_EN                                BIT(4)
+#define EnBT                           BIT(5)
+#define EnUart                         BIT(8)
+#define Uart_910                       BIT(9)
+#define EnPMAC                         BIT(10)
+#define SIC_SWRST                      BIT(11)
+#define EnSIC                          BIT(12)
+#define SIC_23                         BIT(13)
+#define EnHDP                          BIT(14)
+#define SIC_LBK                                BIT(15)
+
+/* 2 GPIO_PIN_CTRL */
+
+/*  GPIO BIT */
+#define HAL_8192C_HW_GPIO_WPS_BIT      BIT(2)
+
+/* 2 GPIO_INTM */
+
+/* 2 LEDCFG */
+#define LED0PL                         BIT(4)
+#define LED0DIS                                BIT(7)
+#define LED1DIS                                BIT(15)
+#define LED1PL                         BIT(12)
+
+#define  SECCAM_CLR                    BIT(30)
+
+
+/* 2 FSIMR */
+
+/* 2 FSISR */
+
+
+/* 2 8051FWDL */
+/* 2 MCUFWDL */
+#define MCUFWDL_EN                     BIT(0)
+#define MCUFWDL_RDY                    BIT(1)
+#define FWDL_ChkSum_rpt                        BIT(2)
+#define MACINI_RDY                     BIT(3)
+#define BBINI_RDY                      BIT(4)
+#define RFINI_RDY                      BIT(5)
+#define WINTINI_RDY                    BIT(6)
+#define CPRST                          BIT(23)
+
+/* 2REG_HPON_FSM */
+#define BOND92CE_1T2R_CFG              BIT(22)
+
+
+/* 2 REG_SYS_CFG */
+#define XCLK_VLD                       BIT(0)
+#define ACLK_VLD                       BIT(1)
+#define UCLK_VLD                       BIT(2)
+#define PCLK_VLD                       BIT(3)
+#define PCIRSTB                                BIT(4)
+#define V15_VLD                                BIT(5)
+#define TRP_B15V_EN                    BIT(7)
+#define SIC_IDLE                       BIT(8)
+#define BD_MAC2                                BIT(9)
+#define BD_MAC1                                BIT(10)
+#define IC_MACPHY_MODE                 BIT(11)
+#define CHIP_VER                       (BIT(12)|BIT(13)|BIT(14)|BIT(15))
+#define BT_FUNC                                BIT(16)
+#define VENDOR_ID                      BIT(19)
+#define PAD_HWPD_IDN                   BIT(22)
+#define TRP_VAUX_EN                    BIT(23)
+#define TRP_BT_EN                      BIT(24)
+#define BD_PKG_SEL                     BIT(25)
+#define BD_HCI_SEL                     BIT(26)
+#define TYPE_ID                                BIT(27)
+
+#define CHIP_VER_RTL_MASK              0xF000  /* Bit 12 ~ 15 */
+#define CHIP_VER_RTL_SHIFT             12
+
+/* 2REG_GPIO_OUTSTS (For RTL8723 only) */
+#define        EFS_HCI_SEL                     (BIT(0)|BIT(1))
+#define        PAD_HCI_SEL                     (BIT(2)|BIT(3))
+#define        HCI_SEL                         (BIT(4)|BIT(5))
+#define        PKG_SEL_HCI                     BIT(6)
+#define        FEN_GPS                         BIT(7)
+#define        FEN_BT                          BIT(8)
+#define        FEN_WL                          BIT(9)
+#define        FEN_PCI                         BIT(10)
+#define        FEN_USB                         BIT(11)
+#define        BTRF_HWPDN_N                    BIT(12)
+#define        WLRF_HWPDN_N                    BIT(13)
+#define        PDN_BT_N                        BIT(14)
+#define        PDN_GPS_N                       BIT(15)
+#define        BT_CTL_HWPDN                    BIT(16)
+#define        GPS_CTL_HWPDN                   BIT(17)
+#define        PPHY_SUSB                       BIT(20)
+#define        UPHY_SUSB                       BIT(21)
+#define        PCI_SUSEN                       BIT(22)
+#define        USB_SUSEN                       BIT(23)
+#define        RF_RL_ID                        (BIT(31)|BIT(30)|BIT(29)|BIT(28))
+
+/*  */
+/*  */
+/*     0x0100h ~ 0x01FFh       MACTOP General Configuration */
+/*  */
+/*  */
+
+
+/* 2 Function Enable Registers */
+/* 2 CR */
+
+#define REG_LBMODE                     (REG_CR + 3)
+
+
+#define HCI_TXDMA_EN                   BIT(0)
+#define HCI_RXDMA_EN                   BIT(1)
+#define TXDMA_EN                       BIT(2)
+#define RXDMA_EN                       BIT(3)
+#define PROTOCOL_EN                    BIT(4)
+#define SCHEDULE_EN                    BIT(5)
+#define MACTXEN                                BIT(6)
+#define MACRXEN                                BIT(7)
+#define ENSWBCN                                BIT(8)
+#define ENSEC                          BIT(9)
+
+#define _LBMODE(x)                     (((x) & 0xF) << 24)
+#define MASK_LBMODE                    0xF000000
+#define LOOPBACK_NORMAL                        0x0
+#define LOOPBACK_IMMEDIATELY           0xB
+#define LOOPBACK_MAC_DELAY             0x3
+#define LOOPBACK_PHY                   0x1
+#define LOOPBACK_DMA                   0x7
+
+
+/* 2 PBP - Page Size Register */
+#define GET_RX_PAGE_SIZE(value)                ((value) & 0xF)
+#define GET_TX_PAGE_SIZE(value)                (((value) & 0xF0) >> 4)
+#define _PSRX_MASK                     0xF
+#define _PSTX_MASK                     0xF0
+#define _PSRX(x)                       (x)
+#define _PSTX(x)                       ((x) << 4)
+
+#define PBP_64                         0x0
+#define PBP_128                                0x1
+#define PBP_256                                0x2
+#define PBP_512                                0x3
+#define PBP_1024                       0x4
+
+
+/* 2 TX/RXDMA */
+#define RXDMA_ARBBW_EN                 BIT(0)
+#define RXSHFT_EN                      BIT(1)
+#define RXDMA_AGG_EN                   BIT(2)
+#define QS_VO_QUEUE                    BIT(8)
+#define QS_VI_QUEUE                    BIT(9)
+#define QS_BE_QUEUE                    BIT(10)
+#define QS_BK_QUEUE                    BIT(11)
+#define QS_MANAGER_QUEUE               BIT(12)
+#define QS_HIGH_QUEUE                  BIT(13)
+
+#define HQSEL_VOQ                      BIT(0)
+#define HQSEL_VIQ                      BIT(1)
+#define HQSEL_BEQ                      BIT(2)
+#define HQSEL_BKQ                      BIT(3)
+#define HQSEL_MGTQ                     BIT(4)
+#define HQSEL_HIQ                      BIT(5)
+
+/*  For normal driver, 0x10C */
+#define _TXDMA_HIQ_MAP(x)              (((x)&0x3) << 14)
+#define _TXDMA_MGQ_MAP(x)              (((x)&0x3) << 12)
+#define _TXDMA_BKQ_MAP(x)              (((x)&0x3) << 10)
+#define _TXDMA_BEQ_MAP(x)              (((x)&0x3) << 8)
+#define _TXDMA_VIQ_MAP(x)              (((x)&0x3) << 6)
+#define _TXDMA_VOQ_MAP(x)              (((x)&0x3) << 4)
+
+#define QUEUE_LOW                      1
+#define QUEUE_NORMAL                   2
+#define QUEUE_HIGH                     3
+
+
+
+/* 2 TRXFF_BNDY */
+
+
+/* 2 LLT_INIT */
+#define _LLT_NO_ACTIVE                 0x0
+#define _LLT_WRITE_ACCESS              0x1
+#define _LLT_READ_ACCESS               0x2
+
+#define _LLT_INIT_DATA(x)              ((x) & 0xFF)
+#define _LLT_INIT_ADDR(x)              (((x) & 0xFF) << 8)
+#define _LLT_OP(x)                     (((x) & 0x3) << 30)
+#define _LLT_OP_VALUE(x)               (((x) >> 30) & 0x3)
+
+
+/* 2 BB_ACCESS_CTRL */
+#define BB_WRITE_READ_MASK             (BIT(31) | BIT(30))
+#define BB_WRITE_EN                    BIT(30)
+#define BB_READ_EN                     BIT(31)
+/* define BB_ADDR_MASK                 0xFFF */
+/* define _BB_ADDR(x)                  ((x) & BB_ADDR_MASK) */
+
+/*  */
+/*  */
+/*     0x0200h ~ 0x027Fh       TXDMA Configuration */
+/*  */
+/*  */
+/* 2 RQPN */
+#define _HPQ(x)                                ((x) & 0xFF)
+#define _LPQ(x)                                (((x) & 0xFF) << 8)
+#define _PUBQ(x)                       (((x) & 0xFF) << 16)
+       /*  NOTE: in RQPN_NPQ register */
+#define _NPQ(x)                                ((x) & 0xFF)
+
+
+#define HPQ_PUBLIC_DIS                 BIT(24)
+#define LPQ_PUBLIC_DIS                 BIT(25)
+#define LD_RQPN                                BIT(31)
+
+
+/* 2 TDECTRL */
+#define BCN_VALID                      BIT(16)
+#define BCN_HEAD(x)                    (((x) & 0xFF) << 8)
+#define        BCN_HEAD_MASK                   0xFF00
+
+/* 2 TDECTL */
+#define BLK_DESC_NUM_SHIFT             4
+#define BLK_DESC_NUM_MASK              0xF
+
+
+/* 2 TXDMA_OFFSET_CHK */
+#define DROP_DATA_EN                   BIT(9)
+
+/*  */
+/*  */
+/*     0x0400h ~ 0x047Fh       Protocol Configuration */
+/*  */
+/*  */
+/* 2 FWHW_TXQ_CTRL */
+#define EN_AMPDU_RTY_NEW               BIT(7)
+
+/* 2 INIRTSMCS_SEL */
+#define _INIRTSMCS_SEL(x)              ((x) & 0x3F)
+
+
+/* 2 SPEC SIFS */
+#define _SPEC_SIFS_CCK(x)              ((x) & 0xFF)
+#define _SPEC_SIFS_OFDM(x)             (((x) & 0xFF) << 8)
+
+
+/* 2 RRSR */
+
+#define RATE_REG_BITMAP_ALL            0xFFFFF
+
+#define _RRSC_BITMAP(x)                        ((x) & 0xFFFFF)
+
+#define _RRSR_RSC(x)                   (((x) & 0x3) << 21)
+#define RRSR_RSC_RESERVED              0x0
+#define RRSR_RSC_UPPER_SUBCHANNEL      0x1
+#define RRSR_RSC_LOWER_SUBCHANNEL      0x2
+#define RRSR_RSC_DUPLICATE_MODE                0x3
+
+
+/* 2 ARFR */
+#define USE_SHORT_G1                   BIT(20)
+
+/* 2 AGGLEN_LMT_L */
+#define _AGGLMT_MCS0(x)                        ((x) & 0xF)
+#define _AGGLMT_MCS1(x)                        (((x) & 0xF) << 4)
+#define _AGGLMT_MCS2(x)                        (((x) & 0xF) << 8)
+#define _AGGLMT_MCS3(x)                        (((x) & 0xF) << 12)
+#define _AGGLMT_MCS4(x)                        (((x) & 0xF) << 16)
+#define _AGGLMT_MCS5(x)                        (((x) & 0xF) << 20)
+#define _AGGLMT_MCS6(x)                        (((x) & 0xF) << 24)
+#define _AGGLMT_MCS7(x)                        (((x) & 0xF) << 28)
+
+
+/* 2 RL */
+#define        RETRY_LIMIT_SHORT_SHIFT         8
+#define        RETRY_LIMIT_LONG_SHIFT          0
+
+
+/* 2 DARFRC */
+#define _DARF_RC1(x)                   ((x) & 0x1F)
+#define _DARF_RC2(x)                   (((x) & 0x1F) << 8)
+#define _DARF_RC3(x)                   (((x) & 0x1F) << 16)
+#define _DARF_RC4(x)                   (((x) & 0x1F) << 24)
+/*  NOTE: shift starting from address (DARFRC + 4) */
+#define _DARF_RC5(x)                   ((x) & 0x1F)
+#define _DARF_RC6(x)                   (((x) & 0x1F) << 8)
+#define _DARF_RC7(x)                   (((x) & 0x1F) << 16)
+#define _DARF_RC8(x)                   (((x) & 0x1F) << 24)
+
+
+/* 2 RARFRC */
+#define _RARF_RC1(x)                   ((x) & 0x1F)
+#define _RARF_RC2(x)                   (((x) & 0x1F) << 8)
+#define _RARF_RC3(x)                   (((x) & 0x1F) << 16)
+#define _RARF_RC4(x)                   (((x) & 0x1F) << 24)
+/*  NOTE: shift starting from address (RARFRC + 4) */
+#define _RARF_RC5(x)                   ((x) & 0x1F)
+#define _RARF_RC6(x)                   (((x) & 0x1F) << 8)
+#define _RARF_RC7(x)                   (((x) & 0x1F) << 16)
+#define _RARF_RC8(x)                   (((x) & 0x1F) << 24)
+
+
+/*  */
+/*  */
+/*     0x0500h ~ 0x05FFh       EDCA Configuration */
+/*  */
+/*  */
+
+
+
+/* 2 EDCA setting */
+#define AC_PARAM_TXOP_LIMIT_OFFSET     16
+#define AC_PARAM_ECW_MAX_OFFSET                12
+#define AC_PARAM_ECW_MIN_OFFSET                8
+#define AC_PARAM_AIFS_OFFSET           0
+
+
+/* 2 EDCA_VO_PARAM */
+#define _AIFS(x)                       (x)
+#define _ECW_MAX_MIN(x)                        ((x) << 8)
+#define _TXOP_LIMIT(x)                 ((x) << 16)
+
+
+#define _BCNIFS(x)                     ((x) & 0xFF)
+#define _BCNECW(x)                     (((x) & 0xF))<< 8)
+
+
+#define _LRL(x)                                ((x) & 0x3F)
+#define _SRL(x)                                (((x) & 0x3F) << 8)
+
+
+/* 2 SIFS_CCK */
+#define _SIFS_CCK_CTX(x)               ((x) & 0xFF)
+#define _SIFS_CCK_TRX(x)               (((x) & 0xFF) << 8);
+
+
+/* 2 SIFS_OFDM */
+#define _SIFS_OFDM_CTX(x)              ((x) & 0xFF)
+#define _SIFS_OFDM_TRX(x)              (((x) & 0xFF) << 8);
+
+
+/* 2 TBTT PROHIBIT */
+#define _TBTT_PROHIBIT_HOLD(x)         (((x) & 0xFF) << 8)
+
+
+/* 2 REG_RD_CTRL */
+#define DIS_EDCA_CNT_DWN               BIT(11)
+
+
+/* 2 BCN_CTRL */
+#define EN_MBSSID                      BIT(1)
+#define EN_TXBCN_RPT                   BIT(2)
+#define        EN_BCN_FUNCTION                 BIT(3)
+#define DIS_TSF_UPDATE                 BIT(3)
+
+/*  The same function but different bit field. */
+#define        DIS_TSF_UDT0_NORMAL_CHIP        BIT(4)
+#define        DIS_TSF_UDT0_TEST_CHIP          BIT(5)
+
+/* 2 ACMHWCTRL */
+#define        AcmHw_HwEn                      BIT(0)
+#define        AcmHw_BeqEn                     BIT(1)
+#define        AcmHw_ViqEn                     BIT(2)
+#define        AcmHw_VoqEn                     BIT(3)
+#define        AcmHw_BeqStatus                 BIT(4)
+#define        AcmHw_ViqStatus                 BIT(5)
+#define        AcmHw_VoqStatus                 BIT(6)
+
+
+
+/*  */
+/*  */
+/*     0x0600h ~ 0x07FFh       WMAC Configuration */
+/*  */
+/*  */
+
+/* 2 APSD_CTRL */
+#define APSDOFF                                BIT(6)
+#define APSDOFF_STATUS                 BIT(7)
+
+
+/* 2 BWOPMODE */
+#define BW_20MHZ                       BIT(2)
+
+
+#define RATE_BITMAP_ALL                        0xFFFFF
+
+/*  Only use CCK 1M rate for ACK */
+#define RATE_RRSR_CCK_ONLY_1M          0xFFFF1
+
+/* 2 TCR */
+#define TSFRST                         BIT(0)
+#define DIS_GCLK                       BIT(1)
+#define PAD_SEL                                BIT(2)
+#define PWR_ST                         BIT(6)
+#define PWRBIT_OW_EN                   BIT(7)
+#define ACRC                           BIT(8)
+#define CFENDFORM                      BIT(9)
+#define ICV                            BIT(10)
+
+
+
+/* 2 RCR */
+#define AAP                            BIT(0)
+#define APM                            BIT(1)
+#define AM                             BIT(2)
+#define AB                             BIT(3)
+#define ADD3                           BIT(4)
+#define APWRMGT                                BIT(5)
+#define CBSSID                         BIT(6)
+#define CBSSID_BCN                     BIT(7)
+#define ACRC32                         BIT(8)
+#define AICV                           BIT(9)
+#define ADF                            BIT(11)
+#define ACF                            BIT(12)
+#define AMF                            BIT(13)
+#define HTC_LOC_CTRL                   BIT(14)
+#define UC_DATA_EN                     BIT(16)
+#define BM_DATA_EN                     BIT(17)
+#define MFBEN                          BIT(22)
+#define LSIGEN                         BIT(23)
+#define EnMBID                         BIT(24)
+#define APP_BASSN                      BIT(27)
+#define APP_PHYSTS                     BIT(28)
+#define APP_ICV                                BIT(29)
+#define APP_MIC                                BIT(30)
+#define APP_FCS                                BIT(31)
+
+/* 2 RX_PKT_LIMIT */
+
+/* 2 RX_DLK_TIME */
+
+/* 2 MBIDCAMCFG */
+
+
+
+/* 2 AMPDU_MIN_SPACE */
+#define _MIN_SPACE(x)                  ((x) & 0x7)
+#define _SHORT_GI_PADDING(x)           (((x) & 0x1F) << 3)
+
+
+/* 2 RXERR_RPT */
+#define RXERR_TYPE_OFDM_PPDU           0
+#define RXERR_TYPE_OFDMfalse_ALARM     1
+#define        RXERR_TYPE_OFDM_MPDU_OK         2
+#define RXERR_TYPE_OFDM_MPDU_FAIL      3
+#define RXERR_TYPE_CCK_PPDU            4
+#define RXERR_TYPE_CCKfalse_ALARM      5
+#define RXERR_TYPE_CCK_MPDU_OK         6
+#define RXERR_TYPE_CCK_MPDU_FAIL       7
+#define RXERR_TYPE_HT_PPDU             8
+#define RXERR_TYPE_HTfalse_ALARM       9
+#define RXERR_TYPE_HT_MPDU_TOTAL       10
+#define RXERR_TYPE_HT_MPDU_OK          11
+#define RXERR_TYPE_HT_MPDU_FAIL                12
+#define RXERR_TYPE_RX_FULL_DROP                15
+
+#define RXERR_COUNTER_MASK             0xFFFFF
+#define RXERR_RPT_RST                  BIT(27)
+#define _RXERR_RPT_SEL(type)           ((type) << 28)
+
+
+/* 2 SECCFG */
+#define        SCR_TxUseDK                     BIT(0)  /* Force Tx Use Default Key */
+#define        SCR_RxUseDK                     BIT(1)  /* Force Rx Use Default Key */
+#define        SCR_TxEncEnable                 BIT(2)  /* Enable Tx Encryption */
+#define        SCR_RxDecEnable                 BIT(3)  /* Enable Rx Decryption */
+#define        SCR_SKByA2                      BIT(4)  /* Search kEY BY A2 */
+#define        SCR_NoSKMC                      BIT(5)  /* No Key Search Multicast */
+
+
+
+/*  */
+/*  */
+/*     0xFE00h ~ 0xFE55h       USB Configuration */
+/*  */
+/*  */
+
+/* 2 USB Information (0xFE17) */
+#define USB_IS_HIGH_SPEED              0
+#define USB_IS_FULL_SPEED              1
+#define USB_SPEED_MASK                 BIT(5)
+
+#define USB_NORMAL_SIE_EP_MASK         0xF
+#define USB_NORMAL_SIE_EP_SHIFT                4
+
+#define USB_TEST_EP_MASK               0x30
+#define USB_TEST_EP_SHIFT              4
+
+/* 2 Special Option */
+#define USB_AGG_EN                     BIT(3)
+
+
+/* 2REG_C2HEVT_CLEAR */
+       /*  Set by driver and notify FW that the driver has read the
+           C2H command message */
+#define C2H_EVT_HOST_CLOSE             0x00
+       /*  Set by FW indicating that FW had set the C2H command message
+           and it's not yet read by driver. */
+#define C2H_EVT_FW_CLOSE               0xFF
+
+
+/* 2REG_MULTI_FUNC_CTRL(For RTL8723 Only) */
+       /*  Enable GPIO[9] as WiFi HW PDn source */
+#define        WL_HWPDN_EN                     BIT(0)
+       /*  WiFi HW PDn polarity control */
+#define        WL_HWPDN_SL                     BIT(1)
+       /*  WiFi function enable */
+#define        WL_FUNC_EN                      BIT(2)
+       /*  Enable GPIO[9] as WiFi RF HW PDn source */
+#define        WL_HWROF_EN                     BIT(3)
+       /*  Enable GPIO[11] as BT HW PDn source */
+#define        BT_HWPDN_EN                     BIT(16)
+       /*  BT HW PDn polarity control */
+#define        BT_HWPDN_SL                     BIT(17)
+       /*  BT function enable */
+#define        BT_FUNC_EN                      BIT(18)
+       /*  Enable GPIO[11] as BT/GPS RF HW PDn source */
+#define        BT_HWROF_EN                     BIT(19)
+       /*  Enable GPIO[10] as GPS HW PDn source */
+#define        GPS_HWPDN_EN                    BIT(20)
+       /*  GPS HW PDn polarity control */
+#define        GPS_HWPDN_SL                    BIT(21)
+       /*  GPS function enable */
+#define        GPS_FUNC_EN                     BIT(22)
+
+/* 3 REG_LIFECTRL_CTRL */
+#define        HAL92C_EN_PKT_LIFE_TIME_BK      BIT(3)
+#define        HAL92C_EN_PKT_LIFE_TIME_BE      BIT(2)
+#define        HAL92C_EN_PKT_LIFE_TIME_VI      BIT(1)
+#define        HAL92C_EN_PKT_LIFE_TIME_VO      BIT(0)
+
+#define        HAL92C_MSDU_LIFE_TIME_UNIT      128     /*  in us, said by Tim. */
+
+/*  */
+/*  General definitions */
+/*  */
+
+#define LAST_ENTRY_OF_TX_PKT_BUFFER    255
+
+#define POLLING_LLT_THRESHOLD          20
+#define POLLING_READY_TIMEOUT_COUNT    1000
+
+/*  Min Spacing related settings. */
+#define        MAX_MSS_DENSITY_2T              0x13
+#define        MAX_MSS_DENSITY_1T              0x0A
+
+/*  */
+/*     8723A Regsiter offset definition */
+/*  */
+#define HAL_8723A_NAV_UPPER_UNIT       128             /*  micro-second */
+
+/*  */
+/*  */
+/*     0x0000h ~ 0x00FFh       System Configuration */
+/*  */
+/*  */
+#define REG_SYSON_REG_LOCK             0x001C
+
+
+/*  */
+/*  */
+/*     0x0100h ~ 0x01FFh       MACTOP General Configuration */
+/*  */
+/*  */
+#define REG_FTIMR                      0x0138
+
+
+/*  */
+/*  */
+/*     0x0200h ~ 0x027Fh       TXDMA Configuration */
+/*  */
+/*  */
+
+
+/*  */
+/*  */
+/*     0x0280h ~ 0x02FFh       RXDMA Configuration */
+/*  */
+/*  */
+
+
+/*  */
+/*  */
+/*     0x0300h ~ 0x03FFh       PCIe */
+/*  */
+/*  */
+
+
+/*  */
+/*  */
+/*     0x0400h ~ 0x047Fh       Protocol Configuration */
+/*  */
+/*  */
+#define REG_EARLY_MODE_CONTROL         0x4D0
+
+
+/*  */
+/*  */
+/*     0x0500h ~ 0x05FFh       EDCA Configuration */
+/*  */
+/*  */
+
+/* 2 BCN_CTRL */
+#define DIS_ATIM                       BIT(0)
+#define DIS_BCNQ_SUB                   BIT(1)
+#define DIS_TSF_UDT                    BIT(4)
+
+
+/*  */
+/*  */
+/*     0x0600h ~ 0x07FFh       WMAC Configuration */
+/*  */
+/*  */
+/*  */
+/*  Note: */
+/*     The NAV upper value is very important to WiFi 11n 5.2.3 NAV test.
+ *     The default value is always too small, but the WiFi TestPlan test
+ *     by 25,000 microseconds of NAV through sending CTS in the air. We
+ *     must update this value greater than 25,000 microseconds to pass the
+ *     item.
+*      The offset of NAV_UPPER in 8192C Spec is incorrect, and the offset
+*      should be 0x0652. Commented by SD1 Scott. */
+/*  By Bruce, 2011-07-18. */
+/*  */
+#define        REG_NAV_UPPER                   0x0652  /*  unit of 128 */
+
+
+/*  */
+/*     8723 Regsiter Bit and Content definition */
+/*  */
+
+/*  */
+/*  */
+/*     0x0000h ~ 0x00FFh       System Configuration */
+/*  */
+/*  */
+
+/* 2 SPS0_CTRL */
+
+/* 2 SYS_ISO_CTRL */
+
+/* 2 SYS_FUNC_EN */
+
+/* 2 APS_FSMCO */
+#define EN_WLON                                BIT(16)
+
+/* 2 SYS_CLKR */
+
+/* 2 9346CR */
+
+/* 2 AFE_MISC */
+
+/* 2 SPS0_CTRL */
+
+/* 2 SPS_OCP_CFG */
+
+/* 2 SYSON_REG_LOCK */
+#define WLOCK_ALL                      BIT(0)
+#define WLOCK_00                       BIT(1)
+#define WLOCK_04                       BIT(2)
+#define WLOCK_08                       BIT(3)
+#define WLOCK_40                       BIT(4)
+#define WLOCK_1C_B6                    BIT(5)
+#define R_DIS_PRST_1                   BIT(6)
+#define LOCK_ALL_EN                    BIT(7)
+
+/* 2 RF_CTRL */
+
+/* 2 LDOA15_CTRL */
+
+/* 2 LDOV12D_CTRL */
+
+/* 2 AFE_XTAL_CTRL */
+
+/* 2 AFE_PLL_CTRL */
+
+/* 2 EFUSE_CTRL */
+
+/* 2 EFUSE_TEST (For RTL8723 partially) */
+
+/* 2 PWR_DATA */
+
+/* 2 CAL_TIMER */
+
+/* 2 ACLK_MON */
+
+/* 2 GPIO_MUXCFG */
+
+/* 2 GPIO_PIN_CTRL */
+
+/* 2 GPIO_INTM */
+
+/* 2 LEDCFG */
+
+/* 2 FSIMR */
+
+/* 2 FSISR */
+
+/* 2 HSIMR */
+/*  8723 Host System Interrupt Mask Register (offset 0x58, 32 byte) */
+#define HSIMR_GPIO12_0_INT_EN          BIT(0)
+#define HSIMR_SPS_OCP_INT_EN           BIT(5)
+#define HSIMR_RON_INT_EN               BIT(6)
+#define HSIMR_PDNINT_EN                        BIT(7)
+#define HSIMR_GPIO9_INT_EN             BIT(25)
+
+/* 2 HSISR */
+/*  8723 Host System Interrupt Status Register (offset 0x5C, 32 byte) */
+#define HSISR_GPIO12_0_INT             BIT(0)
+#define HSISR_SPS_OCP_INT              BIT(5)
+#define HSISR_RON_INT                  BIT(6)
+#define HSISR_PDNINT                   BIT(7)
+#define        HSISR_GPIO9_INT                 BIT(25)
+
+/*  interrupt mask which needs to clear */
+#define MASK_HSISR_CLEAR               (HSISR_GPIO12_0_INT | \
+                                        HSISR_SPS_OCP_INT | \
+                                        HSISR_RON_INT | \
+                                        HSISR_PDNINT | \
+                                        HSISR_GPIO9_INT)
+
+/* 2 MCUFWDL */
+#define RAM_DL_SEL                     BIT(7)  /*  1:RAM, 0:ROM */
+
+/* 2 HPON_FSM */
+
+/* 2 SYS_CFG */
+#define RTL_ID                         BIT(23) /*  TestChip ID,
+                                                   1:Test(RLE); 0:MP(RL) */
+#define SPS_SEL                                BIT(24) /*  1:LDO regulator mode;
+                                                   0:Switching regulator mode*/
+
+
+/*  */
+/*  */
+/*     0x0100h ~ 0x01FFh       MACTOP General Configuration */
+/*  */
+/*  */
+
+/* 2 Function Enable Registers */
+
+/* 2 CR */
+#define CALTMR_EN                      BIT(10)
+
+/* 2 PBP - Page Size Register */
+
+/* 2 TX/RXDMA */
+
+/* 2 TRXFF_BNDY */
+
+/* 2 LLT_INIT */
+
+/* 2 BB_ACCESS_CTRL */
+
+
+/*  */
+/*  */
+/*     0x0200h ~ 0x027Fh       TXDMA Configuration */
+/*  */
+/*  */
+
+/* 2 RQPN */
+
+/* 2 TDECTRL */
+
+/* 2 TDECTL */
+
+/* 2 TXDMA_OFFSET_CHK */
+
+
+/*  */
+/*  */
+/*     0x0400h ~ 0x047Fh       Protocol Configuration */
+/*  */
+/*  */
+
+/* 2 FWHW_TXQ_CTRL */
+
+/* 2 INIRTSMCS_SEL */
+
+/* 2 SPEC SIFS */
+
+/* 2 RRSR */
+
+/* 2 ARFR */
+
+/* 2 AGGLEN_LMT_L */
+
+/* 2 RL */
+
+/* 2 DARFRC */
+
+/* 2 RARFRC */
+
+
+/*  */
+/*  */
+/*     0x0500h ~ 0x05FFh       EDCA Configuration */
+/*  */
+/*  */
+
+/* 2 EDCA setting */
+
+/* 2 EDCA_VO_PARAM */
+
+/* 2 SIFS_CCK */
+
+/* 2 SIFS_OFDM */
+
+/* 2 TBTT PROHIBIT */
+
+/* 2 REG_RD_CTRL */
+
+/* 2 BCN_CTRL */
+
+/* 2 ACMHWCTRL */
+
+
+/*  */
+/*  */
+/*     0x0600h ~ 0x07FFh       WMAC Configuration */
+/*  */
+/*  */
+
+/* 2 APSD_CTRL */
+
+/* 2 BWOPMODE */
+
+/* 2 TCR */
+
+/* 2 RCR */
+
+/* 2 RX_PKT_LIMIT */
+
+/* 2 RX_DLK_TIME */
+
+/* 2 MBIDCAMCFG */
+
+/* 2 AMPDU_MIN_SPACE */
+
+/* 2 RXERR_RPT */
+
+/* 2 SECCFG */
+
+
+/*  */
+/*  */
+/*     0xFE00h ~ 0xFE55h       RTL8723 SDIO Configuration */
+/*  */
+/*  */
+
+/*  I/O bus domain address mapping */
+#define WLAN_IOREG_BASE                        0x10260000
+#define FIRMWARE_FIFO_BASE             0x10270000
+#define TX_HIQ_BASE                    0x10310000
+#define TX_MIQ_BASE                    0x10320000
+#define TX_LOQ_BASE                    0x10330000
+#define RX_RX0FF_BASE                  0x10340000
+
+/*  SDIO host local register space mapping. */
+#define WLAN_IOREG_MSK                 0x7FFF
+#define WLAN_FIFO_MSK                  0x1FFF  /*  Aggregation Length[12:0] */
+#define WLAN_RX0FF_MSK                 0x0003
+
+#define WLAN_RX0FF_DEVICE_ID           7       /*  0b[16], 111b[15:13] */
+#define WLAN_IOREG_DEVICE_ID           8       /*  1b[16] */
+
+/*  8723 EFUSE */
+#define HWSET_MAX_SIZE                 256
+
+
+/* USB interrupt */
+#define        UHIMR_TIMEOUT2                  BIT(31)
+#define        UHIMR_TIMEOUT1                  BIT(30)
+#define        UHIMR_PSTIMEOUT                 BIT(29)
+#define        UHIMR_GTINT4                    BIT(28)
+#define        UHIMR_GTINT3                    BIT(27)
+#define        UHIMR_TXBCNERR                  BIT(26)
+#define        UHIMR_TXBCNOK                   BIT(25)
+#define        UHIMR_TSF_BIT32_TOGGLE          BIT(24)
+#define        UHIMR_BCNDMAINT3                BIT(23)
+#define        UHIMR_BCNDMAINT2                BIT(22)
+#define        UHIMR_BCNDMAINT1                BIT(21)
+#define        UHIMR_BCNDMAINT0                BIT(20)
+#define        UHIMR_BCNDOK3                   BIT(19)
+#define        UHIMR_BCNDOK2                   BIT(18)
+#define        UHIMR_BCNDOK1                   BIT(17)
+#define        UHIMR_BCNDOK0                   BIT(16)
+#define        UHIMR_HSISR_IND                 BIT(15)
+#define        UHIMR_BCNDMAINT_E               BIT(14)
+/* RSVD        BIT(13) */
+#define        UHIMR_CTW_END                   BIT(12)
+/* RSVD        BIT(11) */
+#define        UHIMR_C2HCMD                    BIT(10)
+#define        UHIMR_CPWM2                     BIT(9)
+#define        UHIMR_CPWM                      BIT(8)
+#define        UHIMR_HIGHDOK                   BIT(7)  /*  High Queue DMA OK
+                                                   Interrupt */
+#define        UHIMR_MGNTDOK                   BIT(6)  /*  Management Queue DMA OK
+                                                   Interrupt */
+#define        UHIMR_BKDOK                     BIT(5)  /*  AC_BK DMA OK Interrupt */
+#define        UHIMR_BEDOK                     BIT(4)  /*  AC_BE DMA OK Interrupt */
+#define        UHIMR_VIDOK                     BIT(3)  /*  AC_VI DMA OK Interrupt */
+#define        UHIMR_VODOK                     BIT(2)  /*  AC_VO DMA Interrupt */
+#define        UHIMR_RDU                       BIT(1)  /*  Receive Descriptor
+                                                   Unavailable */
+#define        UHIMR_ROK                       BIT(0)  /*  Receive DMA OK Interrupt */
+
+/*  USB Host Interrupt Status Extension bit */
+#define        UHIMR_BCNDMAINT7                BIT(23)
+#define        UHIMR_BCNDMAINT6                BIT(22)
+#define        UHIMR_BCNDMAINT5                BIT(21)
+#define        UHIMR_BCNDMAINT4                BIT(20)
+#define        UHIMR_BCNDOK7                   BIT(19)
+#define        UHIMR_BCNDOK6                   BIT(18)
+#define        UHIMR_BCNDOK5                   BIT(17)
+#define        UHIMR_BCNDOK4                   BIT(16)
+/*  bit14-15: RSVD */
+#define        UHIMR_ATIMEND_E                 BIT(13)
+#define        UHIMR_ATIMEND                   BIT(12)
+#define        UHIMR_TXERR                     BIT(11)
+#define        UHIMR_RXERR                     BIT(10)
+#define        UHIMR_TXFOVW                    BIT(9)
+#define        UHIMR_RXFOVW                    BIT(8)
+/*  bit2-7: RSVD */
+#define        UHIMR_OCPINT                    BIT(1)
+/*  bit0: RSVD */
+
+#define        REG_USB_HIMR                    0xFE38
+#define        REG_USB_HIMRE                   0xFE3C
+#define        REG_USB_HISR                    0xFE78
+#define        REG_USB_HISRE                   0xFE7C
+
+#define        USB_INTR_CPWM_OFFSET            16
+#define        USB_INTR_CONTENT_HISR_OFFSET    48
+#define        USB_INTR_CONTENT_HISRE_OFFSET   52
+#define        USB_INTR_CONTENT_LENGTH         56
+#define        USB_C2H_CMDID_OFFSET            0
+#define        USB_C2H_SEQ_OFFSET              1
+#define        USB_C2H_EVENT_OFFSET            2
+/*  */
+/*     General definitions */
+/*  */
+
+#endif