114063adc17eed94e4226bdf84eadf25df6553e4
[cascardo/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        = BIT(0),
23         RTW_USB         = BIT(1),
24         RTW_SDIO        = BIT(2),
25         RTW_GSPI        = BIT(3),
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 hal_def_variable {
39         HAL_DEF_UNDERCORATEDSMOOTHEDPWDB,
40         HAL_DEF_IS_SUPPORT_ANT_DIV,
41         HAL_DEF_CURRENT_ANTENNA,
42         HAL_DEF_DRVINFO_SZ,
43         HAL_DEF_MAX_RECVBUF_SZ,
44         HAL_DEF_RX_PACKET_OFFSET,
45         HAL_DEF_DBG_DUMP_RXPKT,/* for dbg */
46         HAL_DEF_DBG_DM_FUNC,/* for dbg */
47         HAL_DEF_RA_DECISION_RATE,
48         HAL_DEF_RA_SGI,
49         HAL_DEF_PT_PWR_STATUS,
50         HW_VAR_MAX_RX_AMPDU_FACTOR,
51         HW_DEF_RA_INFO_DUMP,
52         HAL_DEF_DBG_DUMP_TXPKT,
53         HW_DEF_FA_CNT_DUMP,
54         HW_DEF_ODM_DBG_FLAG,
55 };
56
57 enum hal_odm_variable {
58         HAL_ODM_STA_INFO,
59         HAL_ODM_P2P_STATE,
60         HAL_ODM_WIFI_DISPLAY_STATE,
61 };
62
63 struct hal_ops {
64         u32 (*hal_power_on)(struct rtw_adapter *padapter);
65
66         void (*InitSwLeds)(struct rtw_adapter *padapter);
67         void (*DeInitSwLeds)(struct rtw_adapter *padapter);
68
69         void (*enable_interrupt)(struct rtw_adapter *padapter);
70         void (*disable_interrupt)(struct rtw_adapter *padapter);
71         s32 (*interrupt_handler)(struct rtw_adapter *padapter);
72
73         u8 (*GetHalDefVarHandler)(struct rtw_adapter *padapter,
74                                   enum hal_def_variable eVariable,
75                                   void *pValue);
76         u8 (*SetHalDefVarHandler)(struct rtw_adapter *padapter,
77                                   enum hal_def_variable eVariable,
78                                   void *pValue);
79
80         void (*UpdateRAMaskHandler)(struct rtw_adapter *padapter,
81                                     u32 mac_id, u8 rssi_level);
82
83         s32 (*hal_xmit)(struct rtw_adapter *padapter,
84                         struct xmit_frame *pxmitframe);
85         s32 (*mgnt_xmit)(struct rtw_adapter *padapter,
86                          struct xmit_frame *pmgntframe);
87         s32 (*hal_xmitframe_enqueue)(struct rtw_adapter *padapter,
88                                      struct xmit_frame *pxmitframe);
89 };
90
91 enum rt_eeprom_type {
92         EEPROM_93C46,
93         EEPROM_93C56,
94         EEPROM_BOOT_EFUSE,
95 };
96
97
98
99 #define RF_CHANGE_BY_INIT       0
100 #define RF_CHANGE_BY_IPS        BIT(28)
101 #define RF_CHANGE_BY_PS         BIT(29)
102 #define RF_CHANGE_BY_HW         BIT(30)
103 #define RF_CHANGE_BY_SW         BIT(31)
104
105 enum hardware_type {
106         HARDWARE_TYPE_RTL8180,
107         HARDWARE_TYPE_RTL8185,
108         HARDWARE_TYPE_RTL8187,
109         HARDWARE_TYPE_RTL8188,
110         HARDWARE_TYPE_RTL8190P,
111         HARDWARE_TYPE_RTL8192E,
112         HARDWARE_TYPE_RTL819xU,
113         HARDWARE_TYPE_RTL8192SE,
114         HARDWARE_TYPE_RTL8192SU,
115         HARDWARE_TYPE_RTL8192CE,
116         HARDWARE_TYPE_RTL8192CU,
117         HARDWARE_TYPE_RTL8192DE,
118         HARDWARE_TYPE_RTL8192DU,
119         HARDWARE_TYPE_RTL8723AE,
120         HARDWARE_TYPE_RTL8723AU,
121         HARDWARE_TYPE_RTL8723AS,
122         HARDWARE_TYPE_RTL8188EE,
123         HARDWARE_TYPE_RTL8188EU,
124         HARDWARE_TYPE_RTL8188ES,
125         HARDWARE_TYPE_MAX,
126 };
127
128 #define GET_EEPROM_EFUSE_PRIV(adapter) (&adapter->eeprompriv)
129
130 void rtw_hal_def_value_init23a(struct rtw_adapter *padapter);
131 int pm_netdev_open23a(struct net_device *pnetdev, u8 bnormal);
132 int rtw_resume_process23a(struct rtw_adapter *padapter);
133
134 void rtw_hal_sw_led_init23a(struct rtw_adapter *padapter);
135 void rtw_hal_sw_led_deinit23a(struct rtw_adapter *padapter);
136
137 u32 rtw_hal_power_on23a(struct rtw_adapter *padapter);
138 int rtw_hal_init23a(struct rtw_adapter *padapter);
139 int rtw_hal_deinit23a(struct rtw_adapter *padapter);
140 void rtw_hal_stop(struct rtw_adapter *padapter);
141
142 u8 rtw_hal_set_def_var23a(struct rtw_adapter *padapter,
143                           enum hal_def_variable eVariable,
144                           void *pValue);
145 u8 rtw_hal_get_def_var23a(struct rtw_adapter *padapter,
146                           enum hal_def_variable eVariable,
147                           void *pValue);
148
149 void rtw_hal_enable_interrupt23a(struct rtw_adapter *padapter);
150 void rtw_hal_disable_interrupt23a(struct rtw_adapter *padapter);
151
152 s32 rtw_hal_xmit23aframe_enqueue(struct rtw_adapter *padapter,
153                                  struct xmit_frame *pxmitframe);
154 s32 rtw_hal_xmit23a(struct rtw_adapter *padapter,
155                     struct xmit_frame *pxmitframe);
156 s32 rtw_hal_mgnt_xmit23a(struct rtw_adapter *padapter,
157                          struct xmit_frame *pmgntframe);
158
159 void rtw_hal_update_ra_mask23a(struct sta_info *psta, u8 rssi_level);
160 void    rtw_hal_clone_data(struct rtw_adapter *dst_padapter, struct rtw_adapter *src_padapter);
161
162 s32     rtw_hal_interrupt_handler23a(struct rtw_adapter *padapter);
163
164 void hw_var_set_correct_tsf(struct rtw_adapter *padapter);
165 void hw_var_set_mlme_disconnect(struct rtw_adapter *padapter);
166 void hw_var_set_opmode(struct rtw_adapter *padapter, u8 mode);
167 void hw_var_set_macaddr(struct rtw_adapter *padapter, u8 *val);
168 void hw_var_set_bssid(struct rtw_adapter *padapter, u8 *val);
169 void hw_var_set_mlme_join(struct rtw_adapter *padapter, u8 type);
170
171 #endif /* __HAL_INTF_H__ */