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