1 /* 2 * Copyright (c) 2017-2021, 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 #ifdef WDI3_STATS_UPDATE 217 /** 218 * qdf_ipa_wdi_tx_info_t - WLAN embedded TX bytes information 219 * 220 * WLAN host fills this structure to update IPA driver about 221 * embedded TX information. 222 */ 223 typedef __qdf_ipa_wdi_tx_info_t qdf_ipa_wdi_tx_info_t; 224 225 /** 226 * qdf_ipa_wdi_bw_info_t - BW threshold levels to be monitored 227 * by IPA uC 228 */ 229 typedef __qdf_ipa_wdi_bw_info_t qdf_ipa_wdi_bw_info_t; 230 231 /** 232 * qdf_ipa_inform_wlan_bw_t - BW information given by IPA driver 233 * whenever uC detects threshold level reached 234 */ 235 typedef __qdf_ipa_inform_wlan_bw_t qdf_ipa_inform_wlan_bw_t; 236 #endif 237 238 typedef __qdf_ipa_hdr_add_t qdf_ipa_hdr_add_t; 239 typedef __qdf_ipa_hdr_del_t qdf_ipa_hdr_del_t; 240 typedef __qdf_ipa_ioc_add_hdr_t qdf_ipa_ioc_add_hdr_t; 241 typedef __qdf_ipa_ioc_del_hdr_t qdf_ipa_ioc_del_hdr_t; 242 typedef __qdf_ipa_ioc_get_hdr_t qdf_ipa_ioc_get_hdr_t; 243 typedef __qdf_ipa_ioc_copy_hdr_t qdf_ipa_ioc_copy_hdr_t; 244 typedef __qdf_ipa_ioc_add_hdr_proc_ctx_t qdf_ipa_ioc_add_hdr_proc_ctx_t; 245 typedef __qdf_ipa_ioc_del_hdr_proc_ctx_t qdf_ipa_ioc_del_hdr_proc_ctx_t; 246 typedef __qdf_ipa_msg_meta_t qdf_ipa_msg_meta_t; 247 typedef __qdf_ipa_client_type_t qdf_ipa_client_type_t; 248 typedef __qdf_ipa_hw_stats_wdi_info_data_t qdf_ipa_hw_stats_wdi_info_data_t; 249 typedef __qdf_ipa_rm_resource_name_t qdf_ipa_rm_resource_name_t; 250 typedef __qdf_ipa_wlan_event_t qdf_ipa_wlan_event_t; 251 typedef __qdf_ipa_wlan_msg_t qdf_ipa_wlan_msg_t; 252 typedef __qdf_ipa_wlan_msg_ex_t qdf_ipa_wlan_msg_ex_t; 253 typedef __qdf_ipa_ioc_tx_intf_prop_t qdf_ipa_ioc_tx_intf_prop_t; 254 typedef __qdf_ipa_ioc_rx_intf_prop_t qdf_ipa_ioc_rx_intf_prop_t; 255 typedef __qdf_ipa_wlan_hdr_attrib_val_t qdf_ipa_wlan_hdr_attrib_val_t; 256 typedef int (*qdf_ipa_msg_pull_fn)(void *buff, u32 len, u32 type); 257 typedef void (*qdf_ipa_ready_cb)(void *user_data); 258 259 #define QDF_IPA_SET_META_MSG_TYPE(meta, msg_type) \ 260 __QDF_IPA_SET_META_MSG_TYPE(meta, msg_type) 261 262 #define QDF_IPA_RM_RESOURCE_GRANTED __QDF_IPA_RM_RESOURCE_GRANTED 263 #define QDF_IPA_RM_RESOURCE_RELEASED __QDF_IPA_RM_RESOURCE_RELEASED 264 265 #define QDF_IPA_VOLTAGE_LEVEL __QDF_IPA_VOLTAGE_LEVEL 266 267 #define QDF_IPA_RM_RESOURCE_WLAN_PROD __QDF_IPA_RM_RESOURCE_WLAN_PROD 268 #define QDF_IPA_RM_RESOURCE_WLAN_CONS __QDF_IPA_RM_RESOURCE_WLAN_CONS 269 #define QDF_IPA_RM_RESOURCE_APPS_CONS __QDF_IPA_RM_RESOURCE_APPS_CONS 270 271 #define QDF_IPA_CLIENT_WLAN1_PROD __QDF_IPA_CLIENT_WLAN1_PROD 272 #define QDF_IPA_CLIENT_WLAN3_PROD __QDF_IPA_CLIENT_WLAN3_PROD 273 #define QDF_IPA_CLIENT_WLAN1_CONS __QDF_IPA_CLIENT_WLAN1_CONS 274 #define QDF_IPA_CLIENT_WLAN2_CONS __QDF_IPA_CLIENT_WLAN2_CONS 275 #define QDF_IPA_CLIENT_WLAN3_CONS __QDF_IPA_CLIENT_WLAN3_CONS 276 #define QDF_IPA_CLIENT_WLAN4_CONS __QDF_IPA_CLIENT_WLAN4_CONS 277 #ifdef FEATURE_IPA_PIPE_CHANGE_WDI1 278 #define QDF_IPA_CLIENT_WLAN_LEGACY_CONS QDF_IPA_CLIENT_WLAN3_CONS 279 #define QDF_IPA_CLIENT_WLAN_LEGACY_PROD QDF_IPA_CLIENT_WLAN3_PROD 280 #define QDF_IPA_CLIENT_MCC2_CONS QDF_IPA_CLIENT_WLAN4_CONS 281 #else 282 #define QDF_IPA_CLIENT_WLAN_LEGACY_CONS QDF_IPA_CLIENT_WLAN1_CONS 283 #define QDF_IPA_CLIENT_WLAN_LEGACY_PROD QDF_IPA_CLIENT_WLAN1_PROD 284 #define QDF_IPA_CLIENT_MCC2_CONS QDF_IPA_CLIENT_WLAN3_CONS 285 #endif 286 /* 287 * Resume / Suspend 288 */ 289 290 #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)) 291 static inline int qdf_ipa_reset_endpoint(u32 clnt_hdl) 292 { 293 return __qdf_ipa_reset_endpoint(clnt_hdl); 294 } 295 296 /* 297 * Remove ep delay 298 */ 299 static inline int qdf_ipa_clear_endpoint_delay(u32 clnt_hdl) 300 { 301 return __qdf_ipa_clear_endpoint_delay(clnt_hdl); 302 } 303 304 /* 305 * Header removal / addition 306 */ 307 static inline int qdf_ipa_add_hdr(qdf_ipa_ioc_add_hdr_t *hdrs) 308 { 309 return __qdf_ipa_add_hdr(hdrs); 310 } 311 312 static inline int qdf_ipa_del_hdr(qdf_ipa_ioc_del_hdr_t *hdls) 313 { 314 return __qdf_ipa_del_hdr(hdls); 315 } 316 317 static inline int qdf_ipa_commit_hdr(void) 318 { 319 return __qdf_ipa_commit_hdr(); 320 } 321 322 static inline int qdf_ipa_get_hdr(qdf_ipa_ioc_get_hdr_t *lookup) 323 { 324 return __qdf_ipa_get_hdr(lookup); 325 } 326 327 static inline int qdf_ipa_put_hdr(u32 hdr_hdl) 328 { 329 return __qdf_ipa_put_hdr(hdr_hdl); 330 } 331 332 static inline int qdf_ipa_copy_hdr(qdf_ipa_ioc_copy_hdr_t *copy) 333 { 334 return __qdf_ipa_copy_hdr(copy); 335 } 336 337 static inline int qdf_ipa_register_pull_msg(qdf_ipa_msg_meta_t *meta, 338 qdf_ipa_msg_pull_fn callback) 339 { 340 return __qdf_ipa_register_pull_msg(meta, callback); 341 } 342 343 static inline int qdf_ipa_deregister_pull_msg(qdf_ipa_msg_meta_t *meta) 344 { 345 return __qdf_ipa_deregister_pull_msg(meta); 346 } 347 348 /* 349 * Interface 350 */ 351 static inline int qdf_ipa_register_intf(const char *name, 352 const qdf_ipa_tx_intf_t *tx, 353 const qdf_ipa_rx_intf_t *rx) 354 { 355 return __qdf_ipa_register_intf(name, tx, rx); 356 } 357 358 static inline int qdf_ipa_register_intf_ext(const char *name, 359 const qdf_ipa_tx_intf_t *tx, 360 const qdf_ipa_rx_intf_t *rx, 361 const qdf_ipa_ext_intf_t *ext) 362 { 363 return __qdf_ipa_register_intf_ext(name, tx, rx, ext); 364 } 365 366 static inline int qdf_ipa_deregister_intf(const char *name) 367 { 368 return __qdf_ipa_deregister_intf(name); 369 } 370 371 /* 372 * Data path 373 */ 374 static inline int qdf_ipa_tx_dp(qdf_ipa_client_type_t dst, struct sk_buff *skb, 375 qdf_ipa_tx_meta_t *metadata) 376 { 377 return __qdf_ipa_tx_dp(dst, skb, metadata); 378 } 379 380 /* 381 * To transfer multiple data packets 382 */ 383 static inline int qdf_ipa_tx_dp_mul( 384 qdf_ipa_client_type_t dst, 385 qdf_ipa_tx_data_desc_t *data_desc) 386 { 387 return __qdf_ipa_tx_dp_mul(dst, data_desc); 388 } 389 390 /* 391 * System pipes 392 */ 393 static inline u16 qdf_ipa_get_smem_restr_bytes(void) 394 { 395 return __qdf_ipa_get_smem_restr_bytes(); 396 } 397 398 static inline int qdf_ipa_connect_wdi_pipe(qdf_ipa_wdi_in_params_t *in, 399 qdf_ipa_wdi_out_params_t *out) 400 { 401 return __qdf_ipa_connect_wdi_pipe(in, out); 402 } 403 404 static inline int qdf_ipa_disconnect_wdi_pipe(u32 clnt_hdl) 405 { 406 return __qdf_ipa_disconnect_wdi_pipe(clnt_hdl); 407 } 408 409 static inline int qdf_ipa_enable_wdi_pipe(u32 clnt_hdl) 410 { 411 return __qdf_ipa_enable_wdi_pipe(clnt_hdl); 412 } 413 414 static inline int qdf_ipa_disable_wdi_pipe(u32 clnt_hdl) 415 { 416 return __qdf_ipa_disable_wdi_pipe(clnt_hdl); 417 } 418 419 static inline int qdf_ipa_resume_wdi_pipe(u32 clnt_hdl) 420 { 421 return __qdf_ipa_resume_wdi_pipe(clnt_hdl); 422 } 423 424 static inline int qdf_ipa_suspend_wdi_pipe(u32 clnt_hdl) 425 { 426 return __qdf_ipa_suspend_wdi_pipe(clnt_hdl); 427 } 428 429 static inline int qdf_ipa_uc_wdi_get_dbpa( 430 qdf_ipa_wdi_db_params_t *out) 431 { 432 return __qdf_ipa_uc_wdi_get_dbpa(out); 433 } 434 435 436 /* 437 * Resource manager 438 */ 439 static inline int qdf_ipa_rm_create_resource( 440 qdf_ipa_rm_create_params_t *create_params) 441 { 442 return __qdf_ipa_rm_create_resource(create_params); 443 } 444 445 static inline int qdf_ipa_rm_delete_resource( 446 qdf_ipa_rm_resource_name_t resource_name) 447 { 448 return __qdf_ipa_rm_delete_resource(resource_name); 449 } 450 451 static inline int qdf_ipa_rm_register(qdf_ipa_rm_resource_name_t resource_name, 452 qdf_ipa_rm_register_params_t *reg_params) 453 { 454 return __qdf_ipa_rm_register(resource_name, reg_params); 455 } 456 457 static inline int qdf_ipa_rm_set_perf_profile( 458 qdf_ipa_rm_resource_name_t resource_name, 459 qdf_ipa_rm_perf_profile_t *profile) 460 { 461 return __qdf_ipa_rm_set_perf_profile(resource_name, profile); 462 } 463 464 static inline int qdf_ipa_rm_deregister(qdf_ipa_rm_resource_name_t resource_name, 465 qdf_ipa_rm_register_params_t *reg_params) 466 { 467 return __qdf_ipa_rm_deregister(resource_name, reg_params); 468 } 469 470 static inline int qdf_ipa_rm_add_dependency( 471 qdf_ipa_rm_resource_name_t resource_name, 472 qdf_ipa_rm_resource_name_t depends_on_name) 473 { 474 return __qdf_ipa_rm_add_dependency(resource_name, depends_on_name); 475 } 476 477 static inline int qdf_ipa_rm_add_dependency_sync( 478 qdf_ipa_rm_resource_name_t resource_name, 479 qdf_ipa_rm_resource_name_t depends_on_name) 480 { 481 return __qdf_ipa_rm_add_dependency_sync(resource_name, depends_on_name); 482 } 483 484 static inline int qdf_ipa_rm_delete_dependency( 485 qdf_ipa_rm_resource_name_t resource_name, 486 qdf_ipa_rm_resource_name_t depends_on_name) 487 { 488 return __qdf_ipa_rm_delete_dependency(resource_name, depends_on_name); 489 } 490 491 static inline int qdf_ipa_rm_request_resource( 492 qdf_ipa_rm_resource_name_t resource_name) 493 { 494 return __qdf_ipa_rm_request_resource(resource_name); 495 } 496 497 static inline int qdf_ipa_rm_release_resource( 498 qdf_ipa_rm_resource_name_t resource_name) 499 { 500 return __qdf_ipa_rm_release_resource(resource_name); 501 } 502 503 static inline int qdf_ipa_rm_notify_completion(qdf_ipa_rm_event_t event, 504 qdf_ipa_rm_resource_name_t resource_name) 505 { 506 return __qdf_ipa_rm_notify_completion(event, resource_name); 507 } 508 509 static inline int qdf_ipa_rm_inactivity_timer_init( 510 qdf_ipa_rm_resource_name_t resource_name, 511 unsigned long msecs) 512 { 513 return __qdf_ipa_rm_inactivity_timer_init(resource_name, msecs); 514 } 515 516 static inline int qdf_ipa_rm_inactivity_timer_destroy( 517 qdf_ipa_rm_resource_name_t resource_name) 518 { 519 return __qdf_ipa_rm_inactivity_timer_destroy(resource_name); 520 } 521 522 static inline int qdf_ipa_rm_inactivity_timer_request_resource( 523 qdf_ipa_rm_resource_name_t resource_name) 524 { 525 return __qdf_ipa_rm_inactivity_timer_request_resource(resource_name); 526 } 527 528 static inline int qdf_ipa_rm_inactivity_timer_release_resource( 529 qdf_ipa_rm_resource_name_t resource_name) 530 { 531 return __qdf_ipa_rm_inactivity_timer_release_resource(resource_name); 532 } 533 534 /* 535 * Miscellaneous 536 */ 537 static inline void qdf_ipa_bam_reg_dump(void) 538 { 539 return __qdf_ipa_bam_reg_dump(); 540 } 541 542 static inline int qdf_ipa_get_ep_mapping(qdf_ipa_client_type_t client) 543 { 544 return __qdf_ipa_get_ep_mapping(client); 545 } 546 547 static inline void qdf_ipa_proxy_clk_vote(void) 548 { 549 return __qdf_ipa_proxy_clk_vote(); 550 } 551 552 static inline void qdf_ipa_proxy_clk_unvote(void) 553 { 554 return __qdf_ipa_proxy_clk_unvote(); 555 } 556 557 static inline bool qdf_ipa_is_client_handle_valid(u32 clnt_hdl) 558 { 559 return __qdf_ipa_is_client_handle_valid(clnt_hdl); 560 } 561 562 static inline qdf_ipa_client_type_t qdf_ipa_get_client_mapping(int pipe_idx) 563 { 564 return __qdf_ipa_get_client_mapping(pipe_idx); 565 } 566 567 static inline qdf_ipa_rm_resource_name_t qdf_ipa_get_rm_resource_from_ep( 568 int pipe_idx) 569 { 570 return __qdf_ipa_get_rm_resource_from_ep(pipe_idx); 571 } 572 573 static inline bool qdf_ipa_get_modem_cfg_emb_pipe_flt(void) 574 { 575 return __qdf_ipa_get_modem_cfg_emb_pipe_flt(); 576 } 577 578 static inline int qdf_ipa_create_wdi_mapping(u32 num_buffers, 579 __qdf_ipa_wdi_buffer_info_t *info) 580 { 581 return __qdf_ipa_create_wdi_mapping(num_buffers, info); 582 } 583 584 static inline int qdf_ipa_release_wdi_mapping(u32 num_buffers, 585 qdf_ipa_wdi_buffer_info_t *info) 586 { 587 return __qdf_ipa_release_wdi_mapping(num_buffers, info); 588 } 589 590 static inline int qdf_ipa_disable_apps_wan_cons_deaggr(uint32_t agg_size, 591 uint32_t agg_count) 592 { 593 return __qdf_ipa_disable_apps_wan_cons_deaggr(agg_size, agg_count); 594 } 595 596 static inline const qdf_ipa_gsi_ep_config_t *qdf_ipa_get_gsi_ep_info(qdf_ipa_client_type_t client) 597 { 598 return __qdf_ipa_get_gsi_ep_info(client); 599 } 600 601 static inline int qdf_ipa_stop_gsi_channel(u32 clnt_hdl) 602 { 603 return __qdf_ipa_stop_gsi_channel(clnt_hdl); 604 } 605 606 #endif 607 static inline void qdf_ipa_free_skb(qdf_ipa_rx_data_t *rx_in) 608 { 609 return __qdf_ipa_free_skb(rx_in); 610 } 611 612 static inline int qdf_ipa_uc_reg_rdyCB( 613 qdf_ipa_wdi_uc_ready_params_t *param) 614 { 615 return __qdf_ipa_uc_reg_rdyCB(param); 616 } 617 618 static inline int qdf_ipa_uc_dereg_rdyCB(void) 619 { 620 return __qdf_ipa_uc_dereg_rdyCB(); 621 } 622 623 static inline int qdf_ipa_get_wdi_stats(qdf_ipa_hw_stats_wdi_info_data_t *stats) 624 { 625 return __qdf_ipa_get_wdi_stats(stats); 626 } 627 628 static inline int qdf_ipa_register_ipa_ready_cb( 629 void (*qdf_ipa_ready_cb)(void *user_data), 630 void *user_data) 631 { 632 return __qdf_ipa_register_ipa_ready_cb(qdf_ipa_ready_cb, user_data); 633 } 634 635 static inline int qdf_ipa_setup_sys_pipe(qdf_ipa_sys_connect_params_t *sys_in, 636 u32 *clnt_hdl) 637 { 638 return __qdf_ipa_setup_sys_pipe(sys_in, clnt_hdl); 639 } 640 641 static inline int qdf_ipa_teardown_sys_pipe(u32 clnt_hdl) 642 { 643 return __qdf_ipa_teardown_sys_pipe(clnt_hdl); 644 } 645 646 /* 647 * Messaging 648 */ 649 static inline int qdf_ipa_send_msg(qdf_ipa_msg_meta_t *meta, void *buff, 650 ipa_msg_free_fn callback) 651 { 652 return __qdf_ipa_send_msg(meta, buff, callback); 653 } 654 655 static inline bool qdf_ipa_is_ready(void) 656 { 657 return __qdf_ipa_is_ready(); 658 } 659 660 #ifdef FEATURE_METERING 661 static inline int qdf_ipa_broadcast_wdi_quota_reach_ind(uint32_t index, 662 uint64_t quota_bytes) 663 { 664 return __qdf_ipa_broadcast_wdi_quota_reach_ind(index, quota_bytes); 665 } 666 #endif 667 668 #ifdef ENABLE_SMMU_S1_TRANSLATION 669 /** 670 * qdf_get_ipa_smmu_enabled() - to get IPA SMMU enable status 671 * 672 * Return: true when IPA SMMU enabled, otherwise false 673 */ 674 static inline bool qdf_get_ipa_smmu_enabled(void) 675 { 676 return __qdf_get_ipa_smmu_enabled(); 677 } 678 #endif 679 680 #ifdef IPA_LAN_RX_NAPI_SUPPORT 681 /** 682 * qdf_ipa_get_lan_rx_napi() - Check if NAPI is enabled in LAN 683 * RX DP 684 * 685 * Returns: true if enabled, false otherwise 686 */ 687 static inline bool qdf_ipa_get_lan_rx_napi(void) 688 { 689 return __qdf_ipa_get_lan_rx_napi(); 690 } 691 #else 692 static inline bool qdf_ipa_get_lan_rx_napi(void) 693 { 694 return false; 695 } 696 #endif /* IPA_LAN_RX_NAPI_SUPPORT */ 697 #endif /* IPA_OFFLOAD */ 698 #endif /* _QDF_IPA_H */ 699