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