Lines Matching refs:cfo

1472 	struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking;  in rtw89_phy_cfo_set_crystal_cap()  local
1475 if (!force && cfo->crystal_cap == crystal_cap) in rtw89_phy_cfo_set_crystal_cap()
1482 cfo->crystal_cap = sc_xi_val; in rtw89_phy_cfo_set_crystal_cap()
1483 cfo->x_cap_ofst = (s8)((int)cfo->crystal_cap - cfo->def_x_cap); in rtw89_phy_cfo_set_crystal_cap()
1488 cfo->x_cap_ofst); in rtw89_phy_cfo_set_crystal_cap()
1494 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking; in rtw89_phy_cfo_reset() local
1497 cfo->def_x_cap = cfo->crystal_cap_default & B_AX_XTAL_SC_MASK; in rtw89_phy_cfo_reset()
1498 cfo->is_adjust = false; in rtw89_phy_cfo_reset()
1499 if (cfo->crystal_cap == cfo->def_x_cap) in rtw89_phy_cfo_reset()
1501 cap = cfo->crystal_cap; in rtw89_phy_cfo_reset()
1502 cap += (cap > cfo->def_x_cap ? -1 : 1); in rtw89_phy_cfo_reset()
1505 "(0x%x) approach to dflt_val=(0x%x)\n", cfo->crystal_cap, in rtw89_phy_cfo_reset()
1506 cfo->def_x_cap); in rtw89_phy_cfo_reset()
1543 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking; in rtw89_phy_cfo_init() local
1546 cfo->crystal_cap_default = efuse->xtal_cap & B_AX_XTAL_SC_MASK; in rtw89_phy_cfo_init()
1547 cfo->crystal_cap = cfo->crystal_cap_default; in rtw89_phy_cfo_init()
1548 cfo->def_x_cap = cfo->crystal_cap; in rtw89_phy_cfo_init()
1549 cfo->is_adjust = false; in rtw89_phy_cfo_init()
1550 cfo->x_cap_ofst = 0; in rtw89_phy_cfo_init()
1551 cfo->rtw89_multi_cfo_mode = RTW89_TP_BASED_AVG_MODE; in rtw89_phy_cfo_init()
1552 cfo->apply_compensation = false; in rtw89_phy_cfo_init()
1553 cfo->residual_cfo_acc = 0; in rtw89_phy_cfo_init()
1555 cfo->crystal_cap_default); in rtw89_phy_cfo_init()
1556 rtw89_phy_cfo_set_crystal_cap(rtwdev, cfo->crystal_cap_default, true); in rtw89_phy_cfo_init()
1559 cfo->cfo_timer_ms = 2000; in rtw89_phy_cfo_init()
1560 cfo->cfo_trig_by_timer_en = false; in rtw89_phy_cfo_init()
1561 cfo->phy_cfo_trk_cnt = 0; in rtw89_phy_cfo_init()
1562 cfo->phy_cfo_status = RTW89_PHY_DCFO_STATE_NORMAL; in rtw89_phy_cfo_init()
1568 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking; in rtw89_phy_cfo_crystal_cap_adjust() local
1569 s8 crystal_cap = cfo->crystal_cap; in rtw89_phy_cfo_crystal_cap_adjust()
1573 if (!cfo->is_adjust) { in rtw89_phy_cfo_crystal_cap_adjust()
1575 cfo->is_adjust = true; in rtw89_phy_cfo_crystal_cap_adjust()
1578 cfo->is_adjust = false; in rtw89_phy_cfo_crystal_cap_adjust()
1580 if (!cfo->is_adjust) { in rtw89_phy_cfo_crystal_cap_adjust()
1598 cfo->crystal_cap, cfo->def_x_cap); in rtw89_phy_cfo_crystal_cap_adjust()
1603 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking; in rtw89_phy_average_cfo_calc() local
1613 if (cfo->cfo_cnt[i] == 0) in rtw89_phy_average_cfo_calc()
1615 cfo_khz_all += cfo->cfo_tail[i]; in rtw89_phy_average_cfo_calc()
1616 cfo_cnt_all += cfo->cfo_cnt[i]; in rtw89_phy_average_cfo_calc()
1618 cfo->pre_cfo_avg[i] = cfo->cfo_avg[i]; in rtw89_phy_average_cfo_calc()
1630 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking; in rtw89_phy_multi_sta_cfo_calc() local
1646 if (cfo->rtw89_multi_cfo_mode == RTW89_PKT_BASED_AVG_MODE) { in rtw89_phy_multi_sta_cfo_calc()
1649 if (cfo->cfo_cnt[i] == 0) in rtw89_phy_multi_sta_cfo_calc()
1651 cfo_khz_all += cfo->cfo_tail[i]; in rtw89_phy_multi_sta_cfo_calc()
1652 cfo_cnt_all += cfo->cfo_cnt[i]; in rtw89_phy_multi_sta_cfo_calc()
1659 } else if (cfo->rtw89_multi_cfo_mode == RTW89_ENTRY_BASED_AVG_MODE) { in rtw89_phy_multi_sta_cfo_calc()
1662 if (cfo->cfo_cnt[i] == 0) in rtw89_phy_multi_sta_cfo_calc()
1664 cfo->cfo_avg[i] = phy_div(cfo->cfo_tail[i], in rtw89_phy_multi_sta_cfo_calc()
1665 (s32)cfo->cfo_cnt[i]); in rtw89_phy_multi_sta_cfo_calc()
1666 cfo_khz_all += cfo->cfo_avg[i]; in rtw89_phy_multi_sta_cfo_calc()
1669 cfo->cfo_avg[i]); in rtw89_phy_multi_sta_cfo_calc()
1677 } else if (cfo->rtw89_multi_cfo_mode == RTW89_TP_BASED_AVG_MODE) { in rtw89_phy_multi_sta_cfo_calc()
1679 cfo_tol = cfo->sta_cfo_tolerance; in rtw89_phy_multi_sta_cfo_calc()
1682 if (cfo->cfo_cnt[i] != 0) { in rtw89_phy_multi_sta_cfo_calc()
1683 cfo->cfo_avg[i] = phy_div(cfo->cfo_tail[i], in rtw89_phy_multi_sta_cfo_calc()
1684 (s32)cfo->cfo_cnt[i]); in rtw89_phy_multi_sta_cfo_calc()
1687 cfo->cfo_avg[i] = cfo->pre_cfo_avg[i]; in rtw89_phy_multi_sta_cfo_calc()
1689 max_cfo_lb = max(cfo->cfo_avg[i] - cfo_tol, max_cfo_lb); in rtw89_phy_multi_sta_cfo_calc()
1690 min_cfo_ub = min(cfo->cfo_avg[i] + cfo_tol, min_cfo_ub); in rtw89_phy_multi_sta_cfo_calc()
1691 cfo_khz_all += cfo->cfo_avg[i]; in rtw89_phy_multi_sta_cfo_calc()
1695 i, cfo->cfo_avg[i]); in rtw89_phy_multi_sta_cfo_calc()
1722 cfo->pre_cfo_avg[i] = cfo->cfo_avg[i]; in rtw89_phy_multi_sta_cfo_calc()
1730 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking; in rtw89_phy_cfo_statistics_reset() local
1732 memset(&cfo->cfo_tail, 0, sizeof(cfo->cfo_tail)); in rtw89_phy_cfo_statistics_reset()
1733 memset(&cfo->cfo_cnt, 0, sizeof(cfo->cfo_cnt)); in rtw89_phy_cfo_statistics_reset()
1734 cfo->packet_count = 0; in rtw89_phy_cfo_statistics_reset()
1735 cfo->packet_count_pre = 0; in rtw89_phy_cfo_statistics_reset()
1736 cfo->cfo_avg_pre = 0; in rtw89_phy_cfo_statistics_reset()
1741 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking; in rtw89_phy_cfo_dm() local
1744 u8 pre_x_cap = cfo->crystal_cap; in rtw89_phy_cfo_dm()
1752 if (cfo->packet_count == 0) { in rtw89_phy_cfo_dm()
1756 if (cfo->packet_count == cfo->packet_count_pre) { in rtw89_phy_cfo_dm()
1769 cfo->cfo_avg_pre = new_cfo; in rtw89_phy_cfo_dm()
1770 x_cap_update = cfo->crystal_cap == pre_x_cap ? false : true; in rtw89_phy_cfo_dm()
1773 cfo->def_x_cap, pre_x_cap, cfo->crystal_cap, in rtw89_phy_cfo_dm()
1774 cfo->x_cap_ofst); in rtw89_phy_cfo_dm()
1789 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking; in rtw89_phy_cfo_track_work() local
1792 if (!cfo->cfo_trig_by_timer_en) in rtw89_phy_cfo_track_work()
1797 msecs_to_jiffies(cfo->cfo_timer_ms)); in rtw89_phy_cfo_track_work()
1804 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking; in rtw89_phy_cfo_start_work() local
1807 msecs_to_jiffies(cfo->cfo_timer_ms)); in rtw89_phy_cfo_start_work()
1812 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking; in rtw89_phy_cfo_track() local
1815 switch (cfo->phy_cfo_status) { in rtw89_phy_cfo_track()
1818 cfo->phy_cfo_status = RTW89_PHY_DCFO_STATE_ENHANCE; in rtw89_phy_cfo_track()
1819 cfo->cfo_trig_by_timer_en = true; in rtw89_phy_cfo_track()
1820 cfo->cfo_timer_ms = CFO_COMP_PERIOD; in rtw89_phy_cfo_track()
1825 if (cfo->phy_cfo_trk_cnt >= CFO_PERIOD_CNT) { in rtw89_phy_cfo_track()
1826 cfo->phy_cfo_trk_cnt = 0; in rtw89_phy_cfo_track()
1827 cfo->cfo_trig_by_timer_en = false; in rtw89_phy_cfo_track()
1829 if (cfo->cfo_trig_by_timer_en == 1) in rtw89_phy_cfo_track()
1830 cfo->phy_cfo_trk_cnt++; in rtw89_phy_cfo_track()
1832 cfo->phy_cfo_status = RTW89_PHY_DCFO_STATE_NORMAL; in rtw89_phy_cfo_track()
1833 cfo->phy_cfo_trk_cnt = 0; in rtw89_phy_cfo_track()
1834 cfo->cfo_trig_by_timer_en = false; in rtw89_phy_cfo_track()
1838 cfo->phy_cfo_status = RTW89_PHY_DCFO_STATE_NORMAL; in rtw89_phy_cfo_track()
1839 cfo->phy_cfo_trk_cnt = 0; in rtw89_phy_cfo_track()
1844 stats->tx_throughput, cfo->phy_cfo_status, in rtw89_phy_cfo_track()
1845 cfo->cfo_trig_by_timer_en, cfo->phy_cfo_trk_cnt, in rtw89_phy_cfo_track()
1847 if (cfo->cfo_trig_by_timer_en) in rtw89_phy_cfo_track()
1855 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking; in rtw89_phy_cfo_parse() local
1858 cfo->cfo_tail[macid] += cfo_val; in rtw89_phy_cfo_parse()
1859 cfo->cfo_cnt[macid]++; in rtw89_phy_cfo_parse()
1860 cfo->packet_count++; in rtw89_phy_cfo_parse()