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