Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: ISC
0002 /*
0003  * Copyright (c) 2018 The Linux Foundation. All rights reserved.
0004  */
0005 
0006 #include <linux/soc/qcom/qmi.h>
0007 #include <linux/types.h>
0008 #include "qmi_wlfw_v01.h"
0009 
0010 static struct qmi_elem_info wlfw_ce_tgt_pipe_cfg_s_v01_ei[] = {
0011     {
0012         .data_type      = QMI_UNSIGNED_4_BYTE,
0013         .elem_len       = 1,
0014         .elem_size      = sizeof(u32),
0015         .array_type     = NO_ARRAY,
0016         .tlv_type       = 0,
0017         .offset         = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01,
0018                        pipe_num),
0019     },
0020     {
0021         .data_type      = QMI_SIGNED_4_BYTE_ENUM,
0022         .elem_len       = 1,
0023         .elem_size      = sizeof(enum wlfw_pipedir_enum_v01),
0024         .array_type     = NO_ARRAY,
0025         .tlv_type       = 0,
0026         .offset         = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01,
0027                        pipe_dir),
0028     },
0029     {
0030         .data_type      = QMI_UNSIGNED_4_BYTE,
0031         .elem_len       = 1,
0032         .elem_size      = sizeof(u32),
0033         .array_type     = NO_ARRAY,
0034         .tlv_type       = 0,
0035         .offset         = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01,
0036                        nentries),
0037     },
0038     {
0039         .data_type      = QMI_UNSIGNED_4_BYTE,
0040         .elem_len       = 1,
0041         .elem_size      = sizeof(u32),
0042         .array_type     = NO_ARRAY,
0043         .tlv_type       = 0,
0044         .offset         = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01,
0045                        nbytes_max),
0046     },
0047     {
0048         .data_type      = QMI_UNSIGNED_4_BYTE,
0049         .elem_len       = 1,
0050         .elem_size      = sizeof(u32),
0051         .array_type     = NO_ARRAY,
0052         .tlv_type       = 0,
0053         .offset         = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01,
0054                        flags),
0055     },
0056     {}
0057 };
0058 
0059 static struct qmi_elem_info wlfw_ce_svc_pipe_cfg_s_v01_ei[] = {
0060     {
0061         .data_type      = QMI_UNSIGNED_4_BYTE,
0062         .elem_len       = 1,
0063         .elem_size      = sizeof(u32),
0064         .array_type     = NO_ARRAY,
0065         .tlv_type       = 0,
0066         .offset         = offsetof(struct wlfw_ce_svc_pipe_cfg_s_v01,
0067                        service_id),
0068     },
0069     {
0070         .data_type      = QMI_SIGNED_4_BYTE_ENUM,
0071         .elem_len       = 1,
0072         .elem_size      = sizeof(enum wlfw_pipedir_enum_v01),
0073         .array_type     = NO_ARRAY,
0074         .tlv_type       = 0,
0075         .offset         = offsetof(struct wlfw_ce_svc_pipe_cfg_s_v01,
0076                        pipe_dir),
0077     },
0078     {
0079         .data_type      = QMI_UNSIGNED_4_BYTE,
0080         .elem_len       = 1,
0081         .elem_size      = sizeof(u32),
0082         .array_type     = NO_ARRAY,
0083         .tlv_type       = 0,
0084         .offset         = offsetof(struct wlfw_ce_svc_pipe_cfg_s_v01,
0085                        pipe_num),
0086     },
0087     {}
0088 };
0089 
0090 static struct qmi_elem_info wlfw_shadow_reg_cfg_s_v01_ei[] = {
0091     {
0092         .data_type      = QMI_UNSIGNED_2_BYTE,
0093         .elem_len       = 1,
0094         .elem_size      = sizeof(u16),
0095         .array_type     = NO_ARRAY,
0096         .tlv_type       = 0,
0097         .offset         = offsetof(struct wlfw_shadow_reg_cfg_s_v01,
0098                        id),
0099     },
0100     {
0101         .data_type      = QMI_UNSIGNED_2_BYTE,
0102         .elem_len       = 1,
0103         .elem_size      = sizeof(u16),
0104         .array_type     = NO_ARRAY,
0105         .tlv_type       = 0,
0106         .offset         = offsetof(struct wlfw_shadow_reg_cfg_s_v01,
0107                        offset),
0108     },
0109     {}
0110 };
0111 
0112 static struct qmi_elem_info wlfw_shadow_reg_v2_cfg_s_v01_ei[] = {
0113     {
0114         .data_type      = QMI_UNSIGNED_4_BYTE,
0115         .elem_len       = 1,
0116         .elem_size      = sizeof(u32),
0117         .array_type     = NO_ARRAY,
0118         .tlv_type       = 0,
0119         .offset         = offsetof(struct wlfw_shadow_reg_v2_cfg_s_v01,
0120                        addr),
0121     },
0122     {}
0123 };
0124 
0125 static struct qmi_elem_info wlfw_memory_region_info_s_v01_ei[] = {
0126     {
0127         .data_type      = QMI_UNSIGNED_8_BYTE,
0128         .elem_len       = 1,
0129         .elem_size      = sizeof(u64),
0130         .array_type     = NO_ARRAY,
0131         .tlv_type       = 0,
0132         .offset         = offsetof(struct wlfw_memory_region_info_s_v01,
0133                        region_addr),
0134     },
0135     {
0136         .data_type      = QMI_UNSIGNED_4_BYTE,
0137         .elem_len       = 1,
0138         .elem_size      = sizeof(u32),
0139         .array_type     = NO_ARRAY,
0140         .tlv_type       = 0,
0141         .offset         = offsetof(struct wlfw_memory_region_info_s_v01,
0142                        size),
0143     },
0144     {
0145         .data_type      = QMI_UNSIGNED_1_BYTE,
0146         .elem_len       = 1,
0147         .elem_size      = sizeof(u8),
0148         .array_type     = NO_ARRAY,
0149         .tlv_type       = 0,
0150         .offset         = offsetof(struct wlfw_memory_region_info_s_v01,
0151                        secure_flag),
0152     },
0153     {}
0154 };
0155 
0156 static struct qmi_elem_info wlfw_mem_cfg_s_v01_ei[] = {
0157     {
0158         .data_type      = QMI_UNSIGNED_8_BYTE,
0159         .elem_len       = 1,
0160         .elem_size      = sizeof(u64),
0161         .array_type     = NO_ARRAY,
0162         .tlv_type       = 0,
0163         .offset         = offsetof(struct wlfw_mem_cfg_s_v01,
0164                        offset),
0165     },
0166     {
0167         .data_type      = QMI_UNSIGNED_4_BYTE,
0168         .elem_len       = 1,
0169         .elem_size      = sizeof(u32),
0170         .array_type     = NO_ARRAY,
0171         .tlv_type       = 0,
0172         .offset         = offsetof(struct wlfw_mem_cfg_s_v01,
0173                        size),
0174     },
0175     {
0176         .data_type      = QMI_UNSIGNED_1_BYTE,
0177         .elem_len       = 1,
0178         .elem_size      = sizeof(u8),
0179         .array_type     = NO_ARRAY,
0180         .tlv_type       = 0,
0181         .offset         = offsetof(struct wlfw_mem_cfg_s_v01,
0182                        secure_flag),
0183     },
0184     {}
0185 };
0186 
0187 static struct qmi_elem_info wlfw_mem_seg_s_v01_ei[] = {
0188     {
0189         .data_type      = QMI_UNSIGNED_4_BYTE,
0190         .elem_len       = 1,
0191         .elem_size      = sizeof(u32),
0192         .array_type     = NO_ARRAY,
0193         .tlv_type       = 0,
0194         .offset         = offsetof(struct wlfw_mem_seg_s_v01,
0195                        size),
0196     },
0197     {
0198         .data_type      = QMI_SIGNED_4_BYTE_ENUM,
0199         .elem_len       = 1,
0200         .elem_size      = sizeof(enum wlfw_mem_type_enum_v01),
0201         .array_type     = NO_ARRAY,
0202         .tlv_type       = 0,
0203         .offset         = offsetof(struct wlfw_mem_seg_s_v01,
0204                        type),
0205     },
0206     {
0207         .data_type      = QMI_DATA_LEN,
0208         .elem_len       = 1,
0209         .elem_size      = sizeof(u8),
0210         .array_type     = NO_ARRAY,
0211         .tlv_type       = 0,
0212         .offset         = offsetof(struct wlfw_mem_seg_s_v01,
0213                        mem_cfg_len),
0214     },
0215     {
0216         .data_type      = QMI_STRUCT,
0217         .elem_len       = QMI_WLFW_MAX_NUM_MEM_CFG_V01,
0218         .elem_size      = sizeof(struct wlfw_mem_cfg_s_v01),
0219         .array_type       = VAR_LEN_ARRAY,
0220         .tlv_type       = 0,
0221         .offset         = offsetof(struct wlfw_mem_seg_s_v01,
0222                        mem_cfg),
0223         .ei_array      = wlfw_mem_cfg_s_v01_ei,
0224     },
0225     {}
0226 };
0227 
0228 static struct qmi_elem_info wlfw_mem_seg_resp_s_v01_ei[] = {
0229     {
0230         .data_type      = QMI_UNSIGNED_8_BYTE,
0231         .elem_len       = 1,
0232         .elem_size      = sizeof(u64),
0233         .array_type     = NO_ARRAY,
0234         .tlv_type       = 0,
0235         .offset         = offsetof(struct wlfw_mem_seg_resp_s_v01,
0236                        addr),
0237     },
0238     {
0239         .data_type      = QMI_UNSIGNED_4_BYTE,
0240         .elem_len       = 1,
0241         .elem_size      = sizeof(u32),
0242         .array_type     = NO_ARRAY,
0243         .tlv_type       = 0,
0244         .offset         = offsetof(struct wlfw_mem_seg_resp_s_v01,
0245                        size),
0246     },
0247     {
0248         .data_type      = QMI_SIGNED_4_BYTE_ENUM,
0249         .elem_len       = 1,
0250         .elem_size      = sizeof(enum wlfw_mem_type_enum_v01),
0251         .array_type     = NO_ARRAY,
0252         .tlv_type       = 0,
0253         .offset         = offsetof(struct wlfw_mem_seg_resp_s_v01,
0254                        type),
0255     },
0256     {}
0257 };
0258 
0259 static struct qmi_elem_info wlfw_rf_chip_info_s_v01_ei[] = {
0260     {
0261         .data_type      = QMI_UNSIGNED_4_BYTE,
0262         .elem_len       = 1,
0263         .elem_size      = sizeof(u32),
0264         .array_type     = NO_ARRAY,
0265         .tlv_type       = 0,
0266         .offset         = offsetof(struct wlfw_rf_chip_info_s_v01,
0267                        chip_id),
0268     },
0269     {
0270         .data_type      = QMI_UNSIGNED_4_BYTE,
0271         .elem_len       = 1,
0272         .elem_size      = sizeof(u32),
0273         .array_type     = NO_ARRAY,
0274         .tlv_type       = 0,
0275         .offset         = offsetof(struct wlfw_rf_chip_info_s_v01,
0276                        chip_family),
0277     },
0278     {}
0279 };
0280 
0281 static struct qmi_elem_info wlfw_rf_board_info_s_v01_ei[] = {
0282     {
0283         .data_type      = QMI_UNSIGNED_4_BYTE,
0284         .elem_len       = 1,
0285         .elem_size      = sizeof(u32),
0286         .array_type     = NO_ARRAY,
0287         .tlv_type       = 0,
0288         .offset         = offsetof(struct wlfw_rf_board_info_s_v01,
0289                        board_id),
0290     },
0291     {}
0292 };
0293 
0294 static struct qmi_elem_info wlfw_soc_info_s_v01_ei[] = {
0295     {
0296         .data_type      = QMI_UNSIGNED_4_BYTE,
0297         .elem_len       = 1,
0298         .elem_size      = sizeof(u32),
0299         .array_type     = NO_ARRAY,
0300         .tlv_type       = 0,
0301         .offset         = offsetof(struct wlfw_soc_info_s_v01,
0302                        soc_id),
0303     },
0304     {}
0305 };
0306 
0307 static struct qmi_elem_info wlfw_fw_version_info_s_v01_ei[] = {
0308     {
0309         .data_type      = QMI_UNSIGNED_4_BYTE,
0310         .elem_len       = 1,
0311         .elem_size      = sizeof(u32),
0312         .array_type     = NO_ARRAY,
0313         .tlv_type       = 0,
0314         .offset         = offsetof(struct wlfw_fw_version_info_s_v01,
0315                        fw_version),
0316     },
0317     {
0318         .data_type      = QMI_STRING,
0319         .elem_len       = QMI_WLFW_MAX_TIMESTAMP_LEN_V01 + 1,
0320         .elem_size      = sizeof(char),
0321         .array_type     = NO_ARRAY,
0322         .tlv_type       = 0,
0323         .offset         = offsetof(struct wlfw_fw_version_info_s_v01,
0324                        fw_build_timestamp),
0325     },
0326     {}
0327 };
0328 
0329 struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[] = {
0330     {
0331         .data_type      = QMI_OPT_FLAG,
0332         .elem_len       = 1,
0333         .elem_size      = sizeof(u8),
0334         .array_type     = NO_ARRAY,
0335         .tlv_type       = 0x10,
0336         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0337                        fw_ready_enable_valid),
0338     },
0339     {
0340         .data_type      = QMI_UNSIGNED_1_BYTE,
0341         .elem_len       = 1,
0342         .elem_size      = sizeof(u8),
0343         .array_type     = NO_ARRAY,
0344         .tlv_type       = 0x10,
0345         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0346                        fw_ready_enable),
0347     },
0348     {
0349         .data_type      = QMI_OPT_FLAG,
0350         .elem_len       = 1,
0351         .elem_size      = sizeof(u8),
0352         .array_type     = NO_ARRAY,
0353         .tlv_type       = 0x11,
0354         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0355                        initiate_cal_download_enable_valid),
0356     },
0357     {
0358         .data_type      = QMI_UNSIGNED_1_BYTE,
0359         .elem_len       = 1,
0360         .elem_size      = sizeof(u8),
0361         .array_type     = NO_ARRAY,
0362         .tlv_type       = 0x11,
0363         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0364                        initiate_cal_download_enable),
0365     },
0366     {
0367         .data_type      = QMI_OPT_FLAG,
0368         .elem_len       = 1,
0369         .elem_size      = sizeof(u8),
0370         .array_type     = NO_ARRAY,
0371         .tlv_type       = 0x12,
0372         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0373                        initiate_cal_update_enable_valid),
0374     },
0375     {
0376         .data_type      = QMI_UNSIGNED_1_BYTE,
0377         .elem_len       = 1,
0378         .elem_size      = sizeof(u8),
0379         .array_type     = NO_ARRAY,
0380         .tlv_type       = 0x12,
0381         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0382                        initiate_cal_update_enable),
0383     },
0384     {
0385         .data_type      = QMI_OPT_FLAG,
0386         .elem_len       = 1,
0387         .elem_size      = sizeof(u8),
0388         .array_type     = NO_ARRAY,
0389         .tlv_type       = 0x13,
0390         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0391                        msa_ready_enable_valid),
0392     },
0393     {
0394         .data_type      = QMI_UNSIGNED_1_BYTE,
0395         .elem_len       = 1,
0396         .elem_size      = sizeof(u8),
0397         .array_type     = NO_ARRAY,
0398         .tlv_type       = 0x13,
0399         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0400                        msa_ready_enable),
0401     },
0402     {
0403         .data_type      = QMI_OPT_FLAG,
0404         .elem_len       = 1,
0405         .elem_size      = sizeof(u8),
0406         .array_type     = NO_ARRAY,
0407         .tlv_type       = 0x14,
0408         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0409                        pin_connect_result_enable_valid),
0410     },
0411     {
0412         .data_type      = QMI_UNSIGNED_1_BYTE,
0413         .elem_len       = 1,
0414         .elem_size      = sizeof(u8),
0415         .array_type     = NO_ARRAY,
0416         .tlv_type       = 0x14,
0417         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0418                        pin_connect_result_enable),
0419     },
0420     {
0421         .data_type      = QMI_OPT_FLAG,
0422         .elem_len       = 1,
0423         .elem_size      = sizeof(u8),
0424         .array_type     = NO_ARRAY,
0425         .tlv_type       = 0x15,
0426         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0427                        client_id_valid),
0428     },
0429     {
0430         .data_type      = QMI_UNSIGNED_4_BYTE,
0431         .elem_len       = 1,
0432         .elem_size      = sizeof(u32),
0433         .array_type     = NO_ARRAY,
0434         .tlv_type       = 0x15,
0435         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0436                        client_id),
0437     },
0438     {
0439         .data_type      = QMI_OPT_FLAG,
0440         .elem_len       = 1,
0441         .elem_size      = sizeof(u8),
0442         .array_type     = NO_ARRAY,
0443         .tlv_type       = 0x16,
0444         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0445                        request_mem_enable_valid),
0446     },
0447     {
0448         .data_type      = QMI_UNSIGNED_1_BYTE,
0449         .elem_len       = 1,
0450         .elem_size      = sizeof(u8),
0451         .array_type     = NO_ARRAY,
0452         .tlv_type       = 0x16,
0453         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0454                        request_mem_enable),
0455     },
0456     {
0457         .data_type      = QMI_OPT_FLAG,
0458         .elem_len       = 1,
0459         .elem_size      = sizeof(u8),
0460         .array_type     = NO_ARRAY,
0461         .tlv_type       = 0x17,
0462         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0463                        mem_ready_enable_valid),
0464     },
0465     {
0466         .data_type      = QMI_UNSIGNED_1_BYTE,
0467         .elem_len       = 1,
0468         .elem_size      = sizeof(u8),
0469         .array_type     = NO_ARRAY,
0470         .tlv_type       = 0x17,
0471         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0472                        mem_ready_enable),
0473     },
0474     {
0475         .data_type      = QMI_OPT_FLAG,
0476         .elem_len       = 1,
0477         .elem_size      = sizeof(u8),
0478         .array_type     = NO_ARRAY,
0479         .tlv_type       = 0x18,
0480         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0481                        fw_init_done_enable_valid),
0482     },
0483     {
0484         .data_type      = QMI_UNSIGNED_1_BYTE,
0485         .elem_len       = 1,
0486         .elem_size      = sizeof(u8),
0487         .array_type     = NO_ARRAY,
0488         .tlv_type       = 0x18,
0489         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0490                        fw_init_done_enable),
0491     },
0492     {
0493         .data_type      = QMI_OPT_FLAG,
0494         .elem_len       = 1,
0495         .elem_size      = sizeof(u8),
0496         .array_type     = NO_ARRAY,
0497         .tlv_type       = 0x19,
0498         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0499                        rejuvenate_enable_valid),
0500     },
0501     {
0502         .data_type      = QMI_UNSIGNED_4_BYTE,
0503         .elem_len       = 1,
0504         .elem_size      = sizeof(u32),
0505         .array_type     = NO_ARRAY,
0506         .tlv_type       = 0x19,
0507         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0508                        rejuvenate_enable),
0509     },
0510     {
0511         .data_type      = QMI_OPT_FLAG,
0512         .elem_len       = 1,
0513         .elem_size      = sizeof(u8),
0514         .array_type     = NO_ARRAY,
0515         .tlv_type       = 0x1A,
0516         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0517                        xo_cal_enable_valid),
0518     },
0519     {
0520         .data_type      = QMI_UNSIGNED_1_BYTE,
0521         .elem_len       = 1,
0522         .elem_size      = sizeof(u8),
0523         .array_type     = NO_ARRAY,
0524         .tlv_type       = 0x1A,
0525         .offset         = offsetof(struct wlfw_ind_register_req_msg_v01,
0526                        xo_cal_enable),
0527     },
0528     {}
0529 };
0530 
0531 struct qmi_elem_info wlfw_ind_register_resp_msg_v01_ei[] = {
0532     {
0533         .data_type      = QMI_STRUCT,
0534         .elem_len       = 1,
0535         .elem_size      = sizeof(struct qmi_response_type_v01),
0536         .array_type     = NO_ARRAY,
0537         .tlv_type       = 0x02,
0538         .offset         = offsetof(struct wlfw_ind_register_resp_msg_v01,
0539                        resp),
0540         .ei_array      = qmi_response_type_v01_ei,
0541     },
0542     {
0543         .data_type      = QMI_OPT_FLAG,
0544         .elem_len       = 1,
0545         .elem_size      = sizeof(u8),
0546         .array_type     = NO_ARRAY,
0547         .tlv_type       = 0x10,
0548         .offset         = offsetof(struct wlfw_ind_register_resp_msg_v01,
0549                        fw_status_valid),
0550     },
0551     {
0552         .data_type      = QMI_UNSIGNED_8_BYTE,
0553         .elem_len       = 1,
0554         .elem_size      = sizeof(u64),
0555         .array_type     = NO_ARRAY,
0556         .tlv_type       = 0x10,
0557         .offset         = offsetof(struct wlfw_ind_register_resp_msg_v01,
0558                        fw_status),
0559     },
0560     {}
0561 };
0562 
0563 struct qmi_elem_info wlfw_fw_ready_ind_msg_v01_ei[] = {
0564     {}
0565 };
0566 
0567 struct qmi_elem_info wlfw_msa_ready_ind_msg_v01_ei[] = {
0568     {}
0569 };
0570 
0571 struct qmi_elem_info wlfw_pin_connect_result_ind_msg_v01_ei[] = {
0572     {
0573         .data_type      = QMI_OPT_FLAG,
0574         .elem_len       = 1,
0575         .elem_size      = sizeof(u8),
0576         .array_type     = NO_ARRAY,
0577         .tlv_type       = 0x10,
0578         .offset         = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
0579                        pwr_pin_result_valid),
0580     },
0581     {
0582         .data_type      = QMI_UNSIGNED_4_BYTE,
0583         .elem_len       = 1,
0584         .elem_size      = sizeof(u32),
0585         .array_type     = NO_ARRAY,
0586         .tlv_type       = 0x10,
0587         .offset         = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
0588                        pwr_pin_result),
0589     },
0590     {
0591         .data_type      = QMI_OPT_FLAG,
0592         .elem_len       = 1,
0593         .elem_size      = sizeof(u8),
0594         .array_type     = NO_ARRAY,
0595         .tlv_type       = 0x11,
0596         .offset         = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
0597                        phy_io_pin_result_valid),
0598     },
0599     {
0600         .data_type      = QMI_UNSIGNED_4_BYTE,
0601         .elem_len       = 1,
0602         .elem_size      = sizeof(u32),
0603         .array_type     = NO_ARRAY,
0604         .tlv_type       = 0x11,
0605         .offset         = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
0606                        phy_io_pin_result),
0607     },
0608     {
0609         .data_type      = QMI_OPT_FLAG,
0610         .elem_len       = 1,
0611         .elem_size      = sizeof(u8),
0612         .array_type     = NO_ARRAY,
0613         .tlv_type       = 0x12,
0614         .offset         = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
0615                        rf_pin_result_valid),
0616     },
0617     {
0618         .data_type      = QMI_UNSIGNED_4_BYTE,
0619         .elem_len       = 1,
0620         .elem_size      = sizeof(u32),
0621         .array_type     = NO_ARRAY,
0622         .tlv_type       = 0x12,
0623         .offset         = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
0624                        rf_pin_result),
0625     },
0626     {}
0627 };
0628 
0629 struct qmi_elem_info wlfw_wlan_mode_req_msg_v01_ei[] = {
0630     {
0631         .data_type      = QMI_SIGNED_4_BYTE_ENUM,
0632         .elem_len       = 1,
0633         .elem_size      = sizeof(enum wlfw_driver_mode_enum_v01),
0634         .array_type     = NO_ARRAY,
0635         .tlv_type       = 0x01,
0636         .offset         = offsetof(struct wlfw_wlan_mode_req_msg_v01,
0637                        mode),
0638     },
0639     {
0640         .data_type      = QMI_OPT_FLAG,
0641         .elem_len       = 1,
0642         .elem_size      = sizeof(u8),
0643         .array_type     = NO_ARRAY,
0644         .tlv_type       = 0x10,
0645         .offset         = offsetof(struct wlfw_wlan_mode_req_msg_v01,
0646                        hw_debug_valid),
0647     },
0648     {
0649         .data_type      = QMI_UNSIGNED_1_BYTE,
0650         .elem_len       = 1,
0651         .elem_size      = sizeof(u8),
0652         .array_type     = NO_ARRAY,
0653         .tlv_type       = 0x10,
0654         .offset         = offsetof(struct wlfw_wlan_mode_req_msg_v01,
0655                        hw_debug),
0656     },
0657     {}
0658 };
0659 
0660 struct qmi_elem_info wlfw_wlan_mode_resp_msg_v01_ei[] = {
0661     {
0662         .data_type      = QMI_STRUCT,
0663         .elem_len       = 1,
0664         .elem_size      = sizeof(struct qmi_response_type_v01),
0665         .array_type     = NO_ARRAY,
0666         .tlv_type       = 0x02,
0667         .offset         = offsetof(struct wlfw_wlan_mode_resp_msg_v01,
0668                        resp),
0669         .ei_array      = qmi_response_type_v01_ei,
0670     },
0671     {}
0672 };
0673 
0674 struct qmi_elem_info wlfw_wlan_cfg_req_msg_v01_ei[] = {
0675     {
0676         .data_type      = QMI_OPT_FLAG,
0677         .elem_len       = 1,
0678         .elem_size      = sizeof(u8),
0679         .array_type     = NO_ARRAY,
0680         .tlv_type       = 0x10,
0681         .offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
0682                        host_version_valid),
0683     },
0684     {
0685         .data_type      = QMI_STRING,
0686         .elem_len       = QMI_WLFW_MAX_STR_LEN_V01 + 1,
0687         .elem_size      = sizeof(char),
0688         .array_type     = NO_ARRAY,
0689         .tlv_type       = 0x10,
0690         .offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
0691                        host_version),
0692     },
0693     {
0694         .data_type      = QMI_OPT_FLAG,
0695         .elem_len       = 1,
0696         .elem_size      = sizeof(u8),
0697         .array_type     = NO_ARRAY,
0698         .tlv_type       = 0x11,
0699         .offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
0700                        tgt_cfg_valid),
0701     },
0702     {
0703         .data_type      = QMI_DATA_LEN,
0704         .elem_len       = 1,
0705         .elem_size      = sizeof(u8),
0706         .array_type     = NO_ARRAY,
0707         .tlv_type       = 0x11,
0708         .offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
0709                        tgt_cfg_len),
0710     },
0711     {
0712         .data_type      = QMI_STRUCT,
0713         .elem_len       = QMI_WLFW_MAX_NUM_CE_V01,
0714         .elem_size      = sizeof(struct wlfw_ce_tgt_pipe_cfg_s_v01),
0715         .array_type       = VAR_LEN_ARRAY,
0716         .tlv_type       = 0x11,
0717         .offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
0718                        tgt_cfg),
0719         .ei_array      = wlfw_ce_tgt_pipe_cfg_s_v01_ei,
0720     },
0721     {
0722         .data_type      = QMI_OPT_FLAG,
0723         .elem_len       = 1,
0724         .elem_size      = sizeof(u8),
0725         .array_type     = NO_ARRAY,
0726         .tlv_type       = 0x12,
0727         .offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
0728                        svc_cfg_valid),
0729     },
0730     {
0731         .data_type      = QMI_DATA_LEN,
0732         .elem_len       = 1,
0733         .elem_size      = sizeof(u8),
0734         .array_type     = NO_ARRAY,
0735         .tlv_type       = 0x12,
0736         .offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
0737                        svc_cfg_len),
0738     },
0739     {
0740         .data_type      = QMI_STRUCT,
0741         .elem_len       = QMI_WLFW_MAX_NUM_SVC_V01,
0742         .elem_size      = sizeof(struct wlfw_ce_svc_pipe_cfg_s_v01),
0743         .array_type       = VAR_LEN_ARRAY,
0744         .tlv_type       = 0x12,
0745         .offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
0746                        svc_cfg),
0747         .ei_array      = wlfw_ce_svc_pipe_cfg_s_v01_ei,
0748     },
0749     {
0750         .data_type      = QMI_OPT_FLAG,
0751         .elem_len       = 1,
0752         .elem_size      = sizeof(u8),
0753         .array_type     = NO_ARRAY,
0754         .tlv_type       = 0x13,
0755         .offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
0756                        shadow_reg_valid),
0757     },
0758     {
0759         .data_type      = QMI_DATA_LEN,
0760         .elem_len       = 1,
0761         .elem_size      = sizeof(u8),
0762         .array_type     = NO_ARRAY,
0763         .tlv_type       = 0x13,
0764         .offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
0765                        shadow_reg_len),
0766     },
0767     {
0768         .data_type      = QMI_STRUCT,
0769         .elem_len       = QMI_WLFW_MAX_NUM_SHADOW_REG_V01,
0770         .elem_size      = sizeof(struct wlfw_shadow_reg_cfg_s_v01),
0771         .array_type       = VAR_LEN_ARRAY,
0772         .tlv_type       = 0x13,
0773         .offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
0774                        shadow_reg),
0775         .ei_array      = wlfw_shadow_reg_cfg_s_v01_ei,
0776     },
0777     {
0778         .data_type      = QMI_OPT_FLAG,
0779         .elem_len       = 1,
0780         .elem_size      = sizeof(u8),
0781         .array_type     = NO_ARRAY,
0782         .tlv_type       = 0x14,
0783         .offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
0784                        shadow_reg_v2_valid),
0785     },
0786     {
0787         .data_type      = QMI_DATA_LEN,
0788         .elem_len       = 1,
0789         .elem_size      = sizeof(u8),
0790         .array_type     = NO_ARRAY,
0791         .tlv_type       = 0x14,
0792         .offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
0793                        shadow_reg_v2_len),
0794     },
0795     {
0796         .data_type      = QMI_STRUCT,
0797         .elem_len       = QMI_WLFW_MAX_SHADOW_REG_V2,
0798         .elem_size      = sizeof(struct wlfw_shadow_reg_v2_cfg_s_v01),
0799         .array_type       = VAR_LEN_ARRAY,
0800         .tlv_type       = 0x14,
0801         .offset         = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
0802                        shadow_reg_v2),
0803         .ei_array      = wlfw_shadow_reg_v2_cfg_s_v01_ei,
0804     },
0805     {}
0806 };
0807 
0808 struct qmi_elem_info wlfw_wlan_cfg_resp_msg_v01_ei[] = {
0809     {
0810         .data_type      = QMI_STRUCT,
0811         .elem_len       = 1,
0812         .elem_size      = sizeof(struct qmi_response_type_v01),
0813         .array_type     = NO_ARRAY,
0814         .tlv_type       = 0x02,
0815         .offset         = offsetof(struct wlfw_wlan_cfg_resp_msg_v01,
0816                        resp),
0817         .ei_array      = qmi_response_type_v01_ei,
0818     },
0819     {}
0820 };
0821 
0822 struct qmi_elem_info wlfw_cap_req_msg_v01_ei[] = {
0823     {}
0824 };
0825 
0826 struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[] = {
0827     {
0828         .data_type      = QMI_STRUCT,
0829         .elem_len       = 1,
0830         .elem_size      = sizeof(struct qmi_response_type_v01),
0831         .array_type     = NO_ARRAY,
0832         .tlv_type       = 0x02,
0833         .offset         = offsetof(struct wlfw_cap_resp_msg_v01,
0834                        resp),
0835         .ei_array      = qmi_response_type_v01_ei,
0836     },
0837     {
0838         .data_type      = QMI_OPT_FLAG,
0839         .elem_len       = 1,
0840         .elem_size      = sizeof(u8),
0841         .array_type     = NO_ARRAY,
0842         .tlv_type       = 0x10,
0843         .offset         = offsetof(struct wlfw_cap_resp_msg_v01,
0844                        chip_info_valid),
0845     },
0846     {
0847         .data_type      = QMI_STRUCT,
0848         .elem_len       = 1,
0849         .elem_size      = sizeof(struct wlfw_rf_chip_info_s_v01),
0850         .array_type     = NO_ARRAY,
0851         .tlv_type       = 0x10,
0852         .offset         = offsetof(struct wlfw_cap_resp_msg_v01,
0853                        chip_info),
0854         .ei_array      = wlfw_rf_chip_info_s_v01_ei,
0855     },
0856     {
0857         .data_type      = QMI_OPT_FLAG,
0858         .elem_len       = 1,
0859         .elem_size      = sizeof(u8),
0860         .array_type     = NO_ARRAY,
0861         .tlv_type       = 0x11,
0862         .offset         = offsetof(struct wlfw_cap_resp_msg_v01,
0863                        board_info_valid),
0864     },
0865     {
0866         .data_type      = QMI_STRUCT,
0867         .elem_len       = 1,
0868         .elem_size      = sizeof(struct wlfw_rf_board_info_s_v01),
0869         .array_type     = NO_ARRAY,
0870         .tlv_type       = 0x11,
0871         .offset         = offsetof(struct wlfw_cap_resp_msg_v01,
0872                        board_info),
0873         .ei_array      = wlfw_rf_board_info_s_v01_ei,
0874     },
0875     {
0876         .data_type      = QMI_OPT_FLAG,
0877         .elem_len       = 1,
0878         .elem_size      = sizeof(u8),
0879         .array_type     = NO_ARRAY,
0880         .tlv_type       = 0x12,
0881         .offset         = offsetof(struct wlfw_cap_resp_msg_v01,
0882                        soc_info_valid),
0883     },
0884     {
0885         .data_type      = QMI_STRUCT,
0886         .elem_len       = 1,
0887         .elem_size      = sizeof(struct wlfw_soc_info_s_v01),
0888         .array_type     = NO_ARRAY,
0889         .tlv_type       = 0x12,
0890         .offset         = offsetof(struct wlfw_cap_resp_msg_v01,
0891                        soc_info),
0892         .ei_array      = wlfw_soc_info_s_v01_ei,
0893     },
0894     {
0895         .data_type      = QMI_OPT_FLAG,
0896         .elem_len       = 1,
0897         .elem_size      = sizeof(u8),
0898         .array_type     = NO_ARRAY,
0899         .tlv_type       = 0x13,
0900         .offset         = offsetof(struct wlfw_cap_resp_msg_v01,
0901                        fw_version_info_valid),
0902     },
0903     {
0904         .data_type      = QMI_STRUCT,
0905         .elem_len       = 1,
0906         .elem_size      = sizeof(struct wlfw_fw_version_info_s_v01),
0907         .array_type     = NO_ARRAY,
0908         .tlv_type       = 0x13,
0909         .offset         = offsetof(struct wlfw_cap_resp_msg_v01,
0910                        fw_version_info),
0911         .ei_array      = wlfw_fw_version_info_s_v01_ei,
0912     },
0913     {
0914         .data_type      = QMI_OPT_FLAG,
0915         .elem_len       = 1,
0916         .elem_size      = sizeof(u8),
0917         .array_type     = NO_ARRAY,
0918         .tlv_type       = 0x14,
0919         .offset         = offsetof(struct wlfw_cap_resp_msg_v01,
0920                        fw_build_id_valid),
0921     },
0922     {
0923         .data_type      = QMI_STRING,
0924         .elem_len       = QMI_WLFW_MAX_BUILD_ID_LEN_V01 + 1,
0925         .elem_size      = sizeof(char),
0926         .array_type     = NO_ARRAY,
0927         .tlv_type       = 0x14,
0928         .offset         = offsetof(struct wlfw_cap_resp_msg_v01,
0929                        fw_build_id),
0930     },
0931     {
0932         .data_type      = QMI_OPT_FLAG,
0933         .elem_len       = 1,
0934         .elem_size      = sizeof(u8),
0935         .array_type     = NO_ARRAY,
0936         .tlv_type       = 0x15,
0937         .offset         = offsetof(struct wlfw_cap_resp_msg_v01,
0938                        num_macs_valid),
0939     },
0940     {
0941         .data_type      = QMI_UNSIGNED_1_BYTE,
0942         .elem_len       = 1,
0943         .elem_size      = sizeof(u8),
0944         .array_type     = NO_ARRAY,
0945         .tlv_type       = 0x15,
0946         .offset         = offsetof(struct wlfw_cap_resp_msg_v01,
0947                        num_macs),
0948     },
0949     {}
0950 };
0951 
0952 struct qmi_elem_info wlfw_bdf_download_req_msg_v01_ei[] = {
0953     {
0954         .data_type      = QMI_UNSIGNED_1_BYTE,
0955         .elem_len       = 1,
0956         .elem_size      = sizeof(u8),
0957         .array_type     = NO_ARRAY,
0958         .tlv_type       = 0x01,
0959         .offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
0960                        valid),
0961     },
0962     {
0963         .data_type      = QMI_OPT_FLAG,
0964         .elem_len       = 1,
0965         .elem_size      = sizeof(u8),
0966         .array_type     = NO_ARRAY,
0967         .tlv_type       = 0x10,
0968         .offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
0969                        file_id_valid),
0970     },
0971     {
0972         .data_type      = QMI_SIGNED_4_BYTE_ENUM,
0973         .elem_len       = 1,
0974         .elem_size      = sizeof(enum wlfw_cal_temp_id_enum_v01),
0975         .array_type     = NO_ARRAY,
0976         .tlv_type       = 0x10,
0977         .offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
0978                        file_id),
0979     },
0980     {
0981         .data_type      = QMI_OPT_FLAG,
0982         .elem_len       = 1,
0983         .elem_size      = sizeof(u8),
0984         .array_type     = NO_ARRAY,
0985         .tlv_type       = 0x11,
0986         .offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
0987                        total_size_valid),
0988     },
0989     {
0990         .data_type      = QMI_UNSIGNED_4_BYTE,
0991         .elem_len       = 1,
0992         .elem_size      = sizeof(u32),
0993         .array_type     = NO_ARRAY,
0994         .tlv_type       = 0x11,
0995         .offset         = offsetof(struct wlfw_bdf_download_req_msg_v01,
0996                        total_size),
0997     },
0998     {
0999         .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 };