xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8189fs/hal/phydm/phydm_adaptivity.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /******************************************************************************
2*4882a593Smuzhiyun  *
3*4882a593Smuzhiyun  * Copyright(c) 2007 - 2017  Realtek Corporation.
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * This program is free software; you can redistribute it and/or modify it
6*4882a593Smuzhiyun  * under the terms of version 2 of the GNU General Public License as
7*4882a593Smuzhiyun  * published by the Free Software Foundation.
8*4882a593Smuzhiyun  *
9*4882a593Smuzhiyun  * This program is distributed in the hope that it will be useful, but WITHOUT
10*4882a593Smuzhiyun  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11*4882a593Smuzhiyun  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
12*4882a593Smuzhiyun  * more details.
13*4882a593Smuzhiyun  *
14*4882a593Smuzhiyun  * The full GNU General Public License is included in this distribution in the
15*4882a593Smuzhiyun  * file called LICENSE.
16*4882a593Smuzhiyun  *
17*4882a593Smuzhiyun  * Contact Information:
18*4882a593Smuzhiyun  * wlanfae <wlanfae@realtek.com>
19*4882a593Smuzhiyun  * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
20*4882a593Smuzhiyun  * Hsinchu 300, Taiwan.
21*4882a593Smuzhiyun  *
22*4882a593Smuzhiyun  * Larry Finger <Larry.Finger@lwfinger.net>
23*4882a593Smuzhiyun  *
24*4882a593Smuzhiyun  *****************************************************************************/
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun #ifndef __PHYDMADAPTIVITY_H__
27*4882a593Smuzhiyun #define __PHYDMADAPTIVITY_H__
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun #define ADAPTIVITY_VERSION "9.7.07" /*@20190321 changed by Kevin,
30*4882a593Smuzhiyun 				     *add 8721D threshold l2h init
31*4882a593Smuzhiyun 				     */
32*4882a593Smuzhiyun #define ADC_BACKOFF 12
33*4882a593Smuzhiyun #define EDCCA_TH_L2H_LB 48
34*4882a593Smuzhiyun #define TH_L2H_DIFF_IGI 8
35*4882a593Smuzhiyun #define EDCCA_HL_DIFF_NORMAL 8
36*4882a593Smuzhiyun #define IGI_2_DBM(igi) (igi - 110)
37*4882a593Smuzhiyun /*@ [PHYDM-337][Old IC] EDCCA TH = IGI + REG setting*/
38*4882a593Smuzhiyun #define ODM_IC_PWDB_EDCCA (ODM_RTL8188E | ODM_RTL8723B | ODM_RTL8192E |\
39*4882a593Smuzhiyun 			   ODM_RTL8881A | ODM_RTL8821 | ODM_RTL8812)
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun #if (DM_ODM_SUPPORT_TYPE & (ODM_CE | ODM_AP))
42*4882a593Smuzhiyun 	#define ADAPT_DC_BACKOFF 2
43*4882a593Smuzhiyun #elif (DM_ODM_SUPPORT_TYPE & ODM_WIN)
44*4882a593Smuzhiyun 	#define ADAPT_DC_BACKOFF 4
45*4882a593Smuzhiyun #elif (DM_ODM_SUPPORT_TYPE & ODM_IOT)
46*4882a593Smuzhiyun 	#define ADAPT_DC_BACKOFF 0
47*4882a593Smuzhiyun #endif
48*4882a593Smuzhiyun #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN))
49*4882a593Smuzhiyun enum phydm_regulation_type {
50*4882a593Smuzhiyun 	REGULATION_FCC		= 0,
51*4882a593Smuzhiyun 	REGULATION_MKK		= 1,
52*4882a593Smuzhiyun 	REGULATION_ETSI		= 2,
53*4882a593Smuzhiyun 	REGULATION_WW		= 3,
54*4882a593Smuzhiyun 	MAX_REGULATION_NUM	= 4
55*4882a593Smuzhiyun };
56*4882a593Smuzhiyun #endif
57*4882a593Smuzhiyun 
58*4882a593Smuzhiyun enum phydm_edcca_mode {
59*4882a593Smuzhiyun 	PHYDM_EDCCA_NORMAL_MODE = 0,
60*4882a593Smuzhiyun 	PHYDM_EDCCA_ADAPT_MODE = 1
61*4882a593Smuzhiyun };
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun enum phydm_adapinfo {
64*4882a593Smuzhiyun 	PHYDM_ADAPINFO_CARRIER_SENSE_ENABLE = 0,
65*4882a593Smuzhiyun 	PHYDM_ADAPINFO_TH_L2H_INI,
66*4882a593Smuzhiyun 	PHYDM_ADAPINFO_TH_EDCCA_HL_DIFF,
67*4882a593Smuzhiyun 	PHYDM_ADAPINFO_AP_NUM_TH,
68*4882a593Smuzhiyun 	PHYDM_ADAPINFO_DOMAIN_CODE_2G,
69*4882a593Smuzhiyun 	PHYDM_ADAPINFO_DOMAIN_CODE_5G,
70*4882a593Smuzhiyun 	PHYDM_ADAPINFO_SWITCH_TH_L2H_INI_IN_BAND
71*4882a593Smuzhiyun };
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun enum phydm_mac_edcca_type {
74*4882a593Smuzhiyun 	PHYDM_IGNORE_EDCCA		= 0,
75*4882a593Smuzhiyun 	PHYDM_DONT_IGNORE_EDCCA		= 1
76*4882a593Smuzhiyun };
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun enum phydm_adaptivity_debug_mode {
79*4882a593Smuzhiyun 	PHYDM_ADAPT_MSG			= 0,
80*4882a593Smuzhiyun 	PHYDM_ADAPT_DEBUG		= 1,
81*4882a593Smuzhiyun 	PHYDM_ADAPT_RESUME		= 2,
82*4882a593Smuzhiyun };
83*4882a593Smuzhiyun 
84*4882a593Smuzhiyun struct phydm_adaptivity_struct {
85*4882a593Smuzhiyun 	boolean			mode_cvrt_en;
86*4882a593Smuzhiyun 	s8			th_l2h_ini_backup;
87*4882a593Smuzhiyun 	s8			th_edcca_hl_diff_backup;
88*4882a593Smuzhiyun 	s8			igi_base;
89*4882a593Smuzhiyun 	s8			h2l_lb;
90*4882a593Smuzhiyun 	s8			l2h_lb;
91*4882a593Smuzhiyun 	u8			ap_num_th;
92*4882a593Smuzhiyun 	u8			l2h_dyn_min;
93*4882a593Smuzhiyun 	u32			adaptivity_dbg_port; /*N:0x208, AC:0x209*/
94*4882a593Smuzhiyun 	u8			debug_mode;
95*4882a593Smuzhiyun 	u16			igi_up_bound_lmt_cnt;	/*@When igi_up_bound_lmt_cnt !=0, limit IGI upper bound to "adapt_igi_up"*/
96*4882a593Smuzhiyun 	u16			igi_up_bound_lmt_val;	/*@max value of igi_up_bound_lmt_cnt*/
97*4882a593Smuzhiyun 	boolean			igi_lmt_en;
98*4882a593Smuzhiyun 	u8			adapt_igi_up;
99*4882a593Smuzhiyun 	u32			rvrt_val[2]; /*@all rvrt_val for pause API must set to u32*/
100*4882a593Smuzhiyun 	s8			th_l2h;
101*4882a593Smuzhiyun 	s8			th_h2l;
102*4882a593Smuzhiyun 	u8			regulation_2g;
103*4882a593Smuzhiyun 	u8			regulation_5g;
104*4882a593Smuzhiyun 	u8			switch_th_l2h_ini_in_band;
105*4882a593Smuzhiyun };
106*4882a593Smuzhiyun 
107*4882a593Smuzhiyun #ifdef PHYDM_SUPPORT_ADAPTIVITY
108*4882a593Smuzhiyun void phydm_adaptivity_debug(void *dm_void, char input[][16], u32 *_used,
109*4882a593Smuzhiyun 			    char *output, u32 *_out_len);
110*4882a593Smuzhiyun 
111*4882a593Smuzhiyun void phydm_set_edcca_val(void *dm_void, u32 *val_buf, u8 val_len);
112*4882a593Smuzhiyun #endif
113*4882a593Smuzhiyun 
114*4882a593Smuzhiyun void phydm_set_edcca_threshold_api(void *dm_void);
115*4882a593Smuzhiyun 
116*4882a593Smuzhiyun void phydm_adaptivity_info_init(void *dm_void, enum phydm_adapinfo cmn_info,
117*4882a593Smuzhiyun 				u32 value);
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun void phydm_adaptivity_info_update(void *dm_void, enum phydm_adapinfo cmn_info,
120*4882a593Smuzhiyun 				  u32 value);
121*4882a593Smuzhiyun 
122*4882a593Smuzhiyun void phydm_adaptivity_init(void *dm_void);
123*4882a593Smuzhiyun 
124*4882a593Smuzhiyun void phydm_adaptivity(void *dm_void);
125*4882a593Smuzhiyun 
126*4882a593Smuzhiyun #endif
127