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

Commit 8bb7684a authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "wil6210: store FW RF calibration result"

parents f6c4e703 ecac1071
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -1042,6 +1042,12 @@ int wil_reset(struct wil6210_priv *wil, bool load_fw)
		wil_s(wil, RGF_CAF_ICR + offsetof(struct RGF_ICR, ICR), 0);
		wil_w(wil, RGF_CAF_ICR + offsetof(struct RGF_ICR, IMV), ~0);

		if (wil->fw_calib_result > 0) {
			__le32 val = cpu_to_le32(wil->fw_calib_result |
						 (CALIB_RESULT_SIGNATURE << 8));
			wil_w(wil, RGF_USER_FW_CALIB_RESULT, (u32 __force)val);
		}

		wil_release_cpu(wil);
	}

+6 −0
Original line number Diff line number Diff line
@@ -175,6 +175,10 @@ struct RGF_ICR {
#define RGF_USER_USER_SCRATCH_PAD	(0x8802bc)
#define RGF_USER_BL			(0x880A3C) /* Boot Loader */
#define RGF_USER_FW_REV_ID		(0x880a8c) /* chip revision */
#define RGF_USER_FW_CALIB_RESULT	(0x880a90) /* b0-7:result
						    * b8-15:signature
						    */
	#define CALIB_RESULT_SIGNATURE	(0x11)
#define RGF_USER_CLKS_CTL_0		(0x880abc)
	#define BIT_USER_CLKS_CAR_AHB_SW_SEL	BIT(1) /* ref clk/PLL */
	#define BIT_USER_CLKS_RST_PWGD	BIT(11) /* reset on "power good" */
@@ -733,6 +737,8 @@ struct wil6210_priv {
	bool tt_data_set;
	struct wmi_tt_data tt_data;

	int fw_calib_result;

#ifdef CONFIG_PM
#ifdef CONFIG_PM_SLEEP
	struct notifier_block pm_notify;
+5 −0
Original line number Diff line number Diff line
@@ -345,6 +345,11 @@ static void wmi_evt_ready(struct wil6210_priv *wil, int id, void *d, int len)
	strlcpy(wdev->wiphy->fw_version, wil->fw_version,
		sizeof(wdev->wiphy->fw_version));

	if (len > offsetof(struct wmi_ready_event, rfc_read_calib_result)) {
		wil_dbg_wmi(wil, "rfc calibration result %d\n",
			    evt->rfc_read_calib_result);
		wil->fw_calib_result = evt->rfc_read_calib_result;
	}
	wil_set_recovery_state(wil, fw_recovery_idle);
	set_bit(wil_status_fwready, wil->status);
	/* let the reset sequence continue */
+2 −0
Original line number Diff line number Diff line
@@ -1300,6 +1300,8 @@ struct wmi_ready_event {
	/* enum wmi_phy_capability */
	u8 phy_capability;
	u8 numof_additional_mids;
	u8 rfc_read_calib_result;
	u8 reserved[3];
} __packed;

/* WMI_NOTIFY_REQ_DONE_EVENTID */