Linux Audio

Check our new training course

Loading...
v6.2
   1// SPDX-License-Identifier: ISC
   2/*
   3 * Copyright (c) 2018 The Linux Foundation. All rights reserved.
   4 */
   5
   6#include <linux/soc/qcom/qmi.h>
   7#include <linux/types.h>
   8#include "qmi_wlfw_v01.h"
   9
  10static const struct qmi_elem_info wlfw_ce_tgt_pipe_cfg_s_v01_ei[] = {
  11	{
  12		.data_type      = QMI_UNSIGNED_4_BYTE,
  13		.elem_len       = 1,
  14		.elem_size      = sizeof(u32),
  15		.array_type     = NO_ARRAY,
  16		.tlv_type       = 0,
  17		.offset         = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01,
  18					   pipe_num),
  19	},
  20	{
  21		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
  22		.elem_len       = 1,
  23		.elem_size      = sizeof(enum wlfw_pipedir_enum_v01),
  24		.array_type     = NO_ARRAY,
  25		.tlv_type       = 0,
  26		.offset         = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01,
  27					   pipe_dir),
  28	},
  29	{
  30		.data_type      = QMI_UNSIGNED_4_BYTE,
  31		.elem_len       = 1,
  32		.elem_size      = sizeof(u32),
  33		.array_type     = NO_ARRAY,
  34		.tlv_type       = 0,
  35		.offset         = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01,
  36					   nentries),
  37	},
  38	{
  39		.data_type      = QMI_UNSIGNED_4_BYTE,
  40		.elem_len       = 1,
  41		.elem_size      = sizeof(u32),
  42		.array_type     = NO_ARRAY,
  43		.tlv_type       = 0,
  44		.offset         = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01,
  45					   nbytes_max),
  46	},
  47	{
  48		.data_type      = QMI_UNSIGNED_4_BYTE,
  49		.elem_len       = 1,
  50		.elem_size      = sizeof(u32),
  51		.array_type     = NO_ARRAY,
  52		.tlv_type       = 0,
  53		.offset         = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01,
  54					   flags),
  55	},
  56	{}
  57};
  58
  59static const struct qmi_elem_info wlfw_ce_svc_pipe_cfg_s_v01_ei[] = {
  60	{
  61		.data_type      = QMI_UNSIGNED_4_BYTE,
  62		.elem_len       = 1,
  63		.elem_size      = sizeof(u32),
  64		.array_type     = NO_ARRAY,
  65		.tlv_type       = 0,
  66		.offset         = offsetof(struct wlfw_ce_svc_pipe_cfg_s_v01,
  67					   service_id),
  68	},
  69	{
  70		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
  71		.elem_len       = 1,
  72		.elem_size      = sizeof(enum wlfw_pipedir_enum_v01),
  73		.array_type     = NO_ARRAY,
  74		.tlv_type       = 0,
  75		.offset         = offsetof(struct wlfw_ce_svc_pipe_cfg_s_v01,
  76					   pipe_dir),
  77	},
  78	{
  79		.data_type      = QMI_UNSIGNED_4_BYTE,
  80		.elem_len       = 1,
  81		.elem_size      = sizeof(u32),
  82		.array_type     = NO_ARRAY,
  83		.tlv_type       = 0,
  84		.offset         = offsetof(struct wlfw_ce_svc_pipe_cfg_s_v01,
  85					   pipe_num),
  86	},
  87	{}
  88};
  89
  90static const struct qmi_elem_info wlfw_shadow_reg_cfg_s_v01_ei[] = {
  91	{
  92		.data_type      = QMI_UNSIGNED_2_BYTE,
  93		.elem_len       = 1,
  94		.elem_size      = sizeof(u16),
  95		.array_type     = NO_ARRAY,
  96		.tlv_type       = 0,
  97		.offset         = offsetof(struct wlfw_shadow_reg_cfg_s_v01,
  98					   id),
  99	},
 100	{
 101		.data_type      = QMI_UNSIGNED_2_BYTE,
 102		.elem_len       = 1,
 103		.elem_size      = sizeof(u16),
 104		.array_type     = NO_ARRAY,
 105		.tlv_type       = 0,
 106		.offset         = offsetof(struct wlfw_shadow_reg_cfg_s_v01,
 107					   offset),
 108	},
 109	{}
 110};
 111
 112static const struct qmi_elem_info wlfw_shadow_reg_v2_cfg_s_v01_ei[] = {
 113	{
 114		.data_type      = QMI_UNSIGNED_4_BYTE,
 115		.elem_len       = 1,
 116		.elem_size      = sizeof(u32),
 117		.array_type     = NO_ARRAY,
 118		.tlv_type       = 0,
 119		.offset         = offsetof(struct wlfw_shadow_reg_v2_cfg_s_v01,
 120					   addr),
 121	},
 122	{}
 123};
 124
 125static const struct qmi_elem_info wlfw_memory_region_info_s_v01_ei[] = {
 126	{
 127		.data_type      = QMI_UNSIGNED_8_BYTE,
 128		.elem_len       = 1,
 129		.elem_size      = sizeof(u64),
 130		.array_type     = NO_ARRAY,
 131		.tlv_type       = 0,
 132		.offset         = offsetof(struct wlfw_memory_region_info_s_v01,
 133					   region_addr),
 134	},
 135	{
 136		.data_type      = QMI_UNSIGNED_4_BYTE,
 137		.elem_len       = 1,
 138		.elem_size      = sizeof(u32),
 139		.array_type     = NO_ARRAY,
 140		.tlv_type       = 0,
 141		.offset         = offsetof(struct wlfw_memory_region_info_s_v01,
 142					   size),
 143	},
 144	{
 145		.data_type      = QMI_UNSIGNED_1_BYTE,
 146		.elem_len       = 1,
 147		.elem_size      = sizeof(u8),
 148		.array_type     = NO_ARRAY,
 149		.tlv_type       = 0,
 150		.offset         = offsetof(struct wlfw_memory_region_info_s_v01,
 151					   secure_flag),
 152	},
 153	{}
 154};
 155
 156static const struct qmi_elem_info wlfw_mem_cfg_s_v01_ei[] = {
 157	{
 158		.data_type      = QMI_UNSIGNED_8_BYTE,
 159		.elem_len       = 1,
 160		.elem_size      = sizeof(u64),
 161		.array_type     = NO_ARRAY,
 162		.tlv_type       = 0,
 163		.offset         = offsetof(struct wlfw_mem_cfg_s_v01,
 164					   offset),
 165	},
 166	{
 167		.data_type      = QMI_UNSIGNED_4_BYTE,
 168		.elem_len       = 1,
 169		.elem_size      = sizeof(u32),
 170		.array_type     = NO_ARRAY,
 171		.tlv_type       = 0,
 172		.offset         = offsetof(struct wlfw_mem_cfg_s_v01,
 173					   size),
 174	},
 175	{
 176		.data_type      = QMI_UNSIGNED_1_BYTE,
 177		.elem_len       = 1,
 178		.elem_size      = sizeof(u8),
 179		.array_type     = NO_ARRAY,
 180		.tlv_type       = 0,
 181		.offset         = offsetof(struct wlfw_mem_cfg_s_v01,
 182					   secure_flag),
 183	},
 184	{}
 185};
 186
 187static const struct qmi_elem_info wlfw_mem_seg_s_v01_ei[] = {
 188	{
 189		.data_type      = QMI_UNSIGNED_4_BYTE,
 190		.elem_len       = 1,
 191		.elem_size      = sizeof(u32),
 192		.array_type     = NO_ARRAY,
 193		.tlv_type       = 0,
 194		.offset         = offsetof(struct wlfw_mem_seg_s_v01,
 195					   size),
 196	},
 197	{
 198		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
 199		.elem_len       = 1,
 200		.elem_size      = sizeof(enum wlfw_mem_type_enum_v01),
 201		.array_type     = NO_ARRAY,
 202		.tlv_type       = 0,
 203		.offset         = offsetof(struct wlfw_mem_seg_s_v01,
 204					   type),
 205	},
 206	{
 207		.data_type      = QMI_DATA_LEN,
 208		.elem_len       = 1,
 209		.elem_size      = sizeof(u8),
 210		.array_type     = NO_ARRAY,
 211		.tlv_type       = 0,
 212		.offset         = offsetof(struct wlfw_mem_seg_s_v01,
 213					   mem_cfg_len),
 214	},
 215	{
 216		.data_type      = QMI_STRUCT,
 217		.elem_len       = QMI_WLFW_MAX_NUM_MEM_CFG_V01,
 218		.elem_size      = sizeof(struct wlfw_mem_cfg_s_v01),
 219		.array_type       = VAR_LEN_ARRAY,
 220		.tlv_type       = 0,
 221		.offset         = offsetof(struct wlfw_mem_seg_s_v01,
 222					   mem_cfg),
 223		.ei_array      = wlfw_mem_cfg_s_v01_ei,
 224	},
 225	{}
 226};
 227
 228static const struct qmi_elem_info wlfw_mem_seg_resp_s_v01_ei[] = {
 229	{
 230		.data_type      = QMI_UNSIGNED_8_BYTE,
 231		.elem_len       = 1,
 232		.elem_size      = sizeof(u64),
 233		.array_type     = NO_ARRAY,
 234		.tlv_type       = 0,
 235		.offset         = offsetof(struct wlfw_mem_seg_resp_s_v01,
 236					   addr),
 237	},
 238	{
 239		.data_type      = QMI_UNSIGNED_4_BYTE,
 240		.elem_len       = 1,
 241		.elem_size      = sizeof(u32),
 242		.array_type     = NO_ARRAY,
 243		.tlv_type       = 0,
 244		.offset         = offsetof(struct wlfw_mem_seg_resp_s_v01,
 245					   size),
 246	},
 247	{
 248		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
 249		.elem_len       = 1,
 250		.elem_size      = sizeof(enum wlfw_mem_type_enum_v01),
 251		.array_type     = NO_ARRAY,
 252		.tlv_type       = 0,
 253		.offset         = offsetof(struct wlfw_mem_seg_resp_s_v01,
 254					   type),
 255	},
 256	{}
 257};
 258
 259static const struct qmi_elem_info wlfw_rf_chip_info_s_v01_ei[] = {
 260	{
 261		.data_type      = QMI_UNSIGNED_4_BYTE,
 262		.elem_len       = 1,
 263		.elem_size      = sizeof(u32),
 264		.array_type     = NO_ARRAY,
 265		.tlv_type       = 0,
 266		.offset         = offsetof(struct wlfw_rf_chip_info_s_v01,
 267					   chip_id),
 268	},
 269	{
 270		.data_type      = QMI_UNSIGNED_4_BYTE,
 271		.elem_len       = 1,
 272		.elem_size      = sizeof(u32),
 273		.array_type     = NO_ARRAY,
 274		.tlv_type       = 0,
 275		.offset         = offsetof(struct wlfw_rf_chip_info_s_v01,
 276					   chip_family),
 277	},
 278	{}
 279};
 280
 281static const struct qmi_elem_info wlfw_rf_board_info_s_v01_ei[] = {
 282	{
 283		.data_type      = QMI_UNSIGNED_4_BYTE,
 284		.elem_len       = 1,
 285		.elem_size      = sizeof(u32),
 286		.array_type     = NO_ARRAY,
 287		.tlv_type       = 0,
 288		.offset         = offsetof(struct wlfw_rf_board_info_s_v01,
 289					   board_id),
 290	},
 291	{}
 292};
 293
 294static const struct qmi_elem_info wlfw_soc_info_s_v01_ei[] = {
 295	{
 296		.data_type      = QMI_UNSIGNED_4_BYTE,
 297		.elem_len       = 1,
 298		.elem_size      = sizeof(u32),
 299		.array_type     = NO_ARRAY,
 300		.tlv_type       = 0,
 301		.offset         = offsetof(struct wlfw_soc_info_s_v01,
 302					   soc_id),
 303	},
 304	{}
 305};
 306
 307static const struct qmi_elem_info wlfw_fw_version_info_s_v01_ei[] = {
 308	{
 309		.data_type      = QMI_UNSIGNED_4_BYTE,
 310		.elem_len       = 1,
 311		.elem_size      = sizeof(u32),
 312		.array_type     = NO_ARRAY,
 313		.tlv_type       = 0,
 314		.offset         = offsetof(struct wlfw_fw_version_info_s_v01,
 315					   fw_version),
 316	},
 317	{
 318		.data_type      = QMI_STRING,
 319		.elem_len       = QMI_WLFW_MAX_TIMESTAMP_LEN_V01 + 1,
 320		.elem_size      = sizeof(char),
 321		.array_type     = NO_ARRAY,
 322		.tlv_type       = 0,
 323		.offset         = offsetof(struct wlfw_fw_version_info_s_v01,
 324					   fw_build_timestamp),
 325	},
 326	{}
 327};
 328
 329const struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[] = {
 330	{
 331		.data_type      = QMI_OPT_FLAG,
 332		.elem_len       = 1,
 333		.elem_size      = sizeof(u8),
 334		.array_type     = NO_ARRAY,
 335		.tlv_type       = 0x10,
 336		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 337					   fw_ready_enable_valid),
 338	},
 339	{
 340		.data_type      = QMI_UNSIGNED_1_BYTE,
 341		.elem_len       = 1,
 342		.elem_size      = sizeof(u8),
 343		.array_type     = NO_ARRAY,
 344		.tlv_type       = 0x10,
 345		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 346					   fw_ready_enable),
 347	},
 348	{
 349		.data_type      = QMI_OPT_FLAG,
 350		.elem_len       = 1,
 351		.elem_size      = sizeof(u8),
 352		.array_type     = NO_ARRAY,
 353		.tlv_type       = 0x11,
 354		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 355					   initiate_cal_download_enable_valid),
 356	},
 357	{
 358		.data_type      = QMI_UNSIGNED_1_BYTE,
 359		.elem_len       = 1,
 360		.elem_size      = sizeof(u8),
 361		.array_type     = NO_ARRAY,
 362		.tlv_type       = 0x11,
 363		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 364					   initiate_cal_download_enable),
 365	},
 366	{
 367		.data_type      = QMI_OPT_FLAG,
 368		.elem_len       = 1,
 369		.elem_size      = sizeof(u8),
 370		.array_type     = NO_ARRAY,
 371		.tlv_type       = 0x12,
 372		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 373					   initiate_cal_update_enable_valid),
 374	},
 375	{
 376		.data_type      = QMI_UNSIGNED_1_BYTE,
 377		.elem_len       = 1,
 378		.elem_size      = sizeof(u8),
 379		.array_type     = NO_ARRAY,
 380		.tlv_type       = 0x12,
 381		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 382					   initiate_cal_update_enable),
 383	},
 384	{
 385		.data_type      = QMI_OPT_FLAG,
 386		.elem_len       = 1,
 387		.elem_size      = sizeof(u8),
 388		.array_type     = NO_ARRAY,
 389		.tlv_type       = 0x13,
 390		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 391					   msa_ready_enable_valid),
 392	},
 393	{
 394		.data_type      = QMI_UNSIGNED_1_BYTE,
 395		.elem_len       = 1,
 396		.elem_size      = sizeof(u8),
 397		.array_type     = NO_ARRAY,
 398		.tlv_type       = 0x13,
 399		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 400					   msa_ready_enable),
 401	},
 402	{
 403		.data_type      = QMI_OPT_FLAG,
 404		.elem_len       = 1,
 405		.elem_size      = sizeof(u8),
 406		.array_type     = NO_ARRAY,
 407		.tlv_type       = 0x14,
 408		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 409					   pin_connect_result_enable_valid),
 410	},
 411	{
 412		.data_type      = QMI_UNSIGNED_1_BYTE,
 413		.elem_len       = 1,
 414		.elem_size      = sizeof(u8),
 415		.array_type     = NO_ARRAY,
 416		.tlv_type       = 0x14,
 417		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 418					   pin_connect_result_enable),
 419	},
 420	{
 421		.data_type      = QMI_OPT_FLAG,
 422		.elem_len       = 1,
 423		.elem_size      = sizeof(u8),
 424		.array_type     = NO_ARRAY,
 425		.tlv_type       = 0x15,
 426		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 427					   client_id_valid),
 428	},
 429	{
 430		.data_type      = QMI_UNSIGNED_4_BYTE,
 431		.elem_len       = 1,
 432		.elem_size      = sizeof(u32),
 433		.array_type     = NO_ARRAY,
 434		.tlv_type       = 0x15,
 435		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 436					   client_id),
 437	},
 438	{
 439		.data_type      = QMI_OPT_FLAG,
 440		.elem_len       = 1,
 441		.elem_size      = sizeof(u8),
 442		.array_type     = NO_ARRAY,
 443		.tlv_type       = 0x16,
 444		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 445					   request_mem_enable_valid),
 446	},
 447	{
 448		.data_type      = QMI_UNSIGNED_1_BYTE,
 449		.elem_len       = 1,
 450		.elem_size      = sizeof(u8),
 451		.array_type     = NO_ARRAY,
 452		.tlv_type       = 0x16,
 453		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 454					   request_mem_enable),
 455	},
 456	{
 457		.data_type      = QMI_OPT_FLAG,
 458		.elem_len       = 1,
 459		.elem_size      = sizeof(u8),
 460		.array_type     = NO_ARRAY,
 461		.tlv_type       = 0x17,
 462		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 463					   mem_ready_enable_valid),
 464	},
 465	{
 466		.data_type      = QMI_UNSIGNED_1_BYTE,
 467		.elem_len       = 1,
 468		.elem_size      = sizeof(u8),
 469		.array_type     = NO_ARRAY,
 470		.tlv_type       = 0x17,
 471		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 472					   mem_ready_enable),
 473	},
 474	{
 475		.data_type      = QMI_OPT_FLAG,
 476		.elem_len       = 1,
 477		.elem_size      = sizeof(u8),
 478		.array_type     = NO_ARRAY,
 479		.tlv_type       = 0x18,
 480		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 481					   fw_init_done_enable_valid),
 482	},
 483	{
 484		.data_type      = QMI_UNSIGNED_1_BYTE,
 485		.elem_len       = 1,
 486		.elem_size      = sizeof(u8),
 487		.array_type     = NO_ARRAY,
 488		.tlv_type       = 0x18,
 489		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 490					   fw_init_done_enable),
 491	},
 492	{
 493		.data_type      = QMI_OPT_FLAG,
 494		.elem_len       = 1,
 495		.elem_size      = sizeof(u8),
 496		.array_type     = NO_ARRAY,
 497		.tlv_type       = 0x19,
 498		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 499					   rejuvenate_enable_valid),
 500	},
 501	{
 502		.data_type      = QMI_UNSIGNED_4_BYTE,
 503		.elem_len       = 1,
 504		.elem_size      = sizeof(u32),
 505		.array_type     = NO_ARRAY,
 506		.tlv_type       = 0x19,
 507		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 508					   rejuvenate_enable),
 509	},
 510	{
 511		.data_type      = QMI_OPT_FLAG,
 512		.elem_len       = 1,
 513		.elem_size      = sizeof(u8),
 514		.array_type     = NO_ARRAY,
 515		.tlv_type       = 0x1A,
 516		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 517					   xo_cal_enable_valid),
 518	},
 519	{
 520		.data_type      = QMI_UNSIGNED_1_BYTE,
 521		.elem_len       = 1,
 522		.elem_size      = sizeof(u8),
 523		.array_type     = NO_ARRAY,
 524		.tlv_type       = 0x1A,
 525		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 526					   xo_cal_enable),
 527	},
 528	{}
 529};
 530
 531const struct qmi_elem_info wlfw_ind_register_resp_msg_v01_ei[] = {
 532	{
 533		.data_type      = QMI_STRUCT,
 534		.elem_len       = 1,
 535		.elem_size      = sizeof(struct qmi_response_type_v01),
 536		.array_type     = NO_ARRAY,
 537		.tlv_type       = 0x02,
 538		.offset         = offsetof(struct wlfw_ind_register_resp_msg_v01,
 539					   resp),
 540		.ei_array      = qmi_response_type_v01_ei,
 541	},
 542	{
 543		.data_type      = QMI_OPT_FLAG,
 544		.elem_len       = 1,
 545		.elem_size      = sizeof(u8),
 546		.array_type     = NO_ARRAY,
 547		.tlv_type       = 0x10,
 548		.offset         = offsetof(struct wlfw_ind_register_resp_msg_v01,
 549					   fw_status_valid),
 550	},
 551	{
 552		.data_type      = QMI_UNSIGNED_8_BYTE,
 553		.elem_len       = 1,
 554		.elem_size      = sizeof(u64),
 555		.array_type     = NO_ARRAY,
 556		.tlv_type       = 0x10,
 557		.offset         = offsetof(struct wlfw_ind_register_resp_msg_v01,
 558					   fw_status),
 559	},
 560	{}
 561};
 562
 563const struct qmi_elem_info wlfw_fw_ready_ind_msg_v01_ei[] = {
 564	{}
 565};
 566
 567const struct qmi_elem_info wlfw_msa_ready_ind_msg_v01_ei[] = {
 568	{}
 569};
 570
 571const struct qmi_elem_info wlfw_pin_connect_result_ind_msg_v01_ei[] = {
 572	{
 573		.data_type      = QMI_OPT_FLAG,
 574		.elem_len       = 1,
 575		.elem_size      = sizeof(u8),
 576		.array_type     = NO_ARRAY,
 577		.tlv_type       = 0x10,
 578		.offset         = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
 579					   pwr_pin_result_valid),
 580	},
 581	{
 582		.data_type      = QMI_UNSIGNED_4_BYTE,
 583		.elem_len       = 1,
 584		.elem_size      = sizeof(u32),
 585		.array_type     = NO_ARRAY,
 586		.tlv_type       = 0x10,
 587		.offset         = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
 588					   pwr_pin_result),
 589	},
 590	{
 591		.data_type      = QMI_OPT_FLAG,
 592		.elem_len       = 1,
 593		.elem_size      = sizeof(u8),
 594		.array_type     = NO_ARRAY,
 595		.tlv_type       = 0x11,
 596		.offset         = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
 597					   phy_io_pin_result_valid),
 598	},
 599	{
 600		.data_type      = QMI_UNSIGNED_4_BYTE,
 601		.elem_len       = 1,
 602		.elem_size      = sizeof(u32),
 603		.array_type     = NO_ARRAY,
 604		.tlv_type       = 0x11,
 605		.offset         = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
 606					   phy_io_pin_result),
 607	},
 608	{
 609		.data_type      = QMI_OPT_FLAG,
 610		.elem_len       = 1,
 611		.elem_size      = sizeof(u8),
 612		.array_type     = NO_ARRAY,
 613		.tlv_type       = 0x12,
 614		.offset         = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
 615					   rf_pin_result_valid),
 616	},
 617	{
 618		.data_type      = QMI_UNSIGNED_4_BYTE,
 619		.elem_len       = 1,
 620		.elem_size      = sizeof(u32),
 621		.array_type     = NO_ARRAY,
 622		.tlv_type       = 0x12,
 623		.offset         = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
 624					   rf_pin_result),
 625	},
 626	{}
 627};
 628
 629const struct qmi_elem_info wlfw_wlan_mode_req_msg_v01_ei[] = {
 630	{
 631		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
 632		.elem_len       = 1,
 633		.elem_size      = sizeof(enum wlfw_driver_mode_enum_v01),
 634		.array_type     = NO_ARRAY,
 635		.tlv_type       = 0x01,
 636		.offset         = offsetof(struct wlfw_wlan_mode_req_msg_v01,
 637					   mode),
 638	},
 639	{
 640		.data_type      = QMI_OPT_FLAG,
 641		.elem_len       = 1,
 642		.elem_size      = sizeof(u8),
 643		.array_type     = NO_ARRAY,
 644		.tlv_type       = 0x10,
 645		.offset         = offsetof(struct wlfw_wlan_mode_req_msg_v01,
 646					   hw_debug_valid),
 647	},
 648	{
 649		.data_type      = QMI_UNSIGNED_1_BYTE,
 650		.elem_len       = 1,
 651		.elem_size      = sizeof(u8),
 652		.array_type     = NO_ARRAY,
 653		.tlv_type       = 0x10,
 654		.offset         = offsetof(struct wlfw_wlan_mode_req_msg_v01,
 655					   hw_debug),
 656	},
 657	{}
 658};
 659
 660const struct qmi_elem_info wlfw_wlan_mode_resp_msg_v01_ei[] = {
 661	{
 662		.data_type      = QMI_STRUCT,
 663		.elem_len       = 1,
 664		.elem_size      = sizeof(struct qmi_response_type_v01),
 665		.array_type     = NO_ARRAY,
 666		.tlv_type       = 0x02,
 667		.offset         = offsetof(struct wlfw_wlan_mode_resp_msg_v01,
 668					   resp),
 669		.ei_array      = qmi_response_type_v01_ei,
 670	},
 671	{}
 672};
 673
 674const struct qmi_elem_info wlfw_wlan_cfg_req_msg_v01_ei[] = {
 675	{
 676		.data_type      = QMI_OPT_FLAG,
 677		.elem_len       = 1,
 678		.elem_size      = sizeof(u8),
 679		.array_type     = NO_ARRAY,
 680		.tlv_type       = 0x10,
 681		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 682					   host_version_valid),
 683	},
 684	{
 685		.data_type      = QMI_STRING,
 686		.elem_len       = QMI_WLFW_MAX_STR_LEN_V01 + 1,
 687		.elem_size      = sizeof(char),
 688		.array_type     = NO_ARRAY,
 689		.tlv_type       = 0x10,
 690		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 691					   host_version),
 692	},
 693	{
 694		.data_type      = QMI_OPT_FLAG,
 695		.elem_len       = 1,
 696		.elem_size      = sizeof(u8),
 697		.array_type     = NO_ARRAY,
 698		.tlv_type       = 0x11,
 699		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 700					   tgt_cfg_valid),
 701	},
 702	{
 703		.data_type      = QMI_DATA_LEN,
 704		.elem_len       = 1,
 705		.elem_size      = sizeof(u8),
 706		.array_type     = NO_ARRAY,
 707		.tlv_type       = 0x11,
 708		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 709					   tgt_cfg_len),
 710	},
 711	{
 712		.data_type      = QMI_STRUCT,
 713		.elem_len       = QMI_WLFW_MAX_NUM_CE_V01,
 714		.elem_size      = sizeof(struct wlfw_ce_tgt_pipe_cfg_s_v01),
 715		.array_type       = VAR_LEN_ARRAY,
 716		.tlv_type       = 0x11,
 717		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 718					   tgt_cfg),
 719		.ei_array      = wlfw_ce_tgt_pipe_cfg_s_v01_ei,
 720	},
 721	{
 722		.data_type      = QMI_OPT_FLAG,
 723		.elem_len       = 1,
 724		.elem_size      = sizeof(u8),
 725		.array_type     = NO_ARRAY,
 726		.tlv_type       = 0x12,
 727		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 728					   svc_cfg_valid),
 729	},
 730	{
 731		.data_type      = QMI_DATA_LEN,
 732		.elem_len       = 1,
 733		.elem_size      = sizeof(u8),
 734		.array_type     = NO_ARRAY,
 735		.tlv_type       = 0x12,
 736		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 737					   svc_cfg_len),
 738	},
 739	{
 740		.data_type      = QMI_STRUCT,
 741		.elem_len       = QMI_WLFW_MAX_NUM_SVC_V01,
 742		.elem_size      = sizeof(struct wlfw_ce_svc_pipe_cfg_s_v01),
 743		.array_type       = VAR_LEN_ARRAY,
 744		.tlv_type       = 0x12,
 745		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 746					   svc_cfg),
 747		.ei_array      = wlfw_ce_svc_pipe_cfg_s_v01_ei,
 748	},
 749	{
 750		.data_type      = QMI_OPT_FLAG,
 751		.elem_len       = 1,
 752		.elem_size      = sizeof(u8),
 753		.array_type     = NO_ARRAY,
 754		.tlv_type       = 0x13,
 755		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 756					   shadow_reg_valid),
 757	},
 758	{
 759		.data_type      = QMI_DATA_LEN,
 760		.elem_len       = 1,
 761		.elem_size      = sizeof(u8),
 762		.array_type     = NO_ARRAY,
 763		.tlv_type       = 0x13,
 764		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 765					   shadow_reg_len),
 766	},
 767	{
 768		.data_type      = QMI_STRUCT,
 769		.elem_len       = QMI_WLFW_MAX_NUM_SHADOW_REG_V01,
 770		.elem_size      = sizeof(struct wlfw_shadow_reg_cfg_s_v01),
 771		.array_type       = VAR_LEN_ARRAY,
 772		.tlv_type       = 0x13,
 773		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 774					   shadow_reg),
 775		.ei_array      = wlfw_shadow_reg_cfg_s_v01_ei,
 776	},
 777	{
 778		.data_type      = QMI_OPT_FLAG,
 779		.elem_len       = 1,
 780		.elem_size      = sizeof(u8),
 781		.array_type     = NO_ARRAY,
 782		.tlv_type       = 0x14,
 783		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 784					   shadow_reg_v2_valid),
 785	},
 786	{
 787		.data_type      = QMI_DATA_LEN,
 788		.elem_len       = 1,
 789		.elem_size      = sizeof(u8),
 790		.array_type     = NO_ARRAY,
 791		.tlv_type       = 0x14,
 792		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 793					   shadow_reg_v2_len),
 794	},
 795	{
 796		.data_type      = QMI_STRUCT,
 797		.elem_len       = QMI_WLFW_MAX_SHADOW_REG_V2,
 798		.elem_size      = sizeof(struct wlfw_shadow_reg_v2_cfg_s_v01),
 799		.array_type       = VAR_LEN_ARRAY,
 800		.tlv_type       = 0x14,
 801		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 802					   shadow_reg_v2),
 803		.ei_array      = wlfw_shadow_reg_v2_cfg_s_v01_ei,
 804	},
 805	{}
 806};
 807
 808const struct qmi_elem_info wlfw_wlan_cfg_resp_msg_v01_ei[] = {
 809	{
 810		.data_type      = QMI_STRUCT,
 811		.elem_len       = 1,
 812		.elem_size      = sizeof(struct qmi_response_type_v01),
 813		.array_type     = NO_ARRAY,
 814		.tlv_type       = 0x02,
 815		.offset         = offsetof(struct wlfw_wlan_cfg_resp_msg_v01,
 816					   resp),
 817		.ei_array      = qmi_response_type_v01_ei,
 818	},
 819	{}
 820};
 821
 822const struct qmi_elem_info wlfw_cap_req_msg_v01_ei[] = {
 823	{}
 824};
 825
 826const struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[] = {
 827	{
 828		.data_type      = QMI_STRUCT,
 829		.elem_len       = 1,
 830		.elem_size      = sizeof(struct qmi_response_type_v01),
 831		.array_type     = NO_ARRAY,
 832		.tlv_type       = 0x02,
 833		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 834					   resp),
 835		.ei_array      = qmi_response_type_v01_ei,
 836	},
 837	{
 838		.data_type      = QMI_OPT_FLAG,
 839		.elem_len       = 1,
 840		.elem_size      = sizeof(u8),
 841		.array_type     = NO_ARRAY,
 842		.tlv_type       = 0x10,
 843		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 844					   chip_info_valid),
 845	},
 846	{
 847		.data_type      = QMI_STRUCT,
 848		.elem_len       = 1,
 849		.elem_size      = sizeof(struct wlfw_rf_chip_info_s_v01),
 850		.array_type     = NO_ARRAY,
 851		.tlv_type       = 0x10,
 852		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 853					   chip_info),
 854		.ei_array      = wlfw_rf_chip_info_s_v01_ei,
 855	},
 856	{
 857		.data_type      = QMI_OPT_FLAG,
 858		.elem_len       = 1,
 859		.elem_size      = sizeof(u8),
 860		.array_type     = NO_ARRAY,
 861		.tlv_type       = 0x11,
 862		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 863					   board_info_valid),
 864	},
 865	{
 866		.data_type      = QMI_STRUCT,
 867		.elem_len       = 1,
 868		.elem_size      = sizeof(struct wlfw_rf_board_info_s_v01),
 869		.array_type     = NO_ARRAY,
 870		.tlv_type       = 0x11,
 871		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 872					   board_info),
 873		.ei_array      = wlfw_rf_board_info_s_v01_ei,
 874	},
 875	{
 876		.data_type      = QMI_OPT_FLAG,
 877		.elem_len       = 1,
 878		.elem_size      = sizeof(u8),
 879		.array_type     = NO_ARRAY,
 880		.tlv_type       = 0x12,
 881		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 882					   soc_info_valid),
 883	},
 884	{
 885		.data_type      = QMI_STRUCT,
 886		.elem_len       = 1,
 887		.elem_size      = sizeof(struct wlfw_soc_info_s_v01),
 888		.array_type     = NO_ARRAY,
 889		.tlv_type       = 0x12,
 890		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 891					   soc_info),
 892		.ei_array      = wlfw_soc_info_s_v01_ei,
 893	},
 894	{
 895		.data_type      = QMI_OPT_FLAG,
 896		.elem_len       = 1,
 897		.elem_size      = sizeof(u8),
 898		.array_type     = NO_ARRAY,
 899		.tlv_type       = 0x13,
 900		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 901					   fw_version_info_valid),
 902	},
 903	{
 904		.data_type      = QMI_STRUCT,
 905		.elem_len       = 1,
 906		.elem_size      = sizeof(struct wlfw_fw_version_info_s_v01),
 907		.array_type     = NO_ARRAY,
 908		.tlv_type       = 0x13,
 909		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 910					   fw_version_info),
 911		.ei_array      = wlfw_fw_version_info_s_v01_ei,
 912	},
 913	{
 914		.data_type      = QMI_OPT_FLAG,
 915		.elem_len       = 1,
 916		.elem_size      = sizeof(u8),
 917		.array_type     = NO_ARRAY,
 918		.tlv_type       = 0x14,
 919		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 920					   fw_build_id_valid),
 921	},
 922	{
 923		.data_type      = QMI_STRING,
 924		.elem_len       = QMI_WLFW_MAX_BUILD_ID_LEN_V01 + 1,
 925		.elem_size      = sizeof(char),
 926		.array_type     = NO_ARRAY,
 927		.tlv_type       = 0x14,
 928		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 929					   fw_build_id),
 930	},
 931	{
 932		.data_type      = QMI_OPT_FLAG,
 933		.elem_len       = 1,
 934		.elem_size      = sizeof(u8),
 935		.array_type     = NO_ARRAY,
 936		.tlv_type       = 0x15,
 937		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 938					   num_macs_valid),
 939	},
 940	{
 941		.data_type      = QMI_UNSIGNED_1_BYTE,
 942		.elem_len       = 1,
 943		.elem_size      = sizeof(u8),
 944		.array_type     = NO_ARRAY,
 945		.tlv_type       = 0x15,
 946		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 947					   num_macs),
 948	},
 949	{}
 950};
 951
 952const struct qmi_elem_info wlfw_bdf_download_req_msg_v01_ei[] = {
 953	{
 954		.data_type      = QMI_UNSIGNED_1_BYTE,
 955		.elem_len       = 1,
 956		.elem_size      = sizeof(u8),
 957		.array_type     = NO_ARRAY,
 958		.tlv_type       = 0x01,
 959		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
 960					   valid),
 961	},
 962	{
 963		.data_type      = QMI_OPT_FLAG,
 964		.elem_len       = 1,
 965		.elem_size      = sizeof(u8),
 966		.array_type     = NO_ARRAY,
 967		.tlv_type       = 0x10,
 968		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
 969					   file_id_valid),
 970	},
 971	{
 972		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
 973		.elem_len       = 1,
 974		.elem_size      = sizeof(enum wlfw_cal_temp_id_enum_v01),
 975		.array_type     = NO_ARRAY,
 976		.tlv_type       = 0x10,
 977		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
 978					   file_id),
 979	},
 980	{
 981		.data_type      = QMI_OPT_FLAG,
 982		.elem_len       = 1,
 983		.elem_size      = sizeof(u8),
 984		.array_type     = NO_ARRAY,
 985		.tlv_type       = 0x11,
 986		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
 987					   total_size_valid),
 988	},
 989	{
 990		.data_type      = QMI_UNSIGNED_4_BYTE,
 991		.elem_len       = 1,
 992		.elem_size      = sizeof(u32),
 993		.array_type     = NO_ARRAY,
 994		.tlv_type       = 0x11,
 995		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
 996					   total_size),
 997	},
 998	{
 999		.data_type      = QMI_OPT_FLAG,
1000		.elem_len       = 1,
1001		.elem_size      = sizeof(u8),
1002		.array_type     = NO_ARRAY,
1003		.tlv_type       = 0x12,
1004		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
1005					   seg_id_valid),
1006	},
1007	{
1008		.data_type      = QMI_UNSIGNED_4_BYTE,
1009		.elem_len       = 1,
1010		.elem_size      = sizeof(u32),
1011		.array_type     = NO_ARRAY,
1012		.tlv_type       = 0x12,
1013		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
1014					   seg_id),
1015	},
1016	{
1017		.data_type      = QMI_OPT_FLAG,
1018		.elem_len       = 1,
1019		.elem_size      = sizeof(u8),
1020		.array_type     = NO_ARRAY,
1021		.tlv_type       = 0x13,
1022		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
1023					   data_valid),
1024	},
1025	{
1026		.data_type      = QMI_DATA_LEN,
1027		.elem_len       = 1,
1028		.elem_size      = sizeof(u16),
1029		.array_type     = NO_ARRAY,
1030		.tlv_type       = 0x13,
1031		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
1032					   data_len),
1033	},
1034	{
1035		.data_type      = QMI_UNSIGNED_1_BYTE,
1036		.elem_len       = QMI_WLFW_MAX_DATA_SIZE_V01,
1037		.elem_size      = sizeof(u8),
1038		.array_type       = VAR_LEN_ARRAY,
1039		.tlv_type       = 0x13,
1040		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
1041					   data),
1042	},
1043	{
1044		.data_type      = QMI_OPT_FLAG,
1045		.elem_len       = 1,
1046		.elem_size      = sizeof(u8),
1047		.array_type     = NO_ARRAY,
1048		.tlv_type       = 0x14,
1049		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
1050					   end_valid),
1051	},
1052	{
1053		.data_type      = QMI_UNSIGNED_1_BYTE,
1054		.elem_len       = 1,
1055		.elem_size      = sizeof(u8),
1056		.array_type     = NO_ARRAY,
1057		.tlv_type       = 0x14,
1058		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
1059					   end),
1060	},
1061	{
1062		.data_type      = QMI_OPT_FLAG,
1063		.elem_len       = 1,
1064		.elem_size      = sizeof(u8),
1065		.array_type     = NO_ARRAY,
1066		.tlv_type       = 0x15,
1067		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
1068					   bdf_type_valid),
1069	},
1070	{
1071		.data_type      = QMI_UNSIGNED_1_BYTE,
1072		.elem_len       = 1,
1073		.elem_size      = sizeof(u8),
1074		.array_type     = NO_ARRAY,
1075		.tlv_type       = 0x15,
1076		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
1077					   bdf_type),
1078	},
1079	{}
1080};
1081
1082const struct qmi_elem_info wlfw_bdf_download_resp_msg_v01_ei[] = {
1083	{
1084		.data_type      = QMI_STRUCT,
1085		.elem_len       = 1,
1086		.elem_size      = sizeof(struct qmi_response_type_v01),
1087		.array_type     = NO_ARRAY,
1088		.tlv_type       = 0x02,
1089		.offset         = offsetof(struct wlfw_bdf_download_resp_msg_v01,
1090					   resp),
1091		.ei_array      = qmi_response_type_v01_ei,
1092	},
1093	{}
1094};
1095
1096const struct qmi_elem_info wlfw_cal_report_req_msg_v01_ei[] = {
1097	{
1098		.data_type      = QMI_DATA_LEN,
1099		.elem_len       = 1,
1100		.elem_size      = sizeof(u8),
1101		.array_type     = NO_ARRAY,
1102		.tlv_type       = 0x01,
1103		.offset         = offsetof(struct wlfw_cal_report_req_msg_v01,
1104					   meta_data_len),
1105	},
1106	{
1107		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
1108		.elem_len       = QMI_WLFW_MAX_NUM_CAL_V01,
1109		.elem_size      = sizeof(enum wlfw_cal_temp_id_enum_v01),
1110		.array_type       = VAR_LEN_ARRAY,
1111		.tlv_type       = 0x01,
1112		.offset         = offsetof(struct wlfw_cal_report_req_msg_v01,
1113					   meta_data),
1114	},
1115	{
1116		.data_type      = QMI_OPT_FLAG,
1117		.elem_len       = 1,
1118		.elem_size      = sizeof(u8),
1119		.array_type     = NO_ARRAY,
1120		.tlv_type       = 0x10,
1121		.offset         = offsetof(struct wlfw_cal_report_req_msg_v01,
1122					   xo_cal_data_valid),
1123	},
1124	{
1125		.data_type      = QMI_UNSIGNED_1_BYTE,
1126		.elem_len       = 1,
1127		.elem_size      = sizeof(u8),
1128		.array_type     = NO_ARRAY,
1129		.tlv_type       = 0x10,
1130		.offset         = offsetof(struct wlfw_cal_report_req_msg_v01,
1131					   xo_cal_data),
1132	},
1133	{}
1134};
1135
1136const struct qmi_elem_info wlfw_cal_report_resp_msg_v01_ei[] = {
1137	{
1138		.data_type      = QMI_STRUCT,
1139		.elem_len       = 1,
1140		.elem_size      = sizeof(struct qmi_response_type_v01),
1141		.array_type     = NO_ARRAY,
1142		.tlv_type       = 0x02,
1143		.offset         = offsetof(struct wlfw_cal_report_resp_msg_v01,
1144					   resp),
1145		.ei_array      = qmi_response_type_v01_ei,
1146	},
1147	{}
1148};
1149
1150const struct qmi_elem_info wlfw_initiate_cal_download_ind_msg_v01_ei[] = {
1151	{
1152		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
1153		.elem_len       = 1,
1154		.elem_size      = sizeof(enum wlfw_cal_temp_id_enum_v01),
1155		.array_type     = NO_ARRAY,
1156		.tlv_type       = 0x01,
1157		.offset         = offsetof(struct wlfw_initiate_cal_download_ind_msg_v01,
1158					   cal_id),
1159	},
1160	{}
1161};
1162
1163const struct qmi_elem_info wlfw_cal_download_req_msg_v01_ei[] = {
1164	{
1165		.data_type      = QMI_UNSIGNED_1_BYTE,
1166		.elem_len       = 1,
1167		.elem_size      = sizeof(u8),
1168		.array_type     = NO_ARRAY,
1169		.tlv_type       = 0x01,
1170		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1171					   valid),
1172	},
1173	{
1174		.data_type      = QMI_OPT_FLAG,
1175		.elem_len       = 1,
1176		.elem_size      = sizeof(u8),
1177		.array_type     = NO_ARRAY,
1178		.tlv_type       = 0x10,
1179		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1180					   file_id_valid),
1181	},
1182	{
1183		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
1184		.elem_len       = 1,
1185		.elem_size      = sizeof(enum wlfw_cal_temp_id_enum_v01),
1186		.array_type     = NO_ARRAY,
1187		.tlv_type       = 0x10,
1188		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1189					   file_id),
1190	},
1191	{
1192		.data_type      = QMI_OPT_FLAG,
1193		.elem_len       = 1,
1194		.elem_size      = sizeof(u8),
1195		.array_type     = NO_ARRAY,
1196		.tlv_type       = 0x11,
1197		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1198					   total_size_valid),
1199	},
1200	{
1201		.data_type      = QMI_UNSIGNED_4_BYTE,
1202		.elem_len       = 1,
1203		.elem_size      = sizeof(u32),
1204		.array_type     = NO_ARRAY,
1205		.tlv_type       = 0x11,
1206		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1207					   total_size),
1208	},
1209	{
1210		.data_type      = QMI_OPT_FLAG,
1211		.elem_len       = 1,
1212		.elem_size      = sizeof(u8),
1213		.array_type     = NO_ARRAY,
1214		.tlv_type       = 0x12,
1215		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1216					   seg_id_valid),
1217	},
1218	{
1219		.data_type      = QMI_UNSIGNED_4_BYTE,
1220		.elem_len       = 1,
1221		.elem_size      = sizeof(u32),
1222		.array_type     = NO_ARRAY,
1223		.tlv_type       = 0x12,
1224		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1225					   seg_id),
1226	},
1227	{
1228		.data_type      = QMI_OPT_FLAG,
1229		.elem_len       = 1,
1230		.elem_size      = sizeof(u8),
1231		.array_type     = NO_ARRAY,
1232		.tlv_type       = 0x13,
1233		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1234					   data_valid),
1235	},
1236	{
1237		.data_type      = QMI_DATA_LEN,
1238		.elem_len       = 1,
1239		.elem_size      = sizeof(u16),
1240		.array_type     = NO_ARRAY,
1241		.tlv_type       = 0x13,
1242		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1243					   data_len),
1244	},
1245	{
1246		.data_type      = QMI_UNSIGNED_1_BYTE,
1247		.elem_len       = QMI_WLFW_MAX_DATA_SIZE_V01,
1248		.elem_size      = sizeof(u8),
1249		.array_type       = VAR_LEN_ARRAY,
1250		.tlv_type       = 0x13,
1251		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1252					   data),
1253	},
1254	{
1255		.data_type      = QMI_OPT_FLAG,
1256		.elem_len       = 1,
1257		.elem_size      = sizeof(u8),
1258		.array_type     = NO_ARRAY,
1259		.tlv_type       = 0x14,
1260		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1261					   end_valid),
1262	},
1263	{
1264		.data_type      = QMI_UNSIGNED_1_BYTE,
1265		.elem_len       = 1,
1266		.elem_size      = sizeof(u8),
1267		.array_type     = NO_ARRAY,
1268		.tlv_type       = 0x14,
1269		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1270					   end),
1271	},
1272	{}
1273};
1274
1275const struct qmi_elem_info wlfw_cal_download_resp_msg_v01_ei[] = {
1276	{
1277		.data_type      = QMI_STRUCT,
1278		.elem_len       = 1,
1279		.elem_size      = sizeof(struct qmi_response_type_v01),
1280		.array_type     = NO_ARRAY,
1281		.tlv_type       = 0x02,
1282		.offset         = offsetof(struct wlfw_cal_download_resp_msg_v01,
1283					   resp),
1284		.ei_array      = qmi_response_type_v01_ei,
1285	},
1286	{}
1287};
1288
1289const struct qmi_elem_info wlfw_initiate_cal_update_ind_msg_v01_ei[] = {
1290	{
1291		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
1292		.elem_len       = 1,
1293		.elem_size      = sizeof(enum wlfw_cal_temp_id_enum_v01),
1294		.array_type     = NO_ARRAY,
1295		.tlv_type       = 0x01,
1296		.offset         = offsetof(struct wlfw_initiate_cal_update_ind_msg_v01,
1297					   cal_id),
1298	},
1299	{
1300		.data_type      = QMI_UNSIGNED_4_BYTE,
1301		.elem_len       = 1,
1302		.elem_size      = sizeof(u32),
1303		.array_type     = NO_ARRAY,
1304		.tlv_type       = 0x02,
1305		.offset         = offsetof(struct wlfw_initiate_cal_update_ind_msg_v01,
1306					   total_size),
1307	},
1308	{}
1309};
1310
1311const struct qmi_elem_info wlfw_cal_update_req_msg_v01_ei[] = {
1312	{
1313		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
1314		.elem_len       = 1,
1315		.elem_size      = sizeof(enum wlfw_cal_temp_id_enum_v01),
1316		.array_type     = NO_ARRAY,
1317		.tlv_type       = 0x01,
1318		.offset         = offsetof(struct wlfw_cal_update_req_msg_v01,
1319					   cal_id),
1320	},
1321	{
1322		.data_type      = QMI_UNSIGNED_4_BYTE,
1323		.elem_len       = 1,
1324		.elem_size      = sizeof(u32),
1325		.array_type     = NO_ARRAY,
1326		.tlv_type       = 0x02,
1327		.offset         = offsetof(struct wlfw_cal_update_req_msg_v01,
1328					   seg_id),
1329	},
1330	{}
1331};
1332
1333const struct qmi_elem_info wlfw_cal_update_resp_msg_v01_ei[] = {
1334	{
1335		.data_type      = QMI_STRUCT,
1336		.elem_len       = 1,
1337		.elem_size      = sizeof(struct qmi_response_type_v01),
1338		.array_type     = NO_ARRAY,
1339		.tlv_type       = 0x02,
1340		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1341					   resp),
1342		.ei_array      = qmi_response_type_v01_ei,
1343	},
1344	{
1345		.data_type      = QMI_OPT_FLAG,
1346		.elem_len       = 1,
1347		.elem_size      = sizeof(u8),
1348		.array_type     = NO_ARRAY,
1349		.tlv_type       = 0x10,
1350		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1351					   file_id_valid),
1352	},
1353	{
1354		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
1355		.elem_len       = 1,
1356		.elem_size      = sizeof(enum wlfw_cal_temp_id_enum_v01),
1357		.array_type     = NO_ARRAY,
1358		.tlv_type       = 0x10,
1359		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1360					   file_id),
1361	},
1362	{
1363		.data_type      = QMI_OPT_FLAG,
1364		.elem_len       = 1,
1365		.elem_size      = sizeof(u8),
1366		.array_type     = NO_ARRAY,
1367		.tlv_type       = 0x11,
1368		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1369					   total_size_valid),
1370	},
1371	{
1372		.data_type      = QMI_UNSIGNED_4_BYTE,
1373		.elem_len       = 1,
1374		.elem_size      = sizeof(u32),
1375		.array_type     = NO_ARRAY,
1376		.tlv_type       = 0x11,
1377		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1378					   total_size),
1379	},
1380	{
1381		.data_type      = QMI_OPT_FLAG,
1382		.elem_len       = 1,
1383		.elem_size      = sizeof(u8),
1384		.array_type     = NO_ARRAY,
1385		.tlv_type       = 0x12,
1386		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1387					   seg_id_valid),
1388	},
1389	{
1390		.data_type      = QMI_UNSIGNED_4_BYTE,
1391		.elem_len       = 1,
1392		.elem_size      = sizeof(u32),
1393		.array_type     = NO_ARRAY,
1394		.tlv_type       = 0x12,
1395		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1396					   seg_id),
1397	},
1398	{
1399		.data_type      = QMI_OPT_FLAG,
1400		.elem_len       = 1,
1401		.elem_size      = sizeof(u8),
1402		.array_type     = NO_ARRAY,
1403		.tlv_type       = 0x13,
1404		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1405					   data_valid),
1406	},
1407	{
1408		.data_type      = QMI_DATA_LEN,
1409		.elem_len       = 1,
1410		.elem_size      = sizeof(u16),
1411		.array_type     = NO_ARRAY,
1412		.tlv_type       = 0x13,
1413		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1414					   data_len),
1415	},
1416	{
1417		.data_type      = QMI_UNSIGNED_1_BYTE,
1418		.elem_len       = QMI_WLFW_MAX_DATA_SIZE_V01,
1419		.elem_size      = sizeof(u8),
1420		.array_type       = VAR_LEN_ARRAY,
1421		.tlv_type       = 0x13,
1422		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1423					   data),
1424	},
1425	{
1426		.data_type      = QMI_OPT_FLAG,
1427		.elem_len       = 1,
1428		.elem_size      = sizeof(u8),
1429		.array_type     = NO_ARRAY,
1430		.tlv_type       = 0x14,
1431		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1432					   end_valid),
1433	},
1434	{
1435		.data_type      = QMI_UNSIGNED_1_BYTE,
1436		.elem_len       = 1,
1437		.elem_size      = sizeof(u8),
1438		.array_type     = NO_ARRAY,
1439		.tlv_type       = 0x14,
1440		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1441					   end),
1442	},
1443	{}
1444};
1445
1446const struct qmi_elem_info wlfw_msa_info_req_msg_v01_ei[] = {
1447	{
1448		.data_type      = QMI_UNSIGNED_8_BYTE,
1449		.elem_len       = 1,
1450		.elem_size      = sizeof(u64),
1451		.array_type     = NO_ARRAY,
1452		.tlv_type       = 0x01,
1453		.offset         = offsetof(struct wlfw_msa_info_req_msg_v01,
1454					   msa_addr),
1455	},
1456	{
1457		.data_type      = QMI_UNSIGNED_4_BYTE,
1458		.elem_len       = 1,
1459		.elem_size      = sizeof(u32),
1460		.array_type     = NO_ARRAY,
1461		.tlv_type       = 0x02,
1462		.offset         = offsetof(struct wlfw_msa_info_req_msg_v01,
1463					   size),
1464	},
1465	{}
1466};
1467
1468const struct qmi_elem_info wlfw_msa_info_resp_msg_v01_ei[] = {
1469	{
1470		.data_type      = QMI_STRUCT,
1471		.elem_len       = 1,
1472		.elem_size      = sizeof(struct qmi_response_type_v01),
1473		.array_type     = NO_ARRAY,
1474		.tlv_type       = 0x02,
1475		.offset         = offsetof(struct wlfw_msa_info_resp_msg_v01,
1476					   resp),
1477		.ei_array      = qmi_response_type_v01_ei,
1478	},
1479	{
1480		.data_type      = QMI_DATA_LEN,
1481		.elem_len       = 1,
1482		.elem_size      = sizeof(u8),
1483		.array_type     = NO_ARRAY,
1484		.tlv_type       = 0x03,
1485		.offset         = offsetof(struct wlfw_msa_info_resp_msg_v01,
1486					   mem_region_info_len),
1487	},
1488	{
1489		.data_type      = QMI_STRUCT,
1490		.elem_len       = QMI_WLFW_MAX_MEM_REG_V01,
1491		.elem_size      = sizeof(struct wlfw_memory_region_info_s_v01),
1492		.array_type       = VAR_LEN_ARRAY,
1493		.tlv_type       = 0x03,
1494		.offset         = offsetof(struct wlfw_msa_info_resp_msg_v01,
1495					   mem_region_info),
1496		.ei_array      = wlfw_memory_region_info_s_v01_ei,
1497	},
1498	{}
1499};
1500
1501const struct qmi_elem_info wlfw_msa_ready_req_msg_v01_ei[] = {
1502	{}
1503};
1504
1505const struct qmi_elem_info wlfw_msa_ready_resp_msg_v01_ei[] = {
1506	{
1507		.data_type      = QMI_STRUCT,
1508		.elem_len       = 1,
1509		.elem_size      = sizeof(struct qmi_response_type_v01),
1510		.array_type     = NO_ARRAY,
1511		.tlv_type       = 0x02,
1512		.offset         = offsetof(struct wlfw_msa_ready_resp_msg_v01,
1513					   resp),
1514		.ei_array      = qmi_response_type_v01_ei,
1515	},
1516	{}
1517};
1518
1519const struct qmi_elem_info wlfw_ini_req_msg_v01_ei[] = {
1520	{
1521		.data_type      = QMI_OPT_FLAG,
1522		.elem_len       = 1,
1523		.elem_size      = sizeof(u8),
1524		.array_type     = NO_ARRAY,
1525		.tlv_type       = 0x10,
1526		.offset         = offsetof(struct wlfw_ini_req_msg_v01,
1527					   enablefwlog_valid),
1528	},
1529	{
1530		.data_type      = QMI_UNSIGNED_1_BYTE,
1531		.elem_len       = 1,
1532		.elem_size      = sizeof(u8),
1533		.array_type     = NO_ARRAY,
1534		.tlv_type       = 0x10,
1535		.offset         = offsetof(struct wlfw_ini_req_msg_v01,
1536					   enablefwlog),
1537	},
1538	{}
1539};
1540
1541const struct qmi_elem_info wlfw_ini_resp_msg_v01_ei[] = {
1542	{
1543		.data_type      = QMI_STRUCT,
1544		.elem_len       = 1,
1545		.elem_size      = sizeof(struct qmi_response_type_v01),
1546		.array_type     = NO_ARRAY,
1547		.tlv_type       = 0x02,
1548		.offset         = offsetof(struct wlfw_ini_resp_msg_v01,
1549					   resp),
1550		.ei_array      = qmi_response_type_v01_ei,
1551	},
1552	{}
1553};
1554
1555const struct qmi_elem_info wlfw_athdiag_read_req_msg_v01_ei[] = {
1556	{
1557		.data_type      = QMI_UNSIGNED_4_BYTE,
1558		.elem_len       = 1,
1559		.elem_size      = sizeof(u32),
1560		.array_type     = NO_ARRAY,
1561		.tlv_type       = 0x01,
1562		.offset         = offsetof(struct wlfw_athdiag_read_req_msg_v01,
1563					   offset),
1564	},
1565	{
1566		.data_type      = QMI_UNSIGNED_4_BYTE,
1567		.elem_len       = 1,
1568		.elem_size      = sizeof(u32),
1569		.array_type     = NO_ARRAY,
1570		.tlv_type       = 0x02,
1571		.offset         = offsetof(struct wlfw_athdiag_read_req_msg_v01,
1572					   mem_type),
1573	},
1574	{
1575		.data_type      = QMI_UNSIGNED_4_BYTE,
1576		.elem_len       = 1,
1577		.elem_size      = sizeof(u32),
1578		.array_type     = NO_ARRAY,
1579		.tlv_type       = 0x03,
1580		.offset         = offsetof(struct wlfw_athdiag_read_req_msg_v01,
1581					   data_len),
1582	},
1583	{}
1584};
1585
1586const struct qmi_elem_info wlfw_athdiag_read_resp_msg_v01_ei[] = {
1587	{
1588		.data_type      = QMI_STRUCT,
1589		.elem_len       = 1,
1590		.elem_size      = sizeof(struct qmi_response_type_v01),
1591		.array_type     = NO_ARRAY,
1592		.tlv_type       = 0x02,
1593		.offset         = offsetof(struct wlfw_athdiag_read_resp_msg_v01,
1594					   resp),
1595		.ei_array      = qmi_response_type_v01_ei,
1596	},
1597	{
1598		.data_type      = QMI_OPT_FLAG,
1599		.elem_len       = 1,
1600		.elem_size      = sizeof(u8),
1601		.array_type     = NO_ARRAY,
1602		.tlv_type       = 0x10,
1603		.offset         = offsetof(struct wlfw_athdiag_read_resp_msg_v01,
1604					   data_valid),
1605	},
1606	{
1607		.data_type      = QMI_DATA_LEN,
1608		.elem_len       = 1,
1609		.elem_size      = sizeof(u16),
1610		.array_type     = NO_ARRAY,
1611		.tlv_type       = 0x10,
1612		.offset         = offsetof(struct wlfw_athdiag_read_resp_msg_v01,
1613					   data_len),
1614	},
1615	{
1616		.data_type      = QMI_UNSIGNED_1_BYTE,
1617		.elem_len       = QMI_WLFW_MAX_ATHDIAG_DATA_SIZE_V01,
1618		.elem_size      = sizeof(u8),
1619		.array_type       = VAR_LEN_ARRAY,
1620		.tlv_type       = 0x10,
1621		.offset         = offsetof(struct wlfw_athdiag_read_resp_msg_v01,
1622					   data),
1623	},
1624	{}
1625};
1626
1627const struct qmi_elem_info wlfw_athdiag_write_req_msg_v01_ei[] = {
1628	{
1629		.data_type      = QMI_UNSIGNED_4_BYTE,
1630		.elem_len       = 1,
1631		.elem_size      = sizeof(u32),
1632		.array_type     = NO_ARRAY,
1633		.tlv_type       = 0x01,
1634		.offset         = offsetof(struct wlfw_athdiag_write_req_msg_v01,
1635					   offset),
1636	},
1637	{
1638		.data_type      = QMI_UNSIGNED_4_BYTE,
1639		.elem_len       = 1,
1640		.elem_size      = sizeof(u32),
1641		.array_type     = NO_ARRAY,
1642		.tlv_type       = 0x02,
1643		.offset         = offsetof(struct wlfw_athdiag_write_req_msg_v01,
1644					   mem_type),
1645	},
1646	{
1647		.data_type      = QMI_DATA_LEN,
1648		.elem_len       = 1,
1649		.elem_size      = sizeof(u16),
1650		.array_type     = NO_ARRAY,
1651		.tlv_type       = 0x03,
1652		.offset         = offsetof(struct wlfw_athdiag_write_req_msg_v01,
1653					   data_len),
1654	},
1655	{
1656		.data_type      = QMI_UNSIGNED_1_BYTE,
1657		.elem_len       = QMI_WLFW_MAX_ATHDIAG_DATA_SIZE_V01,
1658		.elem_size      = sizeof(u8),
1659		.array_type       = VAR_LEN_ARRAY,
1660		.tlv_type       = 0x03,
1661		.offset         = offsetof(struct wlfw_athdiag_write_req_msg_v01,
1662					   data),
1663	},
1664	{}
1665};
1666
1667const struct qmi_elem_info wlfw_athdiag_write_resp_msg_v01_ei[] = {
1668	{
1669		.data_type      = QMI_STRUCT,
1670		.elem_len       = 1,
1671		.elem_size      = sizeof(struct qmi_response_type_v01),
1672		.array_type     = NO_ARRAY,
1673		.tlv_type       = 0x02,
1674		.offset         = offsetof(struct wlfw_athdiag_write_resp_msg_v01,
1675					   resp),
1676		.ei_array      = qmi_response_type_v01_ei,
1677	},
1678	{}
1679};
1680
1681const struct qmi_elem_info wlfw_vbatt_req_msg_v01_ei[] = {
1682	{
1683		.data_type      = QMI_UNSIGNED_8_BYTE,
1684		.elem_len       = 1,
1685		.elem_size      = sizeof(u64),
1686		.array_type     = NO_ARRAY,
1687		.tlv_type       = 0x01,
1688		.offset         = offsetof(struct wlfw_vbatt_req_msg_v01,
1689					   voltage_uv),
1690	},
1691	{}
1692};
1693
1694const struct qmi_elem_info wlfw_vbatt_resp_msg_v01_ei[] = {
1695	{
1696		.data_type      = QMI_STRUCT,
1697		.elem_len       = 1,
1698		.elem_size      = sizeof(struct qmi_response_type_v01),
1699		.array_type     = NO_ARRAY,
1700		.tlv_type       = 0x02,
1701		.offset         = offsetof(struct wlfw_vbatt_resp_msg_v01,
1702					   resp),
1703		.ei_array      = qmi_response_type_v01_ei,
1704	},
1705	{}
1706};
1707
1708const struct qmi_elem_info wlfw_mac_addr_req_msg_v01_ei[] = {
1709	{
1710		.data_type      = QMI_OPT_FLAG,
1711		.elem_len       = 1,
1712		.elem_size      = sizeof(u8),
1713		.array_type     = NO_ARRAY,
1714		.tlv_type       = 0x10,
1715		.offset         = offsetof(struct wlfw_mac_addr_req_msg_v01,
1716					   mac_addr_valid),
1717	},
1718	{
1719		.data_type      = QMI_UNSIGNED_1_BYTE,
1720		.elem_len       = QMI_WLFW_MAC_ADDR_SIZE_V01,
1721		.elem_size      = sizeof(u8),
1722		.array_type       = STATIC_ARRAY,
1723		.tlv_type       = 0x10,
1724		.offset         = offsetof(struct wlfw_mac_addr_req_msg_v01,
1725					   mac_addr),
1726	},
1727	{}
1728};
1729
1730const struct qmi_elem_info wlfw_mac_addr_resp_msg_v01_ei[] = {
1731	{
1732		.data_type      = QMI_STRUCT,
1733		.elem_len       = 1,
1734		.elem_size      = sizeof(struct qmi_response_type_v01),
1735		.array_type     = NO_ARRAY,
1736		.tlv_type       = 0x02,
1737		.offset         = offsetof(struct wlfw_mac_addr_resp_msg_v01,
1738					   resp),
1739		.ei_array      = qmi_response_type_v01_ei,
1740	},
1741	{}
1742};
1743
1744const struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[] = {
1745	{
1746		.data_type      = QMI_OPT_FLAG,
1747		.elem_len       = 1,
1748		.elem_size      = sizeof(u8),
1749		.array_type     = NO_ARRAY,
1750		.tlv_type       = 0x10,
1751		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1752					   daemon_support_valid),
1753	},
1754	{
1755		.data_type      = QMI_UNSIGNED_4_BYTE,
1756		.elem_len       = 1,
1757		.elem_size      = sizeof(u32),
1758		.array_type     = NO_ARRAY,
1759		.tlv_type       = 0x10,
1760		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1761					   daemon_support),
1762	},
1763	{
1764		.data_type      = QMI_OPT_FLAG,
1765		.elem_len       = 1,
1766		.elem_size      = sizeof(u8),
1767		.array_type     = NO_ARRAY,
1768		.tlv_type       = 0x11,
1769		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1770					   wake_msi_valid),
1771	},
1772	{
1773		.data_type      = QMI_UNSIGNED_4_BYTE,
1774		.elem_len       = 1,
1775		.elem_size      = sizeof(u32),
1776		.array_type     = NO_ARRAY,
1777		.tlv_type       = 0x11,
1778		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1779					   wake_msi),
1780	},
1781	{
1782		.data_type      = QMI_OPT_FLAG,
1783		.elem_len       = 1,
1784		.elem_size      = sizeof(u8),
1785		.array_type     = NO_ARRAY,
1786		.tlv_type       = 0x12,
1787		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1788					   gpios_valid),
1789	},
1790	{
1791		.data_type      = QMI_DATA_LEN,
1792		.elem_len       = 1,
1793		.elem_size      = sizeof(u32),
1794		.array_type     = NO_ARRAY,
1795		.tlv_type       = 0x12,
1796		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1797					   gpios_len),
1798	},
1799	{
1800		.data_type      = QMI_UNSIGNED_4_BYTE,
1801		.elem_len       = QMI_WLFW_MAX_NUM_GPIO_V01,
1802		.elem_size      = sizeof(u32),
1803		.array_type     = VAR_LEN_ARRAY,
1804		.tlv_type       = 0x12,
1805		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1806					   gpios),
1807	},
1808	{
1809		.data_type      = QMI_OPT_FLAG,
1810		.elem_len       = 1,
1811		.elem_size      = sizeof(u8),
1812		.array_type     = NO_ARRAY,
1813		.tlv_type       = 0x13,
1814		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1815					   nm_modem_valid),
1816	},
1817	{
1818		.data_type      = QMI_UNSIGNED_1_BYTE,
1819		.elem_len       = 1,
1820		.elem_size      = sizeof(u8),
1821		.array_type     = NO_ARRAY,
1822		.tlv_type       = 0x13,
1823		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1824					   nm_modem),
1825	},
1826	{
1827		.data_type      = QMI_OPT_FLAG,
1828		.elem_len       = 1,
1829		.elem_size      = sizeof(u8),
1830		.array_type     = NO_ARRAY,
1831		.tlv_type       = 0x14,
1832		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1833					   bdf_support_valid),
1834	},
1835	{
1836		.data_type      = QMI_UNSIGNED_1_BYTE,
1837		.elem_len       = 1,
1838		.elem_size      = sizeof(u8),
1839		.array_type     = NO_ARRAY,
1840		.tlv_type       = 0x14,
1841		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1842					   bdf_support),
1843	},
1844	{
1845		.data_type      = QMI_OPT_FLAG,
1846		.elem_len       = 1,
1847		.elem_size      = sizeof(u8),
1848		.array_type     = NO_ARRAY,
1849		.tlv_type       = 0x15,
1850		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1851					   bdf_cache_support_valid),
1852	},
1853	{
1854		.data_type      = QMI_UNSIGNED_1_BYTE,
1855		.elem_len       = 1,
1856		.elem_size      = sizeof(u8),
1857		.array_type     = NO_ARRAY,
1858		.tlv_type       = 0x15,
1859		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1860					   bdf_cache_support),
1861	},
1862	{
1863		.data_type      = QMI_OPT_FLAG,
1864		.elem_len       = 1,
1865		.elem_size      = sizeof(u8),
1866		.array_type     = NO_ARRAY,
1867		.tlv_type       = 0x16,
1868		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1869					   m3_support_valid),
1870	},
1871	{
1872		.data_type      = QMI_UNSIGNED_1_BYTE,
1873		.elem_len       = 1,
1874		.elem_size      = sizeof(u8),
1875		.array_type     = NO_ARRAY,
1876		.tlv_type       = 0x16,
1877		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1878					   m3_support),
1879	},
1880	{
1881		.data_type      = QMI_OPT_FLAG,
1882		.elem_len       = 1,
1883		.elem_size      = sizeof(u8),
1884		.array_type     = NO_ARRAY,
1885		.tlv_type       = 0x17,
1886		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1887					   m3_cache_support_valid),
1888	},
1889	{
1890		.data_type      = QMI_UNSIGNED_1_BYTE,
1891		.elem_len       = 1,
1892		.elem_size      = sizeof(u8),
1893		.array_type     = NO_ARRAY,
1894		.tlv_type       = 0x17,
1895		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1896					   m3_cache_support),
1897	},
1898	{
1899		.data_type      = QMI_OPT_FLAG,
1900		.elem_len       = 1,
1901		.elem_size      = sizeof(u8),
1902		.array_type     = NO_ARRAY,
1903		.tlv_type       = 0x18,
1904		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1905					   cal_filesys_support_valid),
1906	},
1907	{
1908		.data_type      = QMI_UNSIGNED_1_BYTE,
1909		.elem_len       = 1,
1910		.elem_size      = sizeof(u8),
1911		.array_type     = NO_ARRAY,
1912		.tlv_type       = 0x18,
1913		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1914					   cal_filesys_support),
1915	},
1916	{
1917		.data_type      = QMI_OPT_FLAG,
1918		.elem_len       = 1,
1919		.elem_size      = sizeof(u8),
1920		.array_type     = NO_ARRAY,
1921		.tlv_type       = 0x19,
1922		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1923					   cal_cache_support_valid),
1924	},
1925	{
1926		.data_type      = QMI_UNSIGNED_1_BYTE,
1927		.elem_len       = 1,
1928		.elem_size      = sizeof(u8),
1929		.array_type     = NO_ARRAY,
1930		.tlv_type       = 0x19,
1931		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1932					   cal_cache_support),
1933	},
1934	{
1935		.data_type      = QMI_OPT_FLAG,
1936		.elem_len       = 1,
1937		.elem_size      = sizeof(u8),
1938		.array_type     = NO_ARRAY,
1939		.tlv_type       = 0x1A,
1940		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1941					   cal_done_valid),
1942	},
1943	{
1944		.data_type      = QMI_UNSIGNED_1_BYTE,
1945		.elem_len       = 1,
1946		.elem_size      = sizeof(u8),
1947		.array_type     = NO_ARRAY,
1948		.tlv_type       = 0x1A,
1949		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1950					   cal_done),
1951	},
1952	{
1953		.data_type      = QMI_OPT_FLAG,
1954		.elem_len       = 1,
1955		.elem_size      = sizeof(u8),
1956		.array_type     = NO_ARRAY,
1957		.tlv_type       = 0x1B,
1958		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1959					   mem_bucket_valid),
1960	},
1961	{
1962		.data_type      = QMI_UNSIGNED_4_BYTE,
1963		.elem_len       = 1,
1964		.elem_size      = sizeof(u32),
1965		.array_type     = NO_ARRAY,
1966		.tlv_type       = 0x1B,
1967		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1968					   mem_bucket),
1969	},
1970	{
1971		.data_type      = QMI_OPT_FLAG,
1972		.elem_len       = 1,
1973		.elem_size      = sizeof(u8),
1974		.array_type     = NO_ARRAY,
1975		.tlv_type       = 0x1C,
1976		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1977					   mem_cfg_mode_valid),
1978	},
1979	{
1980		.data_type      = QMI_UNSIGNED_1_BYTE,
1981		.elem_len       = 1,
1982		.elem_size      = sizeof(u8),
1983		.array_type     = NO_ARRAY,
1984		.tlv_type       = 0x1C,
1985		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1986					   mem_cfg_mode),
1987	},
1988	{}
1989};
1990
1991const struct qmi_elem_info wlfw_host_cap_8bit_req_msg_v01_ei[] = {
1992	{
1993		.data_type      = QMI_OPT_FLAG,
1994		.elem_len       = 1,
1995		.elem_size      = sizeof(u8),
1996		.array_type     = NO_ARRAY,
1997		.tlv_type       = 0x10,
1998		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1999					   daemon_support_valid),
2000	},
2001	{
2002		.data_type      = QMI_UNSIGNED_1_BYTE,
2003		.elem_len       = 1,
2004		.elem_size      = sizeof(u8),
2005		.array_type     = NO_ARRAY,
2006		.tlv_type       = 0x10,
2007		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
2008					   daemon_support),
2009	},
2010	{}
2011};
2012
2013const struct qmi_elem_info wlfw_host_cap_resp_msg_v01_ei[] = {
2014	{
2015		.data_type      = QMI_STRUCT,
2016		.elem_len       = 1,
2017		.elem_size      = sizeof(struct qmi_response_type_v01),
2018		.array_type     = NO_ARRAY,
2019		.tlv_type       = 0x02,
2020		.offset         = offsetof(struct wlfw_host_cap_resp_msg_v01,
2021					   resp),
2022		.ei_array      = qmi_response_type_v01_ei,
2023	},
2024	{}
2025};
2026
2027const struct qmi_elem_info wlfw_request_mem_ind_msg_v01_ei[] = {
2028	{
2029		.data_type      = QMI_DATA_LEN,
2030		.elem_len       = 1,
2031		.elem_size      = sizeof(u8),
2032		.array_type     = NO_ARRAY,
2033		.tlv_type       = 0x01,
2034		.offset         = offsetof(struct wlfw_request_mem_ind_msg_v01,
2035					   mem_seg_len),
2036	},
2037	{
2038		.data_type      = QMI_STRUCT,
2039		.elem_len       = QMI_WLFW_MAX_NUM_MEM_SEG_V01,
2040		.elem_size      = sizeof(struct wlfw_mem_seg_s_v01),
2041		.array_type       = VAR_LEN_ARRAY,
2042		.tlv_type       = 0x01,
2043		.offset         = offsetof(struct wlfw_request_mem_ind_msg_v01,
2044					   mem_seg),
2045		.ei_array      = wlfw_mem_seg_s_v01_ei,
2046	},
2047	{}
2048};
2049
2050const struct qmi_elem_info wlfw_respond_mem_req_msg_v01_ei[] = {
2051	{
2052		.data_type      = QMI_DATA_LEN,
2053		.elem_len       = 1,
2054		.elem_size      = sizeof(u8),
2055		.array_type     = NO_ARRAY,
2056		.tlv_type       = 0x01,
2057		.offset         = offsetof(struct wlfw_respond_mem_req_msg_v01,
2058					   mem_seg_len),
2059	},
2060	{
2061		.data_type      = QMI_STRUCT,
2062		.elem_len       = QMI_WLFW_MAX_NUM_MEM_SEG_V01,
2063		.elem_size      = sizeof(struct wlfw_mem_seg_resp_s_v01),
2064		.array_type       = VAR_LEN_ARRAY,
2065		.tlv_type       = 0x01,
2066		.offset         = offsetof(struct wlfw_respond_mem_req_msg_v01,
2067					   mem_seg),
2068		.ei_array      = wlfw_mem_seg_resp_s_v01_ei,
2069	},
2070	{}
2071};
2072
2073const struct qmi_elem_info wlfw_respond_mem_resp_msg_v01_ei[] = {
2074	{
2075		.data_type      = QMI_STRUCT,
2076		.elem_len       = 1,
2077		.elem_size      = sizeof(struct qmi_response_type_v01),
2078		.array_type     = NO_ARRAY,
2079		.tlv_type       = 0x02,
2080		.offset         = offsetof(struct wlfw_respond_mem_resp_msg_v01,
2081					   resp),
2082		.ei_array      = qmi_response_type_v01_ei,
2083	},
2084	{}
2085};
2086
2087const struct qmi_elem_info wlfw_mem_ready_ind_msg_v01_ei[] = {
2088	{}
2089};
2090
2091const struct qmi_elem_info wlfw_fw_init_done_ind_msg_v01_ei[] = {
2092	{}
2093};
2094
2095const struct qmi_elem_info wlfw_rejuvenate_ind_msg_v01_ei[] = {
2096	{
2097		.data_type      = QMI_OPT_FLAG,
2098		.elem_len       = 1,
2099		.elem_size      = sizeof(u8),
2100		.array_type     = NO_ARRAY,
2101		.tlv_type       = 0x10,
2102		.offset         = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2103					   cause_for_rejuvenation_valid),
2104	},
2105	{
2106		.data_type      = QMI_UNSIGNED_1_BYTE,
2107		.elem_len       = 1,
2108		.elem_size      = sizeof(u8),
2109		.array_type     = NO_ARRAY,
2110		.tlv_type       = 0x10,
2111		.offset         = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2112					   cause_for_rejuvenation),
2113	},
2114	{
2115		.data_type      = QMI_OPT_FLAG,
2116		.elem_len       = 1,
2117		.elem_size      = sizeof(u8),
2118		.array_type     = NO_ARRAY,
2119		.tlv_type       = 0x11,
2120		.offset         = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2121					   requesting_sub_system_valid),
2122	},
2123	{
2124		.data_type      = QMI_UNSIGNED_1_BYTE,
2125		.elem_len       = 1,
2126		.elem_size      = sizeof(u8),
2127		.array_type     = NO_ARRAY,
2128		.tlv_type       = 0x11,
2129		.offset         = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2130					   requesting_sub_system),
2131	},
2132	{
2133		.data_type      = QMI_OPT_FLAG,
2134		.elem_len       = 1,
2135		.elem_size      = sizeof(u8),
2136		.array_type     = NO_ARRAY,
2137		.tlv_type       = 0x12,
2138		.offset         = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2139					   line_number_valid),
2140	},
2141	{
2142		.data_type      = QMI_UNSIGNED_2_BYTE,
2143		.elem_len       = 1,
2144		.elem_size      = sizeof(u16),
2145		.array_type     = NO_ARRAY,
2146		.tlv_type       = 0x12,
2147		.offset         = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2148					   line_number),
2149	},
2150	{
2151		.data_type      = QMI_OPT_FLAG,
2152		.elem_len       = 1,
2153		.elem_size      = sizeof(u8),
2154		.array_type     = NO_ARRAY,
2155		.tlv_type       = 0x13,
2156		.offset         = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2157					   function_name_valid),
2158	},
2159	{
2160		.data_type      = QMI_STRING,
2161		.elem_len       = QMI_WLFW_FUNCTION_NAME_LEN_V01 + 1,
2162		.elem_size      = sizeof(char),
2163		.array_type     = NO_ARRAY,
2164		.tlv_type       = 0x13,
2165		.offset         = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2166					   function_name),
2167	},
2168	{}
2169};
2170
2171const struct qmi_elem_info wlfw_rejuvenate_ack_req_msg_v01_ei[] = {
2172	{}
2173};
2174
2175const struct qmi_elem_info wlfw_rejuvenate_ack_resp_msg_v01_ei[] = {
2176	{
2177		.data_type      = QMI_STRUCT,
2178		.elem_len       = 1,
2179		.elem_size      = sizeof(struct qmi_response_type_v01),
2180		.array_type     = NO_ARRAY,
2181		.tlv_type       = 0x02,
2182		.offset         = offsetof(struct wlfw_rejuvenate_ack_resp_msg_v01,
2183					   resp),
2184		.ei_array      = qmi_response_type_v01_ei,
2185	},
2186	{}
2187};
2188
2189const struct qmi_elem_info wlfw_dynamic_feature_mask_req_msg_v01_ei[] = {
2190	{
2191		.data_type      = QMI_OPT_FLAG,
2192		.elem_len       = 1,
2193		.elem_size      = sizeof(u8),
2194		.array_type     = NO_ARRAY,
2195		.tlv_type       = 0x10,
2196		.offset         = offsetof(struct wlfw_dynamic_feature_mask_req_msg_v01,
2197					   mask_valid),
2198	},
2199	{
2200		.data_type      = QMI_UNSIGNED_8_BYTE,
2201		.elem_len       = 1,
2202		.elem_size      = sizeof(u64),
2203		.array_type     = NO_ARRAY,
2204		.tlv_type       = 0x10,
2205		.offset         = offsetof(struct wlfw_dynamic_feature_mask_req_msg_v01,
2206					   mask),
2207	},
2208	{}
2209};
2210
2211const struct qmi_elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[] = {
2212	{
2213		.data_type      = QMI_STRUCT,
2214		.elem_len       = 1,
2215		.elem_size      = sizeof(struct qmi_response_type_v01),
2216		.array_type     = NO_ARRAY,
2217		.tlv_type       = 0x02,
2218		.offset         = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01,
2219					   resp),
2220		.ei_array      = qmi_response_type_v01_ei,
2221	},
2222	{
2223		.data_type      = QMI_OPT_FLAG,
2224		.elem_len       = 1,
2225		.elem_size      = sizeof(u8),
2226		.array_type     = NO_ARRAY,
2227		.tlv_type       = 0x10,
2228		.offset         = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01,
2229					   prev_mask_valid),
2230	},
2231	{
2232		.data_type      = QMI_UNSIGNED_8_BYTE,
2233		.elem_len       = 1,
2234		.elem_size      = sizeof(u64),
2235		.array_type     = NO_ARRAY,
2236		.tlv_type       = 0x10,
2237		.offset         = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01,
2238					   prev_mask),
2239	},
2240	{
2241		.data_type      = QMI_OPT_FLAG,
2242		.elem_len       = 1,
2243		.elem_size      = sizeof(u8),
2244		.array_type     = NO_ARRAY,
2245		.tlv_type       = 0x11,
2246		.offset         = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01,
2247					   curr_mask_valid),
2248	},
2249	{
2250		.data_type      = QMI_UNSIGNED_8_BYTE,
2251		.elem_len       = 1,
2252		.elem_size      = sizeof(u64),
2253		.array_type     = NO_ARRAY,
2254		.tlv_type       = 0x11,
2255		.offset         = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01,
2256					   curr_mask),
2257	},
2258	{}
2259};
2260
2261const struct qmi_elem_info wlfw_m3_info_req_msg_v01_ei[] = {
2262	{
2263		.data_type      = QMI_UNSIGNED_8_BYTE,
2264		.elem_len       = 1,
2265		.elem_size      = sizeof(u64),
2266		.array_type     = NO_ARRAY,
2267		.tlv_type       = 0x01,
2268		.offset         = offsetof(struct wlfw_m3_info_req_msg_v01,
2269					   addr),
2270	},
2271	{
2272		.data_type      = QMI_UNSIGNED_4_BYTE,
2273		.elem_len       = 1,
2274		.elem_size      = sizeof(u32),
2275		.array_type     = NO_ARRAY,
2276		.tlv_type       = 0x02,
2277		.offset         = offsetof(struct wlfw_m3_info_req_msg_v01,
2278					   size),
2279	},
2280	{}
2281};
2282
2283const struct qmi_elem_info wlfw_m3_info_resp_msg_v01_ei[] = {
2284	{
2285		.data_type      = QMI_STRUCT,
2286		.elem_len       = 1,
2287		.elem_size      = sizeof(struct qmi_response_type_v01),
2288		.array_type     = NO_ARRAY,
2289		.tlv_type       = 0x02,
2290		.offset         = offsetof(struct wlfw_m3_info_resp_msg_v01,
2291					   resp),
2292		.ei_array      = qmi_response_type_v01_ei,
2293	},
2294	{}
2295};
2296
2297const struct qmi_elem_info wlfw_xo_cal_ind_msg_v01_ei[] = {
2298	{
2299		.data_type      = QMI_UNSIGNED_1_BYTE,
2300		.elem_len       = 1,
2301		.elem_size      = sizeof(u8),
2302		.array_type     = NO_ARRAY,
2303		.tlv_type       = 0x01,
2304		.offset         = offsetof(struct wlfw_xo_cal_ind_msg_v01,
2305					   xo_cal_data),
2306	},
2307	{}
2308};
v5.4
   1// SPDX-License-Identifier: ISC
   2/*
   3 * Copyright (c) 2018 The Linux Foundation. All rights reserved.
   4 */
   5
   6#include <linux/soc/qcom/qmi.h>
   7#include <linux/types.h>
   8#include "qmi_wlfw_v01.h"
   9
  10static struct qmi_elem_info wlfw_ce_tgt_pipe_cfg_s_v01_ei[] = {
  11	{
  12		.data_type      = QMI_UNSIGNED_4_BYTE,
  13		.elem_len       = 1,
  14		.elem_size      = sizeof(u32),
  15		.array_type     = NO_ARRAY,
  16		.tlv_type       = 0,
  17		.offset         = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01,
  18					   pipe_num),
  19	},
  20	{
  21		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
  22		.elem_len       = 1,
  23		.elem_size      = sizeof(enum wlfw_pipedir_enum_v01),
  24		.array_type     = NO_ARRAY,
  25		.tlv_type       = 0,
  26		.offset         = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01,
  27					   pipe_dir),
  28	},
  29	{
  30		.data_type      = QMI_UNSIGNED_4_BYTE,
  31		.elem_len       = 1,
  32		.elem_size      = sizeof(u32),
  33		.array_type     = NO_ARRAY,
  34		.tlv_type       = 0,
  35		.offset         = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01,
  36					   nentries),
  37	},
  38	{
  39		.data_type      = QMI_UNSIGNED_4_BYTE,
  40		.elem_len       = 1,
  41		.elem_size      = sizeof(u32),
  42		.array_type     = NO_ARRAY,
  43		.tlv_type       = 0,
  44		.offset         = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01,
  45					   nbytes_max),
  46	},
  47	{
  48		.data_type      = QMI_UNSIGNED_4_BYTE,
  49		.elem_len       = 1,
  50		.elem_size      = sizeof(u32),
  51		.array_type     = NO_ARRAY,
  52		.tlv_type       = 0,
  53		.offset         = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01,
  54					   flags),
  55	},
  56	{}
  57};
  58
  59static struct qmi_elem_info wlfw_ce_svc_pipe_cfg_s_v01_ei[] = {
  60	{
  61		.data_type      = QMI_UNSIGNED_4_BYTE,
  62		.elem_len       = 1,
  63		.elem_size      = sizeof(u32),
  64		.array_type     = NO_ARRAY,
  65		.tlv_type       = 0,
  66		.offset         = offsetof(struct wlfw_ce_svc_pipe_cfg_s_v01,
  67					   service_id),
  68	},
  69	{
  70		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
  71		.elem_len       = 1,
  72		.elem_size      = sizeof(enum wlfw_pipedir_enum_v01),
  73		.array_type     = NO_ARRAY,
  74		.tlv_type       = 0,
  75		.offset         = offsetof(struct wlfw_ce_svc_pipe_cfg_s_v01,
  76					   pipe_dir),
  77	},
  78	{
  79		.data_type      = QMI_UNSIGNED_4_BYTE,
  80		.elem_len       = 1,
  81		.elem_size      = sizeof(u32),
  82		.array_type     = NO_ARRAY,
  83		.tlv_type       = 0,
  84		.offset         = offsetof(struct wlfw_ce_svc_pipe_cfg_s_v01,
  85					   pipe_num),
  86	},
  87	{}
  88};
  89
  90static struct qmi_elem_info wlfw_shadow_reg_cfg_s_v01_ei[] = {
  91	{
  92		.data_type      = QMI_UNSIGNED_2_BYTE,
  93		.elem_len       = 1,
  94		.elem_size      = sizeof(u16),
  95		.array_type     = NO_ARRAY,
  96		.tlv_type       = 0,
  97		.offset         = offsetof(struct wlfw_shadow_reg_cfg_s_v01,
  98					   id),
  99	},
 100	{
 101		.data_type      = QMI_UNSIGNED_2_BYTE,
 102		.elem_len       = 1,
 103		.elem_size      = sizeof(u16),
 104		.array_type     = NO_ARRAY,
 105		.tlv_type       = 0,
 106		.offset         = offsetof(struct wlfw_shadow_reg_cfg_s_v01,
 107					   offset),
 108	},
 109	{}
 110};
 111
 112static struct qmi_elem_info wlfw_shadow_reg_v2_cfg_s_v01_ei[] = {
 113	{
 114		.data_type      = QMI_UNSIGNED_4_BYTE,
 115		.elem_len       = 1,
 116		.elem_size      = sizeof(u32),
 117		.array_type     = NO_ARRAY,
 118		.tlv_type       = 0,
 119		.offset         = offsetof(struct wlfw_shadow_reg_v2_cfg_s_v01,
 120					   addr),
 121	},
 122	{}
 123};
 124
 125static struct qmi_elem_info wlfw_memory_region_info_s_v01_ei[] = {
 126	{
 127		.data_type      = QMI_UNSIGNED_8_BYTE,
 128		.elem_len       = 1,
 129		.elem_size      = sizeof(u64),
 130		.array_type     = NO_ARRAY,
 131		.tlv_type       = 0,
 132		.offset         = offsetof(struct wlfw_memory_region_info_s_v01,
 133					   region_addr),
 134	},
 135	{
 136		.data_type      = QMI_UNSIGNED_4_BYTE,
 137		.elem_len       = 1,
 138		.elem_size      = sizeof(u32),
 139		.array_type     = NO_ARRAY,
 140		.tlv_type       = 0,
 141		.offset         = offsetof(struct wlfw_memory_region_info_s_v01,
 142					   size),
 143	},
 144	{
 145		.data_type      = QMI_UNSIGNED_1_BYTE,
 146		.elem_len       = 1,
 147		.elem_size      = sizeof(u8),
 148		.array_type     = NO_ARRAY,
 149		.tlv_type       = 0,
 150		.offset         = offsetof(struct wlfw_memory_region_info_s_v01,
 151					   secure_flag),
 152	},
 153	{}
 154};
 155
 156static struct qmi_elem_info wlfw_mem_cfg_s_v01_ei[] = {
 157	{
 158		.data_type      = QMI_UNSIGNED_8_BYTE,
 159		.elem_len       = 1,
 160		.elem_size      = sizeof(u64),
 161		.array_type     = NO_ARRAY,
 162		.tlv_type       = 0,
 163		.offset         = offsetof(struct wlfw_mem_cfg_s_v01,
 164					   offset),
 165	},
 166	{
 167		.data_type      = QMI_UNSIGNED_4_BYTE,
 168		.elem_len       = 1,
 169		.elem_size      = sizeof(u32),
 170		.array_type     = NO_ARRAY,
 171		.tlv_type       = 0,
 172		.offset         = offsetof(struct wlfw_mem_cfg_s_v01,
 173					   size),
 174	},
 175	{
 176		.data_type      = QMI_UNSIGNED_1_BYTE,
 177		.elem_len       = 1,
 178		.elem_size      = sizeof(u8),
 179		.array_type     = NO_ARRAY,
 180		.tlv_type       = 0,
 181		.offset         = offsetof(struct wlfw_mem_cfg_s_v01,
 182					   secure_flag),
 183	},
 184	{}
 185};
 186
 187static struct qmi_elem_info wlfw_mem_seg_s_v01_ei[] = {
 188	{
 189		.data_type      = QMI_UNSIGNED_4_BYTE,
 190		.elem_len       = 1,
 191		.elem_size      = sizeof(u32),
 192		.array_type     = NO_ARRAY,
 193		.tlv_type       = 0,
 194		.offset         = offsetof(struct wlfw_mem_seg_s_v01,
 195					   size),
 196	},
 197	{
 198		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
 199		.elem_len       = 1,
 200		.elem_size      = sizeof(enum wlfw_mem_type_enum_v01),
 201		.array_type     = NO_ARRAY,
 202		.tlv_type       = 0,
 203		.offset         = offsetof(struct wlfw_mem_seg_s_v01,
 204					   type),
 205	},
 206	{
 207		.data_type      = QMI_DATA_LEN,
 208		.elem_len       = 1,
 209		.elem_size      = sizeof(u8),
 210		.array_type     = NO_ARRAY,
 211		.tlv_type       = 0,
 212		.offset         = offsetof(struct wlfw_mem_seg_s_v01,
 213					   mem_cfg_len),
 214	},
 215	{
 216		.data_type      = QMI_STRUCT,
 217		.elem_len       = QMI_WLFW_MAX_NUM_MEM_CFG_V01,
 218		.elem_size      = sizeof(struct wlfw_mem_cfg_s_v01),
 219		.array_type       = VAR_LEN_ARRAY,
 220		.tlv_type       = 0,
 221		.offset         = offsetof(struct wlfw_mem_seg_s_v01,
 222					   mem_cfg),
 223		.ei_array      = wlfw_mem_cfg_s_v01_ei,
 224	},
 225	{}
 226};
 227
 228static struct qmi_elem_info wlfw_mem_seg_resp_s_v01_ei[] = {
 229	{
 230		.data_type      = QMI_UNSIGNED_8_BYTE,
 231		.elem_len       = 1,
 232		.elem_size      = sizeof(u64),
 233		.array_type     = NO_ARRAY,
 234		.tlv_type       = 0,
 235		.offset         = offsetof(struct wlfw_mem_seg_resp_s_v01,
 236					   addr),
 237	},
 238	{
 239		.data_type      = QMI_UNSIGNED_4_BYTE,
 240		.elem_len       = 1,
 241		.elem_size      = sizeof(u32),
 242		.array_type     = NO_ARRAY,
 243		.tlv_type       = 0,
 244		.offset         = offsetof(struct wlfw_mem_seg_resp_s_v01,
 245					   size),
 246	},
 247	{
 248		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
 249		.elem_len       = 1,
 250		.elem_size      = sizeof(enum wlfw_mem_type_enum_v01),
 251		.array_type     = NO_ARRAY,
 252		.tlv_type       = 0,
 253		.offset         = offsetof(struct wlfw_mem_seg_resp_s_v01,
 254					   type),
 255	},
 256	{}
 257};
 258
 259static struct qmi_elem_info wlfw_rf_chip_info_s_v01_ei[] = {
 260	{
 261		.data_type      = QMI_UNSIGNED_4_BYTE,
 262		.elem_len       = 1,
 263		.elem_size      = sizeof(u32),
 264		.array_type     = NO_ARRAY,
 265		.tlv_type       = 0,
 266		.offset         = offsetof(struct wlfw_rf_chip_info_s_v01,
 267					   chip_id),
 268	},
 269	{
 270		.data_type      = QMI_UNSIGNED_4_BYTE,
 271		.elem_len       = 1,
 272		.elem_size      = sizeof(u32),
 273		.array_type     = NO_ARRAY,
 274		.tlv_type       = 0,
 275		.offset         = offsetof(struct wlfw_rf_chip_info_s_v01,
 276					   chip_family),
 277	},
 278	{}
 279};
 280
 281static struct qmi_elem_info wlfw_rf_board_info_s_v01_ei[] = {
 282	{
 283		.data_type      = QMI_UNSIGNED_4_BYTE,
 284		.elem_len       = 1,
 285		.elem_size      = sizeof(u32),
 286		.array_type     = NO_ARRAY,
 287		.tlv_type       = 0,
 288		.offset         = offsetof(struct wlfw_rf_board_info_s_v01,
 289					   board_id),
 290	},
 291	{}
 292};
 293
 294static struct qmi_elem_info wlfw_soc_info_s_v01_ei[] = {
 295	{
 296		.data_type      = QMI_UNSIGNED_4_BYTE,
 297		.elem_len       = 1,
 298		.elem_size      = sizeof(u32),
 299		.array_type     = NO_ARRAY,
 300		.tlv_type       = 0,
 301		.offset         = offsetof(struct wlfw_soc_info_s_v01,
 302					   soc_id),
 303	},
 304	{}
 305};
 306
 307static struct qmi_elem_info wlfw_fw_version_info_s_v01_ei[] = {
 308	{
 309		.data_type      = QMI_UNSIGNED_4_BYTE,
 310		.elem_len       = 1,
 311		.elem_size      = sizeof(u32),
 312		.array_type     = NO_ARRAY,
 313		.tlv_type       = 0,
 314		.offset         = offsetof(struct wlfw_fw_version_info_s_v01,
 315					   fw_version),
 316	},
 317	{
 318		.data_type      = QMI_STRING,
 319		.elem_len       = QMI_WLFW_MAX_TIMESTAMP_LEN_V01 + 1,
 320		.elem_size      = sizeof(char),
 321		.array_type     = NO_ARRAY,
 322		.tlv_type       = 0,
 323		.offset         = offsetof(struct wlfw_fw_version_info_s_v01,
 324					   fw_build_timestamp),
 325	},
 326	{}
 327};
 328
 329struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[] = {
 330	{
 331		.data_type      = QMI_OPT_FLAG,
 332		.elem_len       = 1,
 333		.elem_size      = sizeof(u8),
 334		.array_type     = NO_ARRAY,
 335		.tlv_type       = 0x10,
 336		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 337					   fw_ready_enable_valid),
 338	},
 339	{
 340		.data_type      = QMI_UNSIGNED_1_BYTE,
 341		.elem_len       = 1,
 342		.elem_size      = sizeof(u8),
 343		.array_type     = NO_ARRAY,
 344		.tlv_type       = 0x10,
 345		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 346					   fw_ready_enable),
 347	},
 348	{
 349		.data_type      = QMI_OPT_FLAG,
 350		.elem_len       = 1,
 351		.elem_size      = sizeof(u8),
 352		.array_type     = NO_ARRAY,
 353		.tlv_type       = 0x11,
 354		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 355					   initiate_cal_download_enable_valid),
 356	},
 357	{
 358		.data_type      = QMI_UNSIGNED_1_BYTE,
 359		.elem_len       = 1,
 360		.elem_size      = sizeof(u8),
 361		.array_type     = NO_ARRAY,
 362		.tlv_type       = 0x11,
 363		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 364					   initiate_cal_download_enable),
 365	},
 366	{
 367		.data_type      = QMI_OPT_FLAG,
 368		.elem_len       = 1,
 369		.elem_size      = sizeof(u8),
 370		.array_type     = NO_ARRAY,
 371		.tlv_type       = 0x12,
 372		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 373					   initiate_cal_update_enable_valid),
 374	},
 375	{
 376		.data_type      = QMI_UNSIGNED_1_BYTE,
 377		.elem_len       = 1,
 378		.elem_size      = sizeof(u8),
 379		.array_type     = NO_ARRAY,
 380		.tlv_type       = 0x12,
 381		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 382					   initiate_cal_update_enable),
 383	},
 384	{
 385		.data_type      = QMI_OPT_FLAG,
 386		.elem_len       = 1,
 387		.elem_size      = sizeof(u8),
 388		.array_type     = NO_ARRAY,
 389		.tlv_type       = 0x13,
 390		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 391					   msa_ready_enable_valid),
 392	},
 393	{
 394		.data_type      = QMI_UNSIGNED_1_BYTE,
 395		.elem_len       = 1,
 396		.elem_size      = sizeof(u8),
 397		.array_type     = NO_ARRAY,
 398		.tlv_type       = 0x13,
 399		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 400					   msa_ready_enable),
 401	},
 402	{
 403		.data_type      = QMI_OPT_FLAG,
 404		.elem_len       = 1,
 405		.elem_size      = sizeof(u8),
 406		.array_type     = NO_ARRAY,
 407		.tlv_type       = 0x14,
 408		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 409					   pin_connect_result_enable_valid),
 410	},
 411	{
 412		.data_type      = QMI_UNSIGNED_1_BYTE,
 413		.elem_len       = 1,
 414		.elem_size      = sizeof(u8),
 415		.array_type     = NO_ARRAY,
 416		.tlv_type       = 0x14,
 417		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 418					   pin_connect_result_enable),
 419	},
 420	{
 421		.data_type      = QMI_OPT_FLAG,
 422		.elem_len       = 1,
 423		.elem_size      = sizeof(u8),
 424		.array_type     = NO_ARRAY,
 425		.tlv_type       = 0x15,
 426		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 427					   client_id_valid),
 428	},
 429	{
 430		.data_type      = QMI_UNSIGNED_4_BYTE,
 431		.elem_len       = 1,
 432		.elem_size      = sizeof(u32),
 433		.array_type     = NO_ARRAY,
 434		.tlv_type       = 0x15,
 435		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 436					   client_id),
 437	},
 438	{
 439		.data_type      = QMI_OPT_FLAG,
 440		.elem_len       = 1,
 441		.elem_size      = sizeof(u8),
 442		.array_type     = NO_ARRAY,
 443		.tlv_type       = 0x16,
 444		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 445					   request_mem_enable_valid),
 446	},
 447	{
 448		.data_type      = QMI_UNSIGNED_1_BYTE,
 449		.elem_len       = 1,
 450		.elem_size      = sizeof(u8),
 451		.array_type     = NO_ARRAY,
 452		.tlv_type       = 0x16,
 453		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 454					   request_mem_enable),
 455	},
 456	{
 457		.data_type      = QMI_OPT_FLAG,
 458		.elem_len       = 1,
 459		.elem_size      = sizeof(u8),
 460		.array_type     = NO_ARRAY,
 461		.tlv_type       = 0x17,
 462		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 463					   mem_ready_enable_valid),
 464	},
 465	{
 466		.data_type      = QMI_UNSIGNED_1_BYTE,
 467		.elem_len       = 1,
 468		.elem_size      = sizeof(u8),
 469		.array_type     = NO_ARRAY,
 470		.tlv_type       = 0x17,
 471		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 472					   mem_ready_enable),
 473	},
 474	{
 475		.data_type      = QMI_OPT_FLAG,
 476		.elem_len       = 1,
 477		.elem_size      = sizeof(u8),
 478		.array_type     = NO_ARRAY,
 479		.tlv_type       = 0x18,
 480		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 481					   fw_init_done_enable_valid),
 482	},
 483	{
 484		.data_type      = QMI_UNSIGNED_1_BYTE,
 485		.elem_len       = 1,
 486		.elem_size      = sizeof(u8),
 487		.array_type     = NO_ARRAY,
 488		.tlv_type       = 0x18,
 489		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 490					   fw_init_done_enable),
 491	},
 492	{
 493		.data_type      = QMI_OPT_FLAG,
 494		.elem_len       = 1,
 495		.elem_size      = sizeof(u8),
 496		.array_type     = NO_ARRAY,
 497		.tlv_type       = 0x19,
 498		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 499					   rejuvenate_enable_valid),
 500	},
 501	{
 502		.data_type      = QMI_UNSIGNED_4_BYTE,
 503		.elem_len       = 1,
 504		.elem_size      = sizeof(u32),
 505		.array_type     = NO_ARRAY,
 506		.tlv_type       = 0x19,
 507		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 508					   rejuvenate_enable),
 509	},
 510	{
 511		.data_type      = QMI_OPT_FLAG,
 512		.elem_len       = 1,
 513		.elem_size      = sizeof(u8),
 514		.array_type     = NO_ARRAY,
 515		.tlv_type       = 0x1A,
 516		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 517					   xo_cal_enable_valid),
 518	},
 519	{
 520		.data_type      = QMI_UNSIGNED_1_BYTE,
 521		.elem_len       = 1,
 522		.elem_size      = sizeof(u8),
 523		.array_type     = NO_ARRAY,
 524		.tlv_type       = 0x1A,
 525		.offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
 526					   xo_cal_enable),
 527	},
 528	{}
 529};
 530
 531struct qmi_elem_info wlfw_ind_register_resp_msg_v01_ei[] = {
 532	{
 533		.data_type      = QMI_STRUCT,
 534		.elem_len       = 1,
 535		.elem_size      = sizeof(struct qmi_response_type_v01),
 536		.array_type     = NO_ARRAY,
 537		.tlv_type       = 0x02,
 538		.offset         = offsetof(struct wlfw_ind_register_resp_msg_v01,
 539					   resp),
 540		.ei_array      = qmi_response_type_v01_ei,
 541	},
 542	{
 543		.data_type      = QMI_OPT_FLAG,
 544		.elem_len       = 1,
 545		.elem_size      = sizeof(u8),
 546		.array_type     = NO_ARRAY,
 547		.tlv_type       = 0x10,
 548		.offset         = offsetof(struct wlfw_ind_register_resp_msg_v01,
 549					   fw_status_valid),
 550	},
 551	{
 552		.data_type      = QMI_UNSIGNED_8_BYTE,
 553		.elem_len       = 1,
 554		.elem_size      = sizeof(u64),
 555		.array_type     = NO_ARRAY,
 556		.tlv_type       = 0x10,
 557		.offset         = offsetof(struct wlfw_ind_register_resp_msg_v01,
 558					   fw_status),
 559	},
 560	{}
 561};
 562
 563struct qmi_elem_info wlfw_fw_ready_ind_msg_v01_ei[] = {
 564	{}
 565};
 566
 567struct qmi_elem_info wlfw_msa_ready_ind_msg_v01_ei[] = {
 568	{}
 569};
 570
 571struct qmi_elem_info wlfw_pin_connect_result_ind_msg_v01_ei[] = {
 572	{
 573		.data_type      = QMI_OPT_FLAG,
 574		.elem_len       = 1,
 575		.elem_size      = sizeof(u8),
 576		.array_type     = NO_ARRAY,
 577		.tlv_type       = 0x10,
 578		.offset         = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
 579					   pwr_pin_result_valid),
 580	},
 581	{
 582		.data_type      = QMI_UNSIGNED_4_BYTE,
 583		.elem_len       = 1,
 584		.elem_size      = sizeof(u32),
 585		.array_type     = NO_ARRAY,
 586		.tlv_type       = 0x10,
 587		.offset         = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
 588					   pwr_pin_result),
 589	},
 590	{
 591		.data_type      = QMI_OPT_FLAG,
 592		.elem_len       = 1,
 593		.elem_size      = sizeof(u8),
 594		.array_type     = NO_ARRAY,
 595		.tlv_type       = 0x11,
 596		.offset         = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
 597					   phy_io_pin_result_valid),
 598	},
 599	{
 600		.data_type      = QMI_UNSIGNED_4_BYTE,
 601		.elem_len       = 1,
 602		.elem_size      = sizeof(u32),
 603		.array_type     = NO_ARRAY,
 604		.tlv_type       = 0x11,
 605		.offset         = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
 606					   phy_io_pin_result),
 607	},
 608	{
 609		.data_type      = QMI_OPT_FLAG,
 610		.elem_len       = 1,
 611		.elem_size      = sizeof(u8),
 612		.array_type     = NO_ARRAY,
 613		.tlv_type       = 0x12,
 614		.offset         = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
 615					   rf_pin_result_valid),
 616	},
 617	{
 618		.data_type      = QMI_UNSIGNED_4_BYTE,
 619		.elem_len       = 1,
 620		.elem_size      = sizeof(u32),
 621		.array_type     = NO_ARRAY,
 622		.tlv_type       = 0x12,
 623		.offset         = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
 624					   rf_pin_result),
 625	},
 626	{}
 627};
 628
 629struct qmi_elem_info wlfw_wlan_mode_req_msg_v01_ei[] = {
 630	{
 631		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
 632		.elem_len       = 1,
 633		.elem_size      = sizeof(enum wlfw_driver_mode_enum_v01),
 634		.array_type     = NO_ARRAY,
 635		.tlv_type       = 0x01,
 636		.offset         = offsetof(struct wlfw_wlan_mode_req_msg_v01,
 637					   mode),
 638	},
 639	{
 640		.data_type      = QMI_OPT_FLAG,
 641		.elem_len       = 1,
 642		.elem_size      = sizeof(u8),
 643		.array_type     = NO_ARRAY,
 644		.tlv_type       = 0x10,
 645		.offset         = offsetof(struct wlfw_wlan_mode_req_msg_v01,
 646					   hw_debug_valid),
 647	},
 648	{
 649		.data_type      = QMI_UNSIGNED_1_BYTE,
 650		.elem_len       = 1,
 651		.elem_size      = sizeof(u8),
 652		.array_type     = NO_ARRAY,
 653		.tlv_type       = 0x10,
 654		.offset         = offsetof(struct wlfw_wlan_mode_req_msg_v01,
 655					   hw_debug),
 656	},
 657	{}
 658};
 659
 660struct qmi_elem_info wlfw_wlan_mode_resp_msg_v01_ei[] = {
 661	{
 662		.data_type      = QMI_STRUCT,
 663		.elem_len       = 1,
 664		.elem_size      = sizeof(struct qmi_response_type_v01),
 665		.array_type     = NO_ARRAY,
 666		.tlv_type       = 0x02,
 667		.offset         = offsetof(struct wlfw_wlan_mode_resp_msg_v01,
 668					   resp),
 669		.ei_array      = qmi_response_type_v01_ei,
 670	},
 671	{}
 672};
 673
 674struct qmi_elem_info wlfw_wlan_cfg_req_msg_v01_ei[] = {
 675	{
 676		.data_type      = QMI_OPT_FLAG,
 677		.elem_len       = 1,
 678		.elem_size      = sizeof(u8),
 679		.array_type     = NO_ARRAY,
 680		.tlv_type       = 0x10,
 681		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 682					   host_version_valid),
 683	},
 684	{
 685		.data_type      = QMI_STRING,
 686		.elem_len       = QMI_WLFW_MAX_STR_LEN_V01 + 1,
 687		.elem_size      = sizeof(char),
 688		.array_type     = NO_ARRAY,
 689		.tlv_type       = 0x10,
 690		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 691					   host_version),
 692	},
 693	{
 694		.data_type      = QMI_OPT_FLAG,
 695		.elem_len       = 1,
 696		.elem_size      = sizeof(u8),
 697		.array_type     = NO_ARRAY,
 698		.tlv_type       = 0x11,
 699		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 700					   tgt_cfg_valid),
 701	},
 702	{
 703		.data_type      = QMI_DATA_LEN,
 704		.elem_len       = 1,
 705		.elem_size      = sizeof(u8),
 706		.array_type     = NO_ARRAY,
 707		.tlv_type       = 0x11,
 708		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 709					   tgt_cfg_len),
 710	},
 711	{
 712		.data_type      = QMI_STRUCT,
 713		.elem_len       = QMI_WLFW_MAX_NUM_CE_V01,
 714		.elem_size      = sizeof(struct wlfw_ce_tgt_pipe_cfg_s_v01),
 715		.array_type       = VAR_LEN_ARRAY,
 716		.tlv_type       = 0x11,
 717		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 718					   tgt_cfg),
 719		.ei_array      = wlfw_ce_tgt_pipe_cfg_s_v01_ei,
 720	},
 721	{
 722		.data_type      = QMI_OPT_FLAG,
 723		.elem_len       = 1,
 724		.elem_size      = sizeof(u8),
 725		.array_type     = NO_ARRAY,
 726		.tlv_type       = 0x12,
 727		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 728					   svc_cfg_valid),
 729	},
 730	{
 731		.data_type      = QMI_DATA_LEN,
 732		.elem_len       = 1,
 733		.elem_size      = sizeof(u8),
 734		.array_type     = NO_ARRAY,
 735		.tlv_type       = 0x12,
 736		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 737					   svc_cfg_len),
 738	},
 739	{
 740		.data_type      = QMI_STRUCT,
 741		.elem_len       = QMI_WLFW_MAX_NUM_SVC_V01,
 742		.elem_size      = sizeof(struct wlfw_ce_svc_pipe_cfg_s_v01),
 743		.array_type       = VAR_LEN_ARRAY,
 744		.tlv_type       = 0x12,
 745		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 746					   svc_cfg),
 747		.ei_array      = wlfw_ce_svc_pipe_cfg_s_v01_ei,
 748	},
 749	{
 750		.data_type      = QMI_OPT_FLAG,
 751		.elem_len       = 1,
 752		.elem_size      = sizeof(u8),
 753		.array_type     = NO_ARRAY,
 754		.tlv_type       = 0x13,
 755		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 756					   shadow_reg_valid),
 757	},
 758	{
 759		.data_type      = QMI_DATA_LEN,
 760		.elem_len       = 1,
 761		.elem_size      = sizeof(u8),
 762		.array_type     = NO_ARRAY,
 763		.tlv_type       = 0x13,
 764		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 765					   shadow_reg_len),
 766	},
 767	{
 768		.data_type      = QMI_STRUCT,
 769		.elem_len       = QMI_WLFW_MAX_NUM_SHADOW_REG_V01,
 770		.elem_size      = sizeof(struct wlfw_shadow_reg_cfg_s_v01),
 771		.array_type       = VAR_LEN_ARRAY,
 772		.tlv_type       = 0x13,
 773		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 774					   shadow_reg),
 775		.ei_array      = wlfw_shadow_reg_cfg_s_v01_ei,
 776	},
 777	{
 778		.data_type      = QMI_OPT_FLAG,
 779		.elem_len       = 1,
 780		.elem_size      = sizeof(u8),
 781		.array_type     = NO_ARRAY,
 782		.tlv_type       = 0x14,
 783		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 784					   shadow_reg_v2_valid),
 785	},
 786	{
 787		.data_type      = QMI_DATA_LEN,
 788		.elem_len       = 1,
 789		.elem_size      = sizeof(u8),
 790		.array_type     = NO_ARRAY,
 791		.tlv_type       = 0x14,
 792		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 793					   shadow_reg_v2_len),
 794	},
 795	{
 796		.data_type      = QMI_STRUCT,
 797		.elem_len       = QMI_WLFW_MAX_SHADOW_REG_V2,
 798		.elem_size      = sizeof(struct wlfw_shadow_reg_v2_cfg_s_v01),
 799		.array_type       = VAR_LEN_ARRAY,
 800		.tlv_type       = 0x14,
 801		.offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
 802					   shadow_reg_v2),
 803		.ei_array      = wlfw_shadow_reg_v2_cfg_s_v01_ei,
 804	},
 805	{}
 806};
 807
 808struct qmi_elem_info wlfw_wlan_cfg_resp_msg_v01_ei[] = {
 809	{
 810		.data_type      = QMI_STRUCT,
 811		.elem_len       = 1,
 812		.elem_size      = sizeof(struct qmi_response_type_v01),
 813		.array_type     = NO_ARRAY,
 814		.tlv_type       = 0x02,
 815		.offset         = offsetof(struct wlfw_wlan_cfg_resp_msg_v01,
 816					   resp),
 817		.ei_array      = qmi_response_type_v01_ei,
 818	},
 819	{}
 820};
 821
 822struct qmi_elem_info wlfw_cap_req_msg_v01_ei[] = {
 823	{}
 824};
 825
 826struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[] = {
 827	{
 828		.data_type      = QMI_STRUCT,
 829		.elem_len       = 1,
 830		.elem_size      = sizeof(struct qmi_response_type_v01),
 831		.array_type     = NO_ARRAY,
 832		.tlv_type       = 0x02,
 833		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 834					   resp),
 835		.ei_array      = qmi_response_type_v01_ei,
 836	},
 837	{
 838		.data_type      = QMI_OPT_FLAG,
 839		.elem_len       = 1,
 840		.elem_size      = sizeof(u8),
 841		.array_type     = NO_ARRAY,
 842		.tlv_type       = 0x10,
 843		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 844					   chip_info_valid),
 845	},
 846	{
 847		.data_type      = QMI_STRUCT,
 848		.elem_len       = 1,
 849		.elem_size      = sizeof(struct wlfw_rf_chip_info_s_v01),
 850		.array_type     = NO_ARRAY,
 851		.tlv_type       = 0x10,
 852		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 853					   chip_info),
 854		.ei_array      = wlfw_rf_chip_info_s_v01_ei,
 855	},
 856	{
 857		.data_type      = QMI_OPT_FLAG,
 858		.elem_len       = 1,
 859		.elem_size      = sizeof(u8),
 860		.array_type     = NO_ARRAY,
 861		.tlv_type       = 0x11,
 862		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 863					   board_info_valid),
 864	},
 865	{
 866		.data_type      = QMI_STRUCT,
 867		.elem_len       = 1,
 868		.elem_size      = sizeof(struct wlfw_rf_board_info_s_v01),
 869		.array_type     = NO_ARRAY,
 870		.tlv_type       = 0x11,
 871		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 872					   board_info),
 873		.ei_array      = wlfw_rf_board_info_s_v01_ei,
 874	},
 875	{
 876		.data_type      = QMI_OPT_FLAG,
 877		.elem_len       = 1,
 878		.elem_size      = sizeof(u8),
 879		.array_type     = NO_ARRAY,
 880		.tlv_type       = 0x12,
 881		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 882					   soc_info_valid),
 883	},
 884	{
 885		.data_type      = QMI_STRUCT,
 886		.elem_len       = 1,
 887		.elem_size      = sizeof(struct wlfw_soc_info_s_v01),
 888		.array_type     = NO_ARRAY,
 889		.tlv_type       = 0x12,
 890		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 891					   soc_info),
 892		.ei_array      = wlfw_soc_info_s_v01_ei,
 893	},
 894	{
 895		.data_type      = QMI_OPT_FLAG,
 896		.elem_len       = 1,
 897		.elem_size      = sizeof(u8),
 898		.array_type     = NO_ARRAY,
 899		.tlv_type       = 0x13,
 900		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 901					   fw_version_info_valid),
 902	},
 903	{
 904		.data_type      = QMI_STRUCT,
 905		.elem_len       = 1,
 906		.elem_size      = sizeof(struct wlfw_fw_version_info_s_v01),
 907		.array_type     = NO_ARRAY,
 908		.tlv_type       = 0x13,
 909		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 910					   fw_version_info),
 911		.ei_array      = wlfw_fw_version_info_s_v01_ei,
 912	},
 913	{
 914		.data_type      = QMI_OPT_FLAG,
 915		.elem_len       = 1,
 916		.elem_size      = sizeof(u8),
 917		.array_type     = NO_ARRAY,
 918		.tlv_type       = 0x14,
 919		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 920					   fw_build_id_valid),
 921	},
 922	{
 923		.data_type      = QMI_STRING,
 924		.elem_len       = QMI_WLFW_MAX_BUILD_ID_LEN_V01 + 1,
 925		.elem_size      = sizeof(char),
 926		.array_type     = NO_ARRAY,
 927		.tlv_type       = 0x14,
 928		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 929					   fw_build_id),
 930	},
 931	{
 932		.data_type      = QMI_OPT_FLAG,
 933		.elem_len       = 1,
 934		.elem_size      = sizeof(u8),
 935		.array_type     = NO_ARRAY,
 936		.tlv_type       = 0x15,
 937		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 938					   num_macs_valid),
 939	},
 940	{
 941		.data_type      = QMI_UNSIGNED_1_BYTE,
 942		.elem_len       = 1,
 943		.elem_size      = sizeof(u8),
 944		.array_type     = NO_ARRAY,
 945		.tlv_type       = 0x15,
 946		.offset         = offsetof(struct wlfw_cap_resp_msg_v01,
 947					   num_macs),
 948	},
 949	{}
 950};
 951
 952struct qmi_elem_info wlfw_bdf_download_req_msg_v01_ei[] = {
 953	{
 954		.data_type      = QMI_UNSIGNED_1_BYTE,
 955		.elem_len       = 1,
 956		.elem_size      = sizeof(u8),
 957		.array_type     = NO_ARRAY,
 958		.tlv_type       = 0x01,
 959		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
 960					   valid),
 961	},
 962	{
 963		.data_type      = QMI_OPT_FLAG,
 964		.elem_len       = 1,
 965		.elem_size      = sizeof(u8),
 966		.array_type     = NO_ARRAY,
 967		.tlv_type       = 0x10,
 968		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
 969					   file_id_valid),
 970	},
 971	{
 972		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
 973		.elem_len       = 1,
 974		.elem_size      = sizeof(enum wlfw_cal_temp_id_enum_v01),
 975		.array_type     = NO_ARRAY,
 976		.tlv_type       = 0x10,
 977		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
 978					   file_id),
 979	},
 980	{
 981		.data_type      = QMI_OPT_FLAG,
 982		.elem_len       = 1,
 983		.elem_size      = sizeof(u8),
 984		.array_type     = NO_ARRAY,
 985		.tlv_type       = 0x11,
 986		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
 987					   total_size_valid),
 988	},
 989	{
 990		.data_type      = QMI_UNSIGNED_4_BYTE,
 991		.elem_len       = 1,
 992		.elem_size      = sizeof(u32),
 993		.array_type     = NO_ARRAY,
 994		.tlv_type       = 0x11,
 995		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
 996					   total_size),
 997	},
 998	{
 999		.data_type      = QMI_OPT_FLAG,
1000		.elem_len       = 1,
1001		.elem_size      = sizeof(u8),
1002		.array_type     = NO_ARRAY,
1003		.tlv_type       = 0x12,
1004		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
1005					   seg_id_valid),
1006	},
1007	{
1008		.data_type      = QMI_UNSIGNED_4_BYTE,
1009		.elem_len       = 1,
1010		.elem_size      = sizeof(u32),
1011		.array_type     = NO_ARRAY,
1012		.tlv_type       = 0x12,
1013		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
1014					   seg_id),
1015	},
1016	{
1017		.data_type      = QMI_OPT_FLAG,
1018		.elem_len       = 1,
1019		.elem_size      = sizeof(u8),
1020		.array_type     = NO_ARRAY,
1021		.tlv_type       = 0x13,
1022		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
1023					   data_valid),
1024	},
1025	{
1026		.data_type      = QMI_DATA_LEN,
1027		.elem_len       = 1,
1028		.elem_size      = sizeof(u16),
1029		.array_type     = NO_ARRAY,
1030		.tlv_type       = 0x13,
1031		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
1032					   data_len),
1033	},
1034	{
1035		.data_type      = QMI_UNSIGNED_1_BYTE,
1036		.elem_len       = QMI_WLFW_MAX_DATA_SIZE_V01,
1037		.elem_size      = sizeof(u8),
1038		.array_type       = VAR_LEN_ARRAY,
1039		.tlv_type       = 0x13,
1040		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
1041					   data),
1042	},
1043	{
1044		.data_type      = QMI_OPT_FLAG,
1045		.elem_len       = 1,
1046		.elem_size      = sizeof(u8),
1047		.array_type     = NO_ARRAY,
1048		.tlv_type       = 0x14,
1049		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
1050					   end_valid),
1051	},
1052	{
1053		.data_type      = QMI_UNSIGNED_1_BYTE,
1054		.elem_len       = 1,
1055		.elem_size      = sizeof(u8),
1056		.array_type     = NO_ARRAY,
1057		.tlv_type       = 0x14,
1058		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
1059					   end),
1060	},
1061	{
1062		.data_type      = QMI_OPT_FLAG,
1063		.elem_len       = 1,
1064		.elem_size      = sizeof(u8),
1065		.array_type     = NO_ARRAY,
1066		.tlv_type       = 0x15,
1067		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
1068					   bdf_type_valid),
1069	},
1070	{
1071		.data_type      = QMI_UNSIGNED_1_BYTE,
1072		.elem_len       = 1,
1073		.elem_size      = sizeof(u8),
1074		.array_type     = NO_ARRAY,
1075		.tlv_type       = 0x15,
1076		.offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
1077					   bdf_type),
1078	},
1079	{}
1080};
1081
1082struct qmi_elem_info wlfw_bdf_download_resp_msg_v01_ei[] = {
1083	{
1084		.data_type      = QMI_STRUCT,
1085		.elem_len       = 1,
1086		.elem_size      = sizeof(struct qmi_response_type_v01),
1087		.array_type     = NO_ARRAY,
1088		.tlv_type       = 0x02,
1089		.offset         = offsetof(struct wlfw_bdf_download_resp_msg_v01,
1090					   resp),
1091		.ei_array      = qmi_response_type_v01_ei,
1092	},
1093	{}
1094};
1095
1096struct qmi_elem_info wlfw_cal_report_req_msg_v01_ei[] = {
1097	{
1098		.data_type      = QMI_DATA_LEN,
1099		.elem_len       = 1,
1100		.elem_size      = sizeof(u8),
1101		.array_type     = NO_ARRAY,
1102		.tlv_type       = 0x01,
1103		.offset         = offsetof(struct wlfw_cal_report_req_msg_v01,
1104					   meta_data_len),
1105	},
1106	{
1107		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
1108		.elem_len       = QMI_WLFW_MAX_NUM_CAL_V01,
1109		.elem_size      = sizeof(enum wlfw_cal_temp_id_enum_v01),
1110		.array_type       = VAR_LEN_ARRAY,
1111		.tlv_type       = 0x01,
1112		.offset         = offsetof(struct wlfw_cal_report_req_msg_v01,
1113					   meta_data),
1114	},
1115	{
1116		.data_type      = QMI_OPT_FLAG,
1117		.elem_len       = 1,
1118		.elem_size      = sizeof(u8),
1119		.array_type     = NO_ARRAY,
1120		.tlv_type       = 0x10,
1121		.offset         = offsetof(struct wlfw_cal_report_req_msg_v01,
1122					   xo_cal_data_valid),
1123	},
1124	{
1125		.data_type      = QMI_UNSIGNED_1_BYTE,
1126		.elem_len       = 1,
1127		.elem_size      = sizeof(u8),
1128		.array_type     = NO_ARRAY,
1129		.tlv_type       = 0x10,
1130		.offset         = offsetof(struct wlfw_cal_report_req_msg_v01,
1131					   xo_cal_data),
1132	},
1133	{}
1134};
1135
1136struct qmi_elem_info wlfw_cal_report_resp_msg_v01_ei[] = {
1137	{
1138		.data_type      = QMI_STRUCT,
1139		.elem_len       = 1,
1140		.elem_size      = sizeof(struct qmi_response_type_v01),
1141		.array_type     = NO_ARRAY,
1142		.tlv_type       = 0x02,
1143		.offset         = offsetof(struct wlfw_cal_report_resp_msg_v01,
1144					   resp),
1145		.ei_array      = qmi_response_type_v01_ei,
1146	},
1147	{}
1148};
1149
1150struct qmi_elem_info wlfw_initiate_cal_download_ind_msg_v01_ei[] = {
1151	{
1152		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
1153		.elem_len       = 1,
1154		.elem_size      = sizeof(enum wlfw_cal_temp_id_enum_v01),
1155		.array_type     = NO_ARRAY,
1156		.tlv_type       = 0x01,
1157		.offset         = offsetof(struct wlfw_initiate_cal_download_ind_msg_v01,
1158					   cal_id),
1159	},
1160	{}
1161};
1162
1163struct qmi_elem_info wlfw_cal_download_req_msg_v01_ei[] = {
1164	{
1165		.data_type      = QMI_UNSIGNED_1_BYTE,
1166		.elem_len       = 1,
1167		.elem_size      = sizeof(u8),
1168		.array_type     = NO_ARRAY,
1169		.tlv_type       = 0x01,
1170		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1171					   valid),
1172	},
1173	{
1174		.data_type      = QMI_OPT_FLAG,
1175		.elem_len       = 1,
1176		.elem_size      = sizeof(u8),
1177		.array_type     = NO_ARRAY,
1178		.tlv_type       = 0x10,
1179		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1180					   file_id_valid),
1181	},
1182	{
1183		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
1184		.elem_len       = 1,
1185		.elem_size      = sizeof(enum wlfw_cal_temp_id_enum_v01),
1186		.array_type     = NO_ARRAY,
1187		.tlv_type       = 0x10,
1188		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1189					   file_id),
1190	},
1191	{
1192		.data_type      = QMI_OPT_FLAG,
1193		.elem_len       = 1,
1194		.elem_size      = sizeof(u8),
1195		.array_type     = NO_ARRAY,
1196		.tlv_type       = 0x11,
1197		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1198					   total_size_valid),
1199	},
1200	{
1201		.data_type      = QMI_UNSIGNED_4_BYTE,
1202		.elem_len       = 1,
1203		.elem_size      = sizeof(u32),
1204		.array_type     = NO_ARRAY,
1205		.tlv_type       = 0x11,
1206		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1207					   total_size),
1208	},
1209	{
1210		.data_type      = QMI_OPT_FLAG,
1211		.elem_len       = 1,
1212		.elem_size      = sizeof(u8),
1213		.array_type     = NO_ARRAY,
1214		.tlv_type       = 0x12,
1215		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1216					   seg_id_valid),
1217	},
1218	{
1219		.data_type      = QMI_UNSIGNED_4_BYTE,
1220		.elem_len       = 1,
1221		.elem_size      = sizeof(u32),
1222		.array_type     = NO_ARRAY,
1223		.tlv_type       = 0x12,
1224		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1225					   seg_id),
1226	},
1227	{
1228		.data_type      = QMI_OPT_FLAG,
1229		.elem_len       = 1,
1230		.elem_size      = sizeof(u8),
1231		.array_type     = NO_ARRAY,
1232		.tlv_type       = 0x13,
1233		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1234					   data_valid),
1235	},
1236	{
1237		.data_type      = QMI_DATA_LEN,
1238		.elem_len       = 1,
1239		.elem_size      = sizeof(u16),
1240		.array_type     = NO_ARRAY,
1241		.tlv_type       = 0x13,
1242		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1243					   data_len),
1244	},
1245	{
1246		.data_type      = QMI_UNSIGNED_1_BYTE,
1247		.elem_len       = QMI_WLFW_MAX_DATA_SIZE_V01,
1248		.elem_size      = sizeof(u8),
1249		.array_type       = VAR_LEN_ARRAY,
1250		.tlv_type       = 0x13,
1251		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1252					   data),
1253	},
1254	{
1255		.data_type      = QMI_OPT_FLAG,
1256		.elem_len       = 1,
1257		.elem_size      = sizeof(u8),
1258		.array_type     = NO_ARRAY,
1259		.tlv_type       = 0x14,
1260		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1261					   end_valid),
1262	},
1263	{
1264		.data_type      = QMI_UNSIGNED_1_BYTE,
1265		.elem_len       = 1,
1266		.elem_size      = sizeof(u8),
1267		.array_type     = NO_ARRAY,
1268		.tlv_type       = 0x14,
1269		.offset         = offsetof(struct wlfw_cal_download_req_msg_v01,
1270					   end),
1271	},
1272	{}
1273};
1274
1275struct qmi_elem_info wlfw_cal_download_resp_msg_v01_ei[] = {
1276	{
1277		.data_type      = QMI_STRUCT,
1278		.elem_len       = 1,
1279		.elem_size      = sizeof(struct qmi_response_type_v01),
1280		.array_type     = NO_ARRAY,
1281		.tlv_type       = 0x02,
1282		.offset         = offsetof(struct wlfw_cal_download_resp_msg_v01,
1283					   resp),
1284		.ei_array      = qmi_response_type_v01_ei,
1285	},
1286	{}
1287};
1288
1289struct qmi_elem_info wlfw_initiate_cal_update_ind_msg_v01_ei[] = {
1290	{
1291		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
1292		.elem_len       = 1,
1293		.elem_size      = sizeof(enum wlfw_cal_temp_id_enum_v01),
1294		.array_type     = NO_ARRAY,
1295		.tlv_type       = 0x01,
1296		.offset         = offsetof(struct wlfw_initiate_cal_update_ind_msg_v01,
1297					   cal_id),
1298	},
1299	{
1300		.data_type      = QMI_UNSIGNED_4_BYTE,
1301		.elem_len       = 1,
1302		.elem_size      = sizeof(u32),
1303		.array_type     = NO_ARRAY,
1304		.tlv_type       = 0x02,
1305		.offset         = offsetof(struct wlfw_initiate_cal_update_ind_msg_v01,
1306					   total_size),
1307	},
1308	{}
1309};
1310
1311struct qmi_elem_info wlfw_cal_update_req_msg_v01_ei[] = {
1312	{
1313		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
1314		.elem_len       = 1,
1315		.elem_size      = sizeof(enum wlfw_cal_temp_id_enum_v01),
1316		.array_type     = NO_ARRAY,
1317		.tlv_type       = 0x01,
1318		.offset         = offsetof(struct wlfw_cal_update_req_msg_v01,
1319					   cal_id),
1320	},
1321	{
1322		.data_type      = QMI_UNSIGNED_4_BYTE,
1323		.elem_len       = 1,
1324		.elem_size      = sizeof(u32),
1325		.array_type     = NO_ARRAY,
1326		.tlv_type       = 0x02,
1327		.offset         = offsetof(struct wlfw_cal_update_req_msg_v01,
1328					   seg_id),
1329	},
1330	{}
1331};
1332
1333struct qmi_elem_info wlfw_cal_update_resp_msg_v01_ei[] = {
1334	{
1335		.data_type      = QMI_STRUCT,
1336		.elem_len       = 1,
1337		.elem_size      = sizeof(struct qmi_response_type_v01),
1338		.array_type     = NO_ARRAY,
1339		.tlv_type       = 0x02,
1340		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1341					   resp),
1342		.ei_array      = qmi_response_type_v01_ei,
1343	},
1344	{
1345		.data_type      = QMI_OPT_FLAG,
1346		.elem_len       = 1,
1347		.elem_size      = sizeof(u8),
1348		.array_type     = NO_ARRAY,
1349		.tlv_type       = 0x10,
1350		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1351					   file_id_valid),
1352	},
1353	{
1354		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
1355		.elem_len       = 1,
1356		.elem_size      = sizeof(enum wlfw_cal_temp_id_enum_v01),
1357		.array_type     = NO_ARRAY,
1358		.tlv_type       = 0x10,
1359		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1360					   file_id),
1361	},
1362	{
1363		.data_type      = QMI_OPT_FLAG,
1364		.elem_len       = 1,
1365		.elem_size      = sizeof(u8),
1366		.array_type     = NO_ARRAY,
1367		.tlv_type       = 0x11,
1368		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1369					   total_size_valid),
1370	},
1371	{
1372		.data_type      = QMI_UNSIGNED_4_BYTE,
1373		.elem_len       = 1,
1374		.elem_size      = sizeof(u32),
1375		.array_type     = NO_ARRAY,
1376		.tlv_type       = 0x11,
1377		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1378					   total_size),
1379	},
1380	{
1381		.data_type      = QMI_OPT_FLAG,
1382		.elem_len       = 1,
1383		.elem_size      = sizeof(u8),
1384		.array_type     = NO_ARRAY,
1385		.tlv_type       = 0x12,
1386		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1387					   seg_id_valid),
1388	},
1389	{
1390		.data_type      = QMI_UNSIGNED_4_BYTE,
1391		.elem_len       = 1,
1392		.elem_size      = sizeof(u32),
1393		.array_type     = NO_ARRAY,
1394		.tlv_type       = 0x12,
1395		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1396					   seg_id),
1397	},
1398	{
1399		.data_type      = QMI_OPT_FLAG,
1400		.elem_len       = 1,
1401		.elem_size      = sizeof(u8),
1402		.array_type     = NO_ARRAY,
1403		.tlv_type       = 0x13,
1404		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1405					   data_valid),
1406	},
1407	{
1408		.data_type      = QMI_DATA_LEN,
1409		.elem_len       = 1,
1410		.elem_size      = sizeof(u16),
1411		.array_type     = NO_ARRAY,
1412		.tlv_type       = 0x13,
1413		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1414					   data_len),
1415	},
1416	{
1417		.data_type      = QMI_UNSIGNED_1_BYTE,
1418		.elem_len       = QMI_WLFW_MAX_DATA_SIZE_V01,
1419		.elem_size      = sizeof(u8),
1420		.array_type       = VAR_LEN_ARRAY,
1421		.tlv_type       = 0x13,
1422		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1423					   data),
1424	},
1425	{
1426		.data_type      = QMI_OPT_FLAG,
1427		.elem_len       = 1,
1428		.elem_size      = sizeof(u8),
1429		.array_type     = NO_ARRAY,
1430		.tlv_type       = 0x14,
1431		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1432					   end_valid),
1433	},
1434	{
1435		.data_type      = QMI_UNSIGNED_1_BYTE,
1436		.elem_len       = 1,
1437		.elem_size      = sizeof(u8),
1438		.array_type     = NO_ARRAY,
1439		.tlv_type       = 0x14,
1440		.offset         = offsetof(struct wlfw_cal_update_resp_msg_v01,
1441					   end),
1442	},
1443	{}
1444};
1445
1446struct qmi_elem_info wlfw_msa_info_req_msg_v01_ei[] = {
1447	{
1448		.data_type      = QMI_UNSIGNED_8_BYTE,
1449		.elem_len       = 1,
1450		.elem_size      = sizeof(u64),
1451		.array_type     = NO_ARRAY,
1452		.tlv_type       = 0x01,
1453		.offset         = offsetof(struct wlfw_msa_info_req_msg_v01,
1454					   msa_addr),
1455	},
1456	{
1457		.data_type      = QMI_UNSIGNED_4_BYTE,
1458		.elem_len       = 1,
1459		.elem_size      = sizeof(u32),
1460		.array_type     = NO_ARRAY,
1461		.tlv_type       = 0x02,
1462		.offset         = offsetof(struct wlfw_msa_info_req_msg_v01,
1463					   size),
1464	},
1465	{}
1466};
1467
1468struct qmi_elem_info wlfw_msa_info_resp_msg_v01_ei[] = {
1469	{
1470		.data_type      = QMI_STRUCT,
1471		.elem_len       = 1,
1472		.elem_size      = sizeof(struct qmi_response_type_v01),
1473		.array_type     = NO_ARRAY,
1474		.tlv_type       = 0x02,
1475		.offset         = offsetof(struct wlfw_msa_info_resp_msg_v01,
1476					   resp),
1477		.ei_array      = qmi_response_type_v01_ei,
1478	},
1479	{
1480		.data_type      = QMI_DATA_LEN,
1481		.elem_len       = 1,
1482		.elem_size      = sizeof(u8),
1483		.array_type     = NO_ARRAY,
1484		.tlv_type       = 0x03,
1485		.offset         = offsetof(struct wlfw_msa_info_resp_msg_v01,
1486					   mem_region_info_len),
1487	},
1488	{
1489		.data_type      = QMI_STRUCT,
1490		.elem_len       = QMI_WLFW_MAX_MEM_REG_V01,
1491		.elem_size      = sizeof(struct wlfw_memory_region_info_s_v01),
1492		.array_type       = VAR_LEN_ARRAY,
1493		.tlv_type       = 0x03,
1494		.offset         = offsetof(struct wlfw_msa_info_resp_msg_v01,
1495					   mem_region_info),
1496		.ei_array      = wlfw_memory_region_info_s_v01_ei,
1497	},
1498	{}
1499};
1500
1501struct qmi_elem_info wlfw_msa_ready_req_msg_v01_ei[] = {
1502	{}
1503};
1504
1505struct qmi_elem_info wlfw_msa_ready_resp_msg_v01_ei[] = {
1506	{
1507		.data_type      = QMI_STRUCT,
1508		.elem_len       = 1,
1509		.elem_size      = sizeof(struct qmi_response_type_v01),
1510		.array_type     = NO_ARRAY,
1511		.tlv_type       = 0x02,
1512		.offset         = offsetof(struct wlfw_msa_ready_resp_msg_v01,
1513					   resp),
1514		.ei_array      = qmi_response_type_v01_ei,
1515	},
1516	{}
1517};
1518
1519struct qmi_elem_info wlfw_ini_req_msg_v01_ei[] = {
1520	{
1521		.data_type      = QMI_OPT_FLAG,
1522		.elem_len       = 1,
1523		.elem_size      = sizeof(u8),
1524		.array_type     = NO_ARRAY,
1525		.tlv_type       = 0x10,
1526		.offset         = offsetof(struct wlfw_ini_req_msg_v01,
1527					   enablefwlog_valid),
1528	},
1529	{
1530		.data_type      = QMI_UNSIGNED_1_BYTE,
1531		.elem_len       = 1,
1532		.elem_size      = sizeof(u8),
1533		.array_type     = NO_ARRAY,
1534		.tlv_type       = 0x10,
1535		.offset         = offsetof(struct wlfw_ini_req_msg_v01,
1536					   enablefwlog),
1537	},
1538	{}
1539};
1540
1541struct qmi_elem_info wlfw_ini_resp_msg_v01_ei[] = {
1542	{
1543		.data_type      = QMI_STRUCT,
1544		.elem_len       = 1,
1545		.elem_size      = sizeof(struct qmi_response_type_v01),
1546		.array_type     = NO_ARRAY,
1547		.tlv_type       = 0x02,
1548		.offset         = offsetof(struct wlfw_ini_resp_msg_v01,
1549					   resp),
1550		.ei_array      = qmi_response_type_v01_ei,
1551	},
1552	{}
1553};
1554
1555struct qmi_elem_info wlfw_athdiag_read_req_msg_v01_ei[] = {
1556	{
1557		.data_type      = QMI_UNSIGNED_4_BYTE,
1558		.elem_len       = 1,
1559		.elem_size      = sizeof(u32),
1560		.array_type     = NO_ARRAY,
1561		.tlv_type       = 0x01,
1562		.offset         = offsetof(struct wlfw_athdiag_read_req_msg_v01,
1563					   offset),
1564	},
1565	{
1566		.data_type      = QMI_UNSIGNED_4_BYTE,
1567		.elem_len       = 1,
1568		.elem_size      = sizeof(u32),
1569		.array_type     = NO_ARRAY,
1570		.tlv_type       = 0x02,
1571		.offset         = offsetof(struct wlfw_athdiag_read_req_msg_v01,
1572					   mem_type),
1573	},
1574	{
1575		.data_type      = QMI_UNSIGNED_4_BYTE,
1576		.elem_len       = 1,
1577		.elem_size      = sizeof(u32),
1578		.array_type     = NO_ARRAY,
1579		.tlv_type       = 0x03,
1580		.offset         = offsetof(struct wlfw_athdiag_read_req_msg_v01,
1581					   data_len),
1582	},
1583	{}
1584};
1585
1586struct qmi_elem_info wlfw_athdiag_read_resp_msg_v01_ei[] = {
1587	{
1588		.data_type      = QMI_STRUCT,
1589		.elem_len       = 1,
1590		.elem_size      = sizeof(struct qmi_response_type_v01),
1591		.array_type     = NO_ARRAY,
1592		.tlv_type       = 0x02,
1593		.offset         = offsetof(struct wlfw_athdiag_read_resp_msg_v01,
1594					   resp),
1595		.ei_array      = qmi_response_type_v01_ei,
1596	},
1597	{
1598		.data_type      = QMI_OPT_FLAG,
1599		.elem_len       = 1,
1600		.elem_size      = sizeof(u8),
1601		.array_type     = NO_ARRAY,
1602		.tlv_type       = 0x10,
1603		.offset         = offsetof(struct wlfw_athdiag_read_resp_msg_v01,
1604					   data_valid),
1605	},
1606	{
1607		.data_type      = QMI_DATA_LEN,
1608		.elem_len       = 1,
1609		.elem_size      = sizeof(u16),
1610		.array_type     = NO_ARRAY,
1611		.tlv_type       = 0x10,
1612		.offset         = offsetof(struct wlfw_athdiag_read_resp_msg_v01,
1613					   data_len),
1614	},
1615	{
1616		.data_type      = QMI_UNSIGNED_1_BYTE,
1617		.elem_len       = QMI_WLFW_MAX_ATHDIAG_DATA_SIZE_V01,
1618		.elem_size      = sizeof(u8),
1619		.array_type       = VAR_LEN_ARRAY,
1620		.tlv_type       = 0x10,
1621		.offset         = offsetof(struct wlfw_athdiag_read_resp_msg_v01,
1622					   data),
1623	},
1624	{}
1625};
1626
1627struct qmi_elem_info wlfw_athdiag_write_req_msg_v01_ei[] = {
1628	{
1629		.data_type      = QMI_UNSIGNED_4_BYTE,
1630		.elem_len       = 1,
1631		.elem_size      = sizeof(u32),
1632		.array_type     = NO_ARRAY,
1633		.tlv_type       = 0x01,
1634		.offset         = offsetof(struct wlfw_athdiag_write_req_msg_v01,
1635					   offset),
1636	},
1637	{
1638		.data_type      = QMI_UNSIGNED_4_BYTE,
1639		.elem_len       = 1,
1640		.elem_size      = sizeof(u32),
1641		.array_type     = NO_ARRAY,
1642		.tlv_type       = 0x02,
1643		.offset         = offsetof(struct wlfw_athdiag_write_req_msg_v01,
1644					   mem_type),
1645	},
1646	{
1647		.data_type      = QMI_DATA_LEN,
1648		.elem_len       = 1,
1649		.elem_size      = sizeof(u16),
1650		.array_type     = NO_ARRAY,
1651		.tlv_type       = 0x03,
1652		.offset         = offsetof(struct wlfw_athdiag_write_req_msg_v01,
1653					   data_len),
1654	},
1655	{
1656		.data_type      = QMI_UNSIGNED_1_BYTE,
1657		.elem_len       = QMI_WLFW_MAX_ATHDIAG_DATA_SIZE_V01,
1658		.elem_size      = sizeof(u8),
1659		.array_type       = VAR_LEN_ARRAY,
1660		.tlv_type       = 0x03,
1661		.offset         = offsetof(struct wlfw_athdiag_write_req_msg_v01,
1662					   data),
1663	},
1664	{}
1665};
1666
1667struct qmi_elem_info wlfw_athdiag_write_resp_msg_v01_ei[] = {
1668	{
1669		.data_type      = QMI_STRUCT,
1670		.elem_len       = 1,
1671		.elem_size      = sizeof(struct qmi_response_type_v01),
1672		.array_type     = NO_ARRAY,
1673		.tlv_type       = 0x02,
1674		.offset         = offsetof(struct wlfw_athdiag_write_resp_msg_v01,
1675					   resp),
1676		.ei_array      = qmi_response_type_v01_ei,
1677	},
1678	{}
1679};
1680
1681struct qmi_elem_info wlfw_vbatt_req_msg_v01_ei[] = {
1682	{
1683		.data_type      = QMI_UNSIGNED_8_BYTE,
1684		.elem_len       = 1,
1685		.elem_size      = sizeof(u64),
1686		.array_type     = NO_ARRAY,
1687		.tlv_type       = 0x01,
1688		.offset         = offsetof(struct wlfw_vbatt_req_msg_v01,
1689					   voltage_uv),
1690	},
1691	{}
1692};
1693
1694struct qmi_elem_info wlfw_vbatt_resp_msg_v01_ei[] = {
1695	{
1696		.data_type      = QMI_STRUCT,
1697		.elem_len       = 1,
1698		.elem_size      = sizeof(struct qmi_response_type_v01),
1699		.array_type     = NO_ARRAY,
1700		.tlv_type       = 0x02,
1701		.offset         = offsetof(struct wlfw_vbatt_resp_msg_v01,
1702					   resp),
1703		.ei_array      = qmi_response_type_v01_ei,
1704	},
1705	{}
1706};
1707
1708struct qmi_elem_info wlfw_mac_addr_req_msg_v01_ei[] = {
1709	{
1710		.data_type      = QMI_OPT_FLAG,
1711		.elem_len       = 1,
1712		.elem_size      = sizeof(u8),
1713		.array_type     = NO_ARRAY,
1714		.tlv_type       = 0x10,
1715		.offset         = offsetof(struct wlfw_mac_addr_req_msg_v01,
1716					   mac_addr_valid),
1717	},
1718	{
1719		.data_type      = QMI_UNSIGNED_1_BYTE,
1720		.elem_len       = QMI_WLFW_MAC_ADDR_SIZE_V01,
1721		.elem_size      = sizeof(u8),
1722		.array_type       = STATIC_ARRAY,
1723		.tlv_type       = 0x10,
1724		.offset         = offsetof(struct wlfw_mac_addr_req_msg_v01,
1725					   mac_addr),
1726	},
1727	{}
1728};
1729
1730struct qmi_elem_info wlfw_mac_addr_resp_msg_v01_ei[] = {
1731	{
1732		.data_type      = QMI_STRUCT,
1733		.elem_len       = 1,
1734		.elem_size      = sizeof(struct qmi_response_type_v01),
1735		.array_type     = NO_ARRAY,
1736		.tlv_type       = 0x02,
1737		.offset         = offsetof(struct wlfw_mac_addr_resp_msg_v01,
1738					   resp),
1739		.ei_array      = qmi_response_type_v01_ei,
1740	},
1741	{}
1742};
1743
1744struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[] = {
1745	{
1746		.data_type      = QMI_OPT_FLAG,
1747		.elem_len       = 1,
1748		.elem_size      = sizeof(u8),
1749		.array_type     = NO_ARRAY,
1750		.tlv_type       = 0x10,
1751		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1752					   daemon_support_valid),
1753	},
1754	{
1755		.data_type      = QMI_UNSIGNED_4_BYTE,
1756		.elem_len       = 1,
1757		.elem_size      = sizeof(u32),
1758		.array_type     = NO_ARRAY,
1759		.tlv_type       = 0x10,
1760		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1761					   daemon_support),
1762	},
1763	{
1764		.data_type      = QMI_OPT_FLAG,
1765		.elem_len       = 1,
1766		.elem_size      = sizeof(u8),
1767		.array_type     = NO_ARRAY,
1768		.tlv_type       = 0x11,
1769		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1770					   wake_msi_valid),
1771	},
1772	{
1773		.data_type      = QMI_UNSIGNED_4_BYTE,
1774		.elem_len       = 1,
1775		.elem_size      = sizeof(u32),
1776		.array_type     = NO_ARRAY,
1777		.tlv_type       = 0x11,
1778		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1779					   wake_msi),
1780	},
1781	{
1782		.data_type      = QMI_OPT_FLAG,
1783		.elem_len       = 1,
1784		.elem_size      = sizeof(u8),
1785		.array_type     = NO_ARRAY,
1786		.tlv_type       = 0x12,
1787		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1788					   gpios_valid),
1789	},
1790	{
1791		.data_type      = QMI_DATA_LEN,
1792		.elem_len       = 1,
1793		.elem_size      = sizeof(u32),
1794		.array_type     = NO_ARRAY,
1795		.tlv_type       = 0x12,
1796		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1797					   gpios_len),
1798	},
1799	{
1800		.data_type      = QMI_UNSIGNED_4_BYTE,
1801		.elem_len       = QMI_WLFW_MAX_NUM_GPIO_V01,
1802		.elem_size      = sizeof(u32),
1803		.array_type     = VAR_LEN_ARRAY,
1804		.tlv_type       = 0x12,
1805		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1806					   gpios),
1807	},
1808	{
1809		.data_type      = QMI_OPT_FLAG,
1810		.elem_len       = 1,
1811		.elem_size      = sizeof(u8),
1812		.array_type     = NO_ARRAY,
1813		.tlv_type       = 0x13,
1814		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1815					   nm_modem_valid),
1816	},
1817	{
1818		.data_type      = QMI_UNSIGNED_1_BYTE,
1819		.elem_len       = 1,
1820		.elem_size      = sizeof(u8),
1821		.array_type     = NO_ARRAY,
1822		.tlv_type       = 0x13,
1823		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1824					   nm_modem),
1825	},
1826	{
1827		.data_type      = QMI_OPT_FLAG,
1828		.elem_len       = 1,
1829		.elem_size      = sizeof(u8),
1830		.array_type     = NO_ARRAY,
1831		.tlv_type       = 0x14,
1832		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1833					   bdf_support_valid),
1834	},
1835	{
1836		.data_type      = QMI_UNSIGNED_1_BYTE,
1837		.elem_len       = 1,
1838		.elem_size      = sizeof(u8),
1839		.array_type     = NO_ARRAY,
1840		.tlv_type       = 0x14,
1841		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1842					   bdf_support),
1843	},
1844	{
1845		.data_type      = QMI_OPT_FLAG,
1846		.elem_len       = 1,
1847		.elem_size      = sizeof(u8),
1848		.array_type     = NO_ARRAY,
1849		.tlv_type       = 0x15,
1850		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1851					   bdf_cache_support_valid),
1852	},
1853	{
1854		.data_type      = QMI_UNSIGNED_1_BYTE,
1855		.elem_len       = 1,
1856		.elem_size      = sizeof(u8),
1857		.array_type     = NO_ARRAY,
1858		.tlv_type       = 0x15,
1859		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1860					   bdf_cache_support),
1861	},
1862	{
1863		.data_type      = QMI_OPT_FLAG,
1864		.elem_len       = 1,
1865		.elem_size      = sizeof(u8),
1866		.array_type     = NO_ARRAY,
1867		.tlv_type       = 0x16,
1868		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1869					   m3_support_valid),
1870	},
1871	{
1872		.data_type      = QMI_UNSIGNED_1_BYTE,
1873		.elem_len       = 1,
1874		.elem_size      = sizeof(u8),
1875		.array_type     = NO_ARRAY,
1876		.tlv_type       = 0x16,
1877		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1878					   m3_support),
1879	},
1880	{
1881		.data_type      = QMI_OPT_FLAG,
1882		.elem_len       = 1,
1883		.elem_size      = sizeof(u8),
1884		.array_type     = NO_ARRAY,
1885		.tlv_type       = 0x17,
1886		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1887					   m3_cache_support_valid),
1888	},
1889	{
1890		.data_type      = QMI_UNSIGNED_1_BYTE,
1891		.elem_len       = 1,
1892		.elem_size      = sizeof(u8),
1893		.array_type     = NO_ARRAY,
1894		.tlv_type       = 0x17,
1895		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1896					   m3_cache_support),
1897	},
1898	{
1899		.data_type      = QMI_OPT_FLAG,
1900		.elem_len       = 1,
1901		.elem_size      = sizeof(u8),
1902		.array_type     = NO_ARRAY,
1903		.tlv_type       = 0x18,
1904		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1905					   cal_filesys_support_valid),
1906	},
1907	{
1908		.data_type      = QMI_UNSIGNED_1_BYTE,
1909		.elem_len       = 1,
1910		.elem_size      = sizeof(u8),
1911		.array_type     = NO_ARRAY,
1912		.tlv_type       = 0x18,
1913		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1914					   cal_filesys_support),
1915	},
1916	{
1917		.data_type      = QMI_OPT_FLAG,
1918		.elem_len       = 1,
1919		.elem_size      = sizeof(u8),
1920		.array_type     = NO_ARRAY,
1921		.tlv_type       = 0x19,
1922		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1923					   cal_cache_support_valid),
1924	},
1925	{
1926		.data_type      = QMI_UNSIGNED_1_BYTE,
1927		.elem_len       = 1,
1928		.elem_size      = sizeof(u8),
1929		.array_type     = NO_ARRAY,
1930		.tlv_type       = 0x19,
1931		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1932					   cal_cache_support),
1933	},
1934	{
1935		.data_type      = QMI_OPT_FLAG,
1936		.elem_len       = 1,
1937		.elem_size      = sizeof(u8),
1938		.array_type     = NO_ARRAY,
1939		.tlv_type       = 0x1A,
1940		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1941					   cal_done_valid),
1942	},
1943	{
1944		.data_type      = QMI_UNSIGNED_1_BYTE,
1945		.elem_len       = 1,
1946		.elem_size      = sizeof(u8),
1947		.array_type     = NO_ARRAY,
1948		.tlv_type       = 0x1A,
1949		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1950					   cal_done),
1951	},
1952	{
1953		.data_type      = QMI_OPT_FLAG,
1954		.elem_len       = 1,
1955		.elem_size      = sizeof(u8),
1956		.array_type     = NO_ARRAY,
1957		.tlv_type       = 0x1B,
1958		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1959					   mem_bucket_valid),
1960	},
1961	{
1962		.data_type      = QMI_UNSIGNED_4_BYTE,
1963		.elem_len       = 1,
1964		.elem_size      = sizeof(u32),
1965		.array_type     = NO_ARRAY,
1966		.tlv_type       = 0x1B,
1967		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1968					   mem_bucket),
1969	},
1970	{
1971		.data_type      = QMI_OPT_FLAG,
1972		.elem_len       = 1,
1973		.elem_size      = sizeof(u8),
1974		.array_type     = NO_ARRAY,
1975		.tlv_type       = 0x1C,
1976		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1977					   mem_cfg_mode_valid),
1978	},
1979	{
1980		.data_type      = QMI_UNSIGNED_1_BYTE,
1981		.elem_len       = 1,
1982		.elem_size      = sizeof(u8),
1983		.array_type     = NO_ARRAY,
1984		.tlv_type       = 0x1C,
1985		.offset         = offsetof(struct wlfw_host_cap_req_msg_v01,
1986					   mem_cfg_mode),
1987	},
1988	{}
1989};
1990
1991struct qmi_elem_info wlfw_host_cap_resp_msg_v01_ei[] = {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1992	{
1993		.data_type      = QMI_STRUCT,
1994		.elem_len       = 1,
1995		.elem_size      = sizeof(struct qmi_response_type_v01),
1996		.array_type     = NO_ARRAY,
1997		.tlv_type       = 0x02,
1998		.offset         = offsetof(struct wlfw_host_cap_resp_msg_v01,
1999					   resp),
2000		.ei_array      = qmi_response_type_v01_ei,
2001	},
2002	{}
2003};
2004
2005struct qmi_elem_info wlfw_request_mem_ind_msg_v01_ei[] = {
2006	{
2007		.data_type      = QMI_DATA_LEN,
2008		.elem_len       = 1,
2009		.elem_size      = sizeof(u8),
2010		.array_type     = NO_ARRAY,
2011		.tlv_type       = 0x01,
2012		.offset         = offsetof(struct wlfw_request_mem_ind_msg_v01,
2013					   mem_seg_len),
2014	},
2015	{
2016		.data_type      = QMI_STRUCT,
2017		.elem_len       = QMI_WLFW_MAX_NUM_MEM_SEG_V01,
2018		.elem_size      = sizeof(struct wlfw_mem_seg_s_v01),
2019		.array_type       = VAR_LEN_ARRAY,
2020		.tlv_type       = 0x01,
2021		.offset         = offsetof(struct wlfw_request_mem_ind_msg_v01,
2022					   mem_seg),
2023		.ei_array      = wlfw_mem_seg_s_v01_ei,
2024	},
2025	{}
2026};
2027
2028struct qmi_elem_info wlfw_respond_mem_req_msg_v01_ei[] = {
2029	{
2030		.data_type      = QMI_DATA_LEN,
2031		.elem_len       = 1,
2032		.elem_size      = sizeof(u8),
2033		.array_type     = NO_ARRAY,
2034		.tlv_type       = 0x01,
2035		.offset         = offsetof(struct wlfw_respond_mem_req_msg_v01,
2036					   mem_seg_len),
2037	},
2038	{
2039		.data_type      = QMI_STRUCT,
2040		.elem_len       = QMI_WLFW_MAX_NUM_MEM_SEG_V01,
2041		.elem_size      = sizeof(struct wlfw_mem_seg_resp_s_v01),
2042		.array_type       = VAR_LEN_ARRAY,
2043		.tlv_type       = 0x01,
2044		.offset         = offsetof(struct wlfw_respond_mem_req_msg_v01,
2045					   mem_seg),
2046		.ei_array      = wlfw_mem_seg_resp_s_v01_ei,
2047	},
2048	{}
2049};
2050
2051struct qmi_elem_info wlfw_respond_mem_resp_msg_v01_ei[] = {
2052	{
2053		.data_type      = QMI_STRUCT,
2054		.elem_len       = 1,
2055		.elem_size      = sizeof(struct qmi_response_type_v01),
2056		.array_type     = NO_ARRAY,
2057		.tlv_type       = 0x02,
2058		.offset         = offsetof(struct wlfw_respond_mem_resp_msg_v01,
2059					   resp),
2060		.ei_array      = qmi_response_type_v01_ei,
2061	},
2062	{}
2063};
2064
2065struct qmi_elem_info wlfw_mem_ready_ind_msg_v01_ei[] = {
2066	{}
2067};
2068
2069struct qmi_elem_info wlfw_fw_init_done_ind_msg_v01_ei[] = {
2070	{}
2071};
2072
2073struct qmi_elem_info wlfw_rejuvenate_ind_msg_v01_ei[] = {
2074	{
2075		.data_type      = QMI_OPT_FLAG,
2076		.elem_len       = 1,
2077		.elem_size      = sizeof(u8),
2078		.array_type     = NO_ARRAY,
2079		.tlv_type       = 0x10,
2080		.offset         = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2081					   cause_for_rejuvenation_valid),
2082	},
2083	{
2084		.data_type      = QMI_UNSIGNED_1_BYTE,
2085		.elem_len       = 1,
2086		.elem_size      = sizeof(u8),
2087		.array_type     = NO_ARRAY,
2088		.tlv_type       = 0x10,
2089		.offset         = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2090					   cause_for_rejuvenation),
2091	},
2092	{
2093		.data_type      = QMI_OPT_FLAG,
2094		.elem_len       = 1,
2095		.elem_size      = sizeof(u8),
2096		.array_type     = NO_ARRAY,
2097		.tlv_type       = 0x11,
2098		.offset         = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2099					   requesting_sub_system_valid),
2100	},
2101	{
2102		.data_type      = QMI_UNSIGNED_1_BYTE,
2103		.elem_len       = 1,
2104		.elem_size      = sizeof(u8),
2105		.array_type     = NO_ARRAY,
2106		.tlv_type       = 0x11,
2107		.offset         = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2108					   requesting_sub_system),
2109	},
2110	{
2111		.data_type      = QMI_OPT_FLAG,
2112		.elem_len       = 1,
2113		.elem_size      = sizeof(u8),
2114		.array_type     = NO_ARRAY,
2115		.tlv_type       = 0x12,
2116		.offset         = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2117					   line_number_valid),
2118	},
2119	{
2120		.data_type      = QMI_UNSIGNED_2_BYTE,
2121		.elem_len       = 1,
2122		.elem_size      = sizeof(u16),
2123		.array_type     = NO_ARRAY,
2124		.tlv_type       = 0x12,
2125		.offset         = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2126					   line_number),
2127	},
2128	{
2129		.data_type      = QMI_OPT_FLAG,
2130		.elem_len       = 1,
2131		.elem_size      = sizeof(u8),
2132		.array_type     = NO_ARRAY,
2133		.tlv_type       = 0x13,
2134		.offset         = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2135					   function_name_valid),
2136	},
2137	{
2138		.data_type      = QMI_STRING,
2139		.elem_len       = QMI_WLFW_FUNCTION_NAME_LEN_V01 + 1,
2140		.elem_size      = sizeof(char),
2141		.array_type     = NO_ARRAY,
2142		.tlv_type       = 0x13,
2143		.offset         = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2144					   function_name),
2145	},
2146	{}
2147};
2148
2149struct qmi_elem_info wlfw_rejuvenate_ack_req_msg_v01_ei[] = {
2150	{}
2151};
2152
2153struct qmi_elem_info wlfw_rejuvenate_ack_resp_msg_v01_ei[] = {
2154	{
2155		.data_type      = QMI_STRUCT,
2156		.elem_len       = 1,
2157		.elem_size      = sizeof(struct qmi_response_type_v01),
2158		.array_type     = NO_ARRAY,
2159		.tlv_type       = 0x02,
2160		.offset         = offsetof(struct wlfw_rejuvenate_ack_resp_msg_v01,
2161					   resp),
2162		.ei_array      = qmi_response_type_v01_ei,
2163	},
2164	{}
2165};
2166
2167struct qmi_elem_info wlfw_dynamic_feature_mask_req_msg_v01_ei[] = {
2168	{
2169		.data_type      = QMI_OPT_FLAG,
2170		.elem_len       = 1,
2171		.elem_size      = sizeof(u8),
2172		.array_type     = NO_ARRAY,
2173		.tlv_type       = 0x10,
2174		.offset         = offsetof(struct wlfw_dynamic_feature_mask_req_msg_v01,
2175					   mask_valid),
2176	},
2177	{
2178		.data_type      = QMI_UNSIGNED_8_BYTE,
2179		.elem_len       = 1,
2180		.elem_size      = sizeof(u64),
2181		.array_type     = NO_ARRAY,
2182		.tlv_type       = 0x10,
2183		.offset         = offsetof(struct wlfw_dynamic_feature_mask_req_msg_v01,
2184					   mask),
2185	},
2186	{}
2187};
2188
2189struct qmi_elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[] = {
2190	{
2191		.data_type      = QMI_STRUCT,
2192		.elem_len       = 1,
2193		.elem_size      = sizeof(struct qmi_response_type_v01),
2194		.array_type     = NO_ARRAY,
2195		.tlv_type       = 0x02,
2196		.offset         = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01,
2197					   resp),
2198		.ei_array      = qmi_response_type_v01_ei,
2199	},
2200	{
2201		.data_type      = QMI_OPT_FLAG,
2202		.elem_len       = 1,
2203		.elem_size      = sizeof(u8),
2204		.array_type     = NO_ARRAY,
2205		.tlv_type       = 0x10,
2206		.offset         = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01,
2207					   prev_mask_valid),
2208	},
2209	{
2210		.data_type      = QMI_UNSIGNED_8_BYTE,
2211		.elem_len       = 1,
2212		.elem_size      = sizeof(u64),
2213		.array_type     = NO_ARRAY,
2214		.tlv_type       = 0x10,
2215		.offset         = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01,
2216					   prev_mask),
2217	},
2218	{
2219		.data_type      = QMI_OPT_FLAG,
2220		.elem_len       = 1,
2221		.elem_size      = sizeof(u8),
2222		.array_type     = NO_ARRAY,
2223		.tlv_type       = 0x11,
2224		.offset         = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01,
2225					   curr_mask_valid),
2226	},
2227	{
2228		.data_type      = QMI_UNSIGNED_8_BYTE,
2229		.elem_len       = 1,
2230		.elem_size      = sizeof(u64),
2231		.array_type     = NO_ARRAY,
2232		.tlv_type       = 0x11,
2233		.offset         = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01,
2234					   curr_mask),
2235	},
2236	{}
2237};
2238
2239struct qmi_elem_info wlfw_m3_info_req_msg_v01_ei[] = {
2240	{
2241		.data_type      = QMI_UNSIGNED_8_BYTE,
2242		.elem_len       = 1,
2243		.elem_size      = sizeof(u64),
2244		.array_type     = NO_ARRAY,
2245		.tlv_type       = 0x01,
2246		.offset         = offsetof(struct wlfw_m3_info_req_msg_v01,
2247					   addr),
2248	},
2249	{
2250		.data_type      = QMI_UNSIGNED_4_BYTE,
2251		.elem_len       = 1,
2252		.elem_size      = sizeof(u32),
2253		.array_type     = NO_ARRAY,
2254		.tlv_type       = 0x02,
2255		.offset         = offsetof(struct wlfw_m3_info_req_msg_v01,
2256					   size),
2257	},
2258	{}
2259};
2260
2261struct qmi_elem_info wlfw_m3_info_resp_msg_v01_ei[] = {
2262	{
2263		.data_type      = QMI_STRUCT,
2264		.elem_len       = 1,
2265		.elem_size      = sizeof(struct qmi_response_type_v01),
2266		.array_type     = NO_ARRAY,
2267		.tlv_type       = 0x02,
2268		.offset         = offsetof(struct wlfw_m3_info_resp_msg_v01,
2269					   resp),
2270		.ei_array      = qmi_response_type_v01_ei,
2271	},
2272	{}
2273};
2274
2275struct qmi_elem_info wlfw_xo_cal_ind_msg_v01_ei[] = {
2276	{
2277		.data_type      = QMI_UNSIGNED_1_BYTE,
2278		.elem_len       = 1,
2279		.elem_size      = sizeof(u8),
2280		.array_type     = NO_ARRAY,
2281		.tlv_type       = 0x01,
2282		.offset         = offsetof(struct wlfw_xo_cal_ind_msg_v01,
2283					   xo_cal_data),
2284	},
2285	{}
2286};