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 * Header Processing Context 304 */ 305 static inline int qdf_ipa_add_hdr_proc_ctx( 306 qdf_ipa_ioc_add_hdr_proc_ctx_t *proc_ctxs) 307 { 308 return __qdf_ipa_add_hdr_proc_ctx(proc_ctxs); 309 } 310 311 static inline int qdf_ipa_del_hdr_proc_ctx(qdf_ipa_ioc_del_hdr_proc_ctx_t *hdls) 312 { 313 return __qdf_ipa_del_hdr_proc_ctx(hdls); 314 } 315 316 /* 317 * Messaging 318 */ 319 static inline int qdf_ipa_send_msg(qdf_ipa_msg_meta_t *meta, void *buff, 320 ipa_msg_free_fn callback) 321 { 322 return __qdf_ipa_send_msg(meta, buff, callback); 323 } 324 325 static inline int qdf_ipa_register_pull_msg(qdf_ipa_msg_meta_t *meta, 326 qdf_ipa_msg_pull_fn callback) 327 { 328 return __qdf_ipa_register_pull_msg(meta, callback); 329 } 330 331 static inline int qdf_ipa_deregister_pull_msg(qdf_ipa_msg_meta_t *meta) 332 { 333 return __qdf_ipa_deregister_pull_msg(meta); 334 } 335 336 /* 337 * Interface 338 */ 339 static inline int qdf_ipa_register_intf(const char *name, 340 const qdf_ipa_tx_intf_t *tx, 341 const qdf_ipa_rx_intf_t *rx) 342 { 343 return __qdf_ipa_register_intf(name, tx, rx); 344 } 345 346 static inline int qdf_ipa_register_intf_ext(const char *name, 347 const qdf_ipa_tx_intf_t *tx, 348 const qdf_ipa_rx_intf_t *rx, 349 const qdf_ipa_ext_intf_t *ext) 350 { 351 return __qdf_ipa_register_intf_ext(name, tx, rx, ext); 352 } 353 354 static inline int qdf_ipa_deregister_intf(const char *name) 355 { 356 return __qdf_ipa_deregister_intf(name); 357 } 358 359 /* 360 * Data path 361 */ 362 static inline int qdf_ipa_tx_dp(qdf_ipa_client_type_t dst, struct sk_buff *skb, 363 qdf_ipa_tx_meta_t *metadata) 364 { 365 return __qdf_ipa_tx_dp(dst, skb, metadata); 366 } 367 368 /* 369 * To transfer multiple data packets 370 */ 371 static inline int qdf_ipa_tx_dp_mul( 372 qdf_ipa_client_type_t dst, 373 qdf_ipa_tx_data_desc_t *data_desc) 374 { 375 return __qdf_ipa_tx_dp_mul(dst, data_desc); 376 } 377 378 static inline void qdf_ipa_free_skb(qdf_ipa_rx_data_t *rx_in) 379 { 380 return __qdf_ipa_free_skb(rx_in);; 381 } 382 383 /* 384 * System pipes 385 */ 386 static inline u16 qdf_ipa_get_smem_restr_bytes(void) 387 { 388 return __qdf_ipa_get_smem_restr_bytes(); 389 } 390 391 static inline int qdf_ipa_setup_sys_pipe(qdf_ipa_sys_connect_params_t *sys_in, 392 u32 *clnt_hdl) 393 { 394 return __qdf_ipa_setup_sys_pipe(sys_in, clnt_hdl); 395 } 396 397 static inline int qdf_ipa_teardown_sys_pipe(u32 clnt_hdl) 398 { 399 return __qdf_ipa_teardown_sys_pipe(clnt_hdl); 400 } 401 402 static inline int qdf_ipa_connect_wdi_pipe(qdf_ipa_wdi_in_params_t *in, 403 qdf_ipa_wdi_out_params_t *out) 404 { 405 return __qdf_ipa_connect_wdi_pipe(in, out); 406 } 407 408 static inline int qdf_ipa_disconnect_wdi_pipe(u32 clnt_hdl) 409 { 410 return __qdf_ipa_disconnect_wdi_pipe(clnt_hdl); 411 } 412 413 static inline int qdf_ipa_enable_wdi_pipe(u32 clnt_hdl) 414 { 415 return __qdf_ipa_enable_wdi_pipe(clnt_hdl); 416 } 417 418 static inline int qdf_ipa_disable_wdi_pipe(u32 clnt_hdl) 419 { 420 return __qdf_ipa_disable_wdi_pipe(clnt_hdl); 421 } 422 423 static inline int qdf_ipa_resume_wdi_pipe(u32 clnt_hdl) 424 { 425 return __qdf_ipa_resume_wdi_pipe(clnt_hdl); 426 } 427 428 static inline int qdf_ipa_suspend_wdi_pipe(u32 clnt_hdl) 429 { 430 return __qdf_ipa_suspend_wdi_pipe(clnt_hdl); 431 } 432 433 static inline int qdf_ipa_uc_wdi_get_dbpa( 434 qdf_ipa_wdi_db_params_t *out) 435 { 436 return __qdf_ipa_uc_wdi_get_dbpa(out); 437 } 438 439 static inline int qdf_ipa_uc_reg_rdyCB( 440 qdf_ipa_wdi_uc_ready_params_t *param) 441 { 442 return __qdf_ipa_uc_reg_rdyCB(param); 443 } 444 445 static inline int qdf_ipa_uc_dereg_rdyCB(void) 446 { 447 return __qdf_ipa_uc_dereg_rdyCB(); 448 } 449 450 451 /* 452 * Resource manager 453 */ 454 static inline int qdf_ipa_rm_create_resource( 455 qdf_ipa_rm_create_params_t *create_params) 456 { 457 return __qdf_ipa_rm_create_resource(create_params); 458 } 459 460 static inline int qdf_ipa_rm_delete_resource( 461 qdf_ipa_rm_resource_name_t resource_name) 462 { 463 return __qdf_ipa_rm_delete_resource(resource_name); 464 } 465 466 static inline int qdf_ipa_rm_register(qdf_ipa_rm_resource_name_t resource_name, 467 qdf_ipa_rm_register_params_t *reg_params) 468 { 469 return __qdf_ipa_rm_register(resource_name, reg_params); 470 } 471 472 static inline int qdf_ipa_rm_set_perf_profile( 473 qdf_ipa_rm_resource_name_t resource_name, 474 qdf_ipa_rm_perf_profile_t *profile) 475 { 476 return __qdf_ipa_rm_set_perf_profile(resource_name, profile); 477 } 478 479 static inline int qdf_ipa_rm_deregister(qdf_ipa_rm_resource_name_t resource_name, 480 qdf_ipa_rm_register_params_t *reg_params) 481 { 482 return __qdf_ipa_rm_deregister(resource_name, reg_params); 483 } 484 485 static inline int qdf_ipa_rm_add_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_add_dependency(resource_name, depends_on_name); 490 } 491 492 static inline int qdf_ipa_rm_add_dependency_sync( 493 qdf_ipa_rm_resource_name_t resource_name, 494 qdf_ipa_rm_resource_name_t depends_on_name) 495 { 496 return __qdf_ipa_rm_add_dependency_sync(resource_name, depends_on_name); 497 } 498 499 static inline int qdf_ipa_rm_delete_dependency( 500 qdf_ipa_rm_resource_name_t resource_name, 501 qdf_ipa_rm_resource_name_t depends_on_name) 502 { 503 return __qdf_ipa_rm_delete_dependency(resource_name, depends_on_name); 504 } 505 506 static inline int qdf_ipa_rm_request_resource( 507 qdf_ipa_rm_resource_name_t resource_name) 508 { 509 return __qdf_ipa_rm_request_resource(resource_name); 510 } 511 512 static inline int qdf_ipa_rm_release_resource( 513 qdf_ipa_rm_resource_name_t resource_name) 514 { 515 return __qdf_ipa_rm_release_resource(resource_name); 516 } 517 518 static inline int qdf_ipa_rm_notify_completion(qdf_ipa_rm_event_t event, 519 qdf_ipa_rm_resource_name_t resource_name) 520 { 521 return __qdf_ipa_rm_notify_completion(event, resource_name); 522 } 523 524 static inline int qdf_ipa_rm_inactivity_timer_init( 525 qdf_ipa_rm_resource_name_t resource_name, 526 unsigned long msecs) 527 { 528 return __qdf_ipa_rm_inactivity_timer_init(resource_name, msecs); 529 } 530 531 static inline int qdf_ipa_rm_inactivity_timer_destroy( 532 qdf_ipa_rm_resource_name_t resource_name) 533 { 534 return __qdf_ipa_rm_inactivity_timer_destroy(resource_name); 535 } 536 537 static inline int qdf_ipa_rm_inactivity_timer_request_resource( 538 qdf_ipa_rm_resource_name_t resource_name) 539 { 540 return __qdf_ipa_rm_inactivity_timer_request_resource(resource_name); 541 } 542 543 static inline int qdf_ipa_rm_inactivity_timer_release_resource( 544 qdf_ipa_rm_resource_name_t resource_name) 545 { 546 return __qdf_ipa_rm_inactivity_timer_release_resource(resource_name); 547 } 548 549 /* 550 * Miscellaneous 551 */ 552 static inline void qdf_ipa_bam_reg_dump(void) 553 { 554 return __qdf_ipa_bam_reg_dump(); 555 } 556 557 static inline int qdf_ipa_get_wdi_stats(qdf_ipa_hw_stats_wdi_info_data_t *stats) 558 { 559 return __qdf_ipa_get_wdi_stats(stats); 560 } 561 562 static inline int qdf_ipa_get_ep_mapping(qdf_ipa_client_type_t client) 563 { 564 return __qdf_ipa_get_ep_mapping(client); 565 } 566 567 static inline bool qdf_ipa_is_ready(void) 568 { 569 return __qdf_ipa_is_ready(); 570 } 571 572 static inline void qdf_ipa_proxy_clk_vote(void) 573 { 574 return __qdf_ipa_proxy_clk_vote(); 575 } 576 577 static inline void qdf_ipa_proxy_clk_unvote(void) 578 { 579 return __qdf_ipa_proxy_clk_unvote(); 580 } 581 582 static inline bool qdf_ipa_is_client_handle_valid(u32 clnt_hdl) 583 { 584 return __qdf_ipa_is_client_handle_valid(clnt_hdl); 585 } 586 587 static inline qdf_ipa_client_type_t qdf_ipa_get_client_mapping(int pipe_idx) 588 { 589 return __qdf_ipa_get_client_mapping(pipe_idx); 590 } 591 592 static inline qdf_ipa_rm_resource_name_t qdf_ipa_get_rm_resource_from_ep( 593 int pipe_idx) 594 { 595 return __qdf_ipa_get_rm_resource_from_ep(pipe_idx); 596 } 597 598 static inline bool qdf_ipa_get_modem_cfg_emb_pipe_flt(void) 599 { 600 return __qdf_ipa_get_modem_cfg_emb_pipe_flt(); 601 } 602 603 static inline int qdf_ipa_create_wdi_mapping(u32 num_buffers, 604 __qdf_ipa_wdi_buffer_info_t *info) 605 { 606 return __qdf_ipa_create_wdi_mapping(num_buffers, info); 607 } 608 609 static inline int qdf_ipa_release_wdi_mapping(u32 num_buffers, 610 qdf_ipa_wdi_buffer_info_t *info) 611 { 612 return __qdf_ipa_release_wdi_mapping(num_buffers, info); 613 } 614 615 static inline int qdf_ipa_disable_apps_wan_cons_deaggr(uint32_t agg_size, 616 uint32_t agg_count) 617 { 618 return __qdf_ipa_disable_apps_wan_cons_deaggr(agg_size, agg_count); 619 } 620 621 static inline const qdf_ipa_gsi_ep_config_t *qdf_ipa_get_gsi_ep_info(qdf_ipa_client_type_t client) 622 { 623 return __qdf_ipa_get_gsi_ep_info(client); 624 } 625 626 static inline int qdf_ipa_stop_gsi_channel(u32 clnt_hdl) 627 { 628 return __qdf_ipa_stop_gsi_channel(clnt_hdl); 629 } 630 631 static inline int qdf_ipa_register_ipa_ready_cb( 632 void (*qdf_ipa_ready_cb)(void *user_data), 633 void *user_data) 634 { 635 return __qdf_ipa_register_ipa_ready_cb(qdf_ipa_ready_cb, user_data); 636 } 637 638 #ifdef FEATURE_METERING 639 static inline int qdf_ipa_broadcast_wdi_quota_reach_ind(uint32_t index, 640 uint64_t quota_bytes) 641 { 642 return __qdf_ipa_broadcast_wdi_quota_reach_ind(index, quota_bytes); 643 } 644 #endif 645 646 #ifdef ENABLE_SMMU_S1_TRANSLATION 647 /** 648 * qdf_get_ipa_smmu_enabled() - to get IPA SMMU enable status 649 * 650 * Return: true when IPA SMMU enabled, otherwise false 651 */ 652 static inline bool qdf_get_ipa_smmu_enabled(void) 653 { 654 return __qdf_get_ipa_smmu_enabled(); 655 } 656 #endif 657 658 #endif /* IPA_OFFLOAD */ 659 #endif /* _QDF_IPA_H */ 660