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
404 PADAPTER adapter = (PADAPTER)dm->adapter; in phydm_common_info_self_update()
407 sta = dm->phydm_sta_info[0]; in phydm_common_info_self_update()
411 dm->bsta_state = true; in phydm_common_info_self_update()
413 dm->bsta_state = false; in phydm_common_info_self_update()
417 sta = dm->phydm_sta_info[i]; in phydm_common_info_self_update()
424 phydm_cmn_sta_info_update(dm, (u8)i); in phydm_common_info_self_update()
426 /*@phydm_get_txbf_device_num(dm, (u8)i);*/ in phydm_common_info_self_update()
432 PHYDM_DBG(dm, DBG_COMMON_FLOW, in phydm_common_info_self_update()
441 dm->is_linked = (sta_cnt != 0) ? true : false; in phydm_common_info_self_update()
445 dm->is_one_entry_only = true; in phydm_common_info_self_update()
446 dm->one_entry_macid = one_entry_macid; in phydm_common_info_self_update()
447 dm->one_entry_tp = ma_rx_tp; in phydm_common_info_self_update()
449 dm->tp_active_occur = 0; in phydm_common_info_self_update()
451 PHYDM_DBG(dm, DBG_COMMON_FLOW, in phydm_common_info_self_update()
453 dm->one_entry_tp, dm->pre_one_entry_tp); in phydm_common_info_self_update()
455 if (dm->one_entry_tp > dm->pre_one_entry_tp && in phydm_common_info_self_update()
456 dm->pre_one_entry_tp <= 2) { in phydm_common_info_self_update()
457 tp_diff = dm->one_entry_tp - dm->pre_one_entry_tp; in phydm_common_info_self_update()
459 if (tp_diff > dm->tp_active_th) in phydm_common_info_self_update()
460 dm->tp_active_occur = 1; in phydm_common_info_self_update()
462 dm->pre_one_entry_tp = dm->one_entry_tp; in phydm_common_info_self_update()
464 dm->is_one_entry_only = false; in phydm_common_info_self_update()
467 dm->pre_number_linked_client = dm->number_linked_client; in phydm_common_info_self_update()
468 dm->pre_number_active_client = dm->number_active_client; in phydm_common_info_self_update()
470 dm->number_linked_client = sta_cnt; in phydm_common_info_self_update()
471 dm->number_active_client = num_active_client; in phydm_common_info_self_update()
474 phydm_traffic_load_decision(dm); in phydm_common_info_self_update()
476 dm->phydm_sys_up_time += PHYDM_WATCH_DOG_PERIOD; in phydm_common_info_self_update()
478 dm->is_dfs_band = phydm_is_dfs_band(dm); in phydm_common_info_self_update()
479 dm->phy_dbg_info.show_phy_sts_cnt = 0; in phydm_common_info_self_update()
482 dm->first_connect = dm->is_linked && !dm->pre_is_linked; in phydm_common_info_self_update()
483 dm->first_disconnect = !dm->is_linked && dm->pre_is_linked; in phydm_common_info_self_update()
484 dm->pre_is_linked = dm->is_linked; in phydm_common_info_self_update()
487 void phydm_common_info_self_reset(struct dm_struct *dm) in phydm_common_info_self_reset() argument
489 struct odm_phy_dbg_info *dbg_t = &dm->phy_dbg_info; in phydm_common_info_self_reset()
494 dm->rxsc_l = 0xff; in phydm_common_info_self_reset()
495 dm->rxsc_20 = 0xff; in phydm_common_info_self_reset()
496 dm->rxsc_40 = 0xff; in phydm_common_info_self_reset()
497 dm->rxsc_80 = 0xff; in phydm_common_info_self_reset()
501 phydm_get_structure(struct dm_struct *dm, u8 structure_type) in phydm_get_structure() argument
508 structure = &dm->false_alm_cnt; in phydm_get_structure()
512 structure = &dm->dm_cfo_track; in phydm_get_structure()
516 structure = &dm->adaptivity; in phydm_get_structure()
520 structure = &dm->dfs; in phydm_get_structure()
530 void phydm_phy_info_update(struct dm_struct *dm) in phydm_phy_info_update() argument
533 if (dm->support_ic_type == ODM_RTL8822B) in phydm_phy_info_update()
534 dm->phy_dbg_info.condi_num = phydm_get_condi_num_8822b(dm); in phydm_phy_info_update()
538 void phydm_hw_setting(struct dm_struct *dm) in phydm_hw_setting() argument
541 if (dm->support_ic_type & ODM_RTL8821) in phydm_hw_setting()
542 odm_hw_setting_8821a(dm); in phydm_hw_setting()
546 if (dm->support_ic_type & ODM_RTL8814A) in phydm_hw_setting()
547 phydm_hwsetting_8814a(dm); in phydm_hw_setting()
551 if (dm->support_ic_type & ODM_RTL8822B) in phydm_hw_setting()
552 phydm_hwsetting_8822b(dm); in phydm_hw_setting()
556 if (dm->support_ic_type & ODM_RTL8812) in phydm_hw_setting()
557 phydm_hwsetting_8812a(dm); in phydm_hw_setting()
561 if (dm->support_ic_type & ODM_RTL8197F) in phydm_hw_setting()
562 phydm_hwsetting_8197f(dm); in phydm_hw_setting()
566 if (dm->support_ic_type & ODM_RTL8192F) in phydm_hw_setting()
567 phydm_hwsetting_8192f(dm); in phydm_hw_setting()
571 if (dm->support_ic_type & ODM_RTL8822C) in phydm_hw_setting()
572 phydm_hwsetting_8822c(dm); in phydm_hw_setting()
576 if (dm->support_ic_type & ODM_RTL8197G) in phydm_hw_setting()
577 phydm_hwsetting_8197g(dm); in phydm_hw_setting()
581 if (dm->support_ic_type & ODM_RTL8821C) in phydm_hw_setting()
582 phydm_hwsetting_8821c(dm); in phydm_hw_setting()
586 if (dm->support_ic_type & ODM_RTL8812F) in phydm_hw_setting()
587 phydm_hwsetting_8812f(dm); in phydm_hw_setting()
591 phydm_cck_rx_pathdiv_watchdog(dm); in phydm_hw_setting()
596 boolean phydm_chk_bb_rf_pkg_set_valid(struct dm_struct *dm) in phydm_chk_bb_rf_pkg_set_valid() argument
600 if (dm->support_ic_type == ODM_RTL8822C) { in phydm_chk_bb_rf_pkg_set_valid()
602 valid = phydm_chk_pkg_set_valid_8822c(dm, in phydm_chk_bb_rf_pkg_set_valid()
609 } else if (dm->support_ic_type == ODM_RTL8812F) { in phydm_chk_bb_rf_pkg_set_valid()
610 valid = phydm_chk_pkg_set_valid_8812f(dm, in phydm_chk_bb_rf_pkg_set_valid()
615 } else if (dm->support_ic_type == ODM_RTL8197G) { in phydm_chk_bb_rf_pkg_set_valid()
616 valid = phydm_chk_pkg_set_valid_8197g(dm, in phydm_chk_bb_rf_pkg_set_valid()
621 } else if (dm->support_ic_type == ODM_RTL8812F) { in phydm_chk_bb_rf_pkg_set_valid()
622 valid = phydm_chk_pkg_set_valid_8812f(dm, in phydm_chk_bb_rf_pkg_set_valid()
627 } else if (dm->support_ic_type == ODM_RTL8198F) { in phydm_chk_bb_rf_pkg_set_valid()
628 valid = phydm_chk_pkg_set_valid_8198f(dm, in phydm_chk_bb_rf_pkg_set_valid()
633 } else if (dm->support_ic_type == ODM_RTL8814B) { in phydm_chk_bb_rf_pkg_set_valid()
634 valid = phydm_chk_pkg_set_valid_8814b(dm, in phydm_chk_bb_rf_pkg_set_valid()
647 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_supportability_init_win() local
650 switch (dm->support_ic_type) { in phydm_supportability_init_win()
929 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_supportability_init_ce() local
932 switch (dm->support_ic_type) { in phydm_supportability_init_ce()
1209 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_supportability_init_ap() local
1212 switch (dm->support_ic_type) { in phydm_supportability_init_ap()
1464 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_supportability_init_iot() local
1467 switch (dm->support_ic_type) { in phydm_supportability_init_iot()
1571 void phydm_fwoffload_ability_init(struct dm_struct *dm, in phydm_fwoffload_ability_init() argument
1576 if (dm->support_ic_type & PHYDM_IC_SUPPORT_FW_PARAM_OFFLOAD) in phydm_fwoffload_ability_init()
1577 dm->fw_offload_ability |= PHYDM_PHY_PARAM_OFFLOAD; in phydm_fwoffload_ability_init()
1581 dm->fw_offload_ability |= PHYDM_RF_IQK_OFFLOAD; in phydm_fwoffload_ability_init()
1585 dm->fw_offload_ability |= PHYDM_RF_DPK_OFFLOAD; in phydm_fwoffload_ability_init()
1589 PHYDM_DBG(dm, ODM_COMP_INIT, "fwofflad, wrong init type!!\n"); in phydm_fwoffload_ability_init()
1593 PHYDM_DBG(dm, ODM_COMP_INIT, "fw_offload_ability = %x\n", in phydm_fwoffload_ability_init()
1594 dm->fw_offload_ability); in phydm_fwoffload_ability_init()
1597 void phydm_fwoffload_ability_clear(struct dm_struct *dm, in phydm_fwoffload_ability_clear() argument
1602 if (dm->support_ic_type & PHYDM_IC_SUPPORT_FW_PARAM_OFFLOAD) in phydm_fwoffload_ability_clear()
1603 dm->fw_offload_ability &= (~PHYDM_PHY_PARAM_OFFLOAD); in phydm_fwoffload_ability_clear()
1607 dm->fw_offload_ability &= (~PHYDM_RF_IQK_OFFLOAD); in phydm_fwoffload_ability_clear()
1611 dm->fw_offload_ability &= (~PHYDM_RF_DPK_OFFLOAD); in phydm_fwoffload_ability_clear()
1615 PHYDM_DBG(dm, ODM_COMP_INIT, "fwofflad, wrong init type!!\n"); in phydm_fwoffload_ability_clear()
1619 PHYDM_DBG(dm, ODM_COMP_INIT, "fw_offload_ability = %x\n", in phydm_fwoffload_ability_clear()
1620 dm->fw_offload_ability); in phydm_fwoffload_ability_clear()
1625 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_supportability_init() local
1628 if (dm->manual_supportability && in phydm_supportability_init()
1629 *dm->manual_supportability != 0xffffffff) { in phydm_supportability_init()
1630 support_ability = *dm->manual_supportability; in phydm_supportability_init()
1631 } else if (*dm->mp_mode) { in phydm_supportability_init()
1635 support_ability = phydm_supportability_init_win(dm); in phydm_supportability_init()
1637 support_ability = phydm_supportability_init_ap(dm); in phydm_supportability_init()
1639 support_ability = phydm_supportability_init_ce(dm); in phydm_supportability_init()
1641 support_ability = phydm_supportability_init_iot(dm); in phydm_supportability_init()
1645 if (IS_FUNC_EN(dm->enable_antdiv)) in phydm_supportability_init()
1649 if (IS_FUNC_EN(dm->enable_pathdiv)) in phydm_supportability_init()
1653 if (IS_FUNC_EN(dm->en_adap_soml)) in phydm_supportability_init()
1657 dm->support_ability = support_ability; in phydm_supportability_init()
1658 PHYDM_DBG(dm, ODM_COMP_INIT, "IC=0x%x, mp=%d, Supportability=0x%llx\n", in phydm_supportability_init()
1659 dm->support_ic_type, *dm->mp_mode, dm->support_ability); in phydm_supportability_init()
1664 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_rfe_init() local
1666 PHYDM_DBG(dm, ODM_COMP_INIT, "RFE_Init\n"); in phydm_rfe_init()
1668 if (dm->support_ic_type == ODM_RTL8822B) in phydm_rfe_init()
1669 phydm_rfe_8822b_init(dm); in phydm_rfe_init()
1677 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_tx_collsion_th_init() local
1680 if (dm->support_ic_type & ODM_RTL8197G) in phydm_tx_collsion_th_init()
1681 phydm_tx_collsion_th_init_8197g(dm); in phydm_tx_collsion_th_init()
1685 if (dm->support_ic_type & ODM_RTL8812F) in phydm_tx_collsion_th_init()
1686 phydm_tx_collsion_th_init_8812f(dm); in phydm_tx_collsion_th_init()
1693 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_tx_collsion_th_set() local
1696 if (dm->support_ic_type & ODM_RTL8197G) in phydm_tx_collsion_th_set()
1697 phydm_tx_collsion_th_set_8197g(dm, val_r2t, val_t2r); in phydm_tx_collsion_th_set()
1701 if (dm->support_ic_type & ODM_RTL8812F) in phydm_tx_collsion_th_set()
1702 phydm_tx_collsion_th_set_8812f(dm, val_r2t, val_t2r); in phydm_tx_collsion_th_set()
1708 void phydm_dm_early_init(struct dm_struct *dm) in phydm_dm_early_init() argument
1711 phydm_init_debug_setting(dm); in phydm_dm_early_init()
1715 enum phydm_init_result odm_dm_init(struct dm_struct *dm) in odm_dm_init() argument
1719 if (!phydm_chk_bb_rf_pkg_set_valid(dm)) { in odm_dm_init()
1724 halrf_init(dm); in odm_dm_init()
1725 phydm_supportability_init(dm); in odm_dm_init()
1726 phydm_pause_func_init(dm); in odm_dm_init()
1727 phydm_rfe_init(dm); in odm_dm_init()
1728 phydm_common_info_self_init(dm); in odm_dm_init()
1729 phydm_rx_phy_status_init(dm); in odm_dm_init()
1731 phydm_auto_dbg_engine_init(dm); in odm_dm_init()
1733 phydm_dig_init(dm); in odm_dm_init()
1736 phydm_dig_cckpd_coex_init(dm); in odm_dm_init()
1738 phydm_cck_pd_init(dm); in odm_dm_init()
1740 phydm_env_monitor_init(dm); in odm_dm_init()
1741 phydm_enhance_monitor_init(dm); in odm_dm_init()
1742 phydm_adaptivity_init(dm); in odm_dm_init()
1743 phydm_ra_info_init(dm); in odm_dm_init()
1744 phydm_rssi_monitor_init(dm); in odm_dm_init()
1745 phydm_cfo_tracking_init(dm); in odm_dm_init()
1746 phydm_rf_init(dm); in odm_dm_init()
1747 phydm_dc_cancellation(dm); in odm_dm_init()
1749 phydm_txcurrentcalibration(dm); in odm_dm_init()
1750 phydm_get_pa_bias_offset(dm); in odm_dm_init()
1753 odm_antenna_diversity_init(dm); in odm_dm_init()
1756 phydm_adaptive_soml_init(dm); in odm_dm_init()
1759 phydm_tx_path_diversity_init(dm); in odm_dm_init()
1762 phydm_dynamic_tx_power_init(dm); in odm_dm_init()
1765 phydm_la_init(dm); in odm_dm_init()
1769 phydm_beamforming_init(dm); in odm_dm_init()
1773 odm_ra_info_init_all(dm); in odm_dm_init()
1776 phydm_primary_cca_init(dm); in odm_dm_init()
1779 phydm_psd_init(dm); in odm_dm_init()
1783 phydm_smt_ant_init(dm); in odm_dm_init()
1786 phydm_lna_sat_check_init(dm); in odm_dm_init()
1789 phydm_mcc_init(dm); in odm_dm_init()
1793 phydm_cck_rx_pathdiv_init(dm); in odm_dm_init()
1797 phydm_mu_rsoml_init(dm); in odm_dm_init()
1801 phydm_tx_collsion_th_init(dm); in odm_dm_init()
1807 void odm_dm_reset(struct dm_struct *dm) in odm_dm_reset() argument
1810 odm_ant_div_reset(dm); in odm_dm_reset()
1812 phydm_set_edcca_threshold_api(dm); in odm_dm_reset()
1818 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_supportability_en() local
1831 pre_support_ability = dm->support_ability; in phydm_supportability_en()
1832 comp = dm->support_ability; in phydm_supportability_en()
1908 ((dm->fw_offload_ability & PHYDM_PHY_PARAM_OFFLOAD) ? in phydm_supportability_en()
1912 ((dm->fw_offload_ability & PHYDM_RF_IQK_OFFLOAD) ? in phydm_supportability_en()
1918 dm->support_ability = 0; in phydm_supportability_en()
1923 dm->support_ability |= (one << dm_value[0]); in phydm_supportability_en()
1925 dm->support_ability &= ~(one << dm_value[0]); in phydm_supportability_en()
1934 "Cur-supportability = 0x%llx\n", dm->support_ability); in phydm_supportability_en()
1942 void phydm_watchdog_lps_32k(struct dm_struct *dm) in phydm_watchdog_lps_32k() argument
1944 PHYDM_DBG(dm, DBG_COMMON_FLOW, "%s ======>\n", __func__); in phydm_watchdog_lps_32k()
1946 phydm_common_info_self_update(dm); in phydm_watchdog_lps_32k()
1947 phydm_rssi_monitor_check(dm); in phydm_watchdog_lps_32k()
1948 phydm_dig_lps_32k(dm); in phydm_watchdog_lps_32k()
1949 phydm_common_info_self_reset(dm); in phydm_watchdog_lps_32k()
1952 void phydm_watchdog_lps(struct dm_struct *dm) in phydm_watchdog_lps() argument
1955 PHYDM_DBG(dm, DBG_COMMON_FLOW, "%s ======>\n", __func__); in phydm_watchdog_lps()
1957 phydm_common_info_self_update(dm); in phydm_watchdog_lps()
1958 phydm_rssi_monitor_check(dm); in phydm_watchdog_lps()
1959 phydm_basic_dbg_message(dm); in phydm_watchdog_lps()
1960 phydm_receiver_blocking(dm); in phydm_watchdog_lps()
1961 phydm_false_alarm_counter_statistics(dm); in phydm_watchdog_lps()
1962 phydm_dig_by_rssi_lps(dm); in phydm_watchdog_lps()
1964 phydm_cck_pd_th(dm); in phydm_watchdog_lps()
1966 phydm_adaptivity(dm); in phydm_watchdog_lps()
1968 phydm_dyn_bw_indication(dm); in phydm_watchdog_lps()
1973 odm_antenna_diversity(dm); in phydm_watchdog_lps()
1976 phydm_common_info_self_reset(dm); in phydm_watchdog_lps()
1980 void phydm_watchdog_mp(struct dm_struct *dm) in phydm_watchdog_mp() argument
1986 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_pause_dm_watchdog() local
1989 dm->disable_phydm_watchdog = 1; in phydm_pause_dm_watchdog()
1990 PHYDM_DBG(dm, ODM_COMP_API, "PHYDM Stop\n"); in phydm_pause_dm_watchdog()
1992 dm->disable_phydm_watchdog = 0; in phydm_pause_dm_watchdog()
1993 PHYDM_DBG(dm, ODM_COMP_API, "PHYDM Start\n"); in phydm_pause_dm_watchdog()
1999 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_pause_func_init() local
2001 dm->pause_lv_table.lv_cckpd = PHYDM_PAUSE_RELEASE; in phydm_pause_func_init()
2002 dm->pause_lv_table.lv_dig = PHYDM_PAUSE_RELEASE; in phydm_pause_func_init()
2003 dm->pause_lv_table.lv_antdiv = PHYDM_PAUSE_RELEASE; in phydm_pause_func_init()
2004 dm->pause_lv_table.lv_dig = PHYDM_PAUSE_RELEASE; in phydm_pause_func_init()
2005 dm->pause_lv_table.lv_adapt = PHYDM_PAUSE_RELEASE; in phydm_pause_func_init()
2006 dm->pause_lv_table.lv_adsl = PHYDM_PAUSE_RELEASE; in phydm_pause_func_init()
2014 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_pause_func() local
2015 struct phydm_func_poiner *func_t = &dm->phydm_func_handler; in phydm_pause_func()
2016 s8 *pause_lv_pre = &dm->s8_dummy; in phydm_pause_func()
2017 u32 *bkp_val = &dm->u32_dummy; in phydm_pause_func()
2025 PHYDM_DBG(dm, ODM_COMP_API, "\n"); in phydm_pause_func()
2026 PHYDM_DBG(dm, ODM_COMP_API, "[%s][%s] LV=%d, Len=%d\n", __func__, in phydm_pause_func()
2032 PHYDM_DBG(dm, ODM_COMP_API, "[WARNING]Wrong LV=%d\n", pause_lv); in phydm_pause_func()
2037 PHYDM_DBG(dm, ODM_COMP_API, "[DIG]\n"); in phydm_pause_func()
2040 PHYDM_DBG(dm, ODM_COMP_API, "[WARNING] length != 1\n"); in phydm_pause_func()
2044 ori_val[0] = (u32)(dm->dm_dig_table.cur_ig_value); in phydm_pause_func()
2045 pause_lv_pre = &dm->pause_lv_table.lv_dig; in phydm_pause_func()
2046 bkp_val = (u32 *)(&dm->dm_dig_table.rvrt_val); in phydm_pause_func()
2052 PHYDM_DBG(dm, ODM_COMP_API, "[CCK_PD]\n"); in phydm_pause_func()
2055 PHYDM_DBG(dm, ODM_COMP_API, "[WARNING] length != 1\n"); in phydm_pause_func()
2059 ori_val[0] = (u32)dm->dm_cckpd_table.cck_pd_lv; in phydm_pause_func()
2060 pause_lv_pre = &dm->pause_lv_table.lv_cckpd; in phydm_pause_func()
2061 bkp_val = (u32 *)(&dm->dm_cckpd_table.rvrt_val); in phydm_pause_func()
2068 PHYDM_DBG(dm, ODM_COMP_API, "[AntDiv]\n"); in phydm_pause_func()
2071 PHYDM_DBG(dm, ODM_COMP_API, "[WARNING] length != 1\n"); in phydm_pause_func()
2075 ori_val[0] = (u32)(dm->dm_fat_table.rx_idle_ant); in phydm_pause_func()
2076 pause_lv_pre = &dm->pause_lv_table.lv_antdiv; in phydm_pause_func()
2077 bkp_val = (u32 *)(&dm->dm_fat_table.rvrt_val); in phydm_pause_func()
2084 PHYDM_DBG(dm, ODM_COMP_API, "[Adaptivity]\n"); in phydm_pause_func()
2087 PHYDM_DBG(dm, ODM_COMP_API, "[WARNING] length != 2\n"); in phydm_pause_func()
2091 ori_val[0] = (u32)(dm->adaptivity.th_l2h); /*th_l2h*/ in phydm_pause_func()
2092 ori_val[1] = (u32)(dm->adaptivity.th_h2l); /*th_h2l*/ in phydm_pause_func()
2093 pause_lv_pre = &dm->pause_lv_table.lv_adapt; in phydm_pause_func()
2094 bkp_val = (u32 *)(&dm->adaptivity.rvrt_val); in phydm_pause_func()
2101 PHYDM_DBG(dm, ODM_COMP_API, "[AD-SOML]\n"); in phydm_pause_func()
2104 PHYDM_DBG(dm, ODM_COMP_API, "[WARNING] length != 1\n"); in phydm_pause_func()
2108 ori_val[0] = (u32)(dm->dm_soml_table.soml_on_off); in phydm_pause_func()
2110 pause_lv_pre = &dm->pause_lv_table.lv_adsl; in phydm_pause_func()
2111 bkp_val = (u32 *)(&dm->dm_soml_table.rvrt_val); in phydm_pause_func()
2117 PHYDM_DBG(dm, ODM_COMP_API, "[WARNING] error func idx\n"); in phydm_pause_func()
2121 PHYDM_DBG(dm, ODM_COMP_API, "Pause_LV{new , pre} = {%d ,%d}\n", in phydm_pause_func()
2126 PHYDM_DBG(dm, ODM_COMP_API, in phydm_pause_func()
2131 if (!(dm->pause_ability & pause_func_bitmap)) { in phydm_pause_func()
2136 dm->pause_ability |= pause_func_bitmap; in phydm_pause_func()
2137 PHYDM_DBG(dm, ODM_COMP_API, "pause_ability=0x%llx\n", in phydm_pause_func()
2138 dm->pause_ability); in phydm_pause_func()
2142 PHYDM_DBG(dm, ODM_COMP_API, in phydm_pause_func()
2145 func_t->pause_phydm_handler(dm, val_buf, val_lehgth); in phydm_pause_func()
2148 PHYDM_DBG(dm, ODM_COMP_API, in phydm_pause_func()
2158 PHYDM_DBG(dm, ODM_COMP_API, in phydm_pause_func()
2163 if ((dm->pause_ability & pause_func_bitmap) == 0) { in phydm_pause_func()
2164 PHYDM_DBG(dm, ODM_COMP_API, in phydm_pause_func()
2169 dm->pause_ability &= ~pause_func_bitmap; in phydm_pause_func()
2170 PHYDM_DBG(dm, ODM_COMP_API, "pause_ability=0x%llx\n", in phydm_pause_func()
2171 dm->pause_ability); in phydm_pause_func()
2176 PHYDM_DBG(dm, ODM_COMP_API, in phydm_pause_func()
2181 func_t->pause_phydm_handler(dm, bkp_val, val_lehgth); in phydm_pause_func()
2185 PHYDM_DBG(dm, ODM_COMP_API, "[WARNING] error pause_type\n"); in phydm_pause_func()
2194 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_pause_func_console() local
2260 set_result = phydm_pause_func(dm, func, type, lv, length, buf); in phydm_pause_func_console()
2271 void phydm_pause_dm_by_asso_pkt(struct dm_struct *dm, in phydm_pause_dm_by_asso_pkt() argument
2277 PHYDM_DBG(dm, ODM_COMP_API, "[%s][%s] rssi=%d\n", __func__, in phydm_pause_dm_by_asso_pkt()
2283 phydm_pause_func(dm, F00_DIG, PHYDM_RESUME, in phydm_pause_dm_by_asso_pkt()
2286 phydm_pause_func(dm, F13_ADPTVTY, PHYDM_RESUME, in phydm_pause_dm_by_asso_pkt()
2289 odm_write_dig(dm, (u8)igi_val); in phydm_pause_dm_by_asso_pkt()
2290 phydm_pause_func(dm, F00_DIG, PHYDM_PAUSE, in phydm_pause_dm_by_asso_pkt()
2296 phydm_pause_func(dm, F13_ADPTVTY, PHYDM_PAUSE, in phydm_pause_dm_by_asso_pkt()
2303 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_stop_dm_watchdog_check() local
2305 if (dm->disable_phydm_watchdog == 1) { in phydm_stop_dm_watchdog_check()
2306 PHYDM_DBG(dm, DBG_COMMON_FLOW, "Disable phydm\n"); in phydm_stop_dm_watchdog_check()
2313 void phydm_watchdog(struct dm_struct *dm) in phydm_watchdog() argument
2315 PHYDM_DBG(dm, DBG_COMMON_FLOW, "%s ======>\n", __func__); in phydm_watchdog()
2317 phydm_common_info_self_update(dm); in phydm_watchdog()
2318 phydm_phy_info_update(dm); in phydm_watchdog()
2319 phydm_rssi_monitor_check(dm); in phydm_watchdog()
2320 phydm_basic_dbg_message(dm); in phydm_watchdog()
2321 phydm_dm_summary(dm, FIRST_MACID); in phydm_watchdog()
2323 phydm_auto_dbg_engine(dm); in phydm_watchdog()
2325 phydm_receiver_blocking(dm); in phydm_watchdog()
2327 if (phydm_stop_dm_watchdog_check(dm) == true) in phydm_watchdog()
2330 phydm_hw_setting(dm); in phydm_watchdog()
2333 if (dm->original_dig_restore == 0) { in phydm_watchdog()
2334 phydm_tdma_dig_timer_check(dm); in phydm_watchdog()
2338 phydm_false_alarm_counter_statistics(dm); in phydm_watchdog()
2339 phydm_noisy_detection(dm); in phydm_watchdog()
2342 phydm_dig_cckpd_coex(dm); in phydm_watchdog()
2344 phydm_dig(dm); in phydm_watchdog()
2346 phydm_cck_pd_th(dm); in phydm_watchdog()
2352 phydm_hwigi(dm); in phydm_watchdog()
2355 phydm_update_power_training_state(dm); in phydm_watchdog()
2357 phydm_adaptivity(dm); in phydm_watchdog()
2358 phydm_ra_info_watchdog(dm); in phydm_watchdog()
2360 phydm_tx_path_diversity(dm); in phydm_watchdog()
2362 phydm_cfo_tracking(dm); in phydm_watchdog()
2364 phydm_dynamic_tx_power(dm); in phydm_watchdog()
2367 odm_antenna_diversity(dm); in phydm_watchdog()
2370 phydm_adaptive_soml(dm); in phydm_watchdog()
2374 phydm_beamforming_watchdog(dm); in phydm_watchdog()
2377 halrf_watchdog(dm); in phydm_watchdog()
2379 phydm_primary_cca(dm); in phydm_watchdog()
2382 phydm_dyn_bw_indication(dm); in phydm_watchdog()
2385 odm_dtc(dm); in phydm_watchdog()
2388 phydm_env_mntr_watchdog(dm); in phydm_watchdog()
2389 phydm_enhance_mntr_watchdog(dm); in phydm_watchdog()
2392 phydm_lna_sat_chk_watchdog(dm); in phydm_watchdog()
2396 phydm_mcc_switch(dm); in phydm_watchdog()
2400 phydm_mu_rsoml_decision(dm); in phydm_watchdog()
2403 phydm_common_info_self_reset(dm); in phydm_watchdog()
2409 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_fw_dm_ctrl_en() local
2422 phydm_fill_fw_dig_info(dm, &enable, para4, para8); in phydm_fw_dm_ctrl_en()
2437 PHYDM_DBG(dm, DBG_FW_DM, in phydm_fw_dm_ctrl_en()
2443 odm_fill_h2c_cmd(dm, PHYDM_H2C_FW_DM_CTRL, H2C_MAX_LENGTH, h2c_val); in phydm_fw_dm_ctrl_en()
2449 void odm_cmn_info_init(struct dm_struct *dm, enum odm_cmninfo cmn_info, in odm_cmn_info_init() argument
2456 dm->support_ability = (u64)value; in odm_cmn_info_init()
2460 dm->rf_type = (u8)value; in odm_cmn_info_init()
2464 dm->support_platform = (u8)value; in odm_cmn_info_init()
2468 dm->support_interface = (u8)value; in odm_cmn_info_init()
2472 dm->is_mp_chip = (u8)value; in odm_cmn_info_init()
2476 dm->support_ic_type = (u32)value; in odm_cmn_info_init()
2480 dm->cut_version = (u8)value; in odm_cmn_info_init()
2484 dm->fab_version = (u8)value; in odm_cmn_info_init()
2487 dm->fw_version = (u8)value; in odm_cmn_info_init()
2490 dm->fw_sub_version = (u8)value; in odm_cmn_info_init()
2494 if (dm->support_ic_type & ODM_RTL8821C) in odm_cmn_info_init()
2495 dm->rfe_type_expand = (u8)value; in odm_cmn_info_init()
2498 dm->rfe_type = (u8)value; in odm_cmn_info_init()
2501 phydm_init_hw_info_by_rfe(dm); in odm_cmn_info_init()
2506 dm->ant_div_type = (u8)value; in odm_cmn_info_init()
2510 dm->with_extenal_ant_switch = (u8)value; in odm_cmn_info_init()
2515 dm->dm_fat_table.b_fix_tx_ant = (u8)value; in odm_cmn_info_init()
2520 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2521 dm->board_type = (u8)value; in odm_cmn_info_init()
2525 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2526 dm->package_type = (u8)value; in odm_cmn_info_init()
2530 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2531 dm->ext_lna = (u8)value; in odm_cmn_info_init()
2535 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2536 dm->ext_lna_5g = (u8)value; in odm_cmn_info_init()
2540 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2541 dm->ext_pa = (u8)value; in odm_cmn_info_init()
2545 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2546 dm->ext_pa_5g = (u8)value; in odm_cmn_info_init()
2550 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2551 dm->type_gpa = (u16)value; in odm_cmn_info_init()
2555 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2556 dm->type_apa = (u16)value; in odm_cmn_info_init()
2560 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2561 dm->type_glna = (u16)value; in odm_cmn_info_init()
2565 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2566 dm->type_alna = (u16)value; in odm_cmn_info_init()
2570 if (!dm->is_init_hw_info_by_rfe) in odm_cmn_info_init()
2571 dm->ext_trsw = (u8)value; in odm_cmn_info_init()
2574 dm->ext_lna_gain = (u8)value; in odm_cmn_info_init()
2577 dm->iot_table.win_patch_id = (u8)value; in odm_cmn_info_init()
2580 dm->is_in_hct_test = (boolean)value; in odm_cmn_info_init()
2583 dm->wifi_test = (u8)value; in odm_cmn_info_init()
2586 dm->is_dual_mac_smart_concurrent = (boolean)value; in odm_cmn_info_init()
2590 dm->config_bbrf = (boolean)value; in odm_cmn_info_init()
2594 dm->rf_calibrate_info.is_iqk_pa_off = (boolean)value; in odm_cmn_info_init()
2597 dm->rf_calibrate_info.reg_rf_kfree_enable = (u8)value; in odm_cmn_info_init()
2600 dm->rf_calibrate_info.rf_kfree_enable = (u8)value; in odm_cmn_info_init()
2603 dm->normal_rx_path = (u8)value; in odm_cmn_info_init()
2606 dm->valid_path_set = (u8)value; in odm_cmn_info_init()
2609 dm->efuse0x3d8 = (u8)value; in odm_cmn_info_init()
2612 dm->efuse0x3d7 = (u8)value; in odm_cmn_info_init()
2615 dm->p_advance_ota = (u8)value; in odm_cmn_info_init()
2620 dm->dfs_region_domain = (u8)value; in odm_cmn_info_init()
2624 dm->soft_ap_special_setting = (u32)value; in odm_cmn_info_init()
2628 dm->dm_cfo_track.crystal_cap_default = (u8)value; in odm_cmn_info_init()
2632 /*@dm->dpk_en = (u1Byte)value;*/ in odm_cmn_info_init()
2633 halrf_cmn_info_set(dm, HALRF_CMNINFO_DPK_EN, (u64)value); in odm_cmn_info_init()
2637 dm->hp_hw_id = (boolean)value; in odm_cmn_info_init()
2640 dm->en_tssi_mode = (u8)value; in odm_cmn_info_init()
2643 dm->en_dis_dpd = (boolean)value; in odm_cmn_info_init()
2646 dm->en_auto_bw_th = (u8)value; in odm_cmn_info_init()
2650 dm->power_voltage = (u8)value; in odm_cmn_info_init()
2653 dm->antdiv_gpio = (u8)value; in odm_cmn_info_init()
2656 dm->peak_detect_mode = (u8)value; in odm_cmn_info_init()
2664 void odm_cmn_info_hook(struct dm_struct *dm, enum odm_cmninfo cmn_info, in odm_cmn_info_hook() argument
2671 dm->num_tx_bytes_unicast = (u64 *)value; in odm_cmn_info_hook()
2675 dm->num_rx_bytes_unicast = (u64 *)value; in odm_cmn_info_hook()
2679 dm->band_type = (u8 *)value; in odm_cmn_info_hook()
2683 dm->sec_ch_offset = (u8 *)value; in odm_cmn_info_hook()
2687 dm->security = (u8 *)value; in odm_cmn_info_hook()
2691 dm->band_width = (u8 *)value; in odm_cmn_info_hook()
2695 dm->channel = (u8 *)value; in odm_cmn_info_hook()
2699 dm->is_scan_in_process = (boolean *)value; in odm_cmn_info_hook()
2703 dm->is_power_saving = (boolean *)value; in odm_cmn_info_hook()
2707 dm->is_tdma = (boolean *)value; in odm_cmn_info_hook()
2711 dm->one_path_cca = (u8 *)value; in odm_cmn_info_hook()
2715 dm->is_driver_stopped = (boolean *)value; in odm_cmn_info_hook()
2718 dm->pinit_adpt_in_progress = (boolean *)value; in odm_cmn_info_hook()
2722 dm->antenna_test = (u8 *)value; in odm_cmn_info_hook()
2726 dm->is_net_closed = (boolean *)value; in odm_cmn_info_hook()
2730 dm->forced_data_rate = (u16 *)value; in odm_cmn_info_hook()
2733 dm->enable_antdiv = (u8 *)value; in odm_cmn_info_hook()
2736 dm->enable_pathdiv = (u8 *)value; in odm_cmn_info_hook()
2739 dm->en_adap_soml = (u8 *)value; in odm_cmn_info_hook()
2742 dm->edcca_mode = (u8 *)value; in odm_cmn_info_hook()
2746 dm->dm_dig_table.is_p2p_in_process = (u8 *)value; in odm_cmn_info_hook()
2750 dm->is_1_antenna = (boolean *)value; in odm_cmn_info_hook()
2754 dm->rf_default_path = (u8 *)value; in odm_cmn_info_hook()
2758 dm->is_fcs_mode_enable = (boolean *)value; in odm_cmn_info_hook()
2762 dm->hub_usb_mode = (u8 *)value; in odm_cmn_info_hook()
2765 dm->is_fw_dw_rsvd_page_in_progress = (boolean *)value; in odm_cmn_info_hook()
2768 dm->current_tx_tp = (u32 *)value; in odm_cmn_info_hook()
2771 dm->current_rx_tp = (u32 *)value; in odm_cmn_info_hook()
2774 dm->sounding_seq = (u8 *)value; in odm_cmn_info_hook()
2778 dm->dfs_master_enabled = (u8 *)value; in odm_cmn_info_hook()
2784 dm->dm_fat_table.p_force_tx_by_desc = (u8 *)value; in odm_cmn_info_hook()
2787 dm->dm_fat_table.p_default_s0_s1 = (u8 *)value; in odm_cmn_info_hook()
2790 dm->dm_fat_table.is_no_csi_feedback = (boolean *)value; in odm_cmn_info_hook()
2795 dm->soft_ap_mode = (u32 *)value; in odm_cmn_info_hook()
2798 dm->mp_mode = (u8 *)value; in odm_cmn_info_hook()
2801 dm->interrupt_mask = (u32 *)value; in odm_cmn_info_hook()
2804 dm->bb_op_mode = (u8 *)value; in odm_cmn_info_hook()
2807 dm->manual_supportability = (u32 *)value; in odm_cmn_info_hook()
2810 dm->dis_dym_bw_indication = (u8 *)value; in odm_cmn_info_hook()
2820 void odm_cmn_info_update(struct dm_struct *dm, u32 cmn_info, u64 value) in odm_cmn_info_update() argument
2825 dm->is_link_in_process = (boolean)value; in odm_cmn_info_update()
2829 dm->support_ability = (u64)value; in odm_cmn_info_update()
2833 dm->rf_type = (u8)value; in odm_cmn_info_update()
2837 dm->is_wifi_direct = (boolean)value; in odm_cmn_info_update()
2841 dm->is_wifi_display = (boolean)value; in odm_cmn_info_update()
2845 dm->is_linked = (boolean)value; in odm_cmn_info_update()
2849 dm->iot_table.is_linked_cmw500 = (boolean)value; in odm_cmn_info_update()
2853 dm->bsta_state = (boolean)value; in odm_cmn_info_update()
2858 dm->rssi_min = (u8)value; in odm_cmn_info_update()
2863 dm->rssi_min_by_path = (u8)value; in odm_cmn_info_update()
2867 dm->debug_components = (u64)value; in odm_cmn_info_update()
2873 dm->bt_info_table.is_bt_enabled = (boolean)value; in odm_cmn_info_update()
2877 dm->bt_info_table.is_bt_connect_process = (boolean)value; in odm_cmn_info_update()
2881 dm->bt_info_table.bt_hs_rssi = (u8)value; in odm_cmn_info_update()
2885 dm->bt_info_table.is_bt_hs_operation = (boolean)value; in odm_cmn_info_update()
2889 dm->bt_info_table.is_bt_limited_dig = (boolean)value; in odm_cmn_info_update()
2894 dm->ap_total_num = (u8)value; in odm_cmn_info_update()
2899 dm->dfs_region_domain = (u8)value; in odm_cmn_info_update()
2904 dm->is_bt_continuous_turn = (boolean)value; in odm_cmn_info_update()
2907 dm->is_download_fw = (boolean)value; in odm_cmn_info_update()
2910 dm->iot_table.phydm_patch_id = (u32)value; in odm_cmn_info_update()
2913 dm->dm_ra_table.rrsr_val_init = (u32)value; in odm_cmn_info_update()
2916 dm->linked_bf_support = (u8)value; in odm_cmn_info_update()
2919 dm->flatness_type = (u8)value; in odm_cmn_info_update()
2922 dm->en_tssi_mode = (u8)value; in odm_cmn_info_update()
2929 u32 phydm_cmn_info_query(struct dm_struct *dm, enum phydm_info_query info_type) in phydm_cmn_info_query() argument
2931 struct phydm_fa_struct *fa_t = &dm->false_alm_cnt; in phydm_cmn_info_query()
2932 struct phydm_dig_struct *dig_t = &dm->dm_dig_table; in phydm_cmn_info_query()
2933 struct ccx_info *ccx_info = &dm->dm_ccx_info; in phydm_cmn_info_query()
3004 return (u32)dm->rssi_min; in phydm_cmn_info_query()
3007 return (u32)dm->rssi_max; in phydm_cmn_info_query()
3024 void odm_init_all_work_items(struct dm_struct *dm) in odm_init_all_work_items() argument
3026 void *adapter = dm->adapter; in odm_init_all_work_items()
3030 odm_initialize_work_item(dm, in odm_init_all_work_items()
3031 &dm->dm_soml_table.phydm_adaptive_soml_workitem, in odm_init_all_work_items()
3038 odm_initialize_work_item(dm, in odm_init_all_work_items()
3039 &dm->phydm_evm_antdiv_workitem, in odm_init_all_work_items()
3046 odm_initialize_work_item(dm, in odm_init_all_work_items()
3047 &dm->dm_swat_table.phydm_sw_antenna_switch_workitem, in odm_init_all_work_items()
3053 odm_initialize_work_item(dm, in odm_init_all_work_items()
3054 &dm->dm_sat_table.hl_smart_antenna_workitem, in odm_init_all_work_items()
3059 odm_initialize_work_item(dm, in odm_init_all_work_items()
3060 &dm->dm_sat_table.hl_smart_antenna_decision_workitem, in odm_init_all_work_items()
3067 dm, in odm_init_all_work_items()
3068 &dm->ra_rpt_workitem, in odm_init_all_work_items()
3075 dm, in odm_init_all_work_items()
3076 &dm->fast_ant_training_workitem, in odm_init_all_work_items()
3086 dm, in odm_init_all_work_items()
3087 &dm->beamforming_info.txbf_info.txbf_enter_work_item, in odm_init_all_work_items()
3093 dm, in odm_init_all_work_items()
3094 &dm->beamforming_info.txbf_info.txbf_leave_work_item, in odm_init_all_work_items()
3100 dm, in odm_init_all_work_items()
3101 &dm->beamforming_info.txbf_info.txbf_fw_ndpa_work_item, in odm_init_all_work_items()
3107 dm, in odm_init_all_work_items()
3108 &dm->beamforming_info.txbf_info.txbf_clk_work_item, in odm_init_all_work_items()
3114 dm, in odm_init_all_work_items()
3115 &dm->beamforming_info.txbf_info.txbf_rate_work_item, in odm_init_all_work_items()
3121 dm, in odm_init_all_work_items()
3122 &dm->beamforming_info.txbf_info.txbf_status_work_item, in odm_init_all_work_items()
3128 dm, in odm_init_all_work_items()
3129 &dm->beamforming_info.txbf_info.txbf_reset_tx_path_work_item, in odm_init_all_work_items()
3135 dm, in odm_init_all_work_items()
3136 &dm->beamforming_info.txbf_info.txbf_get_tx_rate_work_item, in odm_init_all_work_items()
3144 dm, in odm_init_all_work_items()
3145 &dm->adcsmp.adc_smp_work_item, in odm_init_all_work_items()
3151 dm, in odm_init_all_work_items()
3152 &dm->adcsmp.adc_smp_work_item_1, in odm_init_all_work_items()
3159 void odm_free_all_work_items(struct dm_struct *dm) in odm_free_all_work_items() argument
3164 odm_free_work_item(&dm->dm_swat_table.phydm_sw_antenna_switch_workitem); in odm_free_all_work_items()
3168 odm_free_work_item(&dm->dm_soml_table.phydm_adaptive_soml_workitem); in odm_free_all_work_items()
3172 odm_free_work_item(&dm->phydm_evm_antdiv_workitem); in odm_free_all_work_items()
3176 odm_free_work_item(&dm->dm_sat_table.hl_smart_antenna_workitem); in odm_free_all_work_items()
3177 odm_free_work_item(&dm->dm_sat_table.hl_smart_antenna_decision_workitem); in odm_free_all_work_items()
3181 odm_free_work_item(&dm->fast_ant_training_workitem); in odm_free_all_work_items()
3183 odm_free_work_item(&dm->ra_rpt_workitem); in odm_free_all_work_items()
3184 /*odm_free_work_item((&dm->sbdcnt_workitem));*/ in odm_free_all_work_items()
3188 odm_free_work_item((&dm->beamforming_info.txbf_info.txbf_enter_work_item)); in odm_free_all_work_items()
3189 odm_free_work_item((&dm->beamforming_info.txbf_info.txbf_leave_work_item)); in odm_free_all_work_items()
3190 odm_free_work_item((&dm->beamforming_info.txbf_info.txbf_fw_ndpa_work_item)); in odm_free_all_work_items()
3191 odm_free_work_item((&dm->beamforming_info.txbf_info.txbf_clk_work_item)); in odm_free_all_work_items()
3192 odm_free_work_item((&dm->beamforming_info.txbf_info.txbf_rate_work_item)); in odm_free_all_work_items()
3193 odm_free_work_item((&dm->beamforming_info.txbf_info.txbf_status_work_item)); in odm_free_all_work_items()
3194 odm_free_work_item((&dm->beamforming_info.txbf_info.txbf_reset_tx_path_work_item)); in odm_free_all_work_items()
3195 odm_free_work_item((&dm->beamforming_info.txbf_info.txbf_get_tx_rate_work_item)); in odm_free_all_work_items()
3199 odm_free_work_item((&dm->adcsmp.adc_smp_work_item)); in odm_free_all_work_items()
3200 odm_free_work_item((&dm->adcsmp.adc_smp_work_item_1)); in odm_free_all_work_items()
3205 void odm_init_all_timers(struct dm_struct *dm) in odm_init_all_timers() argument
3208 odm_ant_div_timers(dm, INIT_ANTDIV_TIMMER); in odm_init_all_timers()
3212 phydm_tdma_dig_timers(dm, INIT_TDMA_DIG_TIMMER); in odm_init_all_timers()
3216 phydm_adaptive_soml_timers(dm, INIT_SOML_TIMMER); in odm_init_all_timers()
3220 phydm_lna_sat_chk_timers(dm, INIT_LNA_SAT_CHK_TIMMER); in odm_init_all_timers()
3225 odm_initialize_timer(dm, &dm->sbdcnt_timer, in odm_init_all_timers()
3228 odm_initialize_timer(dm, &dm->beamforming_info.txbf_info.txbf_fw_ndpa_timer, in odm_init_all_timers()
3236 odm_initialize_timer(dm, &dm->beamforming_info.beamforming_timer, in odm_init_all_timers()
3243 void odm_cancel_all_timers(struct dm_struct *dm) in odm_cancel_all_timers() argument
3247 if (dm->adapter == NULL) in odm_cancel_all_timers()
3252 odm_ant_div_timers(dm, CANCEL_ANTDIV_TIMMER); in odm_cancel_all_timers()
3256 phydm_tdma_dig_timers(dm, CANCEL_TDMA_DIG_TIMMER); in odm_cancel_all_timers()
3260 phydm_adaptive_soml_timers(dm, CANCEL_SOML_TIMMER); in odm_cancel_all_timers()
3264 phydm_lna_sat_chk_timers(dm, CANCEL_LNA_SAT_CHK_TIMMER); in odm_cancel_all_timers()
3269 odm_cancel_timer(dm, &dm->sbdcnt_timer); in odm_cancel_all_timers()
3271 odm_cancel_timer(dm, &dm->beamforming_info.txbf_info.txbf_fw_ndpa_timer); in odm_cancel_all_timers()
3277 odm_cancel_timer(dm, &dm->beamforming_info.beamforming_timer); in odm_cancel_all_timers()
3282 void odm_release_all_timers(struct dm_struct *dm) in odm_release_all_timers() argument
3285 odm_ant_div_timers(dm, RELEASE_ANTDIV_TIMMER); in odm_release_all_timers()
3289 phydm_tdma_dig_timers(dm, RELEASE_TDMA_DIG_TIMMER); in odm_release_all_timers()
3293 phydm_adaptive_soml_timers(dm, RELEASE_SOML_TIMMER); in odm_release_all_timers()
3297 phydm_lna_sat_chk_timers(dm, RELEASE_LNA_SAT_CHK_TIMMER); in odm_release_all_timers()
3302 odm_release_timer(dm, &dm->sbdcnt_timer); in odm_release_all_timers()
3304 odm_release_timer(dm, &dm->beamforming_info.txbf_info.txbf_fw_ndpa_timer); in odm_release_all_timers()
3310 odm_release_timer(dm, &dm->beamforming_info.beamforming_timer); in odm_release_all_timers()
3317 struct dm_struct *dm) in odm_init_all_threads() argument
3320 k_tpt_task_init(dm->priv); in odm_init_all_threads()
3325 struct dm_struct *dm) in odm_stop_all_threads() argument
3328 k_tpt_task_stop(dm->priv); in odm_stop_all_threads()
3337 void odm_dtc(struct dm_struct *dm) in odm_dtc() argument
3374 if (dm->rssi_min > DTC_BASE) { in odm_dtc()
3378 if (dtc_table_down[i] >= dm->rssi_min || dtc_steps >= 6) in odm_dtc()
3385 else if (dm->rssi_min > DTC_DWN_BASE) { in odm_dtc()
3390 if (dtc_table_up[i] <= dm->rssi_min || dtc_steps >= 10) in odm_dtc()
3404 odm_write_1byte(dm, 0x06d9, resp_txagc); in odm_dtc()
3406 PHYDM_DBG(dm, ODM_COMP_PWR_TRAIN, in odm_dtc()
3408 dm->rssi_min, sign ? "minus" : "plus", dtc_steps); in odm_dtc()
3415 void phydm_dc_cancellation(struct dm_struct *dm) in phydm_dc_cancellation() argument
3424 if (!(dm->support_ic_type & ODM_DC_CANCELLATION_SUPPORT)) in phydm_dc_cancellation()
3426 if ((dm->support_ic_type & ODM_RTL8188F) && in phydm_dc_cancellation()
3427 dm->cut_version < ODM_CUT_D) in phydm_dc_cancellation()
3429 if ((dm->support_ic_type & ODM_RTL8192F) && in phydm_dc_cancellation()
3430 dm->cut_version == ODM_CUT_A) in phydm_dc_cancellation()
3432 if (*dm->band_width == CHANNEL_WIDTH_5) in phydm_dc_cancellation()
3434 if (*dm->band_width == CHANNEL_WIDTH_10) in phydm_dc_cancellation()
3437 PHYDM_DBG(dm, ODM_COMP_API, "%s ======>\n", __func__); in phydm_dc_cancellation()
3443 dm->support_ic_type & (ODM_RTL8821C | ODM_RTL8188F | in phydm_dc_cancellation()
3448 dm->support_ic_type & (ODM_RTL8822B | ODM_RTL8192F)) in phydm_dc_cancellation()
3450 if (phydm_stop_ic_trx(dm, PHYDM_SET) == PHYDM_SET_FAIL) { in phydm_dc_cancellation()
3451 PHYDM_DBG(dm, ODM_COMP_API, "STOP_TRX_FAIL\n"); in phydm_dc_cancellation()
3454 odm_write_dig(dm, 0x7e); in phydm_dc_cancellation()
3456 if (dm->support_ic_type & (ODM_RTL8821C | ODM_RTL8721D | in phydm_dc_cancellation()
3458 halrf_rf_lna_setting(dm, HALRF_LNA_DISABLE); in phydm_dc_cancellation()
3460 if (dm->support_ic_type & (ODM_RTL8721D | ODM_RTL8710C)) in phydm_dc_cancellation()
3461 odm_set_bb_reg(dm, R_0x880, BIT(15), 0x1); in phydm_dc_cancellation()
3463 phydm_stop_3_wire(dm, PHYDM_SET); in phydm_dc_cancellation()
3464 if (dm->support_ic_type & (ODM_RTL8188F | ODM_RTL8723D | in phydm_dc_cancellation()
3467 if (!phydm_set_bb_dbg_port(dm, DBGPORT_PRI_1, 0x235)) { in phydm_dc_cancellation()
3468 PHYDM_DBG(dm, ODM_COMP_API, in phydm_dc_cancellation()
3472 } else if (dm->support_ic_type & (ODM_RTL8721D | in phydm_dc_cancellation()
3475 if (!phydm_set_bb_dbg_port(dm, DBGPORT_PRI_2, 0x200)) { in phydm_dc_cancellation()
3476 PHYDM_DBG(dm, ODM_COMP_API, in phydm_dc_cancellation()
3480 } else if (dm->support_ic_type & ODM_RTL8821C) { in phydm_dc_cancellation()
3481 if (!phydm_set_bb_dbg_port(dm, DBGPORT_PRI_1, 0x200)) { in phydm_dc_cancellation()
3483 PHYDM_DBG(dm, ODM_COMP_API, in phydm_dc_cancellation()
3487 phydm_bb_dbg_port_header_sel(dm, 0x0); in phydm_dc_cancellation()
3488 } else if (dm->support_ic_type & ODM_RTL8822B) { in phydm_dc_cancellation()
3490 !phydm_set_bb_dbg_port(dm, DBGPORT_PRI_1, 0x200)) { in phydm_dc_cancellation()
3492 PHYDM_DBG(dm, ODM_COMP_API, in phydm_dc_cancellation()
3497 !phydm_set_bb_dbg_port(dm, DBGPORT_PRI_1, 0x202)) { in phydm_dc_cancellation()
3499 PHYDM_DBG(dm, ODM_COMP_API, in phydm_dc_cancellation()
3503 phydm_bb_dbg_port_header_sel(dm, 0x0); in phydm_dc_cancellation()
3504 } else if (dm->support_ic_type & ODM_RTL8192F) { in phydm_dc_cancellation()
3506 !phydm_set_bb_dbg_port(dm, DBGPORT_PRI_1, 0x235)) { in phydm_dc_cancellation()
3508 PHYDM_DBG(dm, ODM_COMP_API, in phydm_dc_cancellation()
3513 !phydm_set_bb_dbg_port(dm, DBGPORT_PRI_1, 0x23d)) { in phydm_dc_cancellation()
3515 PHYDM_DBG(dm, ODM_COMP_API, in phydm_dc_cancellation()
3522 odm_set_bb_reg(dm, R_0xa78, MASKBYTE1, 0x0); in phydm_dc_cancellation()
3524 PHYDM_DBG(dm, ODM_COMP_API, "DC cancellation Begin!!!\n"); in phydm_dc_cancellation()
3526 phydm_stop_ck320(dm, true); /*stop ck320*/ in phydm_dc_cancellation()
3529 reg_value32[path] = phydm_get_bb_dbg_port_val(dm); in phydm_dc_cancellation()
3531 phydm_stop_ck320(dm, false); /*start ck320*/ in phydm_dc_cancellation()
3533 phydm_release_bb_dbg_port(dm); in phydm_dc_cancellation()
3535 phydm_stop_3_wire(dm, PHYDM_REVERT); in phydm_dc_cancellation()
3537 if (dm->support_ic_type & (ODM_RTL8721D | ODM_RTL8710C)) in phydm_dc_cancellation()
3538 odm_set_bb_reg(dm, R_0x880, BIT(15), 0x0); in phydm_dc_cancellation()
3540 if (dm->support_ic_type & (ODM_RTL8821C | ODM_RTL8721D | in phydm_dc_cancellation()
3542 halrf_rf_lna_setting(dm, HALRF_LNA_ENABLE); in phydm_dc_cancellation()
3544 odm_write_dig(dm, 0x20); in phydm_dc_cancellation()
3546 set_result = phydm_stop_ic_trx(dm, PHYDM_REVERT); in phydm_dc_cancellation()
3548 PHYDM_DBG(dm, ODM_COMP_API, "DC cancellation OK!!!\n"); in phydm_dc_cancellation()
3553 odm_set_bb_reg(dm, R_0xa9c, BIT(20), 0x1); in phydm_dc_cancellation()
3554 if (dm->support_ic_type & (ODM_RTL8188F | ODM_RTL8723D | in phydm_dc_cancellation()
3569 odm_set_bb_reg(dm, R_0x950, 0x1ff, offset_i_hex[0]); in phydm_dc_cancellation()
3570 odm_set_bb_reg(dm, R_0x950, 0x1ff0000, offset_q_hex[0]); in phydm_dc_cancellation()
3571 } else if (dm->support_ic_type & (ODM_RTL8821C | ODM_RTL8822B)) { in phydm_dc_cancellation()
3582 odm_set_bb_reg(dm, R_0xc10, 0x3c000000, in phydm_dc_cancellation()
3584 odm_set_bb_reg(dm, R_0xc10, 0xfc00, 0x3f & offset_i_hex[0]); in phydm_dc_cancellation()
3585 odm_set_bb_reg(dm, R_0xc14, 0x3c000000, in phydm_dc_cancellation()
3587 odm_set_bb_reg(dm, R_0xc14, 0xfc00, 0x3f & offset_q_hex[0]); in phydm_dc_cancellation()
3590 if (dm->rf_type > RF_1T1R) { in phydm_dc_cancellation()
3600 odm_set_bb_reg(dm, R_0xe10, 0x3c000000, in phydm_dc_cancellation()
3602 odm_set_bb_reg(dm, R_0xe10, 0xfc00, in phydm_dc_cancellation()
3604 odm_set_bb_reg(dm, R_0xe14, 0x3c000000, in phydm_dc_cancellation()
3606 odm_set_bb_reg(dm, R_0xe14, 0xfc00, in phydm_dc_cancellation()
3609 } else if (dm->support_ic_type & (ODM_RTL8192F)) { in phydm_dc_cancellation()
3624 odm_set_bb_reg(dm, R_0xc10, 0xff, offset_i_hex[0]); in phydm_dc_cancellation()
3625 odm_set_bb_reg(dm, R_0xc10, 0xff00, offset_q_hex[0]); in phydm_dc_cancellation()
3628 if (dm->rf_type > RF_1T1R) { in phydm_dc_cancellation()
3643 odm_set_bb_reg(dm, R_0xc18, 0xff, offset_i_hex[1]); in phydm_dc_cancellation()
3644 odm_set_bb_reg(dm, R_0xc18, 0xff00, offset_q_hex[1]); in phydm_dc_cancellation()
3646 } else if (dm->support_ic_type & (ODM_RTL8721D | ODM_RTL8710C)) { in phydm_dc_cancellation()
3663 odm_set_bb_reg(dm, R_0x950, 0x1ff, offset_i_hex[0]); in phydm_dc_cancellation()
3664 odm_set_bb_reg(dm, R_0x950, 0x1ff0000, offset_q_hex[0]); in phydm_dc_cancellation()
3672 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_receiver_blocking() local
3673 u32 chnl = *dm->channel; in phydm_receiver_blocking()
3674 u8 bw = *dm->band_width; in phydm_receiver_blocking()
3675 u32 bb_regf0 = odm_get_bb_reg(dm, R_0xf0, 0xf000); in phydm_receiver_blocking()
3677 if (!(dm->support_ic_type & ODM_RECEIVER_BLOCKING_SUPPORT) || in phydm_receiver_blocking()
3678 *dm->edcca_mode != PHYDM_EDCCA_ADAPT_MODE) in phydm_receiver_blocking()
3681 if ((dm->support_ic_type & ODM_RTL8188E && bb_regf0 < 8) || in phydm_receiver_blocking()
3682 dm->support_ic_type & ODM_RTL8192E) { in phydm_receiver_blocking()
3684 if (dm->consecutive_idlel_time <= 10 || *dm->mp_mode) in phydm_receiver_blocking()
3688 phydm_nbi_setting(dm, FUNC_ENABLE, chnl, 20, 2410, in phydm_receiver_blocking()
3690 dm->is_rx_blocking_en = true; in phydm_receiver_blocking()
3692 phydm_nbi_setting(dm, FUNC_ENABLE, chnl, 20, 2473, in phydm_receiver_blocking()
3694 dm->is_rx_blocking_en = true; in phydm_receiver_blocking()
3695 } else if (dm->is_rx_blocking_en && chnl != 1 && chnl != 13) { in phydm_receiver_blocking()
3696 phydm_nbi_enable(dm, FUNC_DISABLE); in phydm_receiver_blocking()
3697 odm_set_bb_reg(dm, R_0xc40, 0x1f000000, 0x1f); in phydm_receiver_blocking()
3698 dm->is_rx_blocking_en = false; in phydm_receiver_blocking()
3701 } else if ((dm->support_ic_type & ODM_RTL8188E && bb_regf0 >= 8)) { in phydm_receiver_blocking()
3703 if (dm->consecutive_idlel_time <= 10 || *dm->mp_mode) in phydm_receiver_blocking()
3707 phydm_nbi_setting(dm, FUNC_ENABLE, chnl, 20, 2473, in phydm_receiver_blocking()
3709 dm->is_rx_blocking_en = true; in phydm_receiver_blocking()
3710 } else if (dm->is_rx_blocking_en && chnl != 13) { in phydm_receiver_blocking()
3711 phydm_nbi_enable(dm, FUNC_DISABLE); in phydm_receiver_blocking()
3712 odm_set_bb_reg(dm, R_0xc40, 0x1f000000, 0x1f); in phydm_receiver_blocking()
3713 dm->is_rx_blocking_en = false; in phydm_receiver_blocking()
3719 if (dm->is_rx_blocking_en) { in phydm_receiver_blocking()
3720 phydm_nbi_enable(dm, FUNC_DISABLE); in phydm_receiver_blocking()
3721 odm_set_bb_reg(dm, R_0xc40, 0x1f000000, 0x1f); in phydm_receiver_blocking()
3722 dm->is_rx_blocking_en = false; in phydm_receiver_blocking()
3730 struct dm_struct *dm = (struct dm_struct *)dm_void; in phydm_dyn_bw_indication() local
3731 u8 en_auto_bw_th = dm->en_auto_bw_th; in phydm_dyn_bw_indication()
3733 if (!(dm->support_ic_type & ODM_DYM_BW_INDICATION_SUPPORT)) in phydm_dyn_bw_indication()
3737 if (dm->dis_dym_bw_indication) { in phydm_dyn_bw_indication()
3738 if (*dm->dis_dym_bw_indication) in phydm_dyn_bw_indication()
3743 if (dm->rssi_min <= en_auto_bw_th && dm->is_linked) { in phydm_dyn_bw_indication()
3744 phydm_bw_fixed_enable(dm, FUNC_DISABLE); in phydm_dyn_bw_indication()
3748 phydm_bw_fixed_setting(dm); in phydm_dyn_bw_indication()