blob: 7c64182bdb1e1cf96e6b34d3aa827b9f60ce9fc1 [file] [log] [blame]
Mukul Sharmad75a6672017-06-22 15:40:53 +05301/*
Wu Gaoa9d336b2018-05-30 14:48:04 +08002 * Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
Jeff Johnsonb4c29962017-10-07 19:35:14 -07003 *
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 */
Mukul Sharmad75a6672017-06-22 15:40:53 +053018/**
19 * DOC: declare utility API related to the pmo component
20 * called by other components
21 */
22
23#ifndef _WLAN_PMO_OBJ_MGMT_API_H_
24#define _WLAN_PMO_OBJ_MGMT_API_H_
25
26#include "wlan_pmo_common_public_struct.h"
27#include "wlan_pmo_obj_mgmt_public_struct.h"
28
Wu Gaoa9d336b2018-05-30 14:48:04 +080029#ifdef WLAN_POWER_MANAGEMENT_OFFLOAD
Mukul Sharmad75a6672017-06-22 15:40:53 +053030/**
31 * pmo_init() - initialize pmo_ctx context.
32 *
33 * This function initializes the power manager offloads (a.k.a pmo) context.
34 *
35 * Return: QDF_STATUS_SUCCESS - in case of success else return error
36 */
37QDF_STATUS pmo_init(void);
38
39/**
40 * pmo_deinit() - De initialize pmo_ctx context.
41 *
42 * This function De initializes power manager offloads (a.k.a pmo) contex.
43 *
44 * Return: QDF_STATUS_SUCCESS - in case of success else return error
45 */
46QDF_STATUS pmo_deinit(void);
47
48/**
49 * pmo_psoc_object_created_notification(): pmo psoc create handler
50 * @psoc: psoc which is going to created by objmgr
51 * @arg: argument for vdev create handler
52 *
53 * PMO, register this api with objmgr to detect psoc is created in fwr
54 *
55 * Return QDF_STATUS status in case of success else return error
56 */
57QDF_STATUS pmo_psoc_object_created_notification(
58 struct wlan_objmgr_psoc *psoc, void *arg);
59
60/**
61 * pmo_psoc_object_destroyed_notification(): pmo psoc delete handler
62 * @psco: psoc which is going to delete by objmgr
63 * @arg: argument for vdev delete handler
64 *
65 * PMO, register this api with objmgr to detect psoc is deleted in fwr
66 *
67 * Return QDF_STATUS status in case of success else return error
68 */
69QDF_STATUS pmo_psoc_object_destroyed_notification(
70 struct wlan_objmgr_psoc *psoc, void *arg);
71
72/**
73 * pmo_vdev_object_created_notification(): pmo vdev create handler
74 * @vdev: vdev which is going to created by objmgr
75 * @arg: argument for vdev create handler
76 *
77 * PMO, register this api with objmgr to detect vdev is created in fwr
78 *
79 * Return QDF_STATUS status in case of success else return error
80 */
81QDF_STATUS pmo_vdev_object_created_notification(
82 struct wlan_objmgr_vdev *vdev, void *arg);
83
84/**
85 * pmo_vdev_ready() - handles vdev ready in firmware event
86 * @vdev: vdev which is ready in firmware
87 *
88 * Objmgr vdev_create event does not guarantee vdev creation in firmware.
89 * Any logic that would normally go in the vdev_create event, but needs to
90 * communicate with firmware, needs to go here instead.
91 *
92 * Return QDF_STATUS
93 */
94QDF_STATUS pmo_vdev_ready(struct wlan_objmgr_vdev *vdev);
95
96/**
97 * pmo_vdev_object_destroyed_notification(): pmo vdev delete handler
98 * @vdev: vdev which is going to delete by objmgr
99 * @arg: argument for vdev delete handler
100 *
101 * PMO, register this api with objmgr to detect vdev is deleted in fwr
102 *
103 * Return QDF_STATUS status in case of success else return error
104 */
105QDF_STATUS pmo_vdev_object_destroyed_notification(
106 struct wlan_objmgr_vdev *vdev, void *arg);
107
108/**
109 * pmo_register_suspend_handler(): register suspend handler for components
110 * @id: component id
111 * @handler: resume handler for the mention component
112 * @arg: argument to pass while calling resume handler
113 *
114 * Return QDF_STATUS status -in case of success else return error
115 */
116QDF_STATUS pmo_register_suspend_handler(
117 enum wlan_umac_comp_id id,
118 pmo_psoc_suspend_handler handler,
119 void *arg);
120
121/**
122 * pmo_unregister_suspend_handler():unregister suspend handler for components
123 * @id: component id
124 * @handler: resume handler for the mention component
125 *
126 * Return QDF_STATUS status -in case of success else return error
127 */
128QDF_STATUS pmo_unregister_suspend_handler(
129 enum wlan_umac_comp_id id,
130 pmo_psoc_suspend_handler handler);
131
132/**
133 * pmo_register_resume_handler(): API to register resume handler for components
134 * @id: component id
135 * @handler: resume handler for the mention component
136 * @arg: argument to pass while calling resume handler
137 *
138 * Return QDF_STATUS status - in case of success else return error
139 */
140QDF_STATUS pmo_register_resume_handler(
141 enum wlan_umac_comp_id id,
142 pmo_psoc_resume_handler handler,
143 void *arg);
144
145/**
146 * pmo_unregister_resume_handler(): unregister resume handler for components
147 * @id: component id
148 * @handler: resume handler for the mention component
149 *
150 * Return QDF_STATUS status - in case of success else return error
151 */
152QDF_STATUS pmo_unregister_resume_handler(
153 enum wlan_umac_comp_id id,
154 pmo_psoc_resume_handler handler);
155
156/**
157 * pmo_suspend_all_components(): API to suspend all component
158 * @psoc:objmgr psoc
159 * @suspend_type: Tell suspend type (apps suspend / runtime suspend)
160 *
161 * Return QDF_STATUS status - in case of success else return error
162 */
163QDF_STATUS pmo_suspend_all_components(struct wlan_objmgr_psoc *psoc,
164 enum qdf_suspend_type suspend_type);
165
166/**
167 * pmo_resume_all_components(): API to resume all component
168 * @psoc:objmgr psoc
169 * @suspend_type: Tell suspend type from which resume is required
170 *
171 * Return QDF_STATUS status - in case of success else return error
172 */
173QDF_STATUS pmo_resume_all_components(struct wlan_objmgr_psoc *psoc,
174 enum qdf_suspend_type suspend_type);
175
176/**
177 * pmo_register_pause_bitmap_notifier(): API to register pause bitmap notifier
178 * @psoc: objmgr psoc handle
179 * @handler: pause bitmap updated notifier
180 *
181 * Return QDF_STATUS status - in case of success else return error
182 */
183QDF_STATUS pmo_register_pause_bitmap_notifier(
184 struct wlan_objmgr_psoc *psoc,
185 pmo_notify_pause_bitmap handler);
186
187/**
188 * pmo_unregister_pause_bitmap_notifier(): API to unregister pause bitmap notifier
189 * @psoc: objmgr psoc handle
190 * @handler: pause bitmap updated notifier
191 *
192 * Return QDF_STATUS status - in case of success else return error
193 */
194QDF_STATUS pmo_unregister_pause_bitmap_notifier(
195 struct wlan_objmgr_psoc *psoc,
196 pmo_notify_pause_bitmap handler);
197
198/**
199 * pmo_register_get_pause_bitmap(): API to get register pause bitmap notifier
200 * @psoc: objmgr psoc handle
201 * @handler: pause bitmap updated notifier
202 *
203 * Return QDF_STATUS status - in case of success else return error
204 */
205QDF_STATUS pmo_register_get_pause_bitmap(struct wlan_objmgr_psoc *psoc,
206 pmo_get_pause_bitmap handler);
207
208/**
209 * pmo_unregister_get_pause_bitmap(): API to unregister get pause bitmap callback
210 * @psoc: objmgr psoc handle
211 * @handler: pause bitmap updated notifier
212 *
213 * Return QDF_STATUS status - in case of success else return error
214 */
215QDF_STATUS pmo_unregister_get_pause_bitmap(struct wlan_objmgr_psoc *psoc,
216 pmo_get_pause_bitmap handler);
217
218
219/**
220 * pmo_register_is_device_in_low_pwr_mode(): API to get register device power
221 * save check notifier.
222 * @psoc: objmgr psoc handle
223 * @handler: device power save check notifier
224 *
225 * Return QDF_STATUS status - in case of success else return error
226 */
227QDF_STATUS pmo_register_is_device_in_low_pwr_mode(struct wlan_objmgr_psoc *psoc,
228 pmo_is_device_in_low_pwr_mode handler);
229
230/**
231 * pmo_unregister_is_device_in_low_pwr_mode(): API to unregister device power
232 * save check notifier.
233 * @psoc: objmgr psoc handle
234 * @handler: device power save check notifier
235 *
236 * Return QDF_STATUS status - in case of success else return error
237 */
238QDF_STATUS pmo_unregister_is_device_in_low_pwr_mode(
239 struct wlan_objmgr_psoc *psoc,
240 pmo_is_device_in_low_pwr_mode handler);
Wu Gaoa9d336b2018-05-30 14:48:04 +0800241#else
242static inline QDF_STATUS pmo_init(void)
243{
244 return QDF_STATUS_SUCCESS;
245}
246
247static inline QDF_STATUS pmo_deinit(void)
248{
249 return QDF_STATUS_SUCCESS;
250}
251
252static inline QDF_STATUS
253pmo_psoc_object_created_notification(
254 struct wlan_objmgr_psoc *psoc, void *arg)
255{
256 return QDF_STATUS_SUCCESS;
257}
258
259static inline QDF_STATUS
260pmo_psoc_object_destroyed_notification(
261 struct wlan_objmgr_psoc *psoc, void *arg)
262{
263 return QDF_STATUS_SUCCESS;
264}
265
266static inline QDF_STATUS
267pmo_vdev_object_created_notification(
268 struct wlan_objmgr_vdev *vdev, void *arg)
269{
270 return QDF_STATUS_SUCCESS;
271}
272
273static inline QDF_STATUS
274pmo_vdev_ready(struct wlan_objmgr_vdev *vdev)
275{
276 return QDF_STATUS_SUCCESS;
277}
278
279static inline QDF_STATUS
280pmo_vdev_object_destroyed_notification(
281 struct wlan_objmgr_vdev *vdev, void *arg)
282{
283 return QDF_STATUS_SUCCESS;
284}
285
286static inline QDF_STATUS
287pmo_register_suspend_handler(
288 enum wlan_umac_comp_id id,
289 pmo_psoc_suspend_handler handler,
290 void *arg)
291{
292 return QDF_STATUS_SUCCESS;
293}
294
295static inline QDF_STATUS
296pmo_unregister_suspend_handler(
297 enum wlan_umac_comp_id id,
298 pmo_psoc_suspend_handler handler)
299{
300 return QDF_STATUS_SUCCESS;
301}
302
303static inline QDF_STATUS
304pmo_register_resume_handler(
305 enum wlan_umac_comp_id id,
306 pmo_psoc_resume_handler handler,
307 void *arg)
308{
309 return QDF_STATUS_SUCCESS;
310}
311
312static inline QDF_STATUS
313pmo_unregister_resume_handler(
314 enum wlan_umac_comp_id id,
315 pmo_psoc_resume_handler handler)
316{
317 return QDF_STATUS_SUCCESS;
318}
319
320static inline QDF_STATUS
321pmo_suspend_all_components(
322 struct wlan_objmgr_psoc *psoc,
323 enum qdf_suspend_type suspend_type)
324{
325 return QDF_STATUS_SUCCESS;
326}
327
328static inline QDF_STATUS
329pmo_resume_all_components(
330 struct wlan_objmgr_psoc *psoc,
331 enum qdf_suspend_type suspend_type)
332{
333 return QDF_STATUS_SUCCESS;
334}
335
336static inline QDF_STATUS
337pmo_register_pause_bitmap_notifier(
338 struct wlan_objmgr_psoc *psoc,
339 pmo_notify_pause_bitmap handler)
340{
341 return QDF_STATUS_SUCCESS;
342}
343
344static inline QDF_STATUS
345pmo_unregister_pause_bitmap_notifier(
346 struct wlan_objmgr_psoc *psoc,
347 pmo_notify_pause_bitmap handler)
348{
349 return QDF_STATUS_SUCCESS;
350}
351
352static inline QDF_STATUS
353pmo_register_get_pause_bitmap(
354 struct wlan_objmgr_psoc *psoc,
355 pmo_get_pause_bitmap handler)
356{
357 return QDF_STATUS_SUCCESS;
358}
359
360static inline QDF_STATUS
361pmo_unregister_get_pause_bitmap(
362 struct wlan_objmgr_psoc *psoc,
363 pmo_get_pause_bitmap handler)
364{
365 return QDF_STATUS_SUCCESS;
366}
367
368static inline QDF_STATUS
369pmo_register_is_device_in_low_pwr_mode(
370 struct wlan_objmgr_psoc *psoc,
371 pmo_is_device_in_low_pwr_mode handler)
372{
373 return QDF_STATUS_SUCCESS;
374}
375
376static inline QDF_STATUS
377pmo_unregister_is_device_in_low_pwr_mode(
378 struct wlan_objmgr_psoc *psoc,
379 pmo_is_device_in_low_pwr_mode handler)
380{
381 return QDF_STATUS_SUCCESS;
382}
383#endif /* WLAN_POWER_MANAGEMENT_OFFLOAD */
Mukul Sharmad75a6672017-06-22 15:40:53 +0530384
385#endif /* end of _WLAN_PMO_OBJ_MGMT_API_H_ */