1 /*
2 * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
3 * Copyright (c) 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
18 /**
19 * DOC: wlan_gpio_tgt_api.h
20 *
21 * This header file provide with API declarations to interface with Southbound
22 */
23 #ifndef __WLAN_GPIO_CFG_TGT_API_H__
24 #define __WLAN_GPIO_CFG_TGT_API_H__
25
26 #ifdef WLAN_FEATURE_GPIO_CFG
27 #include <qdf_status.h>
28 #include <wmi_unified_param.h>
29 struct wlan_objmgr_psoc;
30
31 /**
32 * tgt_set_gpio_config_req(): API to set GPIO configuration to lmac
33 * @psoc: the pointer to psoc object manager
34 * @param: the pointer to gpio cfg info
35 *
36 * Return: status of operation
37 */
38 QDF_STATUS
39 tgt_set_gpio_config_req(struct wlan_objmgr_psoc *psoc,
40 struct gpio_config_params *param);
41
42 /**
43 * tgt_set_gpio_output_req(): API to set GPIO output info to lmac
44 * @psoc: the pointer to psoc object manager
45 * @param: the pointer to gpio output info
46 *
47 * Return: status of operation
48 */
49
50 QDF_STATUS
51 tgt_set_gpio_output_req(struct wlan_objmgr_psoc *psoc,
52 struct gpio_output_params *param);
53
54 /**
55 * tgt_gpio_config() - API to send gpio config request
56 * @psoc: pointer to psoc object
57 * @gpio_num: gpio pin number
58 * @input: enable/disable the gpio pin
59 * @pull_type: gpio pull type
60 * @intr_mode: gpio interrupt mode
61 * @mux_config_val: gpio MUX value
62 * @drive: gpio drive
63 * @init_enable: gpio init_enable
64 *
65 * Return: status of operation
66 */
67 QDF_STATUS tgt_gpio_config(struct wlan_objmgr_psoc *psoc, uint32_t gpio_num,
68 uint32_t input, uint32_t pull_type,
69 uint32_t intr_mode, uint32_t mux_config_val,
70 uint32_t drive, uint32_t init_enable);
71 /**
72 * tgt_gpio_output() - API to send gpio output request
73 * @psoc: pointer to psoc object
74 * @gpio_num: gpio pin number
75 * @set: enable/disable the gpio pin
76 *
77 * Return: status of operation
78 */
79 QDF_STATUS tgt_gpio_output(struct wlan_objmgr_psoc *psoc, uint32_t gpio_num,
80 uint32_t set);
81 #else
tgt_gpio_config(struct wlan_objmgr_psoc * psoc,uint32_t gpio_num,uint32_t input,uint32_t pull_type,uint32_t intr_mode,uint32_t mux_config_val,uint32_t drive,uint32_t init_enable)82 static QDF_STATUS tgt_gpio_config(struct wlan_objmgr_psoc *psoc,
83 uint32_t gpio_num, uint32_t input,
84 uint32_t pull_type, uint32_t intr_mode,
85 uint32_t mux_config_val, uint32_t drive,
86 uint32_t init_enable)
87 {
88 return QDF_STATUS_SUCCESS;
89 }
90
tgt_gpio_output(struct wlan_objmgr_psoc * psoc,uint32_t gpio_num,uint32_t set)91 static QDF_STATUS tgt_gpio_output(struct wlan_objmgr_psoc *psoc,
92 uint32_t gpio_num, uint32_t set)
93 {
94 return QDF_STATUS_SUCCESS;
95 }
96 #endif /* WLAN_FEATURE_GPIO_CFG */
97 #endif /* __WLAN_GPIO_TGT_API_H__ */
98