Linux Audio

Check our new training course

Linux kernel drivers training

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