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