/****************************************************************************** * Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved. * * 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. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * * The full GNU General Public License is included in this distribution in the * file called LICENSE. * * Contact Information: * wlanfae ******************************************************************************/ #ifndef R8190P_DEF_H #define R8190P_DEF_H #include #define MAX_SILENT_RESET_RX_SLOT_NUM 10 #define RX_MPDU_QUEUE 0 #define RX_CMD_QUEUE 1 enum rtl819x_loopback { RTL819X_NO_LOOPBACK = 0, RTL819X_MAC_LOOPBACK = 1, RTL819X_DMA_LOOPBACK = 2, RTL819X_CCK_LOOPBACK = 3, }; #define RESET_DELAY_8185 20 #define RT_IBSS_INT_MASKS (IMR_BcnInt | IMR_BcnInt | IMR_TBDOK | IMR_TBDER) #define DESC90_RATE1M 0x00 #define DESC90_RATE2M 0x01 #define DESC90_RATE5_5M 0x02 #define DESC90_RATE11M 0x03 #define DESC90_RATE6M 0x04 #define DESC90_RATE9M 0x05 #define DESC90_RATE12M 0x06 #define DESC90_RATE18M 0x07 #define DESC90_RATE24M 0x08 #define DESC90_RATE36M 0x09 #define DESC90_RATE48M 0x0a #define DESC90_RATE54M 0x0b #define DESC90_RATEMCS0 0x00 #define DESC90_RATEMCS1 0x01 #define DESC90_RATEMCS2 0x02 #define DESC90_RATEMCS3 0x03 #define DESC90_RATEMCS4 0x04 #define DESC90_RATEMCS5 0x05 #define DESC90_RATEMCS6 0x06 #define DESC90_RATEMCS7 0x07 #define DESC90_RATEMCS8 0x08 #define DESC90_RATEMCS9 0x09 #define DESC90_RATEMCS10 0x0a #define DESC90_RATEMCS11 0x0b #define DESC90_RATEMCS12 0x0c #define DESC90_RATEMCS13 0x0d #define DESC90_RATEMCS14 0x0e #define DESC90_RATEMCS15 0x0f #define DESC90_RATEMCS32 0x20 #define SHORT_SLOT_TIME 9 #define NON_SHORT_SLOT_TIME 20 #define MAX_LINES_HWCONFIG_TXT 1000 #define MAX_BYTES_LINE_HWCONFIG_TXT 128 #define SW_THREE_WIRE 0 #define HW_THREE_WIRE 2 #define BT_DEMO_BOARD 0 #define BT_QA_BOARD 1 #define BT_FPGA 2 #define RX_SMOOTH 20 #define QSLT_BK 0x1 #define QSLT_BE 0x0 #define QSLT_VI 0x4 #define QSLT_VO 0x6 #define QSLT_BEACON 0x10 #define QSLT_HIGH 0x11 #define QSLT_MGNT 0x12 #define QSLT_CMD 0x13 #define NUM_OF_FIRMWARE_QUEUE 10 #define NUM_OF_PAGES_IN_FW 0x100 #define NUM_OF_PAGE_IN_FW_QUEUE_BK 0x007 #define NUM_OF_PAGE_IN_FW_QUEUE_BE 0x0aa #define NUM_OF_PAGE_IN_FW_QUEUE_VI 0x024 #define NUM_OF_PAGE_IN_FW_QUEUE_VO 0x007 #define NUM_OF_PAGE_IN_FW_QUEUE_HCCA 0 #define NUM_OF_PAGE_IN_FW_QUEUE_CMD 0x2 #define NUM_OF_PAGE_IN_FW_QUEUE_MGNT 0x10 #define NUM_OF_PAGE_IN_FW_QUEUE_HIGH 0 #define NUM_OF_PAGE_IN_FW_QUEUE_BCN 0x4 #define NUM_OF_PAGE_IN_FW_QUEUE_PUB 0xd #define NUM_OF_PAGE_IN_FW_QUEUE_BK_DTM 0x026 #define NUM_OF_PAGE_IN_FW_QUEUE_BE_DTM 0x048 #define NUM_OF_PAGE_IN_FW_QUEUE_VI_DTM 0x048 #define NUM_OF_PAGE_IN_FW_QUEUE_VO_DTM 0x026 #define NUM_OF_PAGE_IN_FW_QUEUE_PUB_DTM 0x00 #define APPLIED_RESERVED_QUEUE_IN_FW 0x80000000 #define RSVD_FW_QUEUE_PAGE_BK_SHIFT 0x00 #define RSVD_FW_QUEUE_PAGE_BE_SHIFT 0x08 #define RSVD_FW_QUEUE_PAGE_VI_SHIFT 0x10 #define RSVD_FW_QUEUE_PAGE_VO_SHIFT 0x18 #define RSVD_FW_QUEUE_PAGE_MGNT_SHIFT 0x10 #define RSVD_FW_QUEUE_PAGE_BCN_SHIFT 0x00 #define RSVD_FW_QUEUE_PAGE_PUB_SHIFT 0x08 #define HAL_PRIME_CHNL_OFFSET_DONT_CARE 0 #define HAL_PRIME_CHNL_OFFSET_LOWER 1 #define HAL_PRIME_CHNL_OFFSET_UPPER 2 enum version_8190_loopback { VERSION_8190_BD = 0x3, VERSION_8190_BE }; #define IC_VersionCut_C 0x2 #define IC_VersionCut_D 0x3 #define IC_VersionCut_E 0x4 enum rf_optype { RF_OP_By_SW_3wire = 0, RF_OP_By_FW, RF_OP_MAX }; enum power_save_mode { POWER_SAVE_MODE_ACTIVE, POWER_SAVE_MODE_SAVE, }; enum interface_select_8190pci { INTF_SEL1_MINICARD = 0, INTF_SEL0_PCIE = 1, INTF_SEL2_RSV = 2, INTF_SEL3_RSV = 3, }; struct bb_reg_definition { u32 rfintfs; u32 rfintfi; u32 rfintfo; u32 rfintfe; u32 rf3wireOffset; u32 rfLSSI_Select; u32 rfTxGainStage; u32 rfHSSIPara1; u32 rfHSSIPara2; u32 rfSwitchControl; u32 rfAGCControl1; u32 rfAGCControl2; u32 rfRxIQImbalance; u32 rfRxAFE; u32 rfTxIQImbalance; u32 rfTxAFE; u32 rfLSSIReadBack; u32 rfLSSIReadBackPi; }; struct tx_fwinfo { u8 TxRate:7; u8 CtsEnable:1; u8 RtsRate:7; u8 RtsEnable:1; u8 TxHT:1; u8 Short:1; u8 TxBandwidth:1; u8 TxSubCarrier:2; u8 STBC:2; u8 AllowAggregation:1; u8 RtsHT:1; u8 RtsShort:1; u8 RtsBandwidth:1; u8 RtsSubcarrier:2; u8 RtsSTBC:2; u8 EnableCPUDur:1; u32 RxMF:2; u32 RxAMD:3; u32 Reserved1:3; u32 TxAGCOffset:4; u32 TxAGCSign:1; u32 Tx_INFO_RSVD:6; u32 PacketID:13; }; struct tx_fwinfo_8190pci { u8 TxRate:7; u8 CtsEnable:1; u8 RtsRate:7; u8 RtsEnable:1; u8 TxHT:1; u8 Short:1; u8 TxBandwidth:1; u8 TxSubCarrier:2; u8 STBC:2; u8 AllowAggregation:1; u8 RtsHT:1; u8 RtsShort:1; u8 RtsBandwidth:1; u8 RtsSubcarrier:2; u8 RtsSTBC:2; u8 EnableCPUDur:1; u32 RxMF:2; u32 RxAMD:3; u32 TxPerPktInfoFeedback:1; u32 Reserved1:2; u32 TxAGCOffset:4; u32 TxAGCSign:1; u32 RAW_TXD:1; u32 Retry_Limit:4; u32 Reserved2:1; u32 PacketID:13; }; #define TX_DESC_SIZE 32 #define TX_DESC_CMD_SIZE 32 #define TX_STATUS_DESC_SIZE 32 #define TX_FWINFO_SIZE 8 #define RX_DESC_SIZE 16 #define RX_STATUS_DESC_SIZE 16 #define RX_DRIVER_INFO_SIZE 8 struct log_int_8190 { u32 nIMR_COMDOK; u32 nIMR_MGNTDOK; u32 nIMR_HIGH; u32 nIMR_VODOK; u32 nIMR_VIDOK; u32 nIMR_BEDOK; u32 nIMR_BKDOK; u32 nIMR_ROK; u32 nIMR_RCOK; u32 nIMR_TBDOK; u32 nIMR_BDOK; u32 nIMR_RXFOVW; }; struct phy_ofdm_rx_status_rxsc_sgien_exintfflag { u8 reserved:4; u8 rxsc:2; u8 sgi_en:1; u8 ex_intf_flag:1; }; struct phy_sts_ofdm_819xpci { u8 trsw_gain_X[4]; u8 pwdb_all; u8 cfosho_X[4]; u8 cfotail_X[4]; u8 rxevm_X[2]; u8 rxsnr_X[4]; u8 pdsnr_X[2]; u8 csi_current_X[2]; u8 csi_target_X[2]; u8 sigevm; u8 max_ex_pwr; u8 sgi_en; u8 rxsc_sgien_exflg; }; struct phy_sts_cck_819xpci { u8 adc_pwdb_X[4]; u8 sq_rpt; u8 cck_agc_rpt; }; #define PHY_RSSI_SLID_WIN_MAX 100 #define PHY_Beacon_RSSI_SLID_WIN_MAX 10 struct tx_desc { u16 PktSize; u8 Offset; u8 Reserved1:3; u8 CmdInit:1; u8 LastSeg:1; u8 FirstSeg:1; u8 LINIP:1; u8 OWN:1; u8 TxFWInfoSize; u8 RATid:3; u8 DISFB:1; u8 USERATE:1; u8 MOREFRAG:1; u8 NoEnc:1; u8 PIFS:1; u8 QueueSelect:5; u8 NoACM:1; u8 Resv:2; u8 SecCAMID:5; u8 SecDescAssign:1; u8 SecType:2; u16 TxBufferSize; u8 PktId:7; u8 Resv1:1; u8 Reserved2; u32 TxBuffAddr; u32 NextDescAddress; u32 Reserved5; u32 Reserved6; u32 Reserved7; }; struct tx_desc_cmd { u16 PktSize; u8 Reserved1; u8 CmdType:3; u8 CmdInit:1; u8 LastSeg:1; u8 FirstSeg:1; u8 LINIP:1; u8 OWN:1; u16 ElementReport; u16 Reserved2; u16 TxBufferSize; u16 Reserved3; u32 TxBuffAddr; u32 NextDescAddress; u32 Reserved4; u32 Reserved5; u32 Reserved6; }; struct rx_desc { u16 Length:14; u16 CRC32:1; u16 ICV:1; u8 RxDrvInfoSize; u8 Shift:2; u8 PHYStatus:1; u8 SWDec:1; u8 LastSeg:1; u8 FirstSeg:1; u8 EOR:1; u8 OWN:1; u32 Reserved2; u32 Reserved3; u32 BufferAddress; }; struct rx_fwinfo { u16 Reserved1:12; u16 PartAggr:1; u16 FirstAGGR:1; u16 Reserved2:2; u8 RxRate:7; u8 RxHT:1; u8 BW:1; u8 SPLCP:1; u8 Reserved3:2; u8 PAM:1; u8 Mcast:1; u8 Bcast:1; u8 Reserved4:1; u32 TSFL; }; #endif