Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[linux-btrfs-devel.git] / drivers / staging / rtl8192e / rtl_dm.h
blobab44a9a6927c7e5755814a6d1260f059d13e3b8a
1 /******************************************************************************
2 * Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved.
4 * This program is distributed in the hope that it will be useful, but WITHOUT
5 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
6 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
7 * more details.
9 * You should have received a copy of the GNU General Public License along with
10 * this program; if not, write to the Free Software Foundation, Inc.,
11 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
13 * The full GNU General Public License is included in this distribution in the
14 * file called LICENSE.
16 * Contact Information:
17 * wlanfae <wlanfae@realtek.com>
18 ******************************************************************************/
19 #ifndef __R8192UDM_H__
20 #define __R8192UDM_H__
23 /*--------------------------Define Parameters-------------------------------*/
24 #define OFDM_Table_Length 19
25 #define CCK_Table_length 12
27 #define DM_DIG_THRESH_HIGH 40
28 #define DM_DIG_THRESH_LOW 35
30 #define DM_FALSEALARM_THRESH_LOW 40
31 #define DM_FALSEALARM_THRESH_HIGH 1000
33 #define DM_DIG_HIGH_PWR_THRESH_HIGH 75
34 #define DM_DIG_HIGH_PWR_THRESH_LOW 70
36 #define BW_AUTO_SWITCH_HIGH_LOW 25
37 #define BW_AUTO_SWITCH_LOW_HIGH 30
39 #define DM_check_fsync_time_interval 500
42 #define DM_DIG_BACKOFF 12
43 #define DM_DIG_MAX 0x36
44 #define DM_DIG_MIN 0x1c
45 #define DM_DIG_MIN_Netcore 0x12
47 #define DM_DIG_BACKOFF_MAX 12
48 #define DM_DIG_BACKOFF_MIN -4
50 #define RxPathSelection_SS_TH_low 30
51 #define RxPathSelection_diff_TH 18
53 #define RateAdaptiveTH_High 50
54 #define RateAdaptiveTH_Low_20M 30
55 #define RateAdaptiveTH_Low_40M 10
56 #define VeryLowRSSI 15
58 #define CTSToSelfTHVal 35
60 #define WAIotTHVal 25
62 #define E_FOR_TX_POWER_TRACK 300
63 #define TX_POWER_NEAR_FIELD_THRESH_HIGH 68
64 #define TX_POWER_NEAR_FIELD_THRESH_LOW 62
65 #define TX_POWER_ATHEROAP_THRESH_HIGH 78
66 #define TX_POWER_ATHEROAP_THRESH_LOW 72
68 #define Current_Tx_Rate_Reg 0x1e0
69 #define Initial_Tx_Rate_Reg 0x1e1
70 #define Tx_Retry_Count_Reg 0x1ac
71 #define RegC38_TH 20
73 #define TX_POWER_NEAR_FIELD_THRESH_LVL2 74
74 #define TX_POWER_NEAR_FIELD_THRESH_LVL1 67
76 #define TxHighPwrLevel_Normal 0
77 #define TxHighPwrLevel_Level1 1
78 #define TxHighPwrLevel_Level2 2
80 #define DM_Type_ByFW 0
81 #define DM_Type_ByDriver 1
83 /*--------------------------Define Parameters-------------------------------*/
86 /*------------------------------Define structure----------------------------*/
87 struct dig_t {
88 u8 dig_enable_flag;
89 u8 dig_algorithm;
90 u8 Dig_TwoPort_Algorithm;
91 u8 Dig_Ext_Port_Stage;
92 u8 dbg_mode;
93 u8 dig_algorithm_switch;
95 long rssi_low_thresh;
96 long rssi_high_thresh;
98 u32 FALowThresh;
99 u32 FAHighThresh;
101 long rssi_high_power_lowthresh;
102 long rssi_high_power_highthresh;
104 u8 dig_state;
105 u8 dig_highpwr_state;
106 u8 CurSTAConnectState;
107 u8 PreSTAConnectState;
108 u8 CurAPConnectState;
109 u8 PreAPConnectState;
111 u8 curpd_thstate;
112 u8 prepd_thstate;
113 u8 curcs_ratio_state;
114 u8 precs_ratio_state;
116 u32 pre_ig_value;
117 u32 cur_ig_value;
119 u8 Backoff_Enable_Flag;
120 u8 backoff_val;
121 char BackoffVal_range_max;
122 char BackoffVal_range_min;
123 u8 rx_gain_range_max;
124 u8 rx_gain_range_min;
125 bool initialgain_lowerbound_state;
127 long rssi_val;
130 enum dm_dig_sta {
131 DM_STA_DIG_OFF = 0,
132 DM_STA_DIG_ON,
133 DM_STA_DIG_MAX
137 enum dm_ratr_sta {
138 DM_RATR_STA_HIGH = 0,
139 DM_RATR_STA_MIDDLE = 1,
140 DM_RATR_STA_LOW = 2,
141 DM_RATR_STA_MAX
144 enum dm_dig_op_sta {
145 DIG_TYPE_THRESH_HIGH = 0,
146 DIG_TYPE_THRESH_LOW = 1,
147 DIG_TYPE_THRESH_HIGHPWR_HIGH = 2,
148 DIG_TYPE_THRESH_HIGHPWR_LOW = 3,
149 DIG_TYPE_DBG_MODE = 4,
150 DIG_TYPE_RSSI = 5,
151 DIG_TYPE_ALGORITHM = 6,
152 DIG_TYPE_BACKOFF = 7,
153 DIG_TYPE_PWDB_FACTOR = 8,
154 DIG_TYPE_RX_GAIN_MIN = 9,
155 DIG_TYPE_RX_GAIN_MAX = 10,
156 DIG_TYPE_ENABLE = 20,
157 DIG_TYPE_DISABLE = 30,
158 DIG_OP_TYPE_MAX
161 enum dm_dig_alg {
162 DIG_ALGO_BY_FALSE_ALARM = 0,
163 DIG_ALGO_BY_RSSI = 1,
164 DIG_ALGO_BEFORE_CONNECT_BY_RSSI_AND_ALARM = 2,
165 DIG_ALGO_BY_TOW_PORT = 3,
166 DIG_ALGO_MAX
169 enum dm_dig_two_port_alg {
170 DIG_TWO_PORT_ALGO_RSSI = 0,
171 DIG_TWO_PORT_ALGO_FALSE_ALARM = 1,
175 enum dm_dig_ext_port_alg {
176 DIG_EXT_PORT_STAGE_0 = 0,
177 DIG_EXT_PORT_STAGE_1 = 1,
178 DIG_EXT_PORT_STAGE_2 = 2,
179 DIG_EXT_PORT_STAGE_3 = 3,
180 DIG_EXT_PORT_STAGE_MAX = 4,
183 enum dm_dig_dbg {
184 DIG_DBG_OFF = 0,
185 DIG_DBG_ON = 1,
186 DIG_DBG_MAX
189 enum dm_dig_connect {
190 DIG_STA_DISCONNECT = 0,
191 DIG_STA_CONNECT = 1,
192 DIG_STA_BEFORE_CONNECT = 2,
193 DIG_AP_DISCONNECT = 3,
194 DIG_AP_CONNECT = 4,
195 DIG_AP_ADD_STATION = 5,
196 DIG_CONNECT_MAX
199 enum dm_dig_pd_th {
200 DIG_PD_AT_LOW_POWER = 0,
201 DIG_PD_AT_NORMAL_POWER = 1,
202 DIG_PD_AT_HIGH_POWER = 2,
203 DIG_PD_MAX
206 enum dm_dig_cs_ratio {
207 DIG_CS_RATIO_LOWER = 0,
208 DIG_CS_RATIO_HIGHER = 1,
209 DIG_CS_MAX
212 struct drx_path_sel {
213 u8 Enable;
214 u8 DbgMode;
215 u8 cck_method;
216 u8 cck_Rx_path;
218 u8 SS_TH_low;
219 u8 diff_TH;
220 u8 disabledRF;
221 u8 reserved;
223 u8 rf_rssi[4];
224 u8 rf_enable_rssi_th[4];
225 long cck_pwdb_sta[4];
228 enum dm_cck_rx_path_method {
229 CCK_Rx_Version_1 = 0,
230 CCK_Rx_Version_2 = 1,
231 CCK_Rx_Version_MAX
235 enum dm_dbg {
236 DM_DBG_OFF = 0,
237 DM_DBG_ON = 1,
238 DM_DBG_MAX
241 struct dcmd_txcmd {
242 u32 Op;
243 u32 Length;
244 u32 Value;
246 /*------------------------------Define structure----------------------------*/
249 /*------------------------Export global variable----------------------------*/
250 extern struct dig_t dm_digtable;
251 extern u8 dm_shadow[16][256];
252 extern struct drx_path_sel DM_RxPathSelTable;
254 extern u8 test_flag;
255 /*------------------------Export global variable----------------------------*/
258 /*------------------------Export Marco Definition---------------------------*/
259 #define DM_APInitGainChangeNotify(Event) \
261 dm_digtable.CurAPConnectState = Event; \
263 /*------------------------Export Marco Definition---------------------------*/
266 /*--------------------------Exported Function prototype---------------------*/
267 /*--------------------------Exported Function prototype---------------------*/
268 extern void init_hal_dm(struct net_device *dev);
269 extern void deinit_hal_dm(struct net_device *dev);
271 extern void hal_dm_watchdog(struct net_device *dev);
274 extern void init_rate_adaptive(struct net_device *dev);
275 extern void dm_txpower_trackingcallback(void *data);
277 extern void dm_cck_txpower_adjust(struct net_device *dev, bool binch14);
279 extern void dm_restore_dynamic_mechanism_state(struct net_device *dev);
280 extern void dm_backup_dynamic_mechanism_state(struct net_device *dev);
281 extern void dm_change_dynamic_initgain_thresh(struct net_device *dev,
282 u32 dm_type,
283 u32 dm_value);
284 extern void DM_ChangeFsyncSetting(struct net_device *dev,
285 s32 DM_Type,
286 s32 DM_Value);
287 extern void dm_force_tx_fw_info(struct net_device *dev,
288 u32 force_type,
289 u32 force_value);
290 extern void dm_init_edca_turbo(struct net_device *dev);
291 extern void dm_rf_operation_test_callback(unsigned long data);
292 extern void dm_rf_pathcheck_workitemcallback(void *data);
293 extern void dm_fsync_timer_callback(unsigned long data);
294 extern void dm_check_fsync(struct net_device *dev);
295 extern void dm_shadow_init(struct net_device *dev);
296 extern void dm_initialize_txpower_tracking(struct net_device *dev);
297 extern void dm_CheckRfCtrlGPIO(void *data);
298 extern void dm_InitRateAdaptiveMask(struct net_device *dev);
299 extern void init_hal_dm(struct net_device *dev);
300 extern void deinit_hal_dm(struct net_device *dev);
301 extern void hal_dm_watchdog(struct net_device *dev);
302 extern void init_rate_adaptive(struct net_device *dev);
303 extern void dm_txpower_trackingcallback(void *data);
304 extern void dm_restore_dynamic_mechanism_state(struct net_device *dev);
305 extern void dm_backup_dynamic_mechanism_state(struct net_device *dev);
306 extern void dm_change_dynamic_initgain_thresh(struct net_device *dev,
307 u32 dm_type,
308 u32 dm_value);
309 extern void DM_ChangeFsyncSetting(struct net_device *dev,
310 s32 DM_Type,
311 s32 DM_Value);
312 extern void dm_force_tx_fw_info(struct net_device *dev,
313 u32 force_type,
314 u32 force_value);
315 extern void dm_init_edca_turbo(struct net_device *dev);
316 extern void dm_rf_operation_test_callback(unsigned long data);
317 extern void dm_rf_pathcheck_workitemcallback(void *data);
318 extern void dm_fsync_timer_callback(unsigned long data);
319 extern void dm_check_fsync(struct net_device *dev);
320 extern void dm_shadow_init(struct net_device *dev);
321 extern void dm_initialize_txpower_tracking(struct net_device *dev);
322 extern void dm_CheckRfCtrlGPIO(void *data);
324 #endif /*__R8192UDM_H__ */