ath10k: Add qmi service for wlan qmi client
PATCH 1/12 ath10k: Add qmi service for wlan qmi client
WLAN qmi server running in Q6 dsp exposes host
to target cold boot qmi handshake.
Add WLAN QMI service helpers for WLAN serivice.
--- drivers/net/wireless/ath/ath10k/qmi_svc_v01.c | 2323 +++++++++++++++++++++++++ drivers/net/wireless/ath/ath10k/qmi_svc_v01.h | 685 ++++++++ 2 files changed, 3008 insertions(+) create mode 100644 drivers/net/wireless/ath/ath10k/qmi_svc_v01.c create mode 100644 drivers/net/wireless/ath/ath10k/qmi_svc_v01.h
drivers/net/wireless/ath/ath10k/qmi_svc_v01.c new file +2323 -0
@@ -0,0 +1,2323 @@ +/* +* Copyright (c) 2018 The Linux Foundation. All rights reserved. +* +* Permission to use, copy, modify, and/or distribute this software for any +* purpose with or without fee is hereby granted, provided that the above +* copyright notice and this permission notice appear in all copies. +* +* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +#include <linux/completion.h> +#include <linux/types.h> +#include <linux/mutex.h> +#include <linux/idr.h> +#include <linux/soc/qcom/qmi.h> +#include "qmi_svc_v01.h" + +static struct qmi_elem_info wlfw_ce_tgt_pipe_cfg_s_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01 , + pipe_num), + }, + { + .data_type =QMI_SIGNED_4_BYTE_ENUM , + .elem_len =1 , + .elem_size =sizeof (enum wlfw_pipedir_enum_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01 , + pipe_dir), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01 , + nentries), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01 , + nbytes_max), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01 , + flags), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +static struct qmi_elem_info wlfw_ce_svc_pipe_cfg_s_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_ce_svc_pipe_cfg_s_v01 , + service_id), + }, + { + .data_type =QMI_SIGNED_4_BYTE_ENUM , + .elem_len =1 , + .elem_size =sizeof (enum wlfw_pipedir_enum_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_ce_svc_pipe_cfg_s_v01 , + pipe_dir), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_ce_svc_pipe_cfg_s_v01 , + pipe_num), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +static struct qmi_elem_info wlfw_shadow_reg_cfg_s_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_2_BYTE , + .elem_len =1 , + .elem_size =sizeof (u16), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_shadow_reg_cfg_s_v01 , + id), + }, + { + .data_type =QMI_UNSIGNED_2_BYTE , + .elem_len =1 , + .elem_size =sizeof (u16), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_shadow_reg_cfg_s_v01 , + offset), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +static struct qmi_elem_info wlfw_shadow_reg_v2_cfg_s_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_shadow_reg_v2_cfg_s_v01 , + addr), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +static struct qmi_elem_info wlfw_memory_region_info_s_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_8_BYTE , + .elem_len =1 , + .elem_size =sizeof (u64), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_memory_region_info_s_v01 , + region_addr), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_memory_region_info_s_v01 , + size), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_memory_region_info_s_v01 , + secure_flag), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +static struct qmi_elem_info wlfw_mem_cfg_s_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_8_BYTE , + .elem_len =1 , + .elem_size =sizeof (u64), + .array_type =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), + .array_type =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), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_mem_cfg_s_v01 , + secure_flag), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +static struct qmi_elem_info wlfw_mem_seg_s_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =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 ), + .array_type =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), + .array_type =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 ), + .array_type =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 , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +static struct qmi_elem_info wlfw_mem_seg_resp_s_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_8_BYTE , + .elem_len =1 , + .elem_size =sizeof (u64), + .array_type =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), + .array_type =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 ), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_mem_seg_resp_s_v01 , + type), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +static struct qmi_elem_info wlfw_rf_chip_info_s_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_rf_chip_info_s_v01 , + chip_id), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_rf_chip_info_s_v01 , + chip_family), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +static struct qmi_elem_info wlfw_rf_board_info_s_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_rf_board_info_s_v01 , + board_id), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +static struct qmi_elem_info wlfw_soc_info_s_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_soc_info_s_v01 , + soc_id), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +static struct qmi_elem_info wlfw_fw_version_info_s_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_fw_version_info_s_v01 , + fw_version), + }, + { + .data_type =QMI_STRING , + .elem_len =QMI_WLFW_MAX_TIMESTAMP_LEN_V01 +1 , + .elem_size =sizeof (char ), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_fw_version_info_s_v01 , + fw_build_timestamp), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[] = { + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + fw_ready_enable_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + fw_ready_enable), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x11 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + initiate_cal_download_enable_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x11 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + initiate_cal_download_enable), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x12 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + initiate_cal_update_enable_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x12 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + initiate_cal_update_enable), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x13 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + msa_ready_enable_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x13 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + msa_ready_enable), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x14 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + pin_connect_result_enable_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x14 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + pin_connect_result_enable), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x15 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + client_id_valid), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x15 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + client_id), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x16 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + request_mem_enable_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x16 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + request_mem_enable), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x17 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + mem_ready_enable_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x17 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + mem_ready_enable), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x18 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + fw_init_done_enable_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x18 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + fw_init_done_enable), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x19 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + rejuvenate_enable_valid), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x19 , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + rejuvenate_enable), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =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), + .array_type =NO_ARRAY , + .tlv_type =0x1A , + .offset = offsetof(struct wlfw_ind_register_req_msg_v01 , + xo_cal_enable), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_ind_register_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_ind_register_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_ind_register_resp_msg_v01 , + fw_status_valid), + }, + { + .data_type =QMI_UNSIGNED_8_BYTE , + .elem_len =1 , + .elem_size =sizeof (u64), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_ind_register_resp_msg_v01 , + fw_status), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_fw_ready_ind_msg_v01_ei[] = { + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_msa_ready_ind_msg_v01_ei[] = { + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_pin_connect_result_ind_msg_v01_ei[] = { + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_pin_connect_result_ind_msg_v01 , + pwr_pin_result_valid), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_pin_connect_result_ind_msg_v01 , + pwr_pin_result), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x11 , + .offset = offsetof(struct wlfw_pin_connect_result_ind_msg_v01 , + phy_io_pin_result_valid), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x11 , + .offset = offsetof(struct wlfw_pin_connect_result_ind_msg_v01 , + phy_io_pin_result), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x12 , + .offset = offsetof(struct wlfw_pin_connect_result_ind_msg_v01 , + rf_pin_result_valid), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x12 , + .offset = offsetof(struct wlfw_pin_connect_result_ind_msg_v01 , + rf_pin_result), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_wlan_mode_req_msg_v01_ei[] = { + { + .data_type =QMI_SIGNED_4_BYTE_ENUM , + .elem_len =1 , + .elem_size =sizeof (enum wlfw_driver_mode_enum_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x01 , + .offset = offsetof(struct wlfw_wlan_mode_req_msg_v01 , + mode), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_wlan_mode_req_msg_v01 , + hw_debug_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_wlan_mode_req_msg_v01 , + hw_debug), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_wlan_mode_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_wlan_mode_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_wlan_cfg_req_msg_v01_ei[] = { + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01 , + host_version_valid), + }, + { + .data_type =QMI_STRING , + .elem_len =QMI_WLFW_MAX_STR_LEN_V01 +1 , + .elem_size =sizeof (char ), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01 , + host_version), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x11 , + .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01 , + tgt_cfg_valid), + }, + { + .data_type =QMI_DATA_LEN , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x11 , + .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01 , + tgt_cfg_len), + }, + { + .data_type =QMI_STRUCT , + .elem_len =QMI_WLFW_MAX_NUM_CE_V01 , + .elem_size =sizeof (struct wlfw_ce_tgt_pipe_cfg_s_v01 ), + .array_type =VAR_LEN_ARRAY , + .tlv_type =0x11 , + .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01 , + tgt_cfg), + .ei_array = wlfw_ce_tgt_pipe_cfg_s_v01_ei, + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x12 , + .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01 , + svc_cfg_valid), + }, + { + .data_type =QMI_DATA_LEN , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x12 , + .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01 , + svc_cfg_len), + }, + { + .data_type =QMI_STRUCT , + .elem_len =QMI_WLFW_MAX_NUM_SVC_V01 , + .elem_size =sizeof (struct wlfw_ce_svc_pipe_cfg_s_v01 ), + .array_type =VAR_LEN_ARRAY , + .tlv_type =0x12 , + .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01 , + svc_cfg), + .ei_array = wlfw_ce_svc_pipe_cfg_s_v01_ei, + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x13 , + .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01 , + shadow_reg_valid), + }, + { + .data_type =QMI_DATA_LEN , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x13 , + .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01 , + shadow_reg_len), + }, + { + .data_type =QMI_STRUCT , + .elem_len =QMI_WLFW_MAX_NUM_SHADOW_REG_V01 , + .elem_size =sizeof (struct wlfw_shadow_reg_cfg_s_v01 ), + .array_type =VAR_LEN_ARRAY , + .tlv_type =0x13 , + .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01 , + shadow_reg), + .ei_array = wlfw_shadow_reg_cfg_s_v01_ei, + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x14 , + .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01 , + shadow_reg_v2_valid), + }, + { + .data_type =QMI_DATA_LEN , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x14 , + .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01 , + shadow_reg_v2_len), + }, + { + .data_type =QMI_STRUCT , + .elem_len =QMI_WLFW_MAX_NUM_SHADOW_REG_V2_V01 , + .elem_size =sizeof (struct wlfw_shadow_reg_v2_cfg_s_v01 ), + .array_type =VAR_LEN_ARRAY , + .tlv_type =0x14 , + .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01 , + shadow_reg_v2), + .ei_array = wlfw_shadow_reg_v2_cfg_s_v01_ei, + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_wlan_cfg_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_wlan_cfg_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_cap_req_msg_v01_ei[] = { + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_cap_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_cap_resp_msg_v01 , + chip_info_valid), + }, + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct wlfw_rf_chip_info_s_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_cap_resp_msg_v01 , + chip_info), + .ei_array = wlfw_rf_chip_info_s_v01_ei, + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x11 , + .offset = offsetof(struct wlfw_cap_resp_msg_v01 , + board_info_valid), + }, + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct wlfw_rf_board_info_s_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x11 , + .offset = offsetof(struct wlfw_cap_resp_msg_v01 , + board_info), + .ei_array = wlfw_rf_board_info_s_v01_ei, + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x12 , + .offset = offsetof(struct wlfw_cap_resp_msg_v01 , + soc_info_valid), + }, + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct wlfw_soc_info_s_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x12 , + .offset = offsetof(struct wlfw_cap_resp_msg_v01 , + soc_info), + .ei_array = wlfw_soc_info_s_v01_ei, + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x13 , + .offset = offsetof(struct wlfw_cap_resp_msg_v01 , + fw_version_info_valid), + }, + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct wlfw_fw_version_info_s_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x13 , + .offset = offsetof(struct wlfw_cap_resp_msg_v01 , + fw_version_info), + .ei_array = wlfw_fw_version_info_s_v01_ei, + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x14 , + .offset = offsetof(struct wlfw_cap_resp_msg_v01 , + fw_build_id_valid), + }, + { + .data_type =QMI_STRING , + .elem_len =QMI_WLFW_MAX_BUILD_ID_LEN_V01 +1 , + .elem_size =sizeof (char ), + .array_type =NO_ARRAY , + .tlv_type =0x14 , + .offset = offsetof(struct wlfw_cap_resp_msg_v01 , + fw_build_id), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x15 , + .offset = offsetof(struct wlfw_cap_resp_msg_v01 , + num_macs_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x15 , + .offset = offsetof(struct wlfw_cap_resp_msg_v01 , + num_macs), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_bdf_download_req_msg_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x01 , + .offset = offsetof(struct wlfw_bdf_download_req_msg_v01 , + valid), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_bdf_download_req_msg_v01 , + file_id_valid), + }, + { + .data_type =QMI_SIGNED_4_BYTE_ENUM , + .elem_len =1 , + .elem_size =sizeof (enum wlfw_cal_temp_id_enum_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_bdf_download_req_msg_v01 , + file_id), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x11 , + .offset = offsetof(struct wlfw_bdf_download_req_msg_v01 , + total_size_valid), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x11 , + .offset = offsetof(struct wlfw_bdf_download_req_msg_v01 , + total_size), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x12 , + .offset = offsetof(struct wlfw_bdf_download_req_msg_v01 , + seg_id_valid), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x12 , + .offset = offsetof(struct wlfw_bdf_download_req_msg_v01 , + seg_id), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x13 , + .offset = offsetof(struct wlfw_bdf_download_req_msg_v01 , + data_valid), + }, + { + .data_type =QMI_DATA_LEN , + .elem_len =1 , + .elem_size =sizeof (u16), + .array_type =NO_ARRAY , + .tlv_type =0x13 , + .offset = offsetof(struct wlfw_bdf_download_req_msg_v01 , + data_len), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =QMI_WLFW_MAX_DATA_SIZE_V01 , + .elem_size =sizeof (u8), + .array_type =VAR_LEN_ARRAY , + .tlv_type =0x13 , + .offset = offsetof(struct wlfw_bdf_download_req_msg_v01 , + data), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x14 , + .offset = offsetof(struct wlfw_bdf_download_req_msg_v01 , + end_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x14 , + .offset = offsetof(struct wlfw_bdf_download_req_msg_v01 , + end), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x15 , + .offset = offsetof(struct wlfw_bdf_download_req_msg_v01 , + bdf_type_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x15 , + .offset = offsetof(struct wlfw_bdf_download_req_msg_v01 , + bdf_type), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_bdf_download_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_bdf_download_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_cal_report_req_msg_v01_ei[] = { + { + .data_type =QMI_DATA_LEN , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x01 , + .offset = offsetof(struct wlfw_cal_report_req_msg_v01 , + meta_data_len), + }, + { + .data_type =QMI_SIGNED_4_BYTE_ENUM , + .elem_len =QMI_WLFW_MAX_NUM_CAL_V01 , + .elem_size =sizeof (enum wlfw_cal_temp_id_enum_v01 ), + .array_type =VAR_LEN_ARRAY , + .tlv_type =0x01 , + .offset = offsetof(struct wlfw_cal_report_req_msg_v01 , + meta_data), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_cal_report_req_msg_v01 , + xo_cal_data_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_cal_report_req_msg_v01 , + xo_cal_data), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_cal_report_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_cal_report_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_initiate_cal_download_ind_msg_v01_ei[] = { + { + .data_type =QMI_SIGNED_4_BYTE_ENUM , + .elem_len =1 , + .elem_size =sizeof (enum wlfw_cal_temp_id_enum_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x01 , + .offset = offsetof(struct wlfw_initiate_cal_download_ind_msg_v01 , + cal_id), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_cal_download_req_msg_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x01 , + .offset = offsetof(struct wlfw_cal_download_req_msg_v01 , + valid), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_cal_download_req_msg_v01 , + file_id_valid), + }, + { + .data_type =QMI_SIGNED_4_BYTE_ENUM , + .elem_len =1 , + .elem_size =sizeof (enum wlfw_cal_temp_id_enum_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_cal_download_req_msg_v01 , + file_id), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x11 , + .offset = offsetof(struct wlfw_cal_download_req_msg_v01 , + total_size_valid), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x11 , + .offset = offsetof(struct wlfw_cal_download_req_msg_v01 , + total_size), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x12 , + .offset = offsetof(struct wlfw_cal_download_req_msg_v01 , + seg_id_valid), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x12 , + .offset = offsetof(struct wlfw_cal_download_req_msg_v01 , + seg_id), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x13 , + .offset = offsetof(struct wlfw_cal_download_req_msg_v01 , + data_valid), + }, + { + .data_type =QMI_DATA_LEN , + .elem_len =1 , + .elem_size =sizeof (u16), + .array_type =NO_ARRAY , + .tlv_type =0x13 , + .offset = offsetof(struct wlfw_cal_download_req_msg_v01 , + data_len), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =QMI_WLFW_MAX_DATA_SIZE_V01 , + .elem_size =sizeof (u8), + .array_type =VAR_LEN_ARRAY , + .tlv_type =0x13 , + .offset = offsetof(struct wlfw_cal_download_req_msg_v01 , + data), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x14 , + .offset = offsetof(struct wlfw_cal_download_req_msg_v01 , + end_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x14 , + .offset = offsetof(struct wlfw_cal_download_req_msg_v01 , + end), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_cal_download_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_cal_download_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_initiate_cal_update_ind_msg_v01_ei[] = { + { + .data_type =QMI_SIGNED_4_BYTE_ENUM , + .elem_len =1 , + .elem_size =sizeof (enum wlfw_cal_temp_id_enum_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x01 , + .offset = offsetof(struct wlfw_initiate_cal_update_ind_msg_v01 , + cal_id), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_initiate_cal_update_ind_msg_v01 , + total_size), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_cal_update_req_msg_v01_ei[] = { + { + .data_type =QMI_SIGNED_4_BYTE_ENUM , + .elem_len =1 , + .elem_size =sizeof (enum wlfw_cal_temp_id_enum_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x01 , + .offset = offsetof(struct wlfw_cal_update_req_msg_v01 , + cal_id), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_cal_update_req_msg_v01 , + seg_id), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_cal_update_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_cal_update_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_cal_update_resp_msg_v01 , + file_id_valid), + }, + { + .data_type =QMI_SIGNED_4_BYTE_ENUM , + .elem_len =1 , + .elem_size =sizeof (enum wlfw_cal_temp_id_enum_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_cal_update_resp_msg_v01 , + file_id), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x11 , + .offset = offsetof(struct wlfw_cal_update_resp_msg_v01 , + total_size_valid), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x11 , + .offset = offsetof(struct wlfw_cal_update_resp_msg_v01 , + total_size), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x12 , + .offset = offsetof(struct wlfw_cal_update_resp_msg_v01 , + seg_id_valid), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x12 , + .offset = offsetof(struct wlfw_cal_update_resp_msg_v01 , + seg_id), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x13 , + .offset = offsetof(struct wlfw_cal_update_resp_msg_v01 , + data_valid), + }, + { + .data_type =QMI_DATA_LEN , + .elem_len =1 , + .elem_size =sizeof (u16), + .array_type =NO_ARRAY , + .tlv_type =0x13 , + .offset = offsetof(struct wlfw_cal_update_resp_msg_v01 , + data_len), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =QMI_WLFW_MAX_DATA_SIZE_V01 , + .elem_size =sizeof (u8), + .array_type =VAR_LEN_ARRAY , + .tlv_type =0x13 , + .offset = offsetof(struct wlfw_cal_update_resp_msg_v01 , + data), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x14 , + .offset = offsetof(struct wlfw_cal_update_resp_msg_v01 , + end_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x14 , + .offset = offsetof(struct wlfw_cal_update_resp_msg_v01 , + end), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_msa_info_req_msg_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_8_BYTE , + .elem_len =1 , + .elem_size =sizeof (u64), + .array_type =NO_ARRAY , + .tlv_type =0x01 , + .offset = offsetof(struct wlfw_msa_info_req_msg_v01 , + msa_addr), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_msa_info_req_msg_v01 , + size), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_msa_info_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_msa_info_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_DATA_LEN , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x03 , + .offset = offsetof(struct wlfw_msa_info_resp_msg_v01 , + mem_region_info_len), + }, + { + .data_type =QMI_STRUCT , + .elem_len =QMI_WLFW_MAX_NUM_MEMORY_REGIONS_V01 , + .elem_size =sizeof (struct wlfw_memory_region_info_s_v01 ), + .array_type =VAR_LEN_ARRAY , + .tlv_type =0x03 , + .offset = offsetof(struct wlfw_msa_info_resp_msg_v01 , + mem_region_info), + .ei_array = wlfw_memory_region_info_s_v01_ei, + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_msa_ready_req_msg_v01_ei[] = { + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_msa_ready_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_msa_ready_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_ini_req_msg_v01_ei[] = { + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_ini_req_msg_v01 , + enablefwlog_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_ini_req_msg_v01 , + enablefwlog), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_ini_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_ini_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_athdiag_read_req_msg_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x01 , + .offset = offsetof(struct wlfw_athdiag_read_req_msg_v01 , + offset), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_athdiag_read_req_msg_v01 , + mem_type), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x03 , + .offset = offsetof(struct wlfw_athdiag_read_req_msg_v01 , + data_len), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_athdiag_read_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_athdiag_read_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_athdiag_read_resp_msg_v01 , + data_valid), + }, + { + .data_type =QMI_DATA_LEN , + .elem_len =1 , + .elem_size =sizeof (u16), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_athdiag_read_resp_msg_v01 , + data_len), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =QMI_WLFW_MAX_ATHDIAG_DATA_SIZE_V01 , + .elem_size =sizeof (u8), + .array_type =VAR_LEN_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_athdiag_read_resp_msg_v01 , + data), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_athdiag_write_req_msg_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x01 , + .offset = offsetof(struct wlfw_athdiag_write_req_msg_v01 , + offset), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_athdiag_write_req_msg_v01 , + mem_type), + }, + { + .data_type =QMI_DATA_LEN , + .elem_len =1 , + .elem_size =sizeof (u16), + .array_type =NO_ARRAY , + .tlv_type =0x03 , + .offset = offsetof(struct wlfw_athdiag_write_req_msg_v01 , + data_len), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =QMI_WLFW_MAX_ATHDIAG_DATA_SIZE_V01 , + .elem_size =sizeof (u8), + .array_type =VAR_LEN_ARRAY , + .tlv_type =0x03 , + .offset = offsetof(struct wlfw_athdiag_write_req_msg_v01 , + data), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_athdiag_write_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_athdiag_write_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_vbatt_req_msg_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_8_BYTE , + .elem_len =1 , + .elem_size =sizeof (u64), + .array_type =NO_ARRAY , + .tlv_type =0x01 , + .offset = offsetof(struct wlfw_vbatt_req_msg_v01 , + voltage_uv), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_vbatt_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_vbatt_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_mac_addr_req_msg_v01_ei[] = { + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_mac_addr_req_msg_v01 , + mac_addr_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =QMI_WLFW_MAC_ADDR_SIZE_V01 , + .elem_size =sizeof (u8), + .array_type =STATIC_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_mac_addr_req_msg_v01 , + mac_addr), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_mac_addr_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_mac_addr_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[] = { + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_host_cap_req_msg_v01 , + daemon_support_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_host_cap_req_msg_v01 , + daemon_support), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_host_cap_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_host_cap_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_request_mem_ind_msg_v01_ei[] = { + { + .data_type =QMI_DATA_LEN , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x01 , + .offset = offsetof(struct wlfw_request_mem_ind_msg_v01 , + 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 ), + .array_type =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 , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_respond_mem_req_msg_v01_ei[] = { + { + .data_type =QMI_DATA_LEN , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x01 , + .offset = offsetof(struct wlfw_respond_mem_req_msg_v01 , + mem_seg_len), + }, + { + .data_type =QMI_STRUCT , + .elem_len =QMI_WLFW_MAX_NUM_MEM_SEG_V01 , + .elem_size =sizeof (struct wlfw_mem_seg_resp_s_v01 ), + .array_type =VAR_LEN_ARRAY , + .tlv_type =0x01 , + .offset = offsetof(struct wlfw_respond_mem_req_msg_v01 , + mem_seg), + .ei_array = wlfw_mem_seg_resp_s_v01_ei, + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_respond_mem_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_respond_mem_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_mem_ready_ind_msg_v01_ei[] = { + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_fw_init_done_ind_msg_v01_ei[] = { + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_rejuvenate_ind_msg_v01_ei[] = { + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_rejuvenate_ind_msg_v01 , + cause_for_rejuvenation_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_rejuvenate_ind_msg_v01 , + cause_for_rejuvenation), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x11 , + .offset = offsetof(struct wlfw_rejuvenate_ind_msg_v01 , + requesting_sub_system_valid), + }, + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x11 , + .offset = offsetof(struct wlfw_rejuvenate_ind_msg_v01 , + requesting_sub_system), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x12 , + .offset = offsetof(struct wlfw_rejuvenate_ind_msg_v01 , + line_number_valid), + }, + { + .data_type =QMI_UNSIGNED_2_BYTE , + .elem_len =1 , + .elem_size =sizeof (u16), + .array_type =NO_ARRAY , + .tlv_type =0x12 , + .offset = offsetof(struct wlfw_rejuvenate_ind_msg_v01 , + line_number), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x13 , + .offset = offsetof(struct wlfw_rejuvenate_ind_msg_v01 , + function_name_valid), + }, + { + .data_type =QMI_STRING , + .elem_len =QMI_WLFW_FUNCTION_NAME_LEN_V01 +1 , + .elem_size =sizeof (char ), + .array_type =NO_ARRAY , + .tlv_type =0x13 , + .offset = offsetof(struct wlfw_rejuvenate_ind_msg_v01 , + function_name), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_rejuvenate_ack_req_msg_v01_ei[] = { + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_rejuvenate_ack_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_rejuvenate_ack_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_dynamic_feature_mask_req_msg_v01_ei[] = { + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_dynamic_feature_mask_req_msg_v01 , + mask_valid), + }, + { + .data_type =QMI_UNSIGNED_8_BYTE , + .elem_len =1 , + .elem_size =sizeof (u64), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_dynamic_feature_mask_req_msg_v01 , + mask), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01 , + prev_mask_valid), + }, + { + .data_type =QMI_UNSIGNED_8_BYTE , + .elem_len =1 , + .elem_size =sizeof (u64), + .array_type =NO_ARRAY , + .tlv_type =0x10 , + .offset = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01 , + prev_mask), + }, + { + .data_type =QMI_OPT_FLAG , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x11 , + .offset = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01 , + curr_mask_valid), + }, + { + .data_type =QMI_UNSIGNED_8_BYTE , + .elem_len =1 , + .elem_size =sizeof (u64), + .array_type =NO_ARRAY , + .tlv_type =0x11 , + .offset = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01 , + curr_mask), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_m3_info_req_msg_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_8_BYTE , + .elem_len =1 , + .elem_size =sizeof (u64), + .array_type =NO_ARRAY , + .tlv_type =0x01 , + .offset = offsetof(struct wlfw_m3_info_req_msg_v01 , + addr), + }, + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_m3_info_req_msg_v01 , + size), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_m3_info_resp_msg_v01_ei[] = { + { + .data_type =QMI_STRUCT , + .elem_len =1 , + .elem_size =sizeof (struct qmi_response_type_v01 ), + .array_type =NO_ARRAY , + .tlv_type =0x02 , + .offset = offsetof(struct wlfw_m3_info_resp_msg_v01 , + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +}; + +struct qmi_elem_info wlfw_xo_cal_ind_msg_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_1_BYTE , + .elem_len =1 , + .elem_size =sizeof (u8), + .array_type =NO_ARRAY , + .tlv_type =0x01 , + .offset = offsetof(struct wlfw_xo_cal_ind_msg_v01 , + xo_cal_data), + }, + { + .data_type =QMI_EOTI , + .array_type =NO_ARRAY , + .tlv_type =QMI_COMMON_TLV_TYPE , + }, +};
drivers/net/wireless/ath/ath10k/qmi_svc_v01.h new file +685 -0
677 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Signature · 1 line
1.9.1
Part of the diff is not shown here. View the raw message.
Quoted 6 lines · Govind Singh
WLAN qmi server running in Q6 dsp exposes host to target cold boot qmi handshake.
Add WLAN QMI service helpers for WLAN serivice.Signed-off-by Govind Singh <[email protected]>Signed-off-by Kalle Valo <[email protected]>
This introduced two new ath10k-check warnings:
drivers/net/wireless/ath/ath10k/qmi_svc_v01.h:304: line over 90 characters drivers/net/wireless/ath/ath10k/qmi_svc_v01.h:464: line over 90 characters
Signature · 3 lines
https://patchwork.kernel.org/patch/10307161/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
Quoted 6 lines · Govind Singh
WLAN qmi server running in Q6 dsp exposes host to target cold boot qmi handshake.
Add WLAN QMI service helpers for WLAN serivice.Signed-off-by Govind Singh <[email protected]>Signed-off-by Kalle Valo <[email protected]>
This introduced two new ath10k-check warnings:
drivers/net/wireless/ath/ath10k/qmi_svc_v01.h:304: line over 90 characters drivers/net/wireless/ath/ath10k/qmi_svc_v01.h:464: line over 90 characters
Signature · 9 lines
https://patchwork.kernel.org/patch/10307161/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches _______________________________________________ ath10k mailing list [email protected] http://lists.infradead.org/mailman/listinfo/ath10k
drivers/net/wireless/ath/ath10k/qmi_svc_v01.c
Quoted 13 lines · Govind Singh
WLAN qmi server running in Q6 dsp exposes host
to target cold boot qmi handshake.
Add WLAN QMI service helpers for WLAN serivice.Signed-off-by Govind Singh <[email protected]>--- drivers/net/wireless/ath/ath10k/qmi_svc_v01.c | 2323 +++++++++++++++++++++++++ drivers/net/wireless/ath/ath10k/qmi_svc_v01.h | 685 ++++++++ 2 files changed, 3008 insertions(+) create mode 100644 drivers/net/wireless/ath/ath10k/qmi_svc_v01.c create mode 100644 drivers/net/wireless/ath/ath10k/qmi_svc_v01.hdrivers/net/wireless/ath/ath10k/qmi_svc_v01.c +0
-0
This is not the one and only "QMI service version 1", so perhaps name the file qmi_wlfw_v01.c or something like that?
Quoted 10 lines
new file mode 100644
index 0000000..5857c0cdrivers/net/wireless/ath/ath10k/qmi_svc_v01.c new file +5
-0@@ -0,0 +1,2323 @@ +/* +* Copyright (c) 2018 The Linux Foundation. All rights reserved. +* +* Permission to use, copy, modify, and/or distribute this software for any +* purpose with or without fee is hereby granted, provided that the above
drivers/net/wireless/ath/ath10k/qmi_svc_v01.c line 15
Quoted 10 lines
drivers/net/wireless/ath/ath10k/qmi_svc_v01.c new file +10
-0+* copyright notice and this permission notice appear in all copies. +* +* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/
Please use SPDX license header.
drivers/net/wireless/ath/ath10k/qmi_svc_v01.c line 22
Quoted 7 lines
drivers/net/wireless/ath/ath10k/qmi_svc_v01.c new file +7
-0+ +#include <linux/completion.h> +#include <linux/types.h> +#include <linux/mutex.h> +#include <linux/idr.h> +#include <linux/soc/qcom/qmi.h> +#include "qmi_svc_v01.h"
At least completion, mutex and idr are unused.
Quoted 11 lines
drivers/net/wireless/ath/ath10k/qmi_svc_v01.c new file +11
-0+ +static struct qmi_elem_info wlfw_ce_tgt_pipe_cfg_s_v01_ei[] = { + { + .data_type =QMI_UNSIGNED_4_BYTE , + .elem_len =1 , + .elem_size =sizeof (u32), + .array_type =NO_ARRAY , + .tlv_type =0 , + .offset = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01 , + pipe_num), + },
[..]
drivers/net/wireless/ath/ath10k/qmi_svc_v01.c line 74
Quoted 5 lines
drivers/net/wireless/ath/ath10k/qmi_svc_v01.c new file +5
-0+ { + .data_type = QMI_EOTI, + .array_type = NO_ARRAY, + .tlv_type = QMI_COMMON_TLV_TYPE, + },
I changed the value of QMI_EOTI so this last entry would better be written as {}. But I presume this requires your code generator to change.
Quoted 1 line
+};
[..]
Quoted 11 lines
drivers/net/wireless/ath/ath10k/qmi_svc_v01.h new file +5
-0@@ -0,0 +1,685 @@ +/* +* Copyright (c) 2018 The Linux Foundation. All rights reserved. +* +* Permission to use, copy, modify, and/or distribute this software for any +* purpose with or without fee is hereby granted, provided that the above
drivers/net/wireless/ath/ath10k/qmi_svc_v01.h line 15
Quoted 10 lines
drivers/net/wireless/ath/ath10k/qmi_svc_v01.h new file +10
-0+* copyright notice and this permission notice appear in all copies. +* +* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/
SPDX license header please.
[..]
drivers/net/wireless/ath/ath10k/qmi_svc_v01.h line 346
Quoted 4 lines
drivers/net/wireless/ath/ath10k/qmi_svc_v01.h new file +4
-0+struct wlfw_bdf_download_req_msg_v01 { +u8 valid; +u8 file_id_valid; +enum wlfw_cal_temp_id_enum_v01 file_id;
I would prefer that we replace these enums with a fixed size data type, and remove the INT_MIN/INT_MAX hack that tricks the compiler into giving the enum a particular size.
drivers/net/wireless/ath/ath10k/qmi_svc_v01.h line 358
Quoted 12 lines
drivers/net/wireless/ath/ath10k/qmi_svc_v01.h new file +12
-0+u8 total_size_valid; +u32 total_size; +u8 seg_id_valid; +u32 seg_id; +u8 data_valid; +u32 data_len; +u8 data[QMI_WLFW_MAX_DATA_SIZE_V01 ]; +u8 end_valid; +u8 end; +u8 bdf_type_valid; +u8 bdf_type; +};
Regards,
Bjorn
Quoted 14 lines · Bjorn Andersson
Quoted 14 lines
new file mode 100644
index 0000000..5857c0cdrivers/net/wireless/ath/ath10k/qmi_svc_v01.c new file +9
-0@@ -0,0 +1,2323 @@ +/* +* Copyright (c) 2018 The Linux Foundation. All rights reserved. +* +* Permission to use, copy, modify, and/or distribute this software for any +* purpose with or without fee is hereby granted, provided that the above +* copyright notice and this permission notice appear in all copies. +* +* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
Quoted 8 lines
drivers/net/wireless/ath/ath10k/qmi_svc_v01.c line 15
Quoted 6 lines
drivers/net/wireless/ath/ath10k/qmi_svc_v01.c new file +6
-0+* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ Please use SPDX license header.
As ath10k does not use SPDX yet so for consistency I would like to use the old style license text still and later switch the whole ath10k to use SPDX in one go.
Signature · 1 line
Kalle Valo