Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c7a5a190 authored by Jes Sorensen's avatar Jes Sorensen Committed by Kalle Valo
Browse files

rtl8xxxu: Do BT_WLAN_CALIBRATION before doing IQK calibration



Newer generation chips require the firmware be notified before we
start the IQK calibration.

Signed-off-by: default avatarJes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 8da91571
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -1497,7 +1497,7 @@ static int rtl8723a_h2c_cmd(struct rtl8xxxu_priv *priv,
	} while (retry--);

	if (!retry) {
		dev_dbg(dev, "%s: Mailbox busy\n", __func__);
		dev_info(dev, "%s: Mailbox busy\n", __func__);
		retval = -EBUSY;
		goto error;
	}
@@ -3877,6 +3877,20 @@ static void rtl8xxxu_phy_iqcalibrate(struct rtl8xxxu_priv *priv,
	}
}

static void rtl8xxxu_prepare_calibrate(struct rtl8xxxu_priv *priv, u8 start)
{
	struct h2c_cmd h2c;

	if (priv->fops->mbox_ext_width < 4)
		return;

	memset(&h2c, 0, sizeof(struct h2c_cmd));
	h2c.bt_wlan_calibration.cmd = H2C_8723B_BT_WLAN_CALIBRATION;
	h2c.bt_wlan_calibration.data = start;

	rtl8723a_h2c_cmd(priv, &h2c, sizeof(h2c.bt_wlan_calibration));
}

static void rtl8723a_phy_iq_calibrate(struct rtl8xxxu_priv *priv)
{
	struct device *dev = &priv->udev->dev;
@@ -3888,6 +3902,8 @@ static void rtl8723a_phy_iq_calibrate(struct rtl8xxxu_priv *priv)
	s32 reg_tmp = 0;
	bool simu;

	rtl8xxxu_prepare_calibrate(priv, 1);

	memset(result, 0, sizeof(result));
	candidate = -1;

@@ -3975,6 +3991,8 @@ static void rtl8723a_phy_iq_calibrate(struct rtl8xxxu_priv *priv)

	rtl8xxxu_save_regs(priv, rtl8723au_iqk_phy_iq_bb_reg,
			   priv->bb_recovery_backup, RTL8XXXU_BB_REGS);

	rtl8xxxu_prepare_calibrate(priv, 0);
}

static void rtl8723a_phy_lc_calibrate(struct rtl8xxxu_priv *priv)
+4 −0
Original line number Diff line number Diff line
@@ -727,6 +727,10 @@ struct h2c_cmd {
			u8 arg;
			__le16 mask_lo;
		} __packed ramask;
		struct {
			u8 cmd;
			u8 data;
		} __packed bt_wlan_calibration;
	};
};