net: wireless: rockchip_wlan: add rtl8723cs support
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723cs / hal / phydm / phydm_adaptivity.h
1
2 /******************************************************************************
3  *
4  * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
5  *
6  * This program is free software; you can redistribute it and/or modify it
7  * under the terms of version 2 of the GNU General Public License as
8  * published by the Free Software Foundation.
9  *
10  * This program is distributed in the hope that it will be useful, but WITHOUT
11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
13  * more details.
14  *
15  * You should have received a copy of the GNU General Public License along with
16  * this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
18  *
19  *
20  ******************************************************************************/
21
22 #ifndef __PHYDMADAPTIVITY_H__
23 #define    __PHYDMADAPTIVITY_H__
24
25 #define ADAPTIVITY_VERSION      "9.3.5" /*20160902 changed by Kevin, refine method for searching pwdb lower bound*/
26
27 #define pwdb_upper_bound        7
28 #define dfir_loss       5
29
30 #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN))
31 enum phydm_regulation_type {
32         REGULATION_FCC = 0,
33         REGULATION_MKK = 1,
34         REGULATION_ETSI = 2,
35         REGULATION_WW = 3,
36
37         MAX_REGULATION_NUM = 4
38 };
39 #endif
40
41 enum phydm_adapinfo_e {
42         PHYDM_ADAPINFO_CARRIER_SENSE_ENABLE = 0,
43         PHYDM_ADAPINFO_DCBACKOFF,
44         PHYDM_ADAPINFO_DYNAMICLINKADAPTIVITY,
45         PHYDM_ADAPINFO_TH_L2H_INI,
46         PHYDM_ADAPINFO_TH_EDCCA_HL_DIFF,
47         PHYDM_ADAPINFO_AP_NUM_TH
48
49 };
50
51
52
53 enum phydm_set_lna {
54         phydm_disable_lna               = 0,
55         phydm_enable_lna                = 1,
56 };
57
58
59 enum phydm_trx_mux_type {
60         phydm_shutdown                  = 0,
61         phydm_standby_mode              = 1,
62         phydm_tx_mode                   = 2,
63         phydm_rx_mode                   = 3
64 };
65
66 enum phydm_mac_edcca_type {
67         phydm_ignore_edcca                      = 0,
68         phydm_dont_ignore_edcca = 1
69 };
70
71 struct _ADAPTIVITY_STATISTICS {
72         s8                      th_l2h_ini_backup;
73         s8                      th_edcca_hl_diff_backup;
74         s8                      igi_base;
75         u8                      igi_target;
76         u8                      nhm_wait;
77         s8                      h2l_lb;
78         s8                      l2h_lb;
79         boolean                 is_first_link;
80         boolean                 is_check;
81         boolean                 dynamic_link_adaptivity;
82         u8                      ap_num_th;
83         u8                      adajust_igi_level;
84         boolean                 acs_for_adaptivity;
85         s8                      backup_l2h;
86         s8                      backup_h2l;
87         boolean                 is_stop_edcca;
88 #if (DM_ODM_SUPPORT_TYPE & ODM_WIN)
89         RT_WORK_ITEM    phydm_pause_edcca_work_item;
90         RT_WORK_ITEM    phydm_resume_edcca_work_item;
91 #endif
92 };
93
94 void
95 phydm_pause_edcca(
96         void    *p_dm_void,
97         boolean is_pasue_edcca
98 );
99
100 void
101 phydm_check_adaptivity(
102         void                    *p_dm_void
103 );
104
105 void
106 phydm_check_environment(
107         void                                    *p_dm_void
108 );
109
110 void
111 phydm_nhm_counter_statistics_init(
112         void                                    *p_dm_void
113 );
114
115 void
116 phydm_nhm_counter_statistics(
117         void                                    *p_dm_void
118 );
119
120 void
121 phydm_nhm_counter_statistics_reset(
122         void                    *p_dm_void
123 );
124
125 void
126 phydm_get_nhm_counter_statistics(
127         void                    *p_dm_void
128 );
129
130 void
131 phydm_mac_edcca_state(
132         void                                    *p_dm_void,
133         enum phydm_mac_edcca_type               state
134 );
135
136 void
137 phydm_set_edcca_threshold(
138         void            *p_dm_void,
139         s8              H2L,
140         s8              L2H
141 );
142
143 void
144 phydm_set_trx_mux(
145         void                    *p_dm_void,
146         enum phydm_trx_mux_type                 tx_mode,
147         enum phydm_trx_mux_type                 rx_mode
148 );
149
150 boolean
151 phydm_cal_nhm_cnt(
152         void            *p_dm_void
153 );
154
155 void
156 phydm_search_pwdb_lower_bound(
157         void                                    *p_dm_void
158 );
159
160 void
161 phydm_adaptivity_info_init(
162         void                    *p_dm_void,
163         enum phydm_adapinfo_e   cmn_info,
164         u32                             value
165 );
166
167 void
168 phydm_adaptivity_init(
169         void                                    *p_dm_void
170 );
171
172 void
173 phydm_adaptivity(
174         void                    *p_dm_void
175 );
176
177 void
178 phydm_set_edcca_threshold_api(
179         void    *p_dm_void,
180         u8      IGI
181 );
182
183 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
184 void
185 phydm_disable_edcca(
186         void                                    *p_dm_void
187 );
188
189 void
190 phydm_dynamic_edcca(
191         void                                    *p_dm_void
192 );
193
194 void
195 phydm_adaptivity_bsod(
196         void                                    *p_dm_void
197 );
198
199 #endif
200
201 void
202 phydm_pause_edcca_work_item_callback(
203 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
204         struct _ADAPTER         *adapter
205 #else
206         void                    *p_dm_void
207 #endif
208 );
209
210 void
211 phydm_resume_edcca_work_item_callback(
212 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
213         struct _ADAPTER         *adapter
214 #else
215         void                    *p_dm_void
216 #endif
217 );
218
219 #endif