hal_intf.h 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795
  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. enum RTL871X_HCI_TYPE {
  23. RTW_PCIE = BIT0,
  24. RTW_USB = BIT1,
  25. RTW_SDIO = BIT2,
  26. RTW_GSPI = BIT3,
  27. };
  28. enum _CHIP_TYPE {
  29. NULL_CHIP_TYPE,
  30. RTL8188E,
  31. RTL8192E,
  32. RTL8812,
  33. RTL8821, /* RTL8811 */
  34. RTL8723B,
  35. RTL8814A,
  36. RTL8703B,
  37. RTL8188F,
  38. RTL8822B,
  39. RTL8723D,
  40. RTL8821C,
  41. MAX_CHIP_TYPE
  42. };
  43. #ifdef RTW_HALMAC
  44. enum fw_mem {
  45. FW_EMEM,
  46. FW_IMEM,
  47. FW_DMEM,
  48. };
  49. #endif
  50. extern const u32 _chip_type_to_odm_ic_type[];
  51. #define chip_type_to_odm_ic_type(chip_type) (((chip_type) >= MAX_CHIP_TYPE) ? _chip_type_to_odm_ic_type[MAX_CHIP_TYPE] : _chip_type_to_odm_ic_type[(chip_type)])
  52. typedef enum _HAL_HW_TIMER_TYPE {
  53. HAL_TIMER_NONE = 0,
  54. HAL_TIMER_TXBF = 1,
  55. HAL_TIMER_EARLYMODE = 2,
  56. } HAL_HW_TIMER_TYPE, *PHAL_HW_TIMER_TYPE;
  57. typedef enum _HW_VARIABLES {
  58. HW_VAR_MEDIA_STATUS,
  59. HW_VAR_SET_OPMODE,
  60. HW_VAR_MAC_ADDR,
  61. HW_VAR_BSSID,
  62. HW_VAR_INIT_RTS_RATE,
  63. HW_VAR_BASIC_RATE,
  64. HW_VAR_TXPAUSE,
  65. HW_VAR_BCN_FUNC,
  66. HW_VAR_CORRECT_TSF,
  67. HW_VAR_CHECK_BSSID,
  68. HW_VAR_MLME_DISCONNECT,
  69. HW_VAR_MLME_SITESURVEY,
  70. HW_VAR_MLME_JOIN,
  71. HW_VAR_ON_RCR_AM,
  72. HW_VAR_OFF_RCR_AM,
  73. HW_VAR_BEACON_INTERVAL,
  74. HW_VAR_SLOT_TIME,
  75. HW_VAR_RESP_SIFS,
  76. HW_VAR_ACK_PREAMBLE,
  77. HW_VAR_SEC_CFG,
  78. HW_VAR_SEC_DK_CFG,
  79. HW_VAR_BCN_VALID,
  80. HW_VAR_RF_TYPE,
  81. /* PHYDM odm->SupportAbility */
  82. HW_VAR_CAM_EMPTY_ENTRY,
  83. HW_VAR_CAM_INVALID_ALL,
  84. HW_VAR_AC_PARAM_VO,
  85. HW_VAR_AC_PARAM_VI,
  86. HW_VAR_AC_PARAM_BE,
  87. HW_VAR_AC_PARAM_BK,
  88. HW_VAR_ACM_CTRL,
  89. #ifdef CONFIG_WMMPS
  90. HW_VAR_UAPSD_TID,
  91. #endif
  92. HW_VAR_AMPDU_MIN_SPACE,
  93. HW_VAR_AMPDU_FACTOR,
  94. HW_VAR_RXDMA_AGG_PG_TH,
  95. HW_VAR_SET_RPWM,
  96. HW_VAR_CPWM,
  97. HW_VAR_H2C_FW_PWRMODE,
  98. HW_VAR_H2C_PS_TUNE_PARAM,
  99. HW_VAR_H2C_FW_JOINBSSRPT,
  100. HW_VAR_FWLPS_RF_ON,
  101. HW_VAR_H2C_FW_P2P_PS_OFFLOAD,
  102. #ifdef CONFIG_LPS_POFF
  103. HW_VAR_LPS_POFF_INIT,
  104. HW_VAR_LPS_POFF_DEINIT,
  105. HW_VAR_LPS_POFF_SET_MODE,
  106. HW_VAR_LPS_POFF_WOW_EN,
  107. #endif
  108. #ifdef CONFIG_LPS_PG
  109. HW_VAR_LPS_PG_HANDLE,
  110. #endif
  111. HW_VAR_TRIGGER_GPIO_0,
  112. HW_VAR_BT_SET_COEXIST,
  113. HW_VAR_BT_ISSUE_DELBA,
  114. HW_VAR_SWITCH_EPHY_WoWLAN,
  115. HW_VAR_EFUSE_USAGE,
  116. HW_VAR_EFUSE_BYTES,
  117. HW_VAR_EFUSE_BT_USAGE,
  118. HW_VAR_EFUSE_BT_BYTES,
  119. HW_VAR_FIFO_CLEARN_UP,
  120. HW_VAR_RESTORE_HW_SEQ,
  121. HW_VAR_CHECK_TXBUF,
  122. HW_VAR_PCIE_STOP_TX_DMA,
  123. HW_VAR_APFM_ON_MAC, /* Auto FSM to Turn On, include clock, isolation, power control for MAC only */
  124. HW_VAR_HCI_SUS_STATE,
  125. /* 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. */
  126. /* Unit in microsecond. 0 means disable this function. */
  127. #if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN)
  128. HW_VAR_WOWLAN,
  129. HW_VAR_WAKEUP_REASON,
  130. #endif
  131. HW_VAR_RPWM_TOG,
  132. #ifdef CONFIG_GPIO_WAKEUP
  133. HW_SET_GPIO_WL_CTRL,
  134. #endif
  135. HW_VAR_SYS_CLKR,
  136. HW_VAR_NAV_UPPER,
  137. HW_VAR_RPT_TIMER_SETTING,
  138. HW_VAR_TX_RPT_MAX_MACID,
  139. HW_VAR_CHK_HI_QUEUE_EMPTY,
  140. HW_VAR_DL_BCN_SEL,
  141. HW_VAR_AMPDU_MAX_TIME,
  142. HW_VAR_WIRELESS_MODE,
  143. HW_VAR_USB_MODE,
  144. HW_VAR_PORT_SWITCH,
  145. HW_VAR_DO_IQK,
  146. HW_VAR_DM_IN_LPS,
  147. HW_VAR_SET_REQ_FW_PS,
  148. HW_VAR_FW_PS_STATE,
  149. HW_VAR_SOUNDING_ENTER,
  150. HW_VAR_SOUNDING_LEAVE,
  151. HW_VAR_SOUNDING_RATE,
  152. HW_VAR_SOUNDING_STATUS,
  153. HW_VAR_SOUNDING_FW_NDPA,
  154. HW_VAR_SOUNDING_CLK,
  155. HW_VAR_SOUNDING_SET_GID_TABLE,
  156. HW_VAR_SOUNDING_CSI_REPORT,
  157. /*Add by YuChen for TXBF HW timer*/
  158. HW_VAR_HW_REG_TIMER_INIT,
  159. HW_VAR_HW_REG_TIMER_RESTART,
  160. HW_VAR_HW_REG_TIMER_START,
  161. HW_VAR_HW_REG_TIMER_STOP,
  162. /*Add by YuChen for TXBF HW timer*/
  163. HW_VAR_DL_RSVD_PAGE,
  164. HW_VAR_MACID_LINK,
  165. HW_VAR_MACID_NOLINK,
  166. HW_VAR_MACID_SLEEP,
  167. HW_VAR_MACID_WAKEUP,
  168. HW_VAR_DUMP_MAC_QUEUE_INFO,
  169. HW_VAR_ASIX_IOT,
  170. #ifdef CONFIG_MBSSID_CAM
  171. HW_VAR_MBSSID_CAM_WRITE,
  172. HW_VAR_MBSSID_CAM_CLEAR,
  173. HW_VAR_RCR_MBSSID_EN,
  174. #endif
  175. HW_VAR_EN_HW_UPDATE_TSF,
  176. HW_VAR_CH_SW_NEED_TO_TAKE_CARE_IQK_INFO,
  177. HW_VAR_CH_SW_IQK_INFO_BACKUP,
  178. HW_VAR_CH_SW_IQK_INFO_RESTORE,
  179. HW_VAR_DBI,
  180. HW_VAR_MDIO,
  181. HW_VAR_L1OFF_CAPABILITY,
  182. HW_VAR_L1OFF_NIC_SUPPORT,
  183. #ifdef CONFIG_TDLS
  184. HW_VAR_TDLS_WRCR,
  185. HW_VAR_TDLS_RS_RCR,
  186. #ifdef CONFIG_TDLS_CH_SW
  187. HW_VAR_TDLS_BCN_EARLY_C2H_RPT
  188. #endif
  189. #endif
  190. } HW_VARIABLES;
  191. typedef enum _HAL_DEF_VARIABLE {
  192. HAL_DEF_UNDERCORATEDSMOOTHEDPWDB,
  193. HAL_DEF_IS_SUPPORT_ANT_DIV,
  194. HAL_DEF_DRVINFO_SZ,
  195. HAL_DEF_MAX_RECVBUF_SZ,
  196. HAL_DEF_RX_PACKET_OFFSET,
  197. HAL_DEF_RX_DMA_SZ_WOW,
  198. HAL_DEF_RX_DMA_SZ,
  199. HAL_DEF_RX_PAGE_SIZE,
  200. HAL_DEF_DBG_DUMP_RXPKT,/* for dbg */
  201. HAL_DEF_RA_DECISION_RATE,
  202. HAL_DEF_RA_SGI,
  203. HAL_DEF_PT_PWR_STATUS,
  204. HAL_DEF_TX_LDPC, /* LDPC support */
  205. HAL_DEF_RX_LDPC, /* LDPC support */
  206. HAL_DEF_TX_STBC, /* TX STBC support */
  207. HAL_DEF_RX_STBC, /* RX STBC support */
  208. HAL_DEF_EXPLICIT_BEAMFORMER,/* Explicit Compressed Steering Capable */
  209. HAL_DEF_EXPLICIT_BEAMFORMEE,/* Explicit Compressed Beamforming Feedback Capable */
  210. HAL_DEF_VHT_MU_BEAMFORMER, /* VHT MU Beamformer support */
  211. HAL_DEF_VHT_MU_BEAMFORMEE, /* VHT MU Beamformee support */
  212. HAL_DEF_BEAMFORMER_CAP,
  213. HAL_DEF_BEAMFORMEE_CAP,
  214. HW_VAR_MAX_RX_AMPDU_FACTOR,
  215. HW_DEF_RA_INFO_DUMP,
  216. HAL_DEF_DBG_DUMP_TXPKT,
  217. HAL_DEF_TX_PAGE_SIZE,
  218. HAL_DEF_TX_PAGE_BOUNDARY,
  219. HAL_DEF_TX_PAGE_BOUNDARY_WOWLAN,
  220. HAL_DEF_ANT_DETECT,/* to do for 8723a */
  221. HAL_DEF_PCI_SUUPORT_L1_BACKDOOR, /* Determine if the L1 Backdoor setting is turned on. */
  222. HAL_DEF_PCI_AMD_L1_SUPPORT,
  223. HAL_DEF_PCI_ASPM_OSC, /* Support for ASPM OSC, added by Roger, 2013.03.27. */
  224. HAL_DEF_MACID_SLEEP, /* Support for MACID sleep */
  225. HAL_DEF_DBG_DIS_PWT, /* disable Tx power training or not. */
  226. HAL_DEF_EFUSE_USAGE, /* Get current EFUSE utilization. 2008.12.19. Added by Roger. */
  227. HAL_DEF_EFUSE_BYTES,
  228. HW_VAR_BEST_AMPDU_DENSITY,
  229. } HAL_DEF_VARIABLE;
  230. typedef enum _HAL_ODM_VARIABLE {
  231. HAL_ODM_STA_INFO,
  232. HAL_ODM_P2P_STATE,
  233. HAL_ODM_WIFI_DISPLAY_STATE,
  234. HAL_ODM_NOISE_MONITOR,
  235. HAL_ODM_REGULATION,
  236. HAL_ODM_INITIAL_GAIN,
  237. HAL_ODM_FA_CNT_DUMP,
  238. HAL_ODM_DBG_FLAG,
  239. HAL_ODM_DBG_LEVEL,
  240. HAL_ODM_RX_INFO_DUMP,
  241. HAL_ODM_RX_Dframe_INFO,
  242. #ifdef CONFIG_AUTO_CHNL_SEL_NHM
  243. HAL_ODM_AUTO_CHNL_SEL,
  244. #endif
  245. #ifdef CONFIG_ANTENNA_DIVERSITY
  246. HAL_ODM_ANTDIV_SELECT
  247. #endif
  248. } HAL_ODM_VARIABLE;
  249. typedef enum _HAL_INTF_PS_FUNC {
  250. HAL_USB_SELECT_SUSPEND,
  251. HAL_MAX_ID,
  252. } HAL_INTF_PS_FUNC;
  253. typedef s32(*c2h_id_filter)(_adapter *adapter, u8 id, u8 seq, u8 plen, u8 *payload);
  254. struct txpwr_idx_comp;
  255. struct macid_cfg {
  256. u8 mac_id;
  257. u8 rate_id;
  258. u8 bandwidth;
  259. u8 short_gi;
  260. u8 ignore_bw;
  261. u8 rsvd;
  262. u16 rsvd1;
  263. u64 ra_mask;
  264. };
  265. struct hal_ops {
  266. /*** initialize section ***/
  267. void (*read_chip_version)(_adapter *padapter);
  268. void (*init_default_value)(_adapter *padapter);
  269. void (*intf_chip_configure)(_adapter *padapter);
  270. u8 (*read_adapter_info)(_adapter *padapter);
  271. u32(*hal_power_on)(_adapter *padapter);
  272. void (*hal_power_off)(_adapter *padapter);
  273. u32(*hal_init)(_adapter *padapter);
  274. u32(*hal_deinit)(_adapter *padapter);
  275. void (*dm_init)(_adapter *padapter);
  276. void (*dm_deinit)(_adapter *padapter);
  277. /*** xmit section ***/
  278. s32(*init_xmit_priv)(_adapter *padapter);
  279. void (*free_xmit_priv)(_adapter *padapter);
  280. s32(*hal_xmit)(_adapter *padapter, struct xmit_frame *pxmitframe);
  281. /*
  282. * mgnt_xmit should be implemented to run in interrupt context
  283. */
  284. s32(*mgnt_xmit)(_adapter *padapter, struct xmit_frame *pmgntframe);
  285. s32(*hal_xmitframe_enqueue)(_adapter *padapter, struct xmit_frame *pxmitframe);
  286. #ifdef CONFIG_XMIT_THREAD_MODE
  287. s32(*xmit_thread_handler)(_adapter *padapter);
  288. #endif
  289. void (*run_thread)(_adapter *padapter);
  290. void (*cancel_thread)(_adapter *padapter);
  291. /*** recv section ***/
  292. s32(*init_recv_priv)(_adapter *padapter);
  293. void (*free_recv_priv)(_adapter *padapter);
  294. #ifdef CONFIG_RECV_THREAD_MODE
  295. s32 (*recv_hdl)(_adapter *adapter);
  296. #endif
  297. #if defined(CONFIG_USB_HCI) || defined(CONFIG_PCI_HCI)
  298. u32(*inirp_init)(_adapter *padapter);
  299. u32(*inirp_deinit)(_adapter *padapter);
  300. #endif
  301. /*** interrupt hdl section ***/
  302. void (*enable_interrupt)(_adapter *padapter);
  303. void (*disable_interrupt)(_adapter *padapter);
  304. u8(*check_ips_status)(_adapter *padapter);
  305. #if defined(CONFIG_PCI_HCI)
  306. s32(*interrupt_handler)(_adapter *padapter);
  307. #endif
  308. #if defined(CONFIG_USB_HCI) && defined(CONFIG_SUPPORT_USB_INT)
  309. void (*interrupt_handler)(_adapter *padapter, u16 pkt_len, u8 *pbuf);
  310. #endif
  311. #if defined(CONFIG_PCI_HCI)
  312. void (*irp_reset)(_adapter *padapter);
  313. #endif
  314. /*** DM section ***/
  315. void (*InitSwLeds)(_adapter *padapter);
  316. void (*DeInitSwLeds)(_adapter *padapter);
  317. void (*set_chnl_bw_handler)(_adapter *padapter, u8 channel, CHANNEL_WIDTH Bandwidth, u8 Offset40, u8 Offset80);
  318. void (*set_tx_power_level_handler)(_adapter *padapter, u8 channel);
  319. void (*get_tx_power_level_handler)(_adapter *padapter, s32 *powerlevel);
  320. void (*set_tx_power_index_handler)(_adapter *padapter, u32 powerindex, u8 rfpath, u8 rate);
  321. u8(*get_tx_power_index_handler)(_adapter *padapter, u8 rfpath, u8 rate, u8 bandwidth, u8 channel, struct txpwr_idx_comp *tic);
  322. void (*hal_dm_watchdog)(_adapter *padapter);
  323. #ifdef CONFIG_LPS_LCLK_WD_TIMER
  324. void (*hal_dm_watchdog_in_lps)(_adapter *padapter);
  325. #endif
  326. void (*set_hw_reg_handler)(_adapter *padapter, u8 variable, u8 *val);
  327. void (*GetHwRegHandler)(_adapter *padapter, u8 variable, u8 *val);
  328. u8 (*get_hal_def_var_handler)(_adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue);
  329. u8(*SetHalDefVarHandler)(_adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue);
  330. void (*GetHalODMVarHandler)(_adapter *padapter, HAL_ODM_VARIABLE eVariable, PVOID pValue1, PVOID pValue2);
  331. void (*SetHalODMVarHandler)(_adapter *padapter, HAL_ODM_VARIABLE eVariable, PVOID pValue1, BOOLEAN bSet);
  332. void (*update_ra_mask_handler)(_adapter *padapter, struct sta_info *psta, struct macid_cfg *h2c_macid_cfg);
  333. void (*SetBeaconRelatedRegistersHandler)(_adapter *padapter);
  334. u8(*interface_ps_func)(_adapter *padapter, HAL_INTF_PS_FUNC efunc_id, u8 *val);
  335. u32(*read_bbreg)(_adapter *padapter, u32 RegAddr, u32 BitMask);
  336. void (*write_bbreg)(_adapter *padapter, u32 RegAddr, u32 BitMask, u32 Data);
  337. u32(*read_rfreg)(_adapter *padapter, u8 eRFPath, u32 RegAddr, u32 BitMask);
  338. void (*write_rfreg)(_adapter *padapter, u8 eRFPath, u32 RegAddr, u32 BitMask, u32 Data);
  339. #ifdef CONFIG_HOSTAPD_MLME
  340. s32(*hostap_mgnt_xmit_entry)(_adapter *padapter, _pkt *pkt);
  341. #endif
  342. void (*EfusePowerSwitch)(_adapter *padapter, u8 bWrite, u8 PwrState);
  343. void (*BTEfusePowerSwitch)(_adapter *padapter, u8 bWrite, u8 PwrState);
  344. void (*ReadEFuse)(_adapter *padapter, u8 efuseType, u16 _offset, u16 _size_byte, u8 *pbuf, BOOLEAN bPseudoTest);
  345. void (*EFUSEGetEfuseDefinition)(_adapter *padapter, u8 efuseType, u8 type, void *pOut, BOOLEAN bPseudoTest);
  346. u16(*EfuseGetCurrentSize)(_adapter *padapter, u8 efuseType, BOOLEAN bPseudoTest);
  347. int (*Efuse_PgPacketRead)(_adapter *padapter, u8 offset, u8 *data, BOOLEAN bPseudoTest);
  348. int (*Efuse_PgPacketWrite)(_adapter *padapter, u8 offset, u8 word_en, u8 *data, BOOLEAN bPseudoTest);
  349. u8(*Efuse_WordEnableDataWrite)(_adapter *padapter, u16 efuse_addr, u8 word_en, u8 *data, BOOLEAN bPseudoTest);
  350. BOOLEAN(*Efuse_PgPacketWrite_BT)(_adapter *padapter, u8 offset, u8 word_en, u8 *data, BOOLEAN bPseudoTest);
  351. #ifdef DBG_CONFIG_ERROR_DETECT
  352. void (*sreset_init_value)(_adapter *padapter);
  353. void (*sreset_reset_value)(_adapter *padapter);
  354. void (*silentreset)(_adapter *padapter);
  355. void (*sreset_xmit_status_check)(_adapter *padapter);
  356. void (*sreset_linked_status_check)(_adapter *padapter);
  357. u8(*sreset_get_wifi_status)(_adapter *padapter);
  358. bool (*sreset_inprogress)(_adapter *padapter);
  359. #endif
  360. #ifdef CONFIG_IOL
  361. int (*IOL_exec_cmds_sync)(_adapter *padapter, struct xmit_frame *xmit_frame, u32 max_wating_ms, u32 bndy_cnt);
  362. #endif
  363. void (*hal_notch_filter)(_adapter *adapter, bool enable);
  364. #ifdef RTW_HALMAC
  365. void (*hal_mac_c2h_handler)(_adapter *adapter, u8 *pbuf, u16 length);
  366. #else
  367. s32(*c2h_handler)(_adapter *adapter, u8 id, u8 seq, u8 plen, u8 *payload);
  368. #endif
  369. void (*reqtxrpt)(_adapter *padapter, u8 macid);
  370. s32(*fill_h2c_cmd)(PADAPTER, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer);
  371. void (*fill_fake_txdesc)(PADAPTER, u8 *pDesc, u32 BufferLen,
  372. u8 IsPsPoll, u8 IsBTQosNull, u8 bDataFrame);
  373. s32(*fw_dl)(_adapter *adapter, u8 wowlan);
  374. #ifdef RTW_HALMAC
  375. s32 (*fw_mem_dl)(_adapter *adapter, enum fw_mem mem);
  376. #endif
  377. #if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN) || defined(CONFIG_PCI_HCI)
  378. void (*clear_interrupt)(_adapter *padapter);
  379. #endif
  380. u8(*hal_get_tx_buff_rsvd_page_num)(_adapter *adapter, bool wowlan);
  381. #ifdef CONFIG_GPIO_API
  382. void (*update_hisr_hsisr_ind)(PADAPTER padapter, u32 flag);
  383. int (*hal_gpio_func_check)(_adapter *padapter, u8 gpio_num);
  384. void (*hal_gpio_multi_func_reset)(_adapter *padapter, u8 gpio_num);
  385. #endif
  386. void (*fw_correct_bcn)(PADAPTER padapter);
  387. #ifdef RTW_HALMAC
  388. u8(*init_mac_register)(PADAPTER);
  389. u8(*init_phy)(PADAPTER);
  390. #endif /* RTW_HALMAC */
  391. #ifdef CONFIG_PCI_HCI
  392. void (*hal_set_l1ssbackdoor_handler)(_adapter *padapter, u8 enable);
  393. #endif
  394. };
  395. typedef enum _RT_EEPROM_TYPE {
  396. EEPROM_93C46,
  397. EEPROM_93C56,
  398. EEPROM_BOOT_EFUSE,
  399. } RT_EEPROM_TYPE, *PRT_EEPROM_TYPE;
  400. #define RF_CHANGE_BY_INIT 0
  401. #define RF_CHANGE_BY_IPS BIT28
  402. #define RF_CHANGE_BY_PS BIT29
  403. #define RF_CHANGE_BY_HW BIT30
  404. #define RF_CHANGE_BY_SW BIT31
  405. typedef enum _HARDWARE_TYPE {
  406. HARDWARE_TYPE_RTL8188EE,
  407. HARDWARE_TYPE_RTL8188EU,
  408. HARDWARE_TYPE_RTL8188ES,
  409. /* NEW_GENERATION_IC */
  410. HARDWARE_TYPE_RTL8192EE,
  411. HARDWARE_TYPE_RTL8192EU,
  412. HARDWARE_TYPE_RTL8192ES,
  413. HARDWARE_TYPE_RTL8812E,
  414. HARDWARE_TYPE_RTL8812AU,
  415. HARDWARE_TYPE_RTL8811AU,
  416. HARDWARE_TYPE_RTL8821E,
  417. HARDWARE_TYPE_RTL8821U,
  418. HARDWARE_TYPE_RTL8821S,
  419. HARDWARE_TYPE_RTL8723BE,
  420. HARDWARE_TYPE_RTL8723BU,
  421. HARDWARE_TYPE_RTL8723BS,
  422. HARDWARE_TYPE_RTL8814AE,
  423. HARDWARE_TYPE_RTL8814AU,
  424. HARDWARE_TYPE_RTL8814AS,
  425. HARDWARE_TYPE_RTL8821BE,
  426. HARDWARE_TYPE_RTL8821BU,
  427. HARDWARE_TYPE_RTL8821BS,
  428. HARDWARE_TYPE_RTL8822BE,
  429. HARDWARE_TYPE_RTL8822BU,
  430. HARDWARE_TYPE_RTL8822BS,
  431. HARDWARE_TYPE_RTL8703BE,
  432. HARDWARE_TYPE_RTL8703BU,
  433. HARDWARE_TYPE_RTL8703BS,
  434. HARDWARE_TYPE_RTL8188FE,
  435. HARDWARE_TYPE_RTL8188FU,
  436. HARDWARE_TYPE_RTL8188FS,
  437. HARDWARE_TYPE_RTL8723DE,
  438. HARDWARE_TYPE_RTL8723DU,
  439. HARDWARE_TYPE_RTL8723DS,
  440. HARDWARE_TYPE_RTL8821CE,
  441. HARDWARE_TYPE_RTL8821CU,
  442. HARDWARE_TYPE_RTL8821CS,
  443. HARDWARE_TYPE_MAX,
  444. } HARDWARE_TYPE;
  445. #define IS_NEW_GENERATION_IC(_Adapter) (rtw_get_hw_type(_Adapter) >= HARDWARE_TYPE_RTL8192EE)
  446. /*
  447. * RTL8188E Series
  448. * */
  449. #define IS_HARDWARE_TYPE_8188EE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8188EE)
  450. #define IS_HARDWARE_TYPE_8188EU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8188EU)
  451. #define IS_HARDWARE_TYPE_8188ES(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8188ES)
  452. #define IS_HARDWARE_TYPE_8188E(_Adapter) \
  453. (IS_HARDWARE_TYPE_8188EE(_Adapter) || IS_HARDWARE_TYPE_8188EU(_Adapter) || IS_HARDWARE_TYPE_8188ES(_Adapter))
  454. /* RTL8812 Series */
  455. #define IS_HARDWARE_TYPE_8812E(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8812E)
  456. #define IS_HARDWARE_TYPE_8812AU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8812AU)
  457. #define IS_HARDWARE_TYPE_8812(_Adapter) \
  458. (IS_HARDWARE_TYPE_8812E(_Adapter) || IS_HARDWARE_TYPE_8812AU(_Adapter))
  459. /* RTL8821 Series */
  460. #define IS_HARDWARE_TYPE_8821E(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821E)
  461. #define IS_HARDWARE_TYPE_8811AU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8811AU)
  462. #define IS_HARDWARE_TYPE_8821U(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821U || \
  463. rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8811AU)
  464. #define IS_HARDWARE_TYPE_8821S(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821S)
  465. #define IS_HARDWARE_TYPE_8821(_Adapter) \
  466. (IS_HARDWARE_TYPE_8821E(_Adapter) || IS_HARDWARE_TYPE_8821U(_Adapter) || IS_HARDWARE_TYPE_8821S(_Adapter))
  467. #define IS_HARDWARE_TYPE_JAGUAR(_Adapter) \
  468. (IS_HARDWARE_TYPE_8812(_Adapter) || IS_HARDWARE_TYPE_8821(_Adapter))
  469. /* RTL8192E Series */
  470. #define IS_HARDWARE_TYPE_8192EE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8192EE)
  471. #define IS_HARDWARE_TYPE_8192EU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8192EU)
  472. #define IS_HARDWARE_TYPE_8192ES(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8192ES)
  473. #define IS_HARDWARE_TYPE_8192E(_Adapter) \
  474. (IS_HARDWARE_TYPE_8192EE(_Adapter) || IS_HARDWARE_TYPE_8192EU(_Adapter) || IS_HARDWARE_TYPE_8192ES(_Adapter))
  475. #define IS_HARDWARE_TYPE_8723BE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8723BE)
  476. #define IS_HARDWARE_TYPE_8723BU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8723BU)
  477. #define IS_HARDWARE_TYPE_8723BS(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8723BS)
  478. #define IS_HARDWARE_TYPE_8723B(_Adapter) \
  479. (IS_HARDWARE_TYPE_8723BE(_Adapter) || IS_HARDWARE_TYPE_8723BU(_Adapter) || IS_HARDWARE_TYPE_8723BS(_Adapter))
  480. /* RTL8814A Series */
  481. #define IS_HARDWARE_TYPE_8814AE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8814AE)
  482. #define IS_HARDWARE_TYPE_8814AU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8814AU)
  483. #define IS_HARDWARE_TYPE_8814AS(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8814AS)
  484. #define IS_HARDWARE_TYPE_8814A(_Adapter) \
  485. (IS_HARDWARE_TYPE_8814AE(_Adapter) || IS_HARDWARE_TYPE_8814AU(_Adapter) || IS_HARDWARE_TYPE_8814AS(_Adapter))
  486. /* RTL8703B Series */
  487. #define IS_HARDWARE_TYPE_8703BE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8703BE)
  488. #define IS_HARDWARE_TYPE_8703BS(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8703BS)
  489. #define IS_HARDWARE_TYPE_8703BU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8703BU)
  490. #define IS_HARDWARE_TYPE_8703B(_Adapter) \
  491. (IS_HARDWARE_TYPE_8703BE(_Adapter) || IS_HARDWARE_TYPE_8703BU(_Adapter) || IS_HARDWARE_TYPE_8703BS(_Adapter))
  492. /* RTL8723D Series */
  493. #define IS_HARDWARE_TYPE_8723DE(_Adapter)\
  494. (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8723DE)
  495. #define IS_HARDWARE_TYPE_8723DS(_Adapter)\
  496. (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8723DS)
  497. #define IS_HARDWARE_TYPE_8723DU(_Adapter)\
  498. (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8723DU)
  499. #define IS_HARDWARE_TYPE_8723D(_Adapter)\
  500. (IS_HARDWARE_TYPE_8723DE(_Adapter) || \
  501. IS_HARDWARE_TYPE_8723DU(_Adapter) || \
  502. IS_HARDWARE_TYPE_8723DS(_Adapter))
  503. /* RTL8188F Series */
  504. #define IS_HARDWARE_TYPE_8188FE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8188FE)
  505. #define IS_HARDWARE_TYPE_8188FS(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8188FS)
  506. #define IS_HARDWARE_TYPE_8188FU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8188FU)
  507. #define IS_HARDWARE_TYPE_8188F(_Adapter) \
  508. (IS_HARDWARE_TYPE_8188FE(_Adapter) || IS_HARDWARE_TYPE_8188FU(_Adapter) || IS_HARDWARE_TYPE_8188FS(_Adapter))
  509. #define IS_HARDWARE_TYPE_8821BE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821BE)
  510. #define IS_HARDWARE_TYPE_8821BU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821BU)
  511. #define IS_HARDWARE_TYPE_8821BS(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821BS)
  512. #define IS_HARDWARE_TYPE_8821B(_Adapter) \
  513. (IS_HARDWARE_TYPE_8821BE(_Adapter) || IS_HARDWARE_TYPE_8821BU(_Adapter) || IS_HARDWARE_TYPE_8821BS(_Adapter))
  514. #define IS_HARDWARE_TYPE_8822BE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8822BE)
  515. #define IS_HARDWARE_TYPE_8822BU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8822BU)
  516. #define IS_HARDWARE_TYPE_8822BS(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8822BS)
  517. #define IS_HARDWARE_TYPE_8822B(_Adapter) \
  518. (IS_HARDWARE_TYPE_8822BE(_Adapter) || IS_HARDWARE_TYPE_8822BU(_Adapter) || IS_HARDWARE_TYPE_8822BS(_Adapter))
  519. #define IS_HARDWARE_TYPE_8821CE(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821CE)
  520. #define IS_HARDWARE_TYPE_8821CU(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821CU)
  521. #define IS_HARDWARE_TYPE_8821CS(_Adapter) (rtw_get_hw_type(_Adapter) == HARDWARE_TYPE_RTL8821CS)
  522. #define IS_HARDWARE_TYPE_8821C(_Adapter) \
  523. (IS_HARDWARE_TYPE_8821CE(_Adapter) || IS_HARDWARE_TYPE_8821CU(_Adapter) || IS_HARDWARE_TYPE_8821CS(_Adapter))
  524. #define IS_HARDWARE_TYPE_JAGUAR2(_Adapter) \
  525. (IS_HARDWARE_TYPE_8814A(_Adapter) || IS_HARDWARE_TYPE_8821B(_Adapter) || IS_HARDWARE_TYPE_8822B(_Adapter) || IS_HARDWARE_TYPE_8821C(_Adapter))
  526. #define IS_HARDWARE_TYPE_JAGUAR_AND_JAGUAR2(_Adapter) \
  527. (IS_HARDWARE_TYPE_JAGUAR(_Adapter) || IS_HARDWARE_TYPE_JAGUAR2(_Adapter))
  528. typedef enum _wowlan_subcode {
  529. WOWLAN_ENABLE = 0,
  530. WOWLAN_DISABLE = 1,
  531. WOWLAN_AP_ENABLE = 2,
  532. WOWLAN_AP_DISABLE = 3,
  533. WOWLAN_PATTERN_CLEAN = 4
  534. } wowlan_subcode;
  535. struct wowlan_ioctl_param {
  536. unsigned int subcode;
  537. unsigned int subcode_value;
  538. unsigned int wakeup_reason;
  539. };
  540. u8 rtw_hal_data_init(_adapter *padapter);
  541. void rtw_hal_data_deinit(_adapter *padapter);
  542. void rtw_hal_def_value_init(_adapter *padapter);
  543. void rtw_hal_free_data(_adapter *padapter);
  544. void rtw_hal_dm_init(_adapter *padapter);
  545. void rtw_hal_dm_deinit(_adapter *padapter);
  546. void rtw_hal_sw_led_init(_adapter *padapter);
  547. void rtw_hal_sw_led_deinit(_adapter *padapter);
  548. u32 rtw_hal_power_on(_adapter *padapter);
  549. void rtw_hal_power_off(_adapter *padapter);
  550. uint rtw_hal_init(_adapter *padapter);
  551. uint rtw_hal_deinit(_adapter *padapter);
  552. void rtw_hal_stop(_adapter *padapter);
  553. void rtw_hal_set_hwreg(PADAPTER padapter, u8 variable, u8 *val);
  554. void rtw_hal_get_hwreg(PADAPTER padapter, u8 variable, u8 *val);
  555. void rtw_hal_chip_configure(_adapter *padapter);
  556. u8 rtw_hal_read_chip_info(_adapter *padapter);
  557. void rtw_hal_read_chip_version(_adapter *padapter);
  558. u8 rtw_hal_set_def_var(_adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue);
  559. u8 rtw_hal_get_def_var(_adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue);
  560. void rtw_hal_set_odm_var(_adapter *padapter, HAL_ODM_VARIABLE eVariable, PVOID pValue1, BOOLEAN bSet);
  561. void rtw_hal_get_odm_var(_adapter *padapter, HAL_ODM_VARIABLE eVariable, PVOID pValue1, PVOID pValue2);
  562. void rtw_hal_enable_interrupt(_adapter *padapter);
  563. void rtw_hal_disable_interrupt(_adapter *padapter);
  564. u8 rtw_hal_check_ips_status(_adapter *padapter);
  565. #if defined(CONFIG_USB_HCI) || defined(CONFIG_PCI_HCI)
  566. u32 rtw_hal_inirp_init(_adapter *padapter);
  567. u32 rtw_hal_inirp_deinit(_adapter *padapter);
  568. #endif
  569. #if defined(CONFIG_PCI_HCI)
  570. void rtw_hal_irp_reset(_adapter *padapter);
  571. void rtw_hal_pci_dbi_write(_adapter *padapter, u16 addr, u8 data);
  572. u8 rtw_hal_pci_dbi_read(_adapter *padapter, u16 addr);
  573. void rtw_hal_pci_mdio_write(_adapter *padapter, u8 addr, u16 data);
  574. u16 rtw_hal_pci_mdio_read(_adapter *padapter, u8 addr);
  575. u8 rtw_hal_pci_l1off_nic_support(_adapter *padapter);
  576. u8 rtw_hal_pci_l1off_capability(_adapter *padapter);
  577. #endif
  578. u8 rtw_hal_intf_ps_func(_adapter *padapter, HAL_INTF_PS_FUNC efunc_id, u8 *val);
  579. s32 rtw_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
  580. s32 rtw_hal_xmit(_adapter *padapter, struct xmit_frame *pxmitframe);
  581. s32 rtw_hal_mgnt_xmit(_adapter *padapter, struct xmit_frame *pmgntframe);
  582. s32 rtw_hal_init_xmit_priv(_adapter *padapter);
  583. void rtw_hal_free_xmit_priv(_adapter *padapter);
  584. s32 rtw_hal_init_recv_priv(_adapter *padapter);
  585. void rtw_hal_free_recv_priv(_adapter *padapter);
  586. void rtw_hal_update_ra_mask(struct sta_info *psta, u8 rssi_level, u8 is_update_bw);
  587. void rtw_update_ramask(_adapter *padapter, struct sta_info *psta, u32 mac_id, u8 rssi_level, u8 is_update_bw);
  588. void rtw_hal_start_thread(_adapter *padapter);
  589. void rtw_hal_stop_thread(_adapter *padapter);
  590. void rtw_hal_bcn_related_reg_setting(_adapter *padapter);
  591. u32 rtw_hal_read_bbreg(_adapter *padapter, u32 RegAddr, u32 BitMask);
  592. void rtw_hal_write_bbreg(_adapter *padapter, u32 RegAddr, u32 BitMask, u32 Data);
  593. u32 rtw_hal_read_rfreg(_adapter *padapter, u32 eRFPath, u32 RegAddr, u32 BitMask);
  594. void rtw_hal_write_rfreg(_adapter *padapter, u32 eRFPath, u32 RegAddr, u32 BitMask, u32 Data);
  595. #define phy_query_bb_reg(Adapter, RegAddr, BitMask) rtw_hal_read_bbreg((Adapter), (RegAddr), (BitMask))
  596. #define phy_set_bb_reg(Adapter, RegAddr, BitMask, Data) rtw_hal_write_bbreg((Adapter), (RegAddr), (BitMask), (Data))
  597. #define phy_query_rf_reg(Adapter, eRFPath, RegAddr, BitMask) rtw_hal_read_rfreg((Adapter), (eRFPath), (RegAddr), (BitMask))
  598. #define phy_set_rf_reg(Adapter, eRFPath, RegAddr, BitMask, Data) rtw_hal_write_rfreg((Adapter), (eRFPath), (RegAddr), (BitMask), (Data))
  599. #define phy_set_mac_reg phy_set_bb_reg
  600. #define phy_query_mac_reg phy_query_bb_reg
  601. #if defined(CONFIG_PCI_HCI)
  602. s32 rtw_hal_interrupt_handler(_adapter *padapter);
  603. #endif
  604. #if defined(CONFIG_USB_HCI) && defined(CONFIG_SUPPORT_USB_INT)
  605. void rtw_hal_interrupt_handler(_adapter *padapter, u16 pkt_len, u8 *pbuf);
  606. #endif
  607. void rtw_hal_set_chnl_bw(_adapter *padapter, u8 channel, CHANNEL_WIDTH Bandwidth, u8 Offset40, u8 Offset80);
  608. void rtw_hal_dm_watchdog(_adapter *padapter);
  609. void rtw_hal_dm_watchdog_in_lps(_adapter *padapter);
  610. void rtw_hal_set_tx_power_level(_adapter *padapter, u8 channel);
  611. void rtw_hal_get_tx_power_level(_adapter *padapter, s32 *powerlevel);
  612. #ifdef CONFIG_HOSTAPD_MLME
  613. s32 rtw_hal_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt);
  614. #endif
  615. #ifdef DBG_CONFIG_ERROR_DETECT
  616. void rtw_hal_sreset_init(_adapter *padapter);
  617. void rtw_hal_sreset_reset(_adapter *padapter);
  618. void rtw_hal_sreset_reset_value(_adapter *padapter);
  619. void rtw_hal_sreset_xmit_status_check(_adapter *padapter);
  620. void rtw_hal_sreset_linked_status_check(_adapter *padapter);
  621. u8 rtw_hal_sreset_get_wifi_status(_adapter *padapter);
  622. bool rtw_hal_sreset_inprogress(_adapter *padapter);
  623. #endif
  624. #ifdef CONFIG_IOL
  625. int rtw_hal_iol_cmd(ADAPTER *adapter, struct xmit_frame *xmit_frame, u32 max_wating_ms, u32 bndy_cnt);
  626. #endif
  627. #ifdef CONFIG_XMIT_THREAD_MODE
  628. s32 rtw_hal_xmit_thread_handler(_adapter *padapter);
  629. #endif
  630. #ifdef CONFIG_RECV_THREAD_MODE
  631. s32 rtw_hal_recv_hdl(_adapter *adapter);
  632. #endif
  633. void rtw_hal_notch_filter(_adapter *adapter, bool enable);
  634. #ifdef CONFIG_FW_C2H_REG
  635. bool rtw_hal_c2h_reg_hdr_parse(_adapter *adapter, u8 *buf, u8 *id, u8 *seq, u8 *plen, u8 **payload);
  636. bool rtw_hal_c2h_valid(_adapter *adapter, u8 *buf);
  637. s32 rtw_hal_c2h_evt_read(_adapter *adapter, u8 *buf);
  638. #endif
  639. #ifdef CONFIG_FW_C2H_PKT
  640. bool rtw_hal_c2h_pkt_hdr_parse(_adapter *adapter, u8 *buf, u16 len, u8 *id, u8 *seq, u8 *plen, u8 **payload);
  641. #endif
  642. s32 c2h_handler(_adapter *adapter, u8 id, u8 seq, u8 plen, u8 *payload);
  643. #ifndef RTW_HALMAC
  644. s32 rtw_hal_c2h_handler(_adapter *adapter, u8 id, u8 seq, u8 plen, u8 *payload);
  645. s32 rtw_hal_c2h_id_handle_directly(_adapter *adapter, u8 id, u8 seq, u8 plen, u8 *payload);
  646. #endif
  647. s32 rtw_hal_is_disable_sw_channel_plan(PADAPTER padapter);
  648. s32 rtw_hal_macid_sleep(PADAPTER padapter, u8 macid);
  649. s32 rtw_hal_macid_wakeup(PADAPTER padapter, u8 macid);
  650. s32 rtw_hal_fill_h2c_cmd(PADAPTER padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer);
  651. void rtw_hal_fill_fake_txdesc(_adapter *padapter, u8 *pDesc, u32 BufferLen,
  652. u8 IsPsPoll, u8 IsBTQosNull, u8 bDataFrame);
  653. u8 rtw_hal_get_txbuff_rsvd_page_num(_adapter *adapter, bool wowlan);
  654. #ifdef CONFIG_GPIO_API
  655. void rtw_hal_update_hisr_hsisr_ind(_adapter *padapter, u32 flag);
  656. int rtw_hal_gpio_func_check(_adapter *padapter, u8 gpio_num);
  657. void rtw_hal_gpio_multi_func_reset(_adapter *padapter, u8 gpio_num);
  658. #endif
  659. void rtw_hal_fw_correct_bcn(_adapter *padapter);
  660. s32 rtw_hal_fw_dl(_adapter *padapter, u8 wowlan);
  661. #if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN)
  662. void rtw_hal_clear_interrupt(_adapter *padapter);
  663. #endif
  664. void rtw_hal_set_tx_power_index(PADAPTER, u32 powerindex, u8 rfpath, u8 rate);
  665. u8 rtw_hal_get_tx_power_index(PADAPTER, u8 rfpath, u8 rate, u8 bandwidth, u8 channel,struct txpwr_idx_comp *tic);
  666. u8 rtw_hal_ops_check(_adapter *padapter);
  667. #ifdef RTW_HALMAC
  668. u8 rtw_hal_init_mac_register(PADAPTER);
  669. u8 rtw_hal_init_phy(PADAPTER);
  670. s32 rtw_hal_fw_mem_dl(_adapter *padapter, enum fw_mem mem);
  671. #endif /* RTW_HALMAC */
  672. #endif /* __HAL_INTF_H__ */