1 // SPDX-License-Identifier: GPL-2.0 2 3 /* Copyright (c) 2018, The Linux Foundation. All rights reserved. 4 * Copyright (C) 2018-2020 Linaro Ltd. 5 */ 6 #include <linux/stddef.h> 7 #include <linux/soc/qcom/qmi.h> 8 9 #include "ipa_qmi_msg.h" 10 11 /* QMI message structure definition for struct ipa_indication_register_req */ 12 struct qmi_elem_info ipa_indication_register_req_ei[] = { 13 { 14 .data_type = QMI_OPT_FLAG, 15 .elem_len = 1, 16 .elem_size = 17 sizeof_field(struct ipa_indication_register_req, 18 master_driver_init_complete_valid), 19 .tlv_type = 0x10, 20 .offset = offsetof(struct ipa_indication_register_req, 21 master_driver_init_complete_valid), 22 }, 23 { 24 .data_type = QMI_UNSIGNED_1_BYTE, 25 .elem_len = 1, 26 .elem_size = 27 sizeof_field(struct ipa_indication_register_req, 28 master_driver_init_complete), 29 .tlv_type = 0x10, 30 .offset = offsetof(struct ipa_indication_register_req, 31 master_driver_init_complete), 32 }, 33 { 34 .data_type = QMI_OPT_FLAG, 35 .elem_len = 1, 36 .elem_size = 37 sizeof_field(struct ipa_indication_register_req, 38 data_usage_quota_reached_valid), 39 .tlv_type = 0x11, 40 .offset = offsetof(struct ipa_indication_register_req, 41 data_usage_quota_reached_valid), 42 }, 43 { 44 .data_type = QMI_UNSIGNED_1_BYTE, 45 .elem_len = 1, 46 .elem_size = 47 sizeof_field(struct ipa_indication_register_req, 48 data_usage_quota_reached), 49 .tlv_type = 0x11, 50 .offset = offsetof(struct ipa_indication_register_req, 51 data_usage_quota_reached), 52 }, 53 { 54 .data_type = QMI_OPT_FLAG, 55 .elem_len = 1, 56 .elem_size = 57 sizeof_field(struct ipa_indication_register_req, 58 ipa_mhi_ready_ind_valid), 59 .tlv_type = 0x12, 60 .offset = offsetof(struct ipa_indication_register_req, 61 ipa_mhi_ready_ind_valid), 62 }, 63 { 64 .data_type = QMI_UNSIGNED_1_BYTE, 65 .elem_len = 1, 66 .elem_size = 67 sizeof_field(struct ipa_indication_register_req, 68 ipa_mhi_ready_ind), 69 .tlv_type = 0x12, 70 .offset = offsetof(struct ipa_indication_register_req, 71 ipa_mhi_ready_ind), 72 }, 73 { 74 .data_type = QMI_OPT_FLAG, 75 .elem_len = 1, 76 .elem_size = 77 sizeof_field(struct ipa_indication_register_req, 78 endpoint_desc_ind_valid), 79 .tlv_type = 0x13, 80 .offset = offsetof(struct ipa_indication_register_req, 81 endpoint_desc_ind_valid), 82 }, 83 { 84 .data_type = QMI_UNSIGNED_1_BYTE, 85 .elem_len = 1, 86 .elem_size = 87 sizeof_field(struct ipa_indication_register_req, 88 endpoint_desc_ind), 89 .tlv_type = 0x13, 90 .offset = offsetof(struct ipa_indication_register_req, 91 endpoint_desc_ind), 92 }, 93 { 94 .data_type = QMI_OPT_FLAG, 95 .elem_len = 1, 96 .elem_size = 97 sizeof_field(struct ipa_indication_register_req, 98 bw_change_ind_valid), 99 .tlv_type = 0x14, 100 .offset = offsetof(struct ipa_indication_register_req, 101 bw_change_ind_valid), 102 }, 103 { 104 .data_type = QMI_UNSIGNED_1_BYTE, 105 .elem_len = 1, 106 .elem_size = 107 sizeof_field(struct ipa_indication_register_req, 108 bw_change_ind), 109 .tlv_type = 0x14, 110 .offset = offsetof(struct ipa_indication_register_req, 111 bw_change_ind), 112 }, 113 { 114 .data_type = QMI_EOTI, 115 }, 116 }; 117 118 /* QMI message structure definition for struct ipa_indication_register_rsp */ 119 struct qmi_elem_info ipa_indication_register_rsp_ei[] = { 120 { 121 .data_type = QMI_STRUCT, 122 .elem_len = 1, 123 .elem_size = 124 sizeof_field(struct ipa_indication_register_rsp, 125 rsp), 126 .tlv_type = 0x02, 127 .offset = offsetof(struct ipa_indication_register_rsp, 128 rsp), 129 .ei_array = qmi_response_type_v01_ei, 130 }, 131 { 132 .data_type = QMI_EOTI, 133 }, 134 }; 135 136 /* QMI message structure definition for struct ipa_driver_init_complete_req */ 137 struct qmi_elem_info ipa_driver_init_complete_req_ei[] = { 138 { 139 .data_type = QMI_UNSIGNED_1_BYTE, 140 .elem_len = 1, 141 .elem_size = 142 sizeof_field(struct ipa_driver_init_complete_req, 143 status), 144 .tlv_type = 0x01, 145 .offset = offsetof(struct ipa_driver_init_complete_req, 146 status), 147 }, 148 { 149 .data_type = QMI_EOTI, 150 }, 151 }; 152 153 /* QMI message structure definition for struct ipa_driver_init_complete_rsp */ 154 struct qmi_elem_info ipa_driver_init_complete_rsp_ei[] = { 155 { 156 .data_type = QMI_STRUCT, 157 .elem_len = 1, 158 .elem_size = 159 sizeof_field(struct ipa_driver_init_complete_rsp, 160 rsp), 161 .tlv_type = 0x02, 162 .offset = offsetof(struct ipa_driver_init_complete_rsp, 163 rsp), 164 .ei_array = qmi_response_type_v01_ei, 165 }, 166 { 167 .data_type = QMI_EOTI, 168 }, 169 }; 170 171 /* QMI message structure definition for struct ipa_init_complete_ind */ 172 struct qmi_elem_info ipa_init_complete_ind_ei[] = { 173 { 174 .data_type = QMI_STRUCT, 175 .elem_len = 1, 176 .elem_size = 177 sizeof_field(struct ipa_init_complete_ind, 178 status), 179 .tlv_type = 0x02, 180 .offset = offsetof(struct ipa_init_complete_ind, 181 status), 182 .ei_array = qmi_response_type_v01_ei, 183 }, 184 { 185 .data_type = QMI_EOTI, 186 }, 187 }; 188 189 /* QMI message structure definition for struct ipa_mem_bounds */ 190 struct qmi_elem_info ipa_mem_bounds_ei[] = { 191 { 192 .data_type = QMI_UNSIGNED_4_BYTE, 193 .elem_len = 1, 194 .elem_size = 195 sizeof_field(struct ipa_mem_bounds, start), 196 .offset = offsetof(struct ipa_mem_bounds, start), 197 }, 198 { 199 .data_type = QMI_UNSIGNED_4_BYTE, 200 .elem_len = 1, 201 .elem_size = 202 sizeof_field(struct ipa_mem_bounds, end), 203 .offset = offsetof(struct ipa_mem_bounds, end), 204 }, 205 { 206 .data_type = QMI_EOTI, 207 }, 208 }; 209 210 /* QMI message structure definition for struct ipa_mem_array */ 211 struct qmi_elem_info ipa_mem_array_ei[] = { 212 { 213 .data_type = QMI_UNSIGNED_4_BYTE, 214 .elem_len = 1, 215 .elem_size = 216 sizeof_field(struct ipa_mem_array, start), 217 .offset = offsetof(struct ipa_mem_array, start), 218 }, 219 { 220 .data_type = QMI_UNSIGNED_4_BYTE, 221 .elem_len = 1, 222 .elem_size = 223 sizeof_field(struct ipa_mem_array, count), 224 .offset = offsetof(struct ipa_mem_array, count), 225 }, 226 { 227 .data_type = QMI_EOTI, 228 }, 229 }; 230 231 /* QMI message structure definition for struct ipa_mem_range */ 232 struct qmi_elem_info ipa_mem_range_ei[] = { 233 { 234 .data_type = QMI_UNSIGNED_4_BYTE, 235 .elem_len = 1, 236 .elem_size = 237 sizeof_field(struct ipa_mem_range, start), 238 .offset = offsetof(struct ipa_mem_range, start), 239 }, 240 { 241 .data_type = QMI_UNSIGNED_4_BYTE, 242 .elem_len = 1, 243 .elem_size = 244 sizeof_field(struct ipa_mem_range, size), 245 .offset = offsetof(struct ipa_mem_range, size), 246 }, 247 { 248 .data_type = QMI_EOTI, 249 }, 250 }; 251 252 /* QMI message structure definition for struct ipa_init_modem_driver_req */ 253 struct qmi_elem_info ipa_init_modem_driver_req_ei[] = { 254 { 255 .data_type = QMI_OPT_FLAG, 256 .elem_len = 1, 257 .elem_size = 258 sizeof_field(struct ipa_init_modem_driver_req, 259 platform_type_valid), 260 .tlv_type = 0x10, 261 .offset = offsetof(struct ipa_init_modem_driver_req, 262 platform_type_valid), 263 }, 264 { 265 .data_type = QMI_SIGNED_4_BYTE_ENUM, 266 .elem_len = 1, 267 .elem_size = 268 sizeof_field(struct ipa_init_modem_driver_req, 269 platform_type), 270 .tlv_type = 0x10, 271 .offset = offsetof(struct ipa_init_modem_driver_req, 272 platform_type), 273 }, 274 { 275 .data_type = QMI_OPT_FLAG, 276 .elem_len = 1, 277 .elem_size = 278 sizeof_field(struct ipa_init_modem_driver_req, 279 hdr_tbl_info_valid), 280 .tlv_type = 0x11, 281 .offset = offsetof(struct ipa_init_modem_driver_req, 282 hdr_tbl_info_valid), 283 }, 284 { 285 .data_type = QMI_STRUCT, 286 .elem_len = 1, 287 .elem_size = 288 sizeof_field(struct ipa_init_modem_driver_req, 289 hdr_tbl_info), 290 .tlv_type = 0x11, 291 .offset = offsetof(struct ipa_init_modem_driver_req, 292 hdr_tbl_info), 293 .ei_array = ipa_mem_bounds_ei, 294 }, 295 { 296 .data_type = QMI_OPT_FLAG, 297 .elem_len = 1, 298 .elem_size = 299 sizeof_field(struct ipa_init_modem_driver_req, 300 v4_route_tbl_info_valid), 301 .tlv_type = 0x12, 302 .offset = offsetof(struct ipa_init_modem_driver_req, 303 v4_route_tbl_info_valid), 304 }, 305 { 306 .data_type = QMI_STRUCT, 307 .elem_len = 1, 308 .elem_size = 309 sizeof_field(struct ipa_init_modem_driver_req, 310 v4_route_tbl_info), 311 .tlv_type = 0x12, 312 .offset = offsetof(struct ipa_init_modem_driver_req, 313 v4_route_tbl_info), 314 .ei_array = ipa_mem_array_ei, 315 }, 316 { 317 .data_type = QMI_OPT_FLAG, 318 .elem_len = 1, 319 .elem_size = 320 sizeof_field(struct ipa_init_modem_driver_req, 321 v6_route_tbl_info_valid), 322 .tlv_type = 0x13, 323 .offset = offsetof(struct ipa_init_modem_driver_req, 324 v6_route_tbl_info_valid), 325 }, 326 { 327 .data_type = QMI_STRUCT, 328 .elem_len = 1, 329 .elem_size = 330 sizeof_field(struct ipa_init_modem_driver_req, 331 v6_route_tbl_info), 332 .tlv_type = 0x13, 333 .offset = offsetof(struct ipa_init_modem_driver_req, 334 v6_route_tbl_info), 335 .ei_array = ipa_mem_array_ei, 336 }, 337 { 338 .data_type = QMI_OPT_FLAG, 339 .elem_len = 1, 340 .elem_size = 341 sizeof_field(struct ipa_init_modem_driver_req, 342 v4_filter_tbl_start_valid), 343 .tlv_type = 0x14, 344 .offset = offsetof(struct ipa_init_modem_driver_req, 345 v4_filter_tbl_start_valid), 346 }, 347 { 348 .data_type = QMI_UNSIGNED_4_BYTE, 349 .elem_len = 1, 350 .elem_size = 351 sizeof_field(struct ipa_init_modem_driver_req, 352 v4_filter_tbl_start), 353 .tlv_type = 0x14, 354 .offset = offsetof(struct ipa_init_modem_driver_req, 355 v4_filter_tbl_start), 356 }, 357 { 358 .data_type = QMI_OPT_FLAG, 359 .elem_len = 1, 360 .elem_size = 361 sizeof_field(struct ipa_init_modem_driver_req, 362 v6_filter_tbl_start_valid), 363 .tlv_type = 0x15, 364 .offset = offsetof(struct ipa_init_modem_driver_req, 365 v6_filter_tbl_start_valid), 366 }, 367 { 368 .data_type = QMI_UNSIGNED_4_BYTE, 369 .elem_len = 1, 370 .elem_size = 371 sizeof_field(struct ipa_init_modem_driver_req, 372 v6_filter_tbl_start), 373 .tlv_type = 0x15, 374 .offset = offsetof(struct ipa_init_modem_driver_req, 375 v6_filter_tbl_start), 376 }, 377 { 378 .data_type = QMI_OPT_FLAG, 379 .elem_len = 1, 380 .elem_size = 381 sizeof_field(struct ipa_init_modem_driver_req, 382 modem_mem_info_valid), 383 .tlv_type = 0x16, 384 .offset = offsetof(struct ipa_init_modem_driver_req, 385 modem_mem_info_valid), 386 }, 387 { 388 .data_type = QMI_STRUCT, 389 .elem_len = 1, 390 .elem_size = 391 sizeof_field(struct ipa_init_modem_driver_req, 392 modem_mem_info), 393 .tlv_type = 0x16, 394 .offset = offsetof(struct ipa_init_modem_driver_req, 395 modem_mem_info), 396 .ei_array = ipa_mem_range_ei, 397 }, 398 { 399 .data_type = QMI_OPT_FLAG, 400 .elem_len = 1, 401 .elem_size = 402 sizeof_field(struct ipa_init_modem_driver_req, 403 ctrl_comm_dest_end_pt_valid), 404 .tlv_type = 0x17, 405 .offset = offsetof(struct ipa_init_modem_driver_req, 406 ctrl_comm_dest_end_pt_valid), 407 }, 408 { 409 .data_type = QMI_UNSIGNED_4_BYTE, 410 .elem_len = 1, 411 .elem_size = 412 sizeof_field(struct ipa_init_modem_driver_req, 413 ctrl_comm_dest_end_pt), 414 .tlv_type = 0x17, 415 .offset = offsetof(struct ipa_init_modem_driver_req, 416 ctrl_comm_dest_end_pt), 417 }, 418 { 419 .data_type = QMI_OPT_FLAG, 420 .elem_len = 1, 421 .elem_size = 422 sizeof_field(struct ipa_init_modem_driver_req, 423 skip_uc_load_valid), 424 .tlv_type = 0x18, 425 .offset = offsetof(struct ipa_init_modem_driver_req, 426 skip_uc_load_valid), 427 }, 428 { 429 .data_type = QMI_UNSIGNED_1_BYTE, 430 .elem_len = 1, 431 .elem_size = 432 sizeof_field(struct ipa_init_modem_driver_req, 433 skip_uc_load), 434 .tlv_type = 0x18, 435 .offset = offsetof(struct ipa_init_modem_driver_req, 436 skip_uc_load), 437 }, 438 { 439 .data_type = QMI_OPT_FLAG, 440 .elem_len = 1, 441 .elem_size = 442 sizeof_field(struct ipa_init_modem_driver_req, 443 hdr_proc_ctx_tbl_info_valid), 444 .tlv_type = 0x19, 445 .offset = offsetof(struct ipa_init_modem_driver_req, 446 hdr_proc_ctx_tbl_info_valid), 447 }, 448 { 449 .data_type = QMI_STRUCT, 450 .elem_len = 1, 451 .elem_size = 452 sizeof_field(struct ipa_init_modem_driver_req, 453 hdr_proc_ctx_tbl_info), 454 .tlv_type = 0x19, 455 .offset = offsetof(struct ipa_init_modem_driver_req, 456 hdr_proc_ctx_tbl_info), 457 .ei_array = ipa_mem_bounds_ei, 458 }, 459 { 460 .data_type = QMI_OPT_FLAG, 461 .elem_len = 1, 462 .elem_size = 463 sizeof_field(struct ipa_init_modem_driver_req, 464 zip_tbl_info_valid), 465 .tlv_type = 0x1a, 466 .offset = offsetof(struct ipa_init_modem_driver_req, 467 zip_tbl_info_valid), 468 }, 469 { 470 .data_type = QMI_STRUCT, 471 .elem_len = 1, 472 .elem_size = 473 sizeof_field(struct ipa_init_modem_driver_req, 474 zip_tbl_info), 475 .tlv_type = 0x1a, 476 .offset = offsetof(struct ipa_init_modem_driver_req, 477 zip_tbl_info), 478 .ei_array = ipa_mem_bounds_ei, 479 }, 480 { 481 .data_type = QMI_OPT_FLAG, 482 .elem_len = 1, 483 .elem_size = 484 sizeof_field(struct ipa_init_modem_driver_req, 485 v4_hash_route_tbl_info_valid), 486 .tlv_type = 0x1b, 487 .offset = offsetof(struct ipa_init_modem_driver_req, 488 v4_hash_route_tbl_info_valid), 489 }, 490 { 491 .data_type = QMI_STRUCT, 492 .elem_len = 1, 493 .elem_size = 494 sizeof_field(struct ipa_init_modem_driver_req, 495 v4_hash_route_tbl_info), 496 .tlv_type = 0x1b, 497 .offset = offsetof(struct ipa_init_modem_driver_req, 498 v4_hash_route_tbl_info), 499 .ei_array = ipa_mem_array_ei, 500 }, 501 { 502 .data_type = QMI_OPT_FLAG, 503 .elem_len = 1, 504 .elem_size = 505 sizeof_field(struct ipa_init_modem_driver_req, 506 v6_hash_route_tbl_info_valid), 507 .tlv_type = 0x1c, 508 .offset = offsetof(struct ipa_init_modem_driver_req, 509 v6_hash_route_tbl_info_valid), 510 }, 511 { 512 .data_type = QMI_STRUCT, 513 .elem_len = 1, 514 .elem_size = 515 sizeof_field(struct ipa_init_modem_driver_req, 516 v6_hash_route_tbl_info), 517 .tlv_type = 0x1c, 518 .offset = offsetof(struct ipa_init_modem_driver_req, 519 v6_hash_route_tbl_info), 520 .ei_array = ipa_mem_array_ei, 521 }, 522 { 523 .data_type = QMI_OPT_FLAG, 524 .elem_len = 1, 525 .elem_size = 526 sizeof_field(struct ipa_init_modem_driver_req, 527 v4_hash_filter_tbl_start_valid), 528 .tlv_type = 0x1d, 529 .offset = offsetof(struct ipa_init_modem_driver_req, 530 v4_hash_filter_tbl_start_valid), 531 }, 532 { 533 .data_type = QMI_UNSIGNED_4_BYTE, 534 .elem_len = 1, 535 .elem_size = 536 sizeof_field(struct ipa_init_modem_driver_req, 537 v4_hash_filter_tbl_start), 538 .tlv_type = 0x1d, 539 .offset = offsetof(struct ipa_init_modem_driver_req, 540 v4_hash_filter_tbl_start), 541 }, 542 { 543 .data_type = QMI_OPT_FLAG, 544 .elem_len = 1, 545 .elem_size = 546 sizeof_field(struct ipa_init_modem_driver_req, 547 v6_hash_filter_tbl_start_valid), 548 .tlv_type = 0x1e, 549 .offset = offsetof(struct ipa_init_modem_driver_req, 550 v6_hash_filter_tbl_start_valid), 551 }, 552 { 553 .data_type = QMI_UNSIGNED_4_BYTE, 554 .elem_len = 1, 555 .elem_size = 556 sizeof_field(struct ipa_init_modem_driver_req, 557 v6_hash_filter_tbl_start), 558 .tlv_type = 0x1e, 559 .offset = offsetof(struct ipa_init_modem_driver_req, 560 v6_hash_filter_tbl_start), 561 }, 562 { 563 .data_type = QMI_OPT_FLAG, 564 .elem_len = 1, 565 .elem_size = 566 sizeof_field(struct ipa_init_modem_driver_req, 567 hw_stats_quota_base_addr_valid), 568 .tlv_type = 0x1f, 569 .offset = offsetof(struct ipa_init_modem_driver_req, 570 hw_stats_quota_base_addr_valid), 571 }, 572 { 573 .data_type = QMI_UNSIGNED_4_BYTE, 574 .elem_len = 1, 575 .elem_size = 576 sizeof_field(struct ipa_init_modem_driver_req, 577 hw_stats_quota_base_addr), 578 .tlv_type = 0x1f, 579 .offset = offsetof(struct ipa_init_modem_driver_req, 580 hw_stats_quota_base_addr), 581 }, 582 { 583 .data_type = QMI_OPT_FLAG, 584 .elem_len = 1, 585 .elem_size = 586 sizeof_field(struct ipa_init_modem_driver_req, 587 hw_stats_quota_size_valid), 588 .tlv_type = 0x20, 589 .offset = offsetof(struct ipa_init_modem_driver_req, 590 hw_stats_quota_size_valid), 591 }, 592 { 593 .data_type = QMI_UNSIGNED_4_BYTE, 594 .elem_len = 1, 595 .elem_size = 596 sizeof_field(struct ipa_init_modem_driver_req, 597 hw_stats_quota_size), 598 .tlv_type = 0x20, 599 .offset = offsetof(struct ipa_init_modem_driver_req, 600 hw_stats_quota_size), 601 }, 602 { 603 .data_type = QMI_OPT_FLAG, 604 .elem_len = 1, 605 .elem_size = 606 sizeof_field(struct ipa_init_modem_driver_req, 607 hw_stats_drop_base_addr_valid), 608 .tlv_type = 0x21, 609 .offset = offsetof(struct ipa_init_modem_driver_req, 610 hw_stats_drop_base_addr_valid), 611 }, 612 { 613 .data_type = QMI_UNSIGNED_4_BYTE, 614 .elem_len = 1, 615 .elem_size = 616 sizeof_field(struct ipa_init_modem_driver_req, 617 hw_stats_drop_base_addr), 618 .tlv_type = 0x21, 619 .offset = offsetof(struct ipa_init_modem_driver_req, 620 hw_stats_drop_base_addr), 621 }, 622 { 623 .data_type = QMI_OPT_FLAG, 624 .elem_len = 1, 625 .elem_size = 626 sizeof_field(struct ipa_init_modem_driver_req, 627 hw_stats_drop_size_valid), 628 .tlv_type = 0x22, 629 .offset = offsetof(struct ipa_init_modem_driver_req, 630 hw_stats_drop_size_valid), 631 }, 632 { 633 .data_type = QMI_UNSIGNED_4_BYTE, 634 .elem_len = 1, 635 .elem_size = 636 sizeof_field(struct ipa_init_modem_driver_req, 637 hw_stats_drop_size), 638 .tlv_type = 0x22, 639 .offset = offsetof(struct ipa_init_modem_driver_req, 640 hw_stats_drop_size), 641 }, 642 { 643 .data_type = QMI_EOTI, 644 }, 645 }; 646 647 /* QMI message structure definition for struct ipa_init_modem_driver_rsp */ 648 struct qmi_elem_info ipa_init_modem_driver_rsp_ei[] = { 649 { 650 .data_type = QMI_STRUCT, 651 .elem_len = 1, 652 .elem_size = 653 sizeof_field(struct ipa_init_modem_driver_rsp, 654 rsp), 655 .tlv_type = 0x02, 656 .offset = offsetof(struct ipa_init_modem_driver_rsp, 657 rsp), 658 .ei_array = qmi_response_type_v01_ei, 659 }, 660 { 661 .data_type = QMI_OPT_FLAG, 662 .elem_len = 1, 663 .elem_size = 664 sizeof_field(struct ipa_init_modem_driver_rsp, 665 ctrl_comm_dest_end_pt_valid), 666 .tlv_type = 0x10, 667 .offset = offsetof(struct ipa_init_modem_driver_rsp, 668 ctrl_comm_dest_end_pt_valid), 669 }, 670 { 671 .data_type = QMI_UNSIGNED_4_BYTE, 672 .elem_len = 1, 673 .elem_size = 674 sizeof_field(struct ipa_init_modem_driver_rsp, 675 ctrl_comm_dest_end_pt), 676 .tlv_type = 0x10, 677 .offset = offsetof(struct ipa_init_modem_driver_rsp, 678 ctrl_comm_dest_end_pt), 679 }, 680 { 681 .data_type = QMI_OPT_FLAG, 682 .elem_len = 1, 683 .elem_size = 684 sizeof_field(struct ipa_init_modem_driver_rsp, 685 default_end_pt_valid), 686 .tlv_type = 0x11, 687 .offset = offsetof(struct ipa_init_modem_driver_rsp, 688 default_end_pt_valid), 689 }, 690 { 691 .data_type = QMI_UNSIGNED_4_BYTE, 692 .elem_len = 1, 693 .elem_size = 694 sizeof_field(struct ipa_init_modem_driver_rsp, 695 default_end_pt), 696 .tlv_type = 0x11, 697 .offset = offsetof(struct ipa_init_modem_driver_rsp, 698 default_end_pt), 699 }, 700 { 701 .data_type = QMI_OPT_FLAG, 702 .elem_len = 1, 703 .elem_size = 704 sizeof_field(struct ipa_init_modem_driver_rsp, 705 modem_driver_init_pending_valid), 706 .tlv_type = 0x12, 707 .offset = offsetof(struct ipa_init_modem_driver_rsp, 708 modem_driver_init_pending_valid), 709 }, 710 { 711 .data_type = QMI_UNSIGNED_1_BYTE, 712 .elem_len = 1, 713 .elem_size = 714 sizeof_field(struct ipa_init_modem_driver_rsp, 715 modem_driver_init_pending), 716 .tlv_type = 0x12, 717 .offset = offsetof(struct ipa_init_modem_driver_rsp, 718 modem_driver_init_pending), 719 }, 720 { 721 .data_type = QMI_EOTI, 722 }, 723 }; 724