0001
0002
0003
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 };