xref: /OK3568_Linux_fs/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/pom.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * Broadcom Dongle Host Driver (DHD), common DHD core.
3  *
4  * Copyright (C) 2020, Broadcom.
5  *
6  *      Unless you and Broadcom execute a separate written software license
7  * agreement governing use of this software, this software is licensed to you
8  * under the terms of the GNU General Public License version 2 (the "GPL"),
9  * available at http://www.broadcom.com/licenses/GPLv2.php, with the
10  * following added to such license:
11  *
12  *      As a special exception, the copyright holders of this software give you
13  * permission to link this software with independent modules, and to copy and
14  * distribute the resulting executable under terms of your choice, provided that
15  * you also meet, for each linked independent module, the terms and conditions of
16  * the license of that module.  An independent module is a module which is not
17  * derived from this software.  The special exception does not apply to any
18  * modifications of the software.
19  *
20  *
21  * <<Broadcom-WL-IPTag/Open:>>
22  *
23  * $Id:  $
24  */
25 
26 /*
27  * NOTE:-
28  * This file is a exact copy of trunk/components/opensource/pom/pom.h.
29  * Any changes needed to this file should reflect in trunk too.
30  * Otherwise POM(power on off manager) and dhd will go out of sync
31  */
32 
33 /*
34  * Donot change the order of func ids below.
35  * Order of invoking the power off and power on handlers is importent during
36  * power toggle through API: pom_toggle_reg_on.
37  * WLAN FW should be loaded first after REG-ON. Otherwise SR doesnot work.
38  *
39  */
40 enum pom_func_id {
41 	WLAN_FUNC_ID = 0,
42 	BT_FUNC_ID = 1,
43 	MAX_COEX_FUNC = 2
44 };
45 
46 enum pom_toggle_reason {
47 	BY_WLAN_DUE_TO_WLAN = 0,
48 	BY_WLAN_DUE_TO_BT = 1,
49 	BY_BT_DUE_TO_BT = 2,
50 	BY_BT_DUE_TO_WLAN = 3,
51 	BY_USER_PROCESS = 4,
52 	BY_UNKNOWN_REASON = 5
53 };
54 
55 /* Common structure to be used to register and de-register from BT/WLAN */
56 typedef struct pom_func_handler {
57 	unsigned char func_id;
58 	void *handler;
59 	int (*power_off)(void *handler, unsigned char reason);
60 	int (*power_on)(void *handler, unsigned char reason);
61 } pom_func_handler_t;
62 
63 /* Register call back during attach of each function */
64 extern int pom_func_register(struct pom_func_handler *func);
65 
66 /* De-Register call back during detach of each function */
67 extern int pom_func_deregister(struct pom_func_handler *func);
68 
69 /* Toggle Reg ON, called to recover from bad state */
70 extern int pom_toggle_reg_on(unsigned char func_id, unsigned char reason);
71