.. | .. |
---|
1 | | -/****************************************************************************** |
---|
2 | | - * |
---|
3 | | - * Copyright(c) 2009-2012 Realtek Corporation. |
---|
4 | | - * |
---|
5 | | - * This program is free software; you can redistribute it and/or modify it |
---|
6 | | - * under the terms of version 2 of the GNU General Public License as |
---|
7 | | - * published by the Free Software Foundation. |
---|
8 | | - * |
---|
9 | | - * This program is distributed in the hope that it will be useful, but WITHOUT |
---|
10 | | - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
---|
11 | | - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
---|
12 | | - * more details. |
---|
13 | | - * |
---|
14 | | - * The full GNU General Public License is included in this distribution in the |
---|
15 | | - * file called LICENSE. |
---|
16 | | - * |
---|
17 | | - * Contact Information: |
---|
18 | | - * wlanfae <wlanfae@realtek.com> |
---|
19 | | - * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, |
---|
20 | | - * Hsinchu 300, Taiwan. |
---|
21 | | - * |
---|
22 | | - * Larry Finger <Larry.Finger@lwfinger.net> |
---|
23 | | - * |
---|
24 | | - *****************************************************************************/ |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0 |
---|
| 2 | +/* Copyright(c) 2009-2012 Realtek Corporation.*/ |
---|
25 | 3 | |
---|
26 | 4 | #include "../wifi.h" |
---|
27 | 5 | #include "../base.h" |
---|
.. | .. |
---|
216 | 194 | rtl_set_bbreg(hw, RCCK0_FALSEALARMREPORT, 0x0000c000, 2); |
---|
217 | 195 | rtl92d_release_cckandrw_pagea_ctl(hw, &flag); |
---|
218 | 196 | } |
---|
219 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
220 | | - "Cnt_Fast_Fsync_fail = %x, Cnt_SB_Search_fail = %x\n", |
---|
221 | | - falsealm_cnt->cnt_fast_fsync_fail, |
---|
222 | | - falsealm_cnt->cnt_sb_search_fail); |
---|
223 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
224 | | - "Cnt_Parity_Fail = %x, Cnt_Rate_Illegal = %x, Cnt_Crc8_fail = %x, Cnt_Mcs_fail = %x\n", |
---|
225 | | - falsealm_cnt->cnt_parity_fail, |
---|
226 | | - falsealm_cnt->cnt_rate_illegal, |
---|
227 | | - falsealm_cnt->cnt_crc8_fail, |
---|
228 | | - falsealm_cnt->cnt_mcs_fail); |
---|
229 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
230 | | - "Cnt_Ofdm_fail = %x, Cnt_Cck_fail = %x, Cnt_all = %x\n", |
---|
231 | | - falsealm_cnt->cnt_ofdm_fail, |
---|
232 | | - falsealm_cnt->cnt_cck_fail, |
---|
233 | | - falsealm_cnt->cnt_all); |
---|
| 197 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
| 198 | + "Cnt_Fast_Fsync_fail = %x, Cnt_SB_Search_fail = %x\n", |
---|
| 199 | + falsealm_cnt->cnt_fast_fsync_fail, |
---|
| 200 | + falsealm_cnt->cnt_sb_search_fail); |
---|
| 201 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
| 202 | + "Cnt_Parity_Fail = %x, Cnt_Rate_Illegal = %x, Cnt_Crc8_fail = %x, Cnt_Mcs_fail = %x\n", |
---|
| 203 | + falsealm_cnt->cnt_parity_fail, |
---|
| 204 | + falsealm_cnt->cnt_rate_illegal, |
---|
| 205 | + falsealm_cnt->cnt_crc8_fail, |
---|
| 206 | + falsealm_cnt->cnt_mcs_fail); |
---|
| 207 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
| 208 | + "Cnt_Ofdm_fail = %x, Cnt_Cck_fail = %x, Cnt_all = %x\n", |
---|
| 209 | + falsealm_cnt->cnt_ofdm_fail, |
---|
| 210 | + falsealm_cnt->cnt_cck_fail, |
---|
| 211 | + falsealm_cnt->cnt_all); |
---|
234 | 212 | } |
---|
235 | 213 | |
---|
236 | 214 | static void rtl92d_dm_find_minimum_rssi(struct ieee80211_hw *hw) |
---|
.. | .. |
---|
243 | 221 | if ((mac->link_state < MAC80211_LINKED) && |
---|
244 | 222 | (rtlpriv->dm.UNDEC_SM_PWDB == 0)) { |
---|
245 | 223 | de_digtable->min_undec_pwdb_for_dm = 0; |
---|
246 | | - RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, |
---|
247 | | - "Not connected to any\n"); |
---|
| 224 | + rtl_dbg(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, |
---|
| 225 | + "Not connected to any\n"); |
---|
248 | 226 | } |
---|
249 | 227 | if (mac->link_state >= MAC80211_LINKED) { |
---|
250 | 228 | if (mac->opmode == NL80211_IFTYPE_AP || |
---|
251 | 229 | mac->opmode == NL80211_IFTYPE_ADHOC) { |
---|
252 | 230 | de_digtable->min_undec_pwdb_for_dm = |
---|
253 | 231 | rtlpriv->dm.UNDEC_SM_PWDB; |
---|
254 | | - RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, |
---|
255 | | - "AP Client PWDB = 0x%lx\n", |
---|
| 232 | + rtl_dbg(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, |
---|
| 233 | + "AP Client PWDB = 0x%lx\n", |
---|
256 | 234 | rtlpriv->dm.UNDEC_SM_PWDB); |
---|
257 | 235 | } else { |
---|
258 | 236 | de_digtable->min_undec_pwdb_for_dm = |
---|
259 | 237 | rtlpriv->dm.undec_sm_pwdb; |
---|
260 | | - RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, |
---|
261 | | - "STA Default Port PWDB = 0x%x\n", |
---|
262 | | - de_digtable->min_undec_pwdb_for_dm); |
---|
| 238 | + rtl_dbg(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, |
---|
| 239 | + "STA Default Port PWDB = 0x%x\n", |
---|
| 240 | + de_digtable->min_undec_pwdb_for_dm); |
---|
263 | 241 | } |
---|
264 | 242 | } else { |
---|
265 | 243 | de_digtable->min_undec_pwdb_for_dm = rtlpriv->dm.UNDEC_SM_PWDB; |
---|
266 | | - RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, |
---|
267 | | - "AP Ext Port or disconnect PWDB = 0x%x\n", |
---|
268 | | - de_digtable->min_undec_pwdb_for_dm); |
---|
| 244 | + rtl_dbg(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, |
---|
| 245 | + "AP Ext Port or disconnect PWDB = 0x%x\n", |
---|
| 246 | + de_digtable->min_undec_pwdb_for_dm); |
---|
269 | 247 | } |
---|
270 | 248 | |
---|
271 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "MinUndecoratedPWDBForDM =%d\n", |
---|
272 | | - de_digtable->min_undec_pwdb_for_dm); |
---|
| 249 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, "MinUndecoratedPWDBForDM =%d\n", |
---|
| 250 | + de_digtable->min_undec_pwdb_for_dm); |
---|
273 | 251 | } |
---|
274 | 252 | |
---|
275 | 253 | static void rtl92d_dm_cck_packet_detection_thresh(struct ieee80211_hw *hw) |
---|
.. | .. |
---|
309 | 287 | } |
---|
310 | 288 | de_digtable->pre_cck_pd_state = de_digtable->cur_cck_pd_state; |
---|
311 | 289 | } |
---|
312 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "CurSTAConnectState=%s\n", |
---|
313 | | - de_digtable->cursta_cstate == DIG_STA_CONNECT ? |
---|
314 | | - "DIG_STA_CONNECT " : "DIG_STA_DISCONNECT"); |
---|
315 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "CCKPDStage=%s\n", |
---|
316 | | - de_digtable->cur_cck_pd_state == CCK_PD_STAGE_LOWRSSI ? |
---|
317 | | - "Low RSSI " : "High RSSI "); |
---|
318 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "is92d single phy =%x\n", |
---|
319 | | - IS_92D_SINGLEPHY(rtlpriv->rtlhal.version)); |
---|
| 290 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, "CurSTAConnectState=%s\n", |
---|
| 291 | + de_digtable->cursta_cstate == DIG_STA_CONNECT ? |
---|
| 292 | + "DIG_STA_CONNECT " : "DIG_STA_DISCONNECT"); |
---|
| 293 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, "CCKPDStage=%s\n", |
---|
| 294 | + de_digtable->cur_cck_pd_state == CCK_PD_STAGE_LOWRSSI ? |
---|
| 295 | + "Low RSSI " : "High RSSI "); |
---|
| 296 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, "is92d single phy =%x\n", |
---|
| 297 | + IS_92D_SINGLEPHY(rtlpriv->rtlhal.version)); |
---|
320 | 298 | |
---|
321 | 299 | } |
---|
322 | 300 | |
---|
.. | .. |
---|
325 | 303 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
---|
326 | 304 | struct dig_t *de_digtable = &rtlpriv->dm_digtable; |
---|
327 | 305 | |
---|
328 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
329 | | - "cur_igvalue = 0x%x, pre_igvalue = 0x%x, back_val = %d\n", |
---|
330 | | - de_digtable->cur_igvalue, de_digtable->pre_igvalue, |
---|
331 | | - de_digtable->back_val); |
---|
| 306 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
| 307 | + "cur_igvalue = 0x%x, pre_igvalue = 0x%x, back_val = %d\n", |
---|
| 308 | + de_digtable->cur_igvalue, de_digtable->pre_igvalue, |
---|
| 309 | + de_digtable->back_val); |
---|
332 | 310 | if (de_digtable->dig_enable_flag == false) { |
---|
333 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "DIG is disabled\n"); |
---|
| 311 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, "DIG is disabled\n"); |
---|
334 | 312 | de_digtable->pre_igvalue = 0x17; |
---|
335 | 313 | return; |
---|
336 | 314 | } |
---|
.. | .. |
---|
349 | 327 | |
---|
350 | 328 | if ((rtlpriv->mac80211.link_state >= MAC80211_LINKED) && |
---|
351 | 329 | (rtlpriv->mac80211.vendor == PEER_CISCO)) { |
---|
352 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "IOT_PEER = CISCO\n"); |
---|
| 330 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, "IOT_PEER = CISCO\n"); |
---|
353 | 331 | if (de_digtable->last_min_undec_pwdb_for_dm >= 50 |
---|
354 | 332 | && de_digtable->min_undec_pwdb_for_dm < 50) { |
---|
355 | 333 | rtl_write_byte(rtlpriv, REG_EARLY_MODE_CONTROL, 0x00); |
---|
356 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
357 | | - "Early Mode Off\n"); |
---|
| 334 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
| 335 | + "Early Mode Off\n"); |
---|
358 | 336 | } else if (de_digtable->last_min_undec_pwdb_for_dm <= 55 && |
---|
359 | 337 | de_digtable->min_undec_pwdb_for_dm > 55) { |
---|
360 | 338 | rtl_write_byte(rtlpriv, REG_EARLY_MODE_CONTROL, 0x0f); |
---|
361 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
362 | | - "Early Mode On\n"); |
---|
| 339 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
| 340 | + "Early Mode On\n"); |
---|
363 | 341 | } |
---|
364 | 342 | } else if (!(rtl_read_byte(rtlpriv, REG_EARLY_MODE_CONTROL) & 0xf)) { |
---|
365 | 343 | rtl_write_byte(rtlpriv, REG_EARLY_MODE_CONTROL, 0x0f); |
---|
366 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "Early Mode On\n"); |
---|
| 344 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, "Early Mode On\n"); |
---|
367 | 345 | } |
---|
368 | 346 | } |
---|
369 | 347 | |
---|
.. | .. |
---|
374 | 352 | u8 value_igi = de_digtable->cur_igvalue; |
---|
375 | 353 | struct false_alarm_statistics *falsealm_cnt = &(rtlpriv->falsealm_cnt); |
---|
376 | 354 | |
---|
377 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "==>\n"); |
---|
| 355 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, "==>\n"); |
---|
378 | 356 | if (rtlpriv->rtlhal.earlymode_enable) { |
---|
379 | 357 | rtl92d_early_mode_enabled(rtlpriv); |
---|
380 | 358 | de_digtable->last_min_undec_pwdb_for_dm = |
---|
.. | .. |
---|
393 | 371 | /* Not STA mode return tmp */ |
---|
394 | 372 | if (rtlpriv->mac80211.opmode != NL80211_IFTYPE_STATION) |
---|
395 | 373 | return; |
---|
396 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "progress\n"); |
---|
| 374 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, "progress\n"); |
---|
397 | 375 | /* Decide the current status and if modify initial gain or not */ |
---|
398 | 376 | if (rtlpriv->mac80211.link_state >= MAC80211_LINKED) |
---|
399 | 377 | de_digtable->cursta_cstate = DIG_STA_CONNECT; |
---|
.. | .. |
---|
409 | 387 | value_igi++; |
---|
410 | 388 | else if (falsealm_cnt->cnt_all >= DM_DIG_FA_TH2) |
---|
411 | 389 | value_igi += 2; |
---|
412 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
413 | | - "dm_DIG() Before: large_fa_hit=%d, forbidden_igi=%x\n", |
---|
414 | | - de_digtable->large_fa_hit, de_digtable->forbidden_igi); |
---|
415 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
416 | | - "dm_DIG() Before: Recover_cnt=%d, rx_gain_min=%x\n", |
---|
417 | | - de_digtable->recover_cnt, de_digtable->rx_gain_min); |
---|
| 390 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
| 391 | + "dm_DIG() Before: large_fa_hit=%d, forbidden_igi=%x\n", |
---|
| 392 | + de_digtable->large_fa_hit, de_digtable->forbidden_igi); |
---|
| 393 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
| 394 | + "dm_DIG() Before: Recover_cnt=%d, rx_gain_min=%x\n", |
---|
| 395 | + de_digtable->recover_cnt, de_digtable->rx_gain_min); |
---|
418 | 396 | |
---|
419 | 397 | /* deal with abnormally large false alarm */ |
---|
420 | 398 | if (falsealm_cnt->cnt_all > 10000) { |
---|
421 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
422 | | - "dm_DIG(): Abnormally false alarm case\n"); |
---|
| 399 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
| 400 | + "dm_DIG(): Abnormally false alarm case\n"); |
---|
423 | 401 | |
---|
424 | 402 | de_digtable->large_fa_hit++; |
---|
425 | 403 | if (de_digtable->forbidden_igi < de_digtable->cur_igvalue) { |
---|
.. | .. |
---|
457 | 435 | } |
---|
458 | 436 | } |
---|
459 | 437 | } |
---|
460 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
461 | | - "dm_DIG() After: large_fa_hit=%d, forbidden_igi=%x\n", |
---|
462 | | - de_digtable->large_fa_hit, de_digtable->forbidden_igi); |
---|
463 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
464 | | - "dm_DIG() After: recover_cnt=%d, rx_gain_min=%x\n", |
---|
465 | | - de_digtable->recover_cnt, de_digtable->rx_gain_min); |
---|
| 438 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
| 439 | + "dm_DIG() After: large_fa_hit=%d, forbidden_igi=%x\n", |
---|
| 440 | + de_digtable->large_fa_hit, de_digtable->forbidden_igi); |
---|
| 441 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, |
---|
| 442 | + "dm_DIG() After: recover_cnt=%d, rx_gain_min=%x\n", |
---|
| 443 | + de_digtable->recover_cnt, de_digtable->rx_gain_min); |
---|
466 | 444 | |
---|
467 | 445 | if (value_igi > DM_DIG_MAX) |
---|
468 | 446 | value_igi = DM_DIG_MAX; |
---|
.. | .. |
---|
472 | 450 | rtl92d_dm_write_dig(hw); |
---|
473 | 451 | if (rtlpriv->rtlhal.current_bandtype != BAND_ON_5G) |
---|
474 | 452 | rtl92d_dm_cck_packet_detection_thresh(hw); |
---|
475 | | - RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "<<==\n"); |
---|
| 453 | + rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, "<<==\n"); |
---|
476 | 454 | } |
---|
477 | 455 | |
---|
478 | 456 | static void rtl92d_dm_init_dynamic_txpower(struct ieee80211_hw *hw) |
---|
.. | .. |
---|
499 | 477 | } |
---|
500 | 478 | if ((mac->link_state < MAC80211_LINKED) && |
---|
501 | 479 | (rtlpriv->dm.UNDEC_SM_PWDB == 0)) { |
---|
502 | | - RT_TRACE(rtlpriv, COMP_POWER, DBG_TRACE, |
---|
503 | | - "Not connected to any\n"); |
---|
| 480 | + rtl_dbg(rtlpriv, COMP_POWER, DBG_TRACE, |
---|
| 481 | + "Not connected to any\n"); |
---|
504 | 482 | rtlpriv->dm.dynamic_txhighpower_lvl = TXHIGHPWRLEVEL_NORMAL; |
---|
505 | 483 | rtlpriv->dm.last_dtp_lvl = TXHIGHPWRLEVEL_NORMAL; |
---|
506 | 484 | return; |
---|
.. | .. |
---|
509 | 487 | if (mac->opmode == NL80211_IFTYPE_ADHOC) { |
---|
510 | 488 | undec_sm_pwdb = |
---|
511 | 489 | rtlpriv->dm.UNDEC_SM_PWDB; |
---|
512 | | - RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD, |
---|
513 | | - "IBSS Client PWDB = 0x%lx\n", |
---|
514 | | - undec_sm_pwdb); |
---|
| 490 | + rtl_dbg(rtlpriv, COMP_POWER, DBG_LOUD, |
---|
| 491 | + "IBSS Client PWDB = 0x%lx\n", |
---|
| 492 | + undec_sm_pwdb); |
---|
515 | 493 | } else { |
---|
516 | 494 | undec_sm_pwdb = |
---|
517 | 495 | rtlpriv->dm.undec_sm_pwdb; |
---|
518 | | - RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD, |
---|
519 | | - "STA Default Port PWDB = 0x%lx\n", |
---|
520 | | - undec_sm_pwdb); |
---|
| 496 | + rtl_dbg(rtlpriv, COMP_POWER, DBG_LOUD, |
---|
| 497 | + "STA Default Port PWDB = 0x%lx\n", |
---|
| 498 | + undec_sm_pwdb); |
---|
521 | 499 | } |
---|
522 | 500 | } else { |
---|
523 | 501 | undec_sm_pwdb = |
---|
524 | 502 | rtlpriv->dm.UNDEC_SM_PWDB; |
---|
525 | 503 | |
---|
526 | | - RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD, |
---|
527 | | - "AP Ext Port PWDB = 0x%lx\n", |
---|
528 | | - undec_sm_pwdb); |
---|
| 504 | + rtl_dbg(rtlpriv, COMP_POWER, DBG_LOUD, |
---|
| 505 | + "AP Ext Port PWDB = 0x%lx\n", |
---|
| 506 | + undec_sm_pwdb); |
---|
529 | 507 | } |
---|
530 | 508 | if (rtlhal->current_bandtype == BAND_ON_5G) { |
---|
531 | 509 | if (undec_sm_pwdb >= 0x33) { |
---|
532 | 510 | rtlpriv->dm.dynamic_txhighpower_lvl = |
---|
533 | 511 | TXHIGHPWRLEVEL_LEVEL2; |
---|
534 | | - RT_TRACE(rtlpriv, COMP_HIPWR, DBG_LOUD, |
---|
535 | | - "5G:TxHighPwrLevel_Level2 (TxPwr=0x0)\n"); |
---|
| 512 | + rtl_dbg(rtlpriv, COMP_HIPWR, DBG_LOUD, |
---|
| 513 | + "5G:TxHighPwrLevel_Level2 (TxPwr=0x0)\n"); |
---|
536 | 514 | } else if ((undec_sm_pwdb < 0x33) |
---|
537 | 515 | && (undec_sm_pwdb >= 0x2b)) { |
---|
538 | 516 | rtlpriv->dm.dynamic_txhighpower_lvl = |
---|
539 | 517 | TXHIGHPWRLEVEL_LEVEL1; |
---|
540 | | - RT_TRACE(rtlpriv, COMP_HIPWR, DBG_LOUD, |
---|
541 | | - "5G:TxHighPwrLevel_Level1 (TxPwr=0x10)\n"); |
---|
| 518 | + rtl_dbg(rtlpriv, COMP_HIPWR, DBG_LOUD, |
---|
| 519 | + "5G:TxHighPwrLevel_Level1 (TxPwr=0x10)\n"); |
---|
542 | 520 | } else if (undec_sm_pwdb < 0x2b) { |
---|
543 | 521 | rtlpriv->dm.dynamic_txhighpower_lvl = |
---|
544 | 522 | TXHIGHPWRLEVEL_NORMAL; |
---|
545 | | - RT_TRACE(rtlpriv, COMP_HIPWR, DBG_LOUD, |
---|
546 | | - "5G:TxHighPwrLevel_Normal\n"); |
---|
| 523 | + rtl_dbg(rtlpriv, COMP_HIPWR, DBG_LOUD, |
---|
| 524 | + "5G:TxHighPwrLevel_Normal\n"); |
---|
547 | 525 | } |
---|
548 | 526 | } else { |
---|
549 | 527 | if (undec_sm_pwdb >= |
---|
550 | 528 | TX_POWER_NEAR_FIELD_THRESH_LVL2) { |
---|
551 | 529 | rtlpriv->dm.dynamic_txhighpower_lvl = |
---|
552 | 530 | TXHIGHPWRLEVEL_LEVEL2; |
---|
553 | | - RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD, |
---|
554 | | - "TXHIGHPWRLEVEL_LEVEL1 (TxPwr=0x0)\n"); |
---|
| 531 | + rtl_dbg(rtlpriv, COMP_POWER, DBG_LOUD, |
---|
| 532 | + "TXHIGHPWRLEVEL_LEVEL1 (TxPwr=0x0)\n"); |
---|
555 | 533 | } else |
---|
556 | 534 | if ((undec_sm_pwdb < |
---|
557 | 535 | (TX_POWER_NEAR_FIELD_THRESH_LVL2 - 3)) |
---|
.. | .. |
---|
560 | 538 | |
---|
561 | 539 | rtlpriv->dm.dynamic_txhighpower_lvl = |
---|
562 | 540 | TXHIGHPWRLEVEL_LEVEL1; |
---|
563 | | - RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD, |
---|
564 | | - "TXHIGHPWRLEVEL_LEVEL1 (TxPwr=0x10)\n"); |
---|
| 541 | + rtl_dbg(rtlpriv, COMP_POWER, DBG_LOUD, |
---|
| 542 | + "TXHIGHPWRLEVEL_LEVEL1 (TxPwr=0x10)\n"); |
---|
565 | 543 | } else if (undec_sm_pwdb < |
---|
566 | 544 | (TX_POWER_NEAR_FIELD_THRESH_LVL1 - 5)) { |
---|
567 | 545 | rtlpriv->dm.dynamic_txhighpower_lvl = |
---|
568 | 546 | TXHIGHPWRLEVEL_NORMAL; |
---|
569 | | - RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD, |
---|
570 | | - "TXHIGHPWRLEVEL_NORMAL\n"); |
---|
| 547 | + rtl_dbg(rtlpriv, COMP_POWER, DBG_LOUD, |
---|
| 548 | + "TXHIGHPWRLEVEL_NORMAL\n"); |
---|
571 | 549 | } |
---|
572 | 550 | } |
---|
573 | 551 | if ((rtlpriv->dm.dynamic_txhighpower_lvl != rtlpriv->dm.last_dtp_lvl)) { |
---|
574 | | - RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD, |
---|
575 | | - "PHY_SetTxPowerLevel8192S() Channel = %d\n", |
---|
576 | | - rtlphy->current_channel); |
---|
| 552 | + rtl_dbg(rtlpriv, COMP_POWER, DBG_LOUD, |
---|
| 553 | + "PHY_SetTxPowerLevel8192S() Channel = %d\n", |
---|
| 554 | + rtlphy->current_channel); |
---|
577 | 555 | rtl92d_phy_set_txpower_level(hw, rtlphy->current_channel); |
---|
578 | 556 | } |
---|
579 | 557 | rtlpriv->dm.last_dtp_lvl = rtlpriv->dm.dynamic_txhighpower_lvl; |
---|
.. | .. |
---|
688 | 666 | |
---|
689 | 667 | u4tmp = (index_mapping[(rtlpriv->efuse.eeprom_thermalmeter - |
---|
690 | 668 | rtlpriv->dm.thermalvalue_rxgain)]) << 12; |
---|
691 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
692 | | - "===> Rx Gain %x\n", u4tmp); |
---|
| 669 | + rtl_dbg(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
| 670 | + "===> Rx Gain %x\n", u4tmp); |
---|
693 | 671 | for (i = RF90_PATH_A; i < rtlpriv->phy.num_total_rfpath; i++) |
---|
694 | 672 | rtl_set_rfreg(hw, i, 0x3C, RFREG_OFFSET_MASK, |
---|
695 | 673 | (rtlpriv->phy.reg_rf3c[i] & (~(0xF000))) | u4tmp); |
---|
.. | .. |
---|
702 | 680 | int i; |
---|
703 | 681 | unsigned long flag = 0; |
---|
704 | 682 | long temp_cck; |
---|
| 683 | + const u8 *cckswing; |
---|
705 | 684 | |
---|
706 | 685 | /* Query CCK default setting From 0xa24 */ |
---|
707 | 686 | rtl92d_acquire_cckandrw_pagea_ctl(hw, &flag); |
---|
.. | .. |
---|
709 | 688 | MASKDWORD) & MASKCCK; |
---|
710 | 689 | rtl92d_release_cckandrw_pagea_ctl(hw, &flag); |
---|
711 | 690 | for (i = 0; i < CCK_TABLE_LENGTH; i++) { |
---|
712 | | - if (rtlpriv->dm.cck_inch14) { |
---|
713 | | - if (!memcmp((void *)&temp_cck, |
---|
714 | | - (void *)&cckswing_table_ch14[i][2], 4)) { |
---|
715 | | - *cck_index_old = (u8) i; |
---|
716 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
717 | | - "Initial reg0x%x = 0x%lx, cck_index=0x%x, ch 14 %d\n", |
---|
718 | | - RCCK0_TXFILTER2, temp_cck, |
---|
719 | | - *cck_index_old, |
---|
720 | | - rtlpriv->dm.cck_inch14); |
---|
721 | | - break; |
---|
722 | | - } |
---|
723 | | - } else { |
---|
724 | | - if (!memcmp((void *) &temp_cck, |
---|
725 | | - &cckswing_table_ch1ch13[i][2], 4)) { |
---|
726 | | - *cck_index_old = (u8) i; |
---|
727 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
728 | | - "Initial reg0x%x = 0x%lx, cck_index = 0x%x, ch14 %d\n", |
---|
729 | | - RCCK0_TXFILTER2, temp_cck, |
---|
730 | | - *cck_index_old, |
---|
731 | | - rtlpriv->dm.cck_inch14); |
---|
732 | | - break; |
---|
733 | | - } |
---|
| 691 | + if (rtlpriv->dm.cck_inch14) |
---|
| 692 | + cckswing = &cckswing_table_ch14[i][2]; |
---|
| 693 | + else |
---|
| 694 | + cckswing = &cckswing_table_ch1ch13[i][2]; |
---|
| 695 | + |
---|
| 696 | + if (temp_cck == le32_to_cpu(*((__le32 *)cckswing))) { |
---|
| 697 | + *cck_index_old = (u8)i; |
---|
| 698 | + rtl_dbg(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
| 699 | + "Initial reg0x%x = 0x%lx, cck_index = 0x%x, ch14 %d\n", |
---|
| 700 | + RCCK0_TXFILTER2, temp_cck, |
---|
| 701 | + *cck_index_old, |
---|
| 702 | + rtlpriv->dm.cck_inch14); |
---|
| 703 | + break; |
---|
734 | 704 | } |
---|
735 | 705 | } |
---|
736 | 706 | *temp_cckg = temp_cck; |
---|
.. | .. |
---|
740 | 710 | bool *internal_pa, u8 thermalvalue, u8 delta, |
---|
741 | 711 | u8 rf, struct rtl_efuse *rtlefuse, |
---|
742 | 712 | struct rtl_priv *rtlpriv, struct rtl_phy *rtlphy, |
---|
743 | | - u8 index_mapping[5][INDEX_MAPPING_NUM], |
---|
744 | | - u8 index_mapping_pa[8][INDEX_MAPPING_NUM]) |
---|
| 713 | + const u8 index_mapping[5][INDEX_MAPPING_NUM], |
---|
| 714 | + const u8 index_mapping_pa[8][INDEX_MAPPING_NUM]) |
---|
745 | 715 | { |
---|
746 | 716 | int i; |
---|
747 | 717 | u8 index; |
---|
.. | .. |
---|
809 | 779 | bool internal_pa = false; |
---|
810 | 780 | long ele_a = 0, ele_d, temp_cck, val_x, value32; |
---|
811 | 781 | long val_y, ele_c = 0; |
---|
812 | | - u8 ofdm_index[3]; |
---|
| 782 | + u8 ofdm_index[2]; |
---|
813 | 783 | s8 cck_index = 0; |
---|
814 | | - u8 ofdm_index_old[3] = {0, 0, 0}; |
---|
| 784 | + u8 ofdm_index_old[2] = {0, 0}; |
---|
815 | 785 | s8 cck_index_old = 0; |
---|
816 | 786 | u8 index; |
---|
817 | 787 | int i; |
---|
.. | .. |
---|
819 | 789 | u8 ofdm_min_index = 6, ofdm_min_index_internal_pa = 3, rf; |
---|
820 | 790 | u8 indexforchannel = |
---|
821 | 791 | rtl92d_get_rightchnlplace_for_iqk(rtlphy->current_channel); |
---|
822 | | - u8 index_mapping[5][INDEX_MAPPING_NUM] = { |
---|
| 792 | + static const u8 index_mapping[5][INDEX_MAPPING_NUM] = { |
---|
823 | 793 | /* 5G, path A/MAC 0, decrease power */ |
---|
824 | 794 | {0, 1, 3, 6, 8, 9, 11, 13, 14, 16, 17, 18, 18}, |
---|
825 | 795 | /* 5G, path A/MAC 0, increase power */ |
---|
.. | .. |
---|
831 | 801 | /* 2.4G, for decreas power */ |
---|
832 | 802 | {0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10, 10}, |
---|
833 | 803 | }; |
---|
834 | | - u8 index_mapping_internal_pa[8][INDEX_MAPPING_NUM] = { |
---|
| 804 | + static const u8 index_mapping_internal_pa[8][INDEX_MAPPING_NUM] = { |
---|
835 | 805 | /* 5G, path A/MAC 0, ch36-64, decrease power */ |
---|
836 | 806 | {0, 1, 2, 4, 6, 7, 9, 11, 12, 14, 15, 16, 16}, |
---|
837 | 807 | /* 5G, path A/MAC 0, ch36-64, increase power */ |
---|
.. | .. |
---|
851 | 821 | }; |
---|
852 | 822 | |
---|
853 | 823 | rtlpriv->dm.txpower_trackinginit = true; |
---|
854 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, "\n"); |
---|
| 824 | + rtl_dbg(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, "\n"); |
---|
855 | 825 | thermalvalue = (u8) rtl_get_rfreg(hw, RF90_PATH_A, RF_T_METER, 0xf800); |
---|
856 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
857 | | - "Readback Thermal Meter = 0x%x pre thermal meter 0x%x eeprom_thermalmeter 0x%x\n", |
---|
858 | | - thermalvalue, |
---|
859 | | - rtlpriv->dm.thermalvalue, rtlefuse->eeprom_thermalmeter); |
---|
| 826 | + rtl_dbg(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
| 827 | + "Readback Thermal Meter = 0x%x pre thermal meter 0x%x eeprom_thermalmeter 0x%x\n", |
---|
| 828 | + thermalvalue, |
---|
| 829 | + rtlpriv->dm.thermalvalue, rtlefuse->eeprom_thermalmeter); |
---|
860 | 830 | rtl92d_phy_ap_calibrate(hw, (thermalvalue - |
---|
861 | 831 | rtlefuse->eeprom_thermalmeter)); |
---|
| 832 | + |
---|
| 833 | + if (!thermalvalue) |
---|
| 834 | + goto exit; |
---|
| 835 | + |
---|
862 | 836 | if (is2t) |
---|
863 | 837 | rf = 2; |
---|
864 | 838 | else |
---|
865 | 839 | rf = 1; |
---|
866 | | - if (thermalvalue) { |
---|
867 | | - ele_d = rtl_get_bbreg(hw, ROFDM0_XATxIQIMBALANCE, |
---|
| 840 | + |
---|
| 841 | + if (rtlpriv->dm.thermalvalue && !rtlhal->reloadtxpowerindex) |
---|
| 842 | + goto old_index_done; |
---|
| 843 | + |
---|
| 844 | + ele_d = rtl_get_bbreg(hw, ROFDM0_XATXIQIMBALANCE, MASKDWORD) & MASKOFDM_D; |
---|
| 845 | + for (i = 0; i < OFDM_TABLE_SIZE_92D; i++) { |
---|
| 846 | + if (ele_d == (ofdmswing_table[i] & MASKOFDM_D)) { |
---|
| 847 | + ofdm_index_old[0] = (u8)i; |
---|
| 848 | + |
---|
| 849 | + rtl_dbg(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
| 850 | + "Initial pathA ele_d reg0x%x = 0x%lx, ofdm_index=0x%x\n", |
---|
| 851 | + ROFDM0_XATXIQIMBALANCE, |
---|
| 852 | + ele_d, ofdm_index_old[0]); |
---|
| 853 | + break; |
---|
| 854 | + } |
---|
| 855 | + } |
---|
| 856 | + if (is2t) { |
---|
| 857 | + ele_d = rtl_get_bbreg(hw, ROFDM0_XBTXIQIMBALANCE, |
---|
868 | 858 | MASKDWORD) & MASKOFDM_D; |
---|
869 | 859 | for (i = 0; i < OFDM_TABLE_SIZE_92D; i++) { |
---|
870 | | - if (ele_d == (ofdmswing_table[i] & MASKOFDM_D)) { |
---|
871 | | - ofdm_index_old[0] = (u8) i; |
---|
872 | | - |
---|
873 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
874 | | - "Initial pathA ele_d reg0x%x = 0x%lx, ofdm_index=0x%x\n", |
---|
875 | | - ROFDM0_XATxIQIMBALANCE, |
---|
876 | | - ele_d, ofdm_index_old[0]); |
---|
| 860 | + if (ele_d == |
---|
| 861 | + (ofdmswing_table[i] & MASKOFDM_D)) { |
---|
| 862 | + ofdm_index_old[1] = (u8)i; |
---|
| 863 | + rtl_dbg(rtlpriv, COMP_POWER_TRACKING, |
---|
| 864 | + DBG_LOUD, |
---|
| 865 | + "Initial pathB ele_d reg 0x%x = 0x%lx, ofdm_index = 0x%x\n", |
---|
| 866 | + ROFDM0_XBTXIQIMBALANCE, ele_d, |
---|
| 867 | + ofdm_index_old[1]); |
---|
877 | 868 | break; |
---|
878 | 869 | } |
---|
879 | 870 | } |
---|
880 | | - if (is2t) { |
---|
881 | | - ele_d = rtl_get_bbreg(hw, ROFDM0_XBTxIQIMBALANCE, |
---|
882 | | - MASKDWORD) & MASKOFDM_D; |
---|
883 | | - for (i = 0; i < OFDM_TABLE_SIZE_92D; i++) { |
---|
884 | | - if (ele_d == |
---|
885 | | - (ofdmswing_table[i] & MASKOFDM_D)) { |
---|
886 | | - ofdm_index_old[1] = (u8) i; |
---|
887 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, |
---|
888 | | - DBG_LOUD, |
---|
889 | | - "Initial pathB ele_d reg 0x%x = 0x%lx, ofdm_index = 0x%x\n", |
---|
890 | | - ROFDM0_XBTxIQIMBALANCE, ele_d, |
---|
891 | | - ofdm_index_old[1]); |
---|
892 | | - break; |
---|
893 | | - } |
---|
894 | | - } |
---|
895 | | - } |
---|
896 | | - if (rtlhal->current_bandtype == BAND_ON_2_4G) { |
---|
897 | | - rtl92d_bandtype_2_4G(hw, &temp_cck, &cck_index_old); |
---|
898 | | - } else { |
---|
899 | | - temp_cck = 0x090e1317; |
---|
900 | | - cck_index_old = 12; |
---|
901 | | - } |
---|
902 | | - |
---|
903 | | - if (!rtlpriv->dm.thermalvalue) { |
---|
904 | | - rtlpriv->dm.thermalvalue = |
---|
905 | | - rtlefuse->eeprom_thermalmeter; |
---|
906 | | - rtlpriv->dm.thermalvalue_lck = thermalvalue; |
---|
907 | | - rtlpriv->dm.thermalvalue_iqk = thermalvalue; |
---|
908 | | - rtlpriv->dm.thermalvalue_rxgain = |
---|
909 | | - rtlefuse->eeprom_thermalmeter; |
---|
910 | | - for (i = 0; i < rf; i++) |
---|
911 | | - rtlpriv->dm.ofdm_index[i] = ofdm_index_old[i]; |
---|
912 | | - rtlpriv->dm.cck_index = cck_index_old; |
---|
913 | | - } |
---|
914 | | - if (rtlhal->reloadtxpowerindex) { |
---|
915 | | - for (i = 0; i < rf; i++) |
---|
916 | | - rtlpriv->dm.ofdm_index[i] = ofdm_index_old[i]; |
---|
917 | | - rtlpriv->dm.cck_index = cck_index_old; |
---|
918 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
919 | | - "reload ofdm index for band switch\n"); |
---|
920 | | - } |
---|
921 | | - rtlpriv->dm.thermalvalue_avg |
---|
922 | | - [rtlpriv->dm.thermalvalue_avg_index] = thermalvalue; |
---|
923 | | - rtlpriv->dm.thermalvalue_avg_index++; |
---|
924 | | - if (rtlpriv->dm.thermalvalue_avg_index == AVG_THERMAL_NUM) |
---|
925 | | - rtlpriv->dm.thermalvalue_avg_index = 0; |
---|
926 | | - for (i = 0; i < AVG_THERMAL_NUM; i++) { |
---|
927 | | - if (rtlpriv->dm.thermalvalue_avg[i]) { |
---|
928 | | - thermalvalue_avg += |
---|
929 | | - rtlpriv->dm.thermalvalue_avg[i]; |
---|
930 | | - thermalvalue_avg_count++; |
---|
931 | | - } |
---|
932 | | - } |
---|
933 | | - if (thermalvalue_avg_count) |
---|
934 | | - thermalvalue = (u8) (thermalvalue_avg / |
---|
935 | | - thermalvalue_avg_count); |
---|
936 | | - if (rtlhal->reloadtxpowerindex) { |
---|
937 | | - delta = (thermalvalue > rtlefuse->eeprom_thermalmeter) ? |
---|
938 | | - (thermalvalue - rtlefuse->eeprom_thermalmeter) : |
---|
939 | | - (rtlefuse->eeprom_thermalmeter - thermalvalue); |
---|
940 | | - rtlhal->reloadtxpowerindex = false; |
---|
941 | | - rtlpriv->dm.done_txpower = false; |
---|
942 | | - } else if (rtlpriv->dm.done_txpower) { |
---|
943 | | - delta = (thermalvalue > rtlpriv->dm.thermalvalue) ? |
---|
944 | | - (thermalvalue - rtlpriv->dm.thermalvalue) : |
---|
945 | | - (rtlpriv->dm.thermalvalue - thermalvalue); |
---|
946 | | - } else { |
---|
947 | | - delta = (thermalvalue > rtlefuse->eeprom_thermalmeter) ? |
---|
948 | | - (thermalvalue - rtlefuse->eeprom_thermalmeter) : |
---|
949 | | - (rtlefuse->eeprom_thermalmeter - thermalvalue); |
---|
950 | | - } |
---|
951 | | - delta_lck = (thermalvalue > rtlpriv->dm.thermalvalue_lck) ? |
---|
952 | | - (thermalvalue - rtlpriv->dm.thermalvalue_lck) : |
---|
953 | | - (rtlpriv->dm.thermalvalue_lck - thermalvalue); |
---|
954 | | - delta_iqk = (thermalvalue > rtlpriv->dm.thermalvalue_iqk) ? |
---|
955 | | - (thermalvalue - rtlpriv->dm.thermalvalue_iqk) : |
---|
956 | | - (rtlpriv->dm.thermalvalue_iqk - thermalvalue); |
---|
957 | | - delta_rxgain = |
---|
958 | | - (thermalvalue > rtlpriv->dm.thermalvalue_rxgain) ? |
---|
959 | | - (thermalvalue - rtlpriv->dm.thermalvalue_rxgain) : |
---|
960 | | - (rtlpriv->dm.thermalvalue_rxgain - thermalvalue); |
---|
961 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
962 | | - "Readback Thermal Meter = 0x%x pre thermal meter 0x%x eeprom_thermalmeter 0x%x delta 0x%x delta_lck 0x%x delta_iqk 0x%x\n", |
---|
963 | | - thermalvalue, rtlpriv->dm.thermalvalue, |
---|
964 | | - rtlefuse->eeprom_thermalmeter, delta, delta_lck, |
---|
965 | | - delta_iqk); |
---|
966 | | - if ((delta_lck > rtlefuse->delta_lck) && |
---|
967 | | - (rtlefuse->delta_lck != 0)) { |
---|
968 | | - rtlpriv->dm.thermalvalue_lck = thermalvalue; |
---|
969 | | - rtl92d_phy_lc_calibrate(hw); |
---|
970 | | - } |
---|
971 | | - if (delta > 0 && rtlpriv->dm.txpower_track_control) { |
---|
972 | | - rtlpriv->dm.done_txpower = true; |
---|
973 | | - delta = (thermalvalue > rtlefuse->eeprom_thermalmeter) ? |
---|
974 | | - (thermalvalue - rtlefuse->eeprom_thermalmeter) : |
---|
975 | | - (rtlefuse->eeprom_thermalmeter - thermalvalue); |
---|
976 | | - if (rtlhal->current_bandtype == BAND_ON_2_4G) { |
---|
977 | | - offset = 4; |
---|
978 | | - if (delta > INDEX_MAPPING_NUM - 1) |
---|
979 | | - index = index_mapping[offset] |
---|
980 | | - [INDEX_MAPPING_NUM - 1]; |
---|
981 | | - else |
---|
982 | | - index = index_mapping[offset][delta]; |
---|
983 | | - if (thermalvalue > rtlpriv->dm.thermalvalue) { |
---|
984 | | - for (i = 0; i < rf; i++) |
---|
985 | | - ofdm_index[i] -= delta; |
---|
986 | | - cck_index -= delta; |
---|
987 | | - } else { |
---|
988 | | - for (i = 0; i < rf; i++) |
---|
989 | | - ofdm_index[i] += index; |
---|
990 | | - cck_index += index; |
---|
991 | | - } |
---|
992 | | - } else if (rtlhal->current_bandtype == BAND_ON_5G) { |
---|
993 | | - rtl92d_bandtype_5G(rtlhal, ofdm_index, |
---|
994 | | - &internal_pa, thermalvalue, |
---|
995 | | - delta, rf, rtlefuse, rtlpriv, |
---|
996 | | - rtlphy, index_mapping, |
---|
997 | | - index_mapping_internal_pa); |
---|
998 | | - } |
---|
999 | | - if (is2t) { |
---|
1000 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
1001 | | - "temp OFDM_A_index=0x%x, OFDM_B_index = 0x%x,cck_index=0x%x\n", |
---|
1002 | | - rtlpriv->dm.ofdm_index[0], |
---|
1003 | | - rtlpriv->dm.ofdm_index[1], |
---|
1004 | | - rtlpriv->dm.cck_index); |
---|
1005 | | - } else { |
---|
1006 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
1007 | | - "temp OFDM_A_index=0x%x,cck_index = 0x%x\n", |
---|
1008 | | - rtlpriv->dm.ofdm_index[0], |
---|
1009 | | - rtlpriv->dm.cck_index); |
---|
1010 | | - } |
---|
1011 | | - for (i = 0; i < rf; i++) { |
---|
1012 | | - if (ofdm_index[i] > OFDM_TABLE_SIZE_92D - 1) |
---|
1013 | | - ofdm_index[i] = OFDM_TABLE_SIZE_92D - 1; |
---|
1014 | | - else if (ofdm_index[i] < ofdm_min_index) |
---|
1015 | | - ofdm_index[i] = ofdm_min_index; |
---|
1016 | | - } |
---|
1017 | | - if (rtlhal->current_bandtype == BAND_ON_2_4G) { |
---|
1018 | | - if (cck_index > CCK_TABLE_SIZE - 1) { |
---|
1019 | | - cck_index = CCK_TABLE_SIZE - 1; |
---|
1020 | | - } else if (internal_pa || |
---|
1021 | | - rtlhal->current_bandtype == |
---|
1022 | | - BAND_ON_2_4G) { |
---|
1023 | | - if (ofdm_index[i] < |
---|
1024 | | - ofdm_min_index_internal_pa) |
---|
1025 | | - ofdm_index[i] = |
---|
1026 | | - ofdm_min_index_internal_pa; |
---|
1027 | | - } else if (cck_index < 0) { |
---|
1028 | | - cck_index = 0; |
---|
1029 | | - } |
---|
1030 | | - } |
---|
1031 | | - if (is2t) { |
---|
1032 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
1033 | | - "new OFDM_A_index=0x%x, OFDM_B_index = 0x%x, cck_index=0x%x\n", |
---|
1034 | | - ofdm_index[0], ofdm_index[1], |
---|
1035 | | - cck_index); |
---|
1036 | | - } else { |
---|
1037 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
1038 | | - "new OFDM_A_index=0x%x,cck_index = 0x%x\n", |
---|
1039 | | - ofdm_index[0], cck_index); |
---|
1040 | | - } |
---|
1041 | | - ele_d = (ofdmswing_table[(u8) ofdm_index[0]] & |
---|
1042 | | - 0xFFC00000) >> 22; |
---|
1043 | | - val_x = rtlphy->iqk_matrix |
---|
1044 | | - [indexforchannel].value[0][0]; |
---|
1045 | | - val_y = rtlphy->iqk_matrix |
---|
1046 | | - [indexforchannel].value[0][1]; |
---|
1047 | | - if (val_x != 0) { |
---|
1048 | | - if ((val_x & 0x00000200) != 0) |
---|
1049 | | - val_x = val_x | 0xFFFFFC00; |
---|
1050 | | - ele_a = |
---|
1051 | | - ((val_x * ele_d) >> 8) & 0x000003FF; |
---|
1052 | | - |
---|
1053 | | - /* new element C = element D x Y */ |
---|
1054 | | - if ((val_y & 0x00000200) != 0) |
---|
1055 | | - val_y = val_y | 0xFFFFFC00; |
---|
1056 | | - ele_c = ((val_y * ele_d) >> 8) & 0x000003FF; |
---|
1057 | | - |
---|
1058 | | - /* wirte new elements A, C, D to regC80 and |
---|
1059 | | - * regC94, element B is always 0 */ |
---|
1060 | | - value32 = (ele_d << 22) | ((ele_c & 0x3F) << |
---|
1061 | | - 16) | ele_a; |
---|
1062 | | - rtl_set_bbreg(hw, ROFDM0_XATxIQIMBALANCE, |
---|
1063 | | - MASKDWORD, value32); |
---|
1064 | | - |
---|
1065 | | - value32 = (ele_c & 0x000003C0) >> 6; |
---|
1066 | | - rtl_set_bbreg(hw, ROFDM0_XCTxAFE, MASKH4BITS, |
---|
1067 | | - value32); |
---|
1068 | | - |
---|
1069 | | - value32 = ((val_x * ele_d) >> 7) & 0x01; |
---|
1070 | | - rtl_set_bbreg(hw, ROFDM0_ECCATHRESHOLD, BIT(24), |
---|
1071 | | - value32); |
---|
1072 | | - |
---|
1073 | | - } else { |
---|
1074 | | - rtl_set_bbreg(hw, ROFDM0_XATxIQIMBALANCE, |
---|
1075 | | - MASKDWORD, |
---|
1076 | | - ofdmswing_table |
---|
1077 | | - [(u8)ofdm_index[0]]); |
---|
1078 | | - rtl_set_bbreg(hw, ROFDM0_XCTxAFE, MASKH4BITS, |
---|
1079 | | - 0x00); |
---|
1080 | | - rtl_set_bbreg(hw, ROFDM0_ECCATHRESHOLD, |
---|
1081 | | - BIT(24), 0x00); |
---|
1082 | | - } |
---|
1083 | | - |
---|
1084 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
1085 | | - "TxPwrTracking for interface %d path A: X = 0x%lx, Y = 0x%lx ele_A = 0x%lx ele_C = 0x%lx ele_D = 0x%lx 0xe94 = 0x%lx 0xe9c = 0x%lx\n", |
---|
1086 | | - rtlhal->interfaceindex, |
---|
1087 | | - val_x, val_y, ele_a, ele_c, ele_d, |
---|
1088 | | - val_x, val_y); |
---|
1089 | | - |
---|
1090 | | - if (cck_index >= CCK_TABLE_SIZE) |
---|
1091 | | - cck_index = CCK_TABLE_SIZE - 1; |
---|
1092 | | - if (cck_index < 0) |
---|
1093 | | - cck_index = 0; |
---|
1094 | | - if (rtlhal->current_bandtype == BAND_ON_2_4G) { |
---|
1095 | | - /* Adjust CCK according to IQK result */ |
---|
1096 | | - if (!rtlpriv->dm.cck_inch14) { |
---|
1097 | | - rtl_write_byte(rtlpriv, 0xa22, |
---|
1098 | | - cckswing_table_ch1ch13 |
---|
1099 | | - [(u8)cck_index][0]); |
---|
1100 | | - rtl_write_byte(rtlpriv, 0xa23, |
---|
1101 | | - cckswing_table_ch1ch13 |
---|
1102 | | - [(u8)cck_index][1]); |
---|
1103 | | - rtl_write_byte(rtlpriv, 0xa24, |
---|
1104 | | - cckswing_table_ch1ch13 |
---|
1105 | | - [(u8)cck_index][2]); |
---|
1106 | | - rtl_write_byte(rtlpriv, 0xa25, |
---|
1107 | | - cckswing_table_ch1ch13 |
---|
1108 | | - [(u8)cck_index][3]); |
---|
1109 | | - rtl_write_byte(rtlpriv, 0xa26, |
---|
1110 | | - cckswing_table_ch1ch13 |
---|
1111 | | - [(u8)cck_index][4]); |
---|
1112 | | - rtl_write_byte(rtlpriv, 0xa27, |
---|
1113 | | - cckswing_table_ch1ch13 |
---|
1114 | | - [(u8)cck_index][5]); |
---|
1115 | | - rtl_write_byte(rtlpriv, 0xa28, |
---|
1116 | | - cckswing_table_ch1ch13 |
---|
1117 | | - [(u8)cck_index][6]); |
---|
1118 | | - rtl_write_byte(rtlpriv, 0xa29, |
---|
1119 | | - cckswing_table_ch1ch13 |
---|
1120 | | - [(u8)cck_index][7]); |
---|
1121 | | - } else { |
---|
1122 | | - rtl_write_byte(rtlpriv, 0xa22, |
---|
1123 | | - cckswing_table_ch14 |
---|
1124 | | - [(u8)cck_index][0]); |
---|
1125 | | - rtl_write_byte(rtlpriv, 0xa23, |
---|
1126 | | - cckswing_table_ch14 |
---|
1127 | | - [(u8)cck_index][1]); |
---|
1128 | | - rtl_write_byte(rtlpriv, 0xa24, |
---|
1129 | | - cckswing_table_ch14 |
---|
1130 | | - [(u8)cck_index][2]); |
---|
1131 | | - rtl_write_byte(rtlpriv, 0xa25, |
---|
1132 | | - cckswing_table_ch14 |
---|
1133 | | - [(u8)cck_index][3]); |
---|
1134 | | - rtl_write_byte(rtlpriv, 0xa26, |
---|
1135 | | - cckswing_table_ch14 |
---|
1136 | | - [(u8)cck_index][4]); |
---|
1137 | | - rtl_write_byte(rtlpriv, 0xa27, |
---|
1138 | | - cckswing_table_ch14 |
---|
1139 | | - [(u8)cck_index][5]); |
---|
1140 | | - rtl_write_byte(rtlpriv, 0xa28, |
---|
1141 | | - cckswing_table_ch14 |
---|
1142 | | - [(u8)cck_index][6]); |
---|
1143 | | - rtl_write_byte(rtlpriv, 0xa29, |
---|
1144 | | - cckswing_table_ch14 |
---|
1145 | | - [(u8)cck_index][7]); |
---|
1146 | | - } |
---|
1147 | | - } |
---|
1148 | | - if (is2t) { |
---|
1149 | | - ele_d = (ofdmswing_table[(u8) ofdm_index[1]] & |
---|
1150 | | - 0xFFC00000) >> 22; |
---|
1151 | | - val_x = rtlphy->iqk_matrix |
---|
1152 | | - [indexforchannel].value[0][4]; |
---|
1153 | | - val_y = rtlphy->iqk_matrix |
---|
1154 | | - [indexforchannel].value[0][5]; |
---|
1155 | | - if (val_x != 0) { |
---|
1156 | | - if ((val_x & 0x00000200) != 0) |
---|
1157 | | - /* consider minus */ |
---|
1158 | | - val_x = val_x | 0xFFFFFC00; |
---|
1159 | | - ele_a = ((val_x * ele_d) >> 8) & |
---|
1160 | | - 0x000003FF; |
---|
1161 | | - /* new element C = element D x Y */ |
---|
1162 | | - if ((val_y & 0x00000200) != 0) |
---|
1163 | | - val_y = |
---|
1164 | | - val_y | 0xFFFFFC00; |
---|
1165 | | - ele_c = |
---|
1166 | | - ((val_y * |
---|
1167 | | - ele_d) >> 8) & 0x00003FF; |
---|
1168 | | - /* write new elements A, C, D to regC88 |
---|
1169 | | - * and regC9C, element B is always 0 |
---|
1170 | | - */ |
---|
1171 | | - value32 = (ele_d << 22) | |
---|
1172 | | - ((ele_c & 0x3F) << 16) | |
---|
1173 | | - ele_a; |
---|
1174 | | - rtl_set_bbreg(hw, |
---|
1175 | | - ROFDM0_XBTxIQIMBALANCE, |
---|
1176 | | - MASKDWORD, value32); |
---|
1177 | | - value32 = (ele_c & 0x000003C0) >> 6; |
---|
1178 | | - rtl_set_bbreg(hw, ROFDM0_XDTxAFE, |
---|
1179 | | - MASKH4BITS, value32); |
---|
1180 | | - value32 = ((val_x * ele_d) >> 7) & 0x01; |
---|
1181 | | - rtl_set_bbreg(hw, ROFDM0_ECCATHRESHOLD, |
---|
1182 | | - BIT(28), value32); |
---|
1183 | | - } else { |
---|
1184 | | - rtl_set_bbreg(hw, |
---|
1185 | | - ROFDM0_XBTxIQIMBALANCE, |
---|
1186 | | - MASKDWORD, |
---|
1187 | | - ofdmswing_table |
---|
1188 | | - [(u8) ofdm_index[1]]); |
---|
1189 | | - rtl_set_bbreg(hw, ROFDM0_XDTxAFE, |
---|
1190 | | - MASKH4BITS, 0x00); |
---|
1191 | | - rtl_set_bbreg(hw, ROFDM0_ECCATHRESHOLD, |
---|
1192 | | - BIT(28), 0x00); |
---|
1193 | | - } |
---|
1194 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
1195 | | - "TxPwrTracking path B: X = 0x%lx, Y = 0x%lx ele_A = 0x%lx ele_C = 0x%lx ele_D = 0x%lx 0xeb4 = 0x%lx 0xebc = 0x%lx\n", |
---|
1196 | | - val_x, val_y, ele_a, ele_c, |
---|
1197 | | - ele_d, val_x, val_y); |
---|
1198 | | - } |
---|
1199 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
1200 | | - "TxPwrTracking 0xc80 = 0x%x, 0xc94 = 0x%x RF 0x24 = 0x%x\n", |
---|
1201 | | - rtl_get_bbreg(hw, 0xc80, MASKDWORD), |
---|
1202 | | - rtl_get_bbreg(hw, 0xc94, MASKDWORD), |
---|
1203 | | - rtl_get_rfreg(hw, RF90_PATH_A, 0x24, |
---|
1204 | | - RFREG_OFFSET_MASK)); |
---|
1205 | | - } |
---|
1206 | | - if ((delta_iqk > rtlefuse->delta_iqk) && |
---|
1207 | | - (rtlefuse->delta_iqk != 0)) { |
---|
1208 | | - rtl92d_phy_reset_iqk_result(hw); |
---|
1209 | | - rtlpriv->dm.thermalvalue_iqk = thermalvalue; |
---|
1210 | | - rtl92d_phy_iq_calibrate(hw); |
---|
1211 | | - } |
---|
1212 | | - if (delta_rxgain > 0 && rtlhal->current_bandtype == BAND_ON_5G |
---|
1213 | | - && thermalvalue <= rtlefuse->eeprom_thermalmeter) { |
---|
1214 | | - rtlpriv->dm.thermalvalue_rxgain = thermalvalue; |
---|
1215 | | - rtl92d_dm_rxgain_tracking_thermalmeter(hw); |
---|
1216 | | - } |
---|
1217 | | - if (rtlpriv->dm.txpower_track_control) |
---|
1218 | | - rtlpriv->dm.thermalvalue = thermalvalue; |
---|
| 871 | + } |
---|
| 872 | + if (rtlhal->current_bandtype == BAND_ON_2_4G) { |
---|
| 873 | + rtl92d_bandtype_2_4G(hw, &temp_cck, &cck_index_old); |
---|
| 874 | + } else { |
---|
| 875 | + temp_cck = 0x090e1317; |
---|
| 876 | + cck_index_old = 12; |
---|
1219 | 877 | } |
---|
1220 | 878 | |
---|
1221 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, "<===\n"); |
---|
| 879 | + if (!rtlpriv->dm.thermalvalue) { |
---|
| 880 | + rtlpriv->dm.thermalvalue = rtlefuse->eeprom_thermalmeter; |
---|
| 881 | + rtlpriv->dm.thermalvalue_lck = thermalvalue; |
---|
| 882 | + rtlpriv->dm.thermalvalue_iqk = thermalvalue; |
---|
| 883 | + rtlpriv->dm.thermalvalue_rxgain = rtlefuse->eeprom_thermalmeter; |
---|
| 884 | + for (i = 0; i < rf; i++) |
---|
| 885 | + rtlpriv->dm.ofdm_index[i] = ofdm_index_old[i]; |
---|
| 886 | + rtlpriv->dm.cck_index = cck_index_old; |
---|
| 887 | + } |
---|
| 888 | + if (rtlhal->reloadtxpowerindex) { |
---|
| 889 | + for (i = 0; i < rf; i++) |
---|
| 890 | + rtlpriv->dm.ofdm_index[i] = ofdm_index_old[i]; |
---|
| 891 | + rtlpriv->dm.cck_index = cck_index_old; |
---|
| 892 | + rtl_dbg(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
| 893 | + "reload ofdm index for band switch\n"); |
---|
| 894 | + } |
---|
| 895 | +old_index_done: |
---|
| 896 | + for (i = 0; i < rf; i++) |
---|
| 897 | + ofdm_index[i] = rtlpriv->dm.ofdm_index[i]; |
---|
| 898 | + |
---|
| 899 | + rtlpriv->dm.thermalvalue_avg |
---|
| 900 | + [rtlpriv->dm.thermalvalue_avg_index] = thermalvalue; |
---|
| 901 | + rtlpriv->dm.thermalvalue_avg_index++; |
---|
| 902 | + if (rtlpriv->dm.thermalvalue_avg_index == AVG_THERMAL_NUM) |
---|
| 903 | + rtlpriv->dm.thermalvalue_avg_index = 0; |
---|
| 904 | + for (i = 0; i < AVG_THERMAL_NUM; i++) { |
---|
| 905 | + if (rtlpriv->dm.thermalvalue_avg[i]) { |
---|
| 906 | + thermalvalue_avg += rtlpriv->dm.thermalvalue_avg[i]; |
---|
| 907 | + thermalvalue_avg_count++; |
---|
| 908 | + } |
---|
| 909 | + } |
---|
| 910 | + if (thermalvalue_avg_count) |
---|
| 911 | + thermalvalue = (u8)(thermalvalue_avg / thermalvalue_avg_count); |
---|
| 912 | + if (rtlhal->reloadtxpowerindex) { |
---|
| 913 | + delta = (thermalvalue > rtlefuse->eeprom_thermalmeter) ? |
---|
| 914 | + (thermalvalue - rtlefuse->eeprom_thermalmeter) : |
---|
| 915 | + (rtlefuse->eeprom_thermalmeter - thermalvalue); |
---|
| 916 | + rtlhal->reloadtxpowerindex = false; |
---|
| 917 | + rtlpriv->dm.done_txpower = false; |
---|
| 918 | + } else if (rtlpriv->dm.done_txpower) { |
---|
| 919 | + delta = (thermalvalue > rtlpriv->dm.thermalvalue) ? |
---|
| 920 | + (thermalvalue - rtlpriv->dm.thermalvalue) : |
---|
| 921 | + (rtlpriv->dm.thermalvalue - thermalvalue); |
---|
| 922 | + } else { |
---|
| 923 | + delta = (thermalvalue > rtlefuse->eeprom_thermalmeter) ? |
---|
| 924 | + (thermalvalue - rtlefuse->eeprom_thermalmeter) : |
---|
| 925 | + (rtlefuse->eeprom_thermalmeter - thermalvalue); |
---|
| 926 | + } |
---|
| 927 | + delta_lck = (thermalvalue > rtlpriv->dm.thermalvalue_lck) ? |
---|
| 928 | + (thermalvalue - rtlpriv->dm.thermalvalue_lck) : |
---|
| 929 | + (rtlpriv->dm.thermalvalue_lck - thermalvalue); |
---|
| 930 | + delta_iqk = (thermalvalue > rtlpriv->dm.thermalvalue_iqk) ? |
---|
| 931 | + (thermalvalue - rtlpriv->dm.thermalvalue_iqk) : |
---|
| 932 | + (rtlpriv->dm.thermalvalue_iqk - thermalvalue); |
---|
| 933 | + delta_rxgain = |
---|
| 934 | + (thermalvalue > rtlpriv->dm.thermalvalue_rxgain) ? |
---|
| 935 | + (thermalvalue - rtlpriv->dm.thermalvalue_rxgain) : |
---|
| 936 | + (rtlpriv->dm.thermalvalue_rxgain - thermalvalue); |
---|
| 937 | + rtl_dbg(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
| 938 | + "Readback Thermal Meter = 0x%x pre thermal meter 0x%x eeprom_thermalmeter 0x%x delta 0x%x delta_lck 0x%x delta_iqk 0x%x\n", |
---|
| 939 | + thermalvalue, rtlpriv->dm.thermalvalue, |
---|
| 940 | + rtlefuse->eeprom_thermalmeter, delta, delta_lck, |
---|
| 941 | + delta_iqk); |
---|
| 942 | + if (delta_lck > rtlefuse->delta_lck && rtlefuse->delta_lck != 0) { |
---|
| 943 | + rtlpriv->dm.thermalvalue_lck = thermalvalue; |
---|
| 944 | + rtl92d_phy_lc_calibrate(hw); |
---|
| 945 | + } |
---|
| 946 | + |
---|
| 947 | + if (delta == 0 || !rtlpriv->dm.txpower_track_control) |
---|
| 948 | + goto check_delta; |
---|
| 949 | + |
---|
| 950 | + rtlpriv->dm.done_txpower = true; |
---|
| 951 | + delta = (thermalvalue > rtlefuse->eeprom_thermalmeter) ? |
---|
| 952 | + (thermalvalue - rtlefuse->eeprom_thermalmeter) : |
---|
| 953 | + (rtlefuse->eeprom_thermalmeter - thermalvalue); |
---|
| 954 | + if (rtlhal->current_bandtype == BAND_ON_2_4G) { |
---|
| 955 | + offset = 4; |
---|
| 956 | + if (delta > INDEX_MAPPING_NUM - 1) |
---|
| 957 | + index = index_mapping[offset][INDEX_MAPPING_NUM - 1]; |
---|
| 958 | + else |
---|
| 959 | + index = index_mapping[offset][delta]; |
---|
| 960 | + if (thermalvalue > rtlpriv->dm.thermalvalue) { |
---|
| 961 | + for (i = 0; i < rf; i++) |
---|
| 962 | + ofdm_index[i] -= delta; |
---|
| 963 | + cck_index -= delta; |
---|
| 964 | + } else { |
---|
| 965 | + for (i = 0; i < rf; i++) |
---|
| 966 | + ofdm_index[i] += index; |
---|
| 967 | + cck_index += index; |
---|
| 968 | + } |
---|
| 969 | + } else if (rtlhal->current_bandtype == BAND_ON_5G) { |
---|
| 970 | + rtl92d_bandtype_5G(rtlhal, ofdm_index, |
---|
| 971 | + &internal_pa, thermalvalue, |
---|
| 972 | + delta, rf, rtlefuse, rtlpriv, |
---|
| 973 | + rtlphy, index_mapping, |
---|
| 974 | + index_mapping_internal_pa); |
---|
| 975 | + } |
---|
| 976 | + if (is2t) { |
---|
| 977 | + rtl_dbg(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
| 978 | + "temp OFDM_A_index=0x%x, OFDM_B_index = 0x%x,cck_index=0x%x\n", |
---|
| 979 | + rtlpriv->dm.ofdm_index[0], |
---|
| 980 | + rtlpriv->dm.ofdm_index[1], |
---|
| 981 | + rtlpriv->dm.cck_index); |
---|
| 982 | + } else { |
---|
| 983 | + rtl_dbg(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
| 984 | + "temp OFDM_A_index=0x%x,cck_index = 0x%x\n", |
---|
| 985 | + rtlpriv->dm.ofdm_index[0], |
---|
| 986 | + rtlpriv->dm.cck_index); |
---|
| 987 | + } |
---|
| 988 | + for (i = 0; i < rf; i++) { |
---|
| 989 | + if (ofdm_index[i] > OFDM_TABLE_SIZE_92D - 1) |
---|
| 990 | + ofdm_index[i] = OFDM_TABLE_SIZE_92D - 1; |
---|
| 991 | + else if (ofdm_index[i] < ofdm_min_index) |
---|
| 992 | + ofdm_index[i] = ofdm_min_index; |
---|
| 993 | + } |
---|
| 994 | + if (rtlhal->current_bandtype == BAND_ON_2_4G) { |
---|
| 995 | + if (cck_index > CCK_TABLE_SIZE - 1) { |
---|
| 996 | + cck_index = CCK_TABLE_SIZE - 1; |
---|
| 997 | + } else if (internal_pa || |
---|
| 998 | + rtlhal->current_bandtype == BAND_ON_2_4G) { |
---|
| 999 | + if (ofdm_index[i] < ofdm_min_index_internal_pa) |
---|
| 1000 | + ofdm_index[i] = ofdm_min_index_internal_pa; |
---|
| 1001 | + } else if (cck_index < 0) { |
---|
| 1002 | + cck_index = 0; |
---|
| 1003 | + } |
---|
| 1004 | + } |
---|
| 1005 | + if (is2t) { |
---|
| 1006 | + rtl_dbg(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
| 1007 | + "new OFDM_A_index=0x%x, OFDM_B_index = 0x%x, cck_index=0x%x\n", |
---|
| 1008 | + ofdm_index[0], ofdm_index[1], |
---|
| 1009 | + cck_index); |
---|
| 1010 | + } else { |
---|
| 1011 | + rtl_dbg(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
| 1012 | + "new OFDM_A_index=0x%x,cck_index = 0x%x\n", |
---|
| 1013 | + ofdm_index[0], cck_index); |
---|
| 1014 | + } |
---|
| 1015 | + ele_d = (ofdmswing_table[ofdm_index[0]] & 0xFFC00000) >> 22; |
---|
| 1016 | + val_x = rtlphy->iqk_matrix[indexforchannel].value[0][0]; |
---|
| 1017 | + val_y = rtlphy->iqk_matrix[indexforchannel].value[0][1]; |
---|
| 1018 | + if (val_x != 0) { |
---|
| 1019 | + if ((val_x & 0x00000200) != 0) |
---|
| 1020 | + val_x = val_x | 0xFFFFFC00; |
---|
| 1021 | + ele_a = ((val_x * ele_d) >> 8) & 0x000003FF; |
---|
| 1022 | + |
---|
| 1023 | + /* new element C = element D x Y */ |
---|
| 1024 | + if ((val_y & 0x00000200) != 0) |
---|
| 1025 | + val_y = val_y | 0xFFFFFC00; |
---|
| 1026 | + ele_c = ((val_y * ele_d) >> 8) & 0x000003FF; |
---|
| 1027 | + |
---|
| 1028 | + /* write new elements A, C, D to regC80 and |
---|
| 1029 | + * regC94, element B is always 0 |
---|
| 1030 | + */ |
---|
| 1031 | + value32 = (ele_d << 22) | ((ele_c & 0x3F) << 16) | ele_a; |
---|
| 1032 | + rtl_set_bbreg(hw, ROFDM0_XATXIQIMBALANCE, |
---|
| 1033 | + MASKDWORD, value32); |
---|
| 1034 | + |
---|
| 1035 | + value32 = (ele_c & 0x000003C0) >> 6; |
---|
| 1036 | + rtl_set_bbreg(hw, ROFDM0_XCTXAFE, MASKH4BITS, |
---|
| 1037 | + value32); |
---|
| 1038 | + |
---|
| 1039 | + value32 = ((val_x * ele_d) >> 7) & 0x01; |
---|
| 1040 | + rtl_set_bbreg(hw, ROFDM0_ECCATHRESHOLD, BIT(24), |
---|
| 1041 | + value32); |
---|
| 1042 | + |
---|
| 1043 | + } else { |
---|
| 1044 | + rtl_set_bbreg(hw, ROFDM0_XATXIQIMBALANCE, |
---|
| 1045 | + MASKDWORD, |
---|
| 1046 | + ofdmswing_table[(u8)ofdm_index[0]]); |
---|
| 1047 | + rtl_set_bbreg(hw, ROFDM0_XCTXAFE, MASKH4BITS, |
---|
| 1048 | + 0x00); |
---|
| 1049 | + rtl_set_bbreg(hw, ROFDM0_ECCATHRESHOLD, |
---|
| 1050 | + BIT(24), 0x00); |
---|
| 1051 | + } |
---|
| 1052 | + |
---|
| 1053 | + rtl_dbg(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
| 1054 | + "TxPwrTracking for interface %d path A: X = 0x%lx, Y = 0x%lx ele_A = 0x%lx ele_C = 0x%lx ele_D = 0x%lx 0xe94 = 0x%lx 0xe9c = 0x%lx\n", |
---|
| 1055 | + rtlhal->interfaceindex, |
---|
| 1056 | + val_x, val_y, ele_a, ele_c, ele_d, |
---|
| 1057 | + val_x, val_y); |
---|
| 1058 | + |
---|
| 1059 | + if (cck_index >= CCK_TABLE_SIZE) |
---|
| 1060 | + cck_index = CCK_TABLE_SIZE - 1; |
---|
| 1061 | + if (cck_index < 0) |
---|
| 1062 | + cck_index = 0; |
---|
| 1063 | + if (rtlhal->current_bandtype == BAND_ON_2_4G) { |
---|
| 1064 | + /* Adjust CCK according to IQK result */ |
---|
| 1065 | + if (!rtlpriv->dm.cck_inch14) { |
---|
| 1066 | + rtl_write_byte(rtlpriv, 0xa22, |
---|
| 1067 | + cckswing_table_ch1ch13[cck_index][0]); |
---|
| 1068 | + rtl_write_byte(rtlpriv, 0xa23, |
---|
| 1069 | + cckswing_table_ch1ch13[cck_index][1]); |
---|
| 1070 | + rtl_write_byte(rtlpriv, 0xa24, |
---|
| 1071 | + cckswing_table_ch1ch13[cck_index][2]); |
---|
| 1072 | + rtl_write_byte(rtlpriv, 0xa25, |
---|
| 1073 | + cckswing_table_ch1ch13[cck_index][3]); |
---|
| 1074 | + rtl_write_byte(rtlpriv, 0xa26, |
---|
| 1075 | + cckswing_table_ch1ch13[cck_index][4]); |
---|
| 1076 | + rtl_write_byte(rtlpriv, 0xa27, |
---|
| 1077 | + cckswing_table_ch1ch13[cck_index][5]); |
---|
| 1078 | + rtl_write_byte(rtlpriv, 0xa28, |
---|
| 1079 | + cckswing_table_ch1ch13[cck_index][6]); |
---|
| 1080 | + rtl_write_byte(rtlpriv, 0xa29, |
---|
| 1081 | + cckswing_table_ch1ch13[cck_index][7]); |
---|
| 1082 | + } else { |
---|
| 1083 | + rtl_write_byte(rtlpriv, 0xa22, |
---|
| 1084 | + cckswing_table_ch14[cck_index][0]); |
---|
| 1085 | + rtl_write_byte(rtlpriv, 0xa23, |
---|
| 1086 | + cckswing_table_ch14[cck_index][1]); |
---|
| 1087 | + rtl_write_byte(rtlpriv, 0xa24, |
---|
| 1088 | + cckswing_table_ch14[cck_index][2]); |
---|
| 1089 | + rtl_write_byte(rtlpriv, 0xa25, |
---|
| 1090 | + cckswing_table_ch14[cck_index][3]); |
---|
| 1091 | + rtl_write_byte(rtlpriv, 0xa26, |
---|
| 1092 | + cckswing_table_ch14[cck_index][4]); |
---|
| 1093 | + rtl_write_byte(rtlpriv, 0xa27, |
---|
| 1094 | + cckswing_table_ch14[cck_index][5]); |
---|
| 1095 | + rtl_write_byte(rtlpriv, 0xa28, |
---|
| 1096 | + cckswing_table_ch14[cck_index][6]); |
---|
| 1097 | + rtl_write_byte(rtlpriv, 0xa29, |
---|
| 1098 | + cckswing_table_ch14[cck_index][7]); |
---|
| 1099 | + } |
---|
| 1100 | + } |
---|
| 1101 | + if (is2t) { |
---|
| 1102 | + ele_d = (ofdmswing_table[ofdm_index[1]] & 0xFFC00000) >> 22; |
---|
| 1103 | + val_x = rtlphy->iqk_matrix[indexforchannel].value[0][4]; |
---|
| 1104 | + val_y = rtlphy->iqk_matrix[indexforchannel].value[0][5]; |
---|
| 1105 | + if (val_x != 0) { |
---|
| 1106 | + if ((val_x & 0x00000200) != 0) |
---|
| 1107 | + /* consider minus */ |
---|
| 1108 | + val_x = val_x | 0xFFFFFC00; |
---|
| 1109 | + ele_a = ((val_x * ele_d) >> 8) & 0x000003FF; |
---|
| 1110 | + /* new element C = element D x Y */ |
---|
| 1111 | + if ((val_y & 0x00000200) != 0) |
---|
| 1112 | + val_y = val_y | 0xFFFFFC00; |
---|
| 1113 | + ele_c = ((val_y * ele_d) >> 8) & 0x00003FF; |
---|
| 1114 | + /* write new elements A, C, D to regC88 |
---|
| 1115 | + * and regC9C, element B is always 0 |
---|
| 1116 | + */ |
---|
| 1117 | + value32 = (ele_d << 22) | ((ele_c & 0x3F) << 16) | ele_a; |
---|
| 1118 | + rtl_set_bbreg(hw, |
---|
| 1119 | + ROFDM0_XBTXIQIMBALANCE, |
---|
| 1120 | + MASKDWORD, value32); |
---|
| 1121 | + value32 = (ele_c & 0x000003C0) >> 6; |
---|
| 1122 | + rtl_set_bbreg(hw, ROFDM0_XDTXAFE, |
---|
| 1123 | + MASKH4BITS, value32); |
---|
| 1124 | + value32 = ((val_x * ele_d) >> 7) & 0x01; |
---|
| 1125 | + rtl_set_bbreg(hw, ROFDM0_ECCATHRESHOLD, |
---|
| 1126 | + BIT(28), value32); |
---|
| 1127 | + } else { |
---|
| 1128 | + rtl_set_bbreg(hw, |
---|
| 1129 | + ROFDM0_XBTXIQIMBALANCE, |
---|
| 1130 | + MASKDWORD, |
---|
| 1131 | + ofdmswing_table[ofdm_index[1]]); |
---|
| 1132 | + rtl_set_bbreg(hw, ROFDM0_XDTXAFE, |
---|
| 1133 | + MASKH4BITS, 0x00); |
---|
| 1134 | + rtl_set_bbreg(hw, ROFDM0_ECCATHRESHOLD, |
---|
| 1135 | + BIT(28), 0x00); |
---|
| 1136 | + } |
---|
| 1137 | + rtl_dbg(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
| 1138 | + "TxPwrTracking path B: X = 0x%lx, Y = 0x%lx ele_A = 0x%lx ele_C = 0x%lx ele_D = 0x%lx 0xeb4 = 0x%lx 0xebc = 0x%lx\n", |
---|
| 1139 | + val_x, val_y, ele_a, ele_c, |
---|
| 1140 | + ele_d, val_x, val_y); |
---|
| 1141 | + } |
---|
| 1142 | + rtl_dbg(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
| 1143 | + "TxPwrTracking 0xc80 = 0x%x, 0xc94 = 0x%x RF 0x24 = 0x%x\n", |
---|
| 1144 | + rtl_get_bbreg(hw, 0xc80, MASKDWORD), |
---|
| 1145 | + rtl_get_bbreg(hw, 0xc94, MASKDWORD), |
---|
| 1146 | + rtl_get_rfreg(hw, RF90_PATH_A, 0x24, |
---|
| 1147 | + RFREG_OFFSET_MASK)); |
---|
| 1148 | + |
---|
| 1149 | +check_delta: |
---|
| 1150 | + if (delta_iqk > rtlefuse->delta_iqk && rtlefuse->delta_iqk != 0) { |
---|
| 1151 | + rtl92d_phy_reset_iqk_result(hw); |
---|
| 1152 | + rtlpriv->dm.thermalvalue_iqk = thermalvalue; |
---|
| 1153 | + rtl92d_phy_iq_calibrate(hw); |
---|
| 1154 | + } |
---|
| 1155 | + if (delta_rxgain > 0 && rtlhal->current_bandtype == BAND_ON_5G && |
---|
| 1156 | + thermalvalue <= rtlefuse->eeprom_thermalmeter) { |
---|
| 1157 | + rtlpriv->dm.thermalvalue_rxgain = thermalvalue; |
---|
| 1158 | + rtl92d_dm_rxgain_tracking_thermalmeter(hw); |
---|
| 1159 | + } |
---|
| 1160 | + if (rtlpriv->dm.txpower_track_control) |
---|
| 1161 | + rtlpriv->dm.thermalvalue = thermalvalue; |
---|
| 1162 | + |
---|
| 1163 | +exit: |
---|
| 1164 | + rtl_dbg(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, "<===\n"); |
---|
1222 | 1165 | } |
---|
1223 | 1166 | |
---|
1224 | 1167 | static void rtl92d_dm_initialize_txpower_tracking(struct ieee80211_hw *hw) |
---|
.. | .. |
---|
1228 | 1171 | rtlpriv->dm.txpower_tracking = true; |
---|
1229 | 1172 | rtlpriv->dm.txpower_trackinginit = false; |
---|
1230 | 1173 | rtlpriv->dm.txpower_track_control = true; |
---|
1231 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
1232 | | - "pMgntInfo->txpower_tracking = %d\n", |
---|
1233 | | - rtlpriv->dm.txpower_tracking); |
---|
| 1174 | + rtl_dbg(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
| 1175 | + "pMgntInfo->txpower_tracking = %d\n", |
---|
| 1176 | + rtlpriv->dm.txpower_tracking); |
---|
1234 | 1177 | } |
---|
1235 | 1178 | |
---|
1236 | 1179 | void rtl92d_dm_check_txpower_tracking_thermal_meter(struct ieee80211_hw *hw) |
---|
.. | .. |
---|
1243 | 1186 | if (!rtlpriv->dm.tm_trigger) { |
---|
1244 | 1187 | rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, BIT(17) | |
---|
1245 | 1188 | BIT(16), 0x03); |
---|
1246 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
1247 | | - "Trigger 92S Thermal Meter!!\n"); |
---|
| 1189 | + rtl_dbg(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
| 1190 | + "Trigger 92S Thermal Meter!!\n"); |
---|
1248 | 1191 | rtlpriv->dm.tm_trigger = 1; |
---|
1249 | 1192 | return; |
---|
1250 | 1193 | } else { |
---|
1251 | | - RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
1252 | | - "Schedule TxPowerTracking direct call!!\n"); |
---|
| 1194 | + rtl_dbg(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
---|
| 1195 | + "Schedule TxPowerTracking direct call!!\n"); |
---|
1253 | 1196 | rtl92d_dm_txpower_tracking_callback_thermalmeter(hw); |
---|
1254 | 1197 | rtlpriv->dm.tm_trigger = 0; |
---|
1255 | 1198 | } |
---|