1
1
/******************************************************************************
3
* Copyright(c) 2009-2010 Realtek Corporation.
3
* Copyright(c) 2009-2012 Realtek Corporation.
5
5
* This program is free software; you can redistribute it and/or modify it
6
6
* under the terms of version 2 of the GNU General Public License as
58
56
struct rtl_priv *rtlpriv = rtl_priv(hw);
59
57
u32 returnvalue = 0, originalvalue, bitshift;
61
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, ("regaddr(%#x), bitmask(%#x)\n",
59
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, "regaddr(%#x), bitmask(%#x)\n",
64
62
originalvalue = rtl_read_dword(rtlpriv, regaddr);
65
63
bitshift = _rtl92s_phy_calculate_bit_shift(bitmask);
66
64
returnvalue = (originalvalue & bitmask) >> bitshift;
68
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE,
69
("BBR MASK=0x%x Addr[0x%x]=0x%x\n",
70
bitmask, regaddr, originalvalue));
66
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, "BBR MASK=0x%x Addr[0x%x]=0x%x\n",
67
bitmask, regaddr, originalvalue);
72
69
return returnvalue;
79
76
struct rtl_priv *rtlpriv = rtl_priv(hw);
80
77
u32 originalvalue, bitshift;
82
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, ("regaddr(%#x), bitmask(%#x),"
83
" data(%#x)\n", regaddr, bitmask, data));
79
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE,
80
"regaddr(%#x), bitmask(%#x), data(%#x)\n",
81
regaddr, bitmask, data);
85
83
if (bitmask != MASKDWORD) {
86
84
originalvalue = rtl_read_dword(rtlpriv, regaddr);
91
89
rtl_write_dword(rtlpriv, regaddr, data);
93
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, ("regaddr(%#x), bitmask(%#x),"
94
" data(%#x)\n", regaddr, bitmask, data));
91
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE,
92
"regaddr(%#x), bitmask(%#x), data(%#x)\n",
93
regaddr, bitmask, data);
149
148
retvalue = rtl_get_bbreg(hw, pphyreg->rflssi_readback,
150
149
BLSSI_READBACK_DATA);
152
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, ("RFR-%d Addr[0x%x]=0x%x\n",
153
rfpath, pphyreg->rflssi_readback, retvalue));
151
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, "RFR-%d Addr[0x%x]=0x%x\n",
152
rfpath, pphyreg->rflssi_readback, retvalue);
172
171
data_and_addr = ((newoffset << 20) | (data & 0x000fffff)) & 0x0fffffff;
173
172
rtl_set_bbreg(hw, pphyreg->rf3wire_offset, MASKDWORD, data_and_addr);
175
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, ("RFW-%d Addr[0x%x]=0x%x\n",
176
rfpath, pphyreg->rf3wire_offset, data_and_addr));
174
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, "RFW-%d Addr[0x%x]=0x%x\n",
175
rfpath, pphyreg->rf3wire_offset, data_and_addr);
183
182
struct rtl_priv *rtlpriv = rtl_priv(hw);
184
183
u32 original_value, readback_value, bitshift;
186
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, ("regaddr(%#x), rfpath(%#x), "
187
"bitmask(%#x)\n", regaddr, rfpath, bitmask));
185
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE,
186
"regaddr(%#x), rfpath(%#x), bitmask(%#x)\n",
187
regaddr, rfpath, bitmask);
189
189
spin_lock(&rtlpriv->locks.rf_lock);
196
196
spin_unlock(&rtlpriv->locks.rf_lock);
198
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, ("regaddr(%#x), rfpath(%#x), "
199
"bitmask(%#x), original_value(%#x)\n", regaddr, rfpath,
200
bitmask, original_value));
198
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE,
199
"regaddr(%#x), rfpath(%#x), bitmask(%#x), original_value(%#x)\n",
200
regaddr, rfpath, bitmask, original_value);
202
202
return readback_value;
212
212
if (!((rtlphy->rf_pathmap >> rfpath) & 0x1))
215
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, ("regaddr(%#x), bitmask(%#x),"
216
" data(%#x), rfpath(%#x)\n", regaddr, bitmask, data, rfpath));
215
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE,
216
"regaddr(%#x), bitmask(%#x), data(%#x), rfpath(%#x)\n",
217
regaddr, bitmask, data, rfpath);
218
219
spin_lock(&rtlpriv->locks.rf_lock);
229
230
spin_unlock(&rtlpriv->locks.rf_lock);
231
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE, ("regaddr(%#x), bitmask(%#x), "
232
"data(%#x), rfpath(%#x)\n", regaddr, bitmask, data, rfpath));
232
RT_TRACE(rtlpriv, COMP_RF, DBG_TRACE,
233
"regaddr(%#x), bitmask(%#x), data(%#x), rfpath(%#x)\n",
234
regaddr, bitmask, data, rfpath);
264
266
struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
265
267
u8 reg_bw_opmode;
267
RT_TRACE(rtlpriv, COMP_SCAN, DBG_TRACE, ("Switch to %s bandwidth\n",
268
rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20 ?
269
RT_TRACE(rtlpriv, COMP_SCAN, DBG_TRACE, "Switch to %s bandwidth\n",
270
rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_20 ?
271
273
if (rtlphy->set_bwmode_inprogress)
292
294
RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,
293
("unknown bandwidth: %#X\n",
294
rtlphy->current_chan_bw));
295
"unknown bandwidth: %#X\n", rtlphy->current_chan_bw);
318
319
RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,
319
("unknown bandwidth: %#X\n", rtlphy->current_chan_bw));
320
"unknown bandwidth: %#X\n", rtlphy->current_chan_bw);
323
324
rtl92s_phy_rf6052_set_bandwidth(hw, rtlphy->current_chan_bw);
324
325
rtlphy->set_bwmode_inprogress = false;
325
RT_TRACE(rtlpriv, COMP_SCAN, DBG_TRACE, ("<==\n"));
326
RT_TRACE(rtlpriv, COMP_SCAN, DBG_TRACE, "<==\n");
328
329
static bool _rtl92s_phy_set_sw_chnl_cmdarray(struct swchnlcmd *cmdtable,
377
378
rfdependcmdcnt = 0;
379
380
RT_ASSERT((channel >= 1 && channel <= 14),
380
("illegal channel for Zebra: %d\n", channel));
381
"invalid channel for Zebra: %d\n", channel);
382
383
_rtl92s_phy_set_sw_chnl_cmdarray(rfdependcmd, rfdependcmdcnt++,
383
384
MAX_RFDEPENDCMD_CNT, CMDID_RF_WRITEREG,
461
RT_TRACE(rtlpriv, COMP_SCAN, DBG_TRACE,
462
("switch to channel%d\n",
463
rtlphy->current_channel));
462
RT_TRACE(rtlpriv, COMP_SCAN, DBG_TRACE, "switch to channel%d\n",
463
rtlphy->current_channel);
465
465
if (rtlphy->sw_chnl_inprogress)
497
497
rtlphy->sw_chnl_inprogress = false;
499
RT_TRACE(rtlpriv, COMP_SCAN, DBG_TRACE, ("<==\n"));
499
RT_TRACE(rtlpriv, COMP_SCAN, DBG_TRACE, "<==\n");
557
557
InitializeCount++;
558
558
RT_TRACE(rtlpriv, COMP_RF, DBG_DMESG,
559
("IPS Set eRf nic enable\n"));
559
"IPS Set eRf nic enable\n");
560
560
rtstatus = rtl_ps_enable_nic(hw);
561
} while ((rtstatus != true) &&
562
(InitializeCount < 10));
561
} while (!rtstatus && (InitializeCount < 10));
564
563
RT_CLEAR_PS_LEVEL(ppsc,
565
564
RT_RF_OFF_LEVL_HALT_NIC);
567
566
RT_TRACE(rtlpriv, COMP_POWER, DBG_DMESG,
568
("awake, sleeped:%d ms "
570
jiffies_to_msecs(jiffies -
571
ppsc->last_sleep_jiffies),
572
rtlpriv->psc.state_inap));
567
"awake, sleeped:%d ms state_inap:%x\n",
568
jiffies_to_msecs(jiffies -
571
rtlpriv->psc.state_inap);
573
572
ppsc->last_awake_jiffies = jiffies;
574
573
rtl_write_word(rtlpriv, CMDR, 0x37FC);
575
574
rtl_write_byte(rtlpriv, TXPAUSE, 0x00);
588
587
if (ppsc->reg_rfps_level & RT_RF_OFF_LEVL_HALT_NIC) {
589
588
RT_TRACE(rtlpriv, COMP_RF, DBG_DMESG,
590
("IPS Set eRf nic disable\n"));
589
"IPS Set eRf nic disable\n");
591
590
rtl_ps_disable_nic(hw);
592
591
RT_SET_PS_LEVEL(ppsc, RT_RF_OFF_LEVL_HALT_NIC);
615
614
RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING,
617
"%d times TcbBusyQueue[%d] = "
620
skb_queue_len(&ring->queue)));
615
"eRf Off/Sleep: %d times TcbBusyQueue[%d] = %d before doze!\n",
617
skb_queue_len(&ring->queue));
626
623
if (i >= MAX_DOZE_WAITING_TIMES_9x) {
627
624
RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING,
628
("\nERFOFF: %d times"
629
"TcbBusyQueue[%d] = %d !\n",
625
"ERFOFF: %d times TcbBusyQueue[%d] = %d !\n",
630
626
MAX_DOZE_WAITING_TIMES_9x,
632
skb_queue_len(&ring->queue)));
628
skb_queue_len(&ring->queue));
637
633
RT_TRACE(rtlpriv, COMP_POWER, DBG_DMESG,
638
("Set ERFSLEEP awaked:%d ms\n",
634
"Set ERFSLEEP awaked:%d ms\n",
639
635
jiffies_to_msecs(jiffies -
640
ppsc->last_awake_jiffies)));
636
ppsc->last_awake_jiffies));
642
638
RT_TRACE(rtlpriv, COMP_POWER, DBG_DMESG,
643
("sleep awaked:%d ms "
644
"state_inap:%x\n", jiffies_to_msecs(jiffies -
645
ppsc->last_awake_jiffies),
646
rtlpriv->psc.state_inap));
639
"sleep awaked:%d ms state_inap:%x\n",
640
jiffies_to_msecs(jiffies -
641
ppsc->last_awake_jiffies),
642
rtlpriv->psc.state_inap);
647
643
ppsc->last_sleep_jiffies = jiffies;
648
644
_rtl92se_phy_set_rf_sleep(hw);
651
647
RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,
652
("switch case not process\n"));
648
"switch case not processed\n");
682
678
struct rtl_priv *rtlpriv = rtl_priv(hw);
683
679
struct rtl_phy *rtlphy = &(rtlpriv->phy);
685
682
if (reg_addr == RTXAGC_RATE18_06)
686
rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][0] =
688
if (reg_addr == RTXAGC_RATE54_24)
689
rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][1] =
691
if (reg_addr == RTXAGC_CCK_MCS32)
692
rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][6] =
694
if (reg_addr == RTXAGC_MCS03_MCS00)
695
rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][2] =
697
if (reg_addr == RTXAGC_MCS07_MCS04)
698
rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][3] =
700
if (reg_addr == RTXAGC_MCS11_MCS08)
701
rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][4] =
703
if (reg_addr == RTXAGC_MCS15_MCS12) {
704
rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][5] =
684
else if (reg_addr == RTXAGC_RATE54_24)
686
else if (reg_addr == RTXAGC_CCK_MCS32)
688
else if (reg_addr == RTXAGC_MCS03_MCS00)
690
else if (reg_addr == RTXAGC_MCS07_MCS04)
692
else if (reg_addr == RTXAGC_MCS11_MCS08)
694
else if (reg_addr == RTXAGC_MCS15_MCS12)
699
rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][index] = data;
706
701
rtlphy->pwrgroup_cnt++;
710
704
static void _rtl92s_phy_init_register_definition(struct ieee80211_hw *hw)
993
987
rtstatus = false;
996
if (rtstatus != true) {
997
991
RT_TRACE(rtlpriv, COMP_INIT, DBG_EMERG,
998
("Write BB Reg Fail!!"));
992
"Write BB Reg Fail!!\n");
999
993
goto phy_BB8190_Config_ParaFile_Fail;
1007
1001
rtstatus = _rtl92s_phy_config_bb_with_pg(hw,
1008
1002
BASEBAND_CONFIG_PHY_REG);
1010
if (rtstatus != true) {
1011
1005
RT_TRACE(rtlpriv, COMP_INIT, DBG_EMERG,
1012
("_rtl92s_phy_bb_config_parafile(): "
1013
"BB_PG Reg Fail!!"));
1006
"_rtl92s_phy_bb_config_parafile(): BB_PG Reg Fail!!\n");
1014
1007
goto phy_BB8190_Config_ParaFile_Fail;
1017
1010
/* 3. BB AGC table Initialization */
1018
1011
rtstatus = _rtl92s_phy_config_bb(hw, BASEBAND_CONFIG_AGC_TAB);
1020
if (rtstatus != true) {
1021
1014
pr_err("%s(): AGC Table Fail\n", __func__);
1022
1015
goto phy_BB8190_Config_ParaFile_Fail;
1053
1046
radio_b_tblen = RADIOB_ARRAYLENGTH;
1056
RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, ("Radio No %x\n", rfpath));
1049
RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, "Radio No %x\n", rfpath);
1057
1050
rtstatus = true;
1059
1052
switch (rfpath) {
1175
1168
(rtlphy->rf_type == RF_2T2R && rf_num != 2) ||
1176
1169
(rtlphy->rf_type == RF_2T2R_GREEN && rf_num != 2)) {
1177
1170
RT_TRACE(rtlpriv, COMP_INIT, DBG_EMERG,
1178
("RF_Type(%x) does not match "
1179
"RF_Num(%x)!!\n", rtlphy->rf_type, rf_num));
1171
"RF_Type(%x) does not match RF_Num(%x)!!\n",
1172
rtlphy->rf_type, rf_num);
1180
1173
RT_TRACE(rtlpriv, COMP_INIT, DBG_EMERG,
1181
("path1 0x%x, path2 0x%x, pathmap "
1182
"0x%x\n", path1, path2, pathmap));
1174
"path1 0x%x, path2 0x%x, pathmap 0x%x\n",
1175
path1, path2, pathmap);
1185
1178
return rtstatus;
1214
1207
ROFDM0_XCAGCCORE1, MASKBYTE0);
1215
1208
rtlphy->default_initialgain[3] = rtl_get_bbreg(hw,
1216
1209
ROFDM0_XDAGCCORE1, MASKBYTE0);
1217
RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, ("Default initial gain "
1218
"(c50=0x%x, c58=0x%x, c60=0x%x, c68=0x%x)\n",
1210
RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD,
1211
"Default initial gain (c50=0x%x, c58=0x%x, c60=0x%x, c68=0x%x)\n",
1219
1212
rtlphy->default_initialgain[0],
1220
1213
rtlphy->default_initialgain[1],
1221
1214
rtlphy->default_initialgain[2],
1222
rtlphy->default_initialgain[3]));
1215
rtlphy->default_initialgain[3]);
1224
1217
/* read framesync */
1225
1218
rtlphy->framesync = rtl_get_bbreg(hw, ROFDM0_RXDETECTOR3, MASKBYTE0);
1226
1219
rtlphy->framesync_c34 = rtl_get_bbreg(hw, ROFDM0_RXDETECTOR2,
1228
1221
RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD,
1229
("Default framesync (0x%x) = 0x%x\n",
1230
ROFDM0_RXDETECTOR3, rtlphy->framesync));
1222
"Default framesync (0x%x) = 0x%x\n",
1223
ROFDM0_RXDETECTOR3, rtlphy->framesync);
1274
1267
/* [0]:RF-A, [1]:RF-B */
1275
1268
u8 cckpowerlevel[2], ofdmpowerLevel[2];
1277
if (rtlefuse->txpwr_fromeprom == false)
1270
if (!rtlefuse->txpwr_fromeprom)
1280
1273
/* Mainly we use RF-A Tx Power to write the Tx Power registers,
1287
1280
&ofdmpowerLevel[0]);
1289
1282
RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD,
1290
("Channel-%d, cckPowerLevel (A / B) = "
1291
"0x%x / 0x%x, ofdmPowerLevel (A / B) = 0x%x / 0x%x\n",
1292
channel, cckpowerlevel[0], cckpowerlevel[1],
1293
ofdmpowerLevel[0], ofdmpowerLevel[1]));
1283
"Channel-%d, cckPowerLevel (A / B) = 0x%x / 0x%x, ofdmPowerLevel (A / B) = 0x%x / 0x%x\n",
1284
channel, cckpowerlevel[0], cckpowerlevel[1],
1285
ofdmpowerLevel[0], ofdmpowerLevel[1]);
1295
1287
_rtl92s_phy_ccxpower_indexcheck(hw, channel, &cckpowerlevel[0],
1296
1288
&ofdmpowerLevel[0]);
1316
1308
} while (--pollingcnt);
1318
1310
if (pollingcnt == 0)
1319
RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, ("Set FW Cmd fail!!\n"));
1311
RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "Set FW Cmd fail!!\n");
1346
1338
switch (rtlhal->current_fwcmd_io) {
1347
1339
case FW_CMD_RA_RESET:
1348
RT_TRACE(rtlpriv, COMP_CMD, DBG_DMESG,
1349
("FW_CMD_RA_RESET\n"));
1340
RT_TRACE(rtlpriv, COMP_CMD, DBG_DMESG, "FW_CMD_RA_RESET\n");
1350
1341
rtl_write_dword(rtlpriv, WFM5, FW_RA_RESET);
1351
1342
rtl92s_phy_chk_fwcmd_iodone(hw);
1353
1344
case FW_CMD_RA_ACTIVE:
1354
RT_TRACE(rtlpriv, COMP_CMD, DBG_DMESG,
1355
("FW_CMD_RA_ACTIVE\n"));
1345
RT_TRACE(rtlpriv, COMP_CMD, DBG_DMESG, "FW_CMD_RA_ACTIVE\n");
1356
1346
rtl_write_dword(rtlpriv, WFM5, FW_RA_ACTIVE);
1357
1347
rtl92s_phy_chk_fwcmd_iodone(hw);
1359
1349
case FW_CMD_RA_REFRESH_N:
1360
RT_TRACE(rtlpriv, COMP_CMD, DBG_DMESG,
1361
("FW_CMD_RA_REFRESH_N\n"));
1350
RT_TRACE(rtlpriv, COMP_CMD, DBG_DMESG, "FW_CMD_RA_REFRESH_N\n");
1362
1351
input = FW_RA_REFRESH;
1363
1352
rtl_write_dword(rtlpriv, WFM5, input);
1364
1353
rtl92s_phy_chk_fwcmd_iodone(hw);
1368
1357
case FW_CMD_RA_REFRESH_BG:
1369
1358
RT_TRACE(rtlpriv, COMP_CMD, DBG_DMESG,
1370
("FW_CMD_RA_REFRESH_BG\n"));
1359
"FW_CMD_RA_REFRESH_BG\n");
1371
1360
rtl_write_dword(rtlpriv, WFM5, FW_RA_REFRESH);
1372
1361
rtl92s_phy_chk_fwcmd_iodone(hw);
1373
1362
rtl_write_dword(rtlpriv, WFM5, FW_RA_DISABLE_RSSI_MASK);
1376
1365
case FW_CMD_RA_REFRESH_N_COMB:
1377
1366
RT_TRACE(rtlpriv, COMP_CMD, DBG_DMESG,
1378
("FW_CMD_RA_REFRESH_N_COMB\n"));
1367
"FW_CMD_RA_REFRESH_N_COMB\n");
1379
1368
input = FW_RA_IOT_N_COMB;
1380
1369
rtl_write_dword(rtlpriv, WFM5, input);
1381
1370
rtl92s_phy_chk_fwcmd_iodone(hw);
1383
1372
case FW_CMD_RA_REFRESH_BG_COMB:
1384
1373
RT_TRACE(rtlpriv, COMP_CMD, DBG_DMESG,
1385
("FW_CMD_RA_REFRESH_BG_COMB\n"));
1374
"FW_CMD_RA_REFRESH_BG_COMB\n");
1386
1375
input = FW_RA_IOT_BG_COMB;
1387
1376
rtl_write_dword(rtlpriv, WFM5, input);
1388
1377
rtl92s_phy_chk_fwcmd_iodone(hw);
1390
1379
case FW_CMD_IQK_ENABLE:
1391
RT_TRACE(rtlpriv, COMP_CMD, DBG_DMESG,
1392
("FW_CMD_IQK_ENABLE\n"));
1380
RT_TRACE(rtlpriv, COMP_CMD, DBG_DMESG, "FW_CMD_IQK_ENABLE\n");
1393
1381
rtl_write_dword(rtlpriv, WFM5, FW_IQK_ENABLE);
1394
1382
rtl92s_phy_chk_fwcmd_iodone(hw);
1424
1412
rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2, 0xcd);
1426
1414
case FW_CMD_LPS_ENTER:
1427
RT_TRACE(rtlpriv, COMP_CMD, DBG_DMESG,
1428
("FW_CMD_LPS_ENTER\n"));
1415
RT_TRACE(rtlpriv, COMP_CMD, DBG_DMESG, "FW_CMD_LPS_ENTER\n");
1429
1416
current_aid = rtlpriv->mac80211.assoc_id;
1430
1417
rtl_write_dword(rtlpriv, WFM5, (FW_LPS_ENTER |
1431
1418
((current_aid | 0xc000) << 8)));
1434
1421
* turbo mode until driver leave LPS */
1436
1423
case FW_CMD_LPS_LEAVE:
1437
RT_TRACE(rtlpriv, COMP_CMD, DBG_DMESG,
1438
("FW_CMD_LPS_LEAVE\n"));
1424
RT_TRACE(rtlpriv, COMP_CMD, DBG_DMESG, "FW_CMD_LPS_LEAVE\n");
1439
1425
rtl_write_dword(rtlpriv, WFM5, FW_LPS_LEAVE);
1440
1426
rtl92s_phy_chk_fwcmd_iodone(hw);
1442
1428
case FW_CMD_ADD_A2_ENTRY:
1443
RT_TRACE(rtlpriv, COMP_CMD, DBG_DMESG,
1444
("FW_CMD_ADD_A2_ENTRY\n"));
1429
RT_TRACE(rtlpriv, COMP_CMD, DBG_DMESG, "FW_CMD_ADD_A2_ENTRY\n");
1445
1430
rtl_write_dword(rtlpriv, WFM5, FW_ADD_A2_ENTRY);
1446
1431
rtl92s_phy_chk_fwcmd_iodone(hw);
1448
1433
case FW_CMD_CTRL_DM_BY_DRIVER:
1449
1434
RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD,
1450
("FW_CMD_CTRL_DM_BY_DRIVER\n"));
1435
"FW_CMD_CTRL_DM_BY_DRIVER\n");
1451
1436
rtl_write_dword(rtlpriv, WFM5, FW_CTRL_DM_BY_DRIVER);
1452
1437
rtl92s_phy_chk_fwcmd_iodone(hw);
1472
1457
bool bPostProcessing = false;
1474
1459
RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD,
1475
("Set FW Cmd(%#x), set_fwcmd_inprogress(%d)\n",
1476
fw_cmdio, rtlhal->set_fwcmd_inprogress));
1460
"Set FW Cmd(%#x), set_fwcmd_inprogress(%d)\n",
1461
fw_cmdio, rtlhal->set_fwcmd_inprogress);
1479
1464
/* We re-map to combined FW CMD ones if firmware version */
1501
1486
* DM map table in the future. */
1502
1487
switch (fw_cmdio) {
1503
1488
case FW_CMD_RA_INIT:
1504
RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD, ("RA init!!\n"));
1489
RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD, "RA init!!\n");
1505
1490
fw_cmdmap |= FW_RA_INIT_CTL;
1506
1491
FW_CMD_IO_SET(rtlpriv, fw_cmdmap);
1507
1492
/* Clear control flag to sync with FW. */
1510
1495
case FW_CMD_DIG_DISABLE:
1511
1496
RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD,
1512
("Set DIG disable!!\n"));
1497
"Set DIG disable!!\n");
1513
1498
fw_cmdmap &= ~FW_DIG_ENABLE_CTL;
1514
1499
FW_CMD_IO_SET(rtlpriv, fw_cmdmap);
1517
1502
case FW_CMD_DIG_RESUME:
1518
1503
if (!(rtlpriv->dm.dm_flag & HAL_DM_DIG_DISABLE)) {
1519
1504
RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD,
1520
("Set DIG enable or resume!!\n"));
1505
"Set DIG enable or resume!!\n");
1521
1506
fw_cmdmap |= (FW_DIG_ENABLE_CTL | FW_SS_CTL);
1522
1507
FW_CMD_IO_SET(rtlpriv, fw_cmdmap);
1525
1510
case FW_CMD_DIG_HALT:
1526
1511
RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD,
1527
("Set DIG halt!!\n"));
1512
"Set DIG halt!!\n");
1528
1513
fw_cmdmap &= ~(FW_DIG_ENABLE_CTL | FW_SS_CTL);
1529
1514
FW_CMD_IO_SET(rtlpriv, fw_cmdmap);
1540
1525
(rtlefuse->thermalmeter[0] << 16));
1542
1527
RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD,
1543
("Set TxPwr tracking!! "
1544
"FwCmdMap(%#x), FwParam(%#x)\n",
1545
fw_cmdmap, fw_param));
1528
"Set TxPwr tracking!! FwCmdMap(%#x), FwParam(%#x)\n",
1529
fw_cmdmap, fw_param);
1547
1531
FW_CMD_PARA_SET(rtlpriv, fw_param);
1548
1532
FW_CMD_IO_SET(rtlpriv, fw_cmdmap);
1563
1547
fw_param &= FW_RA_PARAM_CLR;
1565
1549
RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD,
1566
("[FW CMD] [New Version] "
1567
"Set RA/IOT Comb in n mode!! FwCmdMap(%#x), "
1568
"FwParam(%#x)\n", fw_cmdmap, fw_param));
1550
"[FW CMD] [New Version] Set RA/IOT Comb in n mode!! FwCmdMap(%#x), FwParam(%#x)\n",
1551
fw_cmdmap, fw_param);
1570
1553
FW_CMD_PARA_SET(rtlpriv, fw_param);
1571
1554
FW_CMD_IO_SET(rtlpriv, fw_cmdmap);
1636
1619
case FW_CMD_HIGH_PWR_ENABLE:
1637
1620
if (!(rtlpriv->dm.dm_flag & HAL_DM_HIPWR_DISABLE) &&
1638
(rtlpriv->dm.dynamic_txpower_enable != true)) {
1621
!rtlpriv->dm.dynamic_txpower_enable) {
1639
1622
fw_cmdmap |= (FW_HIGH_PWR_ENABLE_CTL |
1641
1624
FW_CMD_IO_SET(rtlpriv, fw_cmdmap);
1653
1636
case FW_CMD_PAPE_CONTROL:
1654
1637
RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD,
1655
("[FW CMD] Set PAPE Control\n"));
1638
"[FW CMD] Set PAPE Control\n");
1656
1639
fw_cmdmap &= ~FW_PAPE_CTL_BY_SW_HW;
1658
1641
FW_CMD_IO_SET(rtlpriv, fw_cmdmap);