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