#ifndef __HALDEF_H__ #define __HALDEF_H__ /*++ Copyright (c) Realtek Semiconductor Corp. All rights reserved. Module Name: HalComDef.h Abstract: Defined HAL common data structure & Define Major Change History: When Who What ---------- --------------- ------------------------------- 2012-03-23 Filen Create. --*/ typedef enum _HW_VARIABLES{ HW_VAR_ETHER_ADDR, HW_VAR_MULTICAST_REG, HW_VAR_BSSID, HW_VAR_MAC_IO_ENABLE, //Set Only HW_VAR_MACREGFILE_START, //Get Only HW_VAR_MACREGFILE_SIZE, //Get Only HW_VAR_PHYREGFILE_START, //Get Only HW_VAR_PHYREGFILE_SIZE, //Get Only HW_VAR_PHYREGFILE_HP_START, //Get Only HW_VAR_PHYREGFILE_HP_SIZE, //Get Only HW_VAR_PHYREGFILE_EXTPA_START, //Get Only HW_VAR_PHYREGFILE_EXTPA_SIZE, //Get Only HW_VAR_PHYREGFILE_EXTLNA_START, //Get Only HW_VAR_PHYREGFILE_EXTLNA_SIZE, //Get Only HW_VAR_PHYREGFILE_1T_START, //Get Only HW_VAR_PHYREGFILE_1T_SIZE, //Get Only HW_VAR_PHYREGFILE_MP_START, //Get Only HW_VAR_PHYREGFILE_MP_SIZE, //Get Only HW_VAR_PHYREGFILE_PG_START, //Get Only HW_VAR_PHYREGFILE_PG_SIZE, //Get Only #ifdef PWR_BY_RATE_92E_HP HW_VAR_PHYREGFILE_PG_HP_START, //Get Only HW_VAR_PHYREGFILE_PG_HP_SIZE, //Get Only #endif HW_VAR_PHYREGFILE_AGC_START, //Get Only HW_VAR_PHYREGFILE_AGC_SIZE, //Get Only HW_VAR_PHYREGFILE_AGC_HP_START, //Get Only HW_VAR_PHYREGFILE_AGC_HP_SIZE, //Get Only HW_VAR_PHYREGFILE_AGC_EXTPA_START, //Get Only HW_VAR_PHYREGFILE_AGC_EXTPA_SIZE, //Get Only HW_VAR_PHYREGFILE_AGC_EXTLNA_START, //Get Only HW_VAR_PHYREGFILE_AGC_EXTLNA_SIZE, //Get Only HW_VAR_RFREGFILE_RADIO_A_START, //Get Only HW_VAR_RFREGFILE_RADIO_A_SIZE, //Get Only HW_VAR_RFREGFILE_RADIO_A_HP_START, //Get Only HW_VAR_RFREGFILE_RADIO_A_HP_SIZE, //Get Only HW_VAR_RFREGFILE_RADIO_A_EXTPA_START, //Get Only HW_VAR_RFREGFILE_RADIO_A_EXTPA_SIZE, //Get Only HW_VAR_RFREGFILE_RADIO_A_EXTLNA_START, //Get Only HW_VAR_RFREGFILE_RADIO_A_EXTLNA_SIZE, //Get Only HW_VAR_RFREGFILE_RADIO_B_START, //Get Only HW_VAR_RFREGFILE_RADIO_B_SIZE, //Get Only HW_VAR_RFREGFILE_RADIO_B_HP_START, //Get Only HW_VAR_RFREGFILE_RADIO_B_HP_SIZE, //Get Only HW_VAR_RFREGFILE_RADIO_B_EXTPA_START, //Get Only HW_VAR_RFREGFILE_RADIO_B_EXTPA_SIZE, //Get Only HW_VAR_RFREGFILE_RADIO_B_EXTLNA_START, //Get Only HW_VAR_RFREGFILE_RADIO_B_EXTLNA_SIZE, //Get Only #if defined(CONFIG_WLAN_HAL_8814AE) HW_VAR_RFREGFILE_RADIO_C_START, //Get Only HW_VAR_RFREGFILE_RADIO_C_SIZE, //Get Only HW_VAR_RFREGFILE_RADIO_C_HP_START, //Get Only HW_VAR_RFREGFILE_RADIO_C_HP_SIZE, //Get Only HW_VAR_RFREGFILE_RADIO_C_EXTPA_SIZE, HW_VAR_RFREGFILE_RADIO_C_EXTPA_START, HW_VAR_RFREGFILE_RADIO_C_EXTLNA_SIZE, HW_VAR_RFREGFILE_RADIO_C_EXTLNA_START, HW_VAR_RFREGFILE_RADIO_D_START, //Get Only HW_VAR_RFREGFILE_RADIO_D_SIZE, //Get Only HW_VAR_RFREGFILE_RADIO_D_HP_START, //Get Only HW_VAR_RFREGFILE_RADIO_D_HP_SIZE, //Get Only HW_VAR_RFREGFILE_RADIO_D_EXTPA_SIZE, HW_VAR_RFREGFILE_RADIO_D_EXTPA_START, HW_VAR_RFREGFILE_RADIO_D_EXTLNA_SIZE, HW_VAR_RFREGFILE_RADIO_D_EXTLNA_START, #endif HW_VAR_FWFILE_START, //Get Only HW_VAR_FWFILE_SIZE, //Get Only HW_VAR_TXPKTFWFILE_START, //Get Only HW_VAR_TXPKTFWFILE_SIZE, //Get Only HW_VAR_POWERTRACKINGFILE_START, //Get Only HW_VAR_POWERTRACKINGFILE_SIZE, //Get Only HW_VAR_POWERLIMITFILE_START, //Get Only HW_VAR_POWERLIMITFILE_SIZE, //Get Only #ifdef PWR_BY_RATE_92E_HP HW_VAR_POWERLIMITFILE_HP_START, //Get Only HW_VAR_POWERLIMITFILE_HP_SIZE, //Get Only #endif HW_VAR_MEDIA_STATUS, HW_VAR_MAC_LOOPBACK_ENABLE, //Set Only HW_VAR_MAC_CONFIG, //Set Only HW_VAR_EDCA, //Set Only HW_VAR_CAM_RESET_ALL_ENTRY, //Set Only HW_VAR_SECURITY_CONFIG, HW_VAR_BEACON_INTERVAL, HW_VAR_ENABLE_BEACON_DMA, HW_VAR_TXPAUSE, HW_VAR_HIQ_NO_LMT_EN, HW_VAR_DRV_DBG, HW_VAR_NUM_TOTAL_RF_PATH, //Get Only HW_VAR_NUM_RXDMA_STATUS, HW_VAR_NUM_TXDMA_STATUS, HW_VAR_BEACON_ENABLE_DOWNLOAD, HW_VAR_BEACON_DISABLE_DOWNLOAD, #if CFG_HAL_MACDM //3 MACDM //Default HW_VAR_MACDM_DEF_LOW_START, //Get Only HW_VAR_MACDM_DEF_LOW_SIZE, //Get Only HW_VAR_MACDM_DEF_NORMAL_START, //Get Only HW_VAR_MACDM_DEF_NORMAL_SIZE, //Get Only HW_VAR_MACDM_DEF_HIGH_START, //Get Only HW_VAR_MACDM_DEF_HIGH_SIZE, //Get Only //General HW_VAR_MACDM_GEN_LOW_START, //Get Only HW_VAR_MACDM_GEN_LOW_SIZE, //Get Only HW_VAR_MACDM_GEN_NORMAL_START, //Get Only HW_VAR_MACDM_GEN_NORMAL_SIZE, //Get Only HW_VAR_MACDM_GEN_HIGH_START, //Get Only HW_VAR_MACDM_GEN_HIGH_SIZE, //Get Only //Txop HW_VAR_MACDM_TXOP_LOW_START, //Get Only HW_VAR_MACDM_TXOP_LOW_SIZE, //Get Only HW_VAR_MACDM_TXOP_NORMAL_START, //Get Only HW_VAR_MACDM_TXOP_NORMAL_SIZE, //Get Only HW_VAR_MACDM_TXOP_HIGH_START, //Get Only HW_VAR_MACDM_TXOP_HIGH_SIZE, //Get Only //Criteria HW_VAR_MACDM_CRITERIA_START, //Get Only HW_VAR_MACDM_CRITERIA_SIZE, //Get Only #endif #if CFG_HAL_HW_DETEC_POWER_STATE HW_VAR_HW_PS_STATE0, HW_VAR_HW_PS_STATE1, HW_VAR_HW_PS_STATE2, HW_VAR_HW_PS_STATE3, #endif //#if CFG_HAL_HW_DETEC_POWER_STATE HW_VAR_REG_CCK_CHECK, #if (IS_RTL8192E_SERIES | IS_RTL8881A_SERIES) HW_VAR_HWSEQ_CTRL, #endif //#if (IS_RTL8192E_SERIES | IS_RTL8881A_SERIES) HW_VAR_REG_CR, }HW_VARIABLES; // The type used to query whether the interrupt in HAL is toggled. typedef enum _HAL_INT_TYPE { HAL_INT_TYPE_ANY, // Any interrupt HAL_INT_TYPE_TBDOK, // Tx Beacon OK HAL_INT_TYPE_TBDER, // Tx Beacon error HAL_INT_TYPE_BcnInt, // For 92C or later, it should be early beacon interrupt. HAL_INT_TYPE_PSTIMEOUT, // PS timer interrupt by TSF HAL_INT_TYPE_PSTIMEOUT1, // PS timer 1 interrupt by TSF HAL_INT_TYPE_PSTIMEOUT2, // PS timer 2 interrupt by TSF HAL_INT_TYPE_C2HCMD, // CPU to Host Command INT Status interrupt HAL_INT_TYPE_RXFOVW, // Rx FIFO over flow HAL_INT_TYPE_VIDOK, // VI queue DMA OK HAL_INT_TYPE_VODOK, // VO queue DMA OK HAL_INT_TYPE_BEDOK, // BE queue DMA OK HAL_INT_TYPE_BKDOK, // BK queue DMA OK HAL_INT_TYPE_MGNTDOK, // Mgnt queue DMA OK HAL_INT_TYPE_HIGHDOK, // High queue DMA OK HAL_INT_TYPE_BDOK, // Beacon queue DMA OK , Note: Filen, this interrupt has removed in 8812 & later chip HAL_INT_TYPE_CPWM, // CPU power Mode exchange INT Status HAL_INT_TYPE_TSF_BIT32_TOGGLE, // TSF Timer BIT32 toggle indication interrupt HAL_INT_TYPE_RX_OK, // Receive DMA OK HAL_INT_TYPE_RDU, HAL_INT_TYPE_BcnInt_MBSSID, // For 92C or later, it should be early beacon interrupt. HAL_INT_TYPE_BcnInt1, HAL_INT_TYPE_BcnInt2, HAL_INT_TYPE_BcnInt3, HAL_INT_TYPE_BcnInt4, HAL_INT_TYPE_BcnInt5, HAL_INT_TYPE_BcnInt6, HAL_INT_TYPE_BcnInt7, HAL_INT_TYPE_CTWEND, HAL_INT_TYPE_BCNDERR0, HAL_INT_TYPE_TXFOVW, // Transmit packet buffer Overflow. HAL_INT_TYPE_RXERR, // Rx Error Flag INT Status HAL_INT_TYPE_TXERR, // Tx Error Flag INT Status #if 0 //Filen: Not used to AP Platform //==== SDIO Specified Interrupt=====// HAL_INT_TYPE_SDIO_ISR_IND, HAL_INT_TYPE_SDIO_GPIO12_0_INT, HAL_INT_TYPE_SDIO_SPS_OCP_INT, HAL_INT_TYPE_SDIO_RON_INT_EN, HAL_INT_TYPE_SDIO_PDNINT, HAL_INT_TYPE_SDIO_GPIO9_INT, #endif #if IS_EXIST_RTL8814AE HAL_INT_TYPE_PwrInt0, HAL_INT_TYPE_PwrInt1, HAL_INT_TYPE_PwrInt2, HAL_INT_TYPE_PwrInt3, HAL_INT_TYPE_PwrInt4, #endif //#if IS_EXIST_RTL8814AE }HAL_INT_TYPE, *PHAL_INT_TYPE; enum _XTAL_CLK_SEL_ { XTAL_CLK_SEL_40M = 0, XTAL_CLK_SEL_25M = 1 }; typedef struct _MACCONFIG_PARA_ { u4Byte AckTO; u4Byte vap_enable; u4Byte OP_Mode; u2Byte dot11DTIMPeriod; // TODO: } MACCONFIG_PARA, *PMACCONFIG_PARA; typedef struct _EDCA_PARA_ { u4Byte slot_time; u4Byte sifs_time; struct ParaRecord Para[AC_PARAM_SIZE]; }EDCA_PARA, *PEDCA_PARA; typedef struct _CAM_ENTRY_CFG_ { BOOLEAN bValid; u1Byte KeyID; DOT11_ENC_ALGO EncAlgo; }CAM_ENTRY_CFG, *PCAM_ENTRY_CFG; typedef enum _TXRPT_VARIABLES { TXRPT_VAR_DATA_RATE, // offset 0 TXRPT_VAR_PKT_DROP, // offset 1 TXRPT_VAR_DATA_RTY_LOW_RATE, // offset 3,shift 0 TXRPT_VAR_RTY_LOW_RATE_EN, // offset 3,shift 7 TXRPT_VAR_RTS_RTY_LOW_RATE, // offset 4,shift 0 TXRPT_VAR_RTY_LMT_EN, // offset 4,shift 7 TXRPT_VAR_DATA_RT_LMT, // offset 5,shift 0 TXRPT_VAR_PKT_TX_ONE_SEL, // offset 5,shift 6 TXRPT_VAR_MAC_ADDRESS, // offset 16,shift 0,mask TXRPT_VAR_ALL, }TXRPT_VARIABLES; typedef enum _HAL_HANG_TYPE { HANG_VAR_NORMAL, HANG_VAR_TX_DESC_LEN_ERROR, HANG_VAR_TX_STUCK, HANG_VAR_RX_STUCK, } HAL_HANG_TYPE; //----------------------------------------------------------- // // Queue mapping // //----------------------------------------------------------- //1.) used to TXPOLL #define TXPOLL_BK_QUEUE 0 #define TXPOLL_BE_QUEUE 1 #define TXPOLL_VI_QUEUE 2 #define TXPOLL_VO_QUEUE 3 #define TXPOLL_BEACON_QUEUE 4 //#define TXPOLL_TXCMD_QUEUE 5 #define TXPOLL_MGNT_QUEUE 6 #define TXPOLL_HIGH_QUEUE 7 #define TXPOLL_HCCA_QUEUE 8 //2.) used to TXPAUSE #define TXPAUSE_BK_QUEUE_BIT BIT0 #define TXPAUSE_BE_QUEUE_BIT BIT1 #define TXPAUSE_VI_QUEUE_BIT BIT2 #define TXPAUSE_VO_QUEUE_BIT BIT3 #define TXPAUSE_MGNT_QUEUE_BIT BIT4 #define TXPAUSE_HIGH_QUEUE_BIT BIT5 #define TXPAUSE_BCN_QUEUE_BIT BIT6 #define TXPAUSE_BCN_HI_MGNT_QUEUE_BIT BIT7 #define TXPAUSE_ALL_QUEUE_BIT 0xFF //3 Initialization Related typedef RT_STATUS (*NicInitPONHandler)( INPUT HAL_PADAPTER Adapter, INPUT u4Byte ClkSel ); typedef RT_STATUS (*NicInitMACHandler)( INPUT HAL_PADAPTER Adapter ); typedef VOID (*NicInitIMRHandler)( INPUT HAL_PADAPTER Adapter, INPUT RT_OP_MODE OPMode ); typedef RT_STATUS (*NicInitFirmwareHandler)( INPUT HAL_PADAPTER Adapter ); typedef RT_STATUS (*NicInitHCIDMAMemHandler)( INPUT HAL_PADAPTER Adapter ); typedef RT_STATUS (*NicInitHCIDMARegHandler)( INPUT HAL_PADAPTER Adapter ); //MULTI_MAC_CLONE typedef VOID (*NicMcloneSetMBSSIDHandler)( INPUT HAL_PADAPTER Adapter, IN pu1Byte macAddr, IN int entIdx ); //MULTI_MAC_CLONE typedef VOID (*NicMcloneStopMBSSIDHandler)( INPUT HAL_PADAPTER Adapter, IN int entIdx ); typedef VOID (*NicInitMBSSIDHandler)( INPUT HAL_PADAPTER Adapter ); typedef VOID (*NicInitMBIDCAMHandler)( INPUT HAL_PADAPTER Adapter ); typedef VOID (*NicStopMBSSIDHandler)( INPUT HAL_PADAPTER Adapter ); typedef RT_STATUS (*NicSetMBIDCAMHandler)( IN HAL_PADAPTER Adapter, IN u1Byte MBID_Addr, IN u1Byte IsRoot ); typedef RT_STATUS (*NicInitMACIDSearchHandler)( IN HAL_PADAPTER Adapter ); typedef RT_STATUS (*NicStopMBIDCAMHandler)( IN HAL_PADAPTER Adapter, IN u1Byte MBID_Addr ); typedef VOID (*NicInitVAPIMRHandler)( IN HAL_PADAPTER Adapter, IN u4Byte VapSeq ); typedef RT_STATUS (*NicInitLLT_TableHandler)( INPUT HAL_PADAPTER Adapter ); //3 Stop Related typedef VOID (*NicDisableVXDAPHandler)( INPUT HAL_PADAPTER Adapter ); //3 ISR Related typedef VOID (*NicEnableIMRHandler)( INPUT HAL_PADAPTER Adapter ); typedef BOOLEAN (*NicInterruptRecognizedHandler)( INPUT HAL_PADAPTER Adapter, INPUT PVOID pContent, INPUT u4Byte ContentLen ); typedef BOOLEAN (*NicGetInterruptHandler)( IN HAL_PADAPTER Adapter, IN HAL_INT_TYPE intType ); typedef VOID (*NicAddInterruptMaskHandler)( IN HAL_PADAPTER Adapter, IN HAL_INT_TYPE intType ); typedef VOID (*NicRemoveInterruptMaskHandler)( IN HAL_PADAPTER Adapter, IN HAL_INT_TYPE intType ); typedef VOID (*NicDisableRxRelatedInterruptHandler)( IN HAL_PADAPTER Adapter ); typedef VOID (*NicEnableRxRelatedInterruptHandler)( IN HAL_PADAPTER Adapter ); //3 Tx Related typedef RT_STATUS (*NicPrepareTxBufferDescriptorHandler)( INPUT HAL_PADAPTER Adapter ); typedef VOID (*NicTxPollingHandler)( INPUT HAL_PADAPTER Adapter, INPUT u1Byte QueueIndex ); typedef VOID (*NicFillBeaconDescHandler) ( INPUT HAL_PADAPTER Adapter, INPUT PVOID pdesc, INPUT PVOID dat_content, INPUT u2Byte txLength, INPUT BOOLEAN bForceUpdate ); typedef VOID (*NicSigninBeaconTXBDHandler)( INPUT HAL_PADAPTER Adapter, INPUT pu4Byte beaconbuf, INPUT u2Byte frlen ); typedef VOID (*NicSetBeaconDownloadHandler) ( INPUT HAL_PADAPTER Adapter, INPUT u4Byte Value ); typedef u2Byte (*NicGetTxQueueHWIdxHandler)( IN HAL_PADAPTER Adapter, IN u4Byte q_num //enum _TX_QUEUE_ ); typedef u4Byte (*NicMappingTxQueueHandler)( IN HAL_PADAPTER Adapter, IN u4Byte TxQNum //enum _TX_QUEUE_ ); typedef BOOLEAN (*NicQueryTxConditionMatchHandler)( IN HAL_PADAPTER Adapter ); typedef BOOLEAN (*NicFillTxHwCtrlHandler)( IN HAL_PADAPTER Adapter, IN u4Byte queueIndex, //HCI_TX_DMA_QUEUE_88XX IN PVOID pDescData ); typedef RT_STATUS (*NicSyncSWTXBDHostIdxToHWHandler) ( IN HAL_PADAPTER Adapter, IN u4Byte queueIndex //HCI_TX_DMA_QUEUE_88XX ); typedef PVOID (*NicGetShortCutTxDescriptorHandler) ( IN HAL_PADAPTER Adapter ); typedef VOID (*NicReleaseShortCutTxDescriptorHandler)( IN HAL_PADAPTER Adapter, IN PVOID pTxDesc ); typedef VOID (*NicSetShortCutTxBuffSizeHandler) ( IN HAL_PADAPTER Adapter, IN PVOID pTxDesc, IN u2Byte txPktSize ); typedef u2Byte (*NicGetShortCutTxBuffSizeHandler)( IN HAL_PADAPTER Adapter, IN PVOID pTxDesc ); typedef PVOID (*NicCopyShortCutTxDescriptorHandler)( IN HAL_PADAPTER Adapter, IN u4Byte queueIndex, //HCI_TX_DMA_QUEUE_88XX IN PVOID pTxDesc, IN u4Byte direction ); typedef BOOLEAN (*NicFillShortCutTxHwCtrlHandler)( IN HAL_PADAPTER Adapter, IN u4Byte queueIndex, //HCI_TX_DMA_QUEUE_88XX IN PVOID pDescData, IN PVOID pTxDesc, IN u4Byte direction ); typedef RT_STATUS (*NicReleaseOnePacketHandler) ( IN HAL_PADAPTER Adapter, IN u1Byte macID ); typedef RT_STATUS (*NicGetTxRPTHandler)( IN HAL_PADAPTER Adapter, IN u4Byte macID, IN u1Byte variable, OUT pu1Byte val ); typedef RT_STATUS (*NicSetTxRPTHandler)( IN HAL_PADAPTER Adapter, IN u4Byte macID, IN u1Byte variable, IN pu1Byte val ); typedef VOID (*NicSetCRC5ToRPTBufferHandler)( IN HAL_PADAPTER Adapter, IN u1Byte val, IN u4Byte macID, IN u1Byte bValid ); //3 Rx Related typedef RT_STATUS (*NicPrepareRXBDHandler)( INPUT HAL_PADAPTER Adapter, INPUT u2Byte bufferLen, INPUT PVOID Callback ); typedef RT_STATUS (*NicQueryRxDescHandler) ( INPUT HAL_PADAPTER Adapter, INPUT u4Byte queueIndex, INPUT pu1Byte pBufAddr, OUTPUT PVOID pRxDescStatus ); typedef RT_STATUS (*NicUpdateRXBDInfoHandler)( IN HAL_PADAPTER Adapter, IN u4Byte queueIndex, //HCI_RX_DMA_QUEUE_88XX IN u2Byte rxbd_idx, IN pu1Byte pBuf, IN PVOID Callback, // callback function IN BOOLEAN bInit ); typedef u4Byte (*NicReadableRxBufferDescCountHandler)( INPUT HAL_PADAPTER Adapter, INPUT u4Byte queueIndex ); typedef VOID (*NicUpdateRXBDHostIdxHandler)( IN HAL_PADAPTER Adapter, IN u4Byte queueIndex, //HCI_TX_DMA_QUEUE_88XX IN u4Byte Count ); typedef u2Byte (*NicUpdateRXBDHWIdxHandler)( IN HAL_PADAPTER Adapter, IN u4Byte queueIndex //HCI_TX_DMA_QUEUE_88XX ); //3 General operation typedef MIMO_TR_STATUS (*NicGetChipIDMIMOHandler)( INPUT HAL_PADAPTER Adapter ); typedef VOID (*NicSetHwRegHandler)( INPUT HAL_PADAPTER Adapter, INPUT u1Byte RegName, INPUT pu1Byte val ); typedef VOID (*NicGetHwRegHandler)( INPUT HAL_PADAPTER Adapter, INPUT u1Byte RegName, OUTPUT pu1Byte val ); typedef RT_STATUS (*NicGetMACIDQueueInTXPKTBUFHandler)( INPUT HAL_PADAPTER Adapter, OUTPUT pu1Byte MACIDList ); typedef RT_STATUS (*NicSetMACIDSleepHandler)( INPUT HAL_PADAPTER Adapter, INPUT BOOLEAN bSleep, INPUT u4Byte aid ); typedef VOID (*NicCAMReadMACConfigHandler)( INPUT HAL_PADAPTER Adapter, INPUT u1Byte index, OUTPUT pu1Byte pMacad, OUTPUT PCAM_ENTRY_CFG pCfg ); //3 Timer Related typedef VOID (*NicTimer1SecHandler)( IN HAL_PADAPTER Adapter ); typedef VOID (*NicTimer1SecDMHandler)( IN HAL_PADAPTER Adapter ); //3 Security Related typedef VOID (*NicCAMEmptyEntryHandler)( INPUT HAL_PADAPTER Adapter, INPUT u1Byte index ); typedef u4Byte (*NicCAMFindUsableHandler)( INPUT HAL_PADAPTER Adapter, INPUT u4Byte for_begin ); typedef VOID (*NicCAMProgramEntryHandler)( INPUT HAL_PADAPTER Adapter, INPUT u1Byte index, INPUT pu1Byte macad, INPUT pu1Byte key128, INPUT u2Byte config ); typedef RT_STATUS (*NicStopHWHandler)( INPUT HAL_PADAPTER Adapter ); typedef RT_STATUS (*NicStopSWHandler)( INPUT HAL_PADAPTER Adapter ); typedef RT_STATUS (*NicResetHWForSurpriseHandler)( INPUT HAL_PADAPTER Adapter ); //3 Firmware CMD IO related typedef RT_STATUS (*NicFillH2CCmdHandler)( IN HAL_PADAPTER Adapter, IN u1Byte ElementID, IN u4Byte CmdLen, IN pu1Byte pCmdBuffer ); typedef VOID (*NicUpdateHalRAMaskHandler)( IN HAL_PADAPTER Adapter, HAL_PSTAINFO pEntry, u1Byte rssi_level ); typedef VOID (*NicUpdateHalMSRRPTHandler)( IN HAL_PADAPTER Adapter, HAL_PSTAINFO pEntry, u1Byte opmode ); //#ifdef SDIO_AP_OFFLOAD typedef VOID (*NicSetAPOffloadHandler)( IN HAL_PADAPTER Adapter, u1Byte bEn, #ifdef CONFIG_POWER_SAVE u1Byte bOn, #endif u1Byte numOfAP, u1Byte bHidden, u1Byte bDenyAny, pu1Byte loc_bcn, pu1Byte loc_probe ); typedef VOID (*NicSetSAPPsHandler)( IN HAL_PADAPTER Adapter, u1Byte bEn, #ifdef CONFIG_POWER_SAVE u1Byte en_32K, u1Byte lps, #endif u1Byte duration ); //#endif typedef VOID (*NicSetRsvdPageHandler) ( IN HAL_PADAPTER Adapter, IN pu1Byte prsp, IN pu1Byte beaconbuf, IN u4Byte pktLen, IN u4Byte bigPktLen ); typedef u4Byte (*NicGetRsvdPageLocHandler)( IN HAL_PADAPTER Adapter, IN u4Byte frlen, OUT pu1Byte loc_page ); typedef BOOLEAN (*NicDownloadRsvdPageHandler)( IN HAL_PADAPTER Adapter, IN pu1Byte beaconbuf, IN u4Byte beaconPktLen, IN u1Byte bReDownload ); typedef void (*NicC2HHandler)( IN HAL_PADAPTER Adapter ); typedef void (*NicC2HPacketHandler)( IN HAL_PADAPTER Adapter, IN pu1Byte pBuf, IN u1Byte length ); typedef VOID (*DumpRxBDescHandler)( IN HAL_PADAPTER Adapter, #ifdef CONFIG_RTL_PROC_NEW IN struct seq_file *s, #endif u4Byte q_num ); typedef VOID (*DumpTxBDescHandler)( IN HAL_PADAPTER Adapter, #ifdef CONFIG_RTL_PROC_NEW IN struct seq_file *s, #endif u4Byte q_num ); typedef u4Byte (*NicCheckHangHandler)( IN HAL_PADAPTER Adapter ); // 4. RF setting related typedef RT_STATUS (*NicPHYSetCCKTxPowerHandler)( IN HAL_PADAPTER Adapter, IN u1Byte channel ); typedef RT_STATUS (*NicPHYSetOFDMTxPowerHandler)( IN HAL_PADAPTER Adapter, IN u1Byte channel ); typedef VOID (*NicPHYUpdateBBRFValHandler)( IN HAL_PADAPTER Adapter, IN u1Byte channel, IN s4Byte offset ); typedef VOID (*NicPHYSwBWModeHandler)( IN HAL_PADAPTER Adapter, IN u4Byte bandwidth, IN s4Byte offset ); typedef VOID (*NicTXPowerTrackingHandler)( IN HAL_PADAPTER Adapter ); typedef void (*NicPHYSSetRFRegHandler)( IN HAL_PADAPTER Adapter, IN u4Byte eRFPath, IN u4Byte RegAddr, IN u4Byte BitMask, IN u4Byte Data ); typedef u4Byte (*NicPHYQueryRFRegHandler)( IN HAL_PADAPTER Adapter, IN u4Byte eRFPath, IN u4Byte RegAddr, IN u4Byte BitMask ); typedef BOOLEAN (*NicIsBBRegRangeHandler)( IN HAL_PADAPTER Adapter, IN u4Byte RegAddr ); typedef struct _HAL_INTERFACE_COMMON_{ // // WLAN Device operations. // //3 Initialization Related NicInitPONHandler InitPONHandler; NicInitMACHandler InitMACHandler; NicInitIMRHandler InitIMRHandler; NicInitFirmwareHandler InitFirmwareHandler; NicInitHCIDMAMemHandler InitHCIDMAMemHandler; NicInitHCIDMARegHandler InitHCIDMARegHandler; NicInitMBSSIDHandler InitMBSSIDHandler; NicInitMBIDCAMHandler InitMBIDCAMHandler; NicMcloneSetMBSSIDHandler McloneSetMBSSIDHandler;//MULTI_MAC_CLONE NicMcloneStopMBSSIDHandler McloneStopMBSSIDHandler;//MULTI_MAC_CLONE NicInitLLT_TableHandler InitLLT_TableHandler; NicInitMACIDSearchHandler InitMACIDSearchHandler; NicSetMBIDCAMHandler SetMBIDCAMHandler; NicInitVAPIMRHandler InitVAPIMRHandler; //3 Stop Related NicStopMBSSIDHandler StopMBSSIDHandler; NicStopHWHandler StopHWHandler; NicStopSWHandler StopSWHandler; NicDisableVXDAPHandler DisableVXDAPHandler; NicStopMBIDCAMHandler StopMBIDCAMHandler; NicResetHWForSurpriseHandler ResetHWForSurpriseHandler; //3 ISR Related NicEnableIMRHandler EnableIMRHandler; #if IS_EXIST_PCI || IS_EXIST_EMBEDDED NicInterruptRecognizedHandler InterruptRecognizedHandler; NicGetInterruptHandler GetInterruptHandler; NicAddInterruptMaskHandler AddInterruptMaskHandler; NicRemoveInterruptMaskHandler RemoveInterruptMaskHandler; NicDisableRxRelatedInterruptHandler DisableRxRelatedInterruptHandler; NicEnableRxRelatedInterruptHandler EnableRxRelatedInterruptHandler; #endif //3 General operation NicGetChipIDMIMOHandler GetChipIDMIMOHandler; NicSetHwRegHandler SetHwRegHandler; NicGetHwRegHandler GetHwRegHandler; NicSetMACIDSleepHandler SetMACIDSleepHandler; NicGetMACIDQueueInTXPKTBUFHandler GetMACIDQueueInTXPKTBUFHandler; //3 Timer Related NicTimer1SecHandler Timer1SecHandler; NicTimer1SecDMHandler Timer1SecDMHandler; //3 Security Related //CAM NicCAMReadMACConfigHandler CAMReadMACConfigHandler; NicCAMEmptyEntryHandler CAMEmptyEntryHandler; NicCAMFindUsableHandler CAMFindUsableHandler; NicCAMProgramEntryHandler CAMProgramEntryHandler; //3 PHY/RF Related NicPHYSetCCKTxPowerHandler PHYSetCCKTxPowerHandler; NicPHYSetOFDMTxPowerHandler PHYSetOFDMTxPowerHandler; NicPHYUpdateBBRFValHandler PHYUpdateBBRFValHandler; NicPHYSwBWModeHandler PHYSwBWModeHandler; NicTXPowerTrackingHandler TXPowerTrackingHandler; NicPHYSSetRFRegHandler PHYSSetRFRegHandler; NicPHYQueryRFRegHandler PHYQueryRFRegHandler; NicIsBBRegRangeHandler IsBBRegRangeHandler; //3 Firmware CMD IO related // // Special Operation for each Chip type // #if IS_RTL88XX_GENERATION #if (HAL_DEV_BUS_TYPE & (HAL_RT_EMBEDDED_INTERFACE | HAL_RT_PCI_INTERFACE)) //3 Tx Related NicTxPollingHandler TxPollingHandler; NicSigninBeaconTXBDHandler SigninBeaconTXBDHandler; NicSetBeaconDownloadHandler SetBeaconDownloadHandler; NicFillBeaconDescHandler FillBeaconDescHandler; NicGetTxQueueHWIdxHandler GetTxQueueHWIdxHandler; NicMappingTxQueueHandler MappingTxQueueHandler; NicQueryTxConditionMatchHandler QueryTxConditionMatchHandler; NicPrepareTxBufferDescriptorHandler PrepareTXBDHandler; NicFillTxHwCtrlHandler FillTxHwCtrlHandler; NicSyncSWTXBDHostIdxToHWHandler SyncSWTXBDHostIdxToHWHandler; // NicGetShortCutTxDescriptorHandler GetShortCutTxDescHandler; NicReleaseShortCutTxDescriptorHandler ReleaseShortCutTxDescHandler; NicGetShortCutTxBuffSizeHandler GetShortCutTxBuffSizeHandler; NicSetShortCutTxBuffSizeHandler SetShortCutTxBuffSizeHandler; NicCopyShortCutTxDescriptorHandler CopyShortCutTxDescHandler; NicFillShortCutTxHwCtrlHandler FillShortCutTxHwCtrlHandler; NicReleaseOnePacketHandler ReleaseOnePacketHandler; NicGetTxRPTHandler GetTxRPTHandler; NicSetTxRPTHandler SetTxRPTHandler; NicSetCRC5ToRPTBufferHandler SetCRC5ToRPTBufferHandler; DumpTxBDescHandler DumpTxBDescTestHandler; //3 Rx Related NicPrepareRXBDHandler PrepareRXBDHandler; NicQueryRxDescHandler QueryRxDescHandler; NicUpdateRXBDInfoHandler UpdateRXBDInfoHandler; NicReadableRxBufferDescCountHandler ReadableRxBufferDescCountHandler; NicUpdateRXBDHWIdxHandler UpdateRXBDHWIdxHandler; NicUpdateRXBDHostIdxHandler UpdateRXBDHostIdxHandler; DumpRxBDescHandler DumpRxBDescTestHandler; #endif // (HAL_DEV_BUS_TYPE & (HAL_RT_EMBEDDED_INTERFACE | HAL_RT_PCI_INTERFACE)) //3 Firmware CMD IO related NicFillH2CCmdHandler FillH2CCmdHandler; NicUpdateHalRAMaskHandler UpdateHalRAMaskHandler; NicUpdateHalMSRRPTHandler UpdateHalMSRRPTHandler; //#ifdef SDIO_AP_OFFLOAD NicSetAPOffloadHandler SetAPOffloadHandler; NicSetSAPPsHandler SetSAPPsHandler; //#endif NicSetRsvdPageHandler SetRsvdPageHandler; NicGetRsvdPageLocHandler GetRsvdPageLocHandler; NicDownloadRsvdPageHandler DownloadRsvdPageHandler; NicC2HHandler C2HHandler; NicC2HPacketHandler C2HPacketHandler; NicCheckHangHandler CheckHangHandler; #if IS_RTL8192E_SERIES PVOID PHalFunc8192E; #endif #if IS_RTL8881A_SERIES PVOID PHalFunc8881A; #endif #endif //IS_RTL88XX_GENERATION } HAL_INTERFACE_COMMON, *PHAL_INTERFACE_COMMON; #define HAL_INTERFACE HAL_INTERFACE_COMMON #define PHAL_INTERFACE PHAL_INTERFACE_COMMON #define GET_HAL_INTERFACE(__pAdapter) ((HAL_INTERFACE_COMMON *)((__pAdapter)->HalFunc)) typedef struct _HAL_DATA_MV_ { u1Byte test; }HAL_DATA_MV, *PHAL_DATA_PMV; typedef u4Byte RT_INT_REG, *PRT_INT_REG; // Variable: AccessSwapCtrl #define HAL_ACCESS_SWAP_IO BIT0 /* Do bye-swap in access IO register */ #define HAL_ACCESS_SWAP_MEM BIT1 /* Do byte-swap in access memory space */ #define MAX_MACDM_REG_NUM 30 //#define MAX_MACDM_THRS_NUM 13 // 3 state, 4 criteria * 3 Rssi = 12, add one EOF=>13 #define HALDEF_MACDM_TP_THRS_MAX_NUM 4 //MACDM_TP_THRS_MAX_NUM #define HALDEF_RSSI_LVL_MAX_NUM 3 //RSSI_LVL_MAX_NUM #define HALDEF_MACDM_TP_STATE_MAX_NUM 3 //MACDM_TP_STATE_MAX_NUM // IO Format typedef struct _IOREG_FORMAT_ { u4Byte offset; u4Byte value; }IOREG_FORMAT, *PIOREG_FORMAT; typedef struct _HAL_DATA_COMMON_ { u2Byte HardwareType; BOOLEAN bTestChip; // 1: TestChip, 0:MP u1Byte cutVersion; u1Byte devIdx; //IO/MEM Swap u4Byte AccessSwapCtrl; //Mapping driver variable HAL_DATA_MV MappingVariable; //ISR //u4Byte InterruptMask; //u4Byte InterruptMaskExt; RT_INT_REG IntArray[4]; RT_INT_REG IntArray_bak[2]; RT_INT_REG IntMask[4]; RT_INT_REG IntMask_RxINTBackup[2]; //Backup for Rx IMR Control #if IS_RTL88XX_GENERATION //Firmware u1Byte H2CBufPtr88XX; //88XX range: 0~3 BOOLEAN bFWReady; PVOID PFWHeader; //TRX DESC PVOID PRxDescData88XX; PVOID PRxDescStatus88XX; //DM u4Byte MACDM_Mode_Sel; u4Byte MACDM_State; u4Byte MACDM_preRssiLvl; u4Byte MACDM_stateThrs[HALDEF_MACDM_TP_THRS_MAX_NUM][HALDEF_RSSI_LVL_MAX_NUM]; IOREG_FORMAT MACDM_Table[HALDEF_MACDM_TP_STATE_MAX_NUM][HALDEF_RSSI_LVL_MAX_NUM][MAX_MACDM_REG_NUM]; #if (HAL_DEV_BUS_TYPE & (HAL_RT_EMBEDDED_INTERFACE | HAL_RT_PCI_INTERFACE)) PVOID PTxDMA88XX; PVOID PRxDMA88XX; #if WLAN_HAL_TXDESC_CHECK_ADDR_LEN #if IS_EXIST_RTL8881AEM u4Byte cur_txbd; #if 0 u4Byte cur_tx_desc_phy_addr; u4Byte cur_tx_desc_len; #endif u4Byte cur_tx_psb_len; #endif //IS_EXIST_RTL8881AEM #endif // WLAN_HAL_TXDESC_CHECK_ADDR_LEN pu1Byte desc_dma_buf; //desc memory from common driver u4Byte desc_dma_buf_len; //desc memory length from common driver unsigned long ring_dma_addr; //rx_dma_addr_start. u4Byte ring_buf_len; unsigned long ring_virt_addr; unsigned long alloc_dma_buf; unsigned long txBD_dma_ring_addr[14]; //there are 14 queues in system, including BCN queue unsigned long txDesc_dma_ring_addr[14]; //there are 14 queues in system, including BCN queue #endif #if IS_RTL8881A_SERIES PVOID PHalData8881A; #endif //IS_RTL8881A_SERIES #if IS_RTL8192E_SERIES PVOID PHalData8192E; #endif //IS_RTL8192E_SERIES #if IS_RTL8814A_SERIES u1Byte crc5Valid[128]; u1Byte crc5groupValid[12]; #endif //IS_RTL8814A_SERIES #endif //IS_RTL88XX_GENERATION }HAL_DATA_COMMON, *PHAL_DATA_COMMON; #define HAL_DATA_TYPE HAL_DATA_COMMON #define PHAL_DATA_TYPE PHAL_DATA_COMMON #define _GET_HAL_DATA(__pAdapter) ((HAL_DATA_TYPE *)((__pAdapter)->HalData)) #define HAL_HW_TYPE_ID_8723A 0x01 #define HAL_HW_TYPE_ID_8188E 0x02 #define HAL_HW_TYPE_ID_8881A 0x03 #define HAL_HW_TYPE_ID_8812A 0x04 #define HAL_HW_TYPE_ID_8723B 0x05 #define HAL_HW_TYPE_ID_8821A 0x06 #define HAL_HW_TYPE_ID_8192E 0x07 #define HAL_HW_TYPE_ID_8814A 0x08 typedef enum _HARDWARE_TYPE{ HARDWARE_TYPE_RTL8192SE, HARDWARE_TYPE_RTL8192SU, HARDWARE_TYPE_RTL8192CE, HARDWARE_TYPE_RTL8192CU, HARDWARE_TYPE_RTL8192DE, HARDWARE_TYPE_RTL8192DU, HARDWARE_TYPE_RTL8723AE, HARDWARE_TYPE_RTL8723AU, HARDWARE_TYPE_RTL8723AS, HARDWARE_TYPE_RTL8188EE, HARDWARE_TYPE_RTL8188EU, HARDWARE_TYPE_RTL8188ES, HARDWARE_TYPE_RTL8812E, HARDWARE_TYPE_RTL8821E, HARDWARE_TYPE_RTL8812AU, HARDWARE_TYPE_RTL8821U, HARDWARE_TYPE_RTL8881AEM, HARDWARE_TYPE_RTL8192EE, HARDWARE_TYPE_RTL8192EU, HARDWARE_TYPE_RTL8192ES, HARDWARE_TYPE_RTL8814AE, HARDWARE_TYPE_RTL8814AU, HARDWARE_TYPE_RTL8814AS, HARDWARE_TYPE_MAX, }HARDWARE_TYPE; #define IS_HAL_TEST_CHIP(_Adapter) (_GET_HAL_DATA(_Adapter)->bTestChip==_TRUE) // // RTL8192E Series // #if defined(CONFIG_WLAN_HAL_8192EE) && defined(CONFIG_SDIO_HCI) #define IS_HARDWARE_TYPE_8192ES(_Adapter) 1 #define IS_HARDWARE_TYPE_8192EE(_Adapter) 0 #define IS_HARDWARE_TYPE_8192EU(_Adapter) 0 #else #define IS_HARDWARE_TYPE_8192ES(_Adapter) (_GET_HAL_DATA(_Adapter)->HardwareType==HARDWARE_TYPE_RTL8192ES) #define IS_HARDWARE_TYPE_8192EE(_Adapter) (_GET_HAL_DATA(_Adapter)->HardwareType==HARDWARE_TYPE_RTL8192EE) #define IS_HARDWARE_TYPE_8192EU(_Adapter) (_GET_HAL_DATA(_Adapter)->HardwareType==HARDWARE_TYPE_RTL8192EU) #endif #define IS_HARDWARE_TYPE_8192E(_Adapter) \ (IS_HARDWARE_TYPE_8192EE(_Adapter) || IS_HARDWARE_TYPE_8192EU(_Adapter) || IS_HARDWARE_TYPE_8192ES(_Adapter)) // // RTL8881A Series // #define IS_HARDWARE_TYPE_8881A(_Adapter) (_GET_HAL_DATA(_Adapter)->HardwareType==HARDWARE_TYPE_RTL8881AEM) // // RTL8814A Series // #define IS_HARDWARE_TYPE_8814AS(_Adapter) (_GET_HAL_DATA(_Adapter)->HardwareType==HARDWARE_TYPE_RTL8814AS) #define IS_HARDWARE_TYPE_8814AE(_Adapter) (_GET_HAL_DATA(_Adapter)->HardwareType==HARDWARE_TYPE_RTL8814AE) #define IS_HARDWARE_TYPE_8814AU(_Adapter) (_GET_HAL_DATA(_Adapter)->HardwareType==HARDWARE_TYPE_RTL8814AU) #define IS_HARDWARE_TYPE_8814A(_Adapter) \ (IS_HARDWARE_TYPE_8814AE(_Adapter) || IS_HARDWARE_TYPE_8814AU(_Adapter) || IS_HARDWARE_TYPE_8814AS(_Adapter)) #endif //__HALDEF_H__