]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/staging/rtl8723au/include/hal_intf.h
staging: rtl8723au: Make direct calls for HW_VAR_SET_RPWM
[karo-tx-linux.git] / drivers / staging / rtl8723au / include / hal_intf.h
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  ******************************************************************************/
15 #ifndef __HAL_INTF_H__
16 #define __HAL_INTF_H__
17
18 #include <osdep_service.h>
19 #include <drv_types.h>
20
21 enum RTL871X_HCI_TYPE {
22         RTW_PCIE        = BIT0,
23         RTW_USB         = BIT1,
24         RTW_SDIO        = BIT2,
25         RTW_GSPI        = BIT3,
26 };
27
28 enum _CHIP_TYPE {
29         NULL_CHIP_TYPE,
30         RTL8712_8188S_8191S_8192S,
31         RTL8188C_8192C,
32         RTL8192D,
33         RTL8723A,
34         RTL8188E,
35         MAX_CHIP_TYPE
36 };
37
38 enum HW_VARIABLES {
39         HW_VAR_INIT_RTS_RATE,
40         HW_VAR_TXPAUSE,
41         HW_VAR_RF_TYPE,
42         HW_VAR_DM_FLAG,
43         HW_VAR_DM_FUNC_OP,
44         HW_VAR_DM_FUNC_SET,
45         HW_VAR_DM_FUNC_CLR,
46         HW_VAR_CAM_READ,
47         HW_VAR_FWLPS_RF_ON,
48         HW_VAR_TDLS_WRCR,
49         HW_VAR_TDLS_INIT_CH_SEN,
50         HW_VAR_TDLS_RS_RCR,
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,
59         HW_VAR_EFUSE_BYTES,
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. */
64         HW_VAR_NAV_UPPER,
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,
69         HW_VAR_READ_LLT_TAB,
70 };
71
72 enum hal_def_variable {
73         HAL_DEF_UNDERCORATEDSMOOTHEDPWDB,
74         HAL_DEF_IS_SUPPORT_ANT_DIV,
75         HAL_DEF_CURRENT_ANTENNA,
76         HAL_DEF_DRVINFO_SZ,
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,
82         HAL_DEF_RA_SGI,
83         HAL_DEF_PT_PWR_STATUS,
84         HW_VAR_MAX_RX_AMPDU_FACTOR,
85         HW_DEF_RA_INFO_DUMP,
86         HAL_DEF_DBG_DUMP_TXPKT,
87         HW_DEF_FA_CNT_DUMP,
88         HW_DEF_ODM_DBG_FLAG,
89 };
90
91 enum hal_odm_variable {
92         HAL_ODM_STA_INFO,
93         HAL_ODM_P2P_STATE,
94         HAL_ODM_WIFI_DISPLAY_STATE,
95 };
96
97 enum hal_intf_ps_func {
98         HAL_USB_SELECT_SUSPEND,
99         HAL_MAX_ID,
100 };
101
102 struct hal_ops {
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);
106
107         void (*free_hal_data)(struct rtw_adapter *padapter);
108
109         u32 (*inirp_init)(struct rtw_adapter *padapter);
110         u32 (*inirp_deinit)(struct rtw_adapter *padapter);
111
112         s32 (*init_xmit_priv)(struct rtw_adapter *padapter);
113         void (*free_xmit_priv)(struct rtw_adapter *padapter);
114
115         s32 (*init_recv_priv)(struct rtw_adapter *padapter);
116         void (*free_recv_priv)(struct rtw_adapter *padapter);
117
118         void (*InitSwLeds)(struct rtw_adapter *padapter);
119         void (*DeInitSwLeds)(struct rtw_adapter *padapter);
120
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);
124
125         void (*init_default_value)(struct rtw_adapter *padapter);
126
127         void (*intf_chip_configure)(struct rtw_adapter *padapter);
128
129         void (*read_adapter_info)(struct rtw_adapter *padapter);
130
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);
137
138         void (*hal_dm_watchdog)(struct rtw_adapter *padapter);
139
140         void (*SetHwRegHandler)(struct rtw_adapter *padapter,
141                                 u8 variable, u8 *val);
142         void (*GetHwRegHandler)(struct rtw_adapter *padapter,
143                                 u8 variable, u8 *val);
144
145         u8 (*GetHalDefVarHandler)(struct rtw_adapter *padapter,
146                                   enum hal_def_variable eVariable,
147                                   void *pValue);
148         u8 (*SetHalDefVarHandler)(struct rtw_adapter *padapter,
149                                   enum hal_def_variable eVariable,
150                                   void *pValue);
151
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);
158
159         void (*UpdateRAMaskHandler)(struct rtw_adapter *padapter,
160                                     u32 mac_id, u8 rssi_level);
161         void (*SetBeaconRelatedRegistersHandler)(struct rtw_adapter *padapter);
162
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);
167
168         u8 (*interface_ps_func)(struct rtw_adapter *padapter,
169                                 enum hal_intf_ps_func efunc_id, u8 *val);
170
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);
177
178         u32 (*read_bbreg)(struct rtw_adapter *padapter, u32 RegAddr,
179                           u32 BitMask);
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);
186
187         void (*EfusePowerSwitch)(struct rtw_adapter *padapter, u8 bWrite,
188                                  u8 PwrState);
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,
200                                            u8 *data);
201         bool (*Efuse_PgPacketWrite23a_BT)(struct rtw_adapter *padapter,
202                                           u8 offset, u8 word_en, u8 *data);
203
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);
211
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;
216 };
217
218 enum rt_eeprom_type {
219         EEPROM_93C46,
220         EEPROM_93C56,
221         EEPROM_BOOT_EFUSE,
222 };
223
224
225
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
231
232 enum hardware_type {
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,
252         HARDWARE_TYPE_MAX,
253 };
254
255 #define GET_EEPROM_EFUSE_PRIV(adapter) (&adapter->eeprompriv)
256 #define is_boot_from_eeprom(adapter) (adapter->eeprompriv.EepromOrEfuse)
257
258 extern int rtw_ht_enable23A;
259 extern int rtw_cbw40_enable23A;
260 extern int rtw_ampdu_enable23A;/* for enable tx_ampdu */
261
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);
265
266 void    rtw_hal_free_data23a(struct rtw_adapter *padapter);
267
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);
272
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);
279
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);
283
284 u8 rtw_hal_set_def_var23a(struct rtw_adapter *padapter,
285                           enum hal_def_variable eVariable,
286                           void *pValue);
287 u8 rtw_hal_get_def_var23a(struct rtw_adapter *padapter,
288                           enum hal_def_variable eVariable,
289                           void *pValue);
290
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);
297
298 void rtw_hal_enable_interrupt23a(struct rtw_adapter *padapter);
299 void rtw_hal_disable_interrupt23a(struct rtw_adapter *padapter);
300
301 u32 rtw_hal_inirp_init23a(struct rtw_adapter *padapter);
302 u32 rtw_hal_inirp_deinit23a(struct rtw_adapter *padapter);
303
304 u8 rtw_hal_intf_ps_func23a(struct rtw_adapter *padapter,
305                            enum hal_intf_ps_func efunc_id, u8 *val);
306
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);
313
314 s32     rtw_hal_init23a_xmit_priv(struct rtw_adapter *padapter);
315 void    rtw_hal_free_xmit_priv23a(struct rtw_adapter *padapter);
316
317 s32     rtw_hal_init23a_recv_priv(struct rtw_adapter *padapter);
318 void    rtw_hal_free_recv_priv23a(struct rtw_adapter *padapter);
319
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);
325
326 void rtw_hal_bcn_related_reg_setting23a(struct rtw_adapter *padapter);
327
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);
332
333 s32     rtw_hal_interrupt_handler23a(struct rtw_adapter *padapter);
334
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);
339
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);
347
348 void rtw_hal_notch_filter23a(struct rtw_adapter *adapter, bool enable);
349 void rtw_hal_reset_security_engine23a(struct rtw_adapter *adapter);
350
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);
359
360 #endif /* __HAL_INTF_H__ */