hal_intf.h 30 KB

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