GNU Linux-libre 5.10.153-gnu1
[releases.git] / drivers / staging / rtl8192e / rtl8192e / rtl_dm.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved.
4  *
5  * Contact Information: wlanfae <wlanfae@realtek.com>
6  */
7 #ifndef __R8192UDM_H__
8 #define __R8192UDM_H__
9
10
11 /*--------------------------Define Parameters-------------------------------*/
12 #define                 OFDM_Table_Length       19
13 #define         CCK_Table_length        12
14
15 #define         DM_DIG_THRESH_HIGH                                      40
16 #define         DM_DIG_THRESH_LOW                                       35
17
18 #define         DM_DIG_HIGH_PWR_THRESH_HIGH             75
19 #define         DM_DIG_HIGH_PWR_THRESH_LOW              70
20
21 #define         BW_AUTO_SWITCH_HIGH_LOW                 25
22 #define         BW_AUTO_SWITCH_LOW_HIGH                 30
23
24 #define         DM_DIG_BACKOFF                          12
25 #define         DM_DIG_MAX                                      0x36
26 #define         DM_DIG_MIN                                      0x1c
27 #define         DM_DIG_MIN_Netcore                      0x12
28
29 #define         RxPathSelection_SS_TH_low               30
30 #define         RxPathSelection_diff_TH                 18
31
32 #define         RateAdaptiveTH_High                     50
33 #define         RateAdaptiveTH_Low_20M          30
34 #define         RateAdaptiveTH_Low_40M          10
35 #define         VeryLowRSSI                                     15
36
37 #define         WAIotTHVal                                              25
38
39 #define         E_FOR_TX_POWER_TRACK           300
40 #define         TX_POWER_NEAR_FIELD_THRESH_HIGH         68
41 #define         TX_POWER_NEAR_FIELD_THRESH_LOW          62
42 #define  TX_POWER_ATHEROAP_THRESH_HIGH     78
43 #define         TX_POWER_ATHEROAP_THRESH_LOW            72
44
45 #define                 Current_Tx_Rate_Reg      0x1e0
46 #define                 Initial_Tx_Rate_Reg      0x1e1
47 #define                 Tx_Retry_Count_Reg       0x1ac
48 #define         RegC38_TH                                20
49
50 #define         DM_Type_ByDriver                1
51
52 /*--------------------------Define Parameters-------------------------------*/
53
54
55 /*------------------------------Define structure----------------------------*/
56 struct dig_t {
57         u8              dig_enable_flag;
58         u8              dig_algorithm;
59         u8              dig_algorithm_switch;
60
61         long            rssi_low_thresh;
62         long            rssi_high_thresh;
63
64         long            rssi_high_power_lowthresh;
65         long            rssi_high_power_highthresh;
66
67         u8              dig_state;
68         u8              dig_highpwr_state;
69         u8              CurSTAConnectState;
70         u8              PreSTAConnectState;
71
72         u8              curpd_thstate;
73         u8              prepd_thstate;
74         u8              curcs_ratio_state;
75         u8              precs_ratio_state;
76
77         u32             pre_ig_value;
78         u32             cur_ig_value;
79
80         u8              backoff_val;
81         u8              rx_gain_range_max;
82         u8              rx_gain_range_min;
83
84         long            rssi_val;
85 };
86
87 enum dm_dig_sta {
88         DM_STA_DIG_OFF = 0,
89         DM_STA_DIG_ON,
90         DM_STA_DIG_MAX
91 };
92
93
94 enum dm_ratr_sta {
95         DM_RATR_STA_HIGH = 0,
96         DM_RATR_STA_MIDDLE = 1,
97         DM_RATR_STA_LOW = 2,
98         DM_RATR_STA_MAX
99 };
100
101 enum dm_dig_alg {
102         DIG_ALGO_BY_FALSE_ALARM = 0,
103         DIG_ALGO_BY_RSSI        = 1,
104         DIG_ALGO_BEFORE_CONNECT_BY_RSSI_AND_ALARM = 2,
105         DIG_ALGO_BY_TOW_PORT = 3,
106         DIG_ALGO_MAX
107 };
108
109 enum dm_dig_connect {
110         DIG_STA_DISCONNECT = 0,
111         DIG_STA_CONNECT = 1,
112         DIG_STA_BEFORE_CONNECT = 2,
113         DIG_AP_DISCONNECT = 3,
114         DIG_AP_CONNECT = 4,
115         DIG_AP_ADD_STATION = 5,
116         DIG_CONNECT_MAX
117 };
118
119 enum dm_dig_pd_th {
120         DIG_PD_AT_LOW_POWER = 0,
121         DIG_PD_AT_NORMAL_POWER = 1,
122         DIG_PD_AT_HIGH_POWER = 2,
123         DIG_PD_MAX
124 };
125
126 enum dm_dig_cs_ratio {
127         DIG_CS_RATIO_LOWER = 0,
128         DIG_CS_RATIO_HIGHER = 1,
129         DIG_CS_MAX
130 };
131
132 struct drx_path_sel {
133         u8              Enable;
134         u8              cck_method;
135         u8              cck_Rx_path;
136
137         u8              SS_TH_low;
138         u8              diff_TH;
139         u8              disabledRF;
140         u8              reserved;
141
142         u8              rf_rssi[4];
143         u8              rf_enable_rssi_th[4];
144         long            cck_pwdb_sta[4];
145 };
146
147 enum dm_cck_rx_path_method {
148         CCK_Rx_Version_1 = 0,
149         CCK_Rx_Version_2 = 1,
150         CCK_Rx_Version_MAX
151 };
152
153
154 struct dcmd_txcmd {
155         u32     Op;
156         u32     Length;
157         u32     Value;
158 };
159 /*------------------------------Define structure----------------------------*/
160
161
162 /*------------------------Export global variable----------------------------*/
163 extern  struct dig_t dm_digtable;
164 extern struct drx_path_sel DM_RxPathSelTable;
165
166 /* Pre-calculated gain tables */
167 extern const u32 dm_tx_bb_gain[TxBBGainTableLength];
168 extern const u8 dm_cck_tx_bb_gain[CCKTxBBGainTableLength][8];
169 extern const u8 dm_cck_tx_bb_gain_ch14[CCKTxBBGainTableLength][8];
170 /* Maps table index to iq amplify gain (dB, 12 to -24dB) */
171 #define dm_tx_bb_gain_idx_to_amplify(idx) (-idx + 12)
172
173 /*------------------------Export global variable----------------------------*/
174
175
176 /*--------------------------Exported Function prototype---------------------*/
177 /*--------------------------Exported Function prototype---------------------*/
178
179 void rtl92e_dm_init(struct net_device *dev);
180 void rtl92e_dm_deinit(struct net_device *dev);
181
182 void rtl92e_dm_watchdog(struct net_device *dev);
183
184
185 void    rtl92e_init_adaptive_rate(struct net_device *dev);
186 void    rtl92e_dm_txpower_tracking_wq(void *data);
187
188 void rtl92e_dm_cck_txpower_adjust(struct net_device *dev, bool binch14);
189
190 void    rtl92e_dm_restore_state(struct net_device *dev);
191 void    rtl92e_dm_backup_state(struct net_device *dev);
192 void    rtl92e_dm_init_edca_turbo(struct net_device *dev);
193 void    rtl92e_dm_rf_pathcheck_wq(void *data);
194 void rtl92e_dm_init_txpower_tracking(struct net_device *dev);
195 #endif  /*__R8192UDM_H__ */