wifi: rtw89: rfk: add firmware debug log of IQK
authorPing-Ke Shih <pkshih@realtek.com>
Fri, 13 Sep 2024 07:13:39 +0000 (15:13 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Fri, 20 Sep 2024 02:48:04 +0000 (10:48 +0800)
Print out IQ signal calibration log from firmware C2H events.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20240913071340.41822-5-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/fw.h
drivers/net/wireless/realtek/rtw89/phy.c

index 4980a7041fb82cae45e3a08c877291b251fa01b6..bbf62950182aee57649a0c81c196f77c58d575f0 100644 (file)
@@ -4318,6 +4318,42 @@ struct rtw89_c2h_rf_run_log {
        __le32 arg[4];
 } __packed;
 
+struct rtw89_c2h_rf_iqk_rpt_log {
+       bool iqk_tx_fail[2];
+       bool iqk_rx_fail[2];
+       bool is_iqk_init;
+       bool is_reload;
+       bool is_wb_txiqk[2];
+       bool is_wb_rxiqk[2];
+       bool is_nbiqk;
+       bool txiqk_en;
+       bool rxiqk_en;
+       bool lok_en;
+       bool iqk_xym_en;
+       bool iqk_sram_en;
+       bool iqk_fft_en;
+       bool is_fw_iqk;
+       bool is_iqk_enable;
+       bool iqk_cfir_en;
+       bool thermal_rek_en;
+       u8 iqk_band[2];
+       u8 iqk_ch[2];
+       u8 iqk_bw[2];
+       u8 iqk_times;
+       u8 version;
+       u8 phy;
+       u8 fwk_status;
+       u8 rsvd;
+       __le32 reload_cnt;
+       __le32 iqk_fail_cnt;
+       __le32 lok_idac[2];
+       __le32 lok_vbuf[2];
+       __le32 rftxgain[2][4];
+       __le32 rfrxgain[2][4];
+       __le32 tx_xym[2][4];
+       __le32 rx_xym[2][4];
+} __packed;
+
 struct rtw89_c2h_rf_dpk_rpt_log {
        u8 ver;
        u8 idx[2];
index c2116c2987fdbd66e6ec3fcf60595405e52ed15b..ae404ca4e2eeac1a43d7c9761e07992ad31b50fa 100644 (file)
@@ -2694,9 +2694,83 @@ static void rtw89_phy_c2h_rfk_rpt_log(struct rtw89_dev *rtwdev,
        struct rtw89_c2h_rf_dack_rpt_log *dack;
        struct rtw89_c2h_rf_tssi_rpt_log *tssi;
        struct rtw89_c2h_rf_dpk_rpt_log *dpk;
+       struct rtw89_c2h_rf_iqk_rpt_log *iqk;
        int i, j, k;
 
        switch (func) {
+       case RTW89_PHY_C2H_RFK_LOG_FUNC_IQK:
+               if (len != sizeof(*iqk))
+                       goto out;
+
+               iqk = content;
+               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                           "[IQK] iqk->is_iqk_init = %x\n", iqk->is_iqk_init);
+               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                           "[IQK] iqk->is_reload = %x\n", iqk->is_reload);
+               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                           "[IQK] iqk->is_nbiqk = %x\n", iqk->is_nbiqk);
+               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                           "[IQK] iqk->txiqk_en = %x\n", iqk->txiqk_en);
+               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                           "[IQK] iqk->rxiqk_en = %x\n", iqk->rxiqk_en);
+               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                           "[IQK] iqk->lok_en = %x\n", iqk->lok_en);
+               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                           "[IQK] iqk->iqk_xym_en = %x\n", iqk->iqk_xym_en);
+               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                           "[IQK] iqk->iqk_sram_en = %x\n", iqk->iqk_sram_en);
+               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                           "[IQK] iqk->iqk_fft_en = %x\n", iqk->iqk_fft_en);
+               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                           "[IQK] iqk->is_fw_iqk = %x\n", iqk->is_fw_iqk);
+               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                           "[IQK] iqk->is_iqk_enable = %x\n", iqk->is_iqk_enable);
+               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                           "[IQK] iqk->iqk_cfir_en = %x\n", iqk->iqk_cfir_en);
+               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                           "[IQK] iqk->thermal_rek_en = %x\n", iqk->thermal_rek_en);
+               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                           "[IQK] iqk->version = %x\n", iqk->version);
+               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                           "[IQK] iqk->phy = %x\n", iqk->phy);
+               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                           "[IQK] iqk->fwk_status = %x\n", iqk->fwk_status);
+
+               for (i = 0; i < 2; i++) {
+                       rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                                   "[IQK] ======== Path %x  ========\n", i);
+                       rtw89_debug(rtwdev, RTW89_DBG_RFK, "[IQK] iqk->iqk_band[%d] = %x\n",
+                                   i, iqk->iqk_band[i]);
+                       rtw89_debug(rtwdev, RTW89_DBG_RFK, "[IQK] iqk->iqk_ch[%d] = %x\n",
+                                   i, iqk->iqk_ch[i]);
+                       rtw89_debug(rtwdev, RTW89_DBG_RFK, "[IQK] iqk->iqk_bw[%d] = %x\n",
+                                   i, iqk->iqk_bw[i]);
+                       rtw89_debug(rtwdev, RTW89_DBG_RFK, "[IQK] iqk->lok_idac[%d] = %x\n",
+                                   i, le32_to_cpu(iqk->lok_idac[i]));
+                       rtw89_debug(rtwdev, RTW89_DBG_RFK, "[IQK] iqk->lok_vbuf[%d] = %x\n",
+                                   i, le32_to_cpu(iqk->lok_vbuf[i]));
+                       rtw89_debug(rtwdev, RTW89_DBG_RFK, "[IQK] iqk->iqk_tx_fail[%d] = %x\n",
+                                   i, iqk->iqk_tx_fail[i]);
+                       rtw89_debug(rtwdev, RTW89_DBG_RFK, "[IQK] iqk->iqk_rx_fail[%d] = %x\n",
+                                   i, iqk->iqk_rx_fail[i]);
+                       for (j = 0; j < 4; j++)
+                               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                                           "[IQK] iqk->rftxgain[%d][%d] = %x\n",
+                                           i, j, le32_to_cpu(iqk->rftxgain[i][j]));
+                       for (j = 0; j < 4; j++)
+                               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                                           "[IQK] iqk->tx_xym[%d][%d] = %x\n",
+                                           i, j, le32_to_cpu(iqk->tx_xym[i][j]));
+                       for (j = 0; j < 4; j++)
+                               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                                           "[IQK] iqk->rfrxgain[%d][%d] = %x\n",
+                                           i, j, le32_to_cpu(iqk->rfrxgain[i][j]));
+                       for (j = 0; j < 4; j++)
+                               rtw89_debug(rtwdev, RTW89_DBG_RFK,
+                                           "[IQK] iqk->rx_xym[%d][%d] = %x\n",
+                                           i, j, le32_to_cpu(iqk->rx_xym[i][j]));
+               }
+               return;
        case RTW89_PHY_C2H_RFK_LOG_FUNC_DPK:
                if (len != sizeof(*dpk))
                        goto out;