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