1 /******************************************************************************
3 * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
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.
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
14 ******************************************************************************/
15 #ifndef __HAL_INTF_H__
16 #define __HAL_INTF_H__
18 #include <osdep_service.h>
19 #include <drv_types.h>
21 enum RTL871X_HCI_TYPE {
30 RTL8712_8188S_8191S_8192S,
49 HW_VAR_TDLS_INIT_CH_SEN,
51 HW_VAR_TDLS_DONE_CH_SEN,
52 HW_VAR_TRIGGER_GPIO_0,
53 HW_VAR_BT_SET_COEXIST,
54 HW_VAR_BT_ISSUE_DELBA,
55 HW_VAR_CURRENT_ANTENNA,
56 HW_VAR_ANTENNA_DIVERSITY_LINK,
57 HW_VAR_ANTENNA_DIVERSITY_SELECT,
58 HW_VAR_SWITCH_EPHY_WoWLAN,
60 HW_VAR_EFUSE_BT_BYTES,
61 HW_VAR_APFM_ON_MAC, /* Auto FSM to Turn On, include clock, isolation, power control for MAC only */
62 /* 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. */
63 /* Unit in microsecond. 0 means disable this function. */
65 HW_VAR_RPT_TIMER_SETTING,
66 HW_VAR_TX_RPT_MAX_MACID,
67 HW_VAR_H2C_MEDIA_STATUS_RPT,
68 HW_VAR_CHK_HI_QUEUE_EMPTY,
72 enum hal_def_variable {
73 HAL_DEF_UNDERCORATEDSMOOTHEDPWDB,
74 HAL_DEF_IS_SUPPORT_ANT_DIV,
75 HAL_DEF_CURRENT_ANTENNA,
77 HAL_DEF_MAX_RECVBUF_SZ,
78 HAL_DEF_RX_PACKET_OFFSET,
79 HAL_DEF_DBG_DUMP_RXPKT,/* for dbg */
80 HAL_DEF_DBG_DM_FUNC,/* for dbg */
81 HAL_DEF_RA_DECISION_RATE,
83 HAL_DEF_PT_PWR_STATUS,
84 HW_VAR_MAX_RX_AMPDU_FACTOR,
86 HAL_DEF_DBG_DUMP_TXPKT,
91 enum hal_odm_variable {
94 HAL_ODM_WIFI_DISPLAY_STATE,
97 enum hal_intf_ps_func {
98 HAL_USB_SELECT_SUSPEND,
103 u32 (*hal_power_on)(struct rtw_adapter *padapter);
104 u32 (*hal_init)(struct rtw_adapter *padapter);
105 u32 (*hal_deinit)(struct rtw_adapter *padapter);
107 void (*free_hal_data)(struct rtw_adapter *padapter);
109 u32 (*inirp_init)(struct rtw_adapter *padapter);
110 u32 (*inirp_deinit)(struct rtw_adapter *padapter);
112 s32 (*init_xmit_priv)(struct rtw_adapter *padapter);
113 void (*free_xmit_priv)(struct rtw_adapter *padapter);
115 s32 (*init_recv_priv)(struct rtw_adapter *padapter);
116 void (*free_recv_priv)(struct rtw_adapter *padapter);
118 void (*InitSwLeds)(struct rtw_adapter *padapter);
119 void (*DeInitSwLeds)(struct rtw_adapter *padapter);
121 void (*dm_init)(struct rtw_adapter *padapter);
122 void (*dm_deinit)(struct rtw_adapter *padapter);
123 void (*read_chip_version)(struct rtw_adapter *padapter);
125 void (*init_default_value)(struct rtw_adapter *padapter);
127 void (*intf_chip_configure)(struct rtw_adapter *padapter);
129 void (*read_adapter_info)(struct rtw_adapter *padapter);
131 void (*enable_interrupt)(struct rtw_adapter *padapter);
132 void (*disable_interrupt)(struct rtw_adapter *padapter);
133 s32 (*interrupt_handler)(struct rtw_adapter *padapter);
134 void (*set_bwmode_handler)(struct rtw_adapter *padapter,
135 enum ht_channel_width Bandwidth, u8 Offset);
136 void (*set_channel_handler)(struct rtw_adapter *padapter, u8 channel);
138 void (*hal_dm_watchdog)(struct rtw_adapter *padapter);
140 void (*SetHwRegHandler)(struct rtw_adapter *padapter,
141 u8 variable, u8 *val);
142 void (*GetHwRegHandler)(struct rtw_adapter *padapter,
143 u8 variable, u8 *val);
145 u8 (*GetHalDefVarHandler)(struct rtw_adapter *padapter,
146 enum hal_def_variable eVariable,
148 u8 (*SetHalDefVarHandler)(struct rtw_adapter *padapter,
149 enum hal_def_variable eVariable,
152 void (*GetHalODMVarHandler)(struct rtw_adapter *padapter,
153 enum hal_odm_variable eVariable,
154 void *pValue1, bool bSet);
155 void (*SetHalODMVarHandler)(struct rtw_adapter *padapter,
156 enum hal_odm_variable eVariable,
157 void *pValue1, bool bSet);
159 void (*UpdateRAMaskHandler)(struct rtw_adapter *padapter,
160 u32 mac_id, u8 rssi_level);
161 void (*SetBeaconRelatedRegistersHandler)(struct rtw_adapter *padapter);
163 void (*Add_RateATid)(struct rtw_adapter *padapter, u32 bitmap,
164 u8 arg, u8 rssi_level);
165 void (*run_thread)(struct rtw_adapter *padapter);
166 void (*cancel_thread)(struct rtw_adapter *padapter);
168 u8 (*interface_ps_func)(struct rtw_adapter *padapter,
169 enum hal_intf_ps_func efunc_id, u8 *val);
171 s32 (*hal_xmit)(struct rtw_adapter *padapter,
172 struct xmit_frame *pxmitframe);
173 s32 (*mgnt_xmit)(struct rtw_adapter *padapter,
174 struct xmit_frame *pmgntframe);
175 s32 (*hal_xmitframe_enqueue)(struct rtw_adapter *padapter,
176 struct xmit_frame *pxmitframe);
178 u32 (*read_bbreg)(struct rtw_adapter *padapter, u32 RegAddr,
180 void (*write_bbreg)(struct rtw_adapter *padapter, u32 RegAddr,
181 u32 BitMask, u32 Data);
182 u32 (*read_rfreg)(struct rtw_adapter *padapter, u32 eRFPath,
183 u32 RegAddr, u32 BitMask);
184 void (*write_rfreg)(struct rtw_adapter *padapter, u32 eRFPath,
185 u32 RegAddr, u32 BitMask, u32 Data);
187 void (*EfusePowerSwitch)(struct rtw_adapter *padapter, u8 bWrite,
189 void (*ReadEFuse)(struct rtw_adapter *padapter, u8 efuseType,
190 u16 _offset, u16 _size_byte, u8 *pbuf);
191 void (*EFUSEGetEfuseDefinition)(struct rtw_adapter *padapter,
192 u8 efuseType, u8 type, void *pOut);
193 u16 (*EfuseGetCurrentSize)(struct rtw_adapter *padapter, u8 efuseType);
194 int (*Efuse_PgPacketRead23a)(struct rtw_adapter *padapter,
195 u8 offset, u8 *data);
196 int (*Efuse_PgPacketWrite23a)(struct rtw_adapter *padapter,
197 u8 offset, u8 word_en, u8 *data);
198 u8 (*Efuse_WordEnableDataWrite23a)(struct rtw_adapter *padapter,
199 u16 efuse_addr, u8 word_en,
201 bool (*Efuse_PgPacketWrite23a_BT)(struct rtw_adapter *padapter,
202 u8 offset, u8 word_en, u8 *data);
204 void (*sreset_init_value23a)(struct rtw_adapter *padapter);
205 void (*sreset_reset_value23a)(struct rtw_adapter *padapter);
206 void (*silentreset)(struct rtw_adapter *padapter);
207 void (*sreset_xmit_status_check)(struct rtw_adapter *padapter);
208 void (*sreset_linked_status_check) (struct rtw_adapter *padapter);
209 u8 (*sreset_get_wifi_status23a)(struct rtw_adapter *padapter);
210 bool (*sreset_inprogress)(struct rtw_adapter *padapter);
212 void (*hal_notch_filter)(struct rtw_adapter *adapter, bool enable);
213 void (*hal_reset_security_engine)(struct rtw_adapter *adapter);
214 s32 (*c2h_handler)(struct rtw_adapter *padapter, struct c2h_evt_hdr *c2h_evt);
215 c2h_id_filter c2h_id_filter_ccx;
218 enum rt_eeprom_type {
226 #define RF_CHANGE_BY_INIT 0
227 #define RF_CHANGE_BY_IPS BIT28
228 #define RF_CHANGE_BY_PS BIT29
229 #define RF_CHANGE_BY_HW BIT30
230 #define RF_CHANGE_BY_SW BIT31
233 HARDWARE_TYPE_RTL8180,
234 HARDWARE_TYPE_RTL8185,
235 HARDWARE_TYPE_RTL8187,
236 HARDWARE_TYPE_RTL8188,
237 HARDWARE_TYPE_RTL8190P,
238 HARDWARE_TYPE_RTL8192E,
239 HARDWARE_TYPE_RTL819xU,
240 HARDWARE_TYPE_RTL8192SE,
241 HARDWARE_TYPE_RTL8192SU,
242 HARDWARE_TYPE_RTL8192CE,
243 HARDWARE_TYPE_RTL8192CU,
244 HARDWARE_TYPE_RTL8192DE,
245 HARDWARE_TYPE_RTL8192DU,
246 HARDWARE_TYPE_RTL8723AE,
247 HARDWARE_TYPE_RTL8723AU,
248 HARDWARE_TYPE_RTL8723AS,
249 HARDWARE_TYPE_RTL8188EE,
250 HARDWARE_TYPE_RTL8188EU,
251 HARDWARE_TYPE_RTL8188ES,
255 #define GET_EEPROM_EFUSE_PRIV(adapter) (&adapter->eeprompriv)
256 #define is_boot_from_eeprom(adapter) (adapter->eeprompriv.EepromOrEfuse)
258 extern int rtw_ht_enable23A;
259 extern int rtw_cbw40_enable23A;
260 extern int rtw_ampdu_enable23A;/* for enable tx_ampdu */
262 void rtw_hal_def_value_init23a(struct rtw_adapter *padapter);
263 int pm_netdev_open23a(struct net_device *pnetdev, u8 bnormal);
264 int rtw_resume_process23a(struct rtw_adapter *padapter);
266 void rtw_hal_free_data23a(struct rtw_adapter *padapter);
268 void rtw_hal_dm_init23a(struct rtw_adapter *padapter);
269 void rtw_hal_dm_deinit23a(struct rtw_adapter *padapter);
270 void rtw_hal_sw_led_init23a(struct rtw_adapter *padapter);
271 void rtw_hal_sw_led_deinit23a(struct rtw_adapter *padapter);
273 u32 rtw_hal_power_on23a(struct rtw_adapter *padapter);
274 uint rtw_hal_init23a(struct rtw_adapter *padapter);
275 uint rtw_hal_deinit23a(struct rtw_adapter *padapter);
276 void rtw_hal_stop(struct rtw_adapter *padapter);
277 void rtw_hal_set_hwreg23a(struct rtw_adapter *padapter, u8 variable, u8 *val);
278 void rtw23a_hal_get_hwreg(struct rtw_adapter *padapter, u8 variable, u8 *val);
280 void rtw_hal_chip_configure23a(struct rtw_adapter *padapter);
281 void rtw_hal_read_chip_info23a(struct rtw_adapter *padapter);
282 void rtw_hal_read_chip_version23a(struct rtw_adapter *padapter);
284 u8 rtw_hal_set_def_var23a(struct rtw_adapter *padapter,
285 enum hal_def_variable eVariable,
287 u8 rtw_hal_get_def_var23a(struct rtw_adapter *padapter,
288 enum hal_def_variable eVariable,
291 void rtw_hal_set_odm_var23a(struct rtw_adapter *padapter,
292 enum hal_odm_variable eVariable,
293 void *pValue1, bool bSet);
294 void rtw_hal_get_odm_var23a(struct rtw_adapter *padapter,
295 enum hal_odm_variable eVariable,
296 void *pValue1, bool bSet);
298 void rtw_hal_enable_interrupt23a(struct rtw_adapter *padapter);
299 void rtw_hal_disable_interrupt23a(struct rtw_adapter *padapter);
301 u32 rtw_hal_inirp_init23a(struct rtw_adapter *padapter);
302 u32 rtw_hal_inirp_deinit23a(struct rtw_adapter *padapter);
304 u8 rtw_hal_intf_ps_func23a(struct rtw_adapter *padapter,
305 enum hal_intf_ps_func efunc_id, u8 *val);
307 s32 rtw_hal_xmit23aframe_enqueue(struct rtw_adapter *padapter,
308 struct xmit_frame *pxmitframe);
309 s32 rtw_hal_xmit23a(struct rtw_adapter *padapter,
310 struct xmit_frame *pxmitframe);
311 s32 rtw_hal_mgnt_xmit23a(struct rtw_adapter *padapter,
312 struct xmit_frame *pmgntframe);
314 s32 rtw_hal_init23a_xmit_priv(struct rtw_adapter *padapter);
315 void rtw_hal_free_xmit_priv23a(struct rtw_adapter *padapter);
317 s32 rtw_hal_init23a_recv_priv(struct rtw_adapter *padapter);
318 void rtw_hal_free_recv_priv23a(struct rtw_adapter *padapter);
320 void rtw_hal_update_ra_mask23a(struct sta_info *psta, u8 rssi_level);
321 void rtw_hal_add_ra_tid23a(struct rtw_adapter *padapter, u32 bitmap, u8 arg, u8 rssi_level);
322 void rtw_hal_clone_data(struct rtw_adapter *dst_padapter, struct rtw_adapter *src_padapter);
323 void rtw_hal_start_thread23a(struct rtw_adapter *padapter);
324 void rtw_hal_stop_thread23a(struct rtw_adapter *padapter);
326 void rtw_hal_bcn_related_reg_setting23a(struct rtw_adapter *padapter);
328 u32 rtw_hal_read_bbreg23a(struct rtw_adapter *padapter, u32 RegAddr, u32 BitMask);
329 void rtw_hal_write_bbreg23a(struct rtw_adapter *padapter, u32 RegAddr, u32 BitMask, u32 Data);
330 u32 rtw_hal_read_rfreg23a(struct rtw_adapter *padapter, u32 eRFPath, u32 RegAddr, u32 BitMask);
331 void rtw_hal_write_rfreg23a(struct rtw_adapter *padapter, u32 eRFPath, u32 RegAddr, u32 BitMask, u32 Data);
333 s32 rtw_hal_interrupt_handler23a(struct rtw_adapter *padapter);
335 void rtw_hal_set_bwmode23a(struct rtw_adapter *padapter,
336 enum ht_channel_width Bandwidth, u8 Offset);
337 void rtw_hal_set_chan23a(struct rtw_adapter *padapter, u8 channel);
338 void rtw_hal_dm_watchdog23a(struct rtw_adapter *padapter);
340 void rtw_hal_sreset_init23a(struct rtw_adapter *padapter);
341 void rtw_hal_sreset_reset23a(struct rtw_adapter *padapter);
342 void rtw_hal_sreset_reset23a_value23a(struct rtw_adapter *padapter);
343 void rtw_hal_sreset_xmit_status_check23a(struct rtw_adapter *padapter);
344 void rtw_hal_sreset_linked_status_check23a (struct rtw_adapter *padapter);
345 u8 rtw_hal_sreset_get_wifi_status23a(struct rtw_adapter *padapter);
346 bool rtw_hal_sreset_inprogress(struct rtw_adapter *padapter);
348 void rtw_hal_notch_filter23a(struct rtw_adapter *adapter, bool enable);
349 void rtw_hal_reset_security_engine23a(struct rtw_adapter *adapter);
351 s32 rtw_hal_c2h_handler23a(struct rtw_adapter *adapter, struct c2h_evt_hdr *c2h_evt);
352 c2h_id_filter rtw_hal_c2h_id_filter_ccx23a(struct rtw_adapter *adapter);
353 void hw_var_set_correct_tsf(struct rtw_adapter *padapter);
354 void hw_var_set_mlme_disconnect(struct rtw_adapter *padapter);
355 void hw_var_set_opmode(struct rtw_adapter *padapter, u8 mode);
356 void hw_var_set_macaddr(struct rtw_adapter *padapter, u8 *val);
357 void hw_var_set_bssid(struct rtw_adapter *padapter, u8 *val);
358 void hw_var_set_mlme_join(struct rtw_adapter *padapter, u8 type);
360 #endif /* __HAL_INTF_H__ */