Lines Matching full:dm
49 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_traffic_load_decision() local
54 if (dm->last_tx_ok_cnt > *dm->num_tx_bytes_unicast) in phydm_traffic_load_decision()
55 dm->last_tx_ok_cnt = *dm->num_tx_bytes_unicast; in phydm_traffic_load_decision()
57 if (dm->last_rx_ok_cnt > *dm->num_rx_bytes_unicast) in phydm_traffic_load_decision()
58 dm->last_rx_ok_cnt = *dm->num_rx_bytes_unicast; in phydm_traffic_load_decision()
60 dm->cur_tx_ok_cnt = *dm->num_tx_bytes_unicast - dm->last_tx_ok_cnt; in phydm_traffic_load_decision()
61 dm->cur_rx_ok_cnt = *dm->num_rx_bytes_unicast - dm->last_rx_ok_cnt; in phydm_traffic_load_decision()
62 dm->last_tx_ok_cnt = *dm->num_tx_bytes_unicast; in phydm_traffic_load_decision()
63 dm->last_rx_ok_cnt = *dm->num_rx_bytes_unicast; in phydm_traffic_load_decision()
69 dm->tx_tp = (dm->tx_tp >> 1) + (u32)((dm->cur_tx_ok_cnt >> shift) >> 1); in phydm_traffic_load_decision()
70 dm->rx_tp = (dm->rx_tp >> 1) + (u32)((dm->cur_rx_ok_cnt >> shift) >> 1); in phydm_traffic_load_decision()
72 dm->total_tp = dm->tx_tp + dm->rx_tp; in phydm_traffic_load_decision()
75 if (dm->tx_tp > (dm->rx_tp << 1)) in phydm_traffic_load_decision()
76 dm->txrx_state_all = TX_STATE; in phydm_traffic_load_decision()
77 else if (dm->rx_tp > (dm->tx_tp << 1)) in phydm_traffic_load_decision()
78 dm->txrx_state_all = RX_STATE; in phydm_traffic_load_decision()
80 dm->txrx_state_all = BI_DIRECTION_STATE; in phydm_traffic_load_decision()
83 dm->pre_traffic_load = dm->traffic_load; in phydm_traffic_load_decision()
85 if (dm->cur_tx_ok_cnt > 1875000 || dm->cur_rx_ok_cnt > 1875000) { in phydm_traffic_load_decision()
87 dm->traffic_load = TRAFFIC_HIGH; in phydm_traffic_load_decision()
88 } else if (dm->cur_tx_ok_cnt > 500000 || dm->cur_rx_ok_cnt > 500000) { in phydm_traffic_load_decision()
90 dm->traffic_load = TRAFFIC_MID; in phydm_traffic_load_decision()
91 } else if (dm->cur_tx_ok_cnt > 100000 || dm->cur_rx_ok_cnt > 100000) { in phydm_traffic_load_decision()
93 dm->traffic_load = TRAFFIC_LOW; in phydm_traffic_load_decision()
94 } else if (dm->cur_tx_ok_cnt > 25000 || dm->cur_rx_ok_cnt > 25000) { in phydm_traffic_load_decision()
96 dm->traffic_load = TRAFFIC_ULTRA_LOW; in phydm_traffic_load_decision()
98 dm->traffic_load = TRAFFIC_NO_TP; in phydm_traffic_load_decision()
102 if (dm->traffic_load == 0) in phydm_traffic_load_decision()
103 dm->consecutive_idlel_time += PHYDM_WATCH_DOG_PERIOD; in phydm_traffic_load_decision()
105 dm->consecutive_idlel_time = 0; in phydm_traffic_load_decision()
108 PHYDM_DBG(dm, DBG_COMMON_FLOW, in phydm_traffic_load_decision()
110 dm->cur_tx_ok_cnt, dm->cur_rx_ok_cnt, dm->last_tx_ok_cnt, in phydm_traffic_load_decision()
111 dm->last_rx_ok_cnt); in phydm_traffic_load_decision()
113 PHYDM_DBG(dm, DBG_COMMON_FLOW, "tx_tp = %d, rx_tp = %d\n", dm->tx_tp, in phydm_traffic_load_decision()
114 dm->rx_tp); in phydm_traffic_load_decision()
118 void phydm_cck_new_agc_chk(struct dm_struct *dm) in phydm_cck_new_agc_chk() argument
122 dm->cck_new_agc = false; in phydm_cck_new_agc_chk()
127 if (dm->support_ic_type & (ODM_RTL8723D | ODM_RTL8822B | ODM_RTL8821C | in phydm_cck_new_agc_chk()
131 } else if (dm->support_ic_type & (ODM_RTL8198F | ODM_RTL8822C | in phydm_cck_new_agc_chk()
137 dm->cck_new_agc = (boolean)odm_get_bb_reg(dm, new_agc_addr, BIT(17)); in phydm_cck_new_agc_chk()
142 void phydm_cck_lna_bit_num_chk(struct dm_struct *dm) in phydm_cck_lna_bit_num_chk() argument
150 if (dm->support_ic_type & (ODM_RTL8192E)) { in phydm_cck_lna_bit_num_chk()
154 value_824 = odm_get_bb_reg(dm, R_0x824, BIT(9)); in phydm_cck_lna_bit_num_chk()
155 value_82c = odm_get_bb_reg(dm, R_0x82c, BIT(9)); in phydm_cck_lna_bit_num_chk()
158 odm_set_bb_reg(dm, R_0x82c, BIT(9), value_824); in phydm_cck_lna_bit_num_chk()
159 odm_set_bb_reg(dm, R_0xa80, BIT(7), value_824); in phydm_cck_lna_bit_num_chk()
165 if (dm->support_ic_type & in phydm_cck_lna_bit_num_chk()
167 report_type = (boolean)odm_get_bb_reg(dm, R_0x950, BIT(11)); in phydm_cck_lna_bit_num_chk()
175 if (dm->support_ic_type & ODM_RTL8821C) { in phydm_cck_lna_bit_num_chk()
176 if (dm->default_rf_set_8821c == SWITCH_TO_BTG) in phydm_cck_lna_bit_num_chk()
181 dm->cck_agc_report_type = report_type; in phydm_cck_lna_bit_num_chk()
183 PHYDM_DBG(dm, ODM_COMP_INIT, "cck_agc_report_type=((%d))\n", in phydm_cck_lna_bit_num_chk()
184 dm->cck_agc_report_type); in phydm_cck_lna_bit_num_chk()
187 void phydm_init_cck_setting(struct dm_struct *dm) in phydm_init_cck_setting() argument
192 phydm_cck_new_agc_chk(dm); in phydm_init_cck_setting()
194 if (dm->support_ic_type & ODM_IC_JGR3_SERIES) in phydm_init_cck_setting()
197 reg_tmp = ODM_REG(CCK_RPT_FORMAT, dm); in phydm_init_cck_setting()
198 mask_tmp = ODM_BIT(CCK_RPT_FORMAT, dm); in phydm_init_cck_setting()
199 dm->is_cck_high_power = (boolean)odm_get_bb_reg(dm, reg_tmp, mask_tmp); in phydm_init_cck_setting()
201 PHYDM_DBG(dm, ODM_COMP_INIT, "ext_lna_gain=((%d))\n", dm->ext_lna_gain); in phydm_init_cck_setting()
203 phydm_config_cck_rx_antenna_init(dm); in phydm_init_cck_setting()
205 if (dm->support_ic_type & ODM_RTL8192F) in phydm_init_cck_setting()
206 phydm_config_cck_rx_path(dm, BB_PATH_AB); in phydm_init_cck_setting()
207 else if (dm->valid_path_set == BB_PATH_A) in phydm_init_cck_setting()
208 phydm_config_cck_rx_path(dm, BB_PATH_A); in phydm_init_cck_setting()
209 else if (dm->valid_path_set == BB_PATH_B) in phydm_init_cck_setting()
210 phydm_config_cck_rx_path(dm, BB_PATH_B); in phydm_init_cck_setting()
212 phydm_cck_lna_bit_num_chk(dm); in phydm_init_cck_setting()
213 phydm_get_cck_rssi_table_from_reg(dm); in phydm_init_cck_setting()
217 void phydm_init_hw_info_by_rfe(struct dm_struct *dm) in phydm_init_hw_info_by_rfe() argument
220 if (dm->support_ic_type & ODM_RTL8821C) in phydm_init_hw_info_by_rfe()
221 phydm_init_hw_info_by_rfe_type_8821c(dm); in phydm_init_hw_info_by_rfe()
224 if (dm->support_ic_type & ODM_RTL8197F) in phydm_init_hw_info_by_rfe()
225 phydm_init_hw_info_by_rfe_type_8197f(dm); in phydm_init_hw_info_by_rfe()
228 if (dm->support_ic_type & ODM_RTL8197G) in phydm_init_hw_info_by_rfe()
229 phydm_init_hw_info_by_rfe_type_8197g(dm); in phydm_init_hw_info_by_rfe()
234 void phydm_common_info_self_init(struct dm_struct *dm) in phydm_common_info_self_init() argument
239 dm->run_in_drv_fw = RUN_IN_DRIVER; in phydm_common_info_self_init()
242 if (dm->support_ic_type & ODM_IC_JGR3_SERIES) in phydm_common_info_self_init()
243 dm->ic_ip_series = PHYDM_IC_JGR3; in phydm_common_info_self_init()
244 else if (dm->support_ic_type & ODM_IC_11AC_SERIES) in phydm_common_info_self_init()
245 dm->ic_ip_series = PHYDM_IC_AC; in phydm_common_info_self_init()
246 else if (dm->support_ic_type & ODM_IC_11N_SERIES) in phydm_common_info_self_init()
247 dm->ic_ip_series = PHYDM_IC_N; in phydm_common_info_self_init()
250 if (dm->support_ic_type & PHYSTS_3RD_TYPE_IC) in phydm_common_info_self_init()
251 dm->ic_phy_sts_type = PHYDM_PHYSTS_TYPE_3; in phydm_common_info_self_init()
252 else if (dm->support_ic_type & PHYSTS_2ND_TYPE_IC) in phydm_common_info_self_init()
253 dm->ic_phy_sts_type = PHYDM_PHYSTS_TYPE_2; in phydm_common_info_self_init()
255 dm->ic_phy_sts_type = PHYDM_PHYSTS_TYPE_1; in phydm_common_info_self_init()
257 phydm_init_cck_setting(dm); in phydm_common_info_self_init()
259 reg_tmp = ODM_REG(BB_RX_PATH, dm); in phydm_common_info_self_init()
260 mask_tmp = ODM_BIT(BB_RX_PATH, dm); in phydm_common_info_self_init()
261 dm->rf_path_rx_enable = (u8)odm_get_bb_reg(dm, reg_tmp, mask_tmp); in phydm_common_info_self_init()
263 dm->is_net_closed = &dm->BOOLEAN_temp; in phydm_common_info_self_init()
265 phydm_init_debug_setting(dm); in phydm_common_info_self_init()
267 phydm_init_soft_ml_setting(dm); in phydm_common_info_self_init()
269 dm->phydm_sys_up_time = 0; in phydm_common_info_self_init()
271 if (dm->support_ic_type & ODM_IC_1SS) in phydm_common_info_self_init()
272 dm->num_rf_path = 1; in phydm_common_info_self_init()
273 else if (dm->support_ic_type & ODM_IC_2SS) in phydm_common_info_self_init()
274 dm->num_rf_path = 2; in phydm_common_info_self_init()
279 else if (dm->support_ic_type & ODM_IC_3SS) in phydm_common_info_self_init()
280 dm->num_rf_path = 3; in phydm_common_info_self_init()
282 else if (dm->support_ic_type & ODM_IC_4SS) in phydm_common_info_self_init()
283 dm->num_rf_path = 4; in phydm_common_info_self_init()
285 dm->num_rf_path = 1; in phydm_common_info_self_init()
287 phydm_trx_antenna_setting_init(dm, dm->num_rf_path); in phydm_common_info_self_init()
289 dm->tx_rate = 0xFF; in phydm_common_info_self_init()
290 dm->rssi_min_by_path = 0xFF; in phydm_common_info_self_init()
292 dm->number_linked_client = 0; in phydm_common_info_self_init()
293 dm->pre_number_linked_client = 0; in phydm_common_info_self_init()
294 dm->number_active_client = 0; in phydm_common_info_self_init()
295 dm->pre_number_active_client = 0; in phydm_common_info_self_init()
297 dm->last_tx_ok_cnt = 0; in phydm_common_info_self_init()
298 dm->last_rx_ok_cnt = 0; in phydm_common_info_self_init()
299 dm->tx_tp = 0; in phydm_common_info_self_init()
300 dm->rx_tp = 0; in phydm_common_info_self_init()
301 dm->total_tp = 0; in phydm_common_info_self_init()
302 dm->traffic_load = TRAFFIC_LOW; in phydm_common_info_self_init()
304 dm->nbi_set_result = 0; in phydm_common_info_self_init()
305 dm->is_init_hw_info_by_rfe = false; in phydm_common_info_self_init()
306 dm->pre_dbg_priority = DBGPORT_RELEASE; in phydm_common_info_self_init()
307 dm->tp_active_th = 5; in phydm_common_info_self_init()
308 dm->disable_phydm_watchdog = 0; in phydm_common_info_self_init()
310 dm->u8_dummy = 0xf; in phydm_common_info_self_init()
311 dm->u16_dummy = 0xffff; in phydm_common_info_self_init()
312 dm->u32_dummy = 0xffffffff; in phydm_common_info_self_init()
315 dm->dsde_sel = DET_CSI; in phydm_common_info_self_init()
316 dm->csi_wgt = 4; in phydm_common_info_self_init()
319 dm->pre_is_linked = false; in phydm_common_info_self_init()
320 dm->is_linked = false; in phydm_common_info_self_init()
322 if (dm->en_auto_bw_th == 0) in phydm_common_info_self_init()
323 dm->en_auto_bw_th = 20; in phydm_common_info_self_init()
326 if (!(dm->is_fcs_mode_enable)) { in phydm_common_info_self_init()
327 dm->is_fcs_mode_enable = &dm->boolean_dummy; in phydm_common_info_self_init()
332 odm_memory_set(dm, &dm->iot_table, 0, sizeof(struct phydm_iot_center)); in phydm_common_info_self_init()
337 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_iot_patch_id_update() local
338 struct phydm_iot_center *iot_table = &dm->iot_table; in phydm_iot_patch_id_update()
340 PHYDM_DBG(dm, DBG_CMN, "[IOT] 0x%x = %d\n", iot_idx, en); in phydm_iot_patch_id_update()
344 PHYDM_DBG(dm, DBG_CMN, "[IOT] patch_id_100f0401 = %d\n", in phydm_iot_patch_id_update()
349 PHYDM_DBG(dm, DBG_CMN, "[IOT] patch_id_10120200 = %d\n", in phydm_iot_patch_id_update()
354 PHYDM_DBG(dm, DBG_CMN, "[IOT] patch_id_40010700 = %d\n", in phydm_iot_patch_id_update()
359 PHYDM_DBG(dm, DBG_CMN, "[IOT] patch_id_021f0800 = %d\n", in phydm_iot_patch_id_update()
370 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_cmn_sta_info_update() local
371 struct cmn_sta_info *sta = dm->phydm_sta_info[macid]; in phydm_cmn_sta_info_update()
377 PHYDM_DBG(dm, DBG_RA_MASK, "[Warning] %s invalid sta_info\n", in phydm_cmn_sta_info_update()
382 PHYDM_DBG(dm, DBG_RA_MASK, "%s ======>\n", __func__); in phydm_cmn_sta_info_update()
383 PHYDM_DBG(dm, DBG_RA_MASK, "MACID=%d\n", sta->mac_id); in phydm_cmn_sta_info_update()
393 ra->is_noisy = dm->noisy_decision; in phydm_cmn_sta_info_update()
396 void phydm_common_info_self_update(struct dm_struct *dm) in phydm_common_info_self_update() argument
407 PADAPTER adapter = (PADAPTER)dm->adapter; in phydm_common_info_self_update()
410 sta = dm->phydm_sta_info[0]; in phydm_common_info_self_update()
414 dm->bsta_state = true; in phydm_common_info_self_update()
416 dm->bsta_state = false; in phydm_common_info_self_update()
420 sta = dm->phydm_sta_info[i]; in phydm_common_info_self_update()
427 phydm_cmn_sta_info_update(dm, (u8)i); in phydm_common_info_self_update()
429 /*@phydm_get_txbf_device_num(dm, (u8)i);*/ in phydm_common_info_self_update()
435 PHYDM_DBG(dm, DBG_COMMON_FLOW, in phydm_common_info_self_update()
444 dm->is_linked = (sta_cnt != 0) ? true : false; in phydm_common_info_self_update()
448 dm->is_one_entry_only = true; in phydm_common_info_self_update()
449 dm->one_entry_macid = one_entry_macid; in phydm_common_info_self_update()
450 dm->one_entry_tp = ma_rx_tp; in phydm_common_info_self_update()
452 dm->tp_active_occur = 0; in phydm_common_info_self_update()
454 PHYDM_DBG(dm, DBG_COMMON_FLOW, in phydm_common_info_self_update()
456 dm->one_entry_tp, dm->pre_one_entry_tp); in phydm_common_info_self_update()
458 if (dm->one_entry_tp > dm->pre_one_entry_tp && in phydm_common_info_self_update()
459 dm->pre_one_entry_tp <= 2) { in phydm_common_info_self_update()
460 tp_diff = dm->one_entry_tp - dm->pre_one_entry_tp; in phydm_common_info_self_update()
462 if (tp_diff > dm->tp_active_th) in phydm_common_info_self_update()
463 dm->tp_active_occur = 1; in phydm_common_info_self_update()
465 dm->pre_one_entry_tp = dm->one_entry_tp; in phydm_common_info_self_update()
467 dm->is_one_entry_only = false; in phydm_common_info_self_update()
470 dm->pre_number_linked_client = dm->number_linked_client; in phydm_common_info_self_update()
471 dm->pre_number_active_client = dm->number_active_client; in phydm_common_info_self_update()
473 dm->number_linked_client = sta_cnt; in phydm_common_info_self_update()
474 dm->number_active_client = num_active_client; in phydm_common_info_self_update()
477 phydm_traffic_load_decision(dm); in phydm_common_info_self_update()
479 dm->phydm_sys_up_time += PHYDM_WATCH_DOG_PERIOD; in phydm_common_info_self_update()
481 dm->is_dfs_band = phydm_is_dfs_band(dm); in phydm_common_info_self_update()
482 dm->phy_dbg_info.show_phy_sts_cnt = 0; in phydm_common_info_self_update()
485 dm->first_connect = dm->is_linked && !dm->pre_is_linked; in phydm_common_info_self_update()
486 dm->first_disconnect = !dm->is_linked && dm->pre_is_linked; in phydm_common_info_self_update()
487 dm->pre_is_linked = dm->is_linked; in phydm_common_info_self_update()
490 dm->one_entry_avg_phy_rate = 500; in phydm_common_info_self_update()
491 dm->one_entry_rx_utility = 500; in phydm_common_info_self_update()
492 if (dm->is_one_entry_only) { in phydm_common_info_self_update()
493 sta = dm->phydm_sta_info[one_entry_macid]; in phydm_common_info_self_update()
495 dm->one_entry_avg_phy_rate = phydm_rx_avg_phy_rate(dm); in phydm_common_info_self_update()
496 rx_ss = phydm_get_rx_stream_num(dm, sta->mimo_type); in phydm_common_info_self_update()
497 dm->one_entry_rx_utility = phydm_rx_utility(dm, dm->one_entry_avg_phy_rate, in phydm_common_info_self_update()
502 PHYDM_DBG(dm, DBG_RA_MASK, "[Uty]Avg_rx_rate = %d, rx_utility=( %d / 1000 )\n", in phydm_common_info_self_update()
503 dm->one_entry_avg_phy_rate, dm->one_entry_rx_utility); in phydm_common_info_self_update()
507 void phydm_common_info_self_reset(struct dm_struct *dm) in phydm_common_info_self_reset() argument
509 struct odm_phy_dbg_info *dbg_t = &dm->phy_dbg_info; in phydm_common_info_self_reset()
514 dm->rxsc_l = 0xff; in phydm_common_info_self_reset()
515 dm->rxsc_20 = 0xff; in phydm_common_info_self_reset()
516 dm->rxsc_40 = 0xff; in phydm_common_info_self_reset()
517 dm->rxsc_80 = 0xff; in phydm_common_info_self_reset()
519 phydm_reset_rx_rate_distribution(dm); in phydm_common_info_self_reset()
524 phydm_get_structure(struct dm_struct *dm, u8 structure_type) in phydm_get_structure() argument
531 structure = &dm->false_alm_cnt; in phydm_get_structure()
535 structure = &dm->dm_cfo_track; in phydm_get_structure()
539 structure = &dm->adaptivity; in phydm_get_structure()
543 structure = &dm->dfs; in phydm_get_structure()
553 void phydm_phy_info_update(struct dm_struct *dm) in phydm_phy_info_update() argument
556 if (dm->support_ic_type == ODM_RTL8822B) in phydm_phy_info_update()
557 dm->phy_dbg_info.condi_num = phydm_get_condi_num_8822b(dm); in phydm_phy_info_update()
561 void phydm_hw_setting(struct dm_struct *dm) in phydm_hw_setting() argument
564 if (dm->support_ic_type & ODM_RTL8188F) in phydm_hw_setting()
565 odm_hw_setting_8188F(dm); in phydm_hw_setting()
568 if (dm->support_ic_type & ODM_RTL8821) in phydm_hw_setting()
569 odm_hw_setting_8821a(dm); in phydm_hw_setting()
573 if (dm->support_ic_type & ODM_RTL8814A) in phydm_hw_setting()
574 phydm_hwsetting_8814a(dm); in phydm_hw_setting()
578 if (dm->support_ic_type & ODM_RTL8822B) in phydm_hw_setting()
579 phydm_hwsetting_8822b(dm); in phydm_hw_setting()
583 if (dm->support_ic_type & ODM_RTL8812) in phydm_hw_setting()
584 phydm_hwsetting_8812a(dm); in phydm_hw_setting()
588 if (dm->support_ic_type & ODM_RTL8197F) in phydm_hw_setting()
589 phydm_hwsetting_8197f(dm); in phydm_hw_setting()
593 if (dm->support_ic_type & ODM_RTL8192F) in phydm_hw_setting()
594 phydm_hwsetting_8192f(dm); in phydm_hw_setting()
598 if (dm->support_ic_type & ODM_RTL8822C) in phydm_hw_setting()
599 phydm_hwsetting_8822c(dm); in phydm_hw_setting()
603 if (dm->support_ic_type & ODM_RTL8197G) in phydm_hw_setting()
604 phydm_hwsetting_8197g(dm); in phydm_hw_setting()
608 if (dm->support_ic_type & ODM_RTL8821C) in phydm_hw_setting()
609 phydm_hwsetting_8821c(dm); in phydm_hw_setting()
613 if (dm->support_ic_type & ODM_RTL8812F) in phydm_hw_setting()
614 phydm_hwsetting_8812f(dm); in phydm_hw_setting()
618 phydm_cck_rx_pathdiv_watchdog(dm); in phydm_hw_setting()
623 boolean phydm_chk_bb_rf_pkg_set_valid(struct dm_struct *dm) in phydm_chk_bb_rf_pkg_set_valid() argument
627 if (dm->support_ic_type == ODM_RTL8822C) { in phydm_chk_bb_rf_pkg_set_valid()
629 valid = phydm_chk_pkg_set_valid_8822c(dm, in phydm_chk_bb_rf_pkg_set_valid()
636 } else if (dm->support_ic_type == ODM_RTL8812F) { in phydm_chk_bb_rf_pkg_set_valid()
637 valid = phydm_chk_pkg_set_valid_8812f(dm, in phydm_chk_bb_rf_pkg_set_valid()
642 } else if (dm->support_ic_type == ODM_RTL8197G) { in phydm_chk_bb_rf_pkg_set_valid()
643 valid = phydm_chk_pkg_set_valid_8197g(dm, in phydm_chk_bb_rf_pkg_set_valid()
648 } else if (dm->support_ic_type == ODM_RTL8812F) { in phydm_chk_bb_rf_pkg_set_valid()
649 valid = phydm_chk_pkg_set_valid_8812f(dm, in phydm_chk_bb_rf_pkg_set_valid()
654 } else if (dm->support_ic_type == ODM_RTL8198F) { in phydm_chk_bb_rf_pkg_set_valid()
655 valid = phydm_chk_pkg_set_valid_8198f(dm, in phydm_chk_bb_rf_pkg_set_valid()
660 } else if (dm->support_ic_type == ODM_RTL8814B) { in phydm_chk_bb_rf_pkg_set_valid()
661 valid = phydm_chk_pkg_set_valid_8814b(dm, in phydm_chk_bb_rf_pkg_set_valid()
674 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_supportability_init_win() local
677 switch (dm->support_ic_type) { in phydm_supportability_init_win()
956 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_supportability_init_ce() local
959 switch (dm->support_ic_type) { in phydm_supportability_init_ce()
1236 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_supportability_init_ap() local
1239 switch (dm->support_ic_type) { in phydm_supportability_init_ap()
1491 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_supportability_init_iot() local
1494 switch (dm->support_ic_type) { in phydm_supportability_init_iot()
1598 void phydm_fwoffload_ability_init(struct dm_struct *dm, in phydm_fwoffload_ability_init() argument
1603 if (dm->support_ic_type & PHYDM_IC_SUPPORT_FW_PARAM_OFFLOAD) in phydm_fwoffload_ability_init()
1604 dm->fw_offload_ability |= PHYDM_PHY_PARAM_OFFLOAD; in phydm_fwoffload_ability_init()
1608 dm->fw_offload_ability |= PHYDM_RF_IQK_OFFLOAD; in phydm_fwoffload_ability_init()
1612 dm->fw_offload_ability |= PHYDM_RF_DPK_OFFLOAD; in phydm_fwoffload_ability_init()
1616 PHYDM_DBG(dm, ODM_COMP_INIT, "fwofflad, wrong init type!!\n"); in phydm_fwoffload_ability_init()
1620 PHYDM_DBG(dm, ODM_COMP_INIT, "fw_offload_ability = %x\n", in phydm_fwoffload_ability_init()
1621 dm->fw_offload_ability); in phydm_fwoffload_ability_init()
1624 void phydm_fwoffload_ability_clear(struct dm_struct *dm, in phydm_fwoffload_ability_clear() argument
1629 if (dm->support_ic_type & PHYDM_IC_SUPPORT_FW_PARAM_OFFLOAD) in phydm_fwoffload_ability_clear()
1630 dm->fw_offload_ability &= (~PHYDM_PHY_PARAM_OFFLOAD); in phydm_fwoffload_ability_clear()
1634 dm->fw_offload_ability &= (~PHYDM_RF_IQK_OFFLOAD); in phydm_fwoffload_ability_clear()
1638 dm->fw_offload_ability &= (~PHYDM_RF_DPK_OFFLOAD); in phydm_fwoffload_ability_clear()
1642 PHYDM_DBG(dm, ODM_COMP_INIT, "fwofflad, wrong init type!!\n"); in phydm_fwoffload_ability_clear()
1646 PHYDM_DBG(dm, ODM_COMP_INIT, "fw_offload_ability = %x\n", in phydm_fwoffload_ability_clear()
1647 dm->fw_offload_ability); in phydm_fwoffload_ability_clear()
1652 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_supportability_init() local
1655 if (dm->manual_supportability && in phydm_supportability_init()
1656 *dm->manual_supportability != 0xffffffff) { in phydm_supportability_init()
1657 support_ability = *dm->manual_supportability; in phydm_supportability_init()
1658 } else if (*dm->mp_mode) { in phydm_supportability_init()
1662 support_ability = phydm_supportability_init_win(dm); in phydm_supportability_init()
1664 support_ability = phydm_supportability_init_ap(dm); in phydm_supportability_init()
1666 support_ability = phydm_supportability_init_ce(dm); in phydm_supportability_init()
1668 support_ability = phydm_supportability_init_iot(dm); in phydm_supportability_init()
1672 if (IS_FUNC_EN(dm->enable_antdiv)) in phydm_supportability_init()
1676 if (IS_FUNC_EN(dm->enable_pathdiv)) in phydm_supportability_init()
1680 if (IS_FUNC_EN(dm->en_adap_soml)) in phydm_supportability_init()
1684 dm->support_ability = support_ability; in phydm_supportability_init()
1685 PHYDM_DBG(dm, ODM_COMP_INIT, "IC=0x%x, mp=%d, Supportability=0x%llx\n", in phydm_supportability_init()
1686 dm->support_ic_type, *dm->mp_mode, dm->support_ability); in phydm_supportability_init()
1691 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_rfe_init() local
1693 PHYDM_DBG(dm, ODM_COMP_INIT, "RFE_Init\n"); in phydm_rfe_init()
1695 if (dm->support_ic_type == ODM_RTL8822B) in phydm_rfe_init()
1696 phydm_rfe_8822b_init(dm); in phydm_rfe_init()
1704 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_tx_collsion_th_init() local
1707 if (dm->support_ic_type & ODM_RTL8197G) in phydm_tx_collsion_th_init()
1708 phydm_tx_collsion_th_init_8197g(dm); in phydm_tx_collsion_th_init()
1712 if (dm->support_ic_type & ODM_RTL8812F) in phydm_tx_collsion_th_init()
1713 phydm_tx_collsion_th_init_8812f(dm); in phydm_tx_collsion_th_init()
1720 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_tx_collsion_th_set() local
1723 if (dm->support_ic_type & ODM_RTL8197G) in phydm_tx_collsion_th_set()
1724 phydm_tx_collsion_th_set_8197g(dm, val_r2t, val_t2r); in phydm_tx_collsion_th_set()
1728 if (dm->support_ic_type & ODM_RTL8812F) in phydm_tx_collsion_th_set()
1729 phydm_tx_collsion_th_set_8812f(dm, val_r2t, val_t2r); in phydm_tx_collsion_th_set()
1735 void phydm_dm_early_init(struct dm_struct *dm) in phydm_dm_early_init() argument
1738 phydm_init_debug_setting(dm); in phydm_dm_early_init()
1742 enum phydm_init_result odm_dm_init(struct dm_struct *dm) in odm_dm_init() argument
1746 if (!phydm_chk_bb_rf_pkg_set_valid(dm)) { in odm_dm_init()
1751 halrf_init(dm); in odm_dm_init()
1752 phydm_supportability_init(dm); in odm_dm_init()
1753 phydm_pause_func_init(dm); in odm_dm_init()
1754 phydm_rfe_init(dm); in odm_dm_init()
1755 phydm_common_info_self_init(dm); in odm_dm_init()
1756 phydm_rx_phy_status_init(dm); in odm_dm_init()
1758 phydm_auto_dbg_engine_init(dm); in odm_dm_init()
1760 phydm_dig_init(dm); in odm_dm_init()
1763 phydm_dig_cckpd_coex_init(dm); in odm_dm_init()
1765 phydm_cck_pd_init(dm); in odm_dm_init()
1767 phydm_env_monitor_init(dm); in odm_dm_init()
1768 phydm_enhance_monitor_init(dm); in odm_dm_init()
1769 phydm_adaptivity_init(dm); in odm_dm_init()
1770 phydm_ra_info_init(dm); in odm_dm_init()
1771 phydm_rssi_monitor_init(dm); in odm_dm_init()
1772 phydm_cfo_tracking_init(dm); in odm_dm_init()
1773 phydm_rf_init(dm); in odm_dm_init()
1774 phydm_dc_cancellation(dm); in odm_dm_init()
1776 phydm_txcurrentcalibration(dm); in odm_dm_init()
1777 phydm_get_pa_bias_offset(dm); in odm_dm_init()
1780 odm_antenna_diversity_init(dm); in odm_dm_init()
1783 phydm_adaptive_soml_init(dm); in odm_dm_init()
1786 phydm_tx_path_diversity_init(dm); in odm_dm_init()
1789 phydm_dynamic_tx_power_init(dm); in odm_dm_init()
1792 phydm_la_init(dm); in odm_dm_init()
1796 phydm_beamforming_init(dm); in odm_dm_init()
1800 odm_ra_info_init_all(dm); in odm_dm_init()
1803 phydm_primary_cca_init(dm); in odm_dm_init()
1806 phydm_psd_init(dm); in odm_dm_init()
1810 phydm_smt_ant_init(dm); in odm_dm_init()
1813 phydm_lna_sat_check_init(dm); in odm_dm_init()
1816 phydm_mcc_init(dm); in odm_dm_init()
1820 phydm_cck_rx_pathdiv_init(dm); in odm_dm_init()
1824 phydm_mu_rsoml_init(dm); in odm_dm_init()
1828 phydm_tx_collsion_th_init(dm); in odm_dm_init()
1834 void odm_dm_reset(struct dm_struct *dm) in odm_dm_reset() argument
1837 odm_ant_div_reset(dm); in odm_dm_reset()
1839 phydm_set_edcca_threshold_api(dm); in odm_dm_reset()
1845 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_supportability_en() local
1858 pre_support_ability = dm->support_ability; in phydm_supportability_en()
1859 comp = dm->support_ability; in phydm_supportability_en()
1935 ((dm->fw_offload_ability & PHYDM_PHY_PARAM_OFFLOAD) ? in phydm_supportability_en()
1939 ((dm->fw_offload_ability & PHYDM_RF_IQK_OFFLOAD) ? in phydm_supportability_en()
1945 dm->support_ability = 0; in phydm_supportability_en()
1950 dm->support_ability |= (one << dm_value[0]); in phydm_supportability_en()
1952 dm->support_ability &= ~(one << dm_value[0]); in phydm_supportability_en()
1961 "Cur-supportability = 0x%llx\n", dm->support_ability); in phydm_supportability_en()
1969 void phydm_watchdog_lps_32k(struct dm_struct *dm) in phydm_watchdog_lps_32k() argument
1971 PHYDM_DBG(dm, DBG_COMMON_FLOW, "%s ======>\n", __func__); in phydm_watchdog_lps_32k()
1973 phydm_common_info_self_update(dm); in phydm_watchdog_lps_32k()
1974 phydm_rssi_monitor_check(dm); in phydm_watchdog_lps_32k()
1975 phydm_dig_lps_32k(dm); in phydm_watchdog_lps_32k()
1976 phydm_common_info_self_reset(dm); in phydm_watchdog_lps_32k()
1979 void phydm_watchdog_lps(struct dm_struct *dm) in phydm_watchdog_lps() argument
1982 PHYDM_DBG(dm, DBG_COMMON_FLOW, "%s ======>\n", __func__); in phydm_watchdog_lps()
1984 phydm_common_info_self_update(dm); in phydm_watchdog_lps()
1985 phydm_rssi_monitor_check(dm); in phydm_watchdog_lps()
1986 phydm_basic_dbg_message(dm); in phydm_watchdog_lps()
1987 phydm_receiver_blocking(dm); in phydm_watchdog_lps()
1988 phydm_false_alarm_counter_statistics(dm); in phydm_watchdog_lps()
1989 phydm_dig_by_rssi_lps(dm); in phydm_watchdog_lps()
1991 phydm_cck_pd_th(dm); in phydm_watchdog_lps()
1993 phydm_adaptivity(dm); in phydm_watchdog_lps()
1995 phydm_dyn_bw_indication(dm); in phydm_watchdog_lps()
2000 odm_antenna_diversity(dm); in phydm_watchdog_lps()
2003 phydm_common_info_self_reset(dm); in phydm_watchdog_lps()
2007 void phydm_watchdog_mp(struct dm_struct *dm) in phydm_watchdog_mp() argument
2013 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_pause_dm_watchdog() local
2016 dm->disable_phydm_watchdog = 1; in phydm_pause_dm_watchdog()
2017 PHYDM_DBG(dm, ODM_COMP_API, "PHYDM Stop\n"); in phydm_pause_dm_watchdog()
2019 dm->disable_phydm_watchdog = 0; in phydm_pause_dm_watchdog()
2020 PHYDM_DBG(dm, ODM_COMP_API, "PHYDM Start\n"); in phydm_pause_dm_watchdog()
2026 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_pause_func_init() local
2028 dm->pause_lv_table.lv_cckpd = PHYDM_PAUSE_RELEASE; in phydm_pause_func_init()
2029 dm->pause_lv_table.lv_dig = PHYDM_PAUSE_RELEASE; in phydm_pause_func_init()
2030 dm->pause_lv_table.lv_antdiv = PHYDM_PAUSE_RELEASE; in phydm_pause_func_init()
2031 dm->pause_lv_table.lv_dig = PHYDM_PAUSE_RELEASE; in phydm_pause_func_init()
2032 dm->pause_lv_table.lv_adapt = PHYDM_PAUSE_RELEASE; in phydm_pause_func_init()
2033 dm->pause_lv_table.lv_adsl = PHYDM_PAUSE_RELEASE; in phydm_pause_func_init()
2041 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_pause_func() local
2042 struct phydm_func_poiner *func_t = &dm->phydm_func_handler; in phydm_pause_func()
2043 s8 *pause_lv_pre = &dm->s8_dummy; in phydm_pause_func()
2044 u32 *bkp_val = &dm->u32_dummy; in phydm_pause_func()
2052 PHYDM_DBG(dm, ODM_COMP_API, "\n"); in phydm_pause_func()
2053 PHYDM_DBG(dm, ODM_COMP_API, "[%s][%s] LV=%d, Len=%d\n", __func__, in phydm_pause_func()
2059 PHYDM_DBG(dm, ODM_COMP_API, "[WARNING]Wrong LV=%d\n", pause_lv); in phydm_pause_func()
2064 PHYDM_DBG(dm, ODM_COMP_API, "[DIG]\n"); in phydm_pause_func()
2067 PHYDM_DBG(dm, ODM_COMP_API, "[WARNING] length != 1\n"); in phydm_pause_func()
2071 ori_val[0] = (u32)(dm->dm_dig_table.cur_ig_value); in phydm_pause_func()
2072 pause_lv_pre = &dm->pause_lv_table.lv_dig; in phydm_pause_func()
2073 bkp_val = (u32 *)(&dm->dm_dig_table.rvrt_val); in phydm_pause_func()
2079 PHYDM_DBG(dm, ODM_COMP_API, "[CCK_PD]\n"); in phydm_pause_func()
2082 PHYDM_DBG(dm, ODM_COMP_API, "[WARNING] length != 1\n"); in phydm_pause_func()
2086 ori_val[0] = (u32)dm->dm_cckpd_table.cck_pd_lv; in phydm_pause_func()
2087 pause_lv_pre = &dm->pause_lv_table.lv_cckpd; in phydm_pause_func()
2088 bkp_val = (u32 *)(&dm->dm_cckpd_table.rvrt_val); in phydm_pause_func()
2095 PHYDM_DBG(dm, ODM_COMP_API, "[AntDiv]\n"); in phydm_pause_func()
2098 PHYDM_DBG(dm, ODM_COMP_API, "[WARNING] length != 1\n"); in phydm_pause_func()
2102 ori_val[0] = (u32)(dm->dm_fat_table.rx_idle_ant); in phydm_pause_func()
2103 pause_lv_pre = &dm->pause_lv_table.lv_antdiv; in phydm_pause_func()
2104 bkp_val = (u32 *)(&dm->dm_fat_table.rvrt_val); in phydm_pause_func()
2111 PHYDM_DBG(dm, ODM_COMP_API, "[Adaptivity]\n"); in phydm_pause_func()
2114 PHYDM_DBG(dm, ODM_COMP_API, "[WARNING] length != 2\n"); in phydm_pause_func()
2118 ori_val[0] = (u32)(dm->adaptivity.th_l2h); /*th_l2h*/ in phydm_pause_func()
2119 ori_val[1] = (u32)(dm->adaptivity.th_h2l); /*th_h2l*/ in phydm_pause_func()
2120 pause_lv_pre = &dm->pause_lv_table.lv_adapt; in phydm_pause_func()
2121 bkp_val = (u32 *)(&dm->adaptivity.rvrt_val); in phydm_pause_func()
2128 PHYDM_DBG(dm, ODM_COMP_API, "[AD-SOML]\n"); in phydm_pause_func()
2131 PHYDM_DBG(dm, ODM_COMP_API, "[WARNING] length != 1\n"); in phydm_pause_func()
2135 ori_val[0] = (u32)(dm->dm_soml_table.soml_on_off); in phydm_pause_func()
2137 pause_lv_pre = &dm->pause_lv_table.lv_adsl; in phydm_pause_func()
2138 bkp_val = (u32 *)(&dm->dm_soml_table.rvrt_val); in phydm_pause_func()
2144 PHYDM_DBG(dm, ODM_COMP_API, "[WARNING] error func idx\n"); in phydm_pause_func()
2148 PHYDM_DBG(dm, ODM_COMP_API, "Pause_LV{new , pre} = {%d ,%d}\n", in phydm_pause_func()
2153 PHYDM_DBG(dm, ODM_COMP_API, in phydm_pause_func()
2158 if (!(dm->pause_ability & pause_func_bitmap)) { in phydm_pause_func()
2163 dm->pause_ability |= pause_func_bitmap; in phydm_pause_func()
2164 PHYDM_DBG(dm, ODM_COMP_API, "pause_ability=0x%llx\n", in phydm_pause_func()
2165 dm->pause_ability); in phydm_pause_func()
2169 PHYDM_DBG(dm, ODM_COMP_API, in phydm_pause_func()
2172 func_t->pause_phydm_handler(dm, val_buf, val_lehgth); in phydm_pause_func()
2175 PHYDM_DBG(dm, ODM_COMP_API, in phydm_pause_func()
2185 PHYDM_DBG(dm, ODM_COMP_API, in phydm_pause_func()
2190 if ((dm->pause_ability & pause_func_bitmap) == 0) { in phydm_pause_func()
2191 PHYDM_DBG(dm, ODM_COMP_API, in phydm_pause_func()
2196 dm->pause_ability &= ~pause_func_bitmap; in phydm_pause_func()
2197 PHYDM_DBG(dm, ODM_COMP_API, "pause_ability=0x%llx\n", in phydm_pause_func()
2198 dm->pause_ability); in phydm_pause_func()
2203 PHYDM_DBG(dm, ODM_COMP_API, in phydm_pause_func()
2208 func_t->pause_phydm_handler(dm, bkp_val, val_lehgth); in phydm_pause_func()
2212 PHYDM_DBG(dm, ODM_COMP_API, "[WARNING] error pause_type\n"); in phydm_pause_func()
2221 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_pause_func_console() local
2287 set_result = phydm_pause_func(dm, func, type, lv, length, buf); in phydm_pause_func_console()
2298 void phydm_pause_dm_by_asso_pkt(struct dm_struct *dm, in phydm_pause_dm_by_asso_pkt() argument
2304 PHYDM_DBG(dm, ODM_COMP_API, "[%s][%s] rssi=%d\n", __func__, in phydm_pause_dm_by_asso_pkt()
2310 phydm_pause_func(dm, F00_DIG, PHYDM_RESUME, in phydm_pause_dm_by_asso_pkt()
2313 phydm_pause_func(dm, F13_ADPTVTY, PHYDM_RESUME, in phydm_pause_dm_by_asso_pkt()
2316 odm_write_dig(dm, (u8)igi_val); in phydm_pause_dm_by_asso_pkt()
2317 phydm_pause_func(dm, F00_DIG, PHYDM_PAUSE, in phydm_pause_dm_by_asso_pkt()
2323 phydm_pause_func(dm, F13_ADPTVTY, PHYDM_PAUSE, in phydm_pause_dm_by_asso_pkt()
2330 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_stop_dm_watchdog_check() local
2332 if (dm->disable_phydm_watchdog == 1) { in phydm_stop_dm_watchdog_check()
2333 PHYDM_DBG(dm, DBG_COMMON_FLOW, "Disable phydm\n"); in phydm_stop_dm_watchdog_check()
2340 void phydm_watchdog(struct dm_struct *dm) in phydm_watchdog() argument
2342 PHYDM_DBG(dm, DBG_COMMON_FLOW, "%s ======>\n", __func__); in phydm_watchdog()
2344 phydm_common_info_self_update(dm); in phydm_watchdog()
2345 phydm_phy_info_update(dm); in phydm_watchdog()
2346 phydm_rssi_monitor_check(dm); in phydm_watchdog()
2347 phydm_basic_dbg_message(dm); in phydm_watchdog()
2348 phydm_dm_summary(dm, FIRST_MACID); in phydm_watchdog()
2350 phydm_auto_dbg_engine(dm); in phydm_watchdog()
2352 phydm_receiver_blocking(dm); in phydm_watchdog()
2354 if (phydm_stop_dm_watchdog_check(dm) == true) in phydm_watchdog()
2357 phydm_hw_setting(dm); in phydm_watchdog()
2360 if (dm->original_dig_restore == 0) { in phydm_watchdog()
2361 phydm_tdma_dig_timer_check(dm); in phydm_watchdog()
2365 phydm_false_alarm_counter_statistics(dm); in phydm_watchdog()
2366 phydm_noisy_detection(dm); in phydm_watchdog()
2369 phydm_dig_cckpd_coex(dm); in phydm_watchdog()
2371 phydm_dig(dm); in phydm_watchdog()
2373 phydm_cck_pd_th(dm); in phydm_watchdog()
2379 phydm_hwigi(dm); in phydm_watchdog()
2382 phydm_update_power_training_state(dm); in phydm_watchdog()
2384 phydm_adaptivity(dm); in phydm_watchdog()
2385 phydm_ra_info_watchdog(dm); in phydm_watchdog()
2387 phydm_tx_path_diversity(dm); in phydm_watchdog()
2389 phydm_cfo_tracking(dm); in phydm_watchdog()
2391 phydm_dynamic_tx_power(dm); in phydm_watchdog()
2394 odm_antenna_diversity(dm); in phydm_watchdog()
2397 phydm_adaptive_soml(dm); in phydm_watchdog()
2401 phydm_beamforming_watchdog(dm); in phydm_watchdog()
2404 halrf_watchdog(dm); in phydm_watchdog()
2406 phydm_primary_cca(dm); in phydm_watchdog()
2409 phydm_dyn_bw_indication(dm); in phydm_watchdog()
2412 odm_dtc(dm); in phydm_watchdog()
2415 phydm_env_mntr_watchdog(dm); in phydm_watchdog()
2416 phydm_enhance_mntr_watchdog(dm); in phydm_watchdog()
2419 phydm_lna_sat_chk_watchdog(dm); in phydm_watchdog()
2423 phydm_mcc_switch(dm); in phydm_watchdog()
2427 phydm_mu_rsoml_decision(dm); in phydm_watchdog()
2430 phydm_common_info_self_reset(dm); in phydm_watchdog()
2436 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_fw_dm_ctrl_en() local
2449 phydm_fill_fw_dig_info(dm, &enable, para4, para8); in phydm_fw_dm_ctrl_en()
2464 PHYDM_DBG(dm, DBG_FW_DM, in phydm_fw_dm_ctrl_en()
2470 odm_fill_h2c_cmd(dm, PHYDM_H2C_FW_DM_CTRL, H2C_MAX_LENGTH, h2c_val); in phydm_fw_dm_ctrl_en()
2476 void odm_cmn_info_init(struct dm_struct *dm, enum odm_cmninfo cmn_info, in odm_cmn_info_init() argument
2483 dm->support_ability = (u64)value; in odm_cmn_info_init()
2487 dm->rf_type = (u8)value; in odm_cmn_info_init()
2491 dm->support_platform = (u8)value; in odm_cmn_info_init()
2495 dm->support_interface = (u8)value; in odm_cmn_info_init()
2499 dm->is_mp_chip = (u8)value; in odm_cmn_info_init()
2503 dm->support_ic_type = (u32)value; in odm_cmn_info_init()
2507 dm->cut_version = (u8)value; in odm_cmn_info_init()
2511 dm->fab_version = (u8)value; in odm_cmn_info_init()
2514 dm->fw_version = (u8)value; in odm_cmn_info_init()
2517 dm->fw_sub_version = (u8)value; in odm_cmn_info_init()
2521 if (dm->support_ic_type & ODM_RTL8821C) in odm_cmn_info_init()
2522 dm->rfe_type_expand = (u8)value; in odm_cmn_info_init()
2525 dm->rfe_type = (u8)value; in odm_cmn_info_init()
2528 phydm_init_hw_info_by_rfe(dm); in odm_cmn_info_init()
2533 dm->ant_div_type = (u8)value; in odm_cmn_info_init()
2537 dm->with_extenal_ant_switch = (u8)value; in odm_cmn_info_init()
2542 dm->dm_fat_table.b_fix_tx_ant = (u8)value; in odm_cmn_info_init()
2547 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2548 dm->board_type = (u8)value; in odm_cmn_info_init()
2552 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2553 dm->package_type = (u8)value; in odm_cmn_info_init()
2557 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2558 dm->ext_lna = (u8)value; in odm_cmn_info_init()
2562 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2563 dm->ext_lna_5g = (u8)value; in odm_cmn_info_init()
2567 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2568 dm->ext_pa = (u8)value; in odm_cmn_info_init()
2572 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2573 dm->ext_pa_5g = (u8)value; in odm_cmn_info_init()
2577 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2578 dm->type_gpa = (u16)value; in odm_cmn_info_init()
2582 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2583 dm->type_apa = (u16)value; in odm_cmn_info_init()
2587 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2588 dm->type_glna = (u16)value; in odm_cmn_info_init()
2592 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2593 dm->type_alna = (u16)value; in odm_cmn_info_init()
2597 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2598 dm->ext_trsw = (u8)value; in odm_cmn_info_init()
2601 dm->ext_lna_gain = (u8)value; in odm_cmn_info_init()
2604 dm->iot_table.win_patch_id = (u8)value; in odm_cmn_info_init()
2607 dm->is_in_hct_test = (boolean)value; in odm_cmn_info_init()
2610 dm->wifi_test = (u8)value; in odm_cmn_info_init()
2613 dm->is_dual_mac_smart_concurrent = (boolean)value; in odm_cmn_info_init()
2617 dm->config_bbrf = (boolean)value; in odm_cmn_info_init()
2621 dm->rf_calibrate_info.is_iqk_pa_off = (boolean)value; in odm_cmn_info_init()
2624 dm->rf_calibrate_info.reg_rf_kfree_enable = (u8)value; in odm_cmn_info_init()
2627 dm->rf_calibrate_info.rf_kfree_enable = (u8)value; in odm_cmn_info_init()
2630 dm->normal_rx_path = (u8)value; in odm_cmn_info_init()
2633 dm->valid_path_set = (u8)value; in odm_cmn_info_init()
2636 dm->efuse0x3d8 = (u8)value; in odm_cmn_info_init()
2639 dm->efuse0x3d7 = (u8)value; in odm_cmn_info_init()
2642 dm->p_advance_ota = (u8)value; in odm_cmn_info_init()
2647 dm->dfs_region_domain = (u8)value; in odm_cmn_info_init()
2651 dm->soft_ap_special_setting = (u32)value; in odm_cmn_info_init()
2655 dm->dm_cfo_track.crystal_cap_default = (u8)value; in odm_cmn_info_init()
2659 /*@dm->dpk_en = (u1Byte)value;*/ in odm_cmn_info_init()
2660 halrf_cmn_info_set(dm, HALRF_CMNINFO_DPK_EN, (u64)value); in odm_cmn_info_init()
2664 dm->hp_hw_id = (boolean)value; in odm_cmn_info_init()
2667 dm->en_tssi_mode = (u8)value; in odm_cmn_info_init()
2670 dm->en_dis_dpd = (boolean)value; in odm_cmn_info_init()
2673 dm->en_auto_bw_th = (u8)value; in odm_cmn_info_init()
2677 dm->power_voltage = (u8)value; in odm_cmn_info_init()
2680 dm->antdiv_gpio = (u8)value; in odm_cmn_info_init()
2683 dm->peak_detect_mode = (u8)value; in odm_cmn_info_init()
2691 void odm_cmn_info_hook(struct dm_struct *dm, enum odm_cmninfo cmn_info, in odm_cmn_info_hook() argument
2698 dm->num_tx_bytes_unicast = (u64 *)value; in odm_cmn_info_hook()
2702 dm->num_rx_bytes_unicast = (u64 *)value; in odm_cmn_info_hook()
2706 dm->band_type = (u8 *)value; in odm_cmn_info_hook()
2710 dm->sec_ch_offset = (u8 *)value; in odm_cmn_info_hook()
2714 dm->security = (u8 *)value; in odm_cmn_info_hook()
2718 dm->band_width = (u8 *)value; in odm_cmn_info_hook()
2722 dm->channel = (u8 *)value; in odm_cmn_info_hook()
2726 dm->is_scan_in_process = (boolean *)value; in odm_cmn_info_hook()
2730 dm->is_power_saving = (boolean *)value; in odm_cmn_info_hook()
2734 dm->is_tdma = (boolean *)value; in odm_cmn_info_hook()
2738 dm->one_path_cca = (u8 *)value; in odm_cmn_info_hook()
2742 dm->is_driver_stopped = (boolean *)value; in odm_cmn_info_hook()
2745 dm->pinit_adpt_in_progress = (boolean *)value; in odm_cmn_info_hook()
2749 dm->antenna_test = (u8 *)value; in odm_cmn_info_hook()
2753 dm->is_net_closed = (boolean *)value; in odm_cmn_info_hook()
2757 dm->forced_data_rate = (u16 *)value; in odm_cmn_info_hook()
2760 dm->enable_antdiv = (u8 *)value; in odm_cmn_info_hook()
2763 dm->enable_pathdiv = (u8 *)value; in odm_cmn_info_hook()
2766 dm->en_adap_soml = (u8 *)value; in odm_cmn_info_hook()
2769 dm->edcca_mode = (u8 *)value; in odm_cmn_info_hook()
2773 dm->dm_dig_table.is_p2p_in_process = (u8 *)value; in odm_cmn_info_hook()
2777 dm->is_1_antenna = (boolean *)value; in odm_cmn_info_hook()
2781 dm->rf_default_path = (u8 *)value; in odm_cmn_info_hook()
2785 dm->is_fcs_mode_enable = (boolean *)value; in odm_cmn_info_hook()
2789 dm->hub_usb_mode = (u8 *)value; in odm_cmn_info_hook()
2792 dm->is_fw_dw_rsvd_page_in_progress = (boolean *)value; in odm_cmn_info_hook()
2795 dm->current_tx_tp = (u32 *)value; in odm_cmn_info_hook()
2798 dm->current_rx_tp = (u32 *)value; in odm_cmn_info_hook()
2801 dm->sounding_seq = (u8 *)value; in odm_cmn_info_hook()
2805 dm->dfs_master_enabled = (u8 *)value; in odm_cmn_info_hook()
2811 dm->dm_fat_table.p_force_tx_by_desc = (u8 *)value; in odm_cmn_info_hook()
2814 dm->dm_fat_table.p_default_s0_s1 = (u8 *)value; in odm_cmn_info_hook()
2817 dm->dm_fat_table.is_no_csi_feedback = (boolean *)value; in odm_cmn_info_hook()
2822 dm->soft_ap_mode = (u32 *)value; in odm_cmn_info_hook()
2825 dm->mp_mode = (u8 *)value; in odm_cmn_info_hook()
2828 dm->interrupt_mask = (u32 *)value; in odm_cmn_info_hook()
2831 dm->bb_op_mode = (u8 *)value; in odm_cmn_info_hook()
2834 dm->manual_supportability = (u32 *)value; in odm_cmn_info_hook()
2837 dm->dis_dym_bw_indication = (u8 *)value; in odm_cmn_info_hook()
2847 void odm_cmn_info_update(struct dm_struct *dm, u32 cmn_info, u64 value) in odm_cmn_info_update() argument
2852 dm->is_link_in_process = (boolean)value; in odm_cmn_info_update()
2856 dm->support_ability = (u64)value; in odm_cmn_info_update()
2860 dm->rf_type = (u8)value; in odm_cmn_info_update()
2864 dm->is_wifi_direct = (boolean)value; in odm_cmn_info_update()
2868 dm->is_wifi_display = (boolean)value; in odm_cmn_info_update()
2872 dm->is_linked = (boolean)value; in odm_cmn_info_update()
2876 dm->iot_table.is_linked_cmw500 = (boolean)value; in odm_cmn_info_update()
2880 dm->bsta_state = (boolean)value; in odm_cmn_info_update()
2885 dm->rssi_min = (u8)value; in odm_cmn_info_update()
2890 dm->rssi_min_by_path = (u8)value; in odm_cmn_info_update()
2894 dm->debug_components = (u64)value; in odm_cmn_info_update()
2900 dm->bt_info_table.is_bt_enabled = (boolean)value; in odm_cmn_info_update()
2904 dm->bt_info_table.is_bt_connect_process = (boolean)value; in odm_cmn_info_update()
2908 dm->bt_info_table.bt_hs_rssi = (u8)value; in odm_cmn_info_update()
2912 dm->bt_info_table.is_bt_hs_operation = (boolean)value; in odm_cmn_info_update()
2916 dm->bt_info_table.is_bt_limited_dig = (boolean)value; in odm_cmn_info_update()
2921 dm->ap_total_num = (u8)value; in odm_cmn_info_update()
2926 dm->dfs_region_domain = (u8)value; in odm_cmn_info_update()
2931 dm->is_bt_continuous_turn = (boolean)value; in odm_cmn_info_update()
2934 dm->is_download_fw = (boolean)value; in odm_cmn_info_update()
2937 dm->iot_table.phydm_patch_id = (u32)value; in odm_cmn_info_update()
2940 dm->dm_ra_table.rrsr_val_init = (u32)value; in odm_cmn_info_update()
2943 dm->linked_bf_support = (u8)value; in odm_cmn_info_update()
2946 dm->flatness_type = (u8)value; in odm_cmn_info_update()
2949 dm->en_tssi_mode = (u8)value; in odm_cmn_info_update()
2952 dm->is_dig_low_bond = (boolean)value; in odm_cmn_info_update()
2955 dm->is_R2R_CCA_MASKT_TIME_SHORT = (boolean)value; in odm_cmn_info_update()
2962 u32 phydm_cmn_info_query(struct dm_struct *dm, enum phydm_info_query info_type) in phydm_cmn_info_query() argument
2964 struct phydm_fa_struct *fa_t = &dm->false_alm_cnt; in phydm_cmn_info_query()
2965 struct phydm_dig_struct *dig_t = &dm->dm_dig_table; in phydm_cmn_info_query()
2966 struct ccx_info *ccx_info = &dm->dm_ccx_info; in phydm_cmn_info_query()
3037 return (u32)dm->rssi_min; in phydm_cmn_info_query()
3040 return (u32)dm->rssi_max; in phydm_cmn_info_query()
3057 void odm_init_all_work_items(struct dm_struct *dm) in odm_init_all_work_items() argument
3059 void *adapter = dm->adapter; in odm_init_all_work_items()
3063 odm_initialize_work_item(dm, in odm_init_all_work_items()
3064 &dm->dm_soml_table.phydm_adaptive_soml_workitem, in odm_init_all_work_items()
3071 odm_initialize_work_item(dm, in odm_init_all_work_items()
3072 &dm->phydm_evm_antdiv_workitem, in odm_init_all_work_items()
3079 odm_initialize_work_item(dm, in odm_init_all_work_items()
3080 &dm->dm_swat_table.phydm_sw_antenna_switch_workitem, in odm_init_all_work_items()
3086 odm_initialize_work_item(dm, in odm_init_all_work_items()
3087 &dm->dm_sat_table.hl_smart_antenna_workitem, in odm_init_all_work_items()
3092 odm_initialize_work_item(dm, in odm_init_all_work_items()
3093 &dm->dm_sat_table.hl_smart_antenna_decision_workitem, in odm_init_all_work_items()
3100 dm, in odm_init_all_work_items()
3101 &dm->ra_rpt_workitem, in odm_init_all_work_items()
3108 dm, in odm_init_all_work_items()
3109 &dm->fast_ant_training_workitem, in odm_init_all_work_items()
3119 dm, in odm_init_all_work_items()
3120 &dm->beamforming_info.txbf_info.txbf_enter_work_item, in odm_init_all_work_items()
3126 dm, in odm_init_all_work_items()
3127 &dm->beamforming_info.txbf_info.txbf_leave_work_item, in odm_init_all_work_items()
3133 dm, in odm_init_all_work_items()
3134 &dm->beamforming_info.txbf_info.txbf_fw_ndpa_work_item, in odm_init_all_work_items()
3140 dm, in odm_init_all_work_items()
3141 &dm->beamforming_info.txbf_info.txbf_clk_work_item, in odm_init_all_work_items()
3147 dm, in odm_init_all_work_items()
3148 &dm->beamforming_info.txbf_info.txbf_rate_work_item, in odm_init_all_work_items()
3154 dm, in odm_init_all_work_items()
3155 &dm->beamforming_info.txbf_info.txbf_status_work_item, in odm_init_all_work_items()
3161 dm, in odm_init_all_work_items()
3162 &dm->beamforming_info.txbf_info.txbf_reset_tx_path_work_item, in odm_init_all_work_items()
3168 dm, in odm_init_all_work_items()
3169 &dm->beamforming_info.txbf_info.txbf_get_tx_rate_work_item, in odm_init_all_work_items()
3177 dm, in odm_init_all_work_items()
3178 &dm->adcsmp.adc_smp_work_item, in odm_init_all_work_items()
3184 dm, in odm_init_all_work_items()
3185 &dm->adcsmp.adc_smp_work_item_1, in odm_init_all_work_items()
3192 void odm_free_all_work_items(struct dm_struct *dm) in odm_free_all_work_items() argument
3197 odm_free_work_item(&dm->dm_swat_table.phydm_sw_antenna_switch_workitem); in odm_free_all_work_items()
3201 odm_free_work_item(&dm->dm_soml_table.phydm_adaptive_soml_workitem); in odm_free_all_work_items()
3205 odm_free_work_item(&dm->phydm_evm_antdiv_workitem); in odm_free_all_work_items()
3209 odm_free_work_item(&dm->dm_sat_table.hl_smart_antenna_workitem); in odm_free_all_work_items()
3210 odm_free_work_item(&dm->dm_sat_table.hl_smart_antenna_decision_workitem); in odm_free_all_work_items()
3214 odm_free_work_item(&dm->fast_ant_training_workitem); in odm_free_all_work_items()
3216 odm_free_work_item(&dm->ra_rpt_workitem); in odm_free_all_work_items()
3217 /*odm_free_work_item((&dm->sbdcnt_workitem));*/ in odm_free_all_work_items()
3221 odm_free_work_item((&dm->beamforming_info.txbf_info.txbf_enter_work_item)); in odm_free_all_work_items()
3222 odm_free_work_item((&dm->beamforming_info.txbf_info.txbf_leave_work_item)); in odm_free_all_work_items()
3223 odm_free_work_item((&dm->beamforming_info.txbf_info.txbf_fw_ndpa_work_item)); in odm_free_all_work_items()
3224 odm_free_work_item((&dm->beamforming_info.txbf_info.txbf_clk_work_item)); in odm_free_all_work_items()
3225 odm_free_work_item((&dm->beamforming_info.txbf_info.txbf_rate_work_item)); in odm_free_all_work_items()
3226 odm_free_work_item((&dm->beamforming_info.txbf_info.txbf_status_work_item)); in odm_free_all_work_items()
3227 odm_free_work_item((&dm->beamforming_info.txbf_info.txbf_reset_tx_path_work_item)); in odm_free_all_work_items()
3228 odm_free_work_item((&dm->beamforming_info.txbf_info.txbf_get_tx_rate_work_item)); in odm_free_all_work_items()
3232 odm_free_work_item((&dm->adcsmp.adc_smp_work_item)); in odm_free_all_work_items()
3233 odm_free_work_item((&dm->adcsmp.adc_smp_work_item_1)); in odm_free_all_work_items()
3238 void odm_init_all_timers(struct dm_struct *dm) in odm_init_all_timers() argument
3241 odm_ant_div_timers(dm, INIT_ANTDIV_TIMMER); in odm_init_all_timers()
3245 phydm_tdma_dig_timers(dm, INIT_TDMA_DIG_TIMMER); in odm_init_all_timers()
3249 phydm_adaptive_soml_timers(dm, INIT_SOML_TIMMER); in odm_init_all_timers()
3253 phydm_lna_sat_chk_timers(dm, INIT_LNA_SAT_CHK_TIMMER); in odm_init_all_timers()
3258 odm_initialize_timer(dm, &dm->sbdcnt_timer, in odm_init_all_timers()
3261 odm_initialize_timer(dm, &dm->beamforming_info.txbf_info.txbf_fw_ndpa_timer, in odm_init_all_timers()
3269 odm_initialize_timer(dm, &dm->beamforming_info.beamforming_timer, in odm_init_all_timers()
3276 void odm_cancel_all_timers(struct dm_struct *dm) in odm_cancel_all_timers() argument
3280 if (dm->adapter == NULL) in odm_cancel_all_timers()
3285 odm_ant_div_timers(dm, CANCEL_ANTDIV_TIMMER); in odm_cancel_all_timers()
3289 phydm_tdma_dig_timers(dm, CANCEL_TDMA_DIG_TIMMER); in odm_cancel_all_timers()
3293 phydm_adaptive_soml_timers(dm, CANCEL_SOML_TIMMER); in odm_cancel_all_timers()
3297 phydm_lna_sat_chk_timers(dm, CANCEL_LNA_SAT_CHK_TIMMER); in odm_cancel_all_timers()
3302 odm_cancel_timer(dm, &dm->sbdcnt_timer); in odm_cancel_all_timers()
3304 odm_cancel_timer(dm, &dm->beamforming_info.txbf_info.txbf_fw_ndpa_timer); in odm_cancel_all_timers()
3310 odm_cancel_timer(dm, &dm->beamforming_info.beamforming_timer); in odm_cancel_all_timers()
3315 void odm_release_all_timers(struct dm_struct *dm) in odm_release_all_timers() argument
3318 odm_ant_div_timers(dm, RELEASE_ANTDIV_TIMMER); in odm_release_all_timers()
3322 phydm_tdma_dig_timers(dm, RELEASE_TDMA_DIG_TIMMER); in odm_release_all_timers()
3326 phydm_adaptive_soml_timers(dm, RELEASE_SOML_TIMMER); in odm_release_all_timers()
3330 phydm_lna_sat_chk_timers(dm, RELEASE_LNA_SAT_CHK_TIMMER); in odm_release_all_timers()
3335 odm_release_timer(dm, &dm->sbdcnt_timer); in odm_release_all_timers()
3337 odm_release_timer(dm, &dm->beamforming_info.txbf_info.txbf_fw_ndpa_timer); in odm_release_all_timers()
3343 odm_release_timer(dm, &dm->beamforming_info.beamforming_timer); in odm_release_all_timers()
3350 struct dm_struct *dm) in odm_init_all_threads() argument
3353 k_tpt_task_init(dm->priv); in odm_init_all_threads()
3358 struct dm_struct *dm) in odm_stop_all_threads() argument
3361 k_tpt_task_stop(dm->priv); in odm_stop_all_threads()
3370 void odm_dtc(struct dm_struct *dm) in odm_dtc() argument
3407 if (dm->rssi_min > DTC_BASE) { in odm_dtc()
3411 if (dtc_table_down[i] >= dm->rssi_min || dtc_steps >= 6) in odm_dtc()
3418 else if (dm->rssi_min > DTC_DWN_BASE) { in odm_dtc()
3423 if (dtc_table_up[i] <= dm->rssi_min || dtc_steps >= 10) in odm_dtc()
3437 odm_write_1byte(dm, 0x06d9, resp_txagc); in odm_dtc()
3439 PHYDM_DBG(dm, ODM_COMP_PWR_TRAIN, in odm_dtc()
3441 dm->rssi_min, sign ? "minus" : "plus", dtc_steps); in odm_dtc()
3448 void phydm_dc_cancellation(struct dm_struct *dm) in phydm_dc_cancellation() argument
3457 if (!(dm->support_ic_type & ODM_DC_CANCELLATION_SUPPORT)) in phydm_dc_cancellation()
3459 if ((dm->support_ic_type & ODM_RTL8188F) && in phydm_dc_cancellation()
3460 dm->cut_version < ODM_CUT_D) in phydm_dc_cancellation()
3462 if ((dm->support_ic_type & ODM_RTL8192F) && in phydm_dc_cancellation()
3463 dm->cut_version == ODM_CUT_A) in phydm_dc_cancellation()
3465 if (*dm->band_width == CHANNEL_WIDTH_5) in phydm_dc_cancellation()
3467 if (*dm->band_width == CHANNEL_WIDTH_10) in phydm_dc_cancellation()
3470 PHYDM_DBG(dm, ODM_COMP_API, "%s ======>\n", __func__); in phydm_dc_cancellation()
3476 dm->support_ic_type & (ODM_RTL8821C | ODM_RTL8188F | in phydm_dc_cancellation()
3481 dm->support_ic_type & (ODM_RTL8822B | ODM_RTL8192F)) in phydm_dc_cancellation()
3483 if (phydm_stop_ic_trx(dm, PHYDM_SET) == PHYDM_SET_FAIL) { in phydm_dc_cancellation()
3484 PHYDM_DBG(dm, ODM_COMP_API, "STOP_TRX_FAIL\n"); in phydm_dc_cancellation()
3487 odm_write_dig(dm, 0x7e); in phydm_dc_cancellation()
3489 if (dm->support_ic_type & (ODM_RTL8821C | ODM_RTL8721D | in phydm_dc_cancellation()
3491 halrf_rf_lna_setting(dm, HALRF_LNA_DISABLE); in phydm_dc_cancellation()
3493 if (dm->support_ic_type & (ODM_RTL8721D | ODM_RTL8710C)) in phydm_dc_cancellation()
3494 odm_set_bb_reg(dm, R_0x880, BIT(15), 0x1); in phydm_dc_cancellation()
3496 phydm_stop_3_wire(dm, PHYDM_SET); in phydm_dc_cancellation()
3497 if (dm->support_ic_type & (ODM_RTL8188F | ODM_RTL8723D | in phydm_dc_cancellation()
3500 if (!phydm_set_bb_dbg_port(dm, DBGPORT_PRI_1, 0x235)) { in phydm_dc_cancellation()
3501 PHYDM_DBG(dm, ODM_COMP_API, in phydm_dc_cancellation()
3505 } else if (dm->support_ic_type & (ODM_RTL8721D | in phydm_dc_cancellation()
3508 if (!phydm_set_bb_dbg_port(dm, DBGPORT_PRI_2, 0x200)) { in phydm_dc_cancellation()
3509 PHYDM_DBG(dm, ODM_COMP_API, in phydm_dc_cancellation()
3513 } else if (dm->support_ic_type & ODM_RTL8821C) { in phydm_dc_cancellation()
3514 if (!phydm_set_bb_dbg_port(dm, DBGPORT_PRI_1, 0x200)) { in phydm_dc_cancellation()
3516 PHYDM_DBG(dm, ODM_COMP_API, in phydm_dc_cancellation()
3520 phydm_bb_dbg_port_header_sel(dm, 0x0); in phydm_dc_cancellation()
3521 } else if (dm->support_ic_type & ODM_RTL8822B) { in phydm_dc_cancellation()
3523 !phydm_set_bb_dbg_port(dm, DBGPORT_PRI_1, 0x200)) { in phydm_dc_cancellation()
3525 PHYDM_DBG(dm, ODM_COMP_API, in phydm_dc_cancellation()
3530 !phydm_set_bb_dbg_port(dm, DBGPORT_PRI_1, 0x202)) { in phydm_dc_cancellation()
3532 PHYDM_DBG(dm, ODM_COMP_API, in phydm_dc_cancellation()
3536 phydm_bb_dbg_port_header_sel(dm, 0x0); in phydm_dc_cancellation()
3537 } else if (dm->support_ic_type & ODM_RTL8192F) { in phydm_dc_cancellation()
3539 !phydm_set_bb_dbg_port(dm, DBGPORT_PRI_1, 0x235)) { in phydm_dc_cancellation()
3541 PHYDM_DBG(dm, ODM_COMP_API, in phydm_dc_cancellation()
3546 !phydm_set_bb_dbg_port(dm, DBGPORT_PRI_1, 0x23d)) { in phydm_dc_cancellation()
3548 PHYDM_DBG(dm, ODM_COMP_API, in phydm_dc_cancellation()
3555 odm_set_bb_reg(dm, R_0xa78, MASKBYTE1, 0x0); in phydm_dc_cancellation()
3557 PHYDM_DBG(dm, ODM_COMP_API, "DC cancellation Begin!!!\n"); in phydm_dc_cancellation()
3559 phydm_stop_ck320(dm, true); /*stop ck320*/ in phydm_dc_cancellation()
3562 reg_value32[path] = phydm_get_bb_dbg_port_val(dm); in phydm_dc_cancellation()
3564 phydm_stop_ck320(dm, false); /*start ck320*/ in phydm_dc_cancellation()
3566 phydm_release_bb_dbg_port(dm); in phydm_dc_cancellation()
3568 phydm_stop_3_wire(dm, PHYDM_REVERT); in phydm_dc_cancellation()
3570 if (dm->support_ic_type & (ODM_RTL8721D | ODM_RTL8710C)) in phydm_dc_cancellation()
3571 odm_set_bb_reg(dm, R_0x880, BIT(15), 0x0); in phydm_dc_cancellation()
3573 if (dm->support_ic_type & (ODM_RTL8821C | ODM_RTL8721D | in phydm_dc_cancellation()
3575 halrf_rf_lna_setting(dm, HALRF_LNA_ENABLE); in phydm_dc_cancellation()
3577 odm_write_dig(dm, 0x20); in phydm_dc_cancellation()
3579 set_result = phydm_stop_ic_trx(dm, PHYDM_REVERT); in phydm_dc_cancellation()
3581 PHYDM_DBG(dm, ODM_COMP_API, "DC cancellation OK!!!\n"); in phydm_dc_cancellation()
3586 odm_set_bb_reg(dm, R_0xa9c, BIT(20), 0x1); in phydm_dc_cancellation()
3587 if (dm->support_ic_type & (ODM_RTL8188F | ODM_RTL8723D | in phydm_dc_cancellation()
3602 odm_set_bb_reg(dm, R_0x950, 0x1ff, offset_i_hex[0]); in phydm_dc_cancellation()
3603 odm_set_bb_reg(dm, R_0x950, 0x1ff0000, offset_q_hex[0]); in phydm_dc_cancellation()
3604 } else if (dm->support_ic_type & (ODM_RTL8821C | ODM_RTL8822B)) { in phydm_dc_cancellation()
3615 odm_set_bb_reg(dm, R_0xc10, 0x3c000000, in phydm_dc_cancellation()
3617 odm_set_bb_reg(dm, R_0xc10, 0xfc00, 0x3f & offset_i_hex[0]); in phydm_dc_cancellation()
3618 odm_set_bb_reg(dm, R_0xc14, 0x3c000000, in phydm_dc_cancellation()
3620 odm_set_bb_reg(dm, R_0xc14, 0xfc00, 0x3f & offset_q_hex[0]); in phydm_dc_cancellation()
3623 if (dm->rf_type > RF_1T1R) { in phydm_dc_cancellation()
3633 odm_set_bb_reg(dm, R_0xe10, 0x3c000000, in phydm_dc_cancellation()
3635 odm_set_bb_reg(dm, R_0xe10, 0xfc00, in phydm_dc_cancellation()
3637 odm_set_bb_reg(dm, R_0xe14, 0x3c000000, in phydm_dc_cancellation()
3639 odm_set_bb_reg(dm, R_0xe14, 0xfc00, in phydm_dc_cancellation()
3642 } else if (dm->support_ic_type & (ODM_RTL8192F)) { in phydm_dc_cancellation()
3657 odm_set_bb_reg(dm, R_0xc10, 0xff, offset_i_hex[0]); in phydm_dc_cancellation()
3658 odm_set_bb_reg(dm, R_0xc10, 0xff00, offset_q_hex[0]); in phydm_dc_cancellation()
3661 if (dm->rf_type > RF_1T1R) { in phydm_dc_cancellation()
3676 odm_set_bb_reg(dm, R_0xc18, 0xff, offset_i_hex[1]); in phydm_dc_cancellation()
3677 odm_set_bb_reg(dm, R_0xc18, 0xff00, offset_q_hex[1]); in phydm_dc_cancellation()
3679 } else if (dm->support_ic_type & (ODM_RTL8721D | ODM_RTL8710C)) { in phydm_dc_cancellation()
3696 odm_set_bb_reg(dm, R_0x950, 0x1ff, offset_i_hex[0]); in phydm_dc_cancellation()
3697 odm_set_bb_reg(dm, R_0x950, 0x1ff0000, offset_q_hex[0]); in phydm_dc_cancellation()
3705 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_receiver_blocking() local
3706 u32 chnl = *dm->channel; in phydm_receiver_blocking()
3707 u8 bw = *dm->band_width; in phydm_receiver_blocking()
3708 u32 bb_regf0 = odm_get_bb_reg(dm, R_0xf0, 0xf000); in phydm_receiver_blocking()
3710 if (!(dm->support_ic_type & ODM_RECEIVER_BLOCKING_SUPPORT) || in phydm_receiver_blocking()
3711 *dm->edcca_mode != PHYDM_EDCCA_ADAPT_MODE) in phydm_receiver_blocking()
3714 if ((dm->support_ic_type & ODM_RTL8188E && bb_regf0 < 8) || in phydm_receiver_blocking()
3715 dm->support_ic_type & ODM_RTL8192E) { in phydm_receiver_blocking()
3717 if (dm->consecutive_idlel_time <= 10 || *dm->mp_mode) in phydm_receiver_blocking()
3721 phydm_nbi_setting(dm, FUNC_ENABLE, chnl, 20, 2410, in phydm_receiver_blocking()
3723 dm->is_rx_blocking_en = true; in phydm_receiver_blocking()
3725 phydm_nbi_setting(dm, FUNC_ENABLE, chnl, 20, 2473, in phydm_receiver_blocking()
3727 dm->is_rx_blocking_en = true; in phydm_receiver_blocking()
3728 } else if (dm->is_rx_blocking_en && chnl != 1 && chnl != 13) { in phydm_receiver_blocking()
3729 phydm_nbi_enable(dm, FUNC_DISABLE); in phydm_receiver_blocking()
3730 odm_set_bb_reg(dm, R_0xc40, 0x1f000000, 0x1f); in phydm_receiver_blocking()
3731 dm->is_rx_blocking_en = false; in phydm_receiver_blocking()
3734 } else if ((dm->support_ic_type & ODM_RTL8188E && bb_regf0 >= 8)) { in phydm_receiver_blocking()
3736 if (dm->consecutive_idlel_time <= 10 || *dm->mp_mode) in phydm_receiver_blocking()
3740 phydm_nbi_setting(dm, FUNC_ENABLE, chnl, 20, 2473, in phydm_receiver_blocking()
3742 dm->is_rx_blocking_en = true; in phydm_receiver_blocking()
3743 } else if (dm->is_rx_blocking_en && chnl != 13) { in phydm_receiver_blocking()
3744 phydm_nbi_enable(dm, FUNC_DISABLE); in phydm_receiver_blocking()
3745 odm_set_bb_reg(dm, R_0xc40, 0x1f000000, 0x1f); in phydm_receiver_blocking()
3746 dm->is_rx_blocking_en = false; in phydm_receiver_blocking()
3752 if (dm->is_rx_blocking_en) { in phydm_receiver_blocking()
3753 phydm_nbi_enable(dm, FUNC_DISABLE); in phydm_receiver_blocking()
3754 odm_set_bb_reg(dm, R_0xc40, 0x1f000000, 0x1f); in phydm_receiver_blocking()
3755 dm->is_rx_blocking_en = false; in phydm_receiver_blocking()
3763 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_dyn_bw_indication() local
3764 u8 en_auto_bw_th = dm->en_auto_bw_th; in phydm_dyn_bw_indication()
3766 if (!(dm->support_ic_type & ODM_DYM_BW_INDICATION_SUPPORT)) in phydm_dyn_bw_indication()
3770 if (dm->dis_dym_bw_indication) { in phydm_dyn_bw_indication()
3771 if (*dm->dis_dym_bw_indication) in phydm_dyn_bw_indication()
3776 if (dm->rssi_min <= en_auto_bw_th && dm->is_linked) { in phydm_dyn_bw_indication()
3777 phydm_bw_fixed_enable(dm, FUNC_DISABLE); in phydm_dyn_bw_indication()
3781 phydm_bw_fixed_setting(dm); in phydm_dyn_bw_indication()