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