1 /****************************************************************************** 2 * 3 * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved. 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms of version 2 of the GNU General Public License as 7 * published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12 * more details. 13 * 14 * You should have received a copy of the GNU General Public License along with 15 * this program; if not, write to the Free Software Foundation, Inc., 16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA 17 * 18 * 19 ******************************************************************************/ 20 #ifndef __HAL_INTF_H__ 21 #define __HAL_INTF_H__ 22 23 24 enum RTL871X_HCI_TYPE { 25 RTW_PCIE = BIT0, 26 RTW_USB = BIT1, 27 RTW_SDIO = BIT2, 28 RTW_GSPI = BIT3, 29 }; 30 31 enum _CHIP_TYPE { 32 33 NULL_CHIP_TYPE, 34 RTL8188E, 35 RTL8192E, 36 RTL8812, 37 RTL8821, //RTL8811 38 RTL8723B, 39 RTL8814A, 40 RTL8703B, 41 RTL8188F, 42 MAX_CHIP_TYPE 43 }; 44 45 46 typedef enum _HW_VARIABLES{ 47 HW_VAR_MEDIA_STATUS, 48 HW_VAR_MEDIA_STATUS1, 49 HW_VAR_SET_OPMODE, 50 HW_VAR_MAC_ADDR, 51 HW_VAR_BSSID, 52 HW_VAR_INIT_RTS_RATE, 53 HW_VAR_BASIC_RATE, 54 HW_VAR_TXPAUSE, 55 HW_VAR_BCN_FUNC, 56 HW_VAR_CORRECT_TSF, 57 HW_VAR_CHECK_BSSID, 58 HW_VAR_MLME_DISCONNECT, 59 HW_VAR_MLME_SITESURVEY, 60 HW_VAR_MLME_JOIN, 61 HW_VAR_ON_RCR_AM, 62 HW_VAR_OFF_RCR_AM, 63 HW_VAR_BEACON_INTERVAL, 64 HW_VAR_SLOT_TIME, 65 HW_VAR_RESP_SIFS, 66 HW_VAR_ACK_PREAMBLE, 67 HW_VAR_SEC_CFG, 68 HW_VAR_SEC_DK_CFG, 69 HW_VAR_BCN_VALID, 70 HW_VAR_RF_TYPE, 71 /* PHYDM odm->SupportAbility */ 72 HW_VAR_CAM_EMPTY_ENTRY, 73 HW_VAR_CAM_INVALID_ALL, 74 HW_VAR_CAM_WRITE, 75 HW_VAR_CAM_READ, 76 HW_VAR_AC_PARAM_VO, 77 HW_VAR_AC_PARAM_VI, 78 HW_VAR_AC_PARAM_BE, 79 HW_VAR_AC_PARAM_BK, 80 HW_VAR_ACM_CTRL, 81 HW_VAR_AMPDU_MIN_SPACE, 82 HW_VAR_AMPDU_FACTOR, 83 HW_VAR_RXDMA_AGG_PG_TH, 84 HW_VAR_SET_RPWM, 85 HW_VAR_CPWM, 86 HW_VAR_H2C_FW_PWRMODE, 87 HW_VAR_H2C_PS_TUNE_PARAM, 88 HW_VAR_H2C_FW_JOINBSSRPT, 89 HW_VAR_FWLPS_RF_ON, 90 HW_VAR_H2C_FW_P2P_PS_OFFLOAD, 91 HW_VAR_TDLS_WRCR, 92 HW_VAR_TDLS_RS_RCR, 93 HW_VAR_TRIGGER_GPIO_0, 94 HW_VAR_BT_SET_COEXIST, 95 HW_VAR_BT_ISSUE_DELBA, 96 HW_VAR_CURRENT_ANTENNA, 97 HW_VAR_ANTENNA_DIVERSITY_LINK, 98 HW_VAR_ANTENNA_DIVERSITY_SELECT, 99 HW_VAR_SWITCH_EPHY_WoWLAN, 100 HW_VAR_EFUSE_USAGE, 101 HW_VAR_EFUSE_BYTES, 102 HW_VAR_EFUSE_BT_USAGE, 103 HW_VAR_EFUSE_BT_BYTES, 104 HW_VAR_FIFO_CLEARN_UP, 105 HW_VAR_RESTORE_HW_SEQ, 106 HW_VAR_CHECK_TXBUF, 107 HW_VAR_PCIE_STOP_TX_DMA, 108 HW_VAR_APFM_ON_MAC, //Auto FSM to Turn On, include clock, isolation, power control for MAC only 109 HW_VAR_HCI_SUS_STATE, 110 // The valid upper nav range for the HW updating, if the true value is larger than the upper range, the HW won't update it. 111 // Unit in microsecond. 0 means disable this function. 112 #if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN) 113 HW_VAR_WOWLAN, 114 HW_VAR_WAKEUP_REASON, 115 HW_VAR_RPWM_TOG, 116 #endif 117 #ifdef CONFIG_GPIO_WAKEUP 118 HW_SET_GPIO_WL_CTRL, 119 #endif 120 HW_VAR_SYS_CLKR, 121 HW_VAR_NAV_UPPER, 122 HW_VAR_C2H_HANDLE, 123 HW_VAR_RPT_TIMER_SETTING, 124 HW_VAR_TX_RPT_MAX_MACID, 125 HW_VAR_H2C_MEDIA_STATUS_RPT, 126 HW_VAR_CHK_HI_QUEUE_EMPTY, 127 HW_VAR_DL_BCN_SEL, 128 HW_VAR_AMPDU_MAX_TIME, 129 HW_VAR_WIRELESS_MODE, 130 HW_VAR_USB_MODE, 131 HW_VAR_PORT_SWITCH, 132 HW_VAR_DO_IQK, 133 HW_VAR_DM_IN_LPS, 134 HW_VAR_SET_REQ_FW_PS, 135 HW_VAR_FW_PS_STATE, 136 HW_VAR_SOUNDING_ENTER, 137 HW_VAR_SOUNDING_LEAVE, 138 HW_VAR_SOUNDING_RATE, 139 HW_VAR_SOUNDING_STATUS, 140 HW_VAR_SOUNDING_FW_NDPA, 141 HW_VAR_SOUNDING_CLK, 142 HW_VAR_DL_RSVD_PAGE, 143 HW_VAR_MACID_SLEEP, 144 HW_VAR_MACID_WAKEUP, 145 HW_VAR_DUMP_MAC_QUEUE_INFO, 146 HW_VAR_ASIX_IOT, 147 HW_VAR_E2500_IOT, 148 }HW_VARIABLES; 149 150 typedef enum _HAL_DEF_VARIABLE{ 151 HAL_DEF_UNDERCORATEDSMOOTHEDPWDB, 152 HAL_DEF_IS_SUPPORT_ANT_DIV, 153 HAL_DEF_CURRENT_ANTENNA, 154 HAL_DEF_DRVINFO_SZ, 155 HAL_DEF_MAX_RECVBUF_SZ, 156 HAL_DEF_RX_PACKET_OFFSET, 157 HAL_DEF_RX_DMA_SZ_WOW, 158 HAL_DEF_RX_DMA_SZ, 159 HAL_DEF_RX_PAGE_SIZE, 160 HAL_DEF_DBG_DUMP_RXPKT,//for dbg 161 HAL_DEF_RA_DECISION_RATE, 162 HAL_DEF_RA_SGI, 163 HAL_DEF_PT_PWR_STATUS, 164 HAL_DEF_TX_LDPC, // LDPC support 165 HAL_DEF_RX_LDPC, // LDPC support 166 HAL_DEF_TX_STBC, // TX STBC support 167 HAL_DEF_RX_STBC, // RX STBC support 168 HAL_DEF_EXPLICIT_BEAMFORMER,// Explicit Compressed Steering Capable 169 HAL_DEF_EXPLICIT_BEAMFORMEE,// Explicit Compressed Beamforming Feedback Capable 170 HW_VAR_MAX_RX_AMPDU_FACTOR, 171 HW_DEF_RA_INFO_DUMP, 172 HAL_DEF_DBG_DUMP_TXPKT, 173 174 HAL_DEF_TX_PAGE_SIZE, 175 HAL_DEF_TX_PAGE_BOUNDARY, 176 HAL_DEF_TX_PAGE_BOUNDARY_WOWLAN, 177 HAL_DEF_ANT_DETECT,//to do for 8723a 178 HAL_DEF_PCI_SUUPORT_L1_BACKDOOR, // Determine if the L1 Backdoor setting is turned on. 179 HAL_DEF_PCI_AMD_L1_SUPPORT, 180 HAL_DEF_PCI_ASPM_OSC, // Support for ASPM OSC, added by Roger, 2013.03.27. 181 HAL_DEF_MACID_SLEEP, // Support for MACID sleep 182 HAL_DEF_DBG_DIS_PWT, //disable Tx power training or not. 183 HAL_DEF_EFUSE_USAGE, /* Get current EFUSE utilization. 2008.12.19. Added by Roger. */ 184 HAL_DEF_EFUSE_BYTES, 185 }HAL_DEF_VARIABLE; 186 187 typedef enum _HAL_ODM_VARIABLE{ 188 HAL_ODM_STA_INFO, 189 HAL_ODM_P2P_STATE, 190 HAL_ODM_WIFI_DISPLAY_STATE, 191 HAL_ODM_NOISE_MONITOR, 192 HAL_ODM_REGULATION, 193 HAL_ODM_INITIAL_GAIN, 194 HAL_ODM_FA_CNT_DUMP, 195 HAL_ODM_DBG_FLAG, 196 HAL_ODM_DBG_LEVEL, 197 HAL_ODM_RX_INFO_DUMP, 198 199 #ifdef CONFIG_AUTO_CHNL_SEL_NHM 200 HAL_ODM_AUTO_CHNL_SEL, 201 #endif 202 }HAL_ODM_VARIABLE; 203 204 typedef enum _HAL_INTF_PS_FUNC{ 205 HAL_USB_SELECT_SUSPEND, 206 HAL_MAX_ID, 207 }HAL_INTF_PS_FUNC; 208 209 typedef s32 (*c2h_id_filter)(u8 *c2h_evt); 210 211 struct hal_ops { 212 /*** initialize section ***/ 213 void (*read_chip_version)(_adapter *padapter); 214 void (*init_default_value)(_adapter *padapter); 215 void (*intf_chip_configure)(_adapter *padapter); 216 void (*read_adapter_info)(_adapter *padapter); 217 u32 (*hal_power_on)(_adapter *padapter); 218 void (*hal_power_off)(_adapter *padapter); 219 u32 (*hal_init)(_adapter *padapter); 220 u32 (*hal_deinit)(_adapter *padapter); 221 void (*dm_init)(_adapter *padapter); 222 void (*dm_deinit)(_adapter *padapter); 223 224 /*** xmit section ***/ 225 s32 (*init_xmit_priv)(_adapter *padapter); 226 void (*free_xmit_priv)(_adapter *padapter); 227 s32 (*hal_xmit)(_adapter *padapter, struct xmit_frame *pxmitframe); 228 /* 229 * mgnt_xmit should be implemented to run in interrupt context 230 */ 231 s32 (*mgnt_xmit)(_adapter *padapter, struct xmit_frame *pmgntframe); 232 s32 (*hal_xmitframe_enqueue)(_adapter *padapter, struct xmit_frame *pxmitframe); 233 #ifdef CONFIG_XMIT_THREAD_MODE 234 s32 (*xmit_thread_handler)(_adapter *padapter); 235 #endif 236 void (*run_thread)(_adapter *padapter); 237 void (*cancel_thread)(_adapter *padapter); 238 239 /*** recv section ***/ 240 s32 (*init_recv_priv)(_adapter *padapter); 241 void (*free_recv_priv)(_adapter *padapter); 242 #if defined(CONFIG_USB_HCI)||defined(CONFIG_PCI_HCI) 243 u32 (*inirp_init)(_adapter *padapter); 244 u32 (*inirp_deinit)(_adapter *padapter); 245 #endif 246 /*** interrupt hdl section ***/ 247 void (*enable_interrupt)(_adapter *padapter); 248 void (*disable_interrupt)(_adapter *padapter); 249 u8 (*check_ips_status)(_adapter *padapter); 250 #if defined(CONFIG_PCI_HCI) 251 s32 (*interrupt_handler)(_adapter *padapter); 252 #endif 253 254 #if defined(CONFIG_USB_HCI) && defined(CONFIG_SUPPORT_USB_INT) 255 void (*interrupt_handler)(_adapter *padapter, u16 pkt_len, u8 *pbuf); 256 #endif 257 258 #if defined(CONFIG_PCI_HCI) 259 void (*irp_reset)(_adapter *padapter); 260 #endif 261 262 /*** DM section ***/ 263 264 void (*InitSwLeds)(_adapter *padapter); 265 void (*DeInitSwLeds)(_adapter *padapter); 266 267 268 void (*set_bwmode_handler)(_adapter *padapter, CHANNEL_WIDTH Bandwidth, u8 Offset); 269 void (*set_channel_handler)(_adapter *padapter, u8 channel); 270 void (*set_chnl_bw_handler)(_adapter *padapter, u8 channel, CHANNEL_WIDTH Bandwidth, u8 Offset40, u8 Offset80); 271 272 void (*set_tx_power_level_handler)(_adapter *padapter, u8 channel); 273 void (*get_tx_power_level_handler)(_adapter *padapter, s32 *powerlevel); 274 275 void (*hal_dm_watchdog)(_adapter *padapter); 276 #ifdef CONFIG_LPS_LCLK_WD_TIMER 277 void (*hal_dm_watchdog_in_lps)(_adapter *padapter); 278 #endif 279 280 void (*SetHwRegHandler)(_adapter *padapter, u8 variable,u8* val); 281 void (*GetHwRegHandler)(_adapter *padapter, u8 variable,u8* val); 282 283 #ifdef CONFIG_C2H_PACKET_EN 284 void (*SetHwRegHandlerWithBuf)(_adapter *padapter, u8 variable, u8 * pbuf, int len); 285 #endif 286 287 u8 (*GetHalDefVarHandler)(_adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue); 288 u8 (*SetHalDefVarHandler)(_adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue); 289 290 void (*GetHalODMVarHandler)(_adapter *padapter, HAL_ODM_VARIABLE eVariable, PVOID pValue1,PVOID pValue2); 291 void (*SetHalODMVarHandler)(_adapter *padapter, HAL_ODM_VARIABLE eVariable, PVOID pValue1,BOOLEAN bSet); 292 293 void (*UpdateRAMaskHandler)(_adapter *padapter, u32 mac_id, u8 rssi_level); 294 void (*SetBeaconRelatedRegistersHandler)(_adapter *padapter); 295 296 void (*Add_RateATid)(_adapter *padapter, u64 bitmap, u8 *arg, u8 rssi_level); 297 298 299 #ifdef CONFIG_ANTENNA_DIVERSITY 300 u8 (*AntDivBeforeLinkHandler)(_adapter *padapter); 301 void (*AntDivCompareHandler)(_adapter *padapter, WLAN_BSSID_EX *dst, WLAN_BSSID_EX *src); 302 #endif 303 u8 (*interface_ps_func)(_adapter *padapter,HAL_INTF_PS_FUNC efunc_id, u8* val); 304 305 306 u32 (*read_bbreg)(_adapter *padapter, u32 RegAddr, u32 BitMask); 307 void (*write_bbreg)(_adapter *padapter, u32 RegAddr, u32 BitMask, u32 Data); 308 u32 (*read_rfreg)(_adapter *padapter, u8 eRFPath, u32 RegAddr, u32 BitMask); 309 void (*write_rfreg)(_adapter *padapter, u8 eRFPath, u32 RegAddr, u32 BitMask, u32 Data); 310 311 #ifdef CONFIG_HOSTAPD_MLME 312 s32 (*hostap_mgnt_xmit_entry)(_adapter *padapter, _pkt *pkt); 313 #endif 314 315 void (*EfusePowerSwitch)(_adapter *padapter, u8 bWrite, u8 PwrState); 316 void (*BTEfusePowerSwitch)(_adapter *padapter, u8 bWrite, u8 PwrState); 317 void (*ReadEFuse)(_adapter *padapter, u8 efuseType, u16 _offset, u16 _size_byte, u8 *pbuf, BOOLEAN bPseudoTest); 318 void (*EFUSEGetEfuseDefinition)(_adapter *padapter, u8 efuseType, u8 type, void *pOut, BOOLEAN bPseudoTest); 319 u16 (*EfuseGetCurrentSize)(_adapter *padapter, u8 efuseType, BOOLEAN bPseudoTest); 320 int (*Efuse_PgPacketRead)(_adapter *padapter, u8 offset, u8 *data, BOOLEAN bPseudoTest); 321 int (*Efuse_PgPacketWrite)(_adapter *padapter, u8 offset, u8 word_en, u8 *data, BOOLEAN bPseudoTest); 322 u8 (*Efuse_WordEnableDataWrite)(_adapter *padapter, u16 efuse_addr, u8 word_en, u8 *data, BOOLEAN bPseudoTest); 323 BOOLEAN (*Efuse_PgPacketWrite_BT)(_adapter *padapter, u8 offset, u8 word_en, u8 *data, BOOLEAN bPseudoTest); 324 325 #ifdef DBG_CONFIG_ERROR_DETECT 326 void (*sreset_init_value)(_adapter *padapter); 327 void (*sreset_reset_value)(_adapter *padapter); 328 void (*silentreset)(_adapter *padapter); 329 void (*sreset_xmit_status_check)(_adapter *padapter); 330 void (*sreset_linked_status_check) (_adapter *padapter); 331 u8 (*sreset_get_wifi_status)(_adapter *padapter); 332 bool (*sreset_inprogress)(_adapter *padapter); 333 #endif 334 335 #ifdef CONFIG_IOL 336 int (*IOL_exec_cmds_sync)(_adapter *padapter, struct xmit_frame *xmit_frame, u32 max_wating_ms, u32 bndy_cnt); 337 #endif 338 339 void (*hal_notch_filter)(_adapter * adapter, bool enable); 340 s32 (*c2h_handler)(_adapter *padapter, u8 *c2h_evt); 341 c2h_id_filter c2h_id_filter_ccx; 342 s32 (*fill_h2c_cmd)(PADAPTER, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer); 343 void (*fill_fake_txdesc)(PADAPTER, u8 *pDesc, u32 BufferLen, 344 u8 IsPsPoll, u8 IsBTQosNull, u8 bDataFrame); 345 346 #if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN) 347 void (*hal_set_wowlan_fw)(_adapter *adapter, u8 sleep); 348 void (*clear_interrupt)(_adapter *padapter); 349 #endif 350 u8 (*hal_get_tx_buff_rsvd_page_num)(_adapter *adapter, bool wowlan); 351 #ifdef CONFIG_GPIO_API 352 void (*update_hisr_hsisr_ind)(PADAPTER padapter, u32 flag); 353 #endif 354 }; 355 356 typedef enum _RT_EEPROM_TYPE{ 357 EEPROM_93C46, 358 EEPROM_93C56, 359 EEPROM_BOOT_EFUSE, 360 }RT_EEPROM_TYPE,*PRT_EEPROM_TYPE; 361 362 363 364 #define RF_CHANGE_BY_INIT 0 365 #define RF_CHANGE_BY_IPS BIT28 366 #define RF_CHANGE_BY_PS BIT29 367 #define RF_CHANGE_BY_HW BIT30 368 #define RF_CHANGE_BY_SW BIT31 369 370 typedef enum _HARDWARE_TYPE{ 371 HARDWARE_TYPE_RTL8188EE, 372 HARDWARE_TYPE_RTL8188EU, 373 HARDWARE_TYPE_RTL8188ES, 374 // NEW_GENERATION_IC 375 HARDWARE_TYPE_RTL8192EE, 376 HARDWARE_TYPE_RTL8192EU, 377 HARDWARE_TYPE_RTL8192ES, 378 HARDWARE_TYPE_RTL8812E, 379 HARDWARE_TYPE_RTL8812AU, 380 HARDWARE_TYPE_RTL8811AU, 381 HARDWARE_TYPE_RTL8821E, 382 HARDWARE_TYPE_RTL8821U, 383 HARDWARE_TYPE_RTL8821S, 384 HARDWARE_TYPE_RTL8723BE, 385 HARDWARE_TYPE_RTL8723BU, 386 HARDWARE_TYPE_RTL8723BS, 387 HARDWARE_TYPE_RTL8814AE, 388 HARDWARE_TYPE_RTL8814AU, 389 HARDWARE_TYPE_RTL8814AS, 390 HARDWARE_TYPE_RTL8821BE, 391 HARDWARE_TYPE_RTL8821BU, 392 HARDWARE_TYPE_RTL8821BS, 393 HARDWARE_TYPE_RTL8822BE, 394 HARDWARE_TYPE_RTL8822BU, 395 HARDWARE_TYPE_RTL8822BS, 396 HARDWARE_TYPE_RTL8703BE, 397 HARDWARE_TYPE_RTL8703BU, 398 HARDWARE_TYPE_RTL8703BS, 399 HARDWARE_TYPE_RTL8188FE, 400 HARDWARE_TYPE_RTL8188FU, 401 HARDWARE_TYPE_RTL8188FS, 402 HARDWARE_TYPE_MAX, 403 }HARDWARE_TYPE; 404 405 #define IS_NEW_GENERATION_IC(_Adapter) (rtw_get_hw_type(_Adapter) >= HARDWARE_TYPE_RTL8192EE) 406 // 407 // RTL8188E Series 408 // 409 #define IS_HARDWARE_TYPE_8188EE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8188EE) 410 #define IS_HARDWARE_TYPE_8188EU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8188EU) 411 #define IS_HARDWARE_TYPE_8188ES(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8188ES) 412 #define IS_HARDWARE_TYPE_8188E(_Adapter) \ 413 (IS_HARDWARE_TYPE_8188EE(_Adapter) || IS_HARDWARE_TYPE_8188EU(_Adapter) || IS_HARDWARE_TYPE_8188ES(_Adapter)) 414 415 // RTL8812 Series 416 #define IS_HARDWARE_TYPE_8812E(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8812E) 417 #define IS_HARDWARE_TYPE_8812AU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8812AU) 418 #define IS_HARDWARE_TYPE_8812(_Adapter) \ 419 (IS_HARDWARE_TYPE_8812E(_Adapter) || IS_HARDWARE_TYPE_8812AU(_Adapter)) 420 421 // RTL8821 Series 422 #define IS_HARDWARE_TYPE_8821E(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821E) 423 #define IS_HARDWARE_TYPE_8811AU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8811AU) 424 #define IS_HARDWARE_TYPE_8821U(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821U || \ 425 rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8811AU) 426 #define IS_HARDWARE_TYPE_8821S(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821S) 427 #define IS_HARDWARE_TYPE_8821(_Adapter) \ 428 (IS_HARDWARE_TYPE_8821E(_Adapter) || IS_HARDWARE_TYPE_8821U(_Adapter)|| IS_HARDWARE_TYPE_8821S(_Adapter)) 429 430 #define IS_HARDWARE_TYPE_JAGUAR(_Adapter) \ 431 (IS_HARDWARE_TYPE_8812(_Adapter) || IS_HARDWARE_TYPE_8821(_Adapter)) 432 433 //RTL8192E Series 434 #define IS_HARDWARE_TYPE_8192EE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8192EE) 435 #define IS_HARDWARE_TYPE_8192EU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8192EU) 436 #define IS_HARDWARE_TYPE_8192ES(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8192ES) 437 438 #define IS_HARDWARE_TYPE_8192E(_Adapter) \ 439 (IS_HARDWARE_TYPE_8192EE(_Adapter) || IS_HARDWARE_TYPE_8192EU(_Adapter) ||IS_HARDWARE_TYPE_8192ES(_Adapter)) 440 441 #define IS_HARDWARE_TYPE_8723BE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8723BE) 442 #define IS_HARDWARE_TYPE_8723BU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8723BU) 443 #define IS_HARDWARE_TYPE_8723BS(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8723BS) 444 445 #define IS_HARDWARE_TYPE_8723B(_Adapter) \ 446 (IS_HARDWARE_TYPE_8723BE(_Adapter) || IS_HARDWARE_TYPE_8723BU(_Adapter) ||IS_HARDWARE_TYPE_8723BS(_Adapter)) 447 448 /* RTL8814A Series */ 449 #define IS_HARDWARE_TYPE_8814AE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8814AE) 450 #define IS_HARDWARE_TYPE_8814AU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8814AU) 451 #define IS_HARDWARE_TYPE_8814AS(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8814AS) 452 453 #define IS_HARDWARE_TYPE_8814A(_Adapter) \ 454 (IS_HARDWARE_TYPE_8814AE(_Adapter) || IS_HARDWARE_TYPE_8814AU(_Adapter) || IS_HARDWARE_TYPE_8814AS(_Adapter)) 455 456 #define IS_HARDWARE_TYPE_JAGUAR2(_Adapter) \ 457 (IS_HARDWARE_TYPE_8814A(_Adapter) || IS_HARDWARE_TYPE_8821B(_Adapter) || IS_HARDWARE_TYPE_8822B(_Adapter)) 458 459 #define IS_HARDWARE_TYPE_JAGUAR_AND_JAGUAR2(_Adapter) \ 460 (IS_HARDWARE_TYPE_JAGUAR(_Adapter) || IS_HARDWARE_TYPE_JAGUAR2(_Adapter)) 461 462 /* RTL8703B Series */ 463 #define IS_HARDWARE_TYPE_8703BE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8703BE) 464 #define IS_HARDWARE_TYPE_8703BS(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8703BS) 465 #define IS_HARDWARE_TYPE_8703BU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8703BU) 466 #define IS_HARDWARE_TYPE_8703B(_Adapter) \ 467 (IS_HARDWARE_TYPE_8703BE(_Adapter) || IS_HARDWARE_TYPE_8703BU(_Adapter) || IS_HARDWARE_TYPE_8703BS(_Adapter)) 468 469 /* RTL8188F Series */ 470 #define IS_HARDWARE_TYPE_8188FE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8188FE) 471 #define IS_HARDWARE_TYPE_8188FS(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8188FS) 472 #define IS_HARDWARE_TYPE_8188FU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8188FU) 473 #define IS_HARDWARE_TYPE_8188F(_Adapter) \ 474 (IS_HARDWARE_TYPE_8188FE(_Adapter) || IS_HARDWARE_TYPE_8188FU(_Adapter) || IS_HARDWARE_TYPE_8188FS(_Adapter)) 475 476 #define IS_HARDWARE_TYPE_8821BE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821BE) 477 #define IS_HARDWARE_TYPE_8821BU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821BU) 478 #define IS_HARDWARE_TYPE_8821BS(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821BS) 479 480 #define IS_HARDWARE_TYPE_8821B(_Adapter) \ 481 (IS_HARDWARE_TYPE_8821BE(_Adapter) || IS_HARDWARE_TYPE_8821BU(_Adapter) || IS_HARDWARE_TYPE_8821BS(_Adapter)) 482 483 #define IS_HARDWARE_TYPE_8822BE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8822BE) 484 #define IS_HARDWARE_TYPE_8822BU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8822BU) 485 #define IS_HARDWARE_TYPE_8822BS(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8822BS) 486 #define IS_HARDWARE_TYPE_8822B(_Adapter) \ 487 (IS_HARDWARE_TYPE_8822BE(_Adapter) || IS_HARDWARE_TYPE_8822BU(_Adapter) || IS_HARDWARE_TYPE_8822BS(_Adapter)) 488 489 490 491 typedef enum _wowlan_subcode { 492 WOWLAN_ENABLE = 0, 493 WOWLAN_DISABLE = 1, 494 WOWLAN_AP_ENABLE = 2, 495 WOWLAN_AP_DISABLE = 3, 496 WOWLAN_PATTERN_CLEAN = 4 497 } wowlan_subcode; 498 499 struct wowlan_ioctl_param{ 500 unsigned int subcode; 501 unsigned int subcode_value; 502 unsigned int wakeup_reason; 503 }; 504 505 #define Rx_Pairwisekey 0x01 506 #define Rx_GTK 0x02 507 #define Rx_DisAssoc 0x04 508 #define Rx_DeAuth 0x08 509 #define Rx_ARPReq 0x09 510 #define FWDecisionDisconnect 0x10 511 #define Rx_MagicPkt 0x21 512 #define Rx_UnicastPkt 0x22 513 #define Rx_PatternPkt 0x23 514 #define RX_PNOWakeUp 0x55 515 #define AP_WakeUp 0x66 516 517 u8 rtw_hal_data_init(_adapter *padapter); 518 void rtw_hal_data_deinit(_adapter *padapter); 519 520 void rtw_hal_def_value_init(_adapter *padapter); 521 522 void rtw_hal_free_data(_adapter *padapter); 523 524 void rtw_hal_dm_init(_adapter *padapter); 525 void rtw_hal_dm_deinit(_adapter *padapter); 526 void rtw_hal_sw_led_init(_adapter *padapter); 527 void rtw_hal_sw_led_deinit(_adapter *padapter); 528 529 u32 rtw_hal_power_on(_adapter *padapter); 530 void rtw_hal_power_off(_adapter *padapter); 531 532 uint rtw_hal_init(_adapter *padapter); 533 uint rtw_hal_deinit(_adapter *padapter); 534 void rtw_hal_stop(_adapter *padapter); 535 void rtw_hal_set_hwreg(PADAPTER padapter, u8 variable, u8 *val); 536 void rtw_hal_get_hwreg(PADAPTER padapter, u8 variable, u8 *val); 537 538 #ifdef CONFIG_C2H_PACKET_EN 539 void rtw_hal_set_hwreg_with_buf(_adapter *padapter, u8 variable, u8 *pbuf, int len); 540 #endif 541 542 void rtw_hal_chip_configure(_adapter *padapter); 543 void rtw_hal_read_chip_info(_adapter *padapter); 544 void rtw_hal_read_chip_version(_adapter *padapter); 545 546 u8 rtw_hal_set_def_var(_adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue); 547 u8 rtw_hal_get_def_var(_adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue); 548 549 void rtw_hal_set_odm_var(_adapter *padapter, HAL_ODM_VARIABLE eVariable, PVOID pValue1,BOOLEAN bSet); 550 void rtw_hal_get_odm_var(_adapter *padapter, HAL_ODM_VARIABLE eVariable, PVOID pValue1,PVOID pValue2); 551 552 void rtw_hal_enable_interrupt(_adapter *padapter); 553 void rtw_hal_disable_interrupt(_adapter *padapter); 554 555 u8 rtw_hal_check_ips_status(_adapter *padapter); 556 557 #if defined(CONFIG_USB_HCI)||defined(CONFIG_PCI_HCI) 558 u32 rtw_hal_inirp_init(_adapter *padapter); 559 u32 rtw_hal_inirp_deinit(_adapter *padapter); 560 #endif 561 562 #if defined(CONFIG_PCI_HCI) 563 void rtw_hal_irp_reset(_adapter *padapter); 564 #endif 565 566 u8 rtw_hal_intf_ps_func(_adapter *padapter,HAL_INTF_PS_FUNC efunc_id, u8* val); 567 568 s32 rtw_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); 569 s32 rtw_hal_xmit(_adapter *padapter, struct xmit_frame *pxmitframe); 570 s32 rtw_hal_mgnt_xmit(_adapter *padapter, struct xmit_frame *pmgntframe); 571 572 s32 rtw_hal_init_xmit_priv(_adapter *padapter); 573 void rtw_hal_free_xmit_priv(_adapter *padapter); 574 575 s32 rtw_hal_init_recv_priv(_adapter *padapter); 576 void rtw_hal_free_recv_priv(_adapter *padapter); 577 578 void rtw_hal_update_ra_mask(struct sta_info *psta, u8 rssi_level); 579 void rtw_hal_add_ra_tid(_adapter *padapter, u64 bitmap, u8 *arg, u8 rssi_level); 580 581 void rtw_hal_start_thread(_adapter *padapter); 582 void rtw_hal_stop_thread(_adapter *padapter); 583 584 void rtw_hal_bcn_related_reg_setting(_adapter *padapter); 585 586 u32 rtw_hal_read_bbreg(_adapter *padapter, u32 RegAddr, u32 BitMask); 587 void rtw_hal_write_bbreg(_adapter *padapter, u32 RegAddr, u32 BitMask, u32 Data); 588 u32 rtw_hal_read_rfreg(_adapter *padapter, u32 eRFPath, u32 RegAddr, u32 BitMask); 589 void rtw_hal_write_rfreg(_adapter *padapter, u32 eRFPath, u32 RegAddr, u32 BitMask, u32 Data); 590 591 #define PHY_QueryBBReg(Adapter, RegAddr, BitMask) rtw_hal_read_bbreg((Adapter), (RegAddr), (BitMask)) 592 #define PHY_SetBBReg(Adapter, RegAddr, BitMask, Data) rtw_hal_write_bbreg((Adapter), (RegAddr), (BitMask), (Data)) 593 #define PHY_QueryRFReg(Adapter, eRFPath, RegAddr, BitMask) rtw_hal_read_rfreg((Adapter), (eRFPath), (RegAddr), (BitMask)) 594 #define PHY_SetRFReg(Adapter, eRFPath, RegAddr, BitMask, Data) rtw_hal_write_rfreg((Adapter), (eRFPath), (RegAddr), (BitMask), (Data)) 595 596 #define PHY_SetMacReg PHY_SetBBReg 597 #define PHY_QueryMacReg PHY_QueryBBReg 598 599 #if defined(CONFIG_PCI_HCI) 600 s32 rtw_hal_interrupt_handler(_adapter *padapter); 601 #endif 602 #if defined(CONFIG_USB_HCI) && defined(CONFIG_SUPPORT_USB_INT) 603 void rtw_hal_interrupt_handler(_adapter *padapter, u16 pkt_len, u8 *pbuf); 604 #endif 605 606 void rtw_hal_set_bwmode(_adapter *padapter, CHANNEL_WIDTH Bandwidth, u8 Offset); 607 void rtw_hal_set_chan(_adapter *padapter, u8 channel); 608 void rtw_hal_set_chnl_bw(_adapter *padapter, u8 channel, CHANNEL_WIDTH Bandwidth, u8 Offset40, u8 Offset80); 609 void rtw_hal_dm_watchdog(_adapter *padapter); 610 void rtw_hal_dm_watchdog_in_lps(_adapter *padapter); 611 612 void rtw_hal_set_tx_power_level(_adapter *padapter, u8 channel); 613 void rtw_hal_get_tx_power_level(_adapter *padapter, s32 *powerlevel); 614 615 #ifdef CONFIG_ANTENNA_DIVERSITY 616 u8 rtw_hal_antdiv_before_linked(_adapter *padapter); 617 void rtw_hal_antdiv_rssi_compared(_adapter *padapter, WLAN_BSSID_EX *dst, WLAN_BSSID_EX *src); 618 #endif 619 620 #ifdef CONFIG_HOSTAPD_MLME 621 s32 rtw_hal_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt); 622 #endif 623 624 #ifdef DBG_CONFIG_ERROR_DETECT 625 void rtw_hal_sreset_init(_adapter *padapter); 626 void rtw_hal_sreset_reset(_adapter *padapter); 627 void rtw_hal_sreset_reset_value(_adapter *padapter); 628 void rtw_hal_sreset_xmit_status_check(_adapter *padapter); 629 void rtw_hal_sreset_linked_status_check (_adapter *padapter); 630 u8 rtw_hal_sreset_get_wifi_status(_adapter *padapter); 631 bool rtw_hal_sreset_inprogress(_adapter *padapter); 632 #endif 633 634 #ifdef CONFIG_IOL 635 int rtw_hal_iol_cmd(ADAPTER *adapter, struct xmit_frame *xmit_frame, u32 max_wating_ms, u32 bndy_cnt); 636 #endif 637 638 #ifdef CONFIG_XMIT_THREAD_MODE 639 s32 rtw_hal_xmit_thread_handler(_adapter *padapter); 640 #endif 641 642 void rtw_hal_notch_filter(_adapter * adapter, bool enable); 643 644 bool rtw_hal_c2h_valid(_adapter *adapter, u8 *buf); 645 s32 rtw_hal_c2h_evt_read(_adapter *adapter, u8 *buf); 646 s32 rtw_hal_c2h_handler(_adapter *adapter, u8 *c2h_evt); 647 c2h_id_filter rtw_hal_c2h_id_filter_ccx(_adapter *adapter); 648 649 s32 rtw_hal_is_disable_sw_channel_plan(PADAPTER padapter); 650 651 s32 rtw_hal_macid_sleep(PADAPTER padapter, u8 macid); 652 s32 rtw_hal_macid_wakeup(PADAPTER padapter, u8 macid); 653 654 s32 rtw_hal_fill_h2c_cmd(PADAPTER padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer); 655 void rtw_hal_fill_fake_txdesc(_adapter *padapter, u8 *pDesc, u32 BufferLen, 656 u8 IsPsPoll, u8 IsBTQosNull, u8 bDataFrame); 657 u8 rtw_hal_get_txbuff_rsvd_page_num(_adapter *adapter, bool wowlan); 658 659 #ifdef CONFIG_GPIO_API 660 void rtw_hal_update_hisr_hsisr_ind(_adapter *padapter, u32 flag); 661 #endif 662 663 #if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN) 664 void rtw_hal_clear_interrupt(_adapter *padapter); 665 void rtw_hal_set_wowlan_fw(_adapter *padapter, u8 sleep); 666 #endif 667 u8 rtw_hal_ops_check(_adapter *padapter); 668 669 #endif //__HAL_INTF_H__ 670 671