Lines Matching defs:cfo

3844 	struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking;
3848 if (!force && cfo->crystal_cap == crystal_cap)
3864 cfo->crystal_cap = sc_xi_val;
3865 cfo->x_cap_ofst = (s8)((int)cfo->crystal_cap - cfo->def_x_cap);
3870 cfo->x_cap_ofst);
3876 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking;
3879 cfo->def_x_cap = cfo->crystal_cap_default & B_AX_XTAL_SC_MASK;
3880 cfo->is_adjust = false;
3881 if (cfo->crystal_cap == cfo->def_x_cap)
3883 cap = cfo->crystal_cap;
3884 cap += (cap > cfo->def_x_cap ? -1 : 1);
3887 "(0x%x) approach to dflt_val=(0x%x)\n", cfo->crystal_cap,
3888 cfo->def_x_cap);
3924 const struct rtw89_cfo_regs *cfo = phy->cfo;
3926 rtw89_phy_set_phy_regs(rtwdev, cfo->comp_seg0, cfo->valid_0_mask, 1);
3927 rtw89_phy_set_phy_regs(rtwdev, cfo->comp, cfo->weighting_mask, 8);
3943 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking;
3946 cfo->crystal_cap_default = efuse->xtal_cap & B_AX_XTAL_SC_MASK;
3947 cfo->crystal_cap = cfo->crystal_cap_default;
3948 cfo->def_x_cap = cfo->crystal_cap;
3949 cfo->x_cap_ub = min_t(int, cfo->def_x_cap + CFO_BOUND, 0x7f);
3950 cfo->x_cap_lb = max_t(int, cfo->def_x_cap - CFO_BOUND, 0x1);
3951 cfo->is_adjust = false;
3952 cfo->divergence_lock_en = false;
3953 cfo->x_cap_ofst = 0;
3954 cfo->lock_cnt = 0;
3955 cfo->rtw89_multi_cfo_mode = RTW89_TP_BASED_AVG_MODE;
3956 cfo->apply_compensation = false;
3957 cfo->residual_cfo_acc = 0;
3959 cfo->crystal_cap_default);
3960 rtw89_phy_cfo_set_crystal_cap(rtwdev, cfo->crystal_cap_default, true);
3962 cfo->cfo_timer_ms = 2000;
3963 cfo->cfo_trig_by_timer_en = false;
3964 cfo->phy_cfo_trk_cnt = 0;
3965 cfo->phy_cfo_status = RTW89_PHY_DCFO_STATE_NORMAL;
3966 cfo->cfo_ul_ofdma_acc_mode = RTW89_CFO_UL_OFDMA_ACC_ENABLE;
3972 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking;
3973 s8 crystal_cap = cfo->crystal_cap;
3981 if (!cfo->is_adjust) {
3983 cfo->is_adjust = true;
3986 cfo->is_adjust = false;
3988 if (!cfo->is_adjust) {
4006 cfo->crystal_cap, cfo->def_x_cap);
4012 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking;
4022 if (cfo->cfo_cnt[i] == 0)
4024 cfo_khz_all += cfo->cfo_tail[i];
4025 cfo_cnt_all += cfo->cfo_cnt[i];
4027 cfo->pre_cfo_avg[i] = cfo->cfo_avg[i];
4028 cfo->dcfo_avg = phy_div(cfo_khz_all << chip->dcfo_comp_sft,
4034 "Total cfo=%dK, pkt_cnt=%d, avg_cfo=%dK\n",
4041 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking;
4057 if (cfo->rtw89_multi_cfo_mode == RTW89_PKT_BASED_AVG_MODE) {
4060 if (cfo->cfo_cnt[i] == 0)
4062 cfo_khz_all += cfo->cfo_tail[i];
4063 cfo_cnt_all += cfo->cfo_cnt[i];
4066 "Msta cfo=%d, pkt_cnt=%d, avg_cfo=%d\n",
4070 } else if (cfo->rtw89_multi_cfo_mode == RTW89_ENTRY_BASED_AVG_MODE) {
4073 if (cfo->cfo_cnt[i] == 0)
4075 cfo->cfo_avg[i] = phy_div(cfo->cfo_tail[i],
4076 (s32)cfo->cfo_cnt[i]);
4077 cfo_khz_all += cfo->cfo_avg[i];
4080 cfo->cfo_avg[i]);
4088 } else if (cfo->rtw89_multi_cfo_mode == RTW89_TP_BASED_AVG_MODE) {
4090 cfo_tol = cfo->sta_cfo_tolerance;
4093 if (cfo->cfo_cnt[i] != 0) {
4094 cfo->cfo_avg[i] = phy_div(cfo->cfo_tail[i],
4095 (s32)cfo->cfo_cnt[i]);
4098 cfo->cfo_avg[i] = cfo->pre_cfo_avg[i];
4100 max_cfo_lb = max(cfo->cfo_avg[i] - cfo_tol, max_cfo_lb);
4101 min_cfo_ub = min(cfo->cfo_avg[i] + cfo_tol, min_cfo_ub);
4102 cfo_khz_all += cfo->cfo_avg[i];
4106 i, cfo->cfo_avg[i]);
4118 "Msta cfo with tp_wgt=%d, avg_cfo=%d\n",
4124 "cfo win_size=%d\n",
4129 "No intersection of cfo tolerance windows\n");
4133 cfo->pre_cfo_avg[i] = cfo->cfo_avg[i];
4135 rtw89_debug(rtwdev, RTW89_DBG_CFO, "Target cfo=%d\n", target_cfo);
4141 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking;
4143 memset(&cfo->cfo_tail, 0, sizeof(cfo->cfo_tail));
4144 memset(&cfo->cfo_cnt, 0, sizeof(cfo->cfo_cnt));
4145 cfo->packet_count = 0;
4146 cfo->packet_count_pre = 0;
4147 cfo->cfo_avg_pre = 0;
4152 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking;
4155 u8 pre_x_cap = cfo->crystal_cap;
4158 cfo->dcfo_avg = 0;
4165 if (cfo->packet_count == 0) {
4169 if (cfo->packet_count == cfo->packet_count_pre) {
4177 if (cfo->divergence_lock_en) {
4178 cfo->lock_cnt++;
4179 if (cfo->lock_cnt > CFO_PERIOD_CNT) {
4180 cfo->divergence_lock_en = false;
4181 cfo->lock_cnt = 0;
4187 if (cfo->crystal_cap >= cfo->x_cap_ub ||
4188 cfo->crystal_cap <= cfo->x_cap_lb) {
4189 cfo->divergence_lock_en = true;
4195 cfo->cfo_avg_pre = new_cfo;
4196 cfo->dcfo_avg_pre = cfo->dcfo_avg;
4197 x_cap_update = cfo->crystal_cap != pre_x_cap;
4200 cfo->def_x_cap, pre_x_cap, cfo->crystal_cap,
4201 cfo->x_cap_ofst);
4203 if (cfo->dcfo_avg > 0)
4204 cfo->dcfo_avg -= CFO_SW_COMP_FINE_TUNE << dcfo_comp_sft;
4206 cfo->dcfo_avg += CFO_SW_COMP_FINE_TUNE << dcfo_comp_sft;
4208 rtw89_dcfo_comp(rtwdev, cfo->dcfo_avg);
4216 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking;
4219 if (!cfo->cfo_trig_by_timer_en)
4224 msecs_to_jiffies(cfo->cfo_timer_ms));
4231 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking;
4234 msecs_to_jiffies(cfo->cfo_timer_ms));
4239 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking;
4245 if (cfo->cfo_ul_ofdma_acc_mode == RTW89_CFO_UL_OFDMA_ACC_ENABLE &&
4249 switch (cfo->phy_cfo_status) {
4252 cfo->phy_cfo_status = RTW89_PHY_DCFO_STATE_ENHANCE;
4253 cfo->cfo_trig_by_timer_en = true;
4254 cfo->cfo_timer_ms = CFO_COMP_PERIOD;
4260 cfo->phy_cfo_status = RTW89_PHY_DCFO_STATE_NORMAL;
4262 cfo->phy_cfo_trk_cnt >= CFO_PERIOD_CNT)
4263 cfo->phy_cfo_status = RTW89_PHY_DCFO_STATE_HOLD;
4265 cfo->phy_cfo_trk_cnt++;
4267 if (cfo->phy_cfo_status == RTW89_PHY_DCFO_STATE_NORMAL) {
4268 cfo->phy_cfo_trk_cnt = 0;
4269 cfo->cfo_trig_by_timer_en = false;
4274 cfo->phy_cfo_status = RTW89_PHY_DCFO_STATE_NORMAL;
4275 cfo->phy_cfo_trk_cnt = 0;
4276 cfo->cfo_trig_by_timer_en = false;
4278 cfo->phy_cfo_trk_cnt++;
4282 cfo->phy_cfo_status = RTW89_PHY_DCFO_STATE_NORMAL;
4283 cfo->phy_cfo_trk_cnt = 0;
4288 stats->tx_throughput, cfo->phy_cfo_status,
4289 cfo->cfo_trig_by_timer_en, cfo->phy_cfo_trk_cnt,
4291 if (cfo->cfo_trig_by_timer_en)
4299 struct rtw89_cfo_tracking_info *cfo = &rtwdev->cfo_tracking;
4307 cfo->cfo_tail[macid] += cfo_val;
4308 cfo->cfo_cnt[macid]++;
4309 cfo->packet_count++;
6666 .cfo = &rtw89_cfo_regs_ax,