qdf_ipa.h 19 KB

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