xref: /wlan-driver/qcacld-3.0/components/coex/dispatcher/inc/wlan_coex_ucfg_api.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2020, The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for any
6*5113495bSYour Name  * purpose with or without fee is hereby granted, provided that the above
7*5113495bSYour Name  * copyright notice and this permission notice appear in all copies.
8*5113495bSYour Name  *
9*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10*5113495bSYour Name  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11*5113495bSYour Name  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12*5113495bSYour Name  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13*5113495bSYour Name  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14*5113495bSYour Name  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15*5113495bSYour Name  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16*5113495bSYour Name  */
17*5113495bSYour Name 
18*5113495bSYour Name /*
19*5113495bSYour Name  * DOC: contains coex north bound interface declarations
20*5113495bSYour Name  */
21*5113495bSYour Name 
22*5113495bSYour Name #ifndef _WLAN_COEX_UCFG_API_H_
23*5113495bSYour Name #define _WLAN_COEX_UCFG_API_H_
24*5113495bSYour Name 
25*5113495bSYour Name #include "qdf_status.h"
26*5113495bSYour Name #include <wlan_objmgr_vdev_obj.h>
27*5113495bSYour Name #include <wlan_objmgr_psoc_obj.h>
28*5113495bSYour Name #include "wlan_coex_public_structs.h"
29*5113495bSYour Name 
30*5113495bSYour Name /**
31*5113495bSYour Name  * enum coex_btc_chain_mode - btc chain mode definitions
32*5113495bSYour Name  * @WLAN_COEX_BTC_CHAIN_MODE_SHARED: chains of BT and WLAN 2.4 GHz are shared.
33*5113495bSYour Name  * @WLAN_COEX_BTC_CHAIN_MODE_FDD: chains of BT and WLAN 2.4 GHz are
34*5113495bSYour Name  * separated, FDD mode.
35*5113495bSYour Name  * @WLAN_COEX_BTC_CHAIN_MODE_HYBRID: chains of BT and WLAN 2.4 GHz are
36*5113495bSYour Name  * separated, hybrid mode.
37*5113495bSYour Name  * @WLAN_COEX_BTC_CHAIN_MODE_UNSETTLED: chain mode is not set.
38*5113495bSYour Name  */
39*5113495bSYour Name enum coex_btc_chain_mode {
40*5113495bSYour Name 	WLAN_COEX_BTC_CHAIN_MODE_SHARED = 0,
41*5113495bSYour Name 	WLAN_COEX_BTC_CHAIN_MODE_FDD,
42*5113495bSYour Name 	WLAN_COEX_BTC_CHAIN_MODE_HYBRID,
43*5113495bSYour Name 	WLAN_COEX_BTC_CHAIN_MODE_UNSETTLED = 0xFF,
44*5113495bSYour Name };
45*5113495bSYour Name 
46*5113495bSYour Name /**
47*5113495bSYour Name  * enum coex_config_type - coex config type definitions
48*5113495bSYour Name  * @COEX_CONFIG_BTC_CHAIN_MODE: config BT coex chain mode
49*5113495bSYour Name  * @COEX_CONFIG_TYPE_MAX: max value
50*5113495bSYour Name  */
51*5113495bSYour Name enum coex_config_type {
52*5113495bSYour Name 	COEX_CONFIG_BTC_CHAIN_MODE,
53*5113495bSYour Name 	/* keep last */
54*5113495bSYour Name 	COEX_CONFIG_TYPE_MAX,
55*5113495bSYour Name };
56*5113495bSYour Name 
57*5113495bSYour Name /**
58*5113495bSYour Name  * typedef update_coex_cb() - cb to inform coex config
59*5113495bSYour Name  * @vdev: vdev pointer
60*5113495bSYour Name  *
61*5113495bSYour Name  * Return: void
62*5113495bSYour Name  */
63*5113495bSYour Name typedef QDF_STATUS (*update_coex_cb)(struct wlan_objmgr_vdev *vdev);
64*5113495bSYour Name 
65*5113495bSYour Name #ifdef FEATURE_COEX
66*5113495bSYour Name /**
67*5113495bSYour Name  * ucfg_coex_register_cfg_updated_handler() - API to register coex config
68*5113495bSYour Name  * updated handler.
69*5113495bSYour Name  * @psoc: pointer to psoc object
70*5113495bSYour Name  * @type: type of coex config
71*5113495bSYour Name  * @handler: handler to be registered
72*5113495bSYour Name  *
73*5113495bSYour Name  * Return: status of operation
74*5113495bSYour Name  */
75*5113495bSYour Name QDF_STATUS
76*5113495bSYour Name ucfg_coex_register_cfg_updated_handler(struct wlan_objmgr_psoc *psoc,
77*5113495bSYour Name 				       enum coex_config_type type,
78*5113495bSYour Name 				       update_coex_cb handler);
79*5113495bSYour Name 
80*5113495bSYour Name /**
81*5113495bSYour Name  * ucfg_coex_psoc_set_btc_chain_mode() - API to set BT coex chain mode for psoc
82*5113495bSYour Name  * @psoc: pointer to psoc object
83*5113495bSYour Name  * @val: BT coex chain mode
84*5113495bSYour Name  *
85*5113495bSYour Name  * Return : status of operation
86*5113495bSYour Name  */
87*5113495bSYour Name QDF_STATUS
88*5113495bSYour Name ucfg_coex_psoc_set_btc_chain_mode(struct wlan_objmgr_psoc *psoc,
89*5113495bSYour Name 				  enum coex_btc_chain_mode val);
90*5113495bSYour Name 
91*5113495bSYour Name /**
92*5113495bSYour Name  * ucfg_coex_psoc_get_btc_chain_mode() - API to get BT coex chain mode from psoc
93*5113495bSYour Name  * @psoc: pointer to psoc object
94*5113495bSYour Name  * @val: pointer to BT coex chain mode
95*5113495bSYour Name  *
96*5113495bSYour Name  * Return : status of operation
97*5113495bSYour Name  */
98*5113495bSYour Name QDF_STATUS
99*5113495bSYour Name ucfg_coex_psoc_get_btc_chain_mode(struct wlan_objmgr_psoc *psoc,
100*5113495bSYour Name 				  enum coex_btc_chain_mode *val);
101*5113495bSYour Name 
102*5113495bSYour Name /**
103*5113495bSYour Name  * ucfg_coex_send_btc_chain_mode() - API to send BT coex config to target if
104*5113495bSYour Name  * @vdev: pointer to vdev object
105*5113495bSYour Name  * @mode: BT coex chain mode
106*5113495bSYour Name  *
107*5113495bSYour Name  * Return: status of operation
108*5113495bSYour Name  */
109*5113495bSYour Name QDF_STATUS
110*5113495bSYour Name ucfg_coex_send_btc_chain_mode(struct wlan_objmgr_vdev *vdev,
111*5113495bSYour Name 			      enum coex_btc_chain_mode mode);
112*5113495bSYour Name 
113*5113495bSYour Name /**
114*5113495bSYour Name  * ucfg_coex_send_multi_config() - API to send coex multiple config to target
115*5113495bSYour Name  * @vdev: pointer to vdev object
116*5113495bSYour Name  * @param: pointer to coex multiple config parameters
117*5113495bSYour Name  *
118*5113495bSYour Name  * Return: status of operation
119*5113495bSYour Name  */
120*5113495bSYour Name QDF_STATUS
121*5113495bSYour Name ucfg_coex_send_multi_config(struct wlan_objmgr_vdev *vdev,
122*5113495bSYour Name 			    struct coex_multi_config *param);
123*5113495bSYour Name 
124*5113495bSYour Name /**
125*5113495bSYour Name  * ucfg_coex_send_logging_config() - API to send BT coex logging config to
126*5113495bSYour Name  * target if
127*5113495bSYour Name  * @psoc: pointer to psoc object
128*5113495bSYour Name  * @apps_args: pointer to argument
129*5113495bSYour Name  *
130*5113495bSYour Name  * Return : status of operation
131*5113495bSYour Name  */
132*5113495bSYour Name QDF_STATUS
133*5113495bSYour Name ucfg_coex_send_logging_config(struct wlan_objmgr_psoc *psoc,
134*5113495bSYour Name 			      uint32_t *apps_args);
135*5113495bSYour Name #else
136*5113495bSYour Name static inline QDF_STATUS
ucfg_coex_register_cfg_updated_handler(struct wlan_objmgr_psoc * psoc,enum coex_config_type type,update_coex_cb handler)137*5113495bSYour Name ucfg_coex_register_cfg_updated_handler(struct wlan_objmgr_psoc *psoc,
138*5113495bSYour Name 				       enum coex_config_type type,
139*5113495bSYour Name 				       update_coex_cb handler)
140*5113495bSYour Name {
141*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
142*5113495bSYour Name }
143*5113495bSYour Name 
144*5113495bSYour Name static inline QDF_STATUS
ucfg_coex_psoc_get_btc_chain_mode(struct wlan_objmgr_psoc * psoc,enum coex_btc_chain_mode * val)145*5113495bSYour Name ucfg_coex_psoc_get_btc_chain_mode(struct wlan_objmgr_psoc *psoc,
146*5113495bSYour Name 				  enum coex_btc_chain_mode *val)
147*5113495bSYour Name {
148*5113495bSYour Name 	if (val)
149*5113495bSYour Name 		*val = WLAN_COEX_BTC_CHAIN_MODE_UNSETTLED;
150*5113495bSYour Name 
151*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
152*5113495bSYour Name }
153*5113495bSYour Name 
154*5113495bSYour Name static inline QDF_STATUS
ucfg_coex_send_btc_chain_mode(struct wlan_objmgr_vdev * vdev,enum coex_btc_chain_mode mode)155*5113495bSYour Name ucfg_coex_send_btc_chain_mode(struct wlan_objmgr_vdev *vdev,
156*5113495bSYour Name 			      enum coex_btc_chain_mode mode)
157*5113495bSYour Name {
158*5113495bSYour Name 	return QDF_STATUS_SUCCESS;
159*5113495bSYour Name }
160*5113495bSYour Name 
161*5113495bSYour Name static inline QDF_STATUS
ucfg_coex_send_multi_config(struct wlan_objmgr_vdev * vdev,struct coex_multi_config * param)162*5113495bSYour Name ucfg_coex_send_multi_config(struct wlan_objmgr_vdev *vdev,
163*5113495bSYour Name 			    struct coex_multi_config *param)
164*5113495bSYour Name {
165*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
166*5113495bSYour Name }
167*5113495bSYour Name 
168*5113495bSYour Name static inline QDF_STATUS
ucfg_coex_send_logging_config(struct wlan_objmgr_psoc * psoc,uint32_t * apps_args)169*5113495bSYour Name ucfg_coex_send_logging_config(struct wlan_objmgr_psoc *psoc,
170*5113495bSYour Name 			      uint32_t *apps_args)
171*5113495bSYour Name {
172*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
173*5113495bSYour Name }
174*5113495bSYour Name #endif
175*5113495bSYour Name #ifdef WLAN_FEATURE_DBAM_CONFIG
176*5113495bSYour Name /**
177*5113495bSYour Name  * ucfg_coex_send_dbam_config() - API to send dbam config to target if
178*5113495bSYour Name  * @vdev: pointer to vdev object
179*5113495bSYour Name  * @param: DBAM config mode params
180*5113495bSYour Name  * @clbk: dbam config response callback
181*5113495bSYour Name  * @context: request manager context
182*5113495bSYour Name  *
183*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on success
184*5113495bSYour Name  */
185*5113495bSYour Name QDF_STATUS
186*5113495bSYour Name ucfg_coex_send_dbam_config(struct wlan_objmgr_vdev *vdev,
187*5113495bSYour Name 			   struct coex_dbam_config_params *param,
188*5113495bSYour Name 			   void (*clbk)(void *ctx,
189*5113495bSYour Name 			   enum coex_dbam_comp_status *rsp),
190*5113495bSYour Name 			   void *context);
191*5113495bSYour Name #else
192*5113495bSYour Name static inline QDF_STATUS
ucfg_coex_send_dbam_config(void)193*5113495bSYour Name ucfg_coex_send_dbam_config(void)
194*5113495bSYour Name {
195*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
196*5113495bSYour Name }
197*5113495bSYour Name #endif
198*5113495bSYour Name #endif
199