cnss2: Send WAKE MSI base data to firmware
Add the support to send WAKE MSI base data to firmware through HOST_CAP_REQ QMI message so that firmware can use it to wake up WLAN host driver. Change-Id: Ief8bfb6c3746bc0bfd833aa3bded09212773244d Signed-off-by: Yue Ma <yuem@codeaurora.org>
This commit is contained in:
parent
5607c6f1d3
commit
0894ea1926
3 changed files with 26 additions and 0 deletions
|
@ -37,6 +37,7 @@
|
|||
#define FW_READY_TIMEOUT 20000
|
||||
#define FW_ASSERT_TIMEOUT 5000
|
||||
#define CNSS_EVENT_PENDING 2989
|
||||
#define WAKE_MSI_NAME "WAKE"
|
||||
|
||||
static struct cnss_plat_data *plat_env;
|
||||
|
||||
|
@ -537,6 +538,24 @@ int cnss_set_fw_log_mode(struct device *dev, u8 fw_log_mode)
|
|||
}
|
||||
EXPORT_SYMBOL(cnss_set_fw_log_mode);
|
||||
|
||||
u32 cnss_get_wake_msi(struct cnss_plat_data *plat_priv)
|
||||
{
|
||||
struct cnss_pci_data *pci_priv = plat_priv->bus_priv;
|
||||
int ret, num_vectors;
|
||||
u32 user_base_data, base_vector;
|
||||
|
||||
ret = cnss_get_user_msi_assignment(&pci_priv->pci_dev->dev,
|
||||
WAKE_MSI_NAME, &num_vectors,
|
||||
&user_base_data, &base_vector);
|
||||
|
||||
if (ret) {
|
||||
cnss_pr_err("WAKE MSI is not valid\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
return user_base_data;
|
||||
}
|
||||
|
||||
static int cnss_fw_mem_ready_hdlr(struct cnss_plat_data *plat_priv)
|
||||
{
|
||||
int ret = 0;
|
||||
|
|
|
@ -220,5 +220,6 @@ void cnss_unregister_subsys(struct cnss_plat_data *plat_priv);
|
|||
int cnss_register_ramdump(struct cnss_plat_data *plat_priv);
|
||||
void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv);
|
||||
void cnss_set_pin_connect_status(struct cnss_plat_data *plat_priv);
|
||||
u32 cnss_get_wake_msi(struct cnss_plat_data *plat_priv);
|
||||
|
||||
#endif /* _CNSS_MAIN_H */
|
||||
|
|
|
@ -140,6 +140,12 @@ static int cnss_wlfw_host_cap_send_sync(struct cnss_plat_data *plat_priv)
|
|||
|
||||
cnss_pr_dbg("daemon_support is %d\n", req.daemon_support);
|
||||
|
||||
req.wake_msi = cnss_get_wake_msi(plat_priv);
|
||||
if (req.wake_msi) {
|
||||
cnss_pr_dbg("WAKE MSI base data is %d\n", req.wake_msi);
|
||||
req.wake_msi_valid = 1;
|
||||
}
|
||||
|
||||
req_desc.max_msg_len = WLFW_HOST_CAP_REQ_MSG_V01_MAX_MSG_LEN;
|
||||
req_desc.msg_id = QMI_WLFW_HOST_CAP_REQ_V01;
|
||||
req_desc.ei_array = wlfw_host_cap_req_msg_v01_ei;
|
||||
|
|
Loading…
Add table
Reference in a new issue