1 /* 2 * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 #ifndef _QDF_IPA_H 18 #define _QDF_IPA_H 19 20 #ifdef IPA_OFFLOAD 21 22 #include <i_qdf_ipa.h> 23 24 /** 25 * enum qdf_ipa_wlan_event - QDF IPA events 26 * @QDF_IPA_CLIENT_CONNECT: Client Connects 27 * @QDF_IPA_CLIENT_DISCONNECT: Client Disconnects 28 * @QDF_IPA_AP_CONNECT: SoftAP is started 29 * @QDF_IPA_AP_DISCONNECT: SoftAP is stopped 30 * @QDF_IPA_STA_CONNECT: STA associates to AP 31 * @QDF_IPA_STA_DISCONNECT: STA dissociates from AP 32 * @QDF_IPA_CLIENT_CONNECT_EX: Peer associates/re-associates to softap 33 * @QDF_SWITCH_TO_SCC: WLAN interfaces in scc mode 34 * @QDF_SWITCH_TO_MCC: WLAN interfaces in mcc mode 35 * @QDF_WDI_ENABLE: WDI enable complete 36 * @QDF_WDI_DISABLE: WDI teardown 37 * @QDF_IPA_WLAN_EVENT_MAX: Max value for the enum 38 */ 39 typedef enum { 40 QDF_IPA_CLIENT_CONNECT, 41 QDF_IPA_CLIENT_DISCONNECT, 42 QDF_IPA_AP_CONNECT, 43 QDF_IPA_AP_DISCONNECT, 44 QDF_IPA_STA_CONNECT, 45 QDF_IPA_STA_DISCONNECT, 46 QDF_IPA_CLIENT_CONNECT_EX, 47 QDF_SWITCH_TO_SCC, 48 QDF_SWITCH_TO_MCC, 49 QDF_WDI_ENABLE, 50 QDF_WDI_DISABLE, 51 QDF_IPA_WLAN_EVENT_MAX 52 } qdf_ipa_wlan_event; 53 54 /** 55 * qdf_ipa_wdi_meter_evt_type_t - type of event client callback is 56 * for AP+STA mode metering 57 * @IPA_GET_WDI_SAP_STATS: get IPA_stats betwen SAP and STA - 58 * use ipa_get_wdi_sap_stats structure 59 * @IPA_SET_WIFI_QUOTA: set quota limit on STA - 60 * use ipa_set_wifi_quota structure 61 */ 62 typedef __qdf_ipa_wdi_meter_evt_type_t qdf_ipa_wdi_meter_evt_type_t; 63 64 typedef __qdf_ipa_get_wdi_sap_stats_t qdf_ipa_get_wdi_sap_stats_t; 65 66 /** 67 * qdf_ipa_set_wifi_quota_t - structure used for 68 * IPA_SET_WIFI_QUOTA. 69 */ 70 typedef __qdf_ipa_set_wifi_quota_t qdf_ipa_set_wifi_quota_t; 71 72 /** 73 * qdf_ipa_connect_params_t - low-level client connect input parameters. Either 74 * client allocates the data and desc FIFO and specifies that in data+desc OR 75 * specifies sizes and pipe_mem pref and IPA does the allocation. 76 */ 77 typedef __qdf_ipa_connect_params_t qdf_ipa_connect_params_t; 78 79 /** 80 * qdf_ipa_tx_meta_t - meta-data for the TX packet 81 */ 82 typedef __qdf_ipa_tx_meta_t qdf_ipa_tx_meta_t; 83 84 /** 85 * __qdf_ipa_sps_params_t - SPS related output parameters resulting from 86 */ 87 typedef __qdf_ipa_sps_params_t qdf_ipa_sps_params_t; 88 89 /** 90 * qdf_ipa_tx_intf_t - interface tx properties 91 */ 92 typedef __qdf_ipa_tx_intf_t qdf_ipa_tx_intf_t; 93 94 /** 95 * qdf_ipa_rx_intf_t - interface rx properties 96 */ 97 typedef __qdf_ipa_rx_intf_t qdf_ipa_rx_intf_t; 98 99 /** 100 * qdf_ipa_ext_intf_t - interface ext properties 101 */ 102 typedef __qdf_ipa_ext_intf_t qdf_ipa_ext_intf_t; 103 104 /** 105 * qdf_ipa_sys_connect_params_t - information needed to setup an IPA end-point 106 * in system-BAM mode 107 */ 108 typedef __qdf_ipa_sys_connect_params_t qdf_ipa_sys_connect_params_t; 109 110 /** 111 * __qdf_pa_rm_event_t - IPA RM events 112 * 113 * Indicate the resource state change 114 */ 115 typedef __qdf_ipa_rm_event_t qdf_ipa_rm_event_t; 116 117 /** 118 * struct qdf_ipa_rm_register_params_t - information needed to 119 * register IPA RM client with IPA RM 120 */ 121 typedef __qdf_ipa_rm_register_params_t qdf_ipa_rm_register_params_t; 122 123 /** 124 * struct qdf_ipa_rm_create_params_t - information needed to initialize 125 * the resource 126 * 127 * IPA RM client is expected to perform non blocking operations only 128 * in request_resource and release_resource functions and 129 * release notification context as soon as possible. 130 */ 131 typedef __qdf_ipa_rm_create_params_t qdf_ipa_rm_create_params_t; 132 133 /** 134 * qdf_ipa_rm_perf_profile_t - information regarding IPA RM client performance 135 * profile 136 */ 137 typedef __qdf_ipa_rm_perf_profile_t qdf_ipa_rm_perf_profile_t; 138 139 /** 140 * qdf_ipa_tx_data_desc_t - information needed 141 * to send data packet to HW link: link to data descriptors 142 * priv: client specific private data 143 */ 144 typedef __qdf_ipa_tx_data_desc_t qdf_ipa_tx_data_desc_t; 145 146 /** 147 * qdf_ipa_rx_data_t - information needed 148 * to send to wlan driver on receiving data from ipa hw 149 */ 150 typedef __qdf_ipa_rx_data_t qdf_ipa_rx_data_t; 151 152 /** 153 * qdf_ipa_wdi_ul_params_t - WDI_RX configuration 154 */ 155 typedef __qdf_ipa_wdi_ul_params_t qdf_ipa_wdi_ul_params_t; 156 157 /** 158 * qdf_ipa_wdi_ul_params_smmu_t - WDI_RX configuration (with WLAN SMMU) 159 */ 160 typedef __qdf_ipa_wdi_ul_params_smmu_t qdf_ipa_wdi_ul_params_smmu_t; 161 162 /** 163 * qdf_ipa_wdi_dl_params_t - WDI_TX configuration 164 */ 165 typedef __qdf_ipa_wdi_dl_params_t qdf_ipa_wdi_dl_params_t; 166 167 /** 168 * qdf_ipa_wdi_dl_params_smmu_t - WDI_TX configuration (with WLAN SMMU) 169 */ 170 typedef __qdf_ipa_wdi_dl_params_smmu_t qdf_ipa_wdi_dl_params_smmu_t; 171 172 /** 173 * qdf_ipa_wdi_in_params_t - information provided by WDI client 174 */ 175 typedef __qdf_ipa_wdi_in_params_t qdf_ipa_wdi_in_params_t; 176 177 /** 178 * qdf_ipa_wdi_out_params_t - information provided to WDI client 179 */ 180 typedef __qdf_ipa_wdi_out_params_t qdf_ipa_wdi_out_params_t; 181 182 /** 183 * qdf_ipa_wdi_db_params_t - information provided to retrieve 184 * physical address of uC doorbell 185 */ 186 typedef __qdf_ipa_wdi_db_params_t qdf_ipa_wdi_db_params_t; 187 188 /** 189 * qdf_ipa_wdi_uc_ready_params_t - uC ready CB parameters 190 */ 191 typedef void (*qdf_ipa_uc_ready_cb)(void *priv); 192 typedef __qdf_ipa_wdi_uc_ready_params_t qdf_ipa_wdi_uc_ready_params_t; 193 194 /** 195 * qdf_ipa_wdi_buffer_info_t - address info of a WLAN allocated buffer 196 * 197 * IPA driver will create/release IOMMU mapping in IPA SMMU from iova->pa 198 */ 199 typedef __qdf_ipa_wdi_buffer_info_t qdf_ipa_wdi_buffer_info_t; 200 201 /** 202 * qdf_ipa_gsi_ep_config_t - IPA GSI endpoint configurations 203 */ 204 typedef __qdf_ipa_gsi_ep_config_t qdf_ipa_gsi_ep_config_t; 205 206 /** 207 * qdf_ipa_dp_evt_type_t - type of event client callback is 208 * invoked for on data path 209 * @IPA_RECEIVE: data is struct sk_buff 210 * @IPA_WRITE_DONE: data is struct sk_buff 211 */ 212 typedef __qdf_ipa_dp_evt_type_t qdf_ipa_dp_evt_type_t; 213 214 typedef __qdf_ipa_hdr_add_t qdf_ipa_hdr_add_t; 215 typedef __qdf_ipa_hdr_del_t qdf_ipa_hdr_del_t; 216 typedef __qdf_ipa_ioc_add_hdr_t qdf_ipa_ioc_add_hdr_t; 217 typedef __qdf_ipa_ioc_del_hdr_t qdf_ipa_ioc_del_hdr_t; 218 typedef __qdf_ipa_ioc_get_hdr_t qdf_ipa_ioc_get_hdr_t; 219 typedef __qdf_ipa_ioc_copy_hdr_t qdf_ipa_ioc_copy_hdr_t; 220 typedef __qdf_ipa_ioc_add_hdr_proc_ctx_t qdf_ipa_ioc_add_hdr_proc_ctx_t; 221 typedef __qdf_ipa_ioc_del_hdr_proc_ctx_t qdf_ipa_ioc_del_hdr_proc_ctx_t; 222 typedef __qdf_ipa_msg_meta_t qdf_ipa_msg_meta_t; 223 typedef __qdf_ipa_client_type_t qdf_ipa_client_type_t; 224 typedef __qdf_ipa_hw_stats_wdi_info_data_t qdf_ipa_hw_stats_wdi_info_data_t; 225 typedef __qdf_ipa_rm_resource_name_t qdf_ipa_rm_resource_name_t; 226 typedef __qdf_ipa_wlan_event_t qdf_ipa_wlan_event_t; 227 typedef __qdf_ipa_wlan_msg_t qdf_ipa_wlan_msg_t; 228 typedef __qdf_ipa_wlan_msg_ex_t qdf_ipa_wlan_msg_ex_t; 229 typedef __qdf_ipa_ioc_tx_intf_prop_t qdf_ipa_ioc_tx_intf_prop_t; 230 typedef __qdf_ipa_ioc_rx_intf_prop_t qdf_ipa_ioc_rx_intf_prop_t; 231 typedef __qdf_ipa_wlan_hdr_attrib_val_t qdf_ipa_wlan_hdr_attrib_val_t; 232 typedef int (*qdf_ipa_msg_pull_fn)(void *buff, u32 len, u32 type); 233 typedef void (*qdf_ipa_ready_cb)(void *user_data); 234 235 #define QDF_IPA_SET_META_MSG_TYPE(meta, msg_type) \ 236 __QDF_IPA_SET_META_MSG_TYPE(meta, msg_type) 237 238 #define QDF_IPA_RM_RESOURCE_GRANTED __QDF_IPA_RM_RESOURCE_GRANTED 239 #define QDF_IPA_RM_RESOURCE_RELEASED __QDF_IPA_RM_RESOURCE_RELEASED 240 241 #define QDF_IPA_VOLTAGE_LEVEL __QDF_IPA_VOLTAGE_LEVEL 242 243 #define QDF_IPA_RM_RESOURCE_WLAN_PROD __QDF_IPA_RM_RESOURCE_WLAN_PROD 244 #define QDF_IPA_RM_RESOURCE_WLAN_CONS __QDF_IPA_RM_RESOURCE_WLAN_CONS 245 #define QDF_IPA_RM_RESOURCE_APPS_CONS __QDF_IPA_RM_RESOURCE_APPS_CONS 246 247 #define QDF_IPA_CLIENT_WLAN1_PROD __QDF_IPA_CLIENT_WLAN1_PROD 248 #define QDF_IPA_CLIENT_WLAN1_CONS __QDF_IPA_CLIENT_WLAN1_CONS 249 #define QDF_IPA_CLIENT_WLAN2_CONS __QDF_IPA_CLIENT_WLAN2_CONS 250 #define QDF_IPA_CLIENT_WLAN3_CONS __QDF_IPA_CLIENT_WLAN3_CONS 251 #define QDF_IPA_CLIENT_WLAN4_CONS __QDF_IPA_CLIENT_WLAN4_CONS 252 253 /* 254 * Resume / Suspend 255 */ 256 static inline int qdf_ipa_reset_endpoint(u32 clnt_hdl) 257 { 258 return __qdf_ipa_reset_endpoint(clnt_hdl); 259 } 260 261 /* 262 * Remove ep delay 263 */ 264 static inline int qdf_ipa_clear_endpoint_delay(u32 clnt_hdl) 265 { 266 return __qdf_ipa_clear_endpoint_delay(clnt_hdl); 267 } 268 269 /* 270 * Header removal / addition 271 */ 272 static inline int qdf_ipa_add_hdr(qdf_ipa_ioc_add_hdr_t *hdrs) 273 { 274 return __qdf_ipa_add_hdr(hdrs); 275 } 276 277 static inline int qdf_ipa_del_hdr(qdf_ipa_ioc_del_hdr_t *hdls) 278 { 279 return __qdf_ipa_del_hdr(hdls); 280 } 281 282 static inline int qdf_ipa_commit_hdr(void) 283 { 284 return __qdf_ipa_commit_hdr(); 285 } 286 287 static inline int qdf_ipa_get_hdr(qdf_ipa_ioc_get_hdr_t *lookup) 288 { 289 return __qdf_ipa_get_hdr(lookup); 290 } 291 292 static inline int qdf_ipa_put_hdr(u32 hdr_hdl) 293 { 294 return __qdf_ipa_put_hdr(hdr_hdl); 295 } 296 297 static inline int qdf_ipa_copy_hdr(qdf_ipa_ioc_copy_hdr_t *copy) 298 { 299 return __qdf_ipa_copy_hdr(copy); 300 } 301 302 /* 303 * Messaging 304 */ 305 static inline int qdf_ipa_send_msg(qdf_ipa_msg_meta_t *meta, void *buff, 306 ipa_msg_free_fn callback) 307 { 308 return __qdf_ipa_send_msg(meta, buff, callback); 309 } 310 311 static inline int qdf_ipa_register_pull_msg(qdf_ipa_msg_meta_t *meta, 312 qdf_ipa_msg_pull_fn callback) 313 { 314 return __qdf_ipa_register_pull_msg(meta, callback); 315 } 316 317 static inline int qdf_ipa_deregister_pull_msg(qdf_ipa_msg_meta_t *meta) 318 { 319 return __qdf_ipa_deregister_pull_msg(meta); 320 } 321 322 /* 323 * Interface 324 */ 325 static inline int qdf_ipa_register_intf(const char *name, 326 const qdf_ipa_tx_intf_t *tx, 327 const qdf_ipa_rx_intf_t *rx) 328 { 329 return __qdf_ipa_register_intf(name, tx, rx); 330 } 331 332 static inline int qdf_ipa_register_intf_ext(const char *name, 333 const qdf_ipa_tx_intf_t *tx, 334 const qdf_ipa_rx_intf_t *rx, 335 const qdf_ipa_ext_intf_t *ext) 336 { 337 return __qdf_ipa_register_intf_ext(name, tx, rx, ext); 338 } 339 340 static inline int qdf_ipa_deregister_intf(const char *name) 341 { 342 return __qdf_ipa_deregister_intf(name); 343 } 344 345 /* 346 * Data path 347 */ 348 static inline int qdf_ipa_tx_dp(qdf_ipa_client_type_t dst, struct sk_buff *skb, 349 qdf_ipa_tx_meta_t *metadata) 350 { 351 return __qdf_ipa_tx_dp(dst, skb, metadata); 352 } 353 354 /* 355 * To transfer multiple data packets 356 */ 357 static inline int qdf_ipa_tx_dp_mul( 358 qdf_ipa_client_type_t dst, 359 qdf_ipa_tx_data_desc_t *data_desc) 360 { 361 return __qdf_ipa_tx_dp_mul(dst, data_desc); 362 } 363 364 static inline void qdf_ipa_free_skb(qdf_ipa_rx_data_t *rx_in) 365 { 366 return __qdf_ipa_free_skb(rx_in);; 367 } 368 369 /* 370 * System pipes 371 */ 372 static inline u16 qdf_ipa_get_smem_restr_bytes(void) 373 { 374 return __qdf_ipa_get_smem_restr_bytes(); 375 } 376 377 static inline int qdf_ipa_setup_sys_pipe(qdf_ipa_sys_connect_params_t *sys_in, 378 u32 *clnt_hdl) 379 { 380 return __qdf_ipa_setup_sys_pipe(sys_in, clnt_hdl); 381 } 382 383 static inline int qdf_ipa_teardown_sys_pipe(u32 clnt_hdl) 384 { 385 return __qdf_ipa_teardown_sys_pipe(clnt_hdl); 386 } 387 388 static inline int qdf_ipa_connect_wdi_pipe(qdf_ipa_wdi_in_params_t *in, 389 qdf_ipa_wdi_out_params_t *out) 390 { 391 return __qdf_ipa_connect_wdi_pipe(in, out); 392 } 393 394 static inline int qdf_ipa_disconnect_wdi_pipe(u32 clnt_hdl) 395 { 396 return __qdf_ipa_disconnect_wdi_pipe(clnt_hdl); 397 } 398 399 static inline int qdf_ipa_enable_wdi_pipe(u32 clnt_hdl) 400 { 401 return __qdf_ipa_enable_wdi_pipe(clnt_hdl); 402 } 403 404 static inline int qdf_ipa_disable_wdi_pipe(u32 clnt_hdl) 405 { 406 return __qdf_ipa_disable_wdi_pipe(clnt_hdl); 407 } 408 409 static inline int qdf_ipa_resume_wdi_pipe(u32 clnt_hdl) 410 { 411 return __qdf_ipa_resume_wdi_pipe(clnt_hdl); 412 } 413 414 static inline int qdf_ipa_suspend_wdi_pipe(u32 clnt_hdl) 415 { 416 return __qdf_ipa_suspend_wdi_pipe(clnt_hdl); 417 } 418 419 static inline int qdf_ipa_uc_wdi_get_dbpa( 420 qdf_ipa_wdi_db_params_t *out) 421 { 422 return __qdf_ipa_uc_wdi_get_dbpa(out); 423 } 424 425 static inline int qdf_ipa_uc_reg_rdyCB( 426 qdf_ipa_wdi_uc_ready_params_t *param) 427 { 428 return __qdf_ipa_uc_reg_rdyCB(param); 429 } 430 431 static inline int qdf_ipa_uc_dereg_rdyCB(void) 432 { 433 return __qdf_ipa_uc_dereg_rdyCB(); 434 } 435 436 437 /* 438 * Resource manager 439 */ 440 static inline int qdf_ipa_rm_create_resource( 441 qdf_ipa_rm_create_params_t *create_params) 442 { 443 return __qdf_ipa_rm_create_resource(create_params); 444 } 445 446 static inline int qdf_ipa_rm_delete_resource( 447 qdf_ipa_rm_resource_name_t resource_name) 448 { 449 return __qdf_ipa_rm_delete_resource(resource_name); 450 } 451 452 static inline int qdf_ipa_rm_register(qdf_ipa_rm_resource_name_t resource_name, 453 qdf_ipa_rm_register_params_t *reg_params) 454 { 455 return __qdf_ipa_rm_register(resource_name, reg_params); 456 } 457 458 static inline int qdf_ipa_rm_set_perf_profile( 459 qdf_ipa_rm_resource_name_t resource_name, 460 qdf_ipa_rm_perf_profile_t *profile) 461 { 462 return __qdf_ipa_rm_set_perf_profile(resource_name, profile); 463 } 464 465 static inline int qdf_ipa_rm_deregister(qdf_ipa_rm_resource_name_t resource_name, 466 qdf_ipa_rm_register_params_t *reg_params) 467 { 468 return __qdf_ipa_rm_deregister(resource_name, reg_params); 469 } 470 471 static inline int qdf_ipa_rm_add_dependency( 472 qdf_ipa_rm_resource_name_t resource_name, 473 qdf_ipa_rm_resource_name_t depends_on_name) 474 { 475 return __qdf_ipa_rm_add_dependency(resource_name, depends_on_name); 476 } 477 478 static inline int qdf_ipa_rm_add_dependency_sync( 479 qdf_ipa_rm_resource_name_t resource_name, 480 qdf_ipa_rm_resource_name_t depends_on_name) 481 { 482 return __qdf_ipa_rm_add_dependency_sync(resource_name, depends_on_name); 483 } 484 485 static inline int qdf_ipa_rm_delete_dependency( 486 qdf_ipa_rm_resource_name_t resource_name, 487 qdf_ipa_rm_resource_name_t depends_on_name) 488 { 489 return __qdf_ipa_rm_delete_dependency(resource_name, depends_on_name); 490 } 491 492 static inline int qdf_ipa_rm_request_resource( 493 qdf_ipa_rm_resource_name_t resource_name) 494 { 495 return __qdf_ipa_rm_request_resource(resource_name); 496 } 497 498 static inline int qdf_ipa_rm_release_resource( 499 qdf_ipa_rm_resource_name_t resource_name) 500 { 501 return __qdf_ipa_rm_release_resource(resource_name); 502 } 503 504 static inline int qdf_ipa_rm_notify_completion(qdf_ipa_rm_event_t event, 505 qdf_ipa_rm_resource_name_t resource_name) 506 { 507 return __qdf_ipa_rm_notify_completion(event, resource_name); 508 } 509 510 static inline int qdf_ipa_rm_inactivity_timer_init( 511 qdf_ipa_rm_resource_name_t resource_name, 512 unsigned long msecs) 513 { 514 return __qdf_ipa_rm_inactivity_timer_init(resource_name, msecs); 515 } 516 517 static inline int qdf_ipa_rm_inactivity_timer_destroy( 518 qdf_ipa_rm_resource_name_t resource_name) 519 { 520 return __qdf_ipa_rm_inactivity_timer_destroy(resource_name); 521 } 522 523 static inline int qdf_ipa_rm_inactivity_timer_request_resource( 524 qdf_ipa_rm_resource_name_t resource_name) 525 { 526 return __qdf_ipa_rm_inactivity_timer_request_resource(resource_name); 527 } 528 529 static inline int qdf_ipa_rm_inactivity_timer_release_resource( 530 qdf_ipa_rm_resource_name_t resource_name) 531 { 532 return __qdf_ipa_rm_inactivity_timer_release_resource(resource_name); 533 } 534 535 /* 536 * Miscellaneous 537 */ 538 static inline void qdf_ipa_bam_reg_dump(void) 539 { 540 return __qdf_ipa_bam_reg_dump(); 541 } 542 543 static inline int qdf_ipa_get_wdi_stats(qdf_ipa_hw_stats_wdi_info_data_t *stats) 544 { 545 return __qdf_ipa_get_wdi_stats(stats); 546 } 547 548 static inline int qdf_ipa_get_ep_mapping(qdf_ipa_client_type_t client) 549 { 550 return __qdf_ipa_get_ep_mapping(client); 551 } 552 553 static inline bool qdf_ipa_is_ready(void) 554 { 555 return __qdf_ipa_is_ready(); 556 } 557 558 static inline void qdf_ipa_proxy_clk_vote(void) 559 { 560 return __qdf_ipa_proxy_clk_vote(); 561 } 562 563 static inline void qdf_ipa_proxy_clk_unvote(void) 564 { 565 return __qdf_ipa_proxy_clk_unvote(); 566 } 567 568 static inline bool qdf_ipa_is_client_handle_valid(u32 clnt_hdl) 569 { 570 return __qdf_ipa_is_client_handle_valid(clnt_hdl); 571 } 572 573 static inline qdf_ipa_client_type_t qdf_ipa_get_client_mapping(int pipe_idx) 574 { 575 return __qdf_ipa_get_client_mapping(pipe_idx); 576 } 577 578 static inline qdf_ipa_rm_resource_name_t qdf_ipa_get_rm_resource_from_ep( 579 int pipe_idx) 580 { 581 return __qdf_ipa_get_rm_resource_from_ep(pipe_idx); 582 } 583 584 static inline bool qdf_ipa_get_modem_cfg_emb_pipe_flt(void) 585 { 586 return __qdf_ipa_get_modem_cfg_emb_pipe_flt(); 587 } 588 589 static inline int qdf_ipa_create_wdi_mapping(u32 num_buffers, 590 __qdf_ipa_wdi_buffer_info_t *info) 591 { 592 return __qdf_ipa_create_wdi_mapping(num_buffers, info); 593 } 594 595 static inline int qdf_ipa_release_wdi_mapping(u32 num_buffers, 596 qdf_ipa_wdi_buffer_info_t *info) 597 { 598 return __qdf_ipa_release_wdi_mapping(num_buffers, info); 599 } 600 601 static inline int qdf_ipa_disable_apps_wan_cons_deaggr(uint32_t agg_size, 602 uint32_t agg_count) 603 { 604 return __qdf_ipa_disable_apps_wan_cons_deaggr(agg_size, agg_count); 605 } 606 607 static inline const qdf_ipa_gsi_ep_config_t *qdf_ipa_get_gsi_ep_info(qdf_ipa_client_type_t client) 608 { 609 return __qdf_ipa_get_gsi_ep_info(client); 610 } 611 612 static inline int qdf_ipa_stop_gsi_channel(u32 clnt_hdl) 613 { 614 return __qdf_ipa_stop_gsi_channel(clnt_hdl); 615 } 616 617 static inline int qdf_ipa_register_ipa_ready_cb( 618 void (*qdf_ipa_ready_cb)(void *user_data), 619 void *user_data) 620 { 621 return __qdf_ipa_register_ipa_ready_cb(qdf_ipa_ready_cb, user_data); 622 } 623 624 #ifdef FEATURE_METERING 625 static inline int qdf_ipa_broadcast_wdi_quota_reach_ind(uint32_t index, 626 uint64_t quota_bytes) 627 { 628 return __qdf_ipa_broadcast_wdi_quota_reach_ind(index, quota_bytes); 629 } 630 #endif 631 632 #ifdef ENABLE_SMMU_S1_TRANSLATION 633 /** 634 * qdf_get_ipa_smmu_enabled() - to get IPA SMMU enable status 635 * 636 * Return: true when IPA SMMU enabled, otherwise false 637 */ 638 static inline bool qdf_get_ipa_smmu_enabled(void) 639 { 640 return __qdf_get_ipa_smmu_enabled(); 641 } 642 #endif 643 644 #endif /* IPA_OFFLOAD */ 645 #endif /* _QDF_IPA_H */ 646