Merge "cnss2: Support unified QMI sequence"
This commit is contained in:
commit
4f476c17c5
6 changed files with 681 additions and 154 deletions
|
@ -1690,6 +1690,7 @@ static int cnss_cold_boot_cal_start_hdlr(struct cnss_plat_data *plat_priv)
|
|||
|
||||
static int cnss_cold_boot_cal_done_hdlr(struct cnss_plat_data *plat_priv)
|
||||
{
|
||||
plat_priv->cal_done = true;
|
||||
cnss_wlfw_wlan_mode_send_sync(plat_priv, QMI_WLFW_OFF_V01);
|
||||
cnss_shutdown(plat_priv);
|
||||
clear_bit(CNSS_COLD_BOOT_CAL, &plat_priv->driver_state);
|
||||
|
|
|
@ -107,6 +107,7 @@ struct cnss_fw_mem {
|
|||
void *va;
|
||||
phys_addr_t pa;
|
||||
bool valid;
|
||||
u32 type;
|
||||
};
|
||||
|
||||
enum cnss_driver_event_type {
|
||||
|
@ -192,7 +193,8 @@ struct cnss_plat_data {
|
|||
struct wlfw_rf_board_info_s_v01 board_info;
|
||||
struct wlfw_soc_info_s_v01 soc_info;
|
||||
struct wlfw_fw_version_info_s_v01 fw_version_info;
|
||||
struct cnss_fw_mem fw_mem;
|
||||
u32 fw_mem_seg_len;
|
||||
struct cnss_fw_mem fw_mem[QMI_WLFW_MAX_NUM_MEM_SEG_V01];
|
||||
struct cnss_fw_mem m3_mem;
|
||||
struct cnss_pin_connect_result pin_result;
|
||||
struct dentry *root_dentry;
|
||||
|
@ -204,6 +206,7 @@ struct cnss_plat_data {
|
|||
u32 diag_reg_read_mem_type;
|
||||
u32 diag_reg_read_len;
|
||||
u8 *diag_reg_read_buf;
|
||||
bool cal_done;
|
||||
};
|
||||
|
||||
void *cnss_bus_dev_to_bus_priv(struct device *dev);
|
||||
|
|
|
@ -737,18 +737,21 @@ int cnss_pm_request_resume(struct cnss_pci_data *pci_priv)
|
|||
int cnss_pci_alloc_fw_mem(struct cnss_pci_data *pci_priv)
|
||||
{
|
||||
struct cnss_plat_data *plat_priv = pci_priv->plat_priv;
|
||||
struct cnss_fw_mem *fw_mem = &plat_priv->fw_mem;
|
||||
struct cnss_fw_mem *fw_mem = plat_priv->fw_mem;
|
||||
int i;
|
||||
|
||||
if (!fw_mem->va && fw_mem->size) {
|
||||
fw_mem->va = dma_alloc_coherent(&pci_priv->pci_dev->dev,
|
||||
fw_mem->size, &fw_mem->pa,
|
||||
GFP_KERNEL);
|
||||
if (!fw_mem->va) {
|
||||
cnss_pr_err("Failed to allocate memory for FW, size: 0x%zx\n",
|
||||
fw_mem->size);
|
||||
fw_mem->size = 0;
|
||||
for (i = 0; i < plat_priv->fw_mem_seg_len; i++) {
|
||||
if (!fw_mem[i].va && fw_mem[i].size) {
|
||||
fw_mem[i].va =
|
||||
dma_alloc_coherent(&pci_priv->pci_dev->dev,
|
||||
fw_mem[i].size,
|
||||
&fw_mem[i].pa, GFP_KERNEL);
|
||||
if (!fw_mem[i].va) {
|
||||
cnss_pr_err("Failed to allocate memory for FW, size: 0x%zx, type: %u\n",
|
||||
fw_mem[i].size, fw_mem[i].type);
|
||||
|
||||
return -ENOMEM;
|
||||
return -ENOMEM;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -758,17 +761,25 @@ int cnss_pci_alloc_fw_mem(struct cnss_pci_data *pci_priv)
|
|||
static void cnss_pci_free_fw_mem(struct cnss_pci_data *pci_priv)
|
||||
{
|
||||
struct cnss_plat_data *plat_priv = pci_priv->plat_priv;
|
||||
struct cnss_fw_mem *fw_mem = &plat_priv->fw_mem;
|
||||
struct cnss_fw_mem *fw_mem = plat_priv->fw_mem;
|
||||
int i;
|
||||
|
||||
if (fw_mem->va && fw_mem->size) {
|
||||
cnss_pr_dbg("Freeing memory for FW, va: 0x%pK, pa: %pa, size: 0x%zx\n",
|
||||
fw_mem->va, &fw_mem->pa, fw_mem->size);
|
||||
dma_free_coherent(&pci_priv->pci_dev->dev, fw_mem->size,
|
||||
fw_mem->va, fw_mem->pa);
|
||||
fw_mem->va = NULL;
|
||||
fw_mem->pa = 0;
|
||||
fw_mem->size = 0;
|
||||
for (i = 0; i < plat_priv->fw_mem_seg_len; i++) {
|
||||
if (fw_mem[i].va && fw_mem[i].size) {
|
||||
cnss_pr_dbg("Freeing memory for FW, va: 0x%pK, pa: %pa, size: 0x%zx, type: %u\n",
|
||||
fw_mem[i].va, &fw_mem[i].pa,
|
||||
fw_mem[i].size, fw_mem[i].type);
|
||||
dma_free_coherent(&pci_priv->pci_dev->dev,
|
||||
fw_mem[i].size, fw_mem[i].va,
|
||||
fw_mem[i].pa);
|
||||
fw_mem[i].va = NULL;
|
||||
fw_mem[i].pa = 0;
|
||||
fw_mem[i].size = 0;
|
||||
fw_mem[i].type = 0;
|
||||
}
|
||||
}
|
||||
|
||||
plat_priv->fw_mem_seg_len = 0;
|
||||
}
|
||||
|
||||
int cnss_pci_load_m3(struct cnss_pci_data *pci_priv)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2015-2017, The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 and
|
||||
|
@ -159,10 +159,9 @@ static int cnss_wlfw_host_cap_send_sync(struct cnss_plat_data *plat_priv)
|
|||
memset(&req, 0, sizeof(req));
|
||||
memset(&resp, 0, sizeof(resp));
|
||||
|
||||
req.daemon_support_valid = 1;
|
||||
req.daemon_support = daemon_support;
|
||||
|
||||
cnss_pr_dbg("daemon_support is %d\n", req.daemon_support);
|
||||
req.num_clients_valid = 1;
|
||||
req.num_clients = daemon_support ? 2 : 1;
|
||||
cnss_pr_dbg("Number of clients is %d\n", req.num_clients);
|
||||
|
||||
req.wake_msi = cnss_get_wake_msi(plat_priv);
|
||||
if (req.wake_msi) {
|
||||
|
@ -170,6 +169,19 @@ static int cnss_wlfw_host_cap_send_sync(struct cnss_plat_data *plat_priv)
|
|||
req.wake_msi_valid = 1;
|
||||
}
|
||||
|
||||
req.bdf_support_valid = 1;
|
||||
req.bdf_support = 1;
|
||||
|
||||
req.m3_support_valid = 1;
|
||||
req.m3_support = 1;
|
||||
|
||||
req.m3_cache_support_valid = 1;
|
||||
req.m3_cache_support = 1;
|
||||
|
||||
req.cal_done_valid = 1;
|
||||
req.cal_done = plat_priv->cal_done;
|
||||
cnss_pr_dbg("Calibration done is %d\n", plat_priv->cal_done);
|
||||
|
||||
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;
|
||||
|
@ -221,8 +233,8 @@ static int cnss_wlfw_ind_register_send_sync(struct cnss_plat_data *plat_priv)
|
|||
req.request_mem_enable = 1;
|
||||
req.fw_mem_ready_enable_valid = 1;
|
||||
req.fw_mem_ready_enable = 1;
|
||||
req.cold_boot_cal_done_enable_valid = 1;
|
||||
req.cold_boot_cal_done_enable = 1;
|
||||
req.fw_init_done_enable_valid = 1;
|
||||
req.fw_init_done_enable = 1;
|
||||
req.pin_connect_result_enable_valid = 1;
|
||||
req.pin_connect_result_enable = 1;
|
||||
|
||||
|
@ -260,27 +272,48 @@ static int cnss_wlfw_request_mem_ind_hdlr(struct cnss_plat_data *plat_priv,
|
|||
void *msg, unsigned int msg_len)
|
||||
{
|
||||
struct msg_desc ind_desc;
|
||||
struct wlfw_request_mem_ind_msg_v01 ind_msg;
|
||||
struct cnss_fw_mem *fw_mem = &plat_priv->fw_mem;
|
||||
int ret = 0;
|
||||
struct wlfw_request_mem_ind_msg_v01 *ind_msg;
|
||||
int ret = 0, i;
|
||||
|
||||
ind_msg = kzalloc(sizeof(*ind_msg), GFP_KERNEL);
|
||||
if (!ind_msg)
|
||||
return -ENOMEM;
|
||||
|
||||
ind_desc.msg_id = QMI_WLFW_REQUEST_MEM_IND_V01;
|
||||
ind_desc.max_msg_len = WLFW_REQUEST_MEM_IND_MSG_V01_MAX_MSG_LEN;
|
||||
ind_desc.ei_array = wlfw_request_mem_ind_msg_v01_ei;
|
||||
|
||||
ret = qmi_kernel_decode(&ind_desc, &ind_msg, msg, msg_len);
|
||||
ret = qmi_kernel_decode(&ind_desc, ind_msg, msg, msg_len);
|
||||
if (ret < 0) {
|
||||
cnss_pr_err("Failed to decode request memory indication, msg_len: %u, err = %d\n",
|
||||
ret, msg_len);
|
||||
return ret;
|
||||
goto out;
|
||||
}
|
||||
|
||||
fw_mem->size = ind_msg.size;
|
||||
if (ind_msg->mem_seg_len == 0 ||
|
||||
ind_msg->mem_seg_len > QMI_WLFW_MAX_NUM_MEM_SEG_V01) {
|
||||
cnss_pr_err("Invalid memory segment length: %u\n",
|
||||
ind_msg->mem_seg_len);
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
cnss_pr_dbg("FW memory segment count is %u\n", ind_msg->mem_seg_len);
|
||||
plat_priv->fw_mem_seg_len = ind_msg->mem_seg_len;
|
||||
for (i = 0; i < plat_priv->fw_mem_seg_len; i++) {
|
||||
plat_priv->fw_mem[i].type = ind_msg->mem_seg[i].type;
|
||||
plat_priv->fw_mem[i].size = ind_msg->mem_seg[i].size;
|
||||
}
|
||||
|
||||
cnss_driver_event_post(plat_priv, CNSS_DRIVER_EVENT_REQUEST_MEM,
|
||||
0, NULL);
|
||||
|
||||
kfree(ind_msg);
|
||||
return 0;
|
||||
|
||||
out:
|
||||
kfree(ind_msg);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int cnss_qmi_pin_result_ind_hdlr(struct cnss_plat_data *plat_priv,
|
||||
|
@ -317,30 +350,47 @@ static int cnss_qmi_pin_result_ind_hdlr(struct cnss_plat_data *plat_priv,
|
|||
|
||||
int cnss_wlfw_respond_mem_send_sync(struct cnss_plat_data *plat_priv)
|
||||
{
|
||||
struct wlfw_respond_mem_req_msg_v01 req;
|
||||
struct wlfw_respond_mem_resp_msg_v01 resp;
|
||||
struct wlfw_respond_mem_req_msg_v01 *req;
|
||||
struct wlfw_respond_mem_resp_msg_v01 *resp;
|
||||
struct msg_desc req_desc, resp_desc;
|
||||
struct cnss_fw_mem *fw_mem = &plat_priv->fw_mem;
|
||||
int ret = 0;
|
||||
struct cnss_fw_mem *fw_mem = plat_priv->fw_mem;
|
||||
int ret = 0, i;
|
||||
|
||||
cnss_pr_dbg("Sending respond memory message, state: 0x%lx\n",
|
||||
plat_priv->driver_state);
|
||||
|
||||
if (!fw_mem->pa || !fw_mem->size) {
|
||||
cnss_pr_err("Memory for FW is not available!\n");
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
req = kzalloc(sizeof(*req), GFP_KERNEL);
|
||||
if (!req)
|
||||
return -ENOMEM;
|
||||
|
||||
resp = kzalloc(sizeof(*resp), GFP_KERNEL);
|
||||
if (!resp)
|
||||
return -ENOMEM;
|
||||
|
||||
req->mem_seg_len = plat_priv->fw_mem_seg_len;
|
||||
for (i = 0; i < req->mem_seg_len; i++) {
|
||||
if (!fw_mem[i].pa || !fw_mem[i].size) {
|
||||
if (fw_mem[i].type == 0) {
|
||||
cnss_pr_err("Invalid memory for FW type, segment = %d\n",
|
||||
i);
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
cnss_pr_err("Memory for FW is not available for type: %u\n",
|
||||
fw_mem[i].type);
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
cnss_pr_dbg("Memory for FW, va: 0x%pK, pa: %pa, size: 0x%zx, type: %u\n",
|
||||
fw_mem[i].va, &fw_mem[i].pa,
|
||||
fw_mem[i].size, fw_mem[i].type);
|
||||
|
||||
req->mem_seg[i].addr = fw_mem[i].pa;
|
||||
req->mem_seg[i].size = fw_mem[i].size;
|
||||
req->mem_seg[i].type = fw_mem[i].type;
|
||||
}
|
||||
|
||||
cnss_pr_dbg("Memory for FW, va: 0x%pK, pa: %pa, size: 0x%zx\n",
|
||||
fw_mem->va, &fw_mem->pa, fw_mem->size);
|
||||
|
||||
memset(&req, 0, sizeof(req));
|
||||
memset(&resp, 0, sizeof(resp));
|
||||
|
||||
req.addr = fw_mem->pa;
|
||||
req.size = fw_mem->size;
|
||||
|
||||
req_desc.max_msg_len = WLFW_RESPOND_MEM_REQ_MSG_V01_MAX_MSG_LEN;
|
||||
req_desc.msg_id = QMI_WLFW_RESPOND_MEM_REQ_V01;
|
||||
req_desc.ei_array = wlfw_respond_mem_req_msg_v01_ei;
|
||||
|
@ -349,8 +399,8 @@ int cnss_wlfw_respond_mem_send_sync(struct cnss_plat_data *plat_priv)
|
|||
resp_desc.msg_id = QMI_WLFW_RESPOND_MEM_RESP_V01;
|
||||
resp_desc.ei_array = wlfw_respond_mem_resp_msg_v01_ei;
|
||||
|
||||
ret = qmi_send_req_wait(plat_priv->qmi_wlfw_clnt, &req_desc, &req,
|
||||
sizeof(req), &resp_desc, &resp, sizeof(resp),
|
||||
ret = qmi_send_req_wait(plat_priv->qmi_wlfw_clnt, &req_desc, req,
|
||||
sizeof(*req), &resp_desc, resp, sizeof(*resp),
|
||||
QMI_WLFW_TIMEOUT_MS);
|
||||
if (ret < 0) {
|
||||
cnss_pr_err("Failed to send respond memory request, err = %d\n",
|
||||
|
@ -358,16 +408,21 @@ int cnss_wlfw_respond_mem_send_sync(struct cnss_plat_data *plat_priv)
|
|||
goto out;
|
||||
}
|
||||
|
||||
if (resp.resp.result != QMI_RESULT_SUCCESS_V01) {
|
||||
if (resp->resp.result != QMI_RESULT_SUCCESS_V01) {
|
||||
cnss_pr_err("Respond memory request failed, result: %d, err: %d\n",
|
||||
resp.resp.result, resp.resp.error);
|
||||
ret = resp.resp.result;
|
||||
resp->resp.result, resp->resp.error);
|
||||
ret = resp->resp.result;
|
||||
goto out;
|
||||
}
|
||||
|
||||
kfree(req);
|
||||
kfree(resp);
|
||||
return 0;
|
||||
|
||||
out:
|
||||
CNSS_ASSERT(0);
|
||||
kfree(req);
|
||||
kfree(resp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -908,12 +963,12 @@ static void cnss_wlfw_clnt_ind(struct qmi_handle *handle,
|
|||
CNSS_DRIVER_EVENT_FW_MEM_READY,
|
||||
0, NULL);
|
||||
break;
|
||||
case QMI_WLFW_COLD_BOOT_CAL_DONE_IND_V01:
|
||||
case QMI_WLFW_FW_READY_IND_V01:
|
||||
cnss_driver_event_post(plat_priv,
|
||||
CNSS_DRIVER_EVENT_COLD_BOOT_CAL_DONE,
|
||||
0, NULL);
|
||||
break;
|
||||
case QMI_WLFW_FW_READY_IND_V01:
|
||||
case QMI_WLFW_FW_INIT_DONE_IND_V01:
|
||||
cnss_driver_event_post(plat_priv,
|
||||
CNSS_DRIVER_EVENT_FW_READY,
|
||||
0, NULL);
|
||||
|
@ -974,11 +1029,11 @@ int cnss_wlfw_server_arrive(struct cnss_plat_data *plat_priv)
|
|||
cnss_pr_info("QMI WLFW service connected, state: 0x%lx\n",
|
||||
plat_priv->driver_state);
|
||||
|
||||
ret = cnss_wlfw_host_cap_send_sync(plat_priv);
|
||||
ret = cnss_wlfw_ind_register_send_sync(plat_priv);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
ret = cnss_wlfw_ind_register_send_sync(plat_priv);
|
||||
ret = cnss_wlfw_host_cap_send_sync(plat_priv);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2015-2017, The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 and
|
||||
|
@ -62,7 +62,7 @@ static struct elem_info wlfw_ce_tgt_pipe_cfg_s_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -97,7 +97,7 @@ static struct elem_info wlfw_ce_svc_pipe_cfg_s_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -123,7 +123,7 @@ static struct elem_info wlfw_shadow_reg_cfg_s_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -140,7 +140,7 @@ static struct elem_info wlfw_shadow_reg_v2_cfg_s_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -175,7 +175,131 @@ static struct elem_info wlfw_memory_region_info_s_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
static struct elem_info wlfw_mem_cfg_s_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_8_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u64),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0,
|
||||
.offset = offsetof(struct wlfw_mem_cfg_s_v01,
|
||||
offset),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_4_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u32),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0,
|
||||
.offset = offsetof(struct wlfw_mem_cfg_s_v01,
|
||||
size),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_1_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0,
|
||||
.offset = offsetof(struct wlfw_mem_cfg_s_v01,
|
||||
secure_flag),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
static struct elem_info wlfw_mem_seg_s_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_4_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u32),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0,
|
||||
.offset = offsetof(struct wlfw_mem_seg_s_v01,
|
||||
size),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_SIGNED_4_BYTE_ENUM,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(enum wlfw_mem_type_enum_v01),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0,
|
||||
.offset = offsetof(struct wlfw_mem_seg_s_v01,
|
||||
type),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_DATA_LEN,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0,
|
||||
.offset = offsetof(struct wlfw_mem_seg_s_v01,
|
||||
mem_cfg_len),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_STRUCT,
|
||||
.elem_len = QMI_WLFW_MAX_NUM_MEM_CFG_V01,
|
||||
.elem_size = sizeof(struct wlfw_mem_cfg_s_v01),
|
||||
.is_array = VAR_LEN_ARRAY,
|
||||
.tlv_type = 0,
|
||||
.offset = offsetof(struct wlfw_mem_seg_s_v01,
|
||||
mem_cfg),
|
||||
.ei_array = wlfw_mem_cfg_s_v01_ei,
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
static struct elem_info wlfw_mem_seg_resp_s_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_8_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u64),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0,
|
||||
.offset = offsetof(struct wlfw_mem_seg_resp_s_v01,
|
||||
addr),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_4_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u32),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0,
|
||||
.offset = offsetof(struct wlfw_mem_seg_resp_s_v01,
|
||||
size),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_SIGNED_4_BYTE_ENUM,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(enum wlfw_mem_type_enum_v01),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0,
|
||||
.offset = offsetof(struct wlfw_mem_seg_resp_s_v01,
|
||||
type),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_1_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0,
|
||||
.offset = offsetof(struct wlfw_mem_seg_resp_s_v01,
|
||||
restore),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -201,7 +325,7 @@ static struct elem_info wlfw_rf_chip_info_s_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -218,7 +342,7 @@ static struct elem_info wlfw_rf_board_info_s_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -235,7 +359,7 @@ static struct elem_info wlfw_soc_info_s_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -261,7 +385,7 @@ static struct elem_info wlfw_fw_version_info_s_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -418,7 +542,7 @@ struct elem_info wlfw_ind_register_req_msg_v01_ei[] = {
|
|||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x18,
|
||||
.offset = offsetof(struct wlfw_ind_register_req_msg_v01,
|
||||
cold_boot_cal_done_enable_valid),
|
||||
fw_init_done_enable_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_1_BYTE,
|
||||
|
@ -427,7 +551,7 @@ struct elem_info wlfw_ind_register_req_msg_v01_ei[] = {
|
|||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x18,
|
||||
.offset = offsetof(struct wlfw_ind_register_req_msg_v01,
|
||||
cold_boot_cal_done_enable),
|
||||
fw_init_done_enable),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
|
@ -447,10 +571,46 @@ struct elem_info wlfw_ind_register_req_msg_v01_ei[] = {
|
|||
.offset = offsetof(struct wlfw_ind_register_req_msg_v01,
|
||||
rejuvenate_enable),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x1A,
|
||||
.offset = offsetof(struct wlfw_ind_register_req_msg_v01,
|
||||
xo_cal_enable_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_1_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x1A,
|
||||
.offset = offsetof(struct wlfw_ind_register_req_msg_v01,
|
||||
xo_cal_enable),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x1B,
|
||||
.offset = offsetof(struct wlfw_ind_register_req_msg_v01,
|
||||
cal_done_enable_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_1_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x1B,
|
||||
.offset = offsetof(struct wlfw_ind_register_req_msg_v01,
|
||||
cal_done_enable),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -489,7 +649,7 @@ struct elem_info wlfw_ind_register_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -497,7 +657,7 @@ struct elem_info wlfw_fw_ready_ind_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -505,7 +665,7 @@ struct elem_info wlfw_msa_ready_ind_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -573,7 +733,7 @@ struct elem_info wlfw_pin_connect_result_ind_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -608,7 +768,7 @@ struct elem_info wlfw_wlan_mode_req_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -626,7 +786,7 @@ struct elem_info wlfw_wlan_mode_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -764,7 +924,7 @@ struct elem_info wlfw_wlan_cfg_req_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -782,7 +942,7 @@ struct elem_info wlfw_wlan_cfg_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -790,7 +950,7 @@ struct elem_info wlfw_cap_req_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -920,7 +1080,7 @@ struct elem_info wlfw_cap_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1054,7 +1214,7 @@ struct elem_info wlfw_bdf_download_req_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1073,7 +1233,7 @@ struct elem_info wlfw_bdf_download_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1117,7 +1277,7 @@ struct elem_info wlfw_cal_report_req_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1135,7 +1295,7 @@ struct elem_info wlfw_cal_report_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1153,7 +1313,7 @@ struct elem_info wlfw_initiate_cal_download_ind_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1269,7 +1429,7 @@ struct elem_info wlfw_cal_download_req_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1288,7 +1448,7 @@ struct elem_info wlfw_cal_download_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1316,7 +1476,7 @@ struct elem_info wlfw_initiate_cal_update_ind_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1342,7 +1502,7 @@ struct elem_info wlfw_cal_update_req_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1459,7 +1619,7 @@ struct elem_info wlfw_cal_update_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1485,7 +1645,7 @@ struct elem_info wlfw_msa_info_req_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1522,7 +1682,7 @@ struct elem_info wlfw_msa_info_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1530,7 +1690,7 @@ struct elem_info wlfw_msa_ready_req_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1548,7 +1708,7 @@ struct elem_info wlfw_msa_ready_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1574,7 +1734,7 @@ struct elem_info wlfw_ini_req_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1592,7 +1752,7 @@ struct elem_info wlfw_ini_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1627,7 +1787,7 @@ struct elem_info wlfw_athdiag_read_req_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1676,7 +1836,7 @@ struct elem_info wlfw_athdiag_read_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1724,7 +1884,7 @@ struct elem_info wlfw_athdiag_write_req_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1743,7 +1903,7 @@ struct elem_info wlfw_athdiag_write_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1760,7 +1920,7 @@ struct elem_info wlfw_vbatt_req_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1778,7 +1938,7 @@ struct elem_info wlfw_vbatt_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1804,7 +1964,7 @@ struct elem_info wlfw_mac_addr_req_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1822,7 +1982,7 @@ struct elem_info wlfw_mac_addr_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1834,16 +1994,16 @@ struct elem_info wlfw_host_cap_req_msg_v01_ei[] = {
|
|||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x10,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
daemon_support_valid),
|
||||
num_clients_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_1_BYTE,
|
||||
.data_type = QMI_UNSIGNED_4_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.elem_size = sizeof(u32),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x10,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
daemon_support),
|
||||
num_clients),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
|
@ -1863,10 +2023,217 @@ struct elem_info wlfw_host_cap_req_msg_v01_ei[] = {
|
|||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
wake_msi),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x12,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
gpios_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_DATA_LEN,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x12,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
gpios_len),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_4_BYTE,
|
||||
.elem_len = QMI_WLFW_MAX_NUM_GPIO_V01,
|
||||
.elem_size = sizeof(u32),
|
||||
.is_array = VAR_LEN_ARRAY,
|
||||
.tlv_type = 0x12,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
gpios),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x13,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
nm_modem_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_1_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x13,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
nm_modem),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x14,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
bdf_support_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_1_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x14,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
bdf_support),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x15,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
bdf_cache_support_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_1_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x15,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
bdf_cache_support),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x16,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
m3_support_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_1_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x16,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
m3_support),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x17,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
m3_cache_support_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_1_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x17,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
m3_cache_support),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x18,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
cal_filesys_support_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_1_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x18,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
cal_filesys_support),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x19,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
cal_cache_support_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_1_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x19,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
cal_cache_support),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x1A,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
cal_done_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_1_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x1A,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
cal_done),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x1B,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
mem_bucket_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_4_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u32),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x1B,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
mem_bucket),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x1C,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
mem_cfg_mode_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_1_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x1C,
|
||||
.offset = offsetof(struct wlfw_host_cap_req_msg_v01,
|
||||
mem_cfg_mode),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1884,50 +2251,61 @@ struct elem_info wlfw_host_cap_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
struct elem_info wlfw_request_mem_ind_msg_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_4_BYTE,
|
||||
.data_type = QMI_DATA_LEN,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u32),
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x01,
|
||||
.offset = offsetof(struct wlfw_request_mem_ind_msg_v01,
|
||||
size),
|
||||
mem_seg_len),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_STRUCT,
|
||||
.elem_len = QMI_WLFW_MAX_NUM_MEM_SEG_V01,
|
||||
.elem_size = sizeof(struct wlfw_mem_seg_s_v01),
|
||||
.is_array = VAR_LEN_ARRAY,
|
||||
.tlv_type = 0x01,
|
||||
.offset = offsetof(struct wlfw_request_mem_ind_msg_v01,
|
||||
mem_seg),
|
||||
.ei_array = wlfw_mem_seg_s_v01_ei,
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
struct elem_info wlfw_respond_mem_req_msg_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_8_BYTE,
|
||||
.data_type = QMI_DATA_LEN,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u64),
|
||||
.elem_size = sizeof(u8),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x01,
|
||||
.offset = offsetof(struct wlfw_respond_mem_req_msg_v01,
|
||||
addr),
|
||||
mem_seg_len),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_4_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(u32),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x02,
|
||||
.data_type = QMI_STRUCT,
|
||||
.elem_len = QMI_WLFW_MAX_NUM_MEM_SEG_V01,
|
||||
.elem_size = sizeof(struct wlfw_mem_seg_resp_s_v01),
|
||||
.is_array = VAR_LEN_ARRAY,
|
||||
.tlv_type = 0x01,
|
||||
.offset = offsetof(struct wlfw_respond_mem_req_msg_v01,
|
||||
size),
|
||||
mem_seg),
|
||||
.ei_array = wlfw_mem_seg_resp_s_v01_ei,
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1945,7 +2323,7 @@ struct elem_info wlfw_respond_mem_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1953,15 +2331,15 @@ struct elem_info wlfw_fw_mem_ready_ind_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
struct elem_info wlfw_cold_boot_cal_done_ind_msg_v01_ei[] = {
|
||||
struct elem_info wlfw_fw_init_done_ind_msg_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -2041,7 +2419,7 @@ struct elem_info wlfw_rejuvenate_ind_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -2049,7 +2427,7 @@ struct elem_info wlfw_rejuvenate_ack_req_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -2068,7 +2446,7 @@ struct elem_info wlfw_rejuvenate_ack_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -2096,7 +2474,7 @@ struct elem_info wlfw_dynamic_feature_mask_req_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -2155,7 +2533,7 @@ struct elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -2181,7 +2559,7 @@ struct elem_info wlfw_m3_info_req_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -2199,7 +2577,7 @@ struct elem_info wlfw_m3_info_resp_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -2216,6 +2594,14 @@ struct elem_info wlfw_xo_cal_ind_msg_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.is_array = QMI_COMMON_TLV_TYPE,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
struct elem_info wlfw_cal_done_ind_msg_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2015-2017, The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 and
|
||||
|
@ -23,10 +23,12 @@
|
|||
#define QMI_WLFW_BDF_DOWNLOAD_REQ_V01 0x0025
|
||||
#define QMI_WLFW_FW_MEM_READY_IND_V01 0x0037
|
||||
#define QMI_WLFW_INITIATE_CAL_UPDATE_IND_V01 0x002A
|
||||
#define QMI_WLFW_CAL_DONE_IND_V01 0x003E
|
||||
#define QMI_WLFW_HOST_CAP_REQ_V01 0x0034
|
||||
#define QMI_WLFW_DYNAMIC_FEATURE_MASK_RESP_V01 0x003B
|
||||
#define QMI_WLFW_M3_INFO_REQ_V01 0x003C
|
||||
#define QMI_WLFW_CAP_REQ_V01 0x0024
|
||||
#define QMI_WLFW_FW_INIT_DONE_IND_V01 0x0038
|
||||
#define QMI_WLFW_CAL_REPORT_REQ_V01 0x0026
|
||||
#define QMI_WLFW_M3_INFO_RESP_V01 0x003C
|
||||
#define QMI_WLFW_CAL_UPDATE_RESP_V01 0x0029
|
||||
|
@ -42,7 +44,6 @@
|
|||
#define QMI_WLFW_WLAN_MODE_REQ_V01 0x0022
|
||||
#define QMI_WLFW_IND_REGISTER_REQ_V01 0x0020
|
||||
#define QMI_WLFW_WLAN_CFG_RESP_V01 0x0023
|
||||
#define QMI_WLFW_COLD_BOOT_CAL_DONE_IND_V01 0x0038
|
||||
#define QMI_WLFW_REQUEST_MEM_IND_V01 0x0035
|
||||
#define QMI_WLFW_REJUVENATE_IND_V01 0x0039
|
||||
#define QMI_WLFW_DYNAMIC_FEATURE_MASK_REQ_V01 0x003B
|
||||
|
@ -72,13 +73,16 @@
|
|||
#define QMI_WLFW_IND_REGISTER_RESP_V01 0x0020
|
||||
|
||||
#define QMI_WLFW_MAX_NUM_MEMORY_REGIONS_V01 2
|
||||
#define QMI_WLFW_MAX_NUM_MEM_SEG_V01 32
|
||||
#define QMI_WLFW_MAX_NUM_CAL_V01 5
|
||||
#define QMI_WLFW_MAX_DATA_SIZE_V01 6144
|
||||
#define QMI_WLFW_FUNCTION_NAME_LEN_V01 128
|
||||
#define QMI_WLFW_MAX_NUM_CE_V01 12
|
||||
#define QMI_WLFW_MAX_TIMESTAMP_LEN_V01 32
|
||||
#define QMI_WLFW_MAX_ATHDIAG_DATA_SIZE_V01 6144
|
||||
#define QMI_WLFW_MAX_NUM_GPIO_V01 32
|
||||
#define QMI_WLFW_MAX_BUILD_ID_LEN_V01 128
|
||||
#define QMI_WLFW_MAX_NUM_MEM_CFG_V01 2
|
||||
#define QMI_WLFW_MAX_STR_LEN_V01 16
|
||||
#define QMI_WLFW_MAX_NUM_SHADOW_REG_V01 24
|
||||
#define QMI_WLFW_MAC_ADDR_SIZE_V01 6
|
||||
|
@ -117,6 +121,17 @@ enum wlfw_pipedir_enum_v01 {
|
|||
WLFW_PIPEDIR_ENUM_MAX_VAL_V01 = INT_MAX,
|
||||
};
|
||||
|
||||
enum wlfw_mem_type_enum_v01 {
|
||||
WLFW_MEM_TYPE_ENUM_MIN_VAL_V01 = INT_MIN,
|
||||
QMI_WLFW_MEM_TYPE_MSA_V01 = 0,
|
||||
QMI_WLFW_MEM_TYPE_DDR_V01 = 1,
|
||||
QMI_WLFW_MEM_BDF_V01 = 2,
|
||||
QMI_WLFW_MEM_M3_V01 = 3,
|
||||
QMI_WLFW_MEM_CAL_V01 = 4,
|
||||
QMI_WLFW_MEM_DPD_V01 = 5,
|
||||
WLFW_MEM_TYPE_ENUM_MAX_VAL_V01 = INT_MAX,
|
||||
};
|
||||
|
||||
#define QMI_WLFW_CE_ATTR_FLAGS_V01 ((u32)0x00)
|
||||
#define QMI_WLFW_CE_ATTR_NO_SNOOP_V01 ((u32)0x01)
|
||||
#define QMI_WLFW_CE_ATTR_BYTE_SWAP_DATA_V01 ((u32)0x02)
|
||||
|
@ -128,6 +143,7 @@ enum wlfw_pipedir_enum_v01 {
|
|||
#define QMI_WLFW_FW_READY_V01 ((u64)0x02ULL)
|
||||
#define QMI_WLFW_MSA_READY_V01 ((u64)0x04ULL)
|
||||
#define QMI_WLFW_FW_MEM_READY_V01 ((u64)0x08ULL)
|
||||
#define QMI_WLFW_FW_INIT_DONE_V01 ((u64)0x10ULL)
|
||||
|
||||
#define QMI_WLFW_FW_REJUVENATE_V01 ((u64)0x01ULL)
|
||||
|
||||
|
@ -160,6 +176,26 @@ struct wlfw_memory_region_info_s_v01 {
|
|||
u8 secure_flag;
|
||||
};
|
||||
|
||||
struct wlfw_mem_cfg_s_v01 {
|
||||
u64 offset;
|
||||
u32 size;
|
||||
u8 secure_flag;
|
||||
};
|
||||
|
||||
struct wlfw_mem_seg_s_v01 {
|
||||
u32 size;
|
||||
enum wlfw_mem_type_enum_v01 type;
|
||||
u32 mem_cfg_len;
|
||||
struct wlfw_mem_cfg_s_v01 mem_cfg[QMI_WLFW_MAX_NUM_MEM_CFG_V01];
|
||||
};
|
||||
|
||||
struct wlfw_mem_seg_resp_s_v01 {
|
||||
u64 addr;
|
||||
u32 size;
|
||||
enum wlfw_mem_type_enum_v01 type;
|
||||
u8 restore;
|
||||
};
|
||||
|
||||
struct wlfw_rf_chip_info_s_v01 {
|
||||
u32 chip_id;
|
||||
u32 chip_family;
|
||||
|
@ -195,13 +231,17 @@ struct wlfw_ind_register_req_msg_v01 {
|
|||
u8 request_mem_enable;
|
||||
u8 fw_mem_ready_enable_valid;
|
||||
u8 fw_mem_ready_enable;
|
||||
u8 cold_boot_cal_done_enable_valid;
|
||||
u8 cold_boot_cal_done_enable;
|
||||
u8 fw_init_done_enable_valid;
|
||||
u8 fw_init_done_enable;
|
||||
u8 rejuvenate_enable_valid;
|
||||
u32 rejuvenate_enable;
|
||||
u8 xo_cal_enable_valid;
|
||||
u8 xo_cal_enable;
|
||||
u8 cal_done_enable_valid;
|
||||
u8 cal_done_enable;
|
||||
};
|
||||
|
||||
#define WLFW_IND_REGISTER_REQ_MSG_V01_MAX_MSG_LEN 46
|
||||
#define WLFW_IND_REGISTER_REQ_MSG_V01_MAX_MSG_LEN 54
|
||||
extern struct elem_info wlfw_ind_register_req_msg_v01_ei[];
|
||||
|
||||
struct wlfw_ind_register_resp_msg_v01 {
|
||||
|
@ -533,13 +573,36 @@ struct wlfw_mac_addr_resp_msg_v01 {
|
|||
extern struct elem_info wlfw_mac_addr_resp_msg_v01_ei[];
|
||||
|
||||
struct wlfw_host_cap_req_msg_v01 {
|
||||
u8 daemon_support_valid;
|
||||
u8 daemon_support;
|
||||
u8 num_clients_valid;
|
||||
u32 num_clients;
|
||||
u8 wake_msi_valid;
|
||||
u32 wake_msi;
|
||||
u8 gpios_valid;
|
||||
u32 gpios_len;
|
||||
u32 gpios[QMI_WLFW_MAX_NUM_GPIO_V01];
|
||||
u8 nm_modem_valid;
|
||||
u8 nm_modem;
|
||||
u8 bdf_support_valid;
|
||||
u8 bdf_support;
|
||||
u8 bdf_cache_support_valid;
|
||||
u8 bdf_cache_support;
|
||||
u8 m3_support_valid;
|
||||
u8 m3_support;
|
||||
u8 m3_cache_support_valid;
|
||||
u8 m3_cache_support;
|
||||
u8 cal_filesys_support_valid;
|
||||
u8 cal_filesys_support;
|
||||
u8 cal_cache_support_valid;
|
||||
u8 cal_cache_support;
|
||||
u8 cal_done_valid;
|
||||
u8 cal_done;
|
||||
u8 mem_bucket_valid;
|
||||
u32 mem_bucket;
|
||||
u8 mem_cfg_mode_valid;
|
||||
u8 mem_cfg_mode;
|
||||
};
|
||||
|
||||
#define WLFW_HOST_CAP_REQ_MSG_V01_MAX_MSG_LEN 11
|
||||
#define WLFW_HOST_CAP_REQ_MSG_V01_MAX_MSG_LEN 189
|
||||
extern struct elem_info wlfw_host_cap_req_msg_v01_ei[];
|
||||
|
||||
struct wlfw_host_cap_resp_msg_v01 {
|
||||
|
@ -550,18 +613,19 @@ struct wlfw_host_cap_resp_msg_v01 {
|
|||
extern struct elem_info wlfw_host_cap_resp_msg_v01_ei[];
|
||||
|
||||
struct wlfw_request_mem_ind_msg_v01 {
|
||||
u32 size;
|
||||
u32 mem_seg_len;
|
||||
struct wlfw_mem_seg_s_v01 mem_seg[QMI_WLFW_MAX_NUM_MEM_SEG_V01];
|
||||
};
|
||||
|
||||
#define WLFW_REQUEST_MEM_IND_MSG_V01_MAX_MSG_LEN 7
|
||||
#define WLFW_REQUEST_MEM_IND_MSG_V01_MAX_MSG_LEN 1124
|
||||
extern struct elem_info wlfw_request_mem_ind_msg_v01_ei[];
|
||||
|
||||
struct wlfw_respond_mem_req_msg_v01 {
|
||||
u64 addr;
|
||||
u32 size;
|
||||
u32 mem_seg_len;
|
||||
struct wlfw_mem_seg_resp_s_v01 mem_seg[QMI_WLFW_MAX_NUM_MEM_SEG_V01];
|
||||
};
|
||||
|
||||
#define WLFW_RESPOND_MEM_REQ_MSG_V01_MAX_MSG_LEN 18
|
||||
#define WLFW_RESPOND_MEM_REQ_MSG_V01_MAX_MSG_LEN 548
|
||||
extern struct elem_info wlfw_respond_mem_req_msg_v01_ei[];
|
||||
|
||||
struct wlfw_respond_mem_resp_msg_v01 {
|
||||
|
@ -578,12 +642,12 @@ struct wlfw_fw_mem_ready_ind_msg_v01 {
|
|||
#define WLFW_FW_MEM_READY_IND_MSG_V01_MAX_MSG_LEN 0
|
||||
extern struct elem_info wlfw_fw_mem_ready_ind_msg_v01_ei[];
|
||||
|
||||
struct wlfw_cold_boot_cal_done_ind_msg_v01 {
|
||||
struct wlfw_fw_init_done_ind_msg_v01 {
|
||||
char placeholder;
|
||||
};
|
||||
|
||||
#define WLFW_COLD_BOOT_CAL_DONE_IND_MSG_V01_MAX_MSG_LEN 0
|
||||
extern struct elem_info wlfw_cold_boot_cal_done_ind_msg_v01_ei[];
|
||||
#define WLFW_FW_INIT_DONE_IND_MSG_V01_MAX_MSG_LEN 0
|
||||
extern struct elem_info wlfw_fw_init_done_ind_msg_v01_ei[];
|
||||
|
||||
struct wlfw_rejuvenate_ind_msg_v01 {
|
||||
u8 cause_for_rejuvenation_valid;
|
||||
|
@ -654,4 +718,11 @@ struct wlfw_xo_cal_ind_msg_v01 {
|
|||
#define WLFW_XO_CAL_IND_MSG_V01_MAX_MSG_LEN 4
|
||||
extern struct elem_info wlfw_xo_cal_ind_msg_v01_ei[];
|
||||
|
||||
struct wlfw_cal_done_ind_msg_v01 {
|
||||
char placeholder;
|
||||
};
|
||||
|
||||
#define WLFW_CAL_DONE_IND_MSG_V01_MAX_MSG_LEN 0
|
||||
extern struct elem_info wlfw_cal_done_ind_msg_v01_ei[];
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Reference in a new issue