Merge "wil6210: store FW RF calibration result"
This commit is contained in:
commit
4a8c1aa57f
4 changed files with 19 additions and 0 deletions
|
@ -1039,6 +1039,12 @@ int wil_reset(struct wil6210_priv *wil, bool load_fw)
|
||||||
wil_s(wil, RGF_CAF_ICR + offsetof(struct RGF_ICR, ICR), 0);
|
wil_s(wil, RGF_CAF_ICR + offsetof(struct RGF_ICR, ICR), 0);
|
||||||
wil_w(wil, RGF_CAF_ICR + offsetof(struct RGF_ICR, IMV), ~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);
|
wil_release_cpu(wil);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -175,6 +175,10 @@ struct RGF_ICR {
|
||||||
#define RGF_USER_USER_SCRATCH_PAD (0x8802bc)
|
#define RGF_USER_USER_SCRATCH_PAD (0x8802bc)
|
||||||
#define RGF_USER_BL (0x880A3C) /* Boot Loader */
|
#define RGF_USER_BL (0x880A3C) /* Boot Loader */
|
||||||
#define RGF_USER_FW_REV_ID (0x880a8c) /* chip revision */
|
#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 RGF_USER_CLKS_CTL_0 (0x880abc)
|
||||||
#define BIT_USER_CLKS_CAR_AHB_SW_SEL BIT(1) /* ref clk/PLL */
|
#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" */
|
#define BIT_USER_CLKS_RST_PWGD BIT(11) /* reset on "power good" */
|
||||||
|
@ -736,6 +740,8 @@ struct wil6210_priv {
|
||||||
bool tt_data_set;
|
bool tt_data_set;
|
||||||
struct wmi_tt_data tt_data;
|
struct wmi_tt_data tt_data;
|
||||||
|
|
||||||
|
int fw_calib_result;
|
||||||
|
|
||||||
#ifdef CONFIG_PM
|
#ifdef CONFIG_PM
|
||||||
#ifdef CONFIG_PM_SLEEP
|
#ifdef CONFIG_PM_SLEEP
|
||||||
struct notifier_block pm_notify;
|
struct notifier_block pm_notify;
|
||||||
|
|
|
@ -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,
|
strlcpy(wdev->wiphy->fw_version, wil->fw_version,
|
||||||
sizeof(wdev->wiphy->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);
|
wil_set_recovery_state(wil, fw_recovery_idle);
|
||||||
set_bit(wil_status_fwready, wil->status);
|
set_bit(wil_status_fwready, wil->status);
|
||||||
/* let the reset sequence continue */
|
/* let the reset sequence continue */
|
||||||
|
|
|
@ -1300,6 +1300,8 @@ struct wmi_ready_event {
|
||||||
/* enum wmi_phy_capability */
|
/* enum wmi_phy_capability */
|
||||||
u8 phy_capability;
|
u8 phy_capability;
|
||||||
u8 numof_additional_mids;
|
u8 numof_additional_mids;
|
||||||
|
u8 rfc_read_calib_result;
|
||||||
|
u8 reserved[3];
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
/* WMI_NOTIFY_REQ_DONE_EVENTID */
|
/* WMI_NOTIFY_REQ_DONE_EVENTID */
|
||||||
|
|
Loading…
Add table
Reference in a new issue