wlan_pmo_ucfg_api.h 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596
  1. /*
  2. * Copyright (c) 2017 The Linux Foundation. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for
  5. * any purpose with or without fee is hereby granted, provided that the
  6. * above copyright notice and this permission notice appear in all
  7. * copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
  10. * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
  11. * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
  12. * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  13. * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  14. * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  15. * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  16. * PERFORMANCE OF THIS SOFTWARE.
  17. */
  18. /**
  19. * DOC: Declare public API related to the pmo called by north bound HDD/OSIF
  20. */
  21. #ifndef _WLAN_PMO_UCFG_API_H_
  22. #define _WLAN_PMO_UCFG_API_H_
  23. #include "wlan_pmo_arp_public_struct.h"
  24. #include "wlan_pmo_ns_public_struct.h"
  25. #include "wlan_pmo_gtk_public_struct.h"
  26. #include "wlan_pmo_mc_addr_filtering.h"
  27. #include "wlan_pmo_mc_addr_filtering_public_struct.h"
  28. #include "wlan_pmo_wow_public_struct.h"
  29. #include "wlan_pmo_common_public_struct.h"
  30. #include "wlan_pmo_obj_mgmt_api.h"
  31. #include "wlan_pmo_pkt_filter_public_struct.h"
  32. #include "wlan_pmo_hw_filter_public_struct.h"
  33. /**
  34. * ucfg_pmo_is_ap_mode_supports_arp_ns() - Check ap mode support arp&ns offload
  35. * @psoc: objmgr psoc
  36. * @vdev_opmode: vdev opmode
  37. *
  38. * Return: true in case support else false
  39. */
  40. bool ucfg_pmo_is_ap_mode_supports_arp_ns(struct wlan_objmgr_psoc *psoc,
  41. enum QDF_OPMODE vdev_opmode);
  42. /**
  43. * ucfg_pmo_is_vdev_connected() - to check whether peer is associated or not
  44. * @vdev: objmgr vdev
  45. *
  46. * Return: true in case success else false
  47. */
  48. bool ucfg_pmo_is_vdev_connected(struct wlan_objmgr_vdev *vdev);
  49. /**
  50. * pmo_ucfg_is_vdev_supports_offload() - check offload is supported on vdev
  51. * @vdev: objmgr vdev
  52. *
  53. * Return: true in case success else false
  54. */
  55. bool pmo_ucfg_is_vdev_supports_offload(struct wlan_objmgr_vdev *vdev);
  56. /**
  57. * ucfg_pmo_get_psoc_config(): API to get the psoc user configurations of pmo
  58. * @psoc: objmgr psoc handle
  59. * @psoc_cfg: fill the current psoc user configurations.
  60. *
  61. * Return pmo psoc configurations
  62. */
  63. QDF_STATUS ucfg_pmo_get_psoc_config(struct wlan_objmgr_psoc *psoc,
  64. struct pmo_psoc_cfg *psoc_cfg);
  65. /**
  66. * ucfg_pmo_update_psoc_config(): API to update the psoc user configurations
  67. * @psoc: objmgr psoc handle
  68. * @psoc_cfg: pmo psoc configurations
  69. *
  70. * This api shall be used for soc config initialization as well update.
  71. * In case of update caller must first call pmo_get_psoc_cfg to get
  72. * current config and then apply changes on top of current config.
  73. *
  74. * Return QDF_STATUS -in case of success else return error
  75. */
  76. QDF_STATUS ucfg_pmo_update_psoc_config(struct wlan_objmgr_psoc *psoc,
  77. struct pmo_psoc_cfg *psoc_cfg);
  78. /**
  79. * pmo_ucfg_enable_wakeup_event() - enable wow wakeup events
  80. * @psoc: objmgr psoc
  81. * @vdev_id: vdev id
  82. * @bitmap: Event bitmap
  83. *
  84. * Return: none
  85. */
  86. void pmo_ucfg_enable_wakeup_event(struct wlan_objmgr_psoc *psoc,
  87. uint32_t vdev_id, uint32_t *bitmap);
  88. /**
  89. * pmo_ucfg_disable_wakeup_event() - disable wow wakeup events
  90. * @psoc: objmgr psoc
  91. * @vdev_id: vdev id
  92. * @bitmap: Event bitmap
  93. *
  94. * Return: none
  95. */
  96. void pmo_ucfg_disable_wakeup_event(struct wlan_objmgr_psoc *psoc,
  97. uint32_t vdev_id, uint32_t bitmap);
  98. /**
  99. * pmo_ucfg_cache_arp_offload_req(): API to cache arp req in pmo vdev priv ctx
  100. * @arp_req: pmo arp req param
  101. *
  102. * Return QDF_STATUS -in case of success else return error
  103. */
  104. QDF_STATUS pmo_ucfg_cache_arp_offload_req(struct pmo_arp_req *arp_req);
  105. /**
  106. * pmo_ucfg_flush_arp_offload_req(): API to flush arp req from pmo vdev priv ctx
  107. * @vdev: objmgr vdev param
  108. *
  109. * Return QDF_STATUS -in case of success else return error
  110. */
  111. QDF_STATUS pmo_ucfg_flush_arp_offload_req(struct wlan_objmgr_vdev *vdev);
  112. /**
  113. * pmo_ucfg_enable_arp_offload_in_fwr(): API to enable arp req in fwr
  114. * @vdev: objmgr vdev param
  115. * @trigger: triger reason for enable arp offload
  116. *
  117. * API to enable cache arp req in fwr from pmo vdev priv ctx
  118. *
  119. * Return QDF_STATUS -in case of success else return error
  120. */
  121. QDF_STATUS pmo_ucfg_enable_arp_offload_in_fwr(struct wlan_objmgr_vdev *vdev,
  122. enum pmo_offload_trigger trigger);
  123. /**
  124. * pmo_ucfg_disable_arp_offload_in_fwr(): API to disable arp req in fwr
  125. * @vdev: objmgr vdev param
  126. * @trigger: triger reason for disable arp offload
  127. * API to disable cache arp req in fwr
  128. *
  129. * Return QDF_STATUS -in case of success else return error
  130. */
  131. QDF_STATUS pmo_ucfg_disable_arp_offload_in_fwr(struct wlan_objmgr_vdev *vdev,
  132. enum pmo_offload_trigger trigger);
  133. /**
  134. * pmo_ucfg_cache_ns_offload_req(): API to cache ns req in pmo vdev priv ctx
  135. * @ns_req: pmo ns req param
  136. *
  137. * Return QDF_STATUS -in case of success else return error
  138. */
  139. QDF_STATUS pmo_ucfg_cache_ns_offload_req(struct pmo_ns_req *ns_req);
  140. /**
  141. * pmo_ucfg_flush_ns_offload_req(): API to flush ns req from pmo vdev priv ctx
  142. * @vdev: vdev ojbmgr handle
  143. *
  144. * Return QDF_STATUS -in case of success else return error
  145. */
  146. QDF_STATUS pmo_ucfg_flush_ns_offload_req(struct wlan_objmgr_vdev *vdev);
  147. /**
  148. * pmo_ucfg_enable_ns_offload_in_fwr(): API to enable ns req in fwr
  149. * @arp_req: pmo arp req param
  150. * @trigger: trigger reason to enable ns offload
  151. *
  152. * API to enable cache ns req in fwr from pmo vdev priv ctx
  153. *
  154. * Return QDF_STATUS -in case of success else return error
  155. */
  156. QDF_STATUS pmo_ucfg_enable_ns_offload_in_fwr(struct wlan_objmgr_vdev *vdev,
  157. enum pmo_offload_trigger trigger);
  158. /**
  159. * pmo_ucfg_disable_ns_offload_in_fwr(): API to disable ns req in fwr
  160. * @arp_req: pmo arp req param
  161. * @trigger: trigger reason to disable ns offload
  162. *
  163. * API to disable ns req in fwr
  164. *
  165. * Return QDF_STATUS -in case of success else return error
  166. */
  167. QDF_STATUS pmo_ucfg_disable_ns_offload_in_fwr(struct wlan_objmgr_vdev *vdev,
  168. enum pmo_offload_trigger trigger);
  169. /**
  170. * pmo_ucfg_enable_hw_filter_in_fwr() - enable previously configured hw filter
  171. * @vdev: objmgr vdev to configure
  172. *
  173. * Return: QDF_STATUS
  174. */
  175. QDF_STATUS pmo_ucfg_enable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev);
  176. /**
  177. * pmo_ucfg_disable_hw_filter_in_fwr() - disable previously configured hw filter
  178. * @vdev: objmgr vdev to configure
  179. *
  180. * Return: QDF_STATUS
  181. */
  182. QDF_STATUS pmo_ucfg_disable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev);
  183. /**
  184. * pmo_ucfg_max_mc_addr_supported() - to get max support mc address
  185. * @psoc: objmgr psoc
  186. *
  187. * Return: max mc addr supported count for all vdev in corresponding psoc
  188. */
  189. uint8_t pmo_ucfg_max_mc_addr_supported(struct wlan_objmgr_psoc *psoc);
  190. /**
  191. * pmo_ucfg_cache_mc_addr_list(): API to cache mc addr list in pmo vdev priv obj
  192. * @psoc: objmgr psoc handle
  193. * @vdev_id: vdev id
  194. * @gtk_req: pmo gtk req param
  195. *
  196. * Return QDF_STATUS_SUCCESS -in case of success else return error
  197. */
  198. QDF_STATUS pmo_ucfg_cache_mc_addr_list(
  199. struct pmo_mc_addr_list_params *mc_list_config);
  200. /**
  201. * pmo_ucfg_flush_mc_addr_list(): API to flush mc addr list in pmo vdev priv obj
  202. * @psoc: objmgr psoc handle
  203. * @vdev_id: vdev id
  204. *
  205. * Return QDF_STATUS_SUCCESS -in case of success else return error
  206. */
  207. QDF_STATUS pmo_ucfg_flush_mc_addr_list(struct wlan_objmgr_psoc *psoc,
  208. uint8_t vdev_id);
  209. /**
  210. * pmo_ucfg_enhance_mc_filter_enable() - enable enhanced multicast filtering
  211. * @vdev: the vdev to enable enhanced multicast filtering for
  212. *
  213. * Return: QDF_STATUS
  214. */
  215. static inline QDF_STATUS
  216. pmo_ucfg_enhanced_mc_filter_enable(struct wlan_objmgr_vdev *vdev)
  217. {
  218. return pmo_core_enhanced_mc_filter_enable(vdev);
  219. }
  220. /**
  221. * pmo_ucfg_enhance_mc_filter_disable() - disable enhanced multicast filtering
  222. * @vdev: the vdev to disable enhanced multicast filtering for
  223. *
  224. * Return: QDF_STATUS
  225. */
  226. static inline QDF_STATUS
  227. pmo_ucfg_enhanced_mc_filter_disable(struct wlan_objmgr_vdev *vdev)
  228. {
  229. return pmo_core_enhanced_mc_filter_disable(vdev);
  230. }
  231. /**
  232. * pmo_ucfg_enable_mc_addr_filtering_in_fwr(): Enable cached mc add list in fwr
  233. * @psoc: objmgr psoc handle
  234. * @vdev_id: vdev id
  235. * @gtk_req: pmo gtk req param
  236. * @action: true for enable els false
  237. *
  238. * API to enable cached mc add list in fwr
  239. *
  240. * Return QDF_STATUS_SUCCESS -in case of success else return error
  241. */
  242. QDF_STATUS pmo_ucfg_enable_mc_addr_filtering_in_fwr(
  243. struct wlan_objmgr_psoc *psoc,
  244. uint8_t vdev_id,
  245. enum pmo_offload_trigger trigger);
  246. /**
  247. * pmo_ucfg_disable_mc_addr_filtering_in_fwr(): Disable cached mc addr list
  248. * @psoc: objmgr psoc handle
  249. * @vdev_id: vdev id
  250. * @gtk_req: pmo gtk req param
  251. * @action: true for enable els false
  252. *
  253. * API to disable cached mc add list in fwr
  254. *
  255. * Return QDF_STATUS_SUCCESS -in case of success else return error
  256. */
  257. QDF_STATUS pmo_ucfg_disable_mc_addr_filtering_in_fwr(
  258. struct wlan_objmgr_psoc *psoc,
  259. uint8_t vdev_id,
  260. enum pmo_offload_trigger trigger);
  261. /**
  262. * pmo_ucfg_cache_gtk_offload_req(): API to cache gtk req in pmo vdev priv obj
  263. * @vdev: objmgr vdev handle
  264. * @gtk_req: pmo gtk req param
  265. *
  266. * Return QDF_STATUS_SUCCESS -in case of success else return error
  267. */
  268. QDF_STATUS pmo_ucfg_cache_gtk_offload_req(struct wlan_objmgr_vdev *vdev,
  269. struct pmo_gtk_req *gtk_req);
  270. /**
  271. * pmo_ucfg_flush_gtk_offload_req(): Flush saved gtk req from pmo vdev priv obj
  272. * @vdev: objmgr vdev handle
  273. *
  274. * Return QDF_STATUS_SUCCESS -in case of success else return error
  275. */
  276. QDF_STATUS pmo_ucfg_flush_gtk_offload_req(struct wlan_objmgr_vdev *vdev);
  277. /**
  278. * pmo_ucfg_enable_gtk_offload_in_fwr(): enable cached gtk request in fwr
  279. * @vdev: objmgr vdev handle
  280. *
  281. * Return QDF_STATUS_SUCCESS -in case of success else return error
  282. */
  283. QDF_STATUS pmo_ucfg_enable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev);
  284. /**
  285. * pmo_ucfg_disable_gtk_offload_in_fwr(): disable cached gtk request in fwr
  286. * @vdev: objmgr vdev handle
  287. *
  288. * Return QDF_STATUS_SUCCESS -in case of success else return error
  289. */
  290. QDF_STATUS pmo_ucfg_disable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev);
  291. /**
  292. * pmo_ucfg_set_pkt_filter() - Set packet filter
  293. * @psoc: objmgr psoc handle
  294. * @pmo_set_pkt_fltr_req:
  295. * @vdev_id: vdev id
  296. *
  297. * Return QDF_STATUS_SUCCESS -in case of success else return error
  298. */
  299. QDF_STATUS pmo_ucfg_set_pkt_filter(struct wlan_objmgr_psoc *psoc,
  300. struct pmo_rcv_pkt_fltr_cfg *pmo_set_pkt_fltr_req,
  301. uint8_t vdev_id);
  302. /**
  303. * pmo_ucfg_clear_pkt_filter() - Clear packet filter
  304. * @psoc: objmgr psoc handle
  305. * @pmo_clr_pkt_fltr_req:
  306. * @vdev_id: vdev id
  307. *
  308. * Return QDF_STATUS_SUCCESS -in case of success else return error
  309. */
  310. QDF_STATUS pmo_ucfg_clear_pkt_filter(struct wlan_objmgr_psoc *psoc,
  311. struct pmo_rcv_pkt_fltr_clear_param *pmo_clr_pkt_fltr_param,
  312. uint8_t vdev_id);
  313. /**
  314. * pmo_ucfg_get_gtk_rsp(): API to send gtk response request to fwr
  315. * @vdev: objmgr vdev handle
  316. * @gtk_rsp: pmo gtk response request
  317. *
  318. * This api will send gtk response request to fwr
  319. *
  320. * Return QDF_STATUS_SUCCESS -in case of success else return error
  321. */
  322. QDF_STATUS pmo_ucfg_get_gtk_rsp(struct wlan_objmgr_vdev *vdev,
  323. struct pmo_gtk_rsp_req *gtk_rsp_req);
  324. /**
  325. * pmo_ucfg_update_extscan_in_progress(): update extscan is in progress flags
  326. * @vdev: objmgr vdev handle
  327. * @value:true if extscan is in progress else false
  328. *
  329. * Return: TRUE/FALSE
  330. */
  331. void pmo_ucfg_update_extscan_in_progress(struct wlan_objmgr_vdev *vdev,
  332. bool value);
  333. /**
  334. * pmo_ucfg_update_p2plo_in_progress(): update p2plo is in progress flags
  335. * @vdev: objmgr vdev handle
  336. * @value:true if p2plo is in progress else false
  337. *
  338. * Return: TRUE/FALSE
  339. */
  340. void pmo_ucfg_update_p2plo_in_progress(struct wlan_objmgr_vdev *vdev,
  341. bool value);
  342. /**
  343. * pmo_ucfg_lphb_config_req() - Handles lphb config request for psoc
  344. * @psoc: objmgr psoc handle
  345. * @lphb_req: low power heart beat request
  346. * @lphb_cb_ctx: Context which needs to pass to soif when lphb callback called
  347. * @callback: upon receiving of lphb indication from fwr call lphb callback
  348. *
  349. * Return: QDF status
  350. */
  351. QDF_STATUS pmo_ucfg_lphb_config_req(struct wlan_objmgr_psoc *psoc,
  352. struct pmo_lphb_req *lphb_req, void *lphb_cb_ctx,
  353. pmo_lphb_callback callback);
  354. /**
  355. * pmo_ucfg_update_alt_modulated_dtim_enable() - update alt modulatate dtim
  356. * @vdev: objmgr vdev handle
  357. * @value: true for alt_modulated_dtim enable else false
  358. *
  359. * Return: QDF status
  360. */
  361. void pmo_ucfg_update_alt_modulated_dtim_enable(struct wlan_objmgr_vdev *vdev,
  362. bool value);
  363. /**
  364. * pmo_ucfg_psoc_update_power_save_mode() - update power save mode
  365. * @vdev: objmgr vdev handle
  366. * @value:vdev power save mode
  367. *
  368. * Return: None
  369. */
  370. void pmo_ucfg_psoc_update_power_save_mode(struct wlan_objmgr_psoc *psoc,
  371. uint8_t value);
  372. /**
  373. * pmo_ucfg_psoc_update_dp_handle() - update psoc data path handle
  374. * @psoc: objmgr psoc handle
  375. * @dp_hdl: psoc data path handle
  376. *
  377. * Return: None
  378. */
  379. void pmo_ucfg_psoc_update_dp_handle(struct wlan_objmgr_psoc *psoc,
  380. void *dp_hdl);
  381. /**
  382. * pmo_ucfg_vdev_update_dp_handle() - update vdev data path handle
  383. * @vdev: objmgr vdev handle
  384. * @dp_hdl: vdev data path handle
  385. *
  386. * Return: None
  387. */
  388. void pmo_ucfg_vdev_update_dp_handle(struct wlan_objmgr_vdev *vdev,
  389. void *dp_hdl);
  390. /**
  391. * pmo_ucfg_psoc_update_htc_handle() - update psoc htc layer handle
  392. * @psoc: objmgr psoc handle
  393. * @htc_handle: psoc host-to-tagret layer (htc) handle
  394. *
  395. * Return: None
  396. */
  397. void pmo_ucfg_psoc_update_htc_handle(struct wlan_objmgr_psoc *psoc,
  398. void *htc_handle);
  399. /**
  400. * pmo_ucfg_psoc_set_hif_handle() - Set psoc hif layer handle
  401. * @psoc: objmgr psoc handle
  402. * @hif_handle: hif context handle
  403. *
  404. * Return: None
  405. */
  406. void pmo_ucfg_psoc_set_hif_handle(struct wlan_objmgr_psoc *psoc,
  407. void *hif_handle);
  408. /**
  409. * pmo_ucfg_psoc_set_txrx_handle() - Set psoc pdev txrx layer handle
  410. * @psoc: objmgr psoc handle
  411. * @txrx_handle: pdev txrx context handle
  412. *
  413. * Return: None
  414. */
  415. void pmo_ucfg_psoc_set_txrx_handle(struct wlan_objmgr_psoc *psoc,
  416. void *txrx_handle);
  417. /**
  418. * pmo_ucfg_psoc_user_space_suspend_req() - Handles user space suspend req
  419. * @psoc: objmgr psoc handle
  420. * @type: type of suspend
  421. *
  422. * Handles user space suspend indication for psoc
  423. *
  424. * Return: QDF status
  425. */
  426. QDF_STATUS pmo_ucfg_psoc_user_space_suspend_req(struct wlan_objmgr_psoc *psoc,
  427. enum qdf_suspend_type type);
  428. /**
  429. * pmo_ucfg_psoc_user_space_resume_req() - Handles user space resume req
  430. * @psoc: objmgr psoc handle
  431. * @type: type of suspend from which resume needed
  432. *
  433. * Handles user space resume indication for psoc
  434. *
  435. * Return: QDF status
  436. */
  437. QDF_STATUS pmo_ucfg_psoc_user_space_resume_req(struct wlan_objmgr_psoc *psoc,
  438. enum qdf_suspend_type type);
  439. /**
  440. * pmo_ucfg_psoc_bus_suspend_req(): handles bus suspend for psoc
  441. * @psoc: objmgr psoc
  442. * @type: is this suspend part of runtime suspend or system suspend?
  443. * @wow_params: collection of wow enable override parameters
  444. *
  445. * Bails if a scan is in progress.
  446. * Calls the appropriate handlers based on configuration and event.
  447. *
  448. * Return: QDF_STATUS_SUCCESS for success or error code
  449. */
  450. QDF_STATUS pmo_ucfg_psoc_bus_suspend_req(struct wlan_objmgr_psoc *psoc,
  451. enum qdf_suspend_type type,
  452. struct pmo_wow_enable_params *wow_params);
  453. #ifdef FEATURE_RUNTIME_PM
  454. /**
  455. * pmo_ucfg_psoc_bus_runtime_suspend(): handles bus runtime suspend for psoc
  456. * @psoc: objmgr psoc
  457. * @pld_cb: callback to call link auto suspend
  458. *
  459. * Return: QDF_STATUS_SUCCESS for success or error code
  460. */
  461. QDF_STATUS pmo_ucfg_psoc_bus_runtime_suspend(struct wlan_objmgr_psoc *psoc,
  462. pmo_pld_auto_suspend_cb pld_cb);
  463. /**
  464. * pmo_ucfg_psoc_bus_runtime_resume(): handles bus runtime resume for psoc
  465. * @psoc: objmgr psoc
  466. * @pld_cb: callback to call link auto resume
  467. *
  468. * Return: QDF_STATUS_SUCCESS for success or error code
  469. */
  470. QDF_STATUS pmo_ucfg_psoc_bus_runtime_resume(struct wlan_objmgr_psoc *psoc,
  471. pmo_pld_auto_resume_cb pld_cb);
  472. #endif
  473. /**
  474. * pmo_ucfg_psoc_suspend_target() -Send suspend target command
  475. * @psoc: objmgr psoc handle
  476. * @disable_target_intr: disable target interrupt
  477. *
  478. * Return: QDF_STATUS_SUCCESS for success or error code
  479. */
  480. QDF_STATUS pmo_ucfg_psoc_suspend_target(struct wlan_objmgr_psoc *psoc,
  481. int disable_target_intr);
  482. QDF_STATUS pmo_ucfg_add_wow_user_pattern(struct wlan_objmgr_vdev *vdev,
  483. struct pmo_wow_add_pattern *ptrn);
  484. QDF_STATUS pmo_ucfg_del_wow_user_pattern(struct wlan_objmgr_vdev *vdev,
  485. uint8_t pattern_id);
  486. /**
  487. * pmo_ucfg_psoc_bus_resume() -handle bus resume request for psoc
  488. * @psoc: objmgr psoc handle
  489. * @type: is this suspend part of runtime suspend or system suspend?
  490. *
  491. * Return:QDF_STATUS_SUCCESS on success else error code
  492. */
  493. QDF_STATUS pmo_ucfg_psoc_bus_resume_req(struct wlan_objmgr_psoc *psoc,
  494. enum qdf_suspend_type type);
  495. /**
  496. * pmo_ucfg_get_wow_bus_suspend(): API to check if wow bus is suspended or not
  497. * @psoc: objmgr psoc handle
  498. *
  499. * Return: True if bus suspende else false
  500. */
  501. bool pmo_ucfg_get_wow_bus_suspend(struct wlan_objmgr_psoc *psoc);
  502. /**
  503. * pmo_ucfg_psoc_handle_initial_wake_up() - update initial wake up
  504. * @cb_ctx: objmgr psoc handle as void * due to htc layer is not aware psoc
  505. *
  506. * Return: None
  507. */
  508. void pmo_ucfg_psoc_handle_initial_wake_up(void *cb_ctx);
  509. /**
  510. * pmo_ucfg_psoc_is_target_wake_up_received() - Get initial wake up status
  511. * @psoc: objmgr psoc handle
  512. *
  513. * Return: 0 on success else error code
  514. */
  515. int pmo_ucfg_psoc_is_target_wake_up_received(struct wlan_objmgr_psoc *psoc);
  516. /**
  517. * pmo_ucfg_psoc_is_target_wake_up_received() - Clear initial wake up status
  518. * @psoc: objmgr psoc handle
  519. *
  520. * Return: 0 on success else error code
  521. */
  522. int pmo_ucfg_psoc_clear_target_wake_up(struct wlan_objmgr_psoc *psoc);
  523. /**
  524. * pmo_ucfg_psoc_target_suspend_acknowledge() - Clear initial wake up status
  525. * @psoc: objmgr psoc handle
  526. *
  527. * Return: None
  528. */
  529. void pmo_ucfg_psoc_target_suspend_acknowledge(void *context, bool wow_nack);
  530. /**
  531. * pmo_ucfg_psoc_wakeup_host_event_received() - got host wake up evennt from fwr
  532. * @psoc: objmgr psoc handle
  533. *
  534. * Return: None
  535. */
  536. void pmo_ucfg_psoc_wakeup_host_event_received(struct wlan_objmgr_psoc *psoc);
  537. #endif /* end of _WLAN_PMO_UCFG_API_H_ */