root/drivers/net/wireless/ath/ath10k/qmi_wlfw_v01.c

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

/* [<][>][^][v][top][bottom][index][help] */