52
38
// For Dynamic Rx Path Selection by Signal Strength
53
39
DRxPathSel DM_RxPathSelTable;
56
/*--------------------Define export function prototype-----------------------*/
57
extern void init_hal_dm(struct net_device *dev);
58
extern void deinit_hal_dm(struct net_device *dev);
60
extern void hal_dm_watchdog(struct net_device *dev);
63
extern void init_rate_adaptive(struct net_device *dev);
64
extern void dm_txpower_trackingcallback(struct work_struct *work);
66
extern void dm_cck_txpower_adjust(struct net_device *dev,bool binch14);
67
extern void dm_restore_dynamic_mechanism_state(struct net_device *dev);
68
extern void dm_backup_dynamic_mechanism_state(struct net_device *dev);
69
extern void dm_change_dynamic_initgain_thresh(struct net_device *dev,
72
extern void DM_ChangeFsyncSetting(struct net_device *dev,
75
extern void dm_force_tx_fw_info(struct net_device *dev,
78
extern void dm_init_edca_turbo(struct net_device *dev);
79
extern void dm_rf_operation_test_callback(unsigned long data);
80
extern void dm_rf_pathcheck_workitemcallback(struct work_struct *work);
81
extern void dm_fsync_timer_callback(unsigned long data);
82
extern void dm_check_fsync(struct net_device *dev);
83
extern void dm_initialize_txpower_tracking(struct net_device *dev);
86
extern void dm_gpio_change_rf_callback(struct work_struct *work);
41
void dm_gpio_change_rf_callback(struct work_struct *work);
90
43
// DM --> Rate Adaptive
91
static void dm_check_rate_adaptive(struct net_device *dev);
44
static void dm_check_rate_adaptive(struct r8192_priv *priv);
93
46
// DM --> Bandwidth switch
94
static void dm_init_bandwidth_autoswitch(struct net_device *dev);
95
static void dm_bandwidth_autoswitch( struct net_device *dev);
47
static void dm_init_bandwidth_autoswitch(struct r8192_priv *priv);
48
static void dm_bandwidth_autoswitch(struct r8192_priv *priv);
97
50
// DM --> TX power control
98
static void dm_check_txpower_tracking(struct net_device *dev);
100
// DM --> BB init gain restore
102
static void dm_bb_initialgain_restore(struct net_device *dev);
104
// DM --> BB init gain backup
105
static void dm_bb_initialgain_backup(struct net_device *dev);
51
static void dm_check_txpower_tracking(struct r8192_priv *priv);
108
53
// DM --> Dynamic Init Gain by RSSI
109
static void dm_dig_init(struct net_device *dev);
110
static void dm_ctrl_initgain_byrssi(struct net_device *dev);
111
static void dm_ctrl_initgain_byrssi_highpwr(struct net_device *dev);
112
static void dm_ctrl_initgain_byrssi_by_driverrssi( struct net_device *dev);
113
static void dm_ctrl_initgain_byrssi_by_fwfalse_alarm(struct net_device *dev);
114
static void dm_initial_gain(struct net_device *dev);
115
static void dm_pd_th(struct net_device *dev);
116
static void dm_cs_ratio(struct net_device *dev);
54
static void dm_dig_init(struct r8192_priv *priv);
55
static void dm_ctrl_initgain_byrssi(struct r8192_priv *priv);
56
static void dm_ctrl_initgain_byrssi_highpwr(struct r8192_priv *priv);
57
static void dm_ctrl_initgain_byrssi_by_driverrssi(struct r8192_priv *priv);
58
static void dm_ctrl_initgain_byrssi_by_fwfalse_alarm(struct r8192_priv *priv);
59
static void dm_initial_gain(struct r8192_priv *priv);
60
static void dm_pd_th(struct r8192_priv *priv);
61
static void dm_cs_ratio(struct r8192_priv *priv);
118
static void dm_init_ctstoself(struct net_device *dev);
63
static void dm_init_ctstoself(struct r8192_priv *priv);
119
64
// DM --> EDCA turboe mode control
120
static void dm_check_edca_turbo(struct net_device *dev);
65
static void dm_check_edca_turbo(struct r8192_priv *priv);
66
static void dm_init_edca_turbo(struct r8192_priv *priv);
122
68
// DM --> HW RF control
123
static void dm_check_rfctrl_gpio(struct net_device *dev);
126
static void dm_check_pbc_gpio(struct net_device *dev);
69
static void dm_check_rfctrl_gpio(struct r8192_priv *priv);
128
71
// DM --> Check current RX RF path state
129
static void dm_check_rx_path_selection(struct net_device *dev);
130
static void dm_init_rxpath_selection(struct net_device *dev);
131
static void dm_rxpath_sel_byrssi(struct net_device *dev);
72
static void dm_check_rx_path_selection(struct r8192_priv *priv);
73
static void dm_init_rxpath_selection(struct r8192_priv *priv);
74
static void dm_rxpath_sel_byrssi(struct r8192_priv *priv);
133
76
// DM --> Fsync for broadcom ap
134
static void dm_init_fsync(struct net_device *dev);
135
static void dm_deInit_fsync(struct net_device *dev);
77
static void dm_init_fsync(struct r8192_priv *priv);
78
static void dm_deInit_fsync(struct r8192_priv *priv);
137
static void dm_check_txrateandretrycount(struct net_device *dev);
80
static void dm_check_txrateandretrycount(struct r8192_priv *priv);
81
static void dm_check_fsync(struct r8192_priv *priv);
140
84
/*---------------------Define of Tx Power Control For Near/Far Range --------*/ //Add by Jacken 2008/02/18
141
static void dm_init_dynamic_txpower(struct net_device *dev);
142
static void dm_dynamic_txpower(struct net_device *dev);
85
static void dm_init_dynamic_txpower(struct r8192_priv *priv);
86
static void dm_dynamic_txpower(struct r8192_priv *priv);
144
88
// DM --> For rate adaptive and DIG, we must send RSSI to firmware
145
static void dm_send_rssi_tofw(struct net_device *dev);
146
static void dm_ctstoself(struct net_device *dev);
89
static void dm_send_rssi_tofw(struct r8192_priv *priv);
90
static void dm_ctstoself(struct r8192_priv *priv);
92
static void dm_fsync_timer_callback(unsigned long data);
149
95
* Prepare SW resource for HW dynamic mechanism.
150
96
* This function is only invoked at driver intialization once.
152
void init_hal_dm(struct net_device *dev)
98
void init_hal_dm(struct r8192_priv *priv)
154
struct r8192_priv *priv = ieee80211_priv(dev);
156
100
// Undecorated Smoothed Signal Strength, it can utilized to dynamic mechanism.
157
101
priv->undecorated_smoothed_pwdb = -1;
159
103
//Initial TX Power Control for near/far range , add by amy 2008/05/15, porting from windows code.
160
dm_init_dynamic_txpower(dev);
161
init_rate_adaptive(dev);
104
dm_init_dynamic_txpower(priv);
105
init_rate_adaptive(priv);
162
106
//dm_initialize_txpower_tracking(dev);
164
dm_init_edca_turbo(dev);
165
dm_init_bandwidth_autoswitch(dev);
167
dm_init_rxpath_selection(dev);
168
dm_init_ctstoself(dev);
108
dm_init_edca_turbo(priv);
109
dm_init_bandwidth_autoswitch(priv);
111
dm_init_rxpath_selection(priv);
112
dm_init_ctstoself(priv);
170
113
INIT_DELAYED_WORK(&priv->gpio_change_rf_wq, dm_gpio_change_rf_callback);
175
void deinit_hal_dm(struct net_device *dev)
178
dm_deInit_fsync(dev);
183
#ifdef USB_RX_AGGREGATION_SUPPORT
184
void dm_CheckRxAggregation(struct net_device *dev) {
185
struct r8192_priv *priv = ieee80211_priv((struct net_device *)dev);
186
PRT_HIGH_THROUGHPUT pHTInfo = priv->ieee80211->pHTInfo;
187
static unsigned long lastTxOkCnt = 0;
188
static unsigned long lastRxOkCnt = 0;
189
unsigned long curTxOkCnt = 0;
190
unsigned long curRxOkCnt = 0;
193
if (pHalData->bForcedUsbRxAggr) {
194
if (pHalData->ForcedUsbRxAggrInfo == 0) {
195
if (pHalData->bCurrentRxAggrEnable) {
196
Adapter->HalFunc.HalUsbRxAggrHandler(Adapter, FALSE);
199
if (!pHalData->bCurrentRxAggrEnable || (pHalData->ForcedUsbRxAggrInfo != pHalData->LastUsbRxAggrInfoSetting)) {
200
Adapter->HalFunc.HalUsbRxAggrHandler(Adapter, TRUE);
207
curTxOkCnt = priv->stats.txbytesunicast - lastTxOkCnt;
208
curRxOkCnt = priv->stats.rxbytesunicast - lastRxOkCnt;
210
if((curTxOkCnt + curRxOkCnt) < 15000000) {
214
if(curTxOkCnt > 4*curRxOkCnt) {
215
if (priv->bCurrentRxAggrEnable) {
216
write_nic_dword(dev, 0x1a8, 0);
217
priv->bCurrentRxAggrEnable = false;
220
if (!priv->bCurrentRxAggrEnable && !pHTInfo->bCurrentRT2RTAggregation) {
222
ulValue = (pHTInfo->UsbRxFwAggrEn<<24) | (pHTInfo->UsbRxFwAggrPageNum<<16) |
223
(pHTInfo->UsbRxFwAggrPacketNum<<8) | (pHTInfo->UsbRxFwAggrTimeout);
225
* If usb rx firmware aggregation is enabled,
226
* when anyone of three threshold conditions above is reached,
227
* firmware will send aggregated packet to driver.
229
write_nic_dword(dev, 0x1a8, ulValue);
230
priv->bCurrentRxAggrEnable = true;
234
lastTxOkCnt = priv->stats.txbytesunicast;
235
lastRxOkCnt = priv->stats.rxbytesunicast;
240
// call the script file to enable
241
void dm_check_ac_dc_power(struct net_device *dev)
243
struct r8192_priv *priv = ieee80211_priv(dev);
244
static char *ac_dc_check_script_path = "/etc/acpi/wireless-rtl-ac-dc-power.sh";
245
char *argv[] = {ac_dc_check_script_path,DRV_NAME,NULL};
246
static char *envp[] = {"HOME=/",
248
"PATH=/usr/bin:/bin",
251
if(priv->ResetProgress == RESET_TYPE_SILENT)
253
RT_TRACE((COMP_INIT | COMP_POWER | COMP_RF), "GPIOChangeRFWorkItemCallBack(): Silent Reseting!!!!!!!\n");
257
if(priv->ieee80211->state != IEEE80211_LINKED) {
260
call_usermodehelper(ac_dc_check_script_path,argv,envp,1);
263
void hal_dm_watchdog(struct net_device *dev)
265
dm_check_ac_dc_power(dev);
117
void deinit_hal_dm(struct r8192_priv *priv)
119
dm_deInit_fsync(priv);
122
void hal_dm_watchdog(struct r8192_priv *priv)
267
125
/*Add by amy 2008/05/15 ,porting from windows code.*/
268
dm_check_rate_adaptive(dev);
269
dm_dynamic_txpower(dev);
270
dm_check_txrateandretrycount(dev);
272
dm_check_txpower_tracking(dev);
274
dm_ctrl_initgain_byrssi(dev);
275
dm_check_edca_turbo(dev);
276
dm_bandwidth_autoswitch(dev);
278
dm_check_rfctrl_gpio(dev);
279
dm_check_rx_path_selection(dev);
126
dm_check_rate_adaptive(priv);
127
dm_dynamic_txpower(priv);
128
dm_check_txrateandretrycount(priv);
130
dm_check_txpower_tracking(priv);
132
dm_ctrl_initgain_byrssi(priv);
133
dm_check_edca_turbo(priv);
134
dm_bandwidth_autoswitch(priv);
136
dm_check_rfctrl_gpio(priv);
137
dm_check_rx_path_selection(priv);
138
dm_check_fsync(priv);
282
140
// Add by amy 2008-05-15 porting from windows code.
283
dm_check_pbc_gpio(dev);
284
dm_send_rssi_tofw(dev);
287
#ifdef USB_RX_AGGREGATION_SUPPORT
288
dm_CheckRxAggregation(dev);
141
dm_send_rssi_tofw(priv);
959
770
if(CCKSwingNeedUpdate)
961
//DbgPrint("Update CCK Swing, CCK_index = %d\n", pHalData->CCK_index);
962
dm_cck_txpower_adjust(dev, priv->bcck_in_ch14);
772
dm_cck_txpower_adjust(priv, priv->bcck_in_ch14);
964
774
if(priv->OFDM_index != tmpOFDMindex)
966
776
priv->OFDM_index = tmpOFDMindex;
967
rtl8192_setBBreg(dev, rOFDM0_XATxIQImbalance, bMaskDWord, OFDMSwingTable[priv->OFDM_index]);
777
rtl8192_setBBreg(priv, rOFDM0_XATxIQImbalance, bMaskDWord, OFDMSwingTable[priv->OFDM_index]);
968
778
RT_TRACE(COMP_POWER_TRACKING, "Update OFDMSwing[%d] = 0x%x\n",
969
779
priv->OFDM_index, OFDMSwingTable[priv->OFDM_index]);
971
781
priv->txpower_count = 0;
974
784
void dm_txpower_trackingcallback(struct work_struct *work)
976
786
struct delayed_work *dwork = container_of(work,struct delayed_work,work);
977
struct r8192_priv *priv = container_of(dwork,struct r8192_priv,txpower_tracking_wq);
978
struct net_device *dev = priv->ieee80211->dev;
787
struct r8192_priv *priv = container_of(dwork,struct r8192_priv,txpower_tracking_wq);
981
dm_TXPowerTrackingCallback_TSSI(dev);
983
//if(priv->bDcut == TRUE)
984
789
if(priv->IC_Cut >= IC_VersionCut_D)
985
dm_TXPowerTrackingCallback_TSSI(dev);
790
dm_TXPowerTrackingCallback_TSSI(priv);
987
dm_TXPowerTrackingCallback_ThermalMeter(dev);
792
dm_TXPowerTrackingCallback_ThermalMeter(priv);
992
static void dm_InitializeTXPowerTracking_TSSI(struct net_device *dev)
796
static const txbbgain_struct rtl8192_txbbgain_table[] = {
837
* ccktxbb_valuearray[0] is 0xA22 [1] is 0xA24 ...[7] is 0xA29
838
* This Table is for CH1~CH13
840
static const ccktxbbgain_struct rtl8192_cck_txbbgain_table[] = {
841
{{ 0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04 }},
842
{{ 0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04 }},
843
{{ 0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03 }},
844
{{ 0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03 }},
845
{{ 0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03 }},
846
{{ 0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03 }},
847
{{ 0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03 }},
848
{{ 0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03 }},
849
{{ 0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02 }},
850
{{ 0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02 }},
851
{{ 0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02 }},
852
{{ 0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02 }},
853
{{ 0x1b, 0x1a, 0x17, 0x13, 0x0e, 0x09, 0x04, 0x02 }},
854
{{ 0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02 }},
855
{{ 0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02 }},
856
{{ 0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02 }},
857
{{ 0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01 }},
858
{{ 0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02 }},
859
{{ 0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01 }},
860
{{ 0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01 }},
861
{{ 0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01 }},
862
{{ 0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01 }},
863
{{ 0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01 }},
867
* ccktxbb_valuearray[0] is 0xA22 [1] is 0xA24 ...[7] is 0xA29
868
* This Table is for CH14
870
static const ccktxbbgain_struct rtl8192_cck_txbbgain_ch14_table[] = {
871
{{ 0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00 }},
872
{{ 0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00 }},
873
{{ 0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00 }},
874
{{ 0x2d, 0x2d, 0x27, 0x17, 0x00, 0x00, 0x00, 0x00 }},
875
{{ 0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00 }},
876
{{ 0x28, 0x28, 0x22, 0x14, 0x00, 0x00, 0x00, 0x00 }},
877
{{ 0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00 }},
878
{{ 0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00 }},
879
{{ 0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00 }},
880
{{ 0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00 }},
881
{{ 0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00 }},
882
{{ 0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00 }},
883
{{ 0x1b, 0x1a, 0x17, 0x0e, 0x00, 0x00, 0x00, 0x00 }},
884
{{ 0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00 }},
885
{{ 0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00 }},
886
{{ 0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00 }},
887
{{ 0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00 }},
888
{{ 0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00 }},
889
{{ 0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00 }},
890
{{ 0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00 }},
891
{{ 0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00 }},
892
{{ 0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00 }},
893
{{ 0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00 }},
896
static void dm_InitializeTXPowerTracking_TSSI(struct r8192_priv *priv)
995
struct r8192_priv *priv = ieee80211_priv(dev);
997
//Initial the Tx BB index and mapping value
998
priv->txbbgain_table[0].txbb_iq_amplifygain = 12;
999
priv->txbbgain_table[0].txbbgain_value=0x7f8001fe;
1000
priv->txbbgain_table[1].txbb_iq_amplifygain = 11;
1001
priv->txbbgain_table[1].txbbgain_value=0x788001e2;
1002
priv->txbbgain_table[2].txbb_iq_amplifygain = 10;
1003
priv->txbbgain_table[2].txbbgain_value=0x71c001c7;
1004
priv->txbbgain_table[3].txbb_iq_amplifygain = 9;
1005
priv->txbbgain_table[3].txbbgain_value=0x6b8001ae;
1006
priv->txbbgain_table[4].txbb_iq_amplifygain = 8;
1007
priv->txbbgain_table[4].txbbgain_value=0x65400195;
1008
priv->txbbgain_table[5].txbb_iq_amplifygain = 7;
1009
priv->txbbgain_table[5].txbbgain_value=0x5fc0017f;
1010
priv->txbbgain_table[6].txbb_iq_amplifygain = 6;
1011
priv->txbbgain_table[6].txbbgain_value=0x5a400169;
1012
priv->txbbgain_table[7].txbb_iq_amplifygain = 5;
1013
priv->txbbgain_table[7].txbbgain_value=0x55400155;
1014
priv->txbbgain_table[8].txbb_iq_amplifygain = 4;
1015
priv->txbbgain_table[8].txbbgain_value=0x50800142;
1016
priv->txbbgain_table[9].txbb_iq_amplifygain = 3;
1017
priv->txbbgain_table[9].txbbgain_value=0x4c000130;
1018
priv->txbbgain_table[10].txbb_iq_amplifygain = 2;
1019
priv->txbbgain_table[10].txbbgain_value=0x47c0011f;
1020
priv->txbbgain_table[11].txbb_iq_amplifygain = 1;
1021
priv->txbbgain_table[11].txbbgain_value=0x43c0010f;
1022
priv->txbbgain_table[12].txbb_iq_amplifygain = 0;
1023
priv->txbbgain_table[12].txbbgain_value=0x40000100;
1024
priv->txbbgain_table[13].txbb_iq_amplifygain = -1;
1025
priv->txbbgain_table[13].txbbgain_value=0x3c8000f2;
1026
priv->txbbgain_table[14].txbb_iq_amplifygain = -2;
1027
priv->txbbgain_table[14].txbbgain_value=0x390000e4;
1028
priv->txbbgain_table[15].txbb_iq_amplifygain = -3;
1029
priv->txbbgain_table[15].txbbgain_value=0x35c000d7;
1030
priv->txbbgain_table[16].txbb_iq_amplifygain = -4;
1031
priv->txbbgain_table[16].txbbgain_value=0x32c000cb;
1032
priv->txbbgain_table[17].txbb_iq_amplifygain = -5;
1033
priv->txbbgain_table[17].txbbgain_value=0x300000c0;
1034
priv->txbbgain_table[18].txbb_iq_amplifygain = -6;
1035
priv->txbbgain_table[18].txbbgain_value=0x2d4000b5;
1036
priv->txbbgain_table[19].txbb_iq_amplifygain = -7;
1037
priv->txbbgain_table[19].txbbgain_value=0x2ac000ab;
1038
priv->txbbgain_table[20].txbb_iq_amplifygain = -8;
1039
priv->txbbgain_table[20].txbbgain_value=0x288000a2;
1040
priv->txbbgain_table[21].txbb_iq_amplifygain = -9;
1041
priv->txbbgain_table[21].txbbgain_value=0x26000098;
1042
priv->txbbgain_table[22].txbb_iq_amplifygain = -10;
1043
priv->txbbgain_table[22].txbbgain_value=0x24000090;
1044
priv->txbbgain_table[23].txbb_iq_amplifygain = -11;
1045
priv->txbbgain_table[23].txbbgain_value=0x22000088;
1046
priv->txbbgain_table[24].txbb_iq_amplifygain = -12;
1047
priv->txbbgain_table[24].txbbgain_value=0x20000080;
1048
priv->txbbgain_table[25].txbb_iq_amplifygain = -13;
1049
priv->txbbgain_table[25].txbbgain_value=0x1a00006c;
1050
priv->txbbgain_table[26].txbb_iq_amplifygain = -14;
1051
priv->txbbgain_table[26].txbbgain_value=0x1c800072;
1052
priv->txbbgain_table[27].txbb_iq_amplifygain = -15;
1053
priv->txbbgain_table[27].txbbgain_value=0x18000060;
1054
priv->txbbgain_table[28].txbb_iq_amplifygain = -16;
1055
priv->txbbgain_table[28].txbbgain_value=0x19800066;
1056
priv->txbbgain_table[29].txbb_iq_amplifygain = -17;
1057
priv->txbbgain_table[29].txbbgain_value=0x15800056;
1058
priv->txbbgain_table[30].txbb_iq_amplifygain = -18;
1059
priv->txbbgain_table[30].txbbgain_value=0x26c0005b;
1060
priv->txbbgain_table[31].txbb_iq_amplifygain = -19;
1061
priv->txbbgain_table[31].txbbgain_value=0x14400051;
1062
priv->txbbgain_table[32].txbb_iq_amplifygain = -20;
1063
priv->txbbgain_table[32].txbbgain_value=0x24400051;
1064
priv->txbbgain_table[33].txbb_iq_amplifygain = -21;
1065
priv->txbbgain_table[33].txbbgain_value=0x1300004c;
1066
priv->txbbgain_table[34].txbb_iq_amplifygain = -22;
1067
priv->txbbgain_table[34].txbbgain_value=0x12000048;
1068
priv->txbbgain_table[35].txbb_iq_amplifygain = -23;
1069
priv->txbbgain_table[35].txbbgain_value=0x11000044;
1070
priv->txbbgain_table[36].txbb_iq_amplifygain = -24;
1071
priv->txbbgain_table[36].txbbgain_value=0x10000040;
1073
//ccktxbb_valuearray[0] is 0xA22 [1] is 0xA24 ...[7] is 0xA29
1074
//This Table is for CH1~CH13
1075
priv->cck_txbbgain_table[0].ccktxbb_valuearray[0] = 0x36;
1076
priv->cck_txbbgain_table[0].ccktxbb_valuearray[1] = 0x35;
1077
priv->cck_txbbgain_table[0].ccktxbb_valuearray[2] = 0x2e;
1078
priv->cck_txbbgain_table[0].ccktxbb_valuearray[3] = 0x25;
1079
priv->cck_txbbgain_table[0].ccktxbb_valuearray[4] = 0x1c;
1080
priv->cck_txbbgain_table[0].ccktxbb_valuearray[5] = 0x12;
1081
priv->cck_txbbgain_table[0].ccktxbb_valuearray[6] = 0x09;
1082
priv->cck_txbbgain_table[0].ccktxbb_valuearray[7] = 0x04;
1084
priv->cck_txbbgain_table[1].ccktxbb_valuearray[0] = 0x33;
1085
priv->cck_txbbgain_table[1].ccktxbb_valuearray[1] = 0x32;
1086
priv->cck_txbbgain_table[1].ccktxbb_valuearray[2] = 0x2b;
1087
priv->cck_txbbgain_table[1].ccktxbb_valuearray[3] = 0x23;
1088
priv->cck_txbbgain_table[1].ccktxbb_valuearray[4] = 0x1a;
1089
priv->cck_txbbgain_table[1].ccktxbb_valuearray[5] = 0x11;
1090
priv->cck_txbbgain_table[1].ccktxbb_valuearray[6] = 0x08;
1091
priv->cck_txbbgain_table[1].ccktxbb_valuearray[7] = 0x04;
1093
priv->cck_txbbgain_table[2].ccktxbb_valuearray[0] = 0x30;
1094
priv->cck_txbbgain_table[2].ccktxbb_valuearray[1] = 0x2f;
1095
priv->cck_txbbgain_table[2].ccktxbb_valuearray[2] = 0x29;
1096
priv->cck_txbbgain_table[2].ccktxbb_valuearray[3] = 0x21;
1097
priv->cck_txbbgain_table[2].ccktxbb_valuearray[4] = 0x19;
1098
priv->cck_txbbgain_table[2].ccktxbb_valuearray[5] = 0x10;
1099
priv->cck_txbbgain_table[2].ccktxbb_valuearray[6] = 0x08;
1100
priv->cck_txbbgain_table[2].ccktxbb_valuearray[7] = 0x03;
1102
priv->cck_txbbgain_table[3].ccktxbb_valuearray[0] = 0x2d;
1103
priv->cck_txbbgain_table[3].ccktxbb_valuearray[1] = 0x2d;
1104
priv->cck_txbbgain_table[3].ccktxbb_valuearray[2] = 0x27;
1105
priv->cck_txbbgain_table[3].ccktxbb_valuearray[3] = 0x1f;
1106
priv->cck_txbbgain_table[3].ccktxbb_valuearray[4] = 0x18;
1107
priv->cck_txbbgain_table[3].ccktxbb_valuearray[5] = 0x0f;
1108
priv->cck_txbbgain_table[3].ccktxbb_valuearray[6] = 0x08;
1109
priv->cck_txbbgain_table[3].ccktxbb_valuearray[7] = 0x03;
1111
priv->cck_txbbgain_table[4].ccktxbb_valuearray[0] = 0x2b;
1112
priv->cck_txbbgain_table[4].ccktxbb_valuearray[1] = 0x2a;
1113
priv->cck_txbbgain_table[4].ccktxbb_valuearray[2] = 0x25;
1114
priv->cck_txbbgain_table[4].ccktxbb_valuearray[3] = 0x1e;
1115
priv->cck_txbbgain_table[4].ccktxbb_valuearray[4] = 0x16;
1116
priv->cck_txbbgain_table[4].ccktxbb_valuearray[5] = 0x0e;
1117
priv->cck_txbbgain_table[4].ccktxbb_valuearray[6] = 0x07;
1118
priv->cck_txbbgain_table[4].ccktxbb_valuearray[7] = 0x03;
1120
priv->cck_txbbgain_table[5].ccktxbb_valuearray[0] = 0x28;
1121
priv->cck_txbbgain_table[5].ccktxbb_valuearray[1] = 0x28;
1122
priv->cck_txbbgain_table[5].ccktxbb_valuearray[2] = 0x22;
1123
priv->cck_txbbgain_table[5].ccktxbb_valuearray[3] = 0x1c;
1124
priv->cck_txbbgain_table[5].ccktxbb_valuearray[4] = 0x15;
1125
priv->cck_txbbgain_table[5].ccktxbb_valuearray[5] = 0x0d;
1126
priv->cck_txbbgain_table[5].ccktxbb_valuearray[6] = 0x07;
1127
priv->cck_txbbgain_table[5].ccktxbb_valuearray[7] = 0x03;
1129
priv->cck_txbbgain_table[6].ccktxbb_valuearray[0] = 0x26;
1130
priv->cck_txbbgain_table[6].ccktxbb_valuearray[1] = 0x25;
1131
priv->cck_txbbgain_table[6].ccktxbb_valuearray[2] = 0x21;
1132
priv->cck_txbbgain_table[6].ccktxbb_valuearray[3] = 0x1b;
1133
priv->cck_txbbgain_table[6].ccktxbb_valuearray[4] = 0x14;
1134
priv->cck_txbbgain_table[6].ccktxbb_valuearray[5] = 0x0d;
1135
priv->cck_txbbgain_table[6].ccktxbb_valuearray[6] = 0x06;
1136
priv->cck_txbbgain_table[6].ccktxbb_valuearray[7] = 0x03;
1138
priv->cck_txbbgain_table[7].ccktxbb_valuearray[0] = 0x24;
1139
priv->cck_txbbgain_table[7].ccktxbb_valuearray[1] = 0x23;
1140
priv->cck_txbbgain_table[7].ccktxbb_valuearray[2] = 0x1f;
1141
priv->cck_txbbgain_table[7].ccktxbb_valuearray[3] = 0x19;
1142
priv->cck_txbbgain_table[7].ccktxbb_valuearray[4] = 0x13;
1143
priv->cck_txbbgain_table[7].ccktxbb_valuearray[5] = 0x0c;
1144
priv->cck_txbbgain_table[7].ccktxbb_valuearray[6] = 0x06;
1145
priv->cck_txbbgain_table[7].ccktxbb_valuearray[7] = 0x03;
1147
priv->cck_txbbgain_table[8].ccktxbb_valuearray[0] = 0x22;
1148
priv->cck_txbbgain_table[8].ccktxbb_valuearray[1] = 0x21;
1149
priv->cck_txbbgain_table[8].ccktxbb_valuearray[2] = 0x1d;
1150
priv->cck_txbbgain_table[8].ccktxbb_valuearray[3] = 0x18;
1151
priv->cck_txbbgain_table[8].ccktxbb_valuearray[4] = 0x11;
1152
priv->cck_txbbgain_table[8].ccktxbb_valuearray[5] = 0x0b;
1153
priv->cck_txbbgain_table[8].ccktxbb_valuearray[6] = 0x06;
1154
priv->cck_txbbgain_table[8].ccktxbb_valuearray[7] = 0x02;
1156
priv->cck_txbbgain_table[9].ccktxbb_valuearray[0] = 0x20;
1157
priv->cck_txbbgain_table[9].ccktxbb_valuearray[1] = 0x20;
1158
priv->cck_txbbgain_table[9].ccktxbb_valuearray[2] = 0x1b;
1159
priv->cck_txbbgain_table[9].ccktxbb_valuearray[3] = 0x16;
1160
priv->cck_txbbgain_table[9].ccktxbb_valuearray[4] = 0x11;
1161
priv->cck_txbbgain_table[9].ccktxbb_valuearray[5] = 0x08;
1162
priv->cck_txbbgain_table[9].ccktxbb_valuearray[6] = 0x05;
1163
priv->cck_txbbgain_table[9].ccktxbb_valuearray[7] = 0x02;
1165
priv->cck_txbbgain_table[10].ccktxbb_valuearray[0] = 0x1f;
1166
priv->cck_txbbgain_table[10].ccktxbb_valuearray[1] = 0x1e;
1167
priv->cck_txbbgain_table[10].ccktxbb_valuearray[2] = 0x1a;
1168
priv->cck_txbbgain_table[10].ccktxbb_valuearray[3] = 0x15;
1169
priv->cck_txbbgain_table[10].ccktxbb_valuearray[4] = 0x10;
1170
priv->cck_txbbgain_table[10].ccktxbb_valuearray[5] = 0x0a;
1171
priv->cck_txbbgain_table[10].ccktxbb_valuearray[6] = 0x05;
1172
priv->cck_txbbgain_table[10].ccktxbb_valuearray[7] = 0x02;
1174
priv->cck_txbbgain_table[11].ccktxbb_valuearray[0] = 0x1d;
1175
priv->cck_txbbgain_table[11].ccktxbb_valuearray[1] = 0x1c;
1176
priv->cck_txbbgain_table[11].ccktxbb_valuearray[2] = 0x18;
1177
priv->cck_txbbgain_table[11].ccktxbb_valuearray[3] = 0x14;
1178
priv->cck_txbbgain_table[11].ccktxbb_valuearray[4] = 0x0f;
1179
priv->cck_txbbgain_table[11].ccktxbb_valuearray[5] = 0x0a;
1180
priv->cck_txbbgain_table[11].ccktxbb_valuearray[6] = 0x05;
1181
priv->cck_txbbgain_table[11].ccktxbb_valuearray[7] = 0x02;
1183
priv->cck_txbbgain_table[12].ccktxbb_valuearray[0] = 0x1b;
1184
priv->cck_txbbgain_table[12].ccktxbb_valuearray[1] = 0x1a;
1185
priv->cck_txbbgain_table[12].ccktxbb_valuearray[2] = 0x17;
1186
priv->cck_txbbgain_table[12].ccktxbb_valuearray[3] = 0x13;
1187
priv->cck_txbbgain_table[12].ccktxbb_valuearray[4] = 0x0e;
1188
priv->cck_txbbgain_table[12].ccktxbb_valuearray[5] = 0x09;
1189
priv->cck_txbbgain_table[12].ccktxbb_valuearray[6] = 0x04;
1190
priv->cck_txbbgain_table[12].ccktxbb_valuearray[7] = 0x02;
1192
priv->cck_txbbgain_table[13].ccktxbb_valuearray[0] = 0x1a;
1193
priv->cck_txbbgain_table[13].ccktxbb_valuearray[1] = 0x19;
1194
priv->cck_txbbgain_table[13].ccktxbb_valuearray[2] = 0x16;
1195
priv->cck_txbbgain_table[13].ccktxbb_valuearray[3] = 0x12;
1196
priv->cck_txbbgain_table[13].ccktxbb_valuearray[4] = 0x0d;
1197
priv->cck_txbbgain_table[13].ccktxbb_valuearray[5] = 0x09;
1198
priv->cck_txbbgain_table[13].ccktxbb_valuearray[6] = 0x04;
1199
priv->cck_txbbgain_table[13].ccktxbb_valuearray[7] = 0x02;
1201
priv->cck_txbbgain_table[14].ccktxbb_valuearray[0] = 0x18;
1202
priv->cck_txbbgain_table[14].ccktxbb_valuearray[1] = 0x17;
1203
priv->cck_txbbgain_table[14].ccktxbb_valuearray[2] = 0x15;
1204
priv->cck_txbbgain_table[14].ccktxbb_valuearray[3] = 0x11;
1205
priv->cck_txbbgain_table[14].ccktxbb_valuearray[4] = 0x0c;
1206
priv->cck_txbbgain_table[14].ccktxbb_valuearray[5] = 0x08;
1207
priv->cck_txbbgain_table[14].ccktxbb_valuearray[6] = 0x04;
1208
priv->cck_txbbgain_table[14].ccktxbb_valuearray[7] = 0x02;
1210
priv->cck_txbbgain_table[15].ccktxbb_valuearray[0] = 0x17;
1211
priv->cck_txbbgain_table[15].ccktxbb_valuearray[1] = 0x16;
1212
priv->cck_txbbgain_table[15].ccktxbb_valuearray[2] = 0x13;
1213
priv->cck_txbbgain_table[15].ccktxbb_valuearray[3] = 0x10;
1214
priv->cck_txbbgain_table[15].ccktxbb_valuearray[4] = 0x0c;
1215
priv->cck_txbbgain_table[15].ccktxbb_valuearray[5] = 0x08;
1216
priv->cck_txbbgain_table[15].ccktxbb_valuearray[6] = 0x04;
1217
priv->cck_txbbgain_table[15].ccktxbb_valuearray[7] = 0x02;
1219
priv->cck_txbbgain_table[16].ccktxbb_valuearray[0] = 0x16;
1220
priv->cck_txbbgain_table[16].ccktxbb_valuearray[1] = 0x15;
1221
priv->cck_txbbgain_table[16].ccktxbb_valuearray[2] = 0x12;
1222
priv->cck_txbbgain_table[16].ccktxbb_valuearray[3] = 0x0f;
1223
priv->cck_txbbgain_table[16].ccktxbb_valuearray[4] = 0x0b;
1224
priv->cck_txbbgain_table[16].ccktxbb_valuearray[5] = 0x07;
1225
priv->cck_txbbgain_table[16].ccktxbb_valuearray[6] = 0x04;
1226
priv->cck_txbbgain_table[16].ccktxbb_valuearray[7] = 0x01;
1228
priv->cck_txbbgain_table[17].ccktxbb_valuearray[0] = 0x14;
1229
priv->cck_txbbgain_table[17].ccktxbb_valuearray[1] = 0x14;
1230
priv->cck_txbbgain_table[17].ccktxbb_valuearray[2] = 0x11;
1231
priv->cck_txbbgain_table[17].ccktxbb_valuearray[3] = 0x0e;
1232
priv->cck_txbbgain_table[17].ccktxbb_valuearray[4] = 0x0b;
1233
priv->cck_txbbgain_table[17].ccktxbb_valuearray[5] = 0x07;
1234
priv->cck_txbbgain_table[17].ccktxbb_valuearray[6] = 0x03;
1235
priv->cck_txbbgain_table[17].ccktxbb_valuearray[7] = 0x02;
1237
priv->cck_txbbgain_table[18].ccktxbb_valuearray[0] = 0x13;
1238
priv->cck_txbbgain_table[18].ccktxbb_valuearray[1] = 0x13;
1239
priv->cck_txbbgain_table[18].ccktxbb_valuearray[2] = 0x10;
1240
priv->cck_txbbgain_table[18].ccktxbb_valuearray[3] = 0x0d;
1241
priv->cck_txbbgain_table[18].ccktxbb_valuearray[4] = 0x0a;
1242
priv->cck_txbbgain_table[18].ccktxbb_valuearray[5] = 0x06;
1243
priv->cck_txbbgain_table[18].ccktxbb_valuearray[6] = 0x03;
1244
priv->cck_txbbgain_table[18].ccktxbb_valuearray[7] = 0x01;
1246
priv->cck_txbbgain_table[19].ccktxbb_valuearray[0] = 0x12;
1247
priv->cck_txbbgain_table[19].ccktxbb_valuearray[1] = 0x12;
1248
priv->cck_txbbgain_table[19].ccktxbb_valuearray[2] = 0x0f;
1249
priv->cck_txbbgain_table[19].ccktxbb_valuearray[3] = 0x0c;
1250
priv->cck_txbbgain_table[19].ccktxbb_valuearray[4] = 0x09;
1251
priv->cck_txbbgain_table[19].ccktxbb_valuearray[5] = 0x06;
1252
priv->cck_txbbgain_table[19].ccktxbb_valuearray[6] = 0x03;
1253
priv->cck_txbbgain_table[19].ccktxbb_valuearray[7] = 0x01;
1255
priv->cck_txbbgain_table[20].ccktxbb_valuearray[0] = 0x11;
1256
priv->cck_txbbgain_table[20].ccktxbb_valuearray[1] = 0x11;
1257
priv->cck_txbbgain_table[20].ccktxbb_valuearray[2] = 0x0f;
1258
priv->cck_txbbgain_table[20].ccktxbb_valuearray[3] = 0x0c;
1259
priv->cck_txbbgain_table[20].ccktxbb_valuearray[4] = 0x09;
1260
priv->cck_txbbgain_table[20].ccktxbb_valuearray[5] = 0x06;
1261
priv->cck_txbbgain_table[20].ccktxbb_valuearray[6] = 0x03;
1262
priv->cck_txbbgain_table[20].ccktxbb_valuearray[7] = 0x01;
1264
priv->cck_txbbgain_table[21].ccktxbb_valuearray[0] = 0x10;
1265
priv->cck_txbbgain_table[21].ccktxbb_valuearray[1] = 0x10;
1266
priv->cck_txbbgain_table[21].ccktxbb_valuearray[2] = 0x0e;
1267
priv->cck_txbbgain_table[21].ccktxbb_valuearray[3] = 0x0b;
1268
priv->cck_txbbgain_table[21].ccktxbb_valuearray[4] = 0x08;
1269
priv->cck_txbbgain_table[21].ccktxbb_valuearray[5] = 0x05;
1270
priv->cck_txbbgain_table[21].ccktxbb_valuearray[6] = 0x03;
1271
priv->cck_txbbgain_table[21].ccktxbb_valuearray[7] = 0x01;
1273
priv->cck_txbbgain_table[22].ccktxbb_valuearray[0] = 0x0f;
1274
priv->cck_txbbgain_table[22].ccktxbb_valuearray[1] = 0x0f;
1275
priv->cck_txbbgain_table[22].ccktxbb_valuearray[2] = 0x0d;
1276
priv->cck_txbbgain_table[22].ccktxbb_valuearray[3] = 0x0b;
1277
priv->cck_txbbgain_table[22].ccktxbb_valuearray[4] = 0x08;
1278
priv->cck_txbbgain_table[22].ccktxbb_valuearray[5] = 0x05;
1279
priv->cck_txbbgain_table[22].ccktxbb_valuearray[6] = 0x03;
1280
priv->cck_txbbgain_table[22].ccktxbb_valuearray[7] = 0x01;
1282
//ccktxbb_valuearray[0] is 0xA22 [1] is 0xA24 ...[7] is 0xA29
1283
//This Table is for CH14
1284
priv->cck_txbbgain_ch14_table[0].ccktxbb_valuearray[0] = 0x36;
1285
priv->cck_txbbgain_ch14_table[0].ccktxbb_valuearray[1] = 0x35;
1286
priv->cck_txbbgain_ch14_table[0].ccktxbb_valuearray[2] = 0x2e;
1287
priv->cck_txbbgain_ch14_table[0].ccktxbb_valuearray[3] = 0x1b;
1288
priv->cck_txbbgain_ch14_table[0].ccktxbb_valuearray[4] = 0x00;
1289
priv->cck_txbbgain_ch14_table[0].ccktxbb_valuearray[5] = 0x00;
1290
priv->cck_txbbgain_ch14_table[0].ccktxbb_valuearray[6] = 0x00;
1291
priv->cck_txbbgain_ch14_table[0].ccktxbb_valuearray[7] = 0x00;
1293
priv->cck_txbbgain_ch14_table[1].ccktxbb_valuearray[0] = 0x33;
1294
priv->cck_txbbgain_ch14_table[1].ccktxbb_valuearray[1] = 0x32;
1295
priv->cck_txbbgain_ch14_table[1].ccktxbb_valuearray[2] = 0x2b;
1296
priv->cck_txbbgain_ch14_table[1].ccktxbb_valuearray[3] = 0x19;
1297
priv->cck_txbbgain_ch14_table[1].ccktxbb_valuearray[4] = 0x00;
1298
priv->cck_txbbgain_ch14_table[1].ccktxbb_valuearray[5] = 0x00;
1299
priv->cck_txbbgain_ch14_table[1].ccktxbb_valuearray[6] = 0x00;
1300
priv->cck_txbbgain_ch14_table[1].ccktxbb_valuearray[7] = 0x00;
1302
priv->cck_txbbgain_ch14_table[2].ccktxbb_valuearray[0] = 0x30;
1303
priv->cck_txbbgain_ch14_table[2].ccktxbb_valuearray[1] = 0x2f;
1304
priv->cck_txbbgain_ch14_table[2].ccktxbb_valuearray[2] = 0x29;
1305
priv->cck_txbbgain_ch14_table[2].ccktxbb_valuearray[3] = 0x18;
1306
priv->cck_txbbgain_ch14_table[2].ccktxbb_valuearray[4] = 0x00;
1307
priv->cck_txbbgain_ch14_table[2].ccktxbb_valuearray[5] = 0x00;
1308
priv->cck_txbbgain_ch14_table[2].ccktxbb_valuearray[6] = 0x00;
1309
priv->cck_txbbgain_ch14_table[2].ccktxbb_valuearray[7] = 0x00;
1311
priv->cck_txbbgain_ch14_table[3].ccktxbb_valuearray[0] = 0x2d;
1312
priv->cck_txbbgain_ch14_table[3].ccktxbb_valuearray[1] = 0x2d;
1313
priv->cck_txbbgain_ch14_table[3].ccktxbb_valuearray[2] = 0x27;
1314
priv->cck_txbbgain_ch14_table[3].ccktxbb_valuearray[3] = 0x17;
1315
priv->cck_txbbgain_ch14_table[3].ccktxbb_valuearray[4] = 0x00;
1316
priv->cck_txbbgain_ch14_table[3].ccktxbb_valuearray[5] = 0x00;
1317
priv->cck_txbbgain_ch14_table[3].ccktxbb_valuearray[6] = 0x00;
1318
priv->cck_txbbgain_ch14_table[3].ccktxbb_valuearray[7] = 0x00;
1320
priv->cck_txbbgain_ch14_table[4].ccktxbb_valuearray[0] = 0x2b;
1321
priv->cck_txbbgain_ch14_table[4].ccktxbb_valuearray[1] = 0x2a;
1322
priv->cck_txbbgain_ch14_table[4].ccktxbb_valuearray[2] = 0x25;
1323
priv->cck_txbbgain_ch14_table[4].ccktxbb_valuearray[3] = 0x15;
1324
priv->cck_txbbgain_ch14_table[4].ccktxbb_valuearray[4] = 0x00;
1325
priv->cck_txbbgain_ch14_table[4].ccktxbb_valuearray[5] = 0x00;
1326
priv->cck_txbbgain_ch14_table[4].ccktxbb_valuearray[6] = 0x00;
1327
priv->cck_txbbgain_ch14_table[4].ccktxbb_valuearray[7] = 0x00;
1329
priv->cck_txbbgain_ch14_table[5].ccktxbb_valuearray[0] = 0x28;
1330
priv->cck_txbbgain_ch14_table[5].ccktxbb_valuearray[1] = 0x28;
1331
priv->cck_txbbgain_ch14_table[5].ccktxbb_valuearray[2] = 0x22;
1332
priv->cck_txbbgain_ch14_table[5].ccktxbb_valuearray[3] = 0x14;
1333
priv->cck_txbbgain_ch14_table[5].ccktxbb_valuearray[4] = 0x00;
1334
priv->cck_txbbgain_ch14_table[5].ccktxbb_valuearray[5] = 0x00;
1335
priv->cck_txbbgain_ch14_table[5].ccktxbb_valuearray[6] = 0x00;
1336
priv->cck_txbbgain_ch14_table[5].ccktxbb_valuearray[7] = 0x00;
1338
priv->cck_txbbgain_ch14_table[6].ccktxbb_valuearray[0] = 0x26;
1339
priv->cck_txbbgain_ch14_table[6].ccktxbb_valuearray[1] = 0x25;
1340
priv->cck_txbbgain_ch14_table[6].ccktxbb_valuearray[2] = 0x21;
1341
priv->cck_txbbgain_ch14_table[6].ccktxbb_valuearray[3] = 0x13;
1342
priv->cck_txbbgain_ch14_table[6].ccktxbb_valuearray[4] = 0x00;
1343
priv->cck_txbbgain_ch14_table[6].ccktxbb_valuearray[5] = 0x00;
1344
priv->cck_txbbgain_ch14_table[6].ccktxbb_valuearray[6] = 0x00;
1345
priv->cck_txbbgain_ch14_table[6].ccktxbb_valuearray[7] = 0x00;
1347
priv->cck_txbbgain_ch14_table[7].ccktxbb_valuearray[0] = 0x24;
1348
priv->cck_txbbgain_ch14_table[7].ccktxbb_valuearray[1] = 0x23;
1349
priv->cck_txbbgain_ch14_table[7].ccktxbb_valuearray[2] = 0x1f;
1350
priv->cck_txbbgain_ch14_table[7].ccktxbb_valuearray[3] = 0x12;
1351
priv->cck_txbbgain_ch14_table[7].ccktxbb_valuearray[4] = 0x00;
1352
priv->cck_txbbgain_ch14_table[7].ccktxbb_valuearray[5] = 0x00;
1353
priv->cck_txbbgain_ch14_table[7].ccktxbb_valuearray[6] = 0x00;
1354
priv->cck_txbbgain_ch14_table[7].ccktxbb_valuearray[7] = 0x00;
1356
priv->cck_txbbgain_ch14_table[8].ccktxbb_valuearray[0] = 0x22;
1357
priv->cck_txbbgain_ch14_table[8].ccktxbb_valuearray[1] = 0x21;
1358
priv->cck_txbbgain_ch14_table[8].ccktxbb_valuearray[2] = 0x1d;
1359
priv->cck_txbbgain_ch14_table[8].ccktxbb_valuearray[3] = 0x11;
1360
priv->cck_txbbgain_ch14_table[8].ccktxbb_valuearray[4] = 0x00;
1361
priv->cck_txbbgain_ch14_table[8].ccktxbb_valuearray[5] = 0x00;
1362
priv->cck_txbbgain_ch14_table[8].ccktxbb_valuearray[6] = 0x00;
1363
priv->cck_txbbgain_ch14_table[8].ccktxbb_valuearray[7] = 0x00;
1365
priv->cck_txbbgain_ch14_table[9].ccktxbb_valuearray[0] = 0x20;
1366
priv->cck_txbbgain_ch14_table[9].ccktxbb_valuearray[1] = 0x20;
1367
priv->cck_txbbgain_ch14_table[9].ccktxbb_valuearray[2] = 0x1b;
1368
priv->cck_txbbgain_ch14_table[9].ccktxbb_valuearray[3] = 0x10;
1369
priv->cck_txbbgain_ch14_table[9].ccktxbb_valuearray[4] = 0x00;
1370
priv->cck_txbbgain_ch14_table[9].ccktxbb_valuearray[5] = 0x00;
1371
priv->cck_txbbgain_ch14_table[9].ccktxbb_valuearray[6] = 0x00;
1372
priv->cck_txbbgain_ch14_table[9].ccktxbb_valuearray[7] = 0x00;
1374
priv->cck_txbbgain_ch14_table[10].ccktxbb_valuearray[0] = 0x1f;
1375
priv->cck_txbbgain_ch14_table[10].ccktxbb_valuearray[1] = 0x1e;
1376
priv->cck_txbbgain_ch14_table[10].ccktxbb_valuearray[2] = 0x1a;
1377
priv->cck_txbbgain_ch14_table[10].ccktxbb_valuearray[3] = 0x0f;
1378
priv->cck_txbbgain_ch14_table[10].ccktxbb_valuearray[4] = 0x00;
1379
priv->cck_txbbgain_ch14_table[10].ccktxbb_valuearray[5] = 0x00;
1380
priv->cck_txbbgain_ch14_table[10].ccktxbb_valuearray[6] = 0x00;
1381
priv->cck_txbbgain_ch14_table[10].ccktxbb_valuearray[7] = 0x00;
1383
priv->cck_txbbgain_ch14_table[11].ccktxbb_valuearray[0] = 0x1d;
1384
priv->cck_txbbgain_ch14_table[11].ccktxbb_valuearray[1] = 0x1c;
1385
priv->cck_txbbgain_ch14_table[11].ccktxbb_valuearray[2] = 0x18;
1386
priv->cck_txbbgain_ch14_table[11].ccktxbb_valuearray[3] = 0x0e;
1387
priv->cck_txbbgain_ch14_table[11].ccktxbb_valuearray[4] = 0x00;
1388
priv->cck_txbbgain_ch14_table[11].ccktxbb_valuearray[5] = 0x00;
1389
priv->cck_txbbgain_ch14_table[11].ccktxbb_valuearray[6] = 0x00;
1390
priv->cck_txbbgain_ch14_table[11].ccktxbb_valuearray[7] = 0x00;
1392
priv->cck_txbbgain_ch14_table[12].ccktxbb_valuearray[0] = 0x1b;
1393
priv->cck_txbbgain_ch14_table[12].ccktxbb_valuearray[1] = 0x1a;
1394
priv->cck_txbbgain_ch14_table[12].ccktxbb_valuearray[2] = 0x17;
1395
priv->cck_txbbgain_ch14_table[12].ccktxbb_valuearray[3] = 0x0e;
1396
priv->cck_txbbgain_ch14_table[12].ccktxbb_valuearray[4] = 0x00;
1397
priv->cck_txbbgain_ch14_table[12].ccktxbb_valuearray[5] = 0x00;
1398
priv->cck_txbbgain_ch14_table[12].ccktxbb_valuearray[6] = 0x00;
1399
priv->cck_txbbgain_ch14_table[12].ccktxbb_valuearray[7] = 0x00;
1401
priv->cck_txbbgain_ch14_table[13].ccktxbb_valuearray[0] = 0x1a;
1402
priv->cck_txbbgain_ch14_table[13].ccktxbb_valuearray[1] = 0x19;
1403
priv->cck_txbbgain_ch14_table[13].ccktxbb_valuearray[2] = 0x16;
1404
priv->cck_txbbgain_ch14_table[13].ccktxbb_valuearray[3] = 0x0d;
1405
priv->cck_txbbgain_ch14_table[13].ccktxbb_valuearray[4] = 0x00;
1406
priv->cck_txbbgain_ch14_table[13].ccktxbb_valuearray[5] = 0x00;
1407
priv->cck_txbbgain_ch14_table[13].ccktxbb_valuearray[6] = 0x00;
1408
priv->cck_txbbgain_ch14_table[13].ccktxbb_valuearray[7] = 0x00;
1410
priv->cck_txbbgain_ch14_table[14].ccktxbb_valuearray[0] = 0x18;
1411
priv->cck_txbbgain_ch14_table[14].ccktxbb_valuearray[1] = 0x17;
1412
priv->cck_txbbgain_ch14_table[14].ccktxbb_valuearray[2] = 0x15;
1413
priv->cck_txbbgain_ch14_table[14].ccktxbb_valuearray[3] = 0x0c;
1414
priv->cck_txbbgain_ch14_table[14].ccktxbb_valuearray[4] = 0x00;
1415
priv->cck_txbbgain_ch14_table[14].ccktxbb_valuearray[5] = 0x00;
1416
priv->cck_txbbgain_ch14_table[14].ccktxbb_valuearray[6] = 0x00;
1417
priv->cck_txbbgain_ch14_table[14].ccktxbb_valuearray[7] = 0x00;
1419
priv->cck_txbbgain_ch14_table[15].ccktxbb_valuearray[0] = 0x17;
1420
priv->cck_txbbgain_ch14_table[15].ccktxbb_valuearray[1] = 0x16;
1421
priv->cck_txbbgain_ch14_table[15].ccktxbb_valuearray[2] = 0x13;
1422
priv->cck_txbbgain_ch14_table[15].ccktxbb_valuearray[3] = 0x0b;
1423
priv->cck_txbbgain_ch14_table[15].ccktxbb_valuearray[4] = 0x00;
1424
priv->cck_txbbgain_ch14_table[15].ccktxbb_valuearray[5] = 0x00;
1425
priv->cck_txbbgain_ch14_table[15].ccktxbb_valuearray[6] = 0x00;
1426
priv->cck_txbbgain_ch14_table[15].ccktxbb_valuearray[7] = 0x00;
1428
priv->cck_txbbgain_ch14_table[16].ccktxbb_valuearray[0] = 0x16;
1429
priv->cck_txbbgain_ch14_table[16].ccktxbb_valuearray[1] = 0x15;
1430
priv->cck_txbbgain_ch14_table[16].ccktxbb_valuearray[2] = 0x12;
1431
priv->cck_txbbgain_ch14_table[16].ccktxbb_valuearray[3] = 0x0b;
1432
priv->cck_txbbgain_ch14_table[16].ccktxbb_valuearray[4] = 0x00;
1433
priv->cck_txbbgain_ch14_table[16].ccktxbb_valuearray[5] = 0x00;
1434
priv->cck_txbbgain_ch14_table[16].ccktxbb_valuearray[6] = 0x00;
1435
priv->cck_txbbgain_ch14_table[16].ccktxbb_valuearray[7] = 0x00;
1437
priv->cck_txbbgain_ch14_table[17].ccktxbb_valuearray[0] = 0x14;
1438
priv->cck_txbbgain_ch14_table[17].ccktxbb_valuearray[1] = 0x14;
1439
priv->cck_txbbgain_ch14_table[17].ccktxbb_valuearray[2] = 0x11;
1440
priv->cck_txbbgain_ch14_table[17].ccktxbb_valuearray[3] = 0x0a;
1441
priv->cck_txbbgain_ch14_table[17].ccktxbb_valuearray[4] = 0x00;
1442
priv->cck_txbbgain_ch14_table[17].ccktxbb_valuearray[5] = 0x00;
1443
priv->cck_txbbgain_ch14_table[17].ccktxbb_valuearray[6] = 0x00;
1444
priv->cck_txbbgain_ch14_table[17].ccktxbb_valuearray[7] = 0x00;
1446
priv->cck_txbbgain_ch14_table[18].ccktxbb_valuearray[0] = 0x13;
1447
priv->cck_txbbgain_ch14_table[18].ccktxbb_valuearray[1] = 0x13;
1448
priv->cck_txbbgain_ch14_table[18].ccktxbb_valuearray[2] = 0x10;
1449
priv->cck_txbbgain_ch14_table[18].ccktxbb_valuearray[3] = 0x0a;
1450
priv->cck_txbbgain_ch14_table[18].ccktxbb_valuearray[4] = 0x00;
1451
priv->cck_txbbgain_ch14_table[18].ccktxbb_valuearray[5] = 0x00;
1452
priv->cck_txbbgain_ch14_table[18].ccktxbb_valuearray[6] = 0x00;
1453
priv->cck_txbbgain_ch14_table[18].ccktxbb_valuearray[7] = 0x00;
1455
priv->cck_txbbgain_ch14_table[19].ccktxbb_valuearray[0] = 0x12;
1456
priv->cck_txbbgain_ch14_table[19].ccktxbb_valuearray[1] = 0x12;
1457
priv->cck_txbbgain_ch14_table[19].ccktxbb_valuearray[2] = 0x0f;
1458
priv->cck_txbbgain_ch14_table[19].ccktxbb_valuearray[3] = 0x09;
1459
priv->cck_txbbgain_ch14_table[19].ccktxbb_valuearray[4] = 0x00;
1460
priv->cck_txbbgain_ch14_table[19].ccktxbb_valuearray[5] = 0x00;
1461
priv->cck_txbbgain_ch14_table[19].ccktxbb_valuearray[6] = 0x00;
1462
priv->cck_txbbgain_ch14_table[19].ccktxbb_valuearray[7] = 0x00;
1464
priv->cck_txbbgain_ch14_table[20].ccktxbb_valuearray[0] = 0x11;
1465
priv->cck_txbbgain_ch14_table[20].ccktxbb_valuearray[1] = 0x11;
1466
priv->cck_txbbgain_ch14_table[20].ccktxbb_valuearray[2] = 0x0f;
1467
priv->cck_txbbgain_ch14_table[20].ccktxbb_valuearray[3] = 0x09;
1468
priv->cck_txbbgain_ch14_table[20].ccktxbb_valuearray[4] = 0x00;
1469
priv->cck_txbbgain_ch14_table[20].ccktxbb_valuearray[5] = 0x00;
1470
priv->cck_txbbgain_ch14_table[20].ccktxbb_valuearray[6] = 0x00;
1471
priv->cck_txbbgain_ch14_table[20].ccktxbb_valuearray[7] = 0x00;
1473
priv->cck_txbbgain_ch14_table[21].ccktxbb_valuearray[0] = 0x10;
1474
priv->cck_txbbgain_ch14_table[21].ccktxbb_valuearray[1] = 0x10;
1475
priv->cck_txbbgain_ch14_table[21].ccktxbb_valuearray[2] = 0x0e;
1476
priv->cck_txbbgain_ch14_table[21].ccktxbb_valuearray[3] = 0x08;
1477
priv->cck_txbbgain_ch14_table[21].ccktxbb_valuearray[4] = 0x00;
1478
priv->cck_txbbgain_ch14_table[21].ccktxbb_valuearray[5] = 0x00;
1479
priv->cck_txbbgain_ch14_table[21].ccktxbb_valuearray[6] = 0x00;
1480
priv->cck_txbbgain_ch14_table[21].ccktxbb_valuearray[7] = 0x00;
1482
priv->cck_txbbgain_ch14_table[22].ccktxbb_valuearray[0] = 0x0f;
1483
priv->cck_txbbgain_ch14_table[22].ccktxbb_valuearray[1] = 0x0f;
1484
priv->cck_txbbgain_ch14_table[22].ccktxbb_valuearray[2] = 0x0d;
1485
priv->cck_txbbgain_ch14_table[22].ccktxbb_valuearray[3] = 0x08;
1486
priv->cck_txbbgain_ch14_table[22].ccktxbb_valuearray[4] = 0x00;
1487
priv->cck_txbbgain_ch14_table[22].ccktxbb_valuearray[5] = 0x00;
1488
priv->cck_txbbgain_ch14_table[22].ccktxbb_valuearray[6] = 0x00;
1489
priv->cck_txbbgain_ch14_table[22].ccktxbb_valuearray[7] = 0x00;
898
priv->txbbgain_table = rtl8192_txbbgain_table;
899
priv->cck_txbbgain_table = rtl8192_cck_txbbgain_table;
900
priv->cck_txbbgain_ch14_table = rtl8192_cck_txbbgain_ch14_table;
1491
902
priv->btxpower_tracking = TRUE;
1492
903
priv->txpower_count = 0;
1493
904
priv->btxpower_trackingInit = FALSE;
1497
static void dm_InitializeTXPowerTracking_ThermalMeter(struct net_device *dev)
908
static void dm_InitializeTXPowerTracking_ThermalMeter(struct r8192_priv *priv)
1499
struct r8192_priv *priv = ieee80211_priv(dev);
1501
910
// Tx Power tracking by Theremal Meter require Firmware R/W 3-wire. This mechanism
1502
911
// can be enabled only when Firmware R/W 3-wire is enabled. Otherwise, frequent r/w
1503
912
// 3-wire by driver cause RF goes into wrong state.
1706
1089
TempVal = CCKSwingTable_Ch14[priv->CCK_index][6] +
1707
1090
(CCKSwingTable_Ch14[priv->CCK_index][7]<<8) ;
1709
rtl8192_setBBreg(dev, rCCK0_DebugPort, bMaskLWord, TempVal);
1092
rtl8192_setBBreg(priv, rCCK0_DebugPort, bMaskLWord, TempVal);
1710
1093
RT_TRACE(COMP_POWER_TRACKING,"CCK chnl 14, reg 0x%x = 0x%x\n",
1711
1094
rCCK0_DebugPort, TempVal);
1717
void dm_cck_txpower_adjust(struct net_device *dev, bool binch14)
1098
void dm_cck_txpower_adjust(struct r8192_priv *priv, bool binch14)
1720
struct r8192_priv *priv = ieee80211_priv(dev);
1723
dm_CCKTxPowerAdjust_TSSI(dev, binch14);
1725
1100
if(priv->IC_Cut >= IC_VersionCut_D)
1726
dm_CCKTxPowerAdjust_TSSI(dev, binch14);
1101
dm_CCKTxPowerAdjust_TSSI(priv, binch14);
1728
dm_CCKTxPowerAdjust_ThermalMeter(dev, binch14);
1734
static void dm_txpower_reset_recovery(
1735
struct net_device *dev
1738
struct r8192_priv *priv = ieee80211_priv(dev);
1740
RT_TRACE(COMP_POWER_TRACKING, "Start Reset Recovery ==>\n");
1741
rtl8192_setBBreg(dev, rOFDM0_XATxIQImbalance, bMaskDWord, priv->txbbgain_table[priv->rfa_txpowertrackingindex].txbbgain_value);
1742
RT_TRACE(COMP_POWER_TRACKING, "Reset Recovery: Fill in 0xc80 is %08x\n",priv->txbbgain_table[priv->rfa_txpowertrackingindex].txbbgain_value);
1743
RT_TRACE(COMP_POWER_TRACKING, "Reset Recovery: Fill in RFA_txPowerTrackingIndex is %x\n",priv->rfa_txpowertrackingindex);
1744
RT_TRACE(COMP_POWER_TRACKING, "Reset Recovery : RF A I/Q Amplify Gain is %ld\n",priv->txbbgain_table[priv->rfa_txpowertrackingindex].txbb_iq_amplifygain);
1745
RT_TRACE(COMP_POWER_TRACKING, "Reset Recovery: CCK Attenuation is %d dB\n",priv->CCKPresentAttentuation);
1746
dm_cck_txpower_adjust(dev,priv->bcck_in_ch14);
1748
rtl8192_setBBreg(dev, rOFDM0_XCTxIQImbalance, bMaskDWord, priv->txbbgain_table[priv->rfc_txpowertrackingindex].txbbgain_value);
1749
RT_TRACE(COMP_POWER_TRACKING, "Reset Recovery: Fill in 0xc90 is %08x\n",priv->txbbgain_table[priv->rfc_txpowertrackingindex].txbbgain_value);
1750
RT_TRACE(COMP_POWER_TRACKING, "Reset Recovery: Fill in RFC_txPowerTrackingIndex is %x\n",priv->rfc_txpowertrackingindex);
1751
RT_TRACE(COMP_POWER_TRACKING, "Reset Recovery : RF C I/Q Amplify Gain is %ld\n",priv->txbbgain_table[priv->rfc_txpowertrackingindex].txbb_iq_amplifygain);
1755
void dm_restore_dynamic_mechanism_state(struct net_device *dev)
1757
struct r8192_priv *priv = ieee80211_priv(dev);
1758
u32 reg_ratr = priv->rate_adaptive.last_ratr;
1762
RT_TRACE(COMP_RATE, "<---- dm_restore_dynamic_mechanism_state(): driver is going to unload\n");
1767
// Restore previous state for rate adaptive
1769
if(priv->rate_adaptive.rate_adaptive_disabled)
1771
// TODO: Only 11n mode is implemented currently,
1772
if( !(priv->ieee80211->mode==WIRELESS_MODE_N_24G ||
1773
priv->ieee80211->mode==WIRELESS_MODE_N_5G))
1776
/* 2007/11/15 MH Copy from 8190PCI. */
1778
ratr_value = reg_ratr;
1779
if(priv->rf_type == RF_1T2R) // 1T2R, Spatial Stream 2 should be disabled
1781
ratr_value &=~ (RATE_ALL_OFDM_2SS);
1782
//DbgPrint("HW_VAR_TATR_0 from 0x%x ==> 0x%x\n", ((pu4Byte)(val))[0], ratr_value);
1784
//DbgPrint("set HW_VAR_TATR_0 = 0x%x\n", ratr_value);
1785
//cosa PlatformEFIOWrite4Byte(Adapter, RATR0, ((pu4Byte)(val))[0]);
1786
write_nic_dword(dev, RATR0, ratr_value);
1787
write_nic_byte(dev, UFWP, 1);
1789
//Resore TX Power Tracking Index
1790
if(priv->btxpower_trackingInit && priv->btxpower_tracking){
1791
dm_txpower_reset_recovery(dev);
1795
//Restore BB Initial Gain
1797
dm_bb_initialgain_restore(dev);
1801
static void dm_bb_initialgain_restore(struct net_device *dev)
1803
struct r8192_priv *priv = ieee80211_priv(dev);
1804
u32 bit_mask = 0x7f; //Bit0~ Bit6
1806
if(dm_digtable.dig_algorithm == DIG_ALGO_BY_RSSI)
1809
//Disable Initial Gain
1810
//PHY_SetBBReg(Adapter, UFWP, bMaskLWord, 0x800);
1811
rtl8192_setBBreg(dev, UFWP, bMaskByte1, 0x8); // Only clear byte 1 and rewrite.
1812
rtl8192_setBBreg(dev, rOFDM0_XAAGCCore1, bit_mask, (u32)priv->initgain_backup.xaagccore1);
1813
rtl8192_setBBreg(dev, rOFDM0_XBAGCCore1, bit_mask, (u32)priv->initgain_backup.xbagccore1);
1814
rtl8192_setBBreg(dev, rOFDM0_XCAGCCore1, bit_mask, (u32)priv->initgain_backup.xcagccore1);
1815
rtl8192_setBBreg(dev, rOFDM0_XDAGCCore1, bit_mask, (u32)priv->initgain_backup.xdagccore1);
1816
bit_mask = bMaskByte2;
1817
rtl8192_setBBreg(dev, rCCK0_CCA, bit_mask, (u32)priv->initgain_backup.cca);
1819
RT_TRACE(COMP_DIG, "dm_BBInitialGainRestore 0xc50 is %x\n",priv->initgain_backup.xaagccore1);
1820
RT_TRACE(COMP_DIG, "dm_BBInitialGainRestore 0xc58 is %x\n",priv->initgain_backup.xbagccore1);
1821
RT_TRACE(COMP_DIG, "dm_BBInitialGainRestore 0xc60 is %x\n",priv->initgain_backup.xcagccore1);
1822
RT_TRACE(COMP_DIG, "dm_BBInitialGainRestore 0xc68 is %x\n",priv->initgain_backup.xdagccore1);
1823
RT_TRACE(COMP_DIG, "dm_BBInitialGainRestore 0xa0a is %x\n",priv->initgain_backup.cca);
1824
//Enable Initial Gain
1825
//PHY_SetBBReg(Adapter, UFWP, bMaskLWord, 0x100);
1826
rtl8192_setBBreg(dev, UFWP, bMaskByte1, 0x1); // Only clear byte 1 and rewrite.
1831
void dm_backup_dynamic_mechanism_state(struct net_device *dev)
1833
struct r8192_priv *priv = ieee80211_priv(dev);
1835
// Fsync to avoid reset
1836
priv->bswitch_fsync = false;
1837
priv->bfsync_processing = false;
1838
//Backup BB InitialGain
1839
dm_bb_initialgain_backup(dev);
1844
static void dm_bb_initialgain_backup(struct net_device *dev)
1846
struct r8192_priv *priv = ieee80211_priv(dev);
1847
u32 bit_mask = bMaskByte0; //Bit0~ Bit6
1849
if(dm_digtable.dig_algorithm == DIG_ALGO_BY_RSSI)
1852
//PHY_SetBBReg(Adapter, UFWP, bMaskLWord, 0x800);
1853
rtl8192_setBBreg(dev, UFWP, bMaskByte1, 0x8); // Only clear byte 1 and rewrite.
1854
priv->initgain_backup.xaagccore1 = (u8)rtl8192_QueryBBReg(dev, rOFDM0_XAAGCCore1, bit_mask);
1855
priv->initgain_backup.xbagccore1 = (u8)rtl8192_QueryBBReg(dev, rOFDM0_XBAGCCore1, bit_mask);
1856
priv->initgain_backup.xcagccore1 = (u8)rtl8192_QueryBBReg(dev, rOFDM0_XCAGCCore1, bit_mask);
1857
priv->initgain_backup.xdagccore1 = (u8)rtl8192_QueryBBReg(dev, rOFDM0_XDAGCCore1, bit_mask);
1858
bit_mask = bMaskByte2;
1859
priv->initgain_backup.cca = (u8)rtl8192_QueryBBReg(dev, rCCK0_CCA, bit_mask);
1861
RT_TRACE(COMP_DIG, "BBInitialGainBackup 0xc50 is %x\n",priv->initgain_backup.xaagccore1);
1862
RT_TRACE(COMP_DIG, "BBInitialGainBackup 0xc58 is %x\n",priv->initgain_backup.xbagccore1);
1863
RT_TRACE(COMP_DIG, "BBInitialGainBackup 0xc60 is %x\n",priv->initgain_backup.xcagccore1);
1864
RT_TRACE(COMP_DIG, "BBInitialGainBackup 0xc68 is %x\n",priv->initgain_backup.xdagccore1);
1865
RT_TRACE(COMP_DIG, "BBInitialGainBackup 0xa0a is %x\n",priv->initgain_backup.cca);
1871
void dm_change_dynamic_initgain_thresh(struct net_device *dev, u32 dm_type, u32 dm_value)
1873
if (dm_type == DIG_TYPE_THRESH_HIGH)
1875
dm_digtable.rssi_high_thresh = dm_value;
1877
else if (dm_type == DIG_TYPE_THRESH_LOW)
1879
dm_digtable.rssi_low_thresh = dm_value;
1881
else if (dm_type == DIG_TYPE_THRESH_HIGHPWR_HIGH)
1883
dm_digtable.rssi_high_power_highthresh = dm_value;
1885
else if (dm_type == DIG_TYPE_THRESH_HIGHPWR_HIGH)
1887
dm_digtable.rssi_high_power_highthresh = dm_value;
1889
else if (dm_type == DIG_TYPE_ENABLE)
1891
dm_digtable.dig_state = DM_STA_DIG_MAX;
1892
dm_digtable.dig_enable_flag = true;
1894
else if (dm_type == DIG_TYPE_DISABLE)
1896
dm_digtable.dig_state = DM_STA_DIG_MAX;
1897
dm_digtable.dig_enable_flag = false;
1899
else if (dm_type == DIG_TYPE_DBG_MODE)
1901
if(dm_value >= DM_DBG_MAX)
1902
dm_value = DM_DBG_OFF;
1903
dm_digtable.dbg_mode = (u8)dm_value;
1905
else if (dm_type == DIG_TYPE_RSSI)
1909
dm_digtable.rssi_val = (long)dm_value;
1911
else if (dm_type == DIG_TYPE_ALGORITHM)
1913
if (dm_value >= DIG_ALGO_MAX)
1914
dm_value = DIG_ALGO_BY_FALSE_ALARM;
1915
if(dm_digtable.dig_algorithm != (u8)dm_value)
1916
dm_digtable.dig_algorithm_switch = 1;
1917
dm_digtable.dig_algorithm = (u8)dm_value;
1919
else if (dm_type == DIG_TYPE_BACKOFF)
1923
dm_digtable.backoff_val = (u8)dm_value;
1925
else if(dm_type == DIG_TYPE_RX_GAIN_MIN)
1929
dm_digtable.rx_gain_range_min = (u8)dm_value;
1931
else if(dm_type == DIG_TYPE_RX_GAIN_MAX)
1935
dm_digtable.rx_gain_range_max = (u8)dm_value;
1103
dm_CCKTxPowerAdjust_ThermalMeter(priv, binch14);
1940
1106
/* Set DIG scheme init value. */
1941
static void dm_dig_init(struct net_device *dev)
1107
static void dm_dig_init(struct r8192_priv *priv)
1943
struct r8192_priv *priv = ieee80211_priv(dev);
1944
1109
/* 2007/10/05 MH Disable DIG scheme now. Not tested. */
1945
1110
dm_digtable.dig_enable_flag = true;
1946
1111
dm_digtable.dig_algorithm = DIG_ALGO_BY_RSSI;