Skip to content

Commit

Permalink
rtl8xxxu: Do BT_WLAN_CALIBRATION before doing IQK calibration
Browse files Browse the repository at this point in the history
Newer generation chips require the firmware be notified before we
start the IQK calibration.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
  • Loading branch information
Jes Sorensen authored and Kalle Valo committed Mar 10, 2016
1 parent 8da9157 commit c7a5a19
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
20 changes: 19 additions & 1 deletion drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down Expand Up @@ -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;
Expand All @@ -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;

Expand Down Expand Up @@ -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)
Expand Down
4 changes: 4 additions & 0 deletions drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
Original file line number Diff line number Diff line change
Expand Up @@ -727,6 +727,10 @@ struct h2c_cmd {
u8 arg;
__le16 mask_lo;
} __packed ramask;
struct {
u8 cmd;
u8 data;
} __packed bt_wlan_calibration;
};
};

Expand Down

0 comments on commit c7a5a19

Please sign in to comment.