1 // SPDX-License-Identifier: GPL-2.0-only 2 /* Copyright (c) 2015-2021, The Linux Foundation. All rights reserved. */ 3 /* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. */ 4 5 #include "wlan_firmware_service_v01.h" 6 #include <linux/module.h> 7 #include <linux/of.h> 8 9 static struct qmi_elem_info wlfw_ce_tgt_pipe_cfg_s_v01_ei[] = { 10 { 11 .data_type = QMI_UNSIGNED_4_BYTE, 12 .elem_len = 1, 13 .elem_size = sizeof(u32), 14 .array_type = NO_ARRAY, 15 .tlv_type = 0, 16 .offset = offsetof(struct 17 wlfw_ce_tgt_pipe_cfg_s_v01, 18 pipe_num), 19 }, 20 { 21 .data_type = QMI_SIGNED_4_BYTE_ENUM, 22 .elem_len = 1, 23 .elem_size = sizeof(enum wlfw_pipedir_enum_v01), 24 .array_type = NO_ARRAY, 25 .tlv_type = 0, 26 .offset = offsetof(struct 27 wlfw_ce_tgt_pipe_cfg_s_v01, 28 pipe_dir), 29 }, 30 { 31 .data_type = QMI_UNSIGNED_4_BYTE, 32 .elem_len = 1, 33 .elem_size = sizeof(u32), 34 .array_type = NO_ARRAY, 35 .tlv_type = 0, 36 .offset = offsetof(struct 37 wlfw_ce_tgt_pipe_cfg_s_v01, 38 nentries), 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 47 wlfw_ce_tgt_pipe_cfg_s_v01, 48 nbytes_max), 49 }, 50 { 51 .data_type = QMI_UNSIGNED_4_BYTE, 52 .elem_len = 1, 53 .elem_size = sizeof(u32), 54 .array_type = NO_ARRAY, 55 .tlv_type = 0, 56 .offset = offsetof(struct 57 wlfw_ce_tgt_pipe_cfg_s_v01, 58 flags), 59 }, 60 { 61 .data_type = QMI_EOTI, 62 .array_type = NO_ARRAY, 63 .tlv_type = QMI_COMMON_TLV_TYPE, 64 }, 65 }; 66 67 static struct qmi_elem_info wlfw_ce_svc_pipe_cfg_s_v01_ei[] = { 68 { 69 .data_type = QMI_UNSIGNED_4_BYTE, 70 .elem_len = 1, 71 .elem_size = sizeof(u32), 72 .array_type = NO_ARRAY, 73 .tlv_type = 0, 74 .offset = offsetof(struct 75 wlfw_ce_svc_pipe_cfg_s_v01, 76 service_id), 77 }, 78 { 79 .data_type = QMI_SIGNED_4_BYTE_ENUM, 80 .elem_len = 1, 81 .elem_size = sizeof(enum wlfw_pipedir_enum_v01), 82 .array_type = NO_ARRAY, 83 .tlv_type = 0, 84 .offset = offsetof(struct 85 wlfw_ce_svc_pipe_cfg_s_v01, 86 pipe_dir), 87 }, 88 { 89 .data_type = QMI_UNSIGNED_4_BYTE, 90 .elem_len = 1, 91 .elem_size = sizeof(u32), 92 .array_type = NO_ARRAY, 93 .tlv_type = 0, 94 .offset = offsetof(struct 95 wlfw_ce_svc_pipe_cfg_s_v01, 96 pipe_num), 97 }, 98 { 99 .data_type = QMI_EOTI, 100 .array_type = NO_ARRAY, 101 .tlv_type = QMI_COMMON_TLV_TYPE, 102 }, 103 }; 104 105 static struct qmi_elem_info wlfw_shadow_reg_cfg_s_v01_ei[] = { 106 { 107 .data_type = QMI_UNSIGNED_2_BYTE, 108 .elem_len = 1, 109 .elem_size = sizeof(u16), 110 .array_type = NO_ARRAY, 111 .tlv_type = 0, 112 .offset = offsetof(struct 113 wlfw_shadow_reg_cfg_s_v01, 114 id), 115 }, 116 { 117 .data_type = QMI_UNSIGNED_2_BYTE, 118 .elem_len = 1, 119 .elem_size = sizeof(u16), 120 .array_type = NO_ARRAY, 121 .tlv_type = 0, 122 .offset = offsetof(struct 123 wlfw_shadow_reg_cfg_s_v01, 124 offset), 125 }, 126 { 127 .data_type = QMI_EOTI, 128 .array_type = NO_ARRAY, 129 .tlv_type = QMI_COMMON_TLV_TYPE, 130 }, 131 }; 132 133 static struct qmi_elem_info wlfw_shadow_reg_v2_cfg_s_v01_ei[] = { 134 { 135 .data_type = QMI_UNSIGNED_4_BYTE, 136 .elem_len = 1, 137 .elem_size = sizeof(u32), 138 .array_type = NO_ARRAY, 139 .tlv_type = 0, 140 .offset = offsetof(struct 141 wlfw_shadow_reg_v2_cfg_s_v01, 142 addr), 143 }, 144 { 145 .data_type = QMI_EOTI, 146 .array_type = NO_ARRAY, 147 .tlv_type = QMI_COMMON_TLV_TYPE, 148 }, 149 }; 150 151 static struct qmi_elem_info wlfw_rri_over_ddr_cfg_s_v01_ei[] = { 152 { 153 .data_type = QMI_UNSIGNED_4_BYTE, 154 .elem_len = 1, 155 .elem_size = sizeof(u32), 156 .array_type = NO_ARRAY, 157 .tlv_type = 0, 158 .offset = offsetof(struct 159 wlfw_rri_over_ddr_cfg_s_v01, 160 base_addr_low), 161 }, 162 { 163 .data_type = QMI_UNSIGNED_4_BYTE, 164 .elem_len = 1, 165 .elem_size = sizeof(u32), 166 .array_type = NO_ARRAY, 167 .tlv_type = 0, 168 .offset = offsetof(struct 169 wlfw_rri_over_ddr_cfg_s_v01, 170 base_addr_high), 171 }, 172 { 173 .data_type = QMI_EOTI, 174 .array_type = NO_ARRAY, 175 .tlv_type = QMI_COMMON_TLV_TYPE, 176 }, 177 }; 178 179 static struct qmi_elem_info wlfw_msi_cfg_s_v01_ei[] = { 180 { 181 .data_type = QMI_UNSIGNED_2_BYTE, 182 .elem_len = 1, 183 .elem_size = sizeof(u16), 184 .array_type = NO_ARRAY, 185 .tlv_type = 0, 186 .offset = offsetof(struct 187 wlfw_msi_cfg_s_v01, 188 ce_id), 189 }, 190 { 191 .data_type = QMI_UNSIGNED_2_BYTE, 192 .elem_len = 1, 193 .elem_size = sizeof(u16), 194 .array_type = NO_ARRAY, 195 .tlv_type = 0, 196 .offset = offsetof(struct 197 wlfw_msi_cfg_s_v01, 198 msi_vector), 199 }, 200 { 201 .data_type = QMI_EOTI, 202 .array_type = NO_ARRAY, 203 .tlv_type = QMI_COMMON_TLV_TYPE, 204 }, 205 }; 206 207 static struct qmi_elem_info wlfw_memory_region_info_s_v01_ei[] = { 208 { 209 .data_type = QMI_UNSIGNED_8_BYTE, 210 .elem_len = 1, 211 .elem_size = sizeof(u64), 212 .array_type = NO_ARRAY, 213 .tlv_type = 0, 214 .offset = offsetof(struct 215 wlfw_memory_region_info_s_v01, 216 region_addr), 217 }, 218 { 219 .data_type = QMI_UNSIGNED_4_BYTE, 220 .elem_len = 1, 221 .elem_size = sizeof(u32), 222 .array_type = NO_ARRAY, 223 .tlv_type = 0, 224 .offset = offsetof(struct 225 wlfw_memory_region_info_s_v01, 226 size), 227 }, 228 { 229 .data_type = QMI_UNSIGNED_1_BYTE, 230 .elem_len = 1, 231 .elem_size = sizeof(u8), 232 .array_type = NO_ARRAY, 233 .tlv_type = 0, 234 .offset = offsetof(struct 235 wlfw_memory_region_info_s_v01, 236 secure_flag), 237 }, 238 { 239 .data_type = QMI_EOTI, 240 .array_type = NO_ARRAY, 241 .tlv_type = QMI_COMMON_TLV_TYPE, 242 }, 243 }; 244 245 static struct qmi_elem_info wlfw_mem_cfg_s_v01_ei[] = { 246 { 247 .data_type = QMI_UNSIGNED_8_BYTE, 248 .elem_len = 1, 249 .elem_size = sizeof(u64), 250 .array_type = NO_ARRAY, 251 .tlv_type = 0, 252 .offset = offsetof(struct 253 wlfw_mem_cfg_s_v01, 254 offset), 255 }, 256 { 257 .data_type = QMI_UNSIGNED_4_BYTE, 258 .elem_len = 1, 259 .elem_size = sizeof(u32), 260 .array_type = NO_ARRAY, 261 .tlv_type = 0, 262 .offset = offsetof(struct 263 wlfw_mem_cfg_s_v01, 264 size), 265 }, 266 { 267 .data_type = QMI_UNSIGNED_1_BYTE, 268 .elem_len = 1, 269 .elem_size = sizeof(u8), 270 .array_type = NO_ARRAY, 271 .tlv_type = 0, 272 .offset = offsetof(struct 273 wlfw_mem_cfg_s_v01, 274 secure_flag), 275 }, 276 { 277 .data_type = QMI_EOTI, 278 .array_type = NO_ARRAY, 279 .tlv_type = QMI_COMMON_TLV_TYPE, 280 }, 281 }; 282 283 static struct qmi_elem_info wlfw_mem_seg_s_v01_ei[] = { 284 { 285 .data_type = QMI_UNSIGNED_4_BYTE, 286 .elem_len = 1, 287 .elem_size = sizeof(u32), 288 .array_type = NO_ARRAY, 289 .tlv_type = 0, 290 .offset = offsetof(struct 291 wlfw_mem_seg_s_v01, 292 size), 293 }, 294 { 295 .data_type = QMI_SIGNED_4_BYTE_ENUM, 296 .elem_len = 1, 297 .elem_size = sizeof(enum wlfw_mem_type_enum_v01), 298 .array_type = NO_ARRAY, 299 .tlv_type = 0, 300 .offset = offsetof(struct 301 wlfw_mem_seg_s_v01, 302 type), 303 }, 304 { 305 .data_type = QMI_DATA_LEN, 306 .elem_len = 1, 307 .elem_size = sizeof(u8), 308 .array_type = NO_ARRAY, 309 .tlv_type = 0, 310 .offset = offsetof(struct 311 wlfw_mem_seg_s_v01, 312 mem_cfg_len), 313 }, 314 { 315 .data_type = QMI_STRUCT, 316 .elem_len = QMI_WLFW_MAX_NUM_MEM_CFG_V01, 317 .elem_size = sizeof(struct wlfw_mem_cfg_s_v01), 318 .array_type = VAR_LEN_ARRAY, 319 .tlv_type = 0, 320 .offset = offsetof(struct 321 wlfw_mem_seg_s_v01, 322 mem_cfg), 323 .ei_array = wlfw_mem_cfg_s_v01_ei, 324 }, 325 { 326 .data_type = QMI_EOTI, 327 .array_type = NO_ARRAY, 328 .tlv_type = QMI_COMMON_TLV_TYPE, 329 }, 330 }; 331 332 static struct qmi_elem_info wlfw_mem_seg_resp_s_v01_ei[] = { 333 { 334 .data_type = QMI_UNSIGNED_8_BYTE, 335 .elem_len = 1, 336 .elem_size = sizeof(u64), 337 .array_type = NO_ARRAY, 338 .tlv_type = 0, 339 .offset = offsetof(struct 340 wlfw_mem_seg_resp_s_v01, 341 addr), 342 }, 343 { 344 .data_type = QMI_UNSIGNED_4_BYTE, 345 .elem_len = 1, 346 .elem_size = sizeof(u32), 347 .array_type = NO_ARRAY, 348 .tlv_type = 0, 349 .offset = offsetof(struct 350 wlfw_mem_seg_resp_s_v01, 351 size), 352 }, 353 { 354 .data_type = QMI_SIGNED_4_BYTE_ENUM, 355 .elem_len = 1, 356 .elem_size = sizeof(enum wlfw_mem_type_enum_v01), 357 .array_type = NO_ARRAY, 358 .tlv_type = 0, 359 .offset = offsetof(struct 360 wlfw_mem_seg_resp_s_v01, 361 type), 362 }, 363 { 364 .data_type = QMI_UNSIGNED_1_BYTE, 365 .elem_len = 1, 366 .elem_size = sizeof(u8), 367 .array_type = NO_ARRAY, 368 .tlv_type = 0, 369 .offset = offsetof(struct 370 wlfw_mem_seg_resp_s_v01, 371 restore), 372 }, 373 { 374 .data_type = QMI_EOTI, 375 .array_type = NO_ARRAY, 376 .tlv_type = QMI_COMMON_TLV_TYPE, 377 }, 378 }; 379 380 static struct qmi_elem_info wlfw_rf_chip_info_s_v01_ei[] = { 381 { 382 .data_type = QMI_UNSIGNED_4_BYTE, 383 .elem_len = 1, 384 .elem_size = sizeof(u32), 385 .array_type = NO_ARRAY, 386 .tlv_type = 0, 387 .offset = offsetof(struct 388 wlfw_rf_chip_info_s_v01, 389 chip_id), 390 }, 391 { 392 .data_type = QMI_UNSIGNED_4_BYTE, 393 .elem_len = 1, 394 .elem_size = sizeof(u32), 395 .array_type = NO_ARRAY, 396 .tlv_type = 0, 397 .offset = offsetof(struct 398 wlfw_rf_chip_info_s_v01, 399 chip_family), 400 }, 401 { 402 .data_type = QMI_EOTI, 403 .array_type = NO_ARRAY, 404 .tlv_type = QMI_COMMON_TLV_TYPE, 405 }, 406 }; 407 408 static struct qmi_elem_info wlfw_rf_board_info_s_v01_ei[] = { 409 { 410 .data_type = QMI_UNSIGNED_4_BYTE, 411 .elem_len = 1, 412 .elem_size = sizeof(u32), 413 .array_type = NO_ARRAY, 414 .tlv_type = 0, 415 .offset = offsetof(struct 416 wlfw_rf_board_info_s_v01, 417 board_id), 418 }, 419 { 420 .data_type = QMI_EOTI, 421 .array_type = NO_ARRAY, 422 .tlv_type = QMI_COMMON_TLV_TYPE, 423 }, 424 }; 425 426 static struct qmi_elem_info wlfw_soc_info_s_v01_ei[] = { 427 { 428 .data_type = QMI_UNSIGNED_4_BYTE, 429 .elem_len = 1, 430 .elem_size = sizeof(u32), 431 .array_type = NO_ARRAY, 432 .tlv_type = 0, 433 .offset = offsetof(struct 434 wlfw_soc_info_s_v01, 435 soc_id), 436 }, 437 { 438 .data_type = QMI_EOTI, 439 .array_type = NO_ARRAY, 440 .tlv_type = QMI_COMMON_TLV_TYPE, 441 }, 442 }; 443 444 static struct qmi_elem_info wlfw_fw_version_info_s_v01_ei[] = { 445 { 446 .data_type = QMI_UNSIGNED_4_BYTE, 447 .elem_len = 1, 448 .elem_size = sizeof(u32), 449 .array_type = NO_ARRAY, 450 .tlv_type = 0, 451 .offset = offsetof(struct 452 wlfw_fw_version_info_s_v01, 453 fw_version), 454 }, 455 { 456 .data_type = QMI_STRING, 457 .elem_len = QMI_WLFW_MAX_TIMESTAMP_LEN_V01 + 1, 458 .elem_size = sizeof(char), 459 .array_type = NO_ARRAY, 460 .tlv_type = 0, 461 .offset = offsetof(struct 462 wlfw_fw_version_info_s_v01, 463 fw_build_timestamp), 464 }, 465 { 466 .data_type = QMI_EOTI, 467 .array_type = NO_ARRAY, 468 .tlv_type = QMI_COMMON_TLV_TYPE, 469 }, 470 }; 471 472 static struct qmi_elem_info wlfw_host_ddr_range_s_v01_ei[] = { 473 { 474 .data_type = QMI_UNSIGNED_8_BYTE, 475 .elem_len = 1, 476 .elem_size = sizeof(u64), 477 .array_type = NO_ARRAY, 478 .tlv_type = 0, 479 .offset = offsetof(struct 480 wlfw_host_ddr_range_s_v01, 481 start), 482 }, 483 { 484 .data_type = QMI_UNSIGNED_8_BYTE, 485 .elem_len = 1, 486 .elem_size = sizeof(u64), 487 .array_type = NO_ARRAY, 488 .tlv_type = 0, 489 .offset = offsetof(struct 490 wlfw_host_ddr_range_s_v01, 491 size), 492 }, 493 { 494 .data_type = QMI_EOTI, 495 .array_type = NO_ARRAY, 496 .tlv_type = QMI_COMMON_TLV_TYPE, 497 }, 498 }; 499 500 static struct qmi_elem_info wlfw_m3_segment_info_s_v01_ei[] = { 501 { 502 .data_type = QMI_SIGNED_4_BYTE_ENUM, 503 .elem_len = 1, 504 .elem_size = sizeof(enum wlfw_m3_segment_type_v01), 505 .array_type = NO_ARRAY, 506 .tlv_type = 0, 507 .offset = offsetof(struct 508 wlfw_m3_segment_info_s_v01, 509 type), 510 }, 511 { 512 .data_type = QMI_UNSIGNED_8_BYTE, 513 .elem_len = 1, 514 .elem_size = sizeof(u64), 515 .array_type = NO_ARRAY, 516 .tlv_type = 0, 517 .offset = offsetof(struct 518 wlfw_m3_segment_info_s_v01, 519 addr), 520 }, 521 { 522 .data_type = QMI_UNSIGNED_8_BYTE, 523 .elem_len = 1, 524 .elem_size = sizeof(u64), 525 .array_type = NO_ARRAY, 526 .tlv_type = 0, 527 .offset = offsetof(struct 528 wlfw_m3_segment_info_s_v01, 529 size), 530 }, 531 { 532 .data_type = QMI_STRING, 533 .elem_len = QMI_WLFW_MAX_STR_LEN_V01 + 1, 534 .elem_size = sizeof(char), 535 .array_type = NO_ARRAY, 536 .tlv_type = 0, 537 .offset = offsetof(struct 538 wlfw_m3_segment_info_s_v01, 539 name), 540 }, 541 { 542 .data_type = QMI_EOTI, 543 .array_type = NO_ARRAY, 544 .tlv_type = QMI_COMMON_TLV_TYPE, 545 }, 546 }; 547 548 static struct qmi_elem_info wlfw_dev_mem_info_s_v01_ei[] = { 549 { 550 .data_type = QMI_UNSIGNED_8_BYTE, 551 .elem_len = 1, 552 .elem_size = sizeof(u64), 553 .array_type = NO_ARRAY, 554 .tlv_type = 0, 555 .offset = offsetof(struct 556 wlfw_dev_mem_info_s_v01, 557 start), 558 }, 559 { 560 .data_type = QMI_UNSIGNED_8_BYTE, 561 .elem_len = 1, 562 .elem_size = sizeof(u64), 563 .array_type = NO_ARRAY, 564 .tlv_type = 0, 565 .offset = offsetof(struct 566 wlfw_dev_mem_info_s_v01, 567 size), 568 }, 569 { 570 .data_type = QMI_EOTI, 571 .array_type = NO_ARRAY, 572 .tlv_type = QMI_COMMON_TLV_TYPE, 573 }, 574 }; 575 576 static struct qmi_elem_info wlfw_host_mlo_chip_info_s_v01_ei[] = { 577 { 578 .data_type = QMI_UNSIGNED_1_BYTE, 579 .elem_len = 1, 580 .elem_size = sizeof(u8), 581 .array_type = NO_ARRAY, 582 .tlv_type = 0, 583 .offset = offsetof(struct 584 wlfw_host_mlo_chip_info_s_v01, 585 chip_id), 586 }, 587 { 588 .data_type = QMI_UNSIGNED_1_BYTE, 589 .elem_len = 1, 590 .elem_size = sizeof(u8), 591 .array_type = NO_ARRAY, 592 .tlv_type = 0, 593 .offset = offsetof(struct 594 wlfw_host_mlo_chip_info_s_v01, 595 num_local_links), 596 }, 597 { 598 .data_type = QMI_UNSIGNED_1_BYTE, 599 .elem_len = QMI_WLFW_MAX_NUM_MLO_LINKS_PER_CHIP_V01, 600 .elem_size = sizeof(u8), 601 .array_type = STATIC_ARRAY, 602 .tlv_type = 0, 603 .offset = offsetof(struct 604 wlfw_host_mlo_chip_info_s_v01, 605 hw_link_id), 606 }, 607 { 608 .data_type = QMI_UNSIGNED_1_BYTE, 609 .elem_len = QMI_WLFW_MAX_NUM_MLO_LINKS_PER_CHIP_V01, 610 .elem_size = sizeof(u8), 611 .array_type = STATIC_ARRAY, 612 .tlv_type = 0, 613 .offset = offsetof(struct 614 wlfw_host_mlo_chip_info_s_v01, 615 valid_mlo_link_id), 616 }, 617 { 618 .data_type = QMI_EOTI, 619 .array_type = NO_ARRAY, 620 .tlv_type = QMI_COMMON_TLV_TYPE, 621 }, 622 }; 623 624 static struct qmi_elem_info wlfw_pmu_param_v01_ei[] = { 625 { 626 .data_type = QMI_UNSIGNED_1_BYTE, 627 .elem_len = QMI_WLFW_PMU_PIN_NAME_MAX_LEN_V01, 628 .elem_size = sizeof(u8), 629 .array_type = STATIC_ARRAY, 630 .tlv_type = 0, 631 .offset = offsetof(struct 632 wlfw_pmu_param_v01, 633 pin_name), 634 }, 635 { 636 .data_type = QMI_UNSIGNED_4_BYTE, 637 .elem_len = 1, 638 .elem_size = sizeof(u32), 639 .array_type = NO_ARRAY, 640 .tlv_type = 0, 641 .offset = offsetof(struct 642 wlfw_pmu_param_v01, 643 wake_volt_valid), 644 }, 645 { 646 .data_type = QMI_UNSIGNED_4_BYTE, 647 .elem_len = 1, 648 .elem_size = sizeof(u32), 649 .array_type = NO_ARRAY, 650 .tlv_type = 0, 651 .offset = offsetof(struct 652 wlfw_pmu_param_v01, 653 wake_volt), 654 }, 655 { 656 .data_type = QMI_UNSIGNED_4_BYTE, 657 .elem_len = 1, 658 .elem_size = sizeof(u32), 659 .array_type = NO_ARRAY, 660 .tlv_type = 0, 661 .offset = offsetof(struct 662 wlfw_pmu_param_v01, 663 sleep_volt_valid), 664 }, 665 { 666 .data_type = QMI_UNSIGNED_4_BYTE, 667 .elem_len = 1, 668 .elem_size = sizeof(u32), 669 .array_type = NO_ARRAY, 670 .tlv_type = 0, 671 .offset = offsetof(struct 672 wlfw_pmu_param_v01, 673 sleep_volt), 674 }, 675 { 676 .data_type = QMI_EOTI, 677 .array_type = NO_ARRAY, 678 .tlv_type = QMI_COMMON_TLV_TYPE, 679 }, 680 }; 681 682 static struct qmi_elem_info wlfw_pmu_cfg_v01_ei[] = { 683 { 684 .data_type = QMI_DATA_LEN, 685 .elem_len = 1, 686 .elem_size = sizeof(u8), 687 .array_type = NO_ARRAY, 688 .tlv_type = 0, 689 .offset = offsetof(struct 690 wlfw_pmu_cfg_v01, 691 pmu_param_len), 692 }, 693 { 694 .data_type = QMI_STRUCT, 695 .elem_len = QMI_WLFW_PMU_PARAMS_MAX_V01, 696 .elem_size = sizeof(struct wlfw_pmu_param_v01), 697 .array_type = VAR_LEN_ARRAY, 698 .tlv_type = 0, 699 .offset = offsetof(struct 700 wlfw_pmu_cfg_v01, 701 pmu_param), 702 .ei_array = wlfw_pmu_param_v01_ei, 703 }, 704 { 705 .data_type = QMI_EOTI, 706 .array_type = NO_ARRAY, 707 .tlv_type = QMI_COMMON_TLV_TYPE, 708 }, 709 }; 710 711 static struct qmi_elem_info wlfw_shadow_reg_v3_cfg_s_v01_ei[] = { 712 { 713 .data_type = QMI_UNSIGNED_4_BYTE, 714 .elem_len = 1, 715 .elem_size = sizeof(u32), 716 .array_type = NO_ARRAY, 717 .tlv_type = 0, 718 .offset = offsetof(struct 719 wlfw_shadow_reg_v3_cfg_s_v01, 720 addr), 721 }, 722 { 723 .data_type = QMI_EOTI, 724 .array_type = NO_ARRAY, 725 .tlv_type = QMI_COMMON_TLV_TYPE, 726 }, 727 }; 728 729 struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[] = { 730 { 731 .data_type = QMI_OPT_FLAG, 732 .elem_len = 1, 733 .elem_size = sizeof(u8), 734 .array_type = NO_ARRAY, 735 .tlv_type = 0x10, 736 .offset = offsetof(struct 737 wlfw_ind_register_req_msg_v01, 738 fw_ready_enable_valid), 739 }, 740 { 741 .data_type = QMI_UNSIGNED_1_BYTE, 742 .elem_len = 1, 743 .elem_size = sizeof(u8), 744 .array_type = NO_ARRAY, 745 .tlv_type = 0x10, 746 .offset = offsetof(struct 747 wlfw_ind_register_req_msg_v01, 748 fw_ready_enable), 749 }, 750 { 751 .data_type = QMI_OPT_FLAG, 752 .elem_len = 1, 753 .elem_size = sizeof(u8), 754 .array_type = NO_ARRAY, 755 .tlv_type = 0x11, 756 .offset = offsetof(struct 757 wlfw_ind_register_req_msg_v01, 758 initiate_cal_download_enable_valid), 759 }, 760 { 761 .data_type = QMI_UNSIGNED_1_BYTE, 762 .elem_len = 1, 763 .elem_size = sizeof(u8), 764 .array_type = NO_ARRAY, 765 .tlv_type = 0x11, 766 .offset = offsetof(struct 767 wlfw_ind_register_req_msg_v01, 768 initiate_cal_download_enable), 769 }, 770 { 771 .data_type = QMI_OPT_FLAG, 772 .elem_len = 1, 773 .elem_size = sizeof(u8), 774 .array_type = NO_ARRAY, 775 .tlv_type = 0x12, 776 .offset = offsetof(struct 777 wlfw_ind_register_req_msg_v01, 778 initiate_cal_update_enable_valid), 779 }, 780 { 781 .data_type = QMI_UNSIGNED_1_BYTE, 782 .elem_len = 1, 783 .elem_size = sizeof(u8), 784 .array_type = NO_ARRAY, 785 .tlv_type = 0x12, 786 .offset = offsetof(struct 787 wlfw_ind_register_req_msg_v01, 788 initiate_cal_update_enable), 789 }, 790 { 791 .data_type = QMI_OPT_FLAG, 792 .elem_len = 1, 793 .elem_size = sizeof(u8), 794 .array_type = NO_ARRAY, 795 .tlv_type = 0x13, 796 .offset = offsetof(struct 797 wlfw_ind_register_req_msg_v01, 798 msa_ready_enable_valid), 799 }, 800 { 801 .data_type = QMI_UNSIGNED_1_BYTE, 802 .elem_len = 1, 803 .elem_size = sizeof(u8), 804 .array_type = NO_ARRAY, 805 .tlv_type = 0x13, 806 .offset = offsetof(struct 807 wlfw_ind_register_req_msg_v01, 808 msa_ready_enable), 809 }, 810 { 811 .data_type = QMI_OPT_FLAG, 812 .elem_len = 1, 813 .elem_size = sizeof(u8), 814 .array_type = NO_ARRAY, 815 .tlv_type = 0x14, 816 .offset = offsetof(struct 817 wlfw_ind_register_req_msg_v01, 818 pin_connect_result_enable_valid), 819 }, 820 { 821 .data_type = QMI_UNSIGNED_1_BYTE, 822 .elem_len = 1, 823 .elem_size = sizeof(u8), 824 .array_type = NO_ARRAY, 825 .tlv_type = 0x14, 826 .offset = offsetof(struct 827 wlfw_ind_register_req_msg_v01, 828 pin_connect_result_enable), 829 }, 830 { 831 .data_type = QMI_OPT_FLAG, 832 .elem_len = 1, 833 .elem_size = sizeof(u8), 834 .array_type = NO_ARRAY, 835 .tlv_type = 0x15, 836 .offset = offsetof(struct 837 wlfw_ind_register_req_msg_v01, 838 client_id_valid), 839 }, 840 { 841 .data_type = QMI_UNSIGNED_4_BYTE, 842 .elem_len = 1, 843 .elem_size = sizeof(u32), 844 .array_type = NO_ARRAY, 845 .tlv_type = 0x15, 846 .offset = offsetof(struct 847 wlfw_ind_register_req_msg_v01, 848 client_id), 849 }, 850 { 851 .data_type = QMI_OPT_FLAG, 852 .elem_len = 1, 853 .elem_size = sizeof(u8), 854 .array_type = NO_ARRAY, 855 .tlv_type = 0x16, 856 .offset = offsetof(struct 857 wlfw_ind_register_req_msg_v01, 858 request_mem_enable_valid), 859 }, 860 { 861 .data_type = QMI_UNSIGNED_1_BYTE, 862 .elem_len = 1, 863 .elem_size = sizeof(u8), 864 .array_type = NO_ARRAY, 865 .tlv_type = 0x16, 866 .offset = offsetof(struct 867 wlfw_ind_register_req_msg_v01, 868 request_mem_enable), 869 }, 870 { 871 .data_type = QMI_OPT_FLAG, 872 .elem_len = 1, 873 .elem_size = sizeof(u8), 874 .array_type = NO_ARRAY, 875 .tlv_type = 0x17, 876 .offset = offsetof(struct 877 wlfw_ind_register_req_msg_v01, 878 fw_mem_ready_enable_valid), 879 }, 880 { 881 .data_type = QMI_UNSIGNED_1_BYTE, 882 .elem_len = 1, 883 .elem_size = sizeof(u8), 884 .array_type = NO_ARRAY, 885 .tlv_type = 0x17, 886 .offset = offsetof(struct 887 wlfw_ind_register_req_msg_v01, 888 fw_mem_ready_enable), 889 }, 890 { 891 .data_type = QMI_OPT_FLAG, 892 .elem_len = 1, 893 .elem_size = sizeof(u8), 894 .array_type = NO_ARRAY, 895 .tlv_type = 0x18, 896 .offset = offsetof(struct 897 wlfw_ind_register_req_msg_v01, 898 fw_init_done_enable_valid), 899 }, 900 { 901 .data_type = QMI_UNSIGNED_1_BYTE, 902 .elem_len = 1, 903 .elem_size = sizeof(u8), 904 .array_type = NO_ARRAY, 905 .tlv_type = 0x18, 906 .offset = offsetof(struct 907 wlfw_ind_register_req_msg_v01, 908 fw_init_done_enable), 909 }, 910 { 911 .data_type = QMI_OPT_FLAG, 912 .elem_len = 1, 913 .elem_size = sizeof(u8), 914 .array_type = NO_ARRAY, 915 .tlv_type = 0x19, 916 .offset = offsetof(struct 917 wlfw_ind_register_req_msg_v01, 918 rejuvenate_enable_valid), 919 }, 920 { 921 .data_type = QMI_UNSIGNED_4_BYTE, 922 .elem_len = 1, 923 .elem_size = sizeof(u32), 924 .array_type = NO_ARRAY, 925 .tlv_type = 0x19, 926 .offset = offsetof(struct 927 wlfw_ind_register_req_msg_v01, 928 rejuvenate_enable), 929 }, 930 { 931 .data_type = QMI_OPT_FLAG, 932 .elem_len = 1, 933 .elem_size = sizeof(u8), 934 .array_type = NO_ARRAY, 935 .tlv_type = 0x1A, 936 .offset = offsetof(struct 937 wlfw_ind_register_req_msg_v01, 938 xo_cal_enable_valid), 939 }, 940 { 941 .data_type = QMI_UNSIGNED_1_BYTE, 942 .elem_len = 1, 943 .elem_size = sizeof(u8), 944 .array_type = NO_ARRAY, 945 .tlv_type = 0x1A, 946 .offset = offsetof(struct 947 wlfw_ind_register_req_msg_v01, 948 xo_cal_enable), 949 }, 950 { 951 .data_type = QMI_OPT_FLAG, 952 .elem_len = 1, 953 .elem_size = sizeof(u8), 954 .array_type = NO_ARRAY, 955 .tlv_type = 0x1B, 956 .offset = offsetof(struct 957 wlfw_ind_register_req_msg_v01, 958 cal_done_enable_valid), 959 }, 960 { 961 .data_type = QMI_UNSIGNED_1_BYTE, 962 .elem_len = 1, 963 .elem_size = sizeof(u8), 964 .array_type = NO_ARRAY, 965 .tlv_type = 0x1B, 966 .offset = offsetof(struct 967 wlfw_ind_register_req_msg_v01, 968 cal_done_enable), 969 }, 970 { 971 .data_type = QMI_OPT_FLAG, 972 .elem_len = 1, 973 .elem_size = sizeof(u8), 974 .array_type = NO_ARRAY, 975 .tlv_type = 0x1C, 976 .offset = offsetof(struct 977 wlfw_ind_register_req_msg_v01, 978 qdss_trace_req_mem_enable_valid), 979 }, 980 { 981 .data_type = QMI_UNSIGNED_1_BYTE, 982 .elem_len = 1, 983 .elem_size = sizeof(u8), 984 .array_type = NO_ARRAY, 985 .tlv_type = 0x1C, 986 .offset = offsetof(struct 987 wlfw_ind_register_req_msg_v01, 988 qdss_trace_req_mem_enable), 989 }, 990 { 991 .data_type = QMI_OPT_FLAG, 992 .elem_len = 1, 993 .elem_size = sizeof(u8), 994 .array_type = NO_ARRAY, 995 .tlv_type = 0x1D, 996 .offset = offsetof(struct 997 wlfw_ind_register_req_msg_v01, 998 qdss_trace_save_enable_valid), 999 }, 1000 { 1001 .data_type = QMI_UNSIGNED_1_BYTE, 1002 .elem_len = 1, 1003 .elem_size = sizeof(u8), 1004 .array_type = NO_ARRAY, 1005 .tlv_type = 0x1D, 1006 .offset = offsetof(struct 1007 wlfw_ind_register_req_msg_v01, 1008 qdss_trace_save_enable), 1009 }, 1010 { 1011 .data_type = QMI_OPT_FLAG, 1012 .elem_len = 1, 1013 .elem_size = sizeof(u8), 1014 .array_type = NO_ARRAY, 1015 .tlv_type = 0x1E, 1016 .offset = offsetof(struct 1017 wlfw_ind_register_req_msg_v01, 1018 qdss_trace_free_enable_valid), 1019 }, 1020 { 1021 .data_type = QMI_UNSIGNED_1_BYTE, 1022 .elem_len = 1, 1023 .elem_size = sizeof(u8), 1024 .array_type = NO_ARRAY, 1025 .tlv_type = 0x1E, 1026 .offset = offsetof(struct 1027 wlfw_ind_register_req_msg_v01, 1028 qdss_trace_free_enable), 1029 }, 1030 { 1031 .data_type = QMI_OPT_FLAG, 1032 .elem_len = 1, 1033 .elem_size = sizeof(u8), 1034 .array_type = NO_ARRAY, 1035 .tlv_type = 0x1F, 1036 .offset = offsetof(struct 1037 wlfw_ind_register_req_msg_v01, 1038 respond_get_info_enable_valid), 1039 }, 1040 { 1041 .data_type = QMI_UNSIGNED_1_BYTE, 1042 .elem_len = 1, 1043 .elem_size = sizeof(u8), 1044 .array_type = NO_ARRAY, 1045 .tlv_type = 0x1F, 1046 .offset = offsetof(struct 1047 wlfw_ind_register_req_msg_v01, 1048 respond_get_info_enable), 1049 }, 1050 { 1051 .data_type = QMI_OPT_FLAG, 1052 .elem_len = 1, 1053 .elem_size = sizeof(u8), 1054 .array_type = NO_ARRAY, 1055 .tlv_type = 0x20, 1056 .offset = offsetof(struct 1057 wlfw_ind_register_req_msg_v01, 1058 m3_dump_upload_req_enable_valid), 1059 }, 1060 { 1061 .data_type = QMI_UNSIGNED_1_BYTE, 1062 .elem_len = 1, 1063 .elem_size = sizeof(u8), 1064 .array_type = NO_ARRAY, 1065 .tlv_type = 0x20, 1066 .offset = offsetof(struct 1067 wlfw_ind_register_req_msg_v01, 1068 m3_dump_upload_req_enable), 1069 }, 1070 { 1071 .data_type = QMI_OPT_FLAG, 1072 .elem_len = 1, 1073 .elem_size = sizeof(u8), 1074 .array_type = NO_ARRAY, 1075 .tlv_type = 0x21, 1076 .offset = offsetof(struct 1077 wlfw_ind_register_req_msg_v01, 1078 wfc_call_twt_config_enable_valid), 1079 }, 1080 { 1081 .data_type = QMI_UNSIGNED_1_BYTE, 1082 .elem_len = 1, 1083 .elem_size = sizeof(u8), 1084 .array_type = NO_ARRAY, 1085 .tlv_type = 0x21, 1086 .offset = offsetof(struct 1087 wlfw_ind_register_req_msg_v01, 1088 wfc_call_twt_config_enable), 1089 }, 1090 { 1091 .data_type = QMI_OPT_FLAG, 1092 .elem_len = 1, 1093 .elem_size = sizeof(u8), 1094 .array_type = NO_ARRAY, 1095 .tlv_type = 0x22, 1096 .offset = offsetof(struct 1097 wlfw_ind_register_req_msg_v01, 1098 qdss_mem_ready_enable_valid), 1099 }, 1100 { 1101 .data_type = QMI_UNSIGNED_1_BYTE, 1102 .elem_len = 1, 1103 .elem_size = sizeof(u8), 1104 .array_type = NO_ARRAY, 1105 .tlv_type = 0x22, 1106 .offset = offsetof(struct 1107 wlfw_ind_register_req_msg_v01, 1108 qdss_mem_ready_enable), 1109 }, 1110 { 1111 .data_type = QMI_OPT_FLAG, 1112 .elem_len = 1, 1113 .elem_size = sizeof(u8), 1114 .array_type = NO_ARRAY, 1115 .tlv_type = 0x23, 1116 .offset = offsetof(struct 1117 wlfw_ind_register_req_msg_v01, 1118 m3_dump_upload_segments_req_enable_valid), 1119 }, 1120 { 1121 .data_type = QMI_UNSIGNED_1_BYTE, 1122 .elem_len = 1, 1123 .elem_size = sizeof(u8), 1124 .array_type = NO_ARRAY, 1125 .tlv_type = 0x23, 1126 .offset = offsetof(struct 1127 wlfw_ind_register_req_msg_v01, 1128 m3_dump_upload_segments_req_enable), 1129 }, 1130 { 1131 .data_type = QMI_EOTI, 1132 .array_type = NO_ARRAY, 1133 .tlv_type = QMI_COMMON_TLV_TYPE, 1134 }, 1135 }; 1136 EXPORT_SYMBOL(wlfw_ind_register_req_msg_v01_ei); 1137 1138 struct qmi_elem_info wlfw_ind_register_resp_msg_v01_ei[] = { 1139 { 1140 .data_type = QMI_STRUCT, 1141 .elem_len = 1, 1142 .elem_size = sizeof(struct qmi_response_type_v01), 1143 .array_type = NO_ARRAY, 1144 .tlv_type = 0x02, 1145 .offset = offsetof(struct 1146 wlfw_ind_register_resp_msg_v01, 1147 resp), 1148 .ei_array = qmi_response_type_v01_ei, 1149 }, 1150 { 1151 .data_type = QMI_OPT_FLAG, 1152 .elem_len = 1, 1153 .elem_size = sizeof(u8), 1154 .array_type = NO_ARRAY, 1155 .tlv_type = 0x10, 1156 .offset = offsetof(struct 1157 wlfw_ind_register_resp_msg_v01, 1158 fw_status_valid), 1159 }, 1160 { 1161 .data_type = QMI_UNSIGNED_8_BYTE, 1162 .elem_len = 1, 1163 .elem_size = sizeof(u64), 1164 .array_type = NO_ARRAY, 1165 .tlv_type = 0x10, 1166 .offset = offsetof(struct 1167 wlfw_ind_register_resp_msg_v01, 1168 fw_status), 1169 }, 1170 { 1171 .data_type = QMI_EOTI, 1172 .array_type = NO_ARRAY, 1173 .tlv_type = QMI_COMMON_TLV_TYPE, 1174 }, 1175 }; 1176 EXPORT_SYMBOL(wlfw_ind_register_resp_msg_v01_ei); 1177 1178 struct qmi_elem_info wlfw_fw_ready_ind_msg_v01_ei[] = { 1179 { 1180 .data_type = QMI_EOTI, 1181 .array_type = NO_ARRAY, 1182 .tlv_type = QMI_COMMON_TLV_TYPE, 1183 }, 1184 }; 1185 EXPORT_SYMBOL(wlfw_fw_ready_ind_msg_v01_ei); 1186 1187 struct qmi_elem_info wlfw_msa_ready_ind_msg_v01_ei[] = { 1188 { 1189 .data_type = QMI_OPT_FLAG, 1190 .elem_len = 1, 1191 .elem_size = sizeof(u8), 1192 .array_type = NO_ARRAY, 1193 .tlv_type = 0x10, 1194 .offset = offsetof(struct 1195 wlfw_msa_ready_ind_msg_v01, 1196 hang_data_addr_offset_valid), 1197 }, 1198 { 1199 .data_type = QMI_UNSIGNED_4_BYTE, 1200 .elem_len = 1, 1201 .elem_size = sizeof(u32), 1202 .array_type = NO_ARRAY, 1203 .tlv_type = 0x10, 1204 .offset = offsetof(struct 1205 wlfw_msa_ready_ind_msg_v01, 1206 hang_data_addr_offset), 1207 }, 1208 { 1209 .data_type = QMI_OPT_FLAG, 1210 .elem_len = 1, 1211 .elem_size = sizeof(u8), 1212 .array_type = NO_ARRAY, 1213 .tlv_type = 0x11, 1214 .offset = offsetof(struct 1215 wlfw_msa_ready_ind_msg_v01, 1216 hang_data_length_valid), 1217 }, 1218 { 1219 .data_type = QMI_UNSIGNED_2_BYTE, 1220 .elem_len = 1, 1221 .elem_size = sizeof(u16), 1222 .array_type = NO_ARRAY, 1223 .tlv_type = 0x11, 1224 .offset = offsetof(struct 1225 wlfw_msa_ready_ind_msg_v01, 1226 hang_data_length), 1227 }, 1228 { 1229 .data_type = QMI_EOTI, 1230 .array_type = NO_ARRAY, 1231 .tlv_type = QMI_COMMON_TLV_TYPE, 1232 }, 1233 }; 1234 EXPORT_SYMBOL(wlfw_msa_ready_ind_msg_v01_ei); 1235 1236 struct qmi_elem_info wlfw_pin_connect_result_ind_msg_v01_ei[] = { 1237 { 1238 .data_type = QMI_OPT_FLAG, 1239 .elem_len = 1, 1240 .elem_size = sizeof(u8), 1241 .array_type = NO_ARRAY, 1242 .tlv_type = 0x10, 1243 .offset = offsetof(struct 1244 wlfw_pin_connect_result_ind_msg_v01, 1245 pwr_pin_result_valid), 1246 }, 1247 { 1248 .data_type = QMI_UNSIGNED_4_BYTE, 1249 .elem_len = 1, 1250 .elem_size = sizeof(u32), 1251 .array_type = NO_ARRAY, 1252 .tlv_type = 0x10, 1253 .offset = offsetof(struct 1254 wlfw_pin_connect_result_ind_msg_v01, 1255 pwr_pin_result), 1256 }, 1257 { 1258 .data_type = QMI_OPT_FLAG, 1259 .elem_len = 1, 1260 .elem_size = sizeof(u8), 1261 .array_type = NO_ARRAY, 1262 .tlv_type = 0x11, 1263 .offset = offsetof(struct 1264 wlfw_pin_connect_result_ind_msg_v01, 1265 phy_io_pin_result_valid), 1266 }, 1267 { 1268 .data_type = QMI_UNSIGNED_4_BYTE, 1269 .elem_len = 1, 1270 .elem_size = sizeof(u32), 1271 .array_type = NO_ARRAY, 1272 .tlv_type = 0x11, 1273 .offset = offsetof(struct 1274 wlfw_pin_connect_result_ind_msg_v01, 1275 phy_io_pin_result), 1276 }, 1277 { 1278 .data_type = QMI_OPT_FLAG, 1279 .elem_len = 1, 1280 .elem_size = sizeof(u8), 1281 .array_type = NO_ARRAY, 1282 .tlv_type = 0x12, 1283 .offset = offsetof(struct 1284 wlfw_pin_connect_result_ind_msg_v01, 1285 rf_pin_result_valid), 1286 }, 1287 { 1288 .data_type = QMI_UNSIGNED_4_BYTE, 1289 .elem_len = 1, 1290 .elem_size = sizeof(u32), 1291 .array_type = NO_ARRAY, 1292 .tlv_type = 0x12, 1293 .offset = offsetof(struct 1294 wlfw_pin_connect_result_ind_msg_v01, 1295 rf_pin_result), 1296 }, 1297 { 1298 .data_type = QMI_EOTI, 1299 .array_type = NO_ARRAY, 1300 .tlv_type = QMI_COMMON_TLV_TYPE, 1301 }, 1302 }; 1303 EXPORT_SYMBOL(wlfw_pin_connect_result_ind_msg_v01_ei); 1304 1305 struct qmi_elem_info wlfw_wlan_mode_req_msg_v01_ei[] = { 1306 { 1307 .data_type = QMI_SIGNED_4_BYTE_ENUM, 1308 .elem_len = 1, 1309 .elem_size = sizeof(enum wlfw_driver_mode_enum_v01), 1310 .array_type = NO_ARRAY, 1311 .tlv_type = 0x01, 1312 .offset = offsetof(struct 1313 wlfw_wlan_mode_req_msg_v01, 1314 mode), 1315 }, 1316 { 1317 .data_type = QMI_OPT_FLAG, 1318 .elem_len = 1, 1319 .elem_size = sizeof(u8), 1320 .array_type = NO_ARRAY, 1321 .tlv_type = 0x10, 1322 .offset = offsetof(struct 1323 wlfw_wlan_mode_req_msg_v01, 1324 hw_debug_valid), 1325 }, 1326 { 1327 .data_type = QMI_UNSIGNED_1_BYTE, 1328 .elem_len = 1, 1329 .elem_size = sizeof(u8), 1330 .array_type = NO_ARRAY, 1331 .tlv_type = 0x10, 1332 .offset = offsetof(struct 1333 wlfw_wlan_mode_req_msg_v01, 1334 hw_debug), 1335 }, 1336 { 1337 .data_type = QMI_OPT_FLAG, 1338 .elem_len = 1, 1339 .elem_size = sizeof(u8), 1340 .array_type = NO_ARRAY, 1341 .tlv_type = 0x11, 1342 .offset = offsetof(struct 1343 wlfw_wlan_mode_req_msg_v01, 1344 xo_cal_data_valid), 1345 }, 1346 { 1347 .data_type = QMI_UNSIGNED_1_BYTE, 1348 .elem_len = 1, 1349 .elem_size = sizeof(u8), 1350 .array_type = NO_ARRAY, 1351 .tlv_type = 0x11, 1352 .offset = offsetof(struct 1353 wlfw_wlan_mode_req_msg_v01, 1354 xo_cal_data), 1355 }, 1356 { 1357 .data_type = QMI_OPT_FLAG, 1358 .elem_len = 1, 1359 .elem_size = sizeof(u8), 1360 .array_type = NO_ARRAY, 1361 .tlv_type = 0x12, 1362 .offset = offsetof(struct 1363 wlfw_wlan_mode_req_msg_v01, 1364 wlan_en_delay_valid), 1365 }, 1366 { 1367 .data_type = QMI_UNSIGNED_4_BYTE, 1368 .elem_len = 1, 1369 .elem_size = sizeof(u32), 1370 .array_type = NO_ARRAY, 1371 .tlv_type = 0x12, 1372 .offset = offsetof(struct 1373 wlfw_wlan_mode_req_msg_v01, 1374 wlan_en_delay), 1375 }, 1376 { 1377 .data_type = QMI_EOTI, 1378 .array_type = NO_ARRAY, 1379 .tlv_type = QMI_COMMON_TLV_TYPE, 1380 }, 1381 }; 1382 EXPORT_SYMBOL(wlfw_wlan_mode_req_msg_v01_ei); 1383 1384 struct qmi_elem_info wlfw_wlan_mode_resp_msg_v01_ei[] = { 1385 { 1386 .data_type = QMI_STRUCT, 1387 .elem_len = 1, 1388 .elem_size = sizeof(struct qmi_response_type_v01), 1389 .array_type = NO_ARRAY, 1390 .tlv_type = 0x02, 1391 .offset = offsetof(struct 1392 wlfw_wlan_mode_resp_msg_v01, 1393 resp), 1394 .ei_array = qmi_response_type_v01_ei, 1395 }, 1396 { 1397 .data_type = QMI_EOTI, 1398 .array_type = NO_ARRAY, 1399 .tlv_type = QMI_COMMON_TLV_TYPE, 1400 }, 1401 }; 1402 EXPORT_SYMBOL(wlfw_wlan_mode_resp_msg_v01_ei); 1403 1404 struct qmi_elem_info wlfw_wlan_cfg_req_msg_v01_ei[] = { 1405 { 1406 .data_type = QMI_OPT_FLAG, 1407 .elem_len = 1, 1408 .elem_size = sizeof(u8), 1409 .array_type = NO_ARRAY, 1410 .tlv_type = 0x10, 1411 .offset = offsetof(struct 1412 wlfw_wlan_cfg_req_msg_v01, 1413 host_version_valid), 1414 }, 1415 { 1416 .data_type = QMI_STRING, 1417 .elem_len = QMI_WLFW_MAX_STR_LEN_V01 + 1, 1418 .elem_size = sizeof(char), 1419 .array_type = NO_ARRAY, 1420 .tlv_type = 0x10, 1421 .offset = offsetof(struct 1422 wlfw_wlan_cfg_req_msg_v01, 1423 host_version), 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 = 0x11, 1431 .offset = offsetof(struct 1432 wlfw_wlan_cfg_req_msg_v01, 1433 tgt_cfg_valid), 1434 }, 1435 { 1436 .data_type = QMI_DATA_LEN, 1437 .elem_len = 1, 1438 .elem_size = sizeof(u8), 1439 .array_type = NO_ARRAY, 1440 .tlv_type = 0x11, 1441 .offset = offsetof(struct 1442 wlfw_wlan_cfg_req_msg_v01, 1443 tgt_cfg_len), 1444 }, 1445 { 1446 .data_type = QMI_STRUCT, 1447 .elem_len = QMI_WLFW_MAX_NUM_CE_V01, 1448 .elem_size = sizeof(struct wlfw_ce_tgt_pipe_cfg_s_v01), 1449 .array_type = VAR_LEN_ARRAY, 1450 .tlv_type = 0x11, 1451 .offset = offsetof(struct 1452 wlfw_wlan_cfg_req_msg_v01, 1453 tgt_cfg), 1454 .ei_array = wlfw_ce_tgt_pipe_cfg_s_v01_ei, 1455 }, 1456 { 1457 .data_type = QMI_OPT_FLAG, 1458 .elem_len = 1, 1459 .elem_size = sizeof(u8), 1460 .array_type = NO_ARRAY, 1461 .tlv_type = 0x12, 1462 .offset = offsetof(struct 1463 wlfw_wlan_cfg_req_msg_v01, 1464 svc_cfg_valid), 1465 }, 1466 { 1467 .data_type = QMI_DATA_LEN, 1468 .elem_len = 1, 1469 .elem_size = sizeof(u8), 1470 .array_type = NO_ARRAY, 1471 .tlv_type = 0x12, 1472 .offset = offsetof(struct 1473 wlfw_wlan_cfg_req_msg_v01, 1474 svc_cfg_len), 1475 }, 1476 { 1477 .data_type = QMI_STRUCT, 1478 .elem_len = QMI_WLFW_MAX_NUM_SVC_V01, 1479 .elem_size = sizeof(struct wlfw_ce_svc_pipe_cfg_s_v01), 1480 .array_type = VAR_LEN_ARRAY, 1481 .tlv_type = 0x12, 1482 .offset = offsetof(struct 1483 wlfw_wlan_cfg_req_msg_v01, 1484 svc_cfg), 1485 .ei_array = wlfw_ce_svc_pipe_cfg_s_v01_ei, 1486 }, 1487 { 1488 .data_type = QMI_OPT_FLAG, 1489 .elem_len = 1, 1490 .elem_size = sizeof(u8), 1491 .array_type = NO_ARRAY, 1492 .tlv_type = 0x13, 1493 .offset = offsetof(struct 1494 wlfw_wlan_cfg_req_msg_v01, 1495 shadow_reg_valid), 1496 }, 1497 { 1498 .data_type = QMI_DATA_LEN, 1499 .elem_len = 1, 1500 .elem_size = sizeof(u8), 1501 .array_type = NO_ARRAY, 1502 .tlv_type = 0x13, 1503 .offset = offsetof(struct 1504 wlfw_wlan_cfg_req_msg_v01, 1505 shadow_reg_len), 1506 }, 1507 { 1508 .data_type = QMI_STRUCT, 1509 .elem_len = QMI_WLFW_MAX_NUM_SHADOW_REG_V01, 1510 .elem_size = sizeof(struct wlfw_shadow_reg_cfg_s_v01), 1511 .array_type = VAR_LEN_ARRAY, 1512 .tlv_type = 0x13, 1513 .offset = offsetof(struct 1514 wlfw_wlan_cfg_req_msg_v01, 1515 shadow_reg), 1516 .ei_array = wlfw_shadow_reg_cfg_s_v01_ei, 1517 }, 1518 { 1519 .data_type = QMI_OPT_FLAG, 1520 .elem_len = 1, 1521 .elem_size = sizeof(u8), 1522 .array_type = NO_ARRAY, 1523 .tlv_type = 0x14, 1524 .offset = offsetof(struct 1525 wlfw_wlan_cfg_req_msg_v01, 1526 shadow_reg_v2_valid), 1527 }, 1528 { 1529 .data_type = QMI_DATA_LEN, 1530 .elem_len = 1, 1531 .elem_size = sizeof(u8), 1532 .array_type = NO_ARRAY, 1533 .tlv_type = 0x14, 1534 .offset = offsetof(struct 1535 wlfw_wlan_cfg_req_msg_v01, 1536 shadow_reg_v2_len), 1537 }, 1538 { 1539 .data_type = QMI_STRUCT, 1540 .elem_len = QMI_WLFW_MAX_NUM_SHADOW_REG_V2_V01, 1541 .elem_size = sizeof(struct wlfw_shadow_reg_v2_cfg_s_v01), 1542 .array_type = VAR_LEN_ARRAY, 1543 .tlv_type = 0x14, 1544 .offset = offsetof(struct 1545 wlfw_wlan_cfg_req_msg_v01, 1546 shadow_reg_v2), 1547 .ei_array = wlfw_shadow_reg_v2_cfg_s_v01_ei, 1548 }, 1549 { 1550 .data_type = QMI_OPT_FLAG, 1551 .elem_len = 1, 1552 .elem_size = sizeof(u8), 1553 .array_type = NO_ARRAY, 1554 .tlv_type = 0x15, 1555 .offset = offsetof(struct 1556 wlfw_wlan_cfg_req_msg_v01, 1557 rri_over_ddr_cfg_valid), 1558 }, 1559 { 1560 .data_type = QMI_STRUCT, 1561 .elem_len = 1, 1562 .elem_size = sizeof(struct wlfw_rri_over_ddr_cfg_s_v01), 1563 .array_type = NO_ARRAY, 1564 .tlv_type = 0x15, 1565 .offset = offsetof(struct 1566 wlfw_wlan_cfg_req_msg_v01, 1567 rri_over_ddr_cfg), 1568 .ei_array = wlfw_rri_over_ddr_cfg_s_v01_ei, 1569 }, 1570 { 1571 .data_type = QMI_OPT_FLAG, 1572 .elem_len = 1, 1573 .elem_size = sizeof(u8), 1574 .array_type = NO_ARRAY, 1575 .tlv_type = 0x16, 1576 .offset = offsetof(struct 1577 wlfw_wlan_cfg_req_msg_v01, 1578 msi_cfg_valid), 1579 }, 1580 { 1581 .data_type = QMI_DATA_LEN, 1582 .elem_len = 1, 1583 .elem_size = sizeof(u8), 1584 .array_type = NO_ARRAY, 1585 .tlv_type = 0x16, 1586 .offset = offsetof(struct 1587 wlfw_wlan_cfg_req_msg_v01, 1588 msi_cfg_len), 1589 }, 1590 { 1591 .data_type = QMI_STRUCT, 1592 .elem_len = QMI_WLFW_MAX_NUM_CE_V01, 1593 .elem_size = sizeof(struct wlfw_msi_cfg_s_v01), 1594 .array_type = VAR_LEN_ARRAY, 1595 .tlv_type = 0x16, 1596 .offset = offsetof(struct 1597 wlfw_wlan_cfg_req_msg_v01, 1598 msi_cfg), 1599 .ei_array = wlfw_msi_cfg_s_v01_ei, 1600 }, 1601 { 1602 .data_type = QMI_OPT_FLAG, 1603 .elem_len = 1, 1604 .elem_size = sizeof(u8), 1605 .array_type = NO_ARRAY, 1606 .tlv_type = 0x17, 1607 .offset = offsetof(struct 1608 wlfw_wlan_cfg_req_msg_v01, 1609 shadow_reg_v3_valid), 1610 }, 1611 { 1612 .data_type = QMI_DATA_LEN, 1613 .elem_len = 1, 1614 .elem_size = sizeof(u8), 1615 .array_type = NO_ARRAY, 1616 .tlv_type = 0x17, 1617 .offset = offsetof(struct 1618 wlfw_wlan_cfg_req_msg_v01, 1619 shadow_reg_v3_len), 1620 }, 1621 { 1622 .data_type = QMI_STRUCT, 1623 .elem_len = QMI_WLFW_MAX_NUM_SHADOW_REG_V3_V01, 1624 .elem_size = sizeof(struct wlfw_shadow_reg_v3_cfg_s_v01), 1625 .array_type = VAR_LEN_ARRAY, 1626 .tlv_type = 0x17, 1627 .offset = offsetof(struct 1628 wlfw_wlan_cfg_req_msg_v01, 1629 shadow_reg_v3), 1630 .ei_array = wlfw_shadow_reg_v3_cfg_s_v01_ei, 1631 }, 1632 { 1633 .data_type = QMI_EOTI, 1634 .array_type = NO_ARRAY, 1635 .tlv_type = QMI_COMMON_TLV_TYPE, 1636 }, 1637 }; 1638 EXPORT_SYMBOL(wlfw_wlan_cfg_req_msg_v01_ei); 1639 1640 struct qmi_elem_info wlfw_wlan_cfg_resp_msg_v01_ei[] = { 1641 { 1642 .data_type = QMI_STRUCT, 1643 .elem_len = 1, 1644 .elem_size = sizeof(struct qmi_response_type_v01), 1645 .array_type = NO_ARRAY, 1646 .tlv_type = 0x02, 1647 .offset = offsetof(struct 1648 wlfw_wlan_cfg_resp_msg_v01, 1649 resp), 1650 .ei_array = qmi_response_type_v01_ei, 1651 }, 1652 { 1653 .data_type = QMI_EOTI, 1654 .array_type = NO_ARRAY, 1655 .tlv_type = QMI_COMMON_TLV_TYPE, 1656 }, 1657 }; 1658 EXPORT_SYMBOL(wlfw_wlan_cfg_resp_msg_v01_ei); 1659 1660 struct qmi_elem_info wlfw_cap_req_msg_v01_ei[] = { 1661 { 1662 .data_type = QMI_EOTI, 1663 .array_type = NO_ARRAY, 1664 .tlv_type = QMI_COMMON_TLV_TYPE, 1665 }, 1666 }; 1667 EXPORT_SYMBOL(wlfw_cap_req_msg_v01_ei); 1668 1669 struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[] = { 1670 { 1671 .data_type = QMI_STRUCT, 1672 .elem_len = 1, 1673 .elem_size = sizeof(struct qmi_response_type_v01), 1674 .array_type = NO_ARRAY, 1675 .tlv_type = 0x02, 1676 .offset = offsetof(struct 1677 wlfw_cap_resp_msg_v01, 1678 resp), 1679 .ei_array = qmi_response_type_v01_ei, 1680 }, 1681 { 1682 .data_type = QMI_OPT_FLAG, 1683 .elem_len = 1, 1684 .elem_size = sizeof(u8), 1685 .array_type = NO_ARRAY, 1686 .tlv_type = 0x10, 1687 .offset = offsetof(struct 1688 wlfw_cap_resp_msg_v01, 1689 chip_info_valid), 1690 }, 1691 { 1692 .data_type = QMI_STRUCT, 1693 .elem_len = 1, 1694 .elem_size = sizeof(struct wlfw_rf_chip_info_s_v01), 1695 .array_type = NO_ARRAY, 1696 .tlv_type = 0x10, 1697 .offset = offsetof(struct 1698 wlfw_cap_resp_msg_v01, 1699 chip_info), 1700 .ei_array = wlfw_rf_chip_info_s_v01_ei, 1701 }, 1702 { 1703 .data_type = QMI_OPT_FLAG, 1704 .elem_len = 1, 1705 .elem_size = sizeof(u8), 1706 .array_type = NO_ARRAY, 1707 .tlv_type = 0x11, 1708 .offset = offsetof(struct 1709 wlfw_cap_resp_msg_v01, 1710 board_info_valid), 1711 }, 1712 { 1713 .data_type = QMI_STRUCT, 1714 .elem_len = 1, 1715 .elem_size = sizeof(struct wlfw_rf_board_info_s_v01), 1716 .array_type = NO_ARRAY, 1717 .tlv_type = 0x11, 1718 .offset = offsetof(struct 1719 wlfw_cap_resp_msg_v01, 1720 board_info), 1721 .ei_array = wlfw_rf_board_info_s_v01_ei, 1722 }, 1723 { 1724 .data_type = QMI_OPT_FLAG, 1725 .elem_len = 1, 1726 .elem_size = sizeof(u8), 1727 .array_type = NO_ARRAY, 1728 .tlv_type = 0x12, 1729 .offset = offsetof(struct 1730 wlfw_cap_resp_msg_v01, 1731 soc_info_valid), 1732 }, 1733 { 1734 .data_type = QMI_STRUCT, 1735 .elem_len = 1, 1736 .elem_size = sizeof(struct wlfw_soc_info_s_v01), 1737 .array_type = NO_ARRAY, 1738 .tlv_type = 0x12, 1739 .offset = offsetof(struct 1740 wlfw_cap_resp_msg_v01, 1741 soc_info), 1742 .ei_array = wlfw_soc_info_s_v01_ei, 1743 }, 1744 { 1745 .data_type = QMI_OPT_FLAG, 1746 .elem_len = 1, 1747 .elem_size = sizeof(u8), 1748 .array_type = NO_ARRAY, 1749 .tlv_type = 0x13, 1750 .offset = offsetof(struct 1751 wlfw_cap_resp_msg_v01, 1752 fw_version_info_valid), 1753 }, 1754 { 1755 .data_type = QMI_STRUCT, 1756 .elem_len = 1, 1757 .elem_size = sizeof(struct wlfw_fw_version_info_s_v01), 1758 .array_type = NO_ARRAY, 1759 .tlv_type = 0x13, 1760 .offset = offsetof(struct 1761 wlfw_cap_resp_msg_v01, 1762 fw_version_info), 1763 .ei_array = wlfw_fw_version_info_s_v01_ei, 1764 }, 1765 { 1766 .data_type = QMI_OPT_FLAG, 1767 .elem_len = 1, 1768 .elem_size = sizeof(u8), 1769 .array_type = NO_ARRAY, 1770 .tlv_type = 0x14, 1771 .offset = offsetof(struct 1772 wlfw_cap_resp_msg_v01, 1773 fw_build_id_valid), 1774 }, 1775 { 1776 .data_type = QMI_STRING, 1777 .elem_len = QMI_WLFW_MAX_BUILD_ID_LEN_V01 + 1, 1778 .elem_size = sizeof(char), 1779 .array_type = NO_ARRAY, 1780 .tlv_type = 0x14, 1781 .offset = offsetof(struct 1782 wlfw_cap_resp_msg_v01, 1783 fw_build_id), 1784 }, 1785 { 1786 .data_type = QMI_OPT_FLAG, 1787 .elem_len = 1, 1788 .elem_size = sizeof(u8), 1789 .array_type = NO_ARRAY, 1790 .tlv_type = 0x15, 1791 .offset = offsetof(struct 1792 wlfw_cap_resp_msg_v01, 1793 num_macs_valid), 1794 }, 1795 { 1796 .data_type = QMI_UNSIGNED_1_BYTE, 1797 .elem_len = 1, 1798 .elem_size = sizeof(u8), 1799 .array_type = NO_ARRAY, 1800 .tlv_type = 0x15, 1801 .offset = offsetof(struct 1802 wlfw_cap_resp_msg_v01, 1803 num_macs), 1804 }, 1805 { 1806 .data_type = QMI_OPT_FLAG, 1807 .elem_len = 1, 1808 .elem_size = sizeof(u8), 1809 .array_type = NO_ARRAY, 1810 .tlv_type = 0x16, 1811 .offset = offsetof(struct 1812 wlfw_cap_resp_msg_v01, 1813 voltage_mv_valid), 1814 }, 1815 { 1816 .data_type = QMI_UNSIGNED_4_BYTE, 1817 .elem_len = 1, 1818 .elem_size = sizeof(u32), 1819 .array_type = NO_ARRAY, 1820 .tlv_type = 0x16, 1821 .offset = offsetof(struct 1822 wlfw_cap_resp_msg_v01, 1823 voltage_mv), 1824 }, 1825 { 1826 .data_type = QMI_OPT_FLAG, 1827 .elem_len = 1, 1828 .elem_size = sizeof(u8), 1829 .array_type = NO_ARRAY, 1830 .tlv_type = 0x17, 1831 .offset = offsetof(struct 1832 wlfw_cap_resp_msg_v01, 1833 time_freq_hz_valid), 1834 }, 1835 { 1836 .data_type = QMI_UNSIGNED_4_BYTE, 1837 .elem_len = 1, 1838 .elem_size = sizeof(u32), 1839 .array_type = NO_ARRAY, 1840 .tlv_type = 0x17, 1841 .offset = offsetof(struct 1842 wlfw_cap_resp_msg_v01, 1843 time_freq_hz), 1844 }, 1845 { 1846 .data_type = QMI_OPT_FLAG, 1847 .elem_len = 1, 1848 .elem_size = sizeof(u8), 1849 .array_type = NO_ARRAY, 1850 .tlv_type = 0x18, 1851 .offset = offsetof(struct 1852 wlfw_cap_resp_msg_v01, 1853 otp_version_valid), 1854 }, 1855 { 1856 .data_type = QMI_UNSIGNED_4_BYTE, 1857 .elem_len = 1, 1858 .elem_size = sizeof(u32), 1859 .array_type = NO_ARRAY, 1860 .tlv_type = 0x18, 1861 .offset = offsetof(struct 1862 wlfw_cap_resp_msg_v01, 1863 otp_version), 1864 }, 1865 { 1866 .data_type = QMI_OPT_FLAG, 1867 .elem_len = 1, 1868 .elem_size = sizeof(u8), 1869 .array_type = NO_ARRAY, 1870 .tlv_type = 0x19, 1871 .offset = offsetof(struct 1872 wlfw_cap_resp_msg_v01, 1873 eeprom_caldata_read_timeout_valid), 1874 }, 1875 { 1876 .data_type = QMI_UNSIGNED_4_BYTE, 1877 .elem_len = 1, 1878 .elem_size = sizeof(u32), 1879 .array_type = NO_ARRAY, 1880 .tlv_type = 0x19, 1881 .offset = offsetof(struct 1882 wlfw_cap_resp_msg_v01, 1883 eeprom_caldata_read_timeout), 1884 }, 1885 { 1886 .data_type = QMI_OPT_FLAG, 1887 .elem_len = 1, 1888 .elem_size = sizeof(u8), 1889 .array_type = NO_ARRAY, 1890 .tlv_type = 0x1A, 1891 .offset = offsetof(struct 1892 wlfw_cap_resp_msg_v01, 1893 fw_caps_valid), 1894 }, 1895 { 1896 .data_type = QMI_UNSIGNED_8_BYTE, 1897 .elem_len = 1, 1898 .elem_size = sizeof(u64), 1899 .array_type = NO_ARRAY, 1900 .tlv_type = 0x1A, 1901 .offset = offsetof(struct 1902 wlfw_cap_resp_msg_v01, 1903 fw_caps), 1904 }, 1905 { 1906 .data_type = QMI_OPT_FLAG, 1907 .elem_len = 1, 1908 .elem_size = sizeof(u8), 1909 .array_type = NO_ARRAY, 1910 .tlv_type = 0x1B, 1911 .offset = offsetof(struct 1912 wlfw_cap_resp_msg_v01, 1913 rd_card_chain_cap_valid), 1914 }, 1915 { 1916 .data_type = QMI_SIGNED_4_BYTE_ENUM, 1917 .elem_len = 1, 1918 .elem_size = sizeof(enum wlfw_rd_card_chain_cap_v01), 1919 .array_type = NO_ARRAY, 1920 .tlv_type = 0x1B, 1921 .offset = offsetof(struct 1922 wlfw_cap_resp_msg_v01, 1923 rd_card_chain_cap), 1924 }, 1925 { 1926 .data_type = QMI_OPT_FLAG, 1927 .elem_len = 1, 1928 .elem_size = sizeof(u8), 1929 .array_type = NO_ARRAY, 1930 .tlv_type = 0x1C, 1931 .offset = offsetof(struct 1932 wlfw_cap_resp_msg_v01, 1933 dev_mem_info_valid), 1934 }, 1935 { 1936 .data_type = QMI_STRUCT, 1937 .elem_len = QMI_WLFW_MAX_DEV_MEM_NUM_V01, 1938 .elem_size = sizeof(struct wlfw_dev_mem_info_s_v01), 1939 .array_type = STATIC_ARRAY, 1940 .tlv_type = 0x1C, 1941 .offset = offsetof(struct 1942 wlfw_cap_resp_msg_v01, 1943 dev_mem_info), 1944 .ei_array = wlfw_dev_mem_info_s_v01_ei, 1945 }, 1946 { 1947 .data_type = QMI_OPT_FLAG, 1948 .elem_len = 1, 1949 .elem_size = sizeof(u8), 1950 .array_type = NO_ARRAY, 1951 .tlv_type = 0x1D, 1952 .offset = offsetof(struct 1953 wlfw_cap_resp_msg_v01, 1954 foundry_name_valid), 1955 }, 1956 { 1957 .data_type = QMI_STRING, 1958 .elem_len = QMI_WLFW_MAX_STR_LEN_V01 + 1, 1959 .elem_size = sizeof(char), 1960 .array_type = NO_ARRAY, 1961 .tlv_type = 0x1D, 1962 .offset = offsetof(struct 1963 wlfw_cap_resp_msg_v01, 1964 foundry_name), 1965 }, 1966 { 1967 .data_type = QMI_OPT_FLAG, 1968 .elem_len = 1, 1969 .elem_size = sizeof(u8), 1970 .array_type = NO_ARRAY, 1971 .tlv_type = 0x1E, 1972 .offset = offsetof(struct 1973 wlfw_cap_resp_msg_v01, 1974 hang_data_addr_offset_valid), 1975 }, 1976 { 1977 .data_type = QMI_UNSIGNED_4_BYTE, 1978 .elem_len = 1, 1979 .elem_size = sizeof(u32), 1980 .array_type = NO_ARRAY, 1981 .tlv_type = 0x1E, 1982 .offset = offsetof(struct 1983 wlfw_cap_resp_msg_v01, 1984 hang_data_addr_offset), 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 = 0x1F, 1992 .offset = offsetof(struct 1993 wlfw_cap_resp_msg_v01, 1994 hang_data_length_valid), 1995 }, 1996 { 1997 .data_type = QMI_UNSIGNED_2_BYTE, 1998 .elem_len = 1, 1999 .elem_size = sizeof(u16), 2000 .array_type = NO_ARRAY, 2001 .tlv_type = 0x1F, 2002 .offset = offsetof(struct 2003 wlfw_cap_resp_msg_v01, 2004 hang_data_length), 2005 }, 2006 { 2007 .data_type = QMI_OPT_FLAG, 2008 .elem_len = 1, 2009 .elem_size = sizeof(u8), 2010 .array_type = NO_ARRAY, 2011 .tlv_type = 0x20, 2012 .offset = offsetof(struct 2013 wlfw_cap_resp_msg_v01, 2014 bdf_dnld_method_valid), 2015 }, 2016 { 2017 .data_type = QMI_SIGNED_4_BYTE_ENUM, 2018 .elem_len = 1, 2019 .elem_size = sizeof(enum wlfw_bdf_dnld_method_v01), 2020 .array_type = NO_ARRAY, 2021 .tlv_type = 0x20, 2022 .offset = offsetof(struct 2023 wlfw_cap_resp_msg_v01, 2024 bdf_dnld_method), 2025 }, 2026 { 2027 .data_type = QMI_OPT_FLAG, 2028 .elem_len = 1, 2029 .elem_size = sizeof(u8), 2030 .array_type = NO_ARRAY, 2031 .tlv_type = 0x21, 2032 .offset = offsetof(struct 2033 wlfw_cap_resp_msg_v01, 2034 hwid_bitmap_valid), 2035 }, 2036 { 2037 .data_type = QMI_UNSIGNED_1_BYTE, 2038 .elem_len = 1, 2039 .elem_size = sizeof(u8), 2040 .array_type = NO_ARRAY, 2041 .tlv_type = 0x21, 2042 .offset = offsetof(struct 2043 wlfw_cap_resp_msg_v01, 2044 hwid_bitmap), 2045 }, 2046 { 2047 .data_type = QMI_OPT_FLAG, 2048 .elem_len = 1, 2049 .elem_size = sizeof(u8), 2050 .array_type = NO_ARRAY, 2051 .tlv_type = 0x22, 2052 .offset = offsetof(struct 2053 wlfw_cap_resp_msg_v01, 2054 ol_cpr_cfg_valid), 2055 }, 2056 { 2057 .data_type = QMI_STRUCT, 2058 .elem_len = 1, 2059 .elem_size = sizeof(struct wlfw_pmu_cfg_v01), 2060 .array_type = NO_ARRAY, 2061 .tlv_type = 0x22, 2062 .offset = offsetof(struct 2063 wlfw_cap_resp_msg_v01, 2064 ol_cpr_cfg), 2065 .ei_array = wlfw_pmu_cfg_v01_ei, 2066 }, 2067 { 2068 .data_type = QMI_OPT_FLAG, 2069 .elem_len = 1, 2070 .elem_size = sizeof(u8), 2071 .array_type = NO_ARRAY, 2072 .tlv_type = 0x23, 2073 .offset = offsetof(struct 2074 wlfw_cap_resp_msg_v01, 2075 regdb_mandatory_valid), 2076 }, 2077 { 2078 .data_type = QMI_UNSIGNED_1_BYTE, 2079 .elem_len = 1, 2080 .elem_size = sizeof(u8), 2081 .array_type = NO_ARRAY, 2082 .tlv_type = 0x23, 2083 .offset = offsetof(struct 2084 wlfw_cap_resp_msg_v01, 2085 regdb_mandatory), 2086 }, 2087 { 2088 .data_type = QMI_OPT_FLAG, 2089 .elem_len = 1, 2090 .elem_size = sizeof(u8), 2091 .array_type = NO_ARRAY, 2092 .tlv_type = 0x24, 2093 .offset = offsetof(struct 2094 wlfw_cap_resp_msg_v01, 2095 regdb_support_valid), 2096 }, 2097 { 2098 .data_type = QMI_UNSIGNED_1_BYTE, 2099 .elem_len = 1, 2100 .elem_size = sizeof(u8), 2101 .array_type = NO_ARRAY, 2102 .tlv_type = 0x24, 2103 .offset = offsetof(struct 2104 wlfw_cap_resp_msg_v01, 2105 regdb_support), 2106 }, 2107 { 2108 .data_type = QMI_EOTI, 2109 .array_type = NO_ARRAY, 2110 .tlv_type = QMI_COMMON_TLV_TYPE, 2111 }, 2112 }; 2113 EXPORT_SYMBOL(wlfw_cap_resp_msg_v01_ei); 2114 2115 struct qmi_elem_info wlfw_bdf_download_req_msg_v01_ei[] = { 2116 { 2117 .data_type = QMI_UNSIGNED_1_BYTE, 2118 .elem_len = 1, 2119 .elem_size = sizeof(u8), 2120 .array_type = NO_ARRAY, 2121 .tlv_type = 0x01, 2122 .offset = offsetof(struct 2123 wlfw_bdf_download_req_msg_v01, 2124 valid), 2125 }, 2126 { 2127 .data_type = QMI_OPT_FLAG, 2128 .elem_len = 1, 2129 .elem_size = sizeof(u8), 2130 .array_type = NO_ARRAY, 2131 .tlv_type = 0x10, 2132 .offset = offsetof(struct 2133 wlfw_bdf_download_req_msg_v01, 2134 file_id_valid), 2135 }, 2136 { 2137 .data_type = QMI_SIGNED_4_BYTE_ENUM, 2138 .elem_len = 1, 2139 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01), 2140 .array_type = NO_ARRAY, 2141 .tlv_type = 0x10, 2142 .offset = offsetof(struct 2143 wlfw_bdf_download_req_msg_v01, 2144 file_id), 2145 }, 2146 { 2147 .data_type = QMI_OPT_FLAG, 2148 .elem_len = 1, 2149 .elem_size = sizeof(u8), 2150 .array_type = NO_ARRAY, 2151 .tlv_type = 0x11, 2152 .offset = offsetof(struct 2153 wlfw_bdf_download_req_msg_v01, 2154 total_size_valid), 2155 }, 2156 { 2157 .data_type = QMI_UNSIGNED_4_BYTE, 2158 .elem_len = 1, 2159 .elem_size = sizeof(u32), 2160 .array_type = NO_ARRAY, 2161 .tlv_type = 0x11, 2162 .offset = offsetof(struct 2163 wlfw_bdf_download_req_msg_v01, 2164 total_size), 2165 }, 2166 { 2167 .data_type = QMI_OPT_FLAG, 2168 .elem_len = 1, 2169 .elem_size = sizeof(u8), 2170 .array_type = NO_ARRAY, 2171 .tlv_type = 0x12, 2172 .offset = offsetof(struct 2173 wlfw_bdf_download_req_msg_v01, 2174 seg_id_valid), 2175 }, 2176 { 2177 .data_type = QMI_UNSIGNED_4_BYTE, 2178 .elem_len = 1, 2179 .elem_size = sizeof(u32), 2180 .array_type = NO_ARRAY, 2181 .tlv_type = 0x12, 2182 .offset = offsetof(struct 2183 wlfw_bdf_download_req_msg_v01, 2184 seg_id), 2185 }, 2186 { 2187 .data_type = QMI_OPT_FLAG, 2188 .elem_len = 1, 2189 .elem_size = sizeof(u8), 2190 .array_type = NO_ARRAY, 2191 .tlv_type = 0x13, 2192 .offset = offsetof(struct 2193 wlfw_bdf_download_req_msg_v01, 2194 data_valid), 2195 }, 2196 { 2197 .data_type = QMI_DATA_LEN, 2198 .elem_len = 1, 2199 .elem_size = sizeof(u16), 2200 .array_type = NO_ARRAY, 2201 .tlv_type = 0x13, 2202 .offset = offsetof(struct 2203 wlfw_bdf_download_req_msg_v01, 2204 data_len), 2205 }, 2206 { 2207 .data_type = QMI_UNSIGNED_1_BYTE, 2208 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01, 2209 .elem_size = sizeof(u8), 2210 .array_type = VAR_LEN_ARRAY, 2211 .tlv_type = 0x13, 2212 .offset = offsetof(struct 2213 wlfw_bdf_download_req_msg_v01, 2214 data), 2215 }, 2216 { 2217 .data_type = QMI_OPT_FLAG, 2218 .elem_len = 1, 2219 .elem_size = sizeof(u8), 2220 .array_type = NO_ARRAY, 2221 .tlv_type = 0x14, 2222 .offset = offsetof(struct 2223 wlfw_bdf_download_req_msg_v01, 2224 end_valid), 2225 }, 2226 { 2227 .data_type = QMI_UNSIGNED_1_BYTE, 2228 .elem_len = 1, 2229 .elem_size = sizeof(u8), 2230 .array_type = NO_ARRAY, 2231 .tlv_type = 0x14, 2232 .offset = offsetof(struct 2233 wlfw_bdf_download_req_msg_v01, 2234 end), 2235 }, 2236 { 2237 .data_type = QMI_OPT_FLAG, 2238 .elem_len = 1, 2239 .elem_size = sizeof(u8), 2240 .array_type = NO_ARRAY, 2241 .tlv_type = 0x15, 2242 .offset = offsetof(struct 2243 wlfw_bdf_download_req_msg_v01, 2244 bdf_type_valid), 2245 }, 2246 { 2247 .data_type = QMI_UNSIGNED_1_BYTE, 2248 .elem_len = 1, 2249 .elem_size = sizeof(u8), 2250 .array_type = NO_ARRAY, 2251 .tlv_type = 0x15, 2252 .offset = offsetof(struct 2253 wlfw_bdf_download_req_msg_v01, 2254 bdf_type), 2255 }, 2256 { 2257 .data_type = QMI_EOTI, 2258 .array_type = NO_ARRAY, 2259 .tlv_type = QMI_COMMON_TLV_TYPE, 2260 }, 2261 }; 2262 EXPORT_SYMBOL(wlfw_bdf_download_req_msg_v01_ei); 2263 2264 struct qmi_elem_info wlfw_bdf_download_resp_msg_v01_ei[] = { 2265 { 2266 .data_type = QMI_STRUCT, 2267 .elem_len = 1, 2268 .elem_size = sizeof(struct qmi_response_type_v01), 2269 .array_type = NO_ARRAY, 2270 .tlv_type = 0x02, 2271 .offset = offsetof(struct 2272 wlfw_bdf_download_resp_msg_v01, 2273 resp), 2274 .ei_array = qmi_response_type_v01_ei, 2275 }, 2276 { 2277 .data_type = QMI_OPT_FLAG, 2278 .elem_len = 1, 2279 .elem_size = sizeof(u8), 2280 .array_type = NO_ARRAY, 2281 .tlv_type = 0x10, 2282 .offset = offsetof(struct 2283 wlfw_bdf_download_resp_msg_v01, 2284 host_bdf_data_valid), 2285 }, 2286 { 2287 .data_type = QMI_UNSIGNED_8_BYTE, 2288 .elem_len = 1, 2289 .elem_size = sizeof(u64), 2290 .array_type = NO_ARRAY, 2291 .tlv_type = 0x10, 2292 .offset = offsetof(struct 2293 wlfw_bdf_download_resp_msg_v01, 2294 host_bdf_data), 2295 }, 2296 { 2297 .data_type = QMI_EOTI, 2298 .array_type = NO_ARRAY, 2299 .tlv_type = QMI_COMMON_TLV_TYPE, 2300 }, 2301 }; 2302 EXPORT_SYMBOL(wlfw_bdf_download_resp_msg_v01_ei); 2303 2304 struct qmi_elem_info wlfw_cal_report_req_msg_v01_ei[] = { 2305 { 2306 .data_type = QMI_DATA_LEN, 2307 .elem_len = 1, 2308 .elem_size = sizeof(u8), 2309 .array_type = NO_ARRAY, 2310 .tlv_type = 0x01, 2311 .offset = offsetof(struct 2312 wlfw_cal_report_req_msg_v01, 2313 meta_data_len), 2314 }, 2315 { 2316 .data_type = QMI_SIGNED_4_BYTE_ENUM, 2317 .elem_len = QMI_WLFW_MAX_NUM_CAL_V01, 2318 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01), 2319 .array_type = VAR_LEN_ARRAY, 2320 .tlv_type = 0x01, 2321 .offset = offsetof(struct 2322 wlfw_cal_report_req_msg_v01, 2323 meta_data), 2324 }, 2325 { 2326 .data_type = QMI_OPT_FLAG, 2327 .elem_len = 1, 2328 .elem_size = sizeof(u8), 2329 .array_type = NO_ARRAY, 2330 .tlv_type = 0x10, 2331 .offset = offsetof(struct 2332 wlfw_cal_report_req_msg_v01, 2333 xo_cal_data_valid), 2334 }, 2335 { 2336 .data_type = QMI_UNSIGNED_1_BYTE, 2337 .elem_len = 1, 2338 .elem_size = sizeof(u8), 2339 .array_type = NO_ARRAY, 2340 .tlv_type = 0x10, 2341 .offset = offsetof(struct 2342 wlfw_cal_report_req_msg_v01, 2343 xo_cal_data), 2344 }, 2345 { 2346 .data_type = QMI_OPT_FLAG, 2347 .elem_len = 1, 2348 .elem_size = sizeof(u8), 2349 .array_type = NO_ARRAY, 2350 .tlv_type = 0x11, 2351 .offset = offsetof(struct 2352 wlfw_cal_report_req_msg_v01, 2353 cal_remove_supported_valid), 2354 }, 2355 { 2356 .data_type = QMI_UNSIGNED_1_BYTE, 2357 .elem_len = 1, 2358 .elem_size = sizeof(u8), 2359 .array_type = NO_ARRAY, 2360 .tlv_type = 0x11, 2361 .offset = offsetof(struct 2362 wlfw_cal_report_req_msg_v01, 2363 cal_remove_supported), 2364 }, 2365 { 2366 .data_type = QMI_OPT_FLAG, 2367 .elem_len = 1, 2368 .elem_size = sizeof(u8), 2369 .array_type = NO_ARRAY, 2370 .tlv_type = 0x12, 2371 .offset = offsetof(struct 2372 wlfw_cal_report_req_msg_v01, 2373 cal_file_download_size_valid), 2374 }, 2375 { 2376 .data_type = QMI_UNSIGNED_8_BYTE, 2377 .elem_len = 1, 2378 .elem_size = sizeof(u64), 2379 .array_type = NO_ARRAY, 2380 .tlv_type = 0x12, 2381 .offset = offsetof(struct 2382 wlfw_cal_report_req_msg_v01, 2383 cal_file_download_size), 2384 }, 2385 { 2386 .data_type = QMI_EOTI, 2387 .array_type = NO_ARRAY, 2388 .tlv_type = QMI_COMMON_TLV_TYPE, 2389 }, 2390 }; 2391 EXPORT_SYMBOL(wlfw_cal_report_req_msg_v01_ei); 2392 2393 struct qmi_elem_info wlfw_cal_report_resp_msg_v01_ei[] = { 2394 { 2395 .data_type = QMI_STRUCT, 2396 .elem_len = 1, 2397 .elem_size = sizeof(struct qmi_response_type_v01), 2398 .array_type = NO_ARRAY, 2399 .tlv_type = 0x02, 2400 .offset = offsetof(struct 2401 wlfw_cal_report_resp_msg_v01, 2402 resp), 2403 .ei_array = qmi_response_type_v01_ei, 2404 }, 2405 { 2406 .data_type = QMI_EOTI, 2407 .array_type = NO_ARRAY, 2408 .tlv_type = QMI_COMMON_TLV_TYPE, 2409 }, 2410 }; 2411 EXPORT_SYMBOL(wlfw_cal_report_resp_msg_v01_ei); 2412 2413 struct qmi_elem_info wlfw_initiate_cal_download_ind_msg_v01_ei[] = { 2414 { 2415 .data_type = QMI_SIGNED_4_BYTE_ENUM, 2416 .elem_len = 1, 2417 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01), 2418 .array_type = NO_ARRAY, 2419 .tlv_type = 0x01, 2420 .offset = offsetof(struct 2421 wlfw_initiate_cal_download_ind_msg_v01, 2422 cal_id), 2423 }, 2424 { 2425 .data_type = QMI_OPT_FLAG, 2426 .elem_len = 1, 2427 .elem_size = sizeof(u8), 2428 .array_type = NO_ARRAY, 2429 .tlv_type = 0x10, 2430 .offset = offsetof(struct 2431 wlfw_initiate_cal_download_ind_msg_v01, 2432 total_size_valid), 2433 }, 2434 { 2435 .data_type = QMI_UNSIGNED_4_BYTE, 2436 .elem_len = 1, 2437 .elem_size = sizeof(u32), 2438 .array_type = NO_ARRAY, 2439 .tlv_type = 0x10, 2440 .offset = offsetof(struct 2441 wlfw_initiate_cal_download_ind_msg_v01, 2442 total_size), 2443 }, 2444 { 2445 .data_type = QMI_OPT_FLAG, 2446 .elem_len = 1, 2447 .elem_size = sizeof(u8), 2448 .array_type = NO_ARRAY, 2449 .tlv_type = 0x11, 2450 .offset = offsetof(struct 2451 wlfw_initiate_cal_download_ind_msg_v01, 2452 cal_data_location_valid), 2453 }, 2454 { 2455 .data_type = QMI_UNSIGNED_4_BYTE, 2456 .elem_len = 1, 2457 .elem_size = sizeof(u32), 2458 .array_type = NO_ARRAY, 2459 .tlv_type = 0x11, 2460 .offset = offsetof(struct 2461 wlfw_initiate_cal_download_ind_msg_v01, 2462 cal_data_location), 2463 }, 2464 { 2465 .data_type = QMI_EOTI, 2466 .array_type = NO_ARRAY, 2467 .tlv_type = QMI_COMMON_TLV_TYPE, 2468 }, 2469 }; 2470 EXPORT_SYMBOL(wlfw_initiate_cal_download_ind_msg_v01_ei); 2471 2472 struct qmi_elem_info wlfw_cal_download_req_msg_v01_ei[] = { 2473 { 2474 .data_type = QMI_UNSIGNED_1_BYTE, 2475 .elem_len = 1, 2476 .elem_size = sizeof(u8), 2477 .array_type = NO_ARRAY, 2478 .tlv_type = 0x01, 2479 .offset = offsetof(struct 2480 wlfw_cal_download_req_msg_v01, 2481 valid), 2482 }, 2483 { 2484 .data_type = QMI_OPT_FLAG, 2485 .elem_len = 1, 2486 .elem_size = sizeof(u8), 2487 .array_type = NO_ARRAY, 2488 .tlv_type = 0x10, 2489 .offset = offsetof(struct 2490 wlfw_cal_download_req_msg_v01, 2491 file_id_valid), 2492 }, 2493 { 2494 .data_type = QMI_SIGNED_4_BYTE_ENUM, 2495 .elem_len = 1, 2496 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01), 2497 .array_type = NO_ARRAY, 2498 .tlv_type = 0x10, 2499 .offset = offsetof(struct 2500 wlfw_cal_download_req_msg_v01, 2501 file_id), 2502 }, 2503 { 2504 .data_type = QMI_OPT_FLAG, 2505 .elem_len = 1, 2506 .elem_size = sizeof(u8), 2507 .array_type = NO_ARRAY, 2508 .tlv_type = 0x11, 2509 .offset = offsetof(struct 2510 wlfw_cal_download_req_msg_v01, 2511 total_size_valid), 2512 }, 2513 { 2514 .data_type = QMI_UNSIGNED_4_BYTE, 2515 .elem_len = 1, 2516 .elem_size = sizeof(u32), 2517 .array_type = NO_ARRAY, 2518 .tlv_type = 0x11, 2519 .offset = offsetof(struct 2520 wlfw_cal_download_req_msg_v01, 2521 total_size), 2522 }, 2523 { 2524 .data_type = QMI_OPT_FLAG, 2525 .elem_len = 1, 2526 .elem_size = sizeof(u8), 2527 .array_type = NO_ARRAY, 2528 .tlv_type = 0x12, 2529 .offset = offsetof(struct 2530 wlfw_cal_download_req_msg_v01, 2531 seg_id_valid), 2532 }, 2533 { 2534 .data_type = QMI_UNSIGNED_4_BYTE, 2535 .elem_len = 1, 2536 .elem_size = sizeof(u32), 2537 .array_type = NO_ARRAY, 2538 .tlv_type = 0x12, 2539 .offset = offsetof(struct 2540 wlfw_cal_download_req_msg_v01, 2541 seg_id), 2542 }, 2543 { 2544 .data_type = QMI_OPT_FLAG, 2545 .elem_len = 1, 2546 .elem_size = sizeof(u8), 2547 .array_type = NO_ARRAY, 2548 .tlv_type = 0x13, 2549 .offset = offsetof(struct 2550 wlfw_cal_download_req_msg_v01, 2551 data_valid), 2552 }, 2553 { 2554 .data_type = QMI_DATA_LEN, 2555 .elem_len = 1, 2556 .elem_size = sizeof(u16), 2557 .array_type = NO_ARRAY, 2558 .tlv_type = 0x13, 2559 .offset = offsetof(struct 2560 wlfw_cal_download_req_msg_v01, 2561 data_len), 2562 }, 2563 { 2564 .data_type = QMI_UNSIGNED_1_BYTE, 2565 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01, 2566 .elem_size = sizeof(u8), 2567 .array_type = VAR_LEN_ARRAY, 2568 .tlv_type = 0x13, 2569 .offset = offsetof(struct 2570 wlfw_cal_download_req_msg_v01, 2571 data), 2572 }, 2573 { 2574 .data_type = QMI_OPT_FLAG, 2575 .elem_len = 1, 2576 .elem_size = sizeof(u8), 2577 .array_type = NO_ARRAY, 2578 .tlv_type = 0x14, 2579 .offset = offsetof(struct 2580 wlfw_cal_download_req_msg_v01, 2581 end_valid), 2582 }, 2583 { 2584 .data_type = QMI_UNSIGNED_1_BYTE, 2585 .elem_len = 1, 2586 .elem_size = sizeof(u8), 2587 .array_type = NO_ARRAY, 2588 .tlv_type = 0x14, 2589 .offset = offsetof(struct 2590 wlfw_cal_download_req_msg_v01, 2591 end), 2592 }, 2593 { 2594 .data_type = QMI_OPT_FLAG, 2595 .elem_len = 1, 2596 .elem_size = sizeof(u8), 2597 .array_type = NO_ARRAY, 2598 .tlv_type = 0x15, 2599 .offset = offsetof(struct 2600 wlfw_cal_download_req_msg_v01, 2601 cal_data_location_valid), 2602 }, 2603 { 2604 .data_type = QMI_UNSIGNED_4_BYTE, 2605 .elem_len = 1, 2606 .elem_size = sizeof(u32), 2607 .array_type = NO_ARRAY, 2608 .tlv_type = 0x15, 2609 .offset = offsetof(struct 2610 wlfw_cal_download_req_msg_v01, 2611 cal_data_location), 2612 }, 2613 { 2614 .data_type = QMI_EOTI, 2615 .array_type = NO_ARRAY, 2616 .tlv_type = QMI_COMMON_TLV_TYPE, 2617 }, 2618 }; 2619 EXPORT_SYMBOL(wlfw_cal_download_req_msg_v01_ei); 2620 2621 struct qmi_elem_info wlfw_cal_download_resp_msg_v01_ei[] = { 2622 { 2623 .data_type = QMI_STRUCT, 2624 .elem_len = 1, 2625 .elem_size = sizeof(struct qmi_response_type_v01), 2626 .array_type = NO_ARRAY, 2627 .tlv_type = 0x02, 2628 .offset = offsetof(struct 2629 wlfw_cal_download_resp_msg_v01, 2630 resp), 2631 .ei_array = qmi_response_type_v01_ei, 2632 }, 2633 { 2634 .data_type = QMI_EOTI, 2635 .array_type = NO_ARRAY, 2636 .tlv_type = QMI_COMMON_TLV_TYPE, 2637 }, 2638 }; 2639 EXPORT_SYMBOL(wlfw_cal_download_resp_msg_v01_ei); 2640 2641 struct qmi_elem_info wlfw_initiate_cal_update_ind_msg_v01_ei[] = { 2642 { 2643 .data_type = QMI_SIGNED_4_BYTE_ENUM, 2644 .elem_len = 1, 2645 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01), 2646 .array_type = NO_ARRAY, 2647 .tlv_type = 0x01, 2648 .offset = offsetof(struct 2649 wlfw_initiate_cal_update_ind_msg_v01, 2650 cal_id), 2651 }, 2652 { 2653 .data_type = QMI_UNSIGNED_4_BYTE, 2654 .elem_len = 1, 2655 .elem_size = sizeof(u32), 2656 .array_type = NO_ARRAY, 2657 .tlv_type = 0x02, 2658 .offset = offsetof(struct 2659 wlfw_initiate_cal_update_ind_msg_v01, 2660 total_size), 2661 }, 2662 { 2663 .data_type = QMI_OPT_FLAG, 2664 .elem_len = 1, 2665 .elem_size = sizeof(u8), 2666 .array_type = NO_ARRAY, 2667 .tlv_type = 0x10, 2668 .offset = offsetof(struct 2669 wlfw_initiate_cal_update_ind_msg_v01, 2670 cal_data_location_valid), 2671 }, 2672 { 2673 .data_type = QMI_UNSIGNED_4_BYTE, 2674 .elem_len = 1, 2675 .elem_size = sizeof(u32), 2676 .array_type = NO_ARRAY, 2677 .tlv_type = 0x10, 2678 .offset = offsetof(struct 2679 wlfw_initiate_cal_update_ind_msg_v01, 2680 cal_data_location), 2681 }, 2682 { 2683 .data_type = QMI_EOTI, 2684 .array_type = NO_ARRAY, 2685 .tlv_type = QMI_COMMON_TLV_TYPE, 2686 }, 2687 }; 2688 EXPORT_SYMBOL(wlfw_initiate_cal_update_ind_msg_v01_ei); 2689 2690 struct qmi_elem_info wlfw_cal_update_req_msg_v01_ei[] = { 2691 { 2692 .data_type = QMI_SIGNED_4_BYTE_ENUM, 2693 .elem_len = 1, 2694 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01), 2695 .array_type = NO_ARRAY, 2696 .tlv_type = 0x01, 2697 .offset = offsetof(struct 2698 wlfw_cal_update_req_msg_v01, 2699 cal_id), 2700 }, 2701 { 2702 .data_type = QMI_UNSIGNED_4_BYTE, 2703 .elem_len = 1, 2704 .elem_size = sizeof(u32), 2705 .array_type = NO_ARRAY, 2706 .tlv_type = 0x02, 2707 .offset = offsetof(struct 2708 wlfw_cal_update_req_msg_v01, 2709 seg_id), 2710 }, 2711 { 2712 .data_type = QMI_EOTI, 2713 .array_type = NO_ARRAY, 2714 .tlv_type = QMI_COMMON_TLV_TYPE, 2715 }, 2716 }; 2717 EXPORT_SYMBOL(wlfw_cal_update_req_msg_v01_ei); 2718 2719 struct qmi_elem_info wlfw_cal_update_resp_msg_v01_ei[] = { 2720 { 2721 .data_type = QMI_STRUCT, 2722 .elem_len = 1, 2723 .elem_size = sizeof(struct qmi_response_type_v01), 2724 .array_type = NO_ARRAY, 2725 .tlv_type = 0x02, 2726 .offset = offsetof(struct 2727 wlfw_cal_update_resp_msg_v01, 2728 resp), 2729 .ei_array = qmi_response_type_v01_ei, 2730 }, 2731 { 2732 .data_type = QMI_OPT_FLAG, 2733 .elem_len = 1, 2734 .elem_size = sizeof(u8), 2735 .array_type = NO_ARRAY, 2736 .tlv_type = 0x10, 2737 .offset = offsetof(struct 2738 wlfw_cal_update_resp_msg_v01, 2739 file_id_valid), 2740 }, 2741 { 2742 .data_type = QMI_SIGNED_4_BYTE_ENUM, 2743 .elem_len = 1, 2744 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01), 2745 .array_type = NO_ARRAY, 2746 .tlv_type = 0x10, 2747 .offset = offsetof(struct 2748 wlfw_cal_update_resp_msg_v01, 2749 file_id), 2750 }, 2751 { 2752 .data_type = QMI_OPT_FLAG, 2753 .elem_len = 1, 2754 .elem_size = sizeof(u8), 2755 .array_type = NO_ARRAY, 2756 .tlv_type = 0x11, 2757 .offset = offsetof(struct 2758 wlfw_cal_update_resp_msg_v01, 2759 total_size_valid), 2760 }, 2761 { 2762 .data_type = QMI_UNSIGNED_4_BYTE, 2763 .elem_len = 1, 2764 .elem_size = sizeof(u32), 2765 .array_type = NO_ARRAY, 2766 .tlv_type = 0x11, 2767 .offset = offsetof(struct 2768 wlfw_cal_update_resp_msg_v01, 2769 total_size), 2770 }, 2771 { 2772 .data_type = QMI_OPT_FLAG, 2773 .elem_len = 1, 2774 .elem_size = sizeof(u8), 2775 .array_type = NO_ARRAY, 2776 .tlv_type = 0x12, 2777 .offset = offsetof(struct 2778 wlfw_cal_update_resp_msg_v01, 2779 seg_id_valid), 2780 }, 2781 { 2782 .data_type = QMI_UNSIGNED_4_BYTE, 2783 .elem_len = 1, 2784 .elem_size = sizeof(u32), 2785 .array_type = NO_ARRAY, 2786 .tlv_type = 0x12, 2787 .offset = offsetof(struct 2788 wlfw_cal_update_resp_msg_v01, 2789 seg_id), 2790 }, 2791 { 2792 .data_type = QMI_OPT_FLAG, 2793 .elem_len = 1, 2794 .elem_size = sizeof(u8), 2795 .array_type = NO_ARRAY, 2796 .tlv_type = 0x13, 2797 .offset = offsetof(struct 2798 wlfw_cal_update_resp_msg_v01, 2799 data_valid), 2800 }, 2801 { 2802 .data_type = QMI_DATA_LEN, 2803 .elem_len = 1, 2804 .elem_size = sizeof(u16), 2805 .array_type = NO_ARRAY, 2806 .tlv_type = 0x13, 2807 .offset = offsetof(struct 2808 wlfw_cal_update_resp_msg_v01, 2809 data_len), 2810 }, 2811 { 2812 .data_type = QMI_UNSIGNED_1_BYTE, 2813 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01, 2814 .elem_size = sizeof(u8), 2815 .array_type = VAR_LEN_ARRAY, 2816 .tlv_type = 0x13, 2817 .offset = offsetof(struct 2818 wlfw_cal_update_resp_msg_v01, 2819 data), 2820 }, 2821 { 2822 .data_type = QMI_OPT_FLAG, 2823 .elem_len = 1, 2824 .elem_size = sizeof(u8), 2825 .array_type = NO_ARRAY, 2826 .tlv_type = 0x14, 2827 .offset = offsetof(struct 2828 wlfw_cal_update_resp_msg_v01, 2829 end_valid), 2830 }, 2831 { 2832 .data_type = QMI_UNSIGNED_1_BYTE, 2833 .elem_len = 1, 2834 .elem_size = sizeof(u8), 2835 .array_type = NO_ARRAY, 2836 .tlv_type = 0x14, 2837 .offset = offsetof(struct 2838 wlfw_cal_update_resp_msg_v01, 2839 end), 2840 }, 2841 { 2842 .data_type = QMI_OPT_FLAG, 2843 .elem_len = 1, 2844 .elem_size = sizeof(u8), 2845 .array_type = NO_ARRAY, 2846 .tlv_type = 0x15, 2847 .offset = offsetof(struct 2848 wlfw_cal_update_resp_msg_v01, 2849 cal_data_location_valid), 2850 }, 2851 { 2852 .data_type = QMI_UNSIGNED_4_BYTE, 2853 .elem_len = 1, 2854 .elem_size = sizeof(u32), 2855 .array_type = NO_ARRAY, 2856 .tlv_type = 0x15, 2857 .offset = offsetof(struct 2858 wlfw_cal_update_resp_msg_v01, 2859 cal_data_location), 2860 }, 2861 { 2862 .data_type = QMI_EOTI, 2863 .array_type = NO_ARRAY, 2864 .tlv_type = QMI_COMMON_TLV_TYPE, 2865 }, 2866 }; 2867 EXPORT_SYMBOL(wlfw_cal_update_resp_msg_v01_ei); 2868 2869 struct qmi_elem_info wlfw_msa_info_req_msg_v01_ei[] = { 2870 { 2871 .data_type = QMI_UNSIGNED_8_BYTE, 2872 .elem_len = 1, 2873 .elem_size = sizeof(u64), 2874 .array_type = NO_ARRAY, 2875 .tlv_type = 0x01, 2876 .offset = offsetof(struct 2877 wlfw_msa_info_req_msg_v01, 2878 msa_addr), 2879 }, 2880 { 2881 .data_type = QMI_UNSIGNED_4_BYTE, 2882 .elem_len = 1, 2883 .elem_size = sizeof(u32), 2884 .array_type = NO_ARRAY, 2885 .tlv_type = 0x02, 2886 .offset = offsetof(struct 2887 wlfw_msa_info_req_msg_v01, 2888 size), 2889 }, 2890 { 2891 .data_type = QMI_EOTI, 2892 .array_type = NO_ARRAY, 2893 .tlv_type = QMI_COMMON_TLV_TYPE, 2894 }, 2895 }; 2896 EXPORT_SYMBOL(wlfw_msa_info_req_msg_v01_ei); 2897 2898 struct qmi_elem_info wlfw_msa_info_resp_msg_v01_ei[] = { 2899 { 2900 .data_type = QMI_STRUCT, 2901 .elem_len = 1, 2902 .elem_size = sizeof(struct qmi_response_type_v01), 2903 .array_type = NO_ARRAY, 2904 .tlv_type = 0x02, 2905 .offset = offsetof(struct 2906 wlfw_msa_info_resp_msg_v01, 2907 resp), 2908 .ei_array = qmi_response_type_v01_ei, 2909 }, 2910 { 2911 .data_type = QMI_DATA_LEN, 2912 .elem_len = 1, 2913 .elem_size = sizeof(u8), 2914 .array_type = NO_ARRAY, 2915 .tlv_type = 0x03, 2916 .offset = offsetof(struct 2917 wlfw_msa_info_resp_msg_v01, 2918 mem_region_info_len), 2919 }, 2920 { 2921 .data_type = QMI_STRUCT, 2922 .elem_len = QMI_WLFW_MAX_NUM_MEMORY_REGIONS_V01, 2923 .elem_size = sizeof(struct wlfw_memory_region_info_s_v01), 2924 .array_type = VAR_LEN_ARRAY, 2925 .tlv_type = 0x03, 2926 .offset = offsetof(struct 2927 wlfw_msa_info_resp_msg_v01, 2928 mem_region_info), 2929 .ei_array = wlfw_memory_region_info_s_v01_ei, 2930 }, 2931 { 2932 .data_type = QMI_EOTI, 2933 .array_type = NO_ARRAY, 2934 .tlv_type = QMI_COMMON_TLV_TYPE, 2935 }, 2936 }; 2937 EXPORT_SYMBOL(wlfw_msa_info_resp_msg_v01_ei); 2938 2939 struct qmi_elem_info wlfw_msa_ready_req_msg_v01_ei[] = { 2940 { 2941 .data_type = QMI_EOTI, 2942 .array_type = NO_ARRAY, 2943 .tlv_type = QMI_COMMON_TLV_TYPE, 2944 }, 2945 }; 2946 EXPORT_SYMBOL(wlfw_msa_ready_req_msg_v01_ei); 2947 2948 struct qmi_elem_info wlfw_msa_ready_resp_msg_v01_ei[] = { 2949 { 2950 .data_type = QMI_STRUCT, 2951 .elem_len = 1, 2952 .elem_size = sizeof(struct qmi_response_type_v01), 2953 .array_type = NO_ARRAY, 2954 .tlv_type = 0x02, 2955 .offset = offsetof(struct 2956 wlfw_msa_ready_resp_msg_v01, 2957 resp), 2958 .ei_array = qmi_response_type_v01_ei, 2959 }, 2960 { 2961 .data_type = QMI_EOTI, 2962 .array_type = NO_ARRAY, 2963 .tlv_type = QMI_COMMON_TLV_TYPE, 2964 }, 2965 }; 2966 EXPORT_SYMBOL(wlfw_msa_ready_resp_msg_v01_ei); 2967 2968 struct qmi_elem_info wlfw_ini_req_msg_v01_ei[] = { 2969 { 2970 .data_type = QMI_OPT_FLAG, 2971 .elem_len = 1, 2972 .elem_size = sizeof(u8), 2973 .array_type = NO_ARRAY, 2974 .tlv_type = 0x10, 2975 .offset = offsetof(struct 2976 wlfw_ini_req_msg_v01, 2977 enablefwlog_valid), 2978 }, 2979 { 2980 .data_type = QMI_UNSIGNED_1_BYTE, 2981 .elem_len = 1, 2982 .elem_size = sizeof(u8), 2983 .array_type = NO_ARRAY, 2984 .tlv_type = 0x10, 2985 .offset = offsetof(struct 2986 wlfw_ini_req_msg_v01, 2987 enablefwlog), 2988 }, 2989 { 2990 .data_type = QMI_EOTI, 2991 .array_type = NO_ARRAY, 2992 .tlv_type = QMI_COMMON_TLV_TYPE, 2993 }, 2994 }; 2995 EXPORT_SYMBOL(wlfw_ini_req_msg_v01_ei); 2996 2997 struct qmi_elem_info wlfw_ini_resp_msg_v01_ei[] = { 2998 { 2999 .data_type = QMI_STRUCT, 3000 .elem_len = 1, 3001 .elem_size = sizeof(struct qmi_response_type_v01), 3002 .array_type = NO_ARRAY, 3003 .tlv_type = 0x02, 3004 .offset = offsetof(struct 3005 wlfw_ini_resp_msg_v01, 3006 resp), 3007 .ei_array = qmi_response_type_v01_ei, 3008 }, 3009 { 3010 .data_type = QMI_EOTI, 3011 .array_type = NO_ARRAY, 3012 .tlv_type = QMI_COMMON_TLV_TYPE, 3013 }, 3014 }; 3015 EXPORT_SYMBOL(wlfw_ini_resp_msg_v01_ei); 3016 3017 struct qmi_elem_info wlfw_athdiag_read_req_msg_v01_ei[] = { 3018 { 3019 .data_type = QMI_UNSIGNED_4_BYTE, 3020 .elem_len = 1, 3021 .elem_size = sizeof(u32), 3022 .array_type = NO_ARRAY, 3023 .tlv_type = 0x01, 3024 .offset = offsetof(struct 3025 wlfw_athdiag_read_req_msg_v01, 3026 offset), 3027 }, 3028 { 3029 .data_type = QMI_UNSIGNED_4_BYTE, 3030 .elem_len = 1, 3031 .elem_size = sizeof(u32), 3032 .array_type = NO_ARRAY, 3033 .tlv_type = 0x02, 3034 .offset = offsetof(struct 3035 wlfw_athdiag_read_req_msg_v01, 3036 mem_type), 3037 }, 3038 { 3039 .data_type = QMI_UNSIGNED_4_BYTE, 3040 .elem_len = 1, 3041 .elem_size = sizeof(u32), 3042 .array_type = NO_ARRAY, 3043 .tlv_type = 0x03, 3044 .offset = offsetof(struct 3045 wlfw_athdiag_read_req_msg_v01, 3046 data_len), 3047 }, 3048 { 3049 .data_type = QMI_EOTI, 3050 .array_type = NO_ARRAY, 3051 .tlv_type = QMI_COMMON_TLV_TYPE, 3052 }, 3053 }; 3054 EXPORT_SYMBOL(wlfw_athdiag_read_req_msg_v01_ei); 3055 3056 struct qmi_elem_info wlfw_athdiag_read_resp_msg_v01_ei[] = { 3057 { 3058 .data_type = QMI_STRUCT, 3059 .elem_len = 1, 3060 .elem_size = sizeof(struct qmi_response_type_v01), 3061 .array_type = NO_ARRAY, 3062 .tlv_type = 0x02, 3063 .offset = offsetof(struct 3064 wlfw_athdiag_read_resp_msg_v01, 3065 resp), 3066 .ei_array = qmi_response_type_v01_ei, 3067 }, 3068 { 3069 .data_type = QMI_OPT_FLAG, 3070 .elem_len = 1, 3071 .elem_size = sizeof(u8), 3072 .array_type = NO_ARRAY, 3073 .tlv_type = 0x10, 3074 .offset = offsetof(struct 3075 wlfw_athdiag_read_resp_msg_v01, 3076 data_valid), 3077 }, 3078 { 3079 .data_type = QMI_DATA_LEN, 3080 .elem_len = 1, 3081 .elem_size = sizeof(u16), 3082 .array_type = NO_ARRAY, 3083 .tlv_type = 0x10, 3084 .offset = offsetof(struct 3085 wlfw_athdiag_read_resp_msg_v01, 3086 data_len), 3087 }, 3088 { 3089 .data_type = QMI_UNSIGNED_1_BYTE, 3090 .elem_len = QMI_WLFW_MAX_ATHDIAG_DATA_SIZE_V01, 3091 .elem_size = sizeof(u8), 3092 .array_type = VAR_LEN_ARRAY, 3093 .tlv_type = 0x10, 3094 .offset = offsetof(struct 3095 wlfw_athdiag_read_resp_msg_v01, 3096 data), 3097 }, 3098 { 3099 .data_type = QMI_EOTI, 3100 .array_type = NO_ARRAY, 3101 .tlv_type = QMI_COMMON_TLV_TYPE, 3102 }, 3103 }; 3104 EXPORT_SYMBOL(wlfw_athdiag_read_resp_msg_v01_ei); 3105 3106 struct qmi_elem_info wlfw_athdiag_write_req_msg_v01_ei[] = { 3107 { 3108 .data_type = QMI_UNSIGNED_4_BYTE, 3109 .elem_len = 1, 3110 .elem_size = sizeof(u32), 3111 .array_type = NO_ARRAY, 3112 .tlv_type = 0x01, 3113 .offset = offsetof(struct 3114 wlfw_athdiag_write_req_msg_v01, 3115 offset), 3116 }, 3117 { 3118 .data_type = QMI_UNSIGNED_4_BYTE, 3119 .elem_len = 1, 3120 .elem_size = sizeof(u32), 3121 .array_type = NO_ARRAY, 3122 .tlv_type = 0x02, 3123 .offset = offsetof(struct 3124 wlfw_athdiag_write_req_msg_v01, 3125 mem_type), 3126 }, 3127 { 3128 .data_type = QMI_DATA_LEN, 3129 .elem_len = 1, 3130 .elem_size = sizeof(u16), 3131 .array_type = NO_ARRAY, 3132 .tlv_type = 0x03, 3133 .offset = offsetof(struct 3134 wlfw_athdiag_write_req_msg_v01, 3135 data_len), 3136 }, 3137 { 3138 .data_type = QMI_UNSIGNED_1_BYTE, 3139 .elem_len = QMI_WLFW_MAX_ATHDIAG_DATA_SIZE_V01, 3140 .elem_size = sizeof(u8), 3141 .array_type = VAR_LEN_ARRAY, 3142 .tlv_type = 0x03, 3143 .offset = offsetof(struct 3144 wlfw_athdiag_write_req_msg_v01, 3145 data), 3146 }, 3147 { 3148 .data_type = QMI_EOTI, 3149 .array_type = NO_ARRAY, 3150 .tlv_type = QMI_COMMON_TLV_TYPE, 3151 }, 3152 }; 3153 EXPORT_SYMBOL(wlfw_athdiag_write_req_msg_v01_ei); 3154 3155 struct qmi_elem_info wlfw_athdiag_write_resp_msg_v01_ei[] = { 3156 { 3157 .data_type = QMI_STRUCT, 3158 .elem_len = 1, 3159 .elem_size = sizeof(struct qmi_response_type_v01), 3160 .array_type = NO_ARRAY, 3161 .tlv_type = 0x02, 3162 .offset = offsetof(struct 3163 wlfw_athdiag_write_resp_msg_v01, 3164 resp), 3165 .ei_array = qmi_response_type_v01_ei, 3166 }, 3167 { 3168 .data_type = QMI_EOTI, 3169 .array_type = NO_ARRAY, 3170 .tlv_type = QMI_COMMON_TLV_TYPE, 3171 }, 3172 }; 3173 EXPORT_SYMBOL(wlfw_athdiag_write_resp_msg_v01_ei); 3174 3175 struct qmi_elem_info wlfw_vbatt_req_msg_v01_ei[] = { 3176 { 3177 .data_type = QMI_UNSIGNED_8_BYTE, 3178 .elem_len = 1, 3179 .elem_size = sizeof(u64), 3180 .array_type = NO_ARRAY, 3181 .tlv_type = 0x01, 3182 .offset = offsetof(struct 3183 wlfw_vbatt_req_msg_v01, 3184 voltage_uv), 3185 }, 3186 { 3187 .data_type = QMI_EOTI, 3188 .array_type = NO_ARRAY, 3189 .tlv_type = QMI_COMMON_TLV_TYPE, 3190 }, 3191 }; 3192 EXPORT_SYMBOL(wlfw_vbatt_req_msg_v01_ei); 3193 3194 struct qmi_elem_info wlfw_vbatt_resp_msg_v01_ei[] = { 3195 { 3196 .data_type = QMI_STRUCT, 3197 .elem_len = 1, 3198 .elem_size = sizeof(struct qmi_response_type_v01), 3199 .array_type = NO_ARRAY, 3200 .tlv_type = 0x02, 3201 .offset = offsetof(struct 3202 wlfw_vbatt_resp_msg_v01, 3203 resp), 3204 .ei_array = qmi_response_type_v01_ei, 3205 }, 3206 { 3207 .data_type = QMI_EOTI, 3208 .array_type = NO_ARRAY, 3209 .tlv_type = QMI_COMMON_TLV_TYPE, 3210 }, 3211 }; 3212 EXPORT_SYMBOL(wlfw_vbatt_resp_msg_v01_ei); 3213 3214 struct qmi_elem_info wlfw_mac_addr_req_msg_v01_ei[] = { 3215 { 3216 .data_type = QMI_OPT_FLAG, 3217 .elem_len = 1, 3218 .elem_size = sizeof(u8), 3219 .array_type = NO_ARRAY, 3220 .tlv_type = 0x10, 3221 .offset = offsetof(struct 3222 wlfw_mac_addr_req_msg_v01, 3223 mac_addr_valid), 3224 }, 3225 { 3226 .data_type = QMI_UNSIGNED_1_BYTE, 3227 .elem_len = QMI_WLFW_MAC_ADDR_SIZE_V01, 3228 .elem_size = sizeof(u8), 3229 .array_type = STATIC_ARRAY, 3230 .tlv_type = 0x10, 3231 .offset = offsetof(struct 3232 wlfw_mac_addr_req_msg_v01, 3233 mac_addr), 3234 }, 3235 { 3236 .data_type = QMI_EOTI, 3237 .array_type = NO_ARRAY, 3238 .tlv_type = QMI_COMMON_TLV_TYPE, 3239 }, 3240 }; 3241 EXPORT_SYMBOL(wlfw_mac_addr_req_msg_v01_ei); 3242 3243 struct qmi_elem_info wlfw_mac_addr_resp_msg_v01_ei[] = { 3244 { 3245 .data_type = QMI_STRUCT, 3246 .elem_len = 1, 3247 .elem_size = sizeof(struct qmi_response_type_v01), 3248 .array_type = NO_ARRAY, 3249 .tlv_type = 0x02, 3250 .offset = offsetof(struct 3251 wlfw_mac_addr_resp_msg_v01, 3252 resp), 3253 .ei_array = qmi_response_type_v01_ei, 3254 }, 3255 { 3256 .data_type = QMI_EOTI, 3257 .array_type = NO_ARRAY, 3258 .tlv_type = QMI_COMMON_TLV_TYPE, 3259 }, 3260 }; 3261 EXPORT_SYMBOL(wlfw_mac_addr_resp_msg_v01_ei); 3262 3263 struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[] = { 3264 { 3265 .data_type = QMI_OPT_FLAG, 3266 .elem_len = 1, 3267 .elem_size = sizeof(u8), 3268 .array_type = NO_ARRAY, 3269 .tlv_type = 0x10, 3270 .offset = offsetof(struct 3271 wlfw_host_cap_req_msg_v01, 3272 num_clients_valid), 3273 }, 3274 { 3275 .data_type = QMI_UNSIGNED_4_BYTE, 3276 .elem_len = 1, 3277 .elem_size = sizeof(u32), 3278 .array_type = NO_ARRAY, 3279 .tlv_type = 0x10, 3280 .offset = offsetof(struct 3281 wlfw_host_cap_req_msg_v01, 3282 num_clients), 3283 }, 3284 { 3285 .data_type = QMI_OPT_FLAG, 3286 .elem_len = 1, 3287 .elem_size = sizeof(u8), 3288 .array_type = NO_ARRAY, 3289 .tlv_type = 0x11, 3290 .offset = offsetof(struct 3291 wlfw_host_cap_req_msg_v01, 3292 wake_msi_valid), 3293 }, 3294 { 3295 .data_type = QMI_UNSIGNED_4_BYTE, 3296 .elem_len = 1, 3297 .elem_size = sizeof(u32), 3298 .array_type = NO_ARRAY, 3299 .tlv_type = 0x11, 3300 .offset = offsetof(struct 3301 wlfw_host_cap_req_msg_v01, 3302 wake_msi), 3303 }, 3304 { 3305 .data_type = QMI_OPT_FLAG, 3306 .elem_len = 1, 3307 .elem_size = sizeof(u8), 3308 .array_type = NO_ARRAY, 3309 .tlv_type = 0x12, 3310 .offset = offsetof(struct 3311 wlfw_host_cap_req_msg_v01, 3312 gpios_valid), 3313 }, 3314 { 3315 .data_type = QMI_DATA_LEN, 3316 .elem_len = 1, 3317 .elem_size = sizeof(u8), 3318 .array_type = NO_ARRAY, 3319 .tlv_type = 0x12, 3320 .offset = offsetof(struct 3321 wlfw_host_cap_req_msg_v01, 3322 gpios_len), 3323 }, 3324 { 3325 .data_type = QMI_UNSIGNED_4_BYTE, 3326 .elem_len = QMI_WLFW_MAX_NUM_GPIO_V01, 3327 .elem_size = sizeof(u32), 3328 .array_type = VAR_LEN_ARRAY, 3329 .tlv_type = 0x12, 3330 .offset = offsetof(struct 3331 wlfw_host_cap_req_msg_v01, 3332 gpios), 3333 }, 3334 { 3335 .data_type = QMI_OPT_FLAG, 3336 .elem_len = 1, 3337 .elem_size = sizeof(u8), 3338 .array_type = NO_ARRAY, 3339 .tlv_type = 0x13, 3340 .offset = offsetof(struct 3341 wlfw_host_cap_req_msg_v01, 3342 nm_modem_valid), 3343 }, 3344 { 3345 .data_type = QMI_UNSIGNED_1_BYTE, 3346 .elem_len = 1, 3347 .elem_size = sizeof(u8), 3348 .array_type = NO_ARRAY, 3349 .tlv_type = 0x13, 3350 .offset = offsetof(struct 3351 wlfw_host_cap_req_msg_v01, 3352 nm_modem), 3353 }, 3354 { 3355 .data_type = QMI_OPT_FLAG, 3356 .elem_len = 1, 3357 .elem_size = sizeof(u8), 3358 .array_type = NO_ARRAY, 3359 .tlv_type = 0x14, 3360 .offset = offsetof(struct 3361 wlfw_host_cap_req_msg_v01, 3362 bdf_support_valid), 3363 }, 3364 { 3365 .data_type = QMI_UNSIGNED_1_BYTE, 3366 .elem_len = 1, 3367 .elem_size = sizeof(u8), 3368 .array_type = NO_ARRAY, 3369 .tlv_type = 0x14, 3370 .offset = offsetof(struct 3371 wlfw_host_cap_req_msg_v01, 3372 bdf_support), 3373 }, 3374 { 3375 .data_type = QMI_OPT_FLAG, 3376 .elem_len = 1, 3377 .elem_size = sizeof(u8), 3378 .array_type = NO_ARRAY, 3379 .tlv_type = 0x15, 3380 .offset = offsetof(struct 3381 wlfw_host_cap_req_msg_v01, 3382 bdf_cache_support_valid), 3383 }, 3384 { 3385 .data_type = QMI_UNSIGNED_1_BYTE, 3386 .elem_len = 1, 3387 .elem_size = sizeof(u8), 3388 .array_type = NO_ARRAY, 3389 .tlv_type = 0x15, 3390 .offset = offsetof(struct 3391 wlfw_host_cap_req_msg_v01, 3392 bdf_cache_support), 3393 }, 3394 { 3395 .data_type = QMI_OPT_FLAG, 3396 .elem_len = 1, 3397 .elem_size = sizeof(u8), 3398 .array_type = NO_ARRAY, 3399 .tlv_type = 0x16, 3400 .offset = offsetof(struct 3401 wlfw_host_cap_req_msg_v01, 3402 m3_support_valid), 3403 }, 3404 { 3405 .data_type = QMI_UNSIGNED_1_BYTE, 3406 .elem_len = 1, 3407 .elem_size = sizeof(u8), 3408 .array_type = NO_ARRAY, 3409 .tlv_type = 0x16, 3410 .offset = offsetof(struct 3411 wlfw_host_cap_req_msg_v01, 3412 m3_support), 3413 }, 3414 { 3415 .data_type = QMI_OPT_FLAG, 3416 .elem_len = 1, 3417 .elem_size = sizeof(u8), 3418 .array_type = NO_ARRAY, 3419 .tlv_type = 0x17, 3420 .offset = offsetof(struct 3421 wlfw_host_cap_req_msg_v01, 3422 m3_cache_support_valid), 3423 }, 3424 { 3425 .data_type = QMI_UNSIGNED_1_BYTE, 3426 .elem_len = 1, 3427 .elem_size = sizeof(u8), 3428 .array_type = NO_ARRAY, 3429 .tlv_type = 0x17, 3430 .offset = offsetof(struct 3431 wlfw_host_cap_req_msg_v01, 3432 m3_cache_support), 3433 }, 3434 { 3435 .data_type = QMI_OPT_FLAG, 3436 .elem_len = 1, 3437 .elem_size = sizeof(u8), 3438 .array_type = NO_ARRAY, 3439 .tlv_type = 0x18, 3440 .offset = offsetof(struct 3441 wlfw_host_cap_req_msg_v01, 3442 cal_filesys_support_valid), 3443 }, 3444 { 3445 .data_type = QMI_UNSIGNED_1_BYTE, 3446 .elem_len = 1, 3447 .elem_size = sizeof(u8), 3448 .array_type = NO_ARRAY, 3449 .tlv_type = 0x18, 3450 .offset = offsetof(struct 3451 wlfw_host_cap_req_msg_v01, 3452 cal_filesys_support), 3453 }, 3454 { 3455 .data_type = QMI_OPT_FLAG, 3456 .elem_len = 1, 3457 .elem_size = sizeof(u8), 3458 .array_type = NO_ARRAY, 3459 .tlv_type = 0x19, 3460 .offset = offsetof(struct 3461 wlfw_host_cap_req_msg_v01, 3462 cal_cache_support_valid), 3463 }, 3464 { 3465 .data_type = QMI_UNSIGNED_1_BYTE, 3466 .elem_len = 1, 3467 .elem_size = sizeof(u8), 3468 .array_type = NO_ARRAY, 3469 .tlv_type = 0x19, 3470 .offset = offsetof(struct 3471 wlfw_host_cap_req_msg_v01, 3472 cal_cache_support), 3473 }, 3474 { 3475 .data_type = QMI_OPT_FLAG, 3476 .elem_len = 1, 3477 .elem_size = sizeof(u8), 3478 .array_type = NO_ARRAY, 3479 .tlv_type = 0x1A, 3480 .offset = offsetof(struct 3481 wlfw_host_cap_req_msg_v01, 3482 cal_done_valid), 3483 }, 3484 { 3485 .data_type = QMI_UNSIGNED_1_BYTE, 3486 .elem_len = 1, 3487 .elem_size = sizeof(u8), 3488 .array_type = NO_ARRAY, 3489 .tlv_type = 0x1A, 3490 .offset = offsetof(struct 3491 wlfw_host_cap_req_msg_v01, 3492 cal_done), 3493 }, 3494 { 3495 .data_type = QMI_OPT_FLAG, 3496 .elem_len = 1, 3497 .elem_size = sizeof(u8), 3498 .array_type = NO_ARRAY, 3499 .tlv_type = 0x1B, 3500 .offset = offsetof(struct 3501 wlfw_host_cap_req_msg_v01, 3502 mem_bucket_valid), 3503 }, 3504 { 3505 .data_type = QMI_UNSIGNED_4_BYTE, 3506 .elem_len = 1, 3507 .elem_size = sizeof(u32), 3508 .array_type = NO_ARRAY, 3509 .tlv_type = 0x1B, 3510 .offset = offsetof(struct 3511 wlfw_host_cap_req_msg_v01, 3512 mem_bucket), 3513 }, 3514 { 3515 .data_type = QMI_OPT_FLAG, 3516 .elem_len = 1, 3517 .elem_size = sizeof(u8), 3518 .array_type = NO_ARRAY, 3519 .tlv_type = 0x1C, 3520 .offset = offsetof(struct 3521 wlfw_host_cap_req_msg_v01, 3522 mem_cfg_mode_valid), 3523 }, 3524 { 3525 .data_type = QMI_UNSIGNED_1_BYTE, 3526 .elem_len = 1, 3527 .elem_size = sizeof(u8), 3528 .array_type = NO_ARRAY, 3529 .tlv_type = 0x1C, 3530 .offset = offsetof(struct 3531 wlfw_host_cap_req_msg_v01, 3532 mem_cfg_mode), 3533 }, 3534 { 3535 .data_type = QMI_OPT_FLAG, 3536 .elem_len = 1, 3537 .elem_size = sizeof(u8), 3538 .array_type = NO_ARRAY, 3539 .tlv_type = 0x1D, 3540 .offset = offsetof(struct 3541 wlfw_host_cap_req_msg_v01, 3542 cal_duration_valid), 3543 }, 3544 { 3545 .data_type = QMI_UNSIGNED_2_BYTE, 3546 .elem_len = 1, 3547 .elem_size = sizeof(u16), 3548 .array_type = NO_ARRAY, 3549 .tlv_type = 0x1D, 3550 .offset = offsetof(struct 3551 wlfw_host_cap_req_msg_v01, 3552 cal_duration), 3553 }, 3554 { 3555 .data_type = QMI_OPT_FLAG, 3556 .elem_len = 1, 3557 .elem_size = sizeof(u8), 3558 .array_type = NO_ARRAY, 3559 .tlv_type = 0x1E, 3560 .offset = offsetof(struct 3561 wlfw_host_cap_req_msg_v01, 3562 platform_name_valid), 3563 }, 3564 { 3565 .data_type = QMI_STRING, 3566 .elem_len = QMI_WLFW_MAX_PLATFORM_NAME_LEN_V01 + 1, 3567 .elem_size = sizeof(char), 3568 .array_type = NO_ARRAY, 3569 .tlv_type = 0x1E, 3570 .offset = offsetof(struct 3571 wlfw_host_cap_req_msg_v01, 3572 platform_name), 3573 }, 3574 { 3575 .data_type = QMI_OPT_FLAG, 3576 .elem_len = 1, 3577 .elem_size = sizeof(u8), 3578 .array_type = NO_ARRAY, 3579 .tlv_type = 0x1F, 3580 .offset = offsetof(struct 3581 wlfw_host_cap_req_msg_v01, 3582 ddr_range_valid), 3583 }, 3584 { 3585 .data_type = QMI_STRUCT, 3586 .elem_len = QMI_WLFW_MAX_HOST_DDR_RANGE_SIZE_V01, 3587 .elem_size = sizeof(struct wlfw_host_ddr_range_s_v01), 3588 .array_type = STATIC_ARRAY, 3589 .tlv_type = 0x1F, 3590 .offset = offsetof(struct 3591 wlfw_host_cap_req_msg_v01, 3592 ddr_range), 3593 .ei_array = wlfw_host_ddr_range_s_v01_ei, 3594 }, 3595 { 3596 .data_type = QMI_OPT_FLAG, 3597 .elem_len = 1, 3598 .elem_size = sizeof(u8), 3599 .array_type = NO_ARRAY, 3600 .tlv_type = 0x20, 3601 .offset = offsetof(struct 3602 wlfw_host_cap_req_msg_v01, 3603 host_build_type_valid), 3604 }, 3605 { 3606 .data_type = QMI_SIGNED_4_BYTE_ENUM, 3607 .elem_len = 1, 3608 .elem_size = sizeof(enum wlfw_host_build_type_v01), 3609 .array_type = NO_ARRAY, 3610 .tlv_type = 0x20, 3611 .offset = offsetof(struct 3612 wlfw_host_cap_req_msg_v01, 3613 host_build_type), 3614 }, 3615 { 3616 .data_type = QMI_OPT_FLAG, 3617 .elem_len = 1, 3618 .elem_size = sizeof(u8), 3619 .array_type = NO_ARRAY, 3620 .tlv_type = 0x21, 3621 .offset = offsetof(struct 3622 wlfw_host_cap_req_msg_v01, 3623 mlo_capable_valid), 3624 }, 3625 { 3626 .data_type = QMI_UNSIGNED_1_BYTE, 3627 .elem_len = 1, 3628 .elem_size = sizeof(u8), 3629 .array_type = NO_ARRAY, 3630 .tlv_type = 0x21, 3631 .offset = offsetof(struct 3632 wlfw_host_cap_req_msg_v01, 3633 mlo_capable), 3634 }, 3635 { 3636 .data_type = QMI_OPT_FLAG, 3637 .elem_len = 1, 3638 .elem_size = sizeof(u8), 3639 .array_type = NO_ARRAY, 3640 .tlv_type = 0x22, 3641 .offset = offsetof(struct 3642 wlfw_host_cap_req_msg_v01, 3643 mlo_chip_id_valid), 3644 }, 3645 { 3646 .data_type = QMI_UNSIGNED_2_BYTE, 3647 .elem_len = 1, 3648 .elem_size = sizeof(u16), 3649 .array_type = NO_ARRAY, 3650 .tlv_type = 0x22, 3651 .offset = offsetof(struct 3652 wlfw_host_cap_req_msg_v01, 3653 mlo_chip_id), 3654 }, 3655 { 3656 .data_type = QMI_OPT_FLAG, 3657 .elem_len = 1, 3658 .elem_size = sizeof(u8), 3659 .array_type = NO_ARRAY, 3660 .tlv_type = 0x23, 3661 .offset = offsetof(struct 3662 wlfw_host_cap_req_msg_v01, 3663 mlo_group_id_valid), 3664 }, 3665 { 3666 .data_type = QMI_UNSIGNED_1_BYTE, 3667 .elem_len = 1, 3668 .elem_size = sizeof(u8), 3669 .array_type = NO_ARRAY, 3670 .tlv_type = 0x23, 3671 .offset = offsetof(struct 3672 wlfw_host_cap_req_msg_v01, 3673 mlo_group_id), 3674 }, 3675 { 3676 .data_type = QMI_OPT_FLAG, 3677 .elem_len = 1, 3678 .elem_size = sizeof(u8), 3679 .array_type = NO_ARRAY, 3680 .tlv_type = 0x24, 3681 .offset = offsetof(struct 3682 wlfw_host_cap_req_msg_v01, 3683 max_mlo_peer_valid), 3684 }, 3685 { 3686 .data_type = QMI_UNSIGNED_2_BYTE, 3687 .elem_len = 1, 3688 .elem_size = sizeof(u16), 3689 .array_type = NO_ARRAY, 3690 .tlv_type = 0x24, 3691 .offset = offsetof(struct 3692 wlfw_host_cap_req_msg_v01, 3693 max_mlo_peer), 3694 }, 3695 { 3696 .data_type = QMI_OPT_FLAG, 3697 .elem_len = 1, 3698 .elem_size = sizeof(u8), 3699 .array_type = NO_ARRAY, 3700 .tlv_type = 0x25, 3701 .offset = offsetof(struct 3702 wlfw_host_cap_req_msg_v01, 3703 mlo_num_chips_valid), 3704 }, 3705 { 3706 .data_type = QMI_UNSIGNED_1_BYTE, 3707 .elem_len = 1, 3708 .elem_size = sizeof(u8), 3709 .array_type = NO_ARRAY, 3710 .tlv_type = 0x25, 3711 .offset = offsetof(struct 3712 wlfw_host_cap_req_msg_v01, 3713 mlo_num_chips), 3714 }, 3715 { 3716 .data_type = QMI_OPT_FLAG, 3717 .elem_len = 1, 3718 .elem_size = sizeof(u8), 3719 .array_type = NO_ARRAY, 3720 .tlv_type = 0x26, 3721 .offset = offsetof(struct 3722 wlfw_host_cap_req_msg_v01, 3723 mlo_chip_info_valid), 3724 }, 3725 { 3726 .data_type = QMI_STRUCT, 3727 .elem_len = QMI_WLFW_MAX_NUM_MLO_CHIPS_V01, 3728 .elem_size = sizeof(struct wlfw_host_mlo_chip_info_s_v01), 3729 .array_type = STATIC_ARRAY, 3730 .tlv_type = 0x26, 3731 .offset = offsetof(struct 3732 wlfw_host_cap_req_msg_v01, 3733 mlo_chip_info), 3734 .ei_array = wlfw_host_mlo_chip_info_s_v01_ei, 3735 }, 3736 { 3737 .data_type = QMI_OPT_FLAG, 3738 .elem_len = 1, 3739 .elem_size = sizeof(u8), 3740 .array_type = NO_ARRAY, 3741 .tlv_type = 0x27, 3742 .offset = offsetof(struct 3743 wlfw_host_cap_req_msg_v01, 3744 feature_list_valid), 3745 }, 3746 { 3747 .data_type = QMI_UNSIGNED_8_BYTE, 3748 .elem_len = 1, 3749 .elem_size = sizeof(u64), 3750 .array_type = NO_ARRAY, 3751 .tlv_type = 0x27, 3752 .offset = offsetof(struct 3753 wlfw_host_cap_req_msg_v01, 3754 feature_list), 3755 }, 3756 { 3757 .data_type = QMI_OPT_FLAG, 3758 .elem_len = 1, 3759 .elem_size = sizeof(u8), 3760 .array_type = NO_ARRAY, 3761 .tlv_type = 0x28, 3762 .offset = offsetof(struct 3763 wlfw_host_cap_req_msg_v01, 3764 num_wlan_clients_valid), 3765 }, 3766 { 3767 .data_type = QMI_UNSIGNED_2_BYTE, 3768 .elem_len = 1, 3769 .elem_size = sizeof(u16), 3770 .array_type = NO_ARRAY, 3771 .tlv_type = 0x28, 3772 .offset = offsetof(struct 3773 wlfw_host_cap_req_msg_v01, 3774 num_wlan_clients), 3775 }, 3776 { 3777 .data_type = QMI_OPT_FLAG, 3778 .elem_len = 1, 3779 .elem_size = sizeof(u8), 3780 .array_type = NO_ARRAY, 3781 .tlv_type = 0x29, 3782 .offset = offsetof(struct 3783 wlfw_host_cap_req_msg_v01, 3784 num_wlan_vaps_valid), 3785 }, 3786 { 3787 .data_type = QMI_UNSIGNED_1_BYTE, 3788 .elem_len = 1, 3789 .elem_size = sizeof(u8), 3790 .array_type = NO_ARRAY, 3791 .tlv_type = 0x29, 3792 .offset = offsetof(struct 3793 wlfw_host_cap_req_msg_v01, 3794 num_wlan_vaps), 3795 }, 3796 { 3797 .data_type = QMI_OPT_FLAG, 3798 .elem_len = 1, 3799 .elem_size = sizeof(u8), 3800 .array_type = NO_ARRAY, 3801 .tlv_type = 0x2A, 3802 .offset = offsetof(struct 3803 wlfw_host_cap_req_msg_v01, 3804 wake_msi_addr_valid), 3805 }, 3806 { 3807 .data_type = QMI_UNSIGNED_4_BYTE, 3808 .elem_len = 1, 3809 .elem_size = sizeof(u32), 3810 .array_type = NO_ARRAY, 3811 .tlv_type = 0x2A, 3812 .offset = offsetof(struct 3813 wlfw_host_cap_req_msg_v01, 3814 wake_msi_addr), 3815 }, 3816 { 3817 .data_type = QMI_OPT_FLAG, 3818 .elem_len = 1, 3819 .elem_size = sizeof(u8), 3820 .array_type = NO_ARRAY, 3821 .tlv_type = 0x2B, 3822 .offset = offsetof(struct 3823 wlfw_host_cap_req_msg_v01, 3824 wlan_enable_delay_valid), 3825 }, 3826 { 3827 .data_type = QMI_UNSIGNED_4_BYTE, 3828 .elem_len = 1, 3829 .elem_size = sizeof(u32), 3830 .array_type = NO_ARRAY, 3831 .tlv_type = 0x2B, 3832 .offset = offsetof(struct 3833 wlfw_host_cap_req_msg_v01, 3834 wlan_enable_delay), 3835 }, 3836 { 3837 .data_type = QMI_OPT_FLAG, 3838 .elem_len = 1, 3839 .elem_size = sizeof(u8), 3840 .array_type = NO_ARRAY, 3841 .tlv_type = 0x2C, 3842 .offset = offsetof(struct 3843 wlfw_host_cap_req_msg_v01, 3844 ddr_type_valid), 3845 }, 3846 { 3847 .data_type = QMI_UNSIGNED_4_BYTE, 3848 .elem_len = 1, 3849 .elem_size = sizeof(u32), 3850 .array_type = NO_ARRAY, 3851 .tlv_type = 0x2C, 3852 .offset = offsetof(struct 3853 wlfw_host_cap_req_msg_v01, 3854 ddr_type), 3855 }, 3856 { 3857 .data_type = QMI_OPT_FLAG, 3858 .elem_len = 1, 3859 .elem_size = sizeof(u8), 3860 .array_type = NO_ARRAY, 3861 .tlv_type = 0x2D, 3862 .offset = offsetof(struct 3863 wlfw_host_cap_req_msg_v01, 3864 gpio_info_valid), 3865 }, 3866 { 3867 .data_type = QMI_DATA_LEN, 3868 .elem_len = 1, 3869 .elem_size = sizeof(u8), 3870 .array_type = NO_ARRAY, 3871 .tlv_type = 0x2D, 3872 .offset = offsetof(struct 3873 wlfw_host_cap_req_msg_v01, 3874 gpio_info_len), 3875 }, 3876 { 3877 .data_type = QMI_UNSIGNED_4_BYTE, 3878 .elem_len = QMI_WLFW_MAX_NUM_GPIO_INFO_V01, 3879 .elem_size = sizeof(u32), 3880 .array_type = VAR_LEN_ARRAY, 3881 .tlv_type = 0x2D, 3882 .offset = offsetof(struct 3883 wlfw_host_cap_req_msg_v01, 3884 gpio_info), 3885 }, 3886 { 3887 .data_type = QMI_OPT_FLAG, 3888 .elem_len = 1, 3889 .elem_size = sizeof(u8), 3890 .array_type = NO_ARRAY, 3891 .tlv_type = 0x2E, 3892 .offset = offsetof(struct 3893 wlfw_host_cap_req_msg_v01, 3894 fw_ini_cfg_support_valid), 3895 }, 3896 { 3897 .data_type = QMI_UNSIGNED_1_BYTE, 3898 .elem_len = 1, 3899 .elem_size = sizeof(u8), 3900 .array_type = NO_ARRAY, 3901 .tlv_type = 0x2E, 3902 .offset = offsetof(struct 3903 wlfw_host_cap_req_msg_v01, 3904 fw_ini_cfg_support), 3905 }, 3906 { 3907 .data_type = QMI_EOTI, 3908 .array_type = NO_ARRAY, 3909 .tlv_type = QMI_COMMON_TLV_TYPE, 3910 }, 3911 }; 3912 EXPORT_SYMBOL(wlfw_host_cap_req_msg_v01_ei); 3913 3914 struct qmi_elem_info wlfw_host_cap_resp_msg_v01_ei[] = { 3915 { 3916 .data_type = QMI_STRUCT, 3917 .elem_len = 1, 3918 .elem_size = sizeof(struct qmi_response_type_v01), 3919 .array_type = NO_ARRAY, 3920 .tlv_type = 0x02, 3921 .offset = offsetof(struct 3922 wlfw_host_cap_resp_msg_v01, 3923 resp), 3924 .ei_array = qmi_response_type_v01_ei, 3925 }, 3926 { 3927 .data_type = QMI_EOTI, 3928 .array_type = NO_ARRAY, 3929 .tlv_type = QMI_COMMON_TLV_TYPE, 3930 }, 3931 }; 3932 EXPORT_SYMBOL(wlfw_host_cap_resp_msg_v01_ei); 3933 3934 struct qmi_elem_info wlfw_request_mem_ind_msg_v01_ei[] = { 3935 { 3936 .data_type = QMI_DATA_LEN, 3937 .elem_len = 1, 3938 .elem_size = sizeof(u8), 3939 .array_type = NO_ARRAY, 3940 .tlv_type = 0x01, 3941 .offset = offsetof(struct 3942 wlfw_request_mem_ind_msg_v01, 3943 mem_seg_len), 3944 }, 3945 { 3946 .data_type = QMI_STRUCT, 3947 .elem_len = QMI_WLFW_MAX_NUM_MEM_SEG_V01, 3948 .elem_size = sizeof(struct wlfw_mem_seg_s_v01), 3949 .array_type = VAR_LEN_ARRAY, 3950 .tlv_type = 0x01, 3951 .offset = offsetof(struct 3952 wlfw_request_mem_ind_msg_v01, 3953 mem_seg), 3954 .ei_array = wlfw_mem_seg_s_v01_ei, 3955 }, 3956 { 3957 .data_type = QMI_EOTI, 3958 .array_type = NO_ARRAY, 3959 .tlv_type = QMI_COMMON_TLV_TYPE, 3960 }, 3961 }; 3962 EXPORT_SYMBOL(wlfw_request_mem_ind_msg_v01_ei); 3963 3964 struct qmi_elem_info wlfw_respond_mem_req_msg_v01_ei[] = { 3965 { 3966 .data_type = QMI_DATA_LEN, 3967 .elem_len = 1, 3968 .elem_size = sizeof(u8), 3969 .array_type = NO_ARRAY, 3970 .tlv_type = 0x01, 3971 .offset = offsetof(struct 3972 wlfw_respond_mem_req_msg_v01, 3973 mem_seg_len), 3974 }, 3975 { 3976 .data_type = QMI_STRUCT, 3977 .elem_len = QMI_WLFW_MAX_NUM_MEM_SEG_V01, 3978 .elem_size = sizeof(struct wlfw_mem_seg_resp_s_v01), 3979 .array_type = VAR_LEN_ARRAY, 3980 .tlv_type = 0x01, 3981 .offset = offsetof(struct 3982 wlfw_respond_mem_req_msg_v01, 3983 mem_seg), 3984 .ei_array = wlfw_mem_seg_resp_s_v01_ei, 3985 }, 3986 { 3987 .data_type = QMI_EOTI, 3988 .array_type = NO_ARRAY, 3989 .tlv_type = QMI_COMMON_TLV_TYPE, 3990 }, 3991 }; 3992 EXPORT_SYMBOL(wlfw_respond_mem_req_msg_v01_ei); 3993 3994 struct qmi_elem_info wlfw_respond_mem_resp_msg_v01_ei[] = { 3995 { 3996 .data_type = QMI_STRUCT, 3997 .elem_len = 1, 3998 .elem_size = sizeof(struct qmi_response_type_v01), 3999 .array_type = NO_ARRAY, 4000 .tlv_type = 0x02, 4001 .offset = offsetof(struct 4002 wlfw_respond_mem_resp_msg_v01, 4003 resp), 4004 .ei_array = qmi_response_type_v01_ei, 4005 }, 4006 { 4007 .data_type = QMI_EOTI, 4008 .array_type = NO_ARRAY, 4009 .tlv_type = QMI_COMMON_TLV_TYPE, 4010 }, 4011 }; 4012 EXPORT_SYMBOL(wlfw_respond_mem_resp_msg_v01_ei); 4013 4014 struct qmi_elem_info wlfw_fw_mem_ready_ind_msg_v01_ei[] = { 4015 { 4016 .data_type = QMI_EOTI, 4017 .array_type = NO_ARRAY, 4018 .tlv_type = QMI_COMMON_TLV_TYPE, 4019 }, 4020 }; 4021 EXPORT_SYMBOL(wlfw_fw_mem_ready_ind_msg_v01_ei); 4022 4023 struct qmi_elem_info wlfw_fw_init_done_ind_msg_v01_ei[] = { 4024 { 4025 .data_type = QMI_OPT_FLAG, 4026 .elem_len = 1, 4027 .elem_size = sizeof(u8), 4028 .array_type = NO_ARRAY, 4029 .tlv_type = 0x10, 4030 .offset = offsetof(struct 4031 wlfw_fw_init_done_ind_msg_v01, 4032 hang_data_addr_offset_valid), 4033 }, 4034 { 4035 .data_type = QMI_UNSIGNED_4_BYTE, 4036 .elem_len = 1, 4037 .elem_size = sizeof(u32), 4038 .array_type = NO_ARRAY, 4039 .tlv_type = 0x10, 4040 .offset = offsetof(struct 4041 wlfw_fw_init_done_ind_msg_v01, 4042 hang_data_addr_offset), 4043 }, 4044 { 4045 .data_type = QMI_OPT_FLAG, 4046 .elem_len = 1, 4047 .elem_size = sizeof(u8), 4048 .array_type = NO_ARRAY, 4049 .tlv_type = 0x11, 4050 .offset = offsetof(struct 4051 wlfw_fw_init_done_ind_msg_v01, 4052 hang_data_length_valid), 4053 }, 4054 { 4055 .data_type = QMI_UNSIGNED_2_BYTE, 4056 .elem_len = 1, 4057 .elem_size = sizeof(u16), 4058 .array_type = NO_ARRAY, 4059 .tlv_type = 0x11, 4060 .offset = offsetof(struct 4061 wlfw_fw_init_done_ind_msg_v01, 4062 hang_data_length), 4063 }, 4064 { 4065 .data_type = QMI_EOTI, 4066 .array_type = NO_ARRAY, 4067 .tlv_type = QMI_COMMON_TLV_TYPE, 4068 }, 4069 }; 4070 EXPORT_SYMBOL(wlfw_fw_init_done_ind_msg_v01_ei); 4071 4072 struct qmi_elem_info wlfw_rejuvenate_ind_msg_v01_ei[] = { 4073 { 4074 .data_type = QMI_OPT_FLAG, 4075 .elem_len = 1, 4076 .elem_size = sizeof(u8), 4077 .array_type = NO_ARRAY, 4078 .tlv_type = 0x10, 4079 .offset = offsetof(struct 4080 wlfw_rejuvenate_ind_msg_v01, 4081 cause_for_rejuvenation_valid), 4082 }, 4083 { 4084 .data_type = QMI_UNSIGNED_1_BYTE, 4085 .elem_len = 1, 4086 .elem_size = sizeof(u8), 4087 .array_type = NO_ARRAY, 4088 .tlv_type = 0x10, 4089 .offset = offsetof(struct 4090 wlfw_rejuvenate_ind_msg_v01, 4091 cause_for_rejuvenation), 4092 }, 4093 { 4094 .data_type = QMI_OPT_FLAG, 4095 .elem_len = 1, 4096 .elem_size = sizeof(u8), 4097 .array_type = NO_ARRAY, 4098 .tlv_type = 0x11, 4099 .offset = offsetof(struct 4100 wlfw_rejuvenate_ind_msg_v01, 4101 requesting_sub_system_valid), 4102 }, 4103 { 4104 .data_type = QMI_UNSIGNED_1_BYTE, 4105 .elem_len = 1, 4106 .elem_size = sizeof(u8), 4107 .array_type = NO_ARRAY, 4108 .tlv_type = 0x11, 4109 .offset = offsetof(struct 4110 wlfw_rejuvenate_ind_msg_v01, 4111 requesting_sub_system), 4112 }, 4113 { 4114 .data_type = QMI_OPT_FLAG, 4115 .elem_len = 1, 4116 .elem_size = sizeof(u8), 4117 .array_type = NO_ARRAY, 4118 .tlv_type = 0x12, 4119 .offset = offsetof(struct 4120 wlfw_rejuvenate_ind_msg_v01, 4121 line_number_valid), 4122 }, 4123 { 4124 .data_type = QMI_UNSIGNED_2_BYTE, 4125 .elem_len = 1, 4126 .elem_size = sizeof(u16), 4127 .array_type = NO_ARRAY, 4128 .tlv_type = 0x12, 4129 .offset = offsetof(struct 4130 wlfw_rejuvenate_ind_msg_v01, 4131 line_number), 4132 }, 4133 { 4134 .data_type = QMI_OPT_FLAG, 4135 .elem_len = 1, 4136 .elem_size = sizeof(u8), 4137 .array_type = NO_ARRAY, 4138 .tlv_type = 0x13, 4139 .offset = offsetof(struct 4140 wlfw_rejuvenate_ind_msg_v01, 4141 function_name_valid), 4142 }, 4143 { 4144 .data_type = QMI_STRING, 4145 .elem_len = QMI_WLFW_FUNCTION_NAME_LEN_V01 + 1, 4146 .elem_size = sizeof(char), 4147 .array_type = NO_ARRAY, 4148 .tlv_type = 0x13, 4149 .offset = offsetof(struct 4150 wlfw_rejuvenate_ind_msg_v01, 4151 function_name), 4152 }, 4153 { 4154 .data_type = QMI_EOTI, 4155 .array_type = NO_ARRAY, 4156 .tlv_type = QMI_COMMON_TLV_TYPE, 4157 }, 4158 }; 4159 EXPORT_SYMBOL(wlfw_rejuvenate_ind_msg_v01_ei); 4160 4161 struct qmi_elem_info wlfw_rejuvenate_ack_req_msg_v01_ei[] = { 4162 { 4163 .data_type = QMI_EOTI, 4164 .array_type = NO_ARRAY, 4165 .tlv_type = QMI_COMMON_TLV_TYPE, 4166 }, 4167 }; 4168 EXPORT_SYMBOL(wlfw_rejuvenate_ack_req_msg_v01_ei); 4169 4170 struct qmi_elem_info wlfw_rejuvenate_ack_resp_msg_v01_ei[] = { 4171 { 4172 .data_type = QMI_STRUCT, 4173 .elem_len = 1, 4174 .elem_size = sizeof(struct qmi_response_type_v01), 4175 .array_type = NO_ARRAY, 4176 .tlv_type = 0x02, 4177 .offset = offsetof(struct 4178 wlfw_rejuvenate_ack_resp_msg_v01, 4179 resp), 4180 .ei_array = qmi_response_type_v01_ei, 4181 }, 4182 { 4183 .data_type = QMI_EOTI, 4184 .array_type = NO_ARRAY, 4185 .tlv_type = QMI_COMMON_TLV_TYPE, 4186 }, 4187 }; 4188 EXPORT_SYMBOL(wlfw_rejuvenate_ack_resp_msg_v01_ei); 4189 4190 struct qmi_elem_info wlfw_dynamic_feature_mask_req_msg_v01_ei[] = { 4191 { 4192 .data_type = QMI_OPT_FLAG, 4193 .elem_len = 1, 4194 .elem_size = sizeof(u8), 4195 .array_type = NO_ARRAY, 4196 .tlv_type = 0x10, 4197 .offset = offsetof(struct 4198 wlfw_dynamic_feature_mask_req_msg_v01, 4199 mask_valid), 4200 }, 4201 { 4202 .data_type = QMI_UNSIGNED_8_BYTE, 4203 .elem_len = 1, 4204 .elem_size = sizeof(u64), 4205 .array_type = NO_ARRAY, 4206 .tlv_type = 0x10, 4207 .offset = offsetof(struct 4208 wlfw_dynamic_feature_mask_req_msg_v01, 4209 mask), 4210 }, 4211 { 4212 .data_type = QMI_EOTI, 4213 .array_type = NO_ARRAY, 4214 .tlv_type = QMI_COMMON_TLV_TYPE, 4215 }, 4216 }; 4217 EXPORT_SYMBOL(wlfw_dynamic_feature_mask_req_msg_v01_ei); 4218 4219 struct qmi_elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[] = { 4220 { 4221 .data_type = QMI_STRUCT, 4222 .elem_len = 1, 4223 .elem_size = sizeof(struct qmi_response_type_v01), 4224 .array_type = NO_ARRAY, 4225 .tlv_type = 0x02, 4226 .offset = offsetof(struct 4227 wlfw_dynamic_feature_mask_resp_msg_v01, 4228 resp), 4229 .ei_array = qmi_response_type_v01_ei, 4230 }, 4231 { 4232 .data_type = QMI_OPT_FLAG, 4233 .elem_len = 1, 4234 .elem_size = sizeof(u8), 4235 .array_type = NO_ARRAY, 4236 .tlv_type = 0x10, 4237 .offset = offsetof(struct 4238 wlfw_dynamic_feature_mask_resp_msg_v01, 4239 prev_mask_valid), 4240 }, 4241 { 4242 .data_type = QMI_UNSIGNED_8_BYTE, 4243 .elem_len = 1, 4244 .elem_size = sizeof(u64), 4245 .array_type = NO_ARRAY, 4246 .tlv_type = 0x10, 4247 .offset = offsetof(struct 4248 wlfw_dynamic_feature_mask_resp_msg_v01, 4249 prev_mask), 4250 }, 4251 { 4252 .data_type = QMI_OPT_FLAG, 4253 .elem_len = 1, 4254 .elem_size = sizeof(u8), 4255 .array_type = NO_ARRAY, 4256 .tlv_type = 0x11, 4257 .offset = offsetof(struct 4258 wlfw_dynamic_feature_mask_resp_msg_v01, 4259 curr_mask_valid), 4260 }, 4261 { 4262 .data_type = QMI_UNSIGNED_8_BYTE, 4263 .elem_len = 1, 4264 .elem_size = sizeof(u64), 4265 .array_type = NO_ARRAY, 4266 .tlv_type = 0x11, 4267 .offset = offsetof(struct 4268 wlfw_dynamic_feature_mask_resp_msg_v01, 4269 curr_mask), 4270 }, 4271 { 4272 .data_type = QMI_EOTI, 4273 .array_type = NO_ARRAY, 4274 .tlv_type = QMI_COMMON_TLV_TYPE, 4275 }, 4276 }; 4277 EXPORT_SYMBOL(wlfw_dynamic_feature_mask_resp_msg_v01_ei); 4278 4279 struct qmi_elem_info wlfw_m3_info_req_msg_v01_ei[] = { 4280 { 4281 .data_type = QMI_UNSIGNED_8_BYTE, 4282 .elem_len = 1, 4283 .elem_size = sizeof(u64), 4284 .array_type = NO_ARRAY, 4285 .tlv_type = 0x01, 4286 .offset = offsetof(struct 4287 wlfw_m3_info_req_msg_v01, 4288 addr), 4289 }, 4290 { 4291 .data_type = QMI_UNSIGNED_4_BYTE, 4292 .elem_len = 1, 4293 .elem_size = sizeof(u32), 4294 .array_type = NO_ARRAY, 4295 .tlv_type = 0x02, 4296 .offset = offsetof(struct 4297 wlfw_m3_info_req_msg_v01, 4298 size), 4299 }, 4300 { 4301 .data_type = QMI_EOTI, 4302 .array_type = NO_ARRAY, 4303 .tlv_type = QMI_COMMON_TLV_TYPE, 4304 }, 4305 }; 4306 EXPORT_SYMBOL(wlfw_m3_info_req_msg_v01_ei); 4307 4308 struct qmi_elem_info wlfw_m3_info_resp_msg_v01_ei[] = { 4309 { 4310 .data_type = QMI_STRUCT, 4311 .elem_len = 1, 4312 .elem_size = sizeof(struct qmi_response_type_v01), 4313 .array_type = NO_ARRAY, 4314 .tlv_type = 0x02, 4315 .offset = offsetof(struct 4316 wlfw_m3_info_resp_msg_v01, 4317 resp), 4318 .ei_array = qmi_response_type_v01_ei, 4319 }, 4320 { 4321 .data_type = QMI_EOTI, 4322 .array_type = NO_ARRAY, 4323 .tlv_type = QMI_COMMON_TLV_TYPE, 4324 }, 4325 }; 4326 EXPORT_SYMBOL(wlfw_m3_info_resp_msg_v01_ei); 4327 4328 struct qmi_elem_info wlfw_xo_cal_ind_msg_v01_ei[] = { 4329 { 4330 .data_type = QMI_UNSIGNED_1_BYTE, 4331 .elem_len = 1, 4332 .elem_size = sizeof(u8), 4333 .array_type = NO_ARRAY, 4334 .tlv_type = 0x01, 4335 .offset = offsetof(struct 4336 wlfw_xo_cal_ind_msg_v01, 4337 xo_cal_data), 4338 }, 4339 { 4340 .data_type = QMI_EOTI, 4341 .array_type = NO_ARRAY, 4342 .tlv_type = QMI_COMMON_TLV_TYPE, 4343 }, 4344 }; 4345 EXPORT_SYMBOL(wlfw_xo_cal_ind_msg_v01_ei); 4346 4347 struct qmi_elem_info wlfw_cal_done_ind_msg_v01_ei[] = { 4348 { 4349 .data_type = QMI_OPT_FLAG, 4350 .elem_len = 1, 4351 .elem_size = sizeof(u8), 4352 .array_type = NO_ARRAY, 4353 .tlv_type = 0x10, 4354 .offset = offsetof(struct 4355 wlfw_cal_done_ind_msg_v01, 4356 cal_file_upload_size_valid), 4357 }, 4358 { 4359 .data_type = QMI_UNSIGNED_8_BYTE, 4360 .elem_len = 1, 4361 .elem_size = sizeof(u64), 4362 .array_type = NO_ARRAY, 4363 .tlv_type = 0x10, 4364 .offset = offsetof(struct 4365 wlfw_cal_done_ind_msg_v01, 4366 cal_file_upload_size), 4367 }, 4368 { 4369 .data_type = QMI_EOTI, 4370 .array_type = NO_ARRAY, 4371 .tlv_type = QMI_COMMON_TLV_TYPE, 4372 }, 4373 }; 4374 EXPORT_SYMBOL(wlfw_cal_done_ind_msg_v01_ei); 4375 4376 struct qmi_elem_info wlfw_qdss_trace_req_mem_ind_msg_v01_ei[] = { 4377 { 4378 .data_type = QMI_DATA_LEN, 4379 .elem_len = 1, 4380 .elem_size = sizeof(u8), 4381 .array_type = NO_ARRAY, 4382 .tlv_type = 0x01, 4383 .offset = offsetof(struct 4384 wlfw_qdss_trace_req_mem_ind_msg_v01, 4385 mem_seg_len), 4386 }, 4387 { 4388 .data_type = QMI_STRUCT, 4389 .elem_len = QMI_WLFW_MAX_NUM_MEM_SEG_V01, 4390 .elem_size = sizeof(struct wlfw_mem_seg_s_v01), 4391 .array_type = VAR_LEN_ARRAY, 4392 .tlv_type = 0x01, 4393 .offset = offsetof(struct 4394 wlfw_qdss_trace_req_mem_ind_msg_v01, 4395 mem_seg), 4396 .ei_array = wlfw_mem_seg_s_v01_ei, 4397 }, 4398 { 4399 .data_type = QMI_EOTI, 4400 .array_type = NO_ARRAY, 4401 .tlv_type = QMI_COMMON_TLV_TYPE, 4402 }, 4403 }; 4404 EXPORT_SYMBOL(wlfw_qdss_trace_req_mem_ind_msg_v01_ei); 4405 4406 struct qmi_elem_info wlfw_qdss_trace_mem_info_req_msg_v01_ei[] = { 4407 { 4408 .data_type = QMI_DATA_LEN, 4409 .elem_len = 1, 4410 .elem_size = sizeof(u8), 4411 .array_type = NO_ARRAY, 4412 .tlv_type = 0x01, 4413 .offset = offsetof(struct 4414 wlfw_qdss_trace_mem_info_req_msg_v01, 4415 mem_seg_len), 4416 }, 4417 { 4418 .data_type = QMI_STRUCT, 4419 .elem_len = QMI_WLFW_MAX_NUM_MEM_SEG_V01, 4420 .elem_size = sizeof(struct wlfw_mem_seg_resp_s_v01), 4421 .array_type = VAR_LEN_ARRAY, 4422 .tlv_type = 0x01, 4423 .offset = offsetof(struct 4424 wlfw_qdss_trace_mem_info_req_msg_v01, 4425 mem_seg), 4426 .ei_array = wlfw_mem_seg_resp_s_v01_ei, 4427 }, 4428 { 4429 .data_type = QMI_OPT_FLAG, 4430 .elem_len = 1, 4431 .elem_size = sizeof(u8), 4432 .array_type = NO_ARRAY, 4433 .tlv_type = 0x10, 4434 .offset = offsetof(struct 4435 wlfw_qdss_trace_mem_info_req_msg_v01, 4436 end_valid), 4437 }, 4438 { 4439 .data_type = QMI_UNSIGNED_1_BYTE, 4440 .elem_len = 1, 4441 .elem_size = sizeof(u8), 4442 .array_type = NO_ARRAY, 4443 .tlv_type = 0x10, 4444 .offset = offsetof(struct 4445 wlfw_qdss_trace_mem_info_req_msg_v01, 4446 end), 4447 }, 4448 { 4449 .data_type = QMI_EOTI, 4450 .array_type = NO_ARRAY, 4451 .tlv_type = QMI_COMMON_TLV_TYPE, 4452 }, 4453 }; 4454 EXPORT_SYMBOL(wlfw_qdss_trace_mem_info_req_msg_v01_ei); 4455 4456 struct qmi_elem_info wlfw_qdss_trace_mem_info_resp_msg_v01_ei[] = { 4457 { 4458 .data_type = QMI_STRUCT, 4459 .elem_len = 1, 4460 .elem_size = sizeof(struct qmi_response_type_v01), 4461 .array_type = NO_ARRAY, 4462 .tlv_type = 0x02, 4463 .offset = offsetof(struct 4464 wlfw_qdss_trace_mem_info_resp_msg_v01, 4465 resp), 4466 .ei_array = qmi_response_type_v01_ei, 4467 }, 4468 { 4469 .data_type = QMI_EOTI, 4470 .array_type = NO_ARRAY, 4471 .tlv_type = QMI_COMMON_TLV_TYPE, 4472 }, 4473 }; 4474 EXPORT_SYMBOL(wlfw_qdss_trace_mem_info_resp_msg_v01_ei); 4475 4476 struct qmi_elem_info wlfw_qdss_trace_save_ind_msg_v01_ei[] = { 4477 { 4478 .data_type = QMI_UNSIGNED_4_BYTE, 4479 .elem_len = 1, 4480 .elem_size = sizeof(u32), 4481 .array_type = NO_ARRAY, 4482 .tlv_type = 0x01, 4483 .offset = offsetof(struct 4484 wlfw_qdss_trace_save_ind_msg_v01, 4485 source), 4486 }, 4487 { 4488 .data_type = QMI_UNSIGNED_4_BYTE, 4489 .elem_len = 1, 4490 .elem_size = sizeof(u32), 4491 .array_type = NO_ARRAY, 4492 .tlv_type = 0x02, 4493 .offset = offsetof(struct 4494 wlfw_qdss_trace_save_ind_msg_v01, 4495 total_size), 4496 }, 4497 { 4498 .data_type = QMI_OPT_FLAG, 4499 .elem_len = 1, 4500 .elem_size = sizeof(u8), 4501 .array_type = NO_ARRAY, 4502 .tlv_type = 0x10, 4503 .offset = offsetof(struct 4504 wlfw_qdss_trace_save_ind_msg_v01, 4505 mem_seg_valid), 4506 }, 4507 { 4508 .data_type = QMI_DATA_LEN, 4509 .elem_len = 1, 4510 .elem_size = sizeof(u8), 4511 .array_type = NO_ARRAY, 4512 .tlv_type = 0x10, 4513 .offset = offsetof(struct 4514 wlfw_qdss_trace_save_ind_msg_v01, 4515 mem_seg_len), 4516 }, 4517 { 4518 .data_type = QMI_STRUCT, 4519 .elem_len = QMI_WLFW_MAX_NUM_MEM_SEG_V01, 4520 .elem_size = sizeof(struct wlfw_mem_seg_resp_s_v01), 4521 .array_type = VAR_LEN_ARRAY, 4522 .tlv_type = 0x10, 4523 .offset = offsetof(struct 4524 wlfw_qdss_trace_save_ind_msg_v01, 4525 mem_seg), 4526 .ei_array = wlfw_mem_seg_resp_s_v01_ei, 4527 }, 4528 { 4529 .data_type = QMI_OPT_FLAG, 4530 .elem_len = 1, 4531 .elem_size = sizeof(u8), 4532 .array_type = NO_ARRAY, 4533 .tlv_type = 0x11, 4534 .offset = offsetof(struct 4535 wlfw_qdss_trace_save_ind_msg_v01, 4536 file_name_valid), 4537 }, 4538 { 4539 .data_type = QMI_STRING, 4540 .elem_len = QMI_WLFW_MAX_STR_LEN_V01 + 1, 4541 .elem_size = sizeof(char), 4542 .array_type = NO_ARRAY, 4543 .tlv_type = 0x11, 4544 .offset = offsetof(struct 4545 wlfw_qdss_trace_save_ind_msg_v01, 4546 file_name), 4547 }, 4548 { 4549 .data_type = QMI_EOTI, 4550 .array_type = NO_ARRAY, 4551 .tlv_type = QMI_COMMON_TLV_TYPE, 4552 }, 4553 }; 4554 EXPORT_SYMBOL(wlfw_qdss_trace_save_ind_msg_v01_ei); 4555 4556 struct qmi_elem_info wlfw_qdss_trace_data_req_msg_v01_ei[] = { 4557 { 4558 .data_type = QMI_UNSIGNED_4_BYTE, 4559 .elem_len = 1, 4560 .elem_size = sizeof(u32), 4561 .array_type = NO_ARRAY, 4562 .tlv_type = 0x01, 4563 .offset = offsetof(struct 4564 wlfw_qdss_trace_data_req_msg_v01, 4565 seg_id), 4566 }, 4567 { 4568 .data_type = QMI_EOTI, 4569 .array_type = NO_ARRAY, 4570 .tlv_type = QMI_COMMON_TLV_TYPE, 4571 }, 4572 }; 4573 EXPORT_SYMBOL(wlfw_qdss_trace_data_req_msg_v01_ei); 4574 4575 struct qmi_elem_info wlfw_qdss_trace_data_resp_msg_v01_ei[] = { 4576 { 4577 .data_type = QMI_STRUCT, 4578 .elem_len = 1, 4579 .elem_size = sizeof(struct qmi_response_type_v01), 4580 .array_type = NO_ARRAY, 4581 .tlv_type = 0x02, 4582 .offset = offsetof(struct 4583 wlfw_qdss_trace_data_resp_msg_v01, 4584 resp), 4585 .ei_array = qmi_response_type_v01_ei, 4586 }, 4587 { 4588 .data_type = QMI_OPT_FLAG, 4589 .elem_len = 1, 4590 .elem_size = sizeof(u8), 4591 .array_type = NO_ARRAY, 4592 .tlv_type = 0x10, 4593 .offset = offsetof(struct 4594 wlfw_qdss_trace_data_resp_msg_v01, 4595 total_size_valid), 4596 }, 4597 { 4598 .data_type = QMI_UNSIGNED_4_BYTE, 4599 .elem_len = 1, 4600 .elem_size = sizeof(u32), 4601 .array_type = NO_ARRAY, 4602 .tlv_type = 0x10, 4603 .offset = offsetof(struct 4604 wlfw_qdss_trace_data_resp_msg_v01, 4605 total_size), 4606 }, 4607 { 4608 .data_type = QMI_OPT_FLAG, 4609 .elem_len = 1, 4610 .elem_size = sizeof(u8), 4611 .array_type = NO_ARRAY, 4612 .tlv_type = 0x11, 4613 .offset = offsetof(struct 4614 wlfw_qdss_trace_data_resp_msg_v01, 4615 seg_id_valid), 4616 }, 4617 { 4618 .data_type = QMI_UNSIGNED_4_BYTE, 4619 .elem_len = 1, 4620 .elem_size = sizeof(u32), 4621 .array_type = NO_ARRAY, 4622 .tlv_type = 0x11, 4623 .offset = offsetof(struct 4624 wlfw_qdss_trace_data_resp_msg_v01, 4625 seg_id), 4626 }, 4627 { 4628 .data_type = QMI_OPT_FLAG, 4629 .elem_len = 1, 4630 .elem_size = sizeof(u8), 4631 .array_type = NO_ARRAY, 4632 .tlv_type = 0x12, 4633 .offset = offsetof(struct 4634 wlfw_qdss_trace_data_resp_msg_v01, 4635 data_valid), 4636 }, 4637 { 4638 .data_type = QMI_DATA_LEN, 4639 .elem_len = 1, 4640 .elem_size = sizeof(u16), 4641 .array_type = NO_ARRAY, 4642 .tlv_type = 0x12, 4643 .offset = offsetof(struct 4644 wlfw_qdss_trace_data_resp_msg_v01, 4645 data_len), 4646 }, 4647 { 4648 .data_type = QMI_UNSIGNED_1_BYTE, 4649 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01, 4650 .elem_size = sizeof(u8), 4651 .array_type = VAR_LEN_ARRAY, 4652 .tlv_type = 0x12, 4653 .offset = offsetof(struct 4654 wlfw_qdss_trace_data_resp_msg_v01, 4655 data), 4656 }, 4657 { 4658 .data_type = QMI_OPT_FLAG, 4659 .elem_len = 1, 4660 .elem_size = sizeof(u8), 4661 .array_type = NO_ARRAY, 4662 .tlv_type = 0x13, 4663 .offset = offsetof(struct 4664 wlfw_qdss_trace_data_resp_msg_v01, 4665 end_valid), 4666 }, 4667 { 4668 .data_type = QMI_UNSIGNED_1_BYTE, 4669 .elem_len = 1, 4670 .elem_size = sizeof(u8), 4671 .array_type = NO_ARRAY, 4672 .tlv_type = 0x13, 4673 .offset = offsetof(struct 4674 wlfw_qdss_trace_data_resp_msg_v01, 4675 end), 4676 }, 4677 { 4678 .data_type = QMI_EOTI, 4679 .array_type = NO_ARRAY, 4680 .tlv_type = QMI_COMMON_TLV_TYPE, 4681 }, 4682 }; 4683 EXPORT_SYMBOL(wlfw_qdss_trace_data_resp_msg_v01_ei); 4684 4685 struct qmi_elem_info wlfw_qdss_trace_config_download_req_msg_v01_ei[] = { 4686 { 4687 .data_type = QMI_OPT_FLAG, 4688 .elem_len = 1, 4689 .elem_size = sizeof(u8), 4690 .array_type = NO_ARRAY, 4691 .tlv_type = 0x10, 4692 .offset = offsetof(struct 4693 wlfw_qdss_trace_config_download_req_msg_v01, 4694 total_size_valid), 4695 }, 4696 { 4697 .data_type = QMI_UNSIGNED_4_BYTE, 4698 .elem_len = 1, 4699 .elem_size = sizeof(u32), 4700 .array_type = NO_ARRAY, 4701 .tlv_type = 0x10, 4702 .offset = offsetof(struct 4703 wlfw_qdss_trace_config_download_req_msg_v01, 4704 total_size), 4705 }, 4706 { 4707 .data_type = QMI_OPT_FLAG, 4708 .elem_len = 1, 4709 .elem_size = sizeof(u8), 4710 .array_type = NO_ARRAY, 4711 .tlv_type = 0x11, 4712 .offset = offsetof(struct 4713 wlfw_qdss_trace_config_download_req_msg_v01, 4714 seg_id_valid), 4715 }, 4716 { 4717 .data_type = QMI_UNSIGNED_4_BYTE, 4718 .elem_len = 1, 4719 .elem_size = sizeof(u32), 4720 .array_type = NO_ARRAY, 4721 .tlv_type = 0x11, 4722 .offset = offsetof(struct 4723 wlfw_qdss_trace_config_download_req_msg_v01, 4724 seg_id), 4725 }, 4726 { 4727 .data_type = QMI_OPT_FLAG, 4728 .elem_len = 1, 4729 .elem_size = sizeof(u8), 4730 .array_type = NO_ARRAY, 4731 .tlv_type = 0x12, 4732 .offset = offsetof(struct 4733 wlfw_qdss_trace_config_download_req_msg_v01, 4734 data_valid), 4735 }, 4736 { 4737 .data_type = QMI_DATA_LEN, 4738 .elem_len = 1, 4739 .elem_size = sizeof(u16), 4740 .array_type = NO_ARRAY, 4741 .tlv_type = 0x12, 4742 .offset = offsetof(struct 4743 wlfw_qdss_trace_config_download_req_msg_v01, 4744 data_len), 4745 }, 4746 { 4747 .data_type = QMI_UNSIGNED_1_BYTE, 4748 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01, 4749 .elem_size = sizeof(u8), 4750 .array_type = VAR_LEN_ARRAY, 4751 .tlv_type = 0x12, 4752 .offset = offsetof(struct 4753 wlfw_qdss_trace_config_download_req_msg_v01, 4754 data), 4755 }, 4756 { 4757 .data_type = QMI_OPT_FLAG, 4758 .elem_len = 1, 4759 .elem_size = sizeof(u8), 4760 .array_type = NO_ARRAY, 4761 .tlv_type = 0x13, 4762 .offset = offsetof(struct 4763 wlfw_qdss_trace_config_download_req_msg_v01, 4764 end_valid), 4765 }, 4766 { 4767 .data_type = QMI_UNSIGNED_1_BYTE, 4768 .elem_len = 1, 4769 .elem_size = sizeof(u8), 4770 .array_type = NO_ARRAY, 4771 .tlv_type = 0x13, 4772 .offset = offsetof(struct 4773 wlfw_qdss_trace_config_download_req_msg_v01, 4774 end), 4775 }, 4776 { 4777 .data_type = QMI_EOTI, 4778 .array_type = NO_ARRAY, 4779 .tlv_type = QMI_COMMON_TLV_TYPE, 4780 }, 4781 }; 4782 EXPORT_SYMBOL(wlfw_qdss_trace_config_download_req_msg_v01_ei); 4783 4784 struct qmi_elem_info wlfw_qdss_trace_config_download_resp_msg_v01_ei[] = { 4785 { 4786 .data_type = QMI_STRUCT, 4787 .elem_len = 1, 4788 .elem_size = sizeof(struct qmi_response_type_v01), 4789 .array_type = NO_ARRAY, 4790 .tlv_type = 0x02, 4791 .offset = offsetof(struct 4792 wlfw_qdss_trace_config_download_resp_msg_v01, 4793 resp), 4794 .ei_array = qmi_response_type_v01_ei, 4795 }, 4796 { 4797 .data_type = QMI_EOTI, 4798 .array_type = NO_ARRAY, 4799 .tlv_type = QMI_COMMON_TLV_TYPE, 4800 }, 4801 }; 4802 EXPORT_SYMBOL(wlfw_qdss_trace_config_download_resp_msg_v01_ei); 4803 4804 struct qmi_elem_info wlfw_qdss_trace_mode_req_msg_v01_ei[] = { 4805 { 4806 .data_type = QMI_OPT_FLAG, 4807 .elem_len = 1, 4808 .elem_size = sizeof(u8), 4809 .array_type = NO_ARRAY, 4810 .tlv_type = 0x10, 4811 .offset = offsetof(struct 4812 wlfw_qdss_trace_mode_req_msg_v01, 4813 mode_valid), 4814 }, 4815 { 4816 .data_type = QMI_SIGNED_4_BYTE_ENUM, 4817 .elem_len = 1, 4818 .elem_size = sizeof(enum wlfw_qdss_trace_mode_enum_v01), 4819 .array_type = NO_ARRAY, 4820 .tlv_type = 0x10, 4821 .offset = offsetof(struct 4822 wlfw_qdss_trace_mode_req_msg_v01, 4823 mode), 4824 }, 4825 { 4826 .data_type = QMI_OPT_FLAG, 4827 .elem_len = 1, 4828 .elem_size = sizeof(u8), 4829 .array_type = NO_ARRAY, 4830 .tlv_type = 0x11, 4831 .offset = offsetof(struct 4832 wlfw_qdss_trace_mode_req_msg_v01, 4833 option_valid), 4834 }, 4835 { 4836 .data_type = QMI_UNSIGNED_8_BYTE, 4837 .elem_len = 1, 4838 .elem_size = sizeof(u64), 4839 .array_type = NO_ARRAY, 4840 .tlv_type = 0x11, 4841 .offset = offsetof(struct 4842 wlfw_qdss_trace_mode_req_msg_v01, 4843 option), 4844 }, 4845 { 4846 .data_type = QMI_OPT_FLAG, 4847 .elem_len = 1, 4848 .elem_size = sizeof(u8), 4849 .array_type = NO_ARRAY, 4850 .tlv_type = 0x12, 4851 .offset = offsetof(struct 4852 wlfw_qdss_trace_mode_req_msg_v01, 4853 hw_trc_disable_override_valid), 4854 }, 4855 { 4856 .data_type = QMI_SIGNED_4_BYTE_ENUM, 4857 .elem_len = 1, 4858 .elem_size = sizeof(enum wlfw_qmi_param_value_v01), 4859 .array_type = NO_ARRAY, 4860 .tlv_type = 0x12, 4861 .offset = offsetof(struct 4862 wlfw_qdss_trace_mode_req_msg_v01, 4863 hw_trc_disable_override), 4864 }, 4865 { 4866 .data_type = QMI_EOTI, 4867 .array_type = NO_ARRAY, 4868 .tlv_type = QMI_COMMON_TLV_TYPE, 4869 }, 4870 }; 4871 EXPORT_SYMBOL(wlfw_qdss_trace_mode_req_msg_v01_ei); 4872 4873 struct qmi_elem_info wlfw_qdss_trace_mode_resp_msg_v01_ei[] = { 4874 { 4875 .data_type = QMI_STRUCT, 4876 .elem_len = 1, 4877 .elem_size = sizeof(struct qmi_response_type_v01), 4878 .array_type = NO_ARRAY, 4879 .tlv_type = 0x02, 4880 .offset = offsetof(struct 4881 wlfw_qdss_trace_mode_resp_msg_v01, 4882 resp), 4883 .ei_array = qmi_response_type_v01_ei, 4884 }, 4885 { 4886 .data_type = QMI_EOTI, 4887 .array_type = NO_ARRAY, 4888 .tlv_type = QMI_COMMON_TLV_TYPE, 4889 }, 4890 }; 4891 EXPORT_SYMBOL(wlfw_qdss_trace_mode_resp_msg_v01_ei); 4892 4893 struct qmi_elem_info wlfw_qdss_trace_free_ind_msg_v01_ei[] = { 4894 { 4895 .data_type = QMI_OPT_FLAG, 4896 .elem_len = 1, 4897 .elem_size = sizeof(u8), 4898 .array_type = NO_ARRAY, 4899 .tlv_type = 0x10, 4900 .offset = offsetof(struct 4901 wlfw_qdss_trace_free_ind_msg_v01, 4902 mem_seg_valid), 4903 }, 4904 { 4905 .data_type = QMI_DATA_LEN, 4906 .elem_len = 1, 4907 .elem_size = sizeof(u8), 4908 .array_type = NO_ARRAY, 4909 .tlv_type = 0x10, 4910 .offset = offsetof(struct 4911 wlfw_qdss_trace_free_ind_msg_v01, 4912 mem_seg_len), 4913 }, 4914 { 4915 .data_type = QMI_STRUCT, 4916 .elem_len = QMI_WLFW_MAX_NUM_MEM_SEG_V01, 4917 .elem_size = sizeof(struct wlfw_mem_seg_resp_s_v01), 4918 .array_type = VAR_LEN_ARRAY, 4919 .tlv_type = 0x10, 4920 .offset = offsetof(struct 4921 wlfw_qdss_trace_free_ind_msg_v01, 4922 mem_seg), 4923 .ei_array = wlfw_mem_seg_resp_s_v01_ei, 4924 }, 4925 { 4926 .data_type = QMI_EOTI, 4927 .array_type = NO_ARRAY, 4928 .tlv_type = QMI_COMMON_TLV_TYPE, 4929 }, 4930 }; 4931 EXPORT_SYMBOL(wlfw_qdss_trace_free_ind_msg_v01_ei); 4932 4933 struct qmi_elem_info wlfw_shutdown_req_msg_v01_ei[] = { 4934 { 4935 .data_type = QMI_OPT_FLAG, 4936 .elem_len = 1, 4937 .elem_size = sizeof(u8), 4938 .array_type = NO_ARRAY, 4939 .tlv_type = 0x10, 4940 .offset = offsetof(struct 4941 wlfw_shutdown_req_msg_v01, 4942 shutdown_valid), 4943 }, 4944 { 4945 .data_type = QMI_UNSIGNED_1_BYTE, 4946 .elem_len = 1, 4947 .elem_size = sizeof(u8), 4948 .array_type = NO_ARRAY, 4949 .tlv_type = 0x10, 4950 .offset = offsetof(struct 4951 wlfw_shutdown_req_msg_v01, 4952 shutdown), 4953 }, 4954 { 4955 .data_type = QMI_EOTI, 4956 .array_type = NO_ARRAY, 4957 .tlv_type = QMI_COMMON_TLV_TYPE, 4958 }, 4959 }; 4960 EXPORT_SYMBOL(wlfw_shutdown_req_msg_v01_ei); 4961 4962 struct qmi_elem_info wlfw_shutdown_resp_msg_v01_ei[] = { 4963 { 4964 .data_type = QMI_STRUCT, 4965 .elem_len = 1, 4966 .elem_size = sizeof(struct qmi_response_type_v01), 4967 .array_type = NO_ARRAY, 4968 .tlv_type = 0x02, 4969 .offset = offsetof(struct 4970 wlfw_shutdown_resp_msg_v01, 4971 resp), 4972 .ei_array = qmi_response_type_v01_ei, 4973 }, 4974 { 4975 .data_type = QMI_EOTI, 4976 .array_type = NO_ARRAY, 4977 .tlv_type = QMI_COMMON_TLV_TYPE, 4978 }, 4979 }; 4980 EXPORT_SYMBOL(wlfw_shutdown_resp_msg_v01_ei); 4981 4982 struct qmi_elem_info wlfw_antenna_switch_req_msg_v01_ei[] = { 4983 { 4984 .data_type = QMI_EOTI, 4985 .array_type = NO_ARRAY, 4986 .tlv_type = QMI_COMMON_TLV_TYPE, 4987 }, 4988 }; 4989 EXPORT_SYMBOL(wlfw_antenna_switch_req_msg_v01_ei); 4990 4991 struct qmi_elem_info wlfw_antenna_switch_resp_msg_v01_ei[] = { 4992 { 4993 .data_type = QMI_STRUCT, 4994 .elem_len = 1, 4995 .elem_size = sizeof(struct qmi_response_type_v01), 4996 .array_type = NO_ARRAY, 4997 .tlv_type = 0x02, 4998 .offset = offsetof(struct 4999 wlfw_antenna_switch_resp_msg_v01, 5000 resp), 5001 .ei_array = qmi_response_type_v01_ei, 5002 }, 5003 { 5004 .data_type = QMI_OPT_FLAG, 5005 .elem_len = 1, 5006 .elem_size = sizeof(u8), 5007 .array_type = NO_ARRAY, 5008 .tlv_type = 0x10, 5009 .offset = offsetof(struct 5010 wlfw_antenna_switch_resp_msg_v01, 5011 antenna_valid), 5012 }, 5013 { 5014 .data_type = QMI_UNSIGNED_8_BYTE, 5015 .elem_len = 1, 5016 .elem_size = sizeof(u64), 5017 .array_type = NO_ARRAY, 5018 .tlv_type = 0x10, 5019 .offset = offsetof(struct 5020 wlfw_antenna_switch_resp_msg_v01, 5021 antenna), 5022 }, 5023 { 5024 .data_type = QMI_EOTI, 5025 .array_type = NO_ARRAY, 5026 .tlv_type = QMI_COMMON_TLV_TYPE, 5027 }, 5028 }; 5029 EXPORT_SYMBOL(wlfw_antenna_switch_resp_msg_v01_ei); 5030 5031 struct qmi_elem_info wlfw_antenna_grant_req_msg_v01_ei[] = { 5032 { 5033 .data_type = QMI_OPT_FLAG, 5034 .elem_len = 1, 5035 .elem_size = sizeof(u8), 5036 .array_type = NO_ARRAY, 5037 .tlv_type = 0x10, 5038 .offset = offsetof(struct 5039 wlfw_antenna_grant_req_msg_v01, 5040 grant_valid), 5041 }, 5042 { 5043 .data_type = QMI_UNSIGNED_8_BYTE, 5044 .elem_len = 1, 5045 .elem_size = sizeof(u64), 5046 .array_type = NO_ARRAY, 5047 .tlv_type = 0x10, 5048 .offset = offsetof(struct 5049 wlfw_antenna_grant_req_msg_v01, 5050 grant), 5051 }, 5052 { 5053 .data_type = QMI_EOTI, 5054 .array_type = NO_ARRAY, 5055 .tlv_type = QMI_COMMON_TLV_TYPE, 5056 }, 5057 }; 5058 EXPORT_SYMBOL(wlfw_antenna_grant_req_msg_v01_ei); 5059 5060 struct qmi_elem_info wlfw_antenna_grant_resp_msg_v01_ei[] = { 5061 { 5062 .data_type = QMI_STRUCT, 5063 .elem_len = 1, 5064 .elem_size = sizeof(struct qmi_response_type_v01), 5065 .array_type = NO_ARRAY, 5066 .tlv_type = 0x02, 5067 .offset = offsetof(struct 5068 wlfw_antenna_grant_resp_msg_v01, 5069 resp), 5070 .ei_array = qmi_response_type_v01_ei, 5071 }, 5072 { 5073 .data_type = QMI_EOTI, 5074 .array_type = NO_ARRAY, 5075 .tlv_type = QMI_COMMON_TLV_TYPE, 5076 }, 5077 }; 5078 EXPORT_SYMBOL(wlfw_antenna_grant_resp_msg_v01_ei); 5079 5080 struct qmi_elem_info wlfw_wfc_call_status_req_msg_v01_ei[] = { 5081 { 5082 .data_type = QMI_DATA_LEN, 5083 .elem_len = 1, 5084 .elem_size = sizeof(u16), 5085 .array_type = NO_ARRAY, 5086 .tlv_type = 0x01, 5087 .offset = offsetof(struct 5088 wlfw_wfc_call_status_req_msg_v01, 5089 wfc_call_status_len), 5090 }, 5091 { 5092 .data_type = QMI_UNSIGNED_1_BYTE, 5093 .elem_len = QMI_WLFW_MAX_WFC_CALL_STATUS_DATA_SIZE_V01, 5094 .elem_size = sizeof(u8), 5095 .array_type = VAR_LEN_ARRAY, 5096 .tlv_type = 0x01, 5097 .offset = offsetof(struct 5098 wlfw_wfc_call_status_req_msg_v01, 5099 wfc_call_status), 5100 }, 5101 { 5102 .data_type = QMI_OPT_FLAG, 5103 .elem_len = 1, 5104 .elem_size = sizeof(u8), 5105 .array_type = NO_ARRAY, 5106 .tlv_type = 0x10, 5107 .offset = offsetof(struct 5108 wlfw_wfc_call_status_req_msg_v01, 5109 wfc_call_active_valid), 5110 }, 5111 { 5112 .data_type = QMI_UNSIGNED_1_BYTE, 5113 .elem_len = 1, 5114 .elem_size = sizeof(u8), 5115 .array_type = NO_ARRAY, 5116 .tlv_type = 0x10, 5117 .offset = offsetof(struct 5118 wlfw_wfc_call_status_req_msg_v01, 5119 wfc_call_active), 5120 }, 5121 { 5122 .data_type = QMI_OPT_FLAG, 5123 .elem_len = 1, 5124 .elem_size = sizeof(u8), 5125 .array_type = NO_ARRAY, 5126 .tlv_type = 0x11, 5127 .offset = offsetof(struct 5128 wlfw_wfc_call_status_req_msg_v01, 5129 all_wfc_calls_held_valid), 5130 }, 5131 { 5132 .data_type = QMI_UNSIGNED_1_BYTE, 5133 .elem_len = 1, 5134 .elem_size = sizeof(u8), 5135 .array_type = NO_ARRAY, 5136 .tlv_type = 0x11, 5137 .offset = offsetof(struct 5138 wlfw_wfc_call_status_req_msg_v01, 5139 all_wfc_calls_held), 5140 }, 5141 { 5142 .data_type = QMI_OPT_FLAG, 5143 .elem_len = 1, 5144 .elem_size = sizeof(u8), 5145 .array_type = NO_ARRAY, 5146 .tlv_type = 0x12, 5147 .offset = offsetof(struct 5148 wlfw_wfc_call_status_req_msg_v01, 5149 is_wfc_emergency_valid), 5150 }, 5151 { 5152 .data_type = QMI_UNSIGNED_1_BYTE, 5153 .elem_len = 1, 5154 .elem_size = sizeof(u8), 5155 .array_type = NO_ARRAY, 5156 .tlv_type = 0x12, 5157 .offset = offsetof(struct 5158 wlfw_wfc_call_status_req_msg_v01, 5159 is_wfc_emergency), 5160 }, 5161 { 5162 .data_type = QMI_OPT_FLAG, 5163 .elem_len = 1, 5164 .elem_size = sizeof(u8), 5165 .array_type = NO_ARRAY, 5166 .tlv_type = 0x13, 5167 .offset = offsetof(struct 5168 wlfw_wfc_call_status_req_msg_v01, 5169 twt_ims_start_valid), 5170 }, 5171 { 5172 .data_type = QMI_UNSIGNED_8_BYTE, 5173 .elem_len = 1, 5174 .elem_size = sizeof(u64), 5175 .array_type = NO_ARRAY, 5176 .tlv_type = 0x13, 5177 .offset = offsetof(struct 5178 wlfw_wfc_call_status_req_msg_v01, 5179 twt_ims_start), 5180 }, 5181 { 5182 .data_type = QMI_OPT_FLAG, 5183 .elem_len = 1, 5184 .elem_size = sizeof(u8), 5185 .array_type = NO_ARRAY, 5186 .tlv_type = 0x14, 5187 .offset = offsetof(struct 5188 wlfw_wfc_call_status_req_msg_v01, 5189 twt_ims_int_valid), 5190 }, 5191 { 5192 .data_type = QMI_UNSIGNED_2_BYTE, 5193 .elem_len = 1, 5194 .elem_size = sizeof(u16), 5195 .array_type = NO_ARRAY, 5196 .tlv_type = 0x14, 5197 .offset = offsetof(struct 5198 wlfw_wfc_call_status_req_msg_v01, 5199 twt_ims_int), 5200 }, 5201 { 5202 .data_type = QMI_OPT_FLAG, 5203 .elem_len = 1, 5204 .elem_size = sizeof(u8), 5205 .array_type = NO_ARRAY, 5206 .tlv_type = 0x15, 5207 .offset = offsetof(struct 5208 wlfw_wfc_call_status_req_msg_v01, 5209 media_quality_valid), 5210 }, 5211 { 5212 .data_type = QMI_SIGNED_4_BYTE_ENUM, 5213 .elem_len = 1, 5214 .elem_size = sizeof(enum wlfw_wfc_media_quality_v01), 5215 .array_type = NO_ARRAY, 5216 .tlv_type = 0x15, 5217 .offset = offsetof(struct 5218 wlfw_wfc_call_status_req_msg_v01, 5219 media_quality), 5220 }, 5221 { 5222 .data_type = QMI_EOTI, 5223 .array_type = NO_ARRAY, 5224 .tlv_type = QMI_COMMON_TLV_TYPE, 5225 }, 5226 }; 5227 EXPORT_SYMBOL(wlfw_wfc_call_status_req_msg_v01_ei); 5228 5229 struct qmi_elem_info wlfw_wfc_call_status_resp_msg_v01_ei[] = { 5230 { 5231 .data_type = QMI_STRUCT, 5232 .elem_len = 1, 5233 .elem_size = sizeof(struct qmi_response_type_v01), 5234 .array_type = NO_ARRAY, 5235 .tlv_type = 0x02, 5236 .offset = offsetof(struct 5237 wlfw_wfc_call_status_resp_msg_v01, 5238 resp), 5239 .ei_array = qmi_response_type_v01_ei, 5240 }, 5241 { 5242 .data_type = QMI_EOTI, 5243 .array_type = NO_ARRAY, 5244 .tlv_type = QMI_COMMON_TLV_TYPE, 5245 }, 5246 }; 5247 EXPORT_SYMBOL(wlfw_wfc_call_status_resp_msg_v01_ei); 5248 5249 struct qmi_elem_info wlfw_get_info_req_msg_v01_ei[] = { 5250 { 5251 .data_type = QMI_UNSIGNED_1_BYTE, 5252 .elem_len = 1, 5253 .elem_size = sizeof(u8), 5254 .array_type = NO_ARRAY, 5255 .tlv_type = 0x01, 5256 .offset = offsetof(struct 5257 wlfw_get_info_req_msg_v01, 5258 type), 5259 }, 5260 { 5261 .data_type = QMI_DATA_LEN, 5262 .elem_len = 1, 5263 .elem_size = sizeof(u16), 5264 .array_type = NO_ARRAY, 5265 .tlv_type = 0x02, 5266 .offset = offsetof(struct 5267 wlfw_get_info_req_msg_v01, 5268 data_len), 5269 }, 5270 { 5271 .data_type = QMI_UNSIGNED_1_BYTE, 5272 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01, 5273 .elem_size = sizeof(u8), 5274 .array_type = VAR_LEN_ARRAY, 5275 .tlv_type = 0x02, 5276 .offset = offsetof(struct 5277 wlfw_get_info_req_msg_v01, 5278 data), 5279 }, 5280 { 5281 .data_type = QMI_EOTI, 5282 .array_type = NO_ARRAY, 5283 .tlv_type = QMI_COMMON_TLV_TYPE, 5284 }, 5285 }; 5286 EXPORT_SYMBOL(wlfw_get_info_req_msg_v01_ei); 5287 5288 struct qmi_elem_info wlfw_get_info_resp_msg_v01_ei[] = { 5289 { 5290 .data_type = QMI_STRUCT, 5291 .elem_len = 1, 5292 .elem_size = sizeof(struct qmi_response_type_v01), 5293 .array_type = NO_ARRAY, 5294 .tlv_type = 0x02, 5295 .offset = offsetof(struct 5296 wlfw_get_info_resp_msg_v01, 5297 resp), 5298 .ei_array = qmi_response_type_v01_ei, 5299 }, 5300 { 5301 .data_type = QMI_EOTI, 5302 .array_type = NO_ARRAY, 5303 .tlv_type = QMI_COMMON_TLV_TYPE, 5304 }, 5305 }; 5306 EXPORT_SYMBOL(wlfw_get_info_resp_msg_v01_ei); 5307 5308 struct qmi_elem_info wlfw_respond_get_info_ind_msg_v01_ei[] = { 5309 { 5310 .data_type = QMI_DATA_LEN, 5311 .elem_len = 1, 5312 .elem_size = sizeof(u16), 5313 .array_type = NO_ARRAY, 5314 .tlv_type = 0x01, 5315 .offset = offsetof(struct 5316 wlfw_respond_get_info_ind_msg_v01, 5317 data_len), 5318 }, 5319 { 5320 .data_type = QMI_UNSIGNED_1_BYTE, 5321 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01, 5322 .elem_size = sizeof(u8), 5323 .array_type = VAR_LEN_ARRAY, 5324 .tlv_type = 0x01, 5325 .offset = offsetof(struct 5326 wlfw_respond_get_info_ind_msg_v01, 5327 data), 5328 }, 5329 { 5330 .data_type = QMI_OPT_FLAG, 5331 .elem_len = 1, 5332 .elem_size = sizeof(u8), 5333 .array_type = NO_ARRAY, 5334 .tlv_type = 0x10, 5335 .offset = offsetof(struct 5336 wlfw_respond_get_info_ind_msg_v01, 5337 type_valid), 5338 }, 5339 { 5340 .data_type = QMI_UNSIGNED_1_BYTE, 5341 .elem_len = 1, 5342 .elem_size = sizeof(u8), 5343 .array_type = NO_ARRAY, 5344 .tlv_type = 0x10, 5345 .offset = offsetof(struct 5346 wlfw_respond_get_info_ind_msg_v01, 5347 type), 5348 }, 5349 { 5350 .data_type = QMI_OPT_FLAG, 5351 .elem_len = 1, 5352 .elem_size = sizeof(u8), 5353 .array_type = NO_ARRAY, 5354 .tlv_type = 0x11, 5355 .offset = offsetof(struct 5356 wlfw_respond_get_info_ind_msg_v01, 5357 is_last_valid), 5358 }, 5359 { 5360 .data_type = QMI_UNSIGNED_1_BYTE, 5361 .elem_len = 1, 5362 .elem_size = sizeof(u8), 5363 .array_type = NO_ARRAY, 5364 .tlv_type = 0x11, 5365 .offset = offsetof(struct 5366 wlfw_respond_get_info_ind_msg_v01, 5367 is_last), 5368 }, 5369 { 5370 .data_type = QMI_OPT_FLAG, 5371 .elem_len = 1, 5372 .elem_size = sizeof(u8), 5373 .array_type = NO_ARRAY, 5374 .tlv_type = 0x12, 5375 .offset = offsetof(struct 5376 wlfw_respond_get_info_ind_msg_v01, 5377 seq_no_valid), 5378 }, 5379 { 5380 .data_type = QMI_UNSIGNED_4_BYTE, 5381 .elem_len = 1, 5382 .elem_size = sizeof(u32), 5383 .array_type = NO_ARRAY, 5384 .tlv_type = 0x12, 5385 .offset = offsetof(struct 5386 wlfw_respond_get_info_ind_msg_v01, 5387 seq_no), 5388 }, 5389 { 5390 .data_type = QMI_EOTI, 5391 .array_type = NO_ARRAY, 5392 .tlv_type = QMI_COMMON_TLV_TYPE, 5393 }, 5394 }; 5395 EXPORT_SYMBOL(wlfw_respond_get_info_ind_msg_v01_ei); 5396 5397 struct qmi_elem_info wlfw_device_info_req_msg_v01_ei[] = { 5398 { 5399 .data_type = QMI_EOTI, 5400 .array_type = NO_ARRAY, 5401 .tlv_type = QMI_COMMON_TLV_TYPE, 5402 }, 5403 }; 5404 EXPORT_SYMBOL(wlfw_device_info_req_msg_v01_ei); 5405 5406 struct qmi_elem_info wlfw_device_info_resp_msg_v01_ei[] = { 5407 { 5408 .data_type = QMI_STRUCT, 5409 .elem_len = 1, 5410 .elem_size = sizeof(struct qmi_response_type_v01), 5411 .array_type = NO_ARRAY, 5412 .tlv_type = 0x02, 5413 .offset = offsetof(struct 5414 wlfw_device_info_resp_msg_v01, 5415 resp), 5416 .ei_array = qmi_response_type_v01_ei, 5417 }, 5418 { 5419 .data_type = QMI_OPT_FLAG, 5420 .elem_len = 1, 5421 .elem_size = sizeof(u8), 5422 .array_type = NO_ARRAY, 5423 .tlv_type = 0x10, 5424 .offset = offsetof(struct 5425 wlfw_device_info_resp_msg_v01, 5426 bar_addr_valid), 5427 }, 5428 { 5429 .data_type = QMI_UNSIGNED_8_BYTE, 5430 .elem_len = 1, 5431 .elem_size = sizeof(u64), 5432 .array_type = NO_ARRAY, 5433 .tlv_type = 0x10, 5434 .offset = offsetof(struct 5435 wlfw_device_info_resp_msg_v01, 5436 bar_addr), 5437 }, 5438 { 5439 .data_type = QMI_OPT_FLAG, 5440 .elem_len = 1, 5441 .elem_size = sizeof(u8), 5442 .array_type = NO_ARRAY, 5443 .tlv_type = 0x11, 5444 .offset = offsetof(struct 5445 wlfw_device_info_resp_msg_v01, 5446 bar_size_valid), 5447 }, 5448 { 5449 .data_type = QMI_UNSIGNED_4_BYTE, 5450 .elem_len = 1, 5451 .elem_size = sizeof(u32), 5452 .array_type = NO_ARRAY, 5453 .tlv_type = 0x11, 5454 .offset = offsetof(struct 5455 wlfw_device_info_resp_msg_v01, 5456 bar_size), 5457 }, 5458 { 5459 .data_type = QMI_OPT_FLAG, 5460 .elem_len = 1, 5461 .elem_size = sizeof(u8), 5462 .array_type = NO_ARRAY, 5463 .tlv_type = 0x12, 5464 .offset = offsetof(struct 5465 wlfw_device_info_resp_msg_v01, 5466 mhi_state_info_addr_valid), 5467 }, 5468 { 5469 .data_type = QMI_UNSIGNED_8_BYTE, 5470 .elem_len = 1, 5471 .elem_size = sizeof(u64), 5472 .array_type = NO_ARRAY, 5473 .tlv_type = 0x12, 5474 .offset = offsetof(struct 5475 wlfw_device_info_resp_msg_v01, 5476 mhi_state_info_addr), 5477 }, 5478 { 5479 .data_type = QMI_OPT_FLAG, 5480 .elem_len = 1, 5481 .elem_size = sizeof(u8), 5482 .array_type = NO_ARRAY, 5483 .tlv_type = 0x13, 5484 .offset = offsetof(struct 5485 wlfw_device_info_resp_msg_v01, 5486 mhi_state_info_size_valid), 5487 }, 5488 { 5489 .data_type = QMI_UNSIGNED_4_BYTE, 5490 .elem_len = 1, 5491 .elem_size = sizeof(u32), 5492 .array_type = NO_ARRAY, 5493 .tlv_type = 0x13, 5494 .offset = offsetof(struct 5495 wlfw_device_info_resp_msg_v01, 5496 mhi_state_info_size), 5497 }, 5498 { 5499 .data_type = QMI_EOTI, 5500 .array_type = NO_ARRAY, 5501 .tlv_type = QMI_COMMON_TLV_TYPE, 5502 }, 5503 }; 5504 EXPORT_SYMBOL(wlfw_device_info_resp_msg_v01_ei); 5505 5506 struct qmi_elem_info wlfw_m3_dump_upload_req_ind_msg_v01_ei[] = { 5507 { 5508 .data_type = QMI_UNSIGNED_4_BYTE, 5509 .elem_len = 1, 5510 .elem_size = sizeof(u32), 5511 .array_type = NO_ARRAY, 5512 .tlv_type = 0x01, 5513 .offset = offsetof(struct 5514 wlfw_m3_dump_upload_req_ind_msg_v01, 5515 pdev_id), 5516 }, 5517 { 5518 .data_type = QMI_UNSIGNED_8_BYTE, 5519 .elem_len = 1, 5520 .elem_size = sizeof(u64), 5521 .array_type = NO_ARRAY, 5522 .tlv_type = 0x02, 5523 .offset = offsetof(struct 5524 wlfw_m3_dump_upload_req_ind_msg_v01, 5525 addr), 5526 }, 5527 { 5528 .data_type = QMI_UNSIGNED_8_BYTE, 5529 .elem_len = 1, 5530 .elem_size = sizeof(u64), 5531 .array_type = NO_ARRAY, 5532 .tlv_type = 0x03, 5533 .offset = offsetof(struct 5534 wlfw_m3_dump_upload_req_ind_msg_v01, 5535 size), 5536 }, 5537 { 5538 .data_type = QMI_EOTI, 5539 .array_type = NO_ARRAY, 5540 .tlv_type = QMI_COMMON_TLV_TYPE, 5541 }, 5542 }; 5543 EXPORT_SYMBOL(wlfw_m3_dump_upload_req_ind_msg_v01_ei); 5544 5545 struct qmi_elem_info wlfw_m3_dump_upload_done_req_msg_v01_ei[] = { 5546 { 5547 .data_type = QMI_UNSIGNED_4_BYTE, 5548 .elem_len = 1, 5549 .elem_size = sizeof(u32), 5550 .array_type = NO_ARRAY, 5551 .tlv_type = 0x01, 5552 .offset = offsetof(struct 5553 wlfw_m3_dump_upload_done_req_msg_v01, 5554 pdev_id), 5555 }, 5556 { 5557 .data_type = QMI_UNSIGNED_4_BYTE, 5558 .elem_len = 1, 5559 .elem_size = sizeof(u32), 5560 .array_type = NO_ARRAY, 5561 .tlv_type = 0x02, 5562 .offset = offsetof(struct 5563 wlfw_m3_dump_upload_done_req_msg_v01, 5564 status), 5565 }, 5566 { 5567 .data_type = QMI_EOTI, 5568 .array_type = NO_ARRAY, 5569 .tlv_type = QMI_COMMON_TLV_TYPE, 5570 }, 5571 }; 5572 EXPORT_SYMBOL(wlfw_m3_dump_upload_done_req_msg_v01_ei); 5573 5574 struct qmi_elem_info wlfw_m3_dump_upload_done_resp_msg_v01_ei[] = { 5575 { 5576 .data_type = QMI_STRUCT, 5577 .elem_len = 1, 5578 .elem_size = sizeof(struct qmi_response_type_v01), 5579 .array_type = NO_ARRAY, 5580 .tlv_type = 0x02, 5581 .offset = offsetof(struct 5582 wlfw_m3_dump_upload_done_resp_msg_v01, 5583 resp), 5584 .ei_array = qmi_response_type_v01_ei, 5585 }, 5586 { 5587 .data_type = QMI_EOTI, 5588 .array_type = NO_ARRAY, 5589 .tlv_type = QMI_COMMON_TLV_TYPE, 5590 }, 5591 }; 5592 EXPORT_SYMBOL(wlfw_m3_dump_upload_done_resp_msg_v01_ei); 5593 5594 struct qmi_elem_info wlfw_soc_wake_req_msg_v01_ei[] = { 5595 { 5596 .data_type = QMI_OPT_FLAG, 5597 .elem_len = 1, 5598 .elem_size = sizeof(u8), 5599 .array_type = NO_ARRAY, 5600 .tlv_type = 0x10, 5601 .offset = offsetof(struct 5602 wlfw_soc_wake_req_msg_v01, 5603 wake_valid), 5604 }, 5605 { 5606 .data_type = QMI_SIGNED_4_BYTE_ENUM, 5607 .elem_len = 1, 5608 .elem_size = sizeof(enum wlfw_soc_wake_enum_v01), 5609 .array_type = NO_ARRAY, 5610 .tlv_type = 0x10, 5611 .offset = offsetof(struct 5612 wlfw_soc_wake_req_msg_v01, 5613 wake), 5614 }, 5615 { 5616 .data_type = QMI_EOTI, 5617 .array_type = NO_ARRAY, 5618 .tlv_type = QMI_COMMON_TLV_TYPE, 5619 }, 5620 }; 5621 EXPORT_SYMBOL(wlfw_soc_wake_req_msg_v01_ei); 5622 5623 struct qmi_elem_info wlfw_soc_wake_resp_msg_v01_ei[] = { 5624 { 5625 .data_type = QMI_STRUCT, 5626 .elem_len = 1, 5627 .elem_size = sizeof(struct qmi_response_type_v01), 5628 .array_type = NO_ARRAY, 5629 .tlv_type = 0x02, 5630 .offset = offsetof(struct 5631 wlfw_soc_wake_resp_msg_v01, 5632 resp), 5633 .ei_array = qmi_response_type_v01_ei, 5634 }, 5635 { 5636 .data_type = QMI_EOTI, 5637 .array_type = NO_ARRAY, 5638 .tlv_type = QMI_COMMON_TLV_TYPE, 5639 }, 5640 }; 5641 EXPORT_SYMBOL(wlfw_soc_wake_resp_msg_v01_ei); 5642 5643 struct qmi_elem_info wlfw_power_save_req_msg_v01_ei[] = { 5644 { 5645 .data_type = QMI_OPT_FLAG, 5646 .elem_len = 1, 5647 .elem_size = sizeof(u8), 5648 .array_type = NO_ARRAY, 5649 .tlv_type = 0x10, 5650 .offset = offsetof(struct 5651 wlfw_power_save_req_msg_v01, 5652 power_save_mode_valid), 5653 }, 5654 { 5655 .data_type = QMI_SIGNED_4_BYTE_ENUM, 5656 .elem_len = 1, 5657 .elem_size = sizeof(enum wlfw_power_save_mode_v01), 5658 .array_type = NO_ARRAY, 5659 .tlv_type = 0x10, 5660 .offset = offsetof(struct 5661 wlfw_power_save_req_msg_v01, 5662 power_save_mode), 5663 }, 5664 { 5665 .data_type = QMI_EOTI, 5666 .array_type = NO_ARRAY, 5667 .tlv_type = QMI_COMMON_TLV_TYPE, 5668 }, 5669 }; 5670 EXPORT_SYMBOL(wlfw_power_save_req_msg_v01_ei); 5671 5672 struct qmi_elem_info wlfw_power_save_resp_msg_v01_ei[] = { 5673 { 5674 .data_type = QMI_STRUCT, 5675 .elem_len = 1, 5676 .elem_size = sizeof(struct qmi_response_type_v01), 5677 .array_type = NO_ARRAY, 5678 .tlv_type = 0x02, 5679 .offset = offsetof(struct 5680 wlfw_power_save_resp_msg_v01, 5681 resp), 5682 .ei_array = qmi_response_type_v01_ei, 5683 }, 5684 { 5685 .data_type = QMI_EOTI, 5686 .array_type = NO_ARRAY, 5687 .tlv_type = QMI_COMMON_TLV_TYPE, 5688 }, 5689 }; 5690 EXPORT_SYMBOL(wlfw_power_save_resp_msg_v01_ei); 5691 5692 struct qmi_elem_info wlfw_wfc_call_twt_config_ind_msg_v01_ei[] = { 5693 { 5694 .data_type = QMI_OPT_FLAG, 5695 .elem_len = 1, 5696 .elem_size = sizeof(u8), 5697 .array_type = NO_ARRAY, 5698 .tlv_type = 0x10, 5699 .offset = offsetof(struct 5700 wlfw_wfc_call_twt_config_ind_msg_v01, 5701 twt_sta_start_valid), 5702 }, 5703 { 5704 .data_type = QMI_UNSIGNED_8_BYTE, 5705 .elem_len = 1, 5706 .elem_size = sizeof(u64), 5707 .array_type = NO_ARRAY, 5708 .tlv_type = 0x10, 5709 .offset = offsetof(struct 5710 wlfw_wfc_call_twt_config_ind_msg_v01, 5711 twt_sta_start), 5712 }, 5713 { 5714 .data_type = QMI_OPT_FLAG, 5715 .elem_len = 1, 5716 .elem_size = sizeof(u8), 5717 .array_type = NO_ARRAY, 5718 .tlv_type = 0x11, 5719 .offset = offsetof(struct 5720 wlfw_wfc_call_twt_config_ind_msg_v01, 5721 twt_sta_int_valid), 5722 }, 5723 { 5724 .data_type = QMI_UNSIGNED_2_BYTE, 5725 .elem_len = 1, 5726 .elem_size = sizeof(u16), 5727 .array_type = NO_ARRAY, 5728 .tlv_type = 0x11, 5729 .offset = offsetof(struct 5730 wlfw_wfc_call_twt_config_ind_msg_v01, 5731 twt_sta_int), 5732 }, 5733 { 5734 .data_type = QMI_OPT_FLAG, 5735 .elem_len = 1, 5736 .elem_size = sizeof(u8), 5737 .array_type = NO_ARRAY, 5738 .tlv_type = 0x12, 5739 .offset = offsetof(struct 5740 wlfw_wfc_call_twt_config_ind_msg_v01, 5741 twt_sta_upo_valid), 5742 }, 5743 { 5744 .data_type = QMI_UNSIGNED_2_BYTE, 5745 .elem_len = 1, 5746 .elem_size = sizeof(u16), 5747 .array_type = NO_ARRAY, 5748 .tlv_type = 0x12, 5749 .offset = offsetof(struct 5750 wlfw_wfc_call_twt_config_ind_msg_v01, 5751 twt_sta_upo), 5752 }, 5753 { 5754 .data_type = QMI_OPT_FLAG, 5755 .elem_len = 1, 5756 .elem_size = sizeof(u8), 5757 .array_type = NO_ARRAY, 5758 .tlv_type = 0x13, 5759 .offset = offsetof(struct 5760 wlfw_wfc_call_twt_config_ind_msg_v01, 5761 twt_sta_sp_valid), 5762 }, 5763 { 5764 .data_type = QMI_UNSIGNED_2_BYTE, 5765 .elem_len = 1, 5766 .elem_size = sizeof(u16), 5767 .array_type = NO_ARRAY, 5768 .tlv_type = 0x13, 5769 .offset = offsetof(struct 5770 wlfw_wfc_call_twt_config_ind_msg_v01, 5771 twt_sta_sp), 5772 }, 5773 { 5774 .data_type = QMI_OPT_FLAG, 5775 .elem_len = 1, 5776 .elem_size = sizeof(u8), 5777 .array_type = NO_ARRAY, 5778 .tlv_type = 0x14, 5779 .offset = offsetof(struct 5780 wlfw_wfc_call_twt_config_ind_msg_v01, 5781 twt_sta_dl_valid), 5782 }, 5783 { 5784 .data_type = QMI_UNSIGNED_2_BYTE, 5785 .elem_len = 1, 5786 .elem_size = sizeof(u16), 5787 .array_type = NO_ARRAY, 5788 .tlv_type = 0x14, 5789 .offset = offsetof(struct 5790 wlfw_wfc_call_twt_config_ind_msg_v01, 5791 twt_sta_dl), 5792 }, 5793 { 5794 .data_type = QMI_OPT_FLAG, 5795 .elem_len = 1, 5796 .elem_size = sizeof(u8), 5797 .array_type = NO_ARRAY, 5798 .tlv_type = 0x15, 5799 .offset = offsetof(struct 5800 wlfw_wfc_call_twt_config_ind_msg_v01, 5801 twt_sta_config_changed_valid), 5802 }, 5803 { 5804 .data_type = QMI_UNSIGNED_1_BYTE, 5805 .elem_len = 1, 5806 .elem_size = sizeof(u8), 5807 .array_type = NO_ARRAY, 5808 .tlv_type = 0x15, 5809 .offset = offsetof(struct 5810 wlfw_wfc_call_twt_config_ind_msg_v01, 5811 twt_sta_config_changed), 5812 }, 5813 { 5814 .data_type = QMI_EOTI, 5815 .array_type = NO_ARRAY, 5816 .tlv_type = QMI_COMMON_TLV_TYPE, 5817 }, 5818 }; 5819 EXPORT_SYMBOL(wlfw_wfc_call_twt_config_ind_msg_v01_ei); 5820 5821 struct qmi_elem_info wlfw_qdss_mem_ready_ind_msg_v01_ei[] = { 5822 { 5823 .data_type = QMI_EOTI, 5824 .array_type = NO_ARRAY, 5825 .tlv_type = QMI_COMMON_TLV_TYPE, 5826 }, 5827 }; 5828 EXPORT_SYMBOL(wlfw_qdss_mem_ready_ind_msg_v01_ei); 5829 5830 struct qmi_elem_info wlfw_pcie_gen_switch_req_msg_v01_ei[] = { 5831 { 5832 .data_type = QMI_SIGNED_4_BYTE_ENUM, 5833 .elem_len = 1, 5834 .elem_size = sizeof(enum wlfw_pcie_gen_speed_v01), 5835 .array_type = NO_ARRAY, 5836 .tlv_type = 0x01, 5837 .offset = offsetof(struct 5838 wlfw_pcie_gen_switch_req_msg_v01, 5839 pcie_speed), 5840 }, 5841 { 5842 .data_type = QMI_EOTI, 5843 .array_type = NO_ARRAY, 5844 .tlv_type = QMI_COMMON_TLV_TYPE, 5845 }, 5846 }; 5847 EXPORT_SYMBOL(wlfw_pcie_gen_switch_req_msg_v01_ei); 5848 5849 struct qmi_elem_info wlfw_pcie_gen_switch_resp_msg_v01_ei[] = { 5850 { 5851 .data_type = QMI_STRUCT, 5852 .elem_len = 1, 5853 .elem_size = sizeof(struct qmi_response_type_v01), 5854 .array_type = NO_ARRAY, 5855 .tlv_type = 0x02, 5856 .offset = offsetof(struct 5857 wlfw_pcie_gen_switch_resp_msg_v01, 5858 resp), 5859 .ei_array = qmi_response_type_v01_ei, 5860 }, 5861 { 5862 .data_type = QMI_EOTI, 5863 .array_type = NO_ARRAY, 5864 .tlv_type = QMI_COMMON_TLV_TYPE, 5865 }, 5866 }; 5867 EXPORT_SYMBOL(wlfw_pcie_gen_switch_resp_msg_v01_ei); 5868 5869 struct qmi_elem_info wlfw_m3_dump_upload_segments_req_ind_msg_v01_ei[] = { 5870 { 5871 .data_type = QMI_UNSIGNED_4_BYTE, 5872 .elem_len = 1, 5873 .elem_size = sizeof(u32), 5874 .array_type = NO_ARRAY, 5875 .tlv_type = 0x01, 5876 .offset = offsetof(struct 5877 wlfw_m3_dump_upload_segments_req_ind_msg_v01, 5878 pdev_id), 5879 }, 5880 { 5881 .data_type = QMI_UNSIGNED_4_BYTE, 5882 .elem_len = 1, 5883 .elem_size = sizeof(u32), 5884 .array_type = NO_ARRAY, 5885 .tlv_type = 0x02, 5886 .offset = offsetof(struct 5887 wlfw_m3_dump_upload_segments_req_ind_msg_v01, 5888 no_of_valid_segments), 5889 }, 5890 { 5891 .data_type = QMI_STRUCT, 5892 .elem_len = QMI_WLFW_MAX_M3_SEGMENTS_SIZE_V01, 5893 .elem_size = sizeof(struct wlfw_m3_segment_info_s_v01), 5894 .array_type = STATIC_ARRAY, 5895 .tlv_type = 0x03, 5896 .offset = offsetof(struct 5897 wlfw_m3_dump_upload_segments_req_ind_msg_v01, 5898 m3_segment), 5899 .ei_array = wlfw_m3_segment_info_s_v01_ei, 5900 }, 5901 { 5902 .data_type = QMI_EOTI, 5903 .array_type = NO_ARRAY, 5904 .tlv_type = QMI_COMMON_TLV_TYPE, 5905 }, 5906 }; 5907 EXPORT_SYMBOL(wlfw_m3_dump_upload_segments_req_ind_msg_v01_ei); 5908 5909 struct qmi_elem_info wlfw_subsys_restart_level_req_msg_v01_ei[] = { 5910 { 5911 .data_type = QMI_OPT_FLAG, 5912 .elem_len = 1, 5913 .elem_size = sizeof(u8), 5914 .array_type = NO_ARRAY, 5915 .tlv_type = 0x10, 5916 .offset = offsetof(struct 5917 wlfw_subsys_restart_level_req_msg_v01, 5918 restart_level_type_valid), 5919 }, 5920 { 5921 .data_type = QMI_UNSIGNED_1_BYTE, 5922 .elem_len = 1, 5923 .elem_size = sizeof(u8), 5924 .array_type = NO_ARRAY, 5925 .tlv_type = 0x10, 5926 .offset = offsetof(struct 5927 wlfw_subsys_restart_level_req_msg_v01, 5928 restart_level_type), 5929 }, 5930 { 5931 .data_type = QMI_EOTI, 5932 .array_type = NO_ARRAY, 5933 .tlv_type = QMI_COMMON_TLV_TYPE, 5934 }, 5935 }; 5936 EXPORT_SYMBOL(wlfw_subsys_restart_level_req_msg_v01_ei); 5937 5938 struct qmi_elem_info wlfw_subsys_restart_level_resp_msg_v01_ei[] = { 5939 { 5940 .data_type = QMI_STRUCT, 5941 .elem_len = 1, 5942 .elem_size = sizeof(struct qmi_response_type_v01), 5943 .array_type = NO_ARRAY, 5944 .tlv_type = 0x02, 5945 .offset = offsetof(struct 5946 wlfw_subsys_restart_level_resp_msg_v01, 5947 resp), 5948 .ei_array = qmi_response_type_v01_ei, 5949 }, 5950 { 5951 .data_type = QMI_EOTI, 5952 .array_type = NO_ARRAY, 5953 .tlv_type = QMI_COMMON_TLV_TYPE, 5954 }, 5955 }; 5956 EXPORT_SYMBOL(wlfw_subsys_restart_level_resp_msg_v01_ei); 5957 5958 struct qmi_elem_info wlfw_ini_file_download_req_msg_v01_ei[] = { 5959 { 5960 .data_type = QMI_OPT_FLAG, 5961 .elem_len = 1, 5962 .elem_size = sizeof(u8), 5963 .array_type = NO_ARRAY, 5964 .tlv_type = 0x10, 5965 .offset = offsetof(struct 5966 wlfw_ini_file_download_req_msg_v01, 5967 file_type_valid), 5968 }, 5969 { 5970 .data_type = QMI_SIGNED_4_BYTE_ENUM, 5971 .elem_len = 1, 5972 .elem_size = sizeof(enum wlfw_ini_file_type_v01), 5973 .array_type = NO_ARRAY, 5974 .tlv_type = 0x10, 5975 .offset = offsetof(struct 5976 wlfw_ini_file_download_req_msg_v01, 5977 file_type), 5978 }, 5979 { 5980 .data_type = QMI_OPT_FLAG, 5981 .elem_len = 1, 5982 .elem_size = sizeof(u8), 5983 .array_type = NO_ARRAY, 5984 .tlv_type = 0x11, 5985 .offset = offsetof(struct 5986 wlfw_ini_file_download_req_msg_v01, 5987 total_size_valid), 5988 }, 5989 { 5990 .data_type = QMI_UNSIGNED_4_BYTE, 5991 .elem_len = 1, 5992 .elem_size = sizeof(u32), 5993 .array_type = NO_ARRAY, 5994 .tlv_type = 0x11, 5995 .offset = offsetof(struct 5996 wlfw_ini_file_download_req_msg_v01, 5997 total_size), 5998 }, 5999 { 6000 .data_type = QMI_OPT_FLAG, 6001 .elem_len = 1, 6002 .elem_size = sizeof(u8), 6003 .array_type = NO_ARRAY, 6004 .tlv_type = 0x12, 6005 .offset = offsetof(struct 6006 wlfw_ini_file_download_req_msg_v01, 6007 seg_id_valid), 6008 }, 6009 { 6010 .data_type = QMI_UNSIGNED_4_BYTE, 6011 .elem_len = 1, 6012 .elem_size = sizeof(u32), 6013 .array_type = NO_ARRAY, 6014 .tlv_type = 0x12, 6015 .offset = offsetof(struct 6016 wlfw_ini_file_download_req_msg_v01, 6017 seg_id), 6018 }, 6019 { 6020 .data_type = QMI_OPT_FLAG, 6021 .elem_len = 1, 6022 .elem_size = sizeof(u8), 6023 .array_type = NO_ARRAY, 6024 .tlv_type = 0x13, 6025 .offset = offsetof(struct 6026 wlfw_ini_file_download_req_msg_v01, 6027 data_valid), 6028 }, 6029 { 6030 .data_type = QMI_DATA_LEN, 6031 .elem_len = 1, 6032 .elem_size = sizeof(u16), 6033 .array_type = NO_ARRAY, 6034 .tlv_type = 0x13, 6035 .offset = offsetof(struct 6036 wlfw_ini_file_download_req_msg_v01, 6037 data_len), 6038 }, 6039 { 6040 .data_type = QMI_UNSIGNED_1_BYTE, 6041 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01, 6042 .elem_size = sizeof(u8), 6043 .array_type = VAR_LEN_ARRAY, 6044 .tlv_type = 0x13, 6045 .offset = offsetof(struct 6046 wlfw_ini_file_download_req_msg_v01, 6047 data), 6048 }, 6049 { 6050 .data_type = QMI_OPT_FLAG, 6051 .elem_len = 1, 6052 .elem_size = sizeof(u8), 6053 .array_type = NO_ARRAY, 6054 .tlv_type = 0x14, 6055 .offset = offsetof(struct 6056 wlfw_ini_file_download_req_msg_v01, 6057 end_valid), 6058 }, 6059 { 6060 .data_type = QMI_UNSIGNED_1_BYTE, 6061 .elem_len = 1, 6062 .elem_size = sizeof(u8), 6063 .array_type = NO_ARRAY, 6064 .tlv_type = 0x14, 6065 .offset = offsetof(struct 6066 wlfw_ini_file_download_req_msg_v01, 6067 end), 6068 }, 6069 { 6070 .data_type = QMI_EOTI, 6071 .array_type = NO_ARRAY, 6072 .tlv_type = QMI_COMMON_TLV_TYPE, 6073 }, 6074 }; 6075 EXPORT_SYMBOL(wlfw_ini_file_download_req_msg_v01_ei); 6076 6077 struct qmi_elem_info wlfw_ini_file_download_resp_msg_v01_ei[] = { 6078 { 6079 .data_type = QMI_STRUCT, 6080 .elem_len = 1, 6081 .elem_size = sizeof(struct qmi_response_type_v01), 6082 .array_type = NO_ARRAY, 6083 .tlv_type = 0x02, 6084 .offset = offsetof(struct 6085 wlfw_ini_file_download_resp_msg_v01, 6086 resp), 6087 .ei_array = qmi_response_type_v01_ei, 6088 }, 6089 { 6090 .data_type = QMI_EOTI, 6091 .array_type = NO_ARRAY, 6092 .tlv_type = QMI_COMMON_TLV_TYPE, 6093 }, 6094 }; 6095 EXPORT_SYMBOL(wlfw_ini_file_download_resp_msg_v01_ei); 6096 6097 /** 6098 * wlfw_is_valid_dt_node_found - Check if valid device tree node present 6099 * 6100 * Valid device tree node means a node with "qcom,wlan" property present and 6101 * "status" property not disabled. 6102 * 6103 * Return: true if valid device tree node found, false if not found 6104 */ 6105 static bool wlfw_is_valid_dt_node_found(void) 6106 { 6107 struct device_node *dn = NULL; 6108 6109 for_each_node_with_property(dn, "qcom,wlan") { 6110 if (of_device_is_available(dn)) 6111 break; 6112 } 6113 6114 if (dn) 6115 return true; 6116 6117 return false; 6118 } 6119 6120 static int __init wlfw_init(void) 6121 { 6122 if (!wlfw_is_valid_dt_node_found()) 6123 return -ENODEV; 6124 6125 return 0; 6126 } 6127 module_init(wlfw_init); 6128 6129 MODULE_LICENSE("GPL v2"); 6130 MODULE_DESCRIPTION("WLAN FW QMI service"); 6131