1  /*
2   * Copyright (c) 2016-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
6   * any purpose with or without fee is hereby granted, provided that the
7   * above copyright notice and this permission notice appear in all
8   * copies.
9   *
10   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11   * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12   * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13   * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14   * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15   * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16   * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17   * PERFORMANCE OF THIS SOFTWARE.
18   */
19  
20  #ifndef __PLD_PCIE_FW_SIM_H__
21  #define __PLD_PCIE_FW_SIM_H__
22  
23  #include "pld_internal.h"
24  
25  #if !defined(CONFIG_PLD_PCIE_FW_SIM) && !defined(CONFIG_PLD_IPCIE_FW_SIM)
26  
pld_pcie_fw_sim_register_driver(void)27  static inline int pld_pcie_fw_sim_register_driver(void)
28  {
29  	return 0;
30  }
31  
pld_pcie_fw_sim_unregister_driver(void)32  static inline void pld_pcie_fw_sim_unregister_driver(void)
33  {
34  }
35  
pld_pcie_fw_sim_wlan_enable(struct device * dev,struct pld_wlan_enable_cfg * cfg,enum pld_driver_mode mode,const char * host_version)36  static inline int pld_pcie_fw_sim_wlan_enable(struct device *dev,
37  					      struct pld_wlan_enable_cfg *cfg,
38  					      enum pld_driver_mode mode,
39  					      const char *host_version)
40  {
41  	return 0;
42  }
43  
pld_pcie_fw_sim_wlan_disable(struct device * dev,enum pld_driver_mode mode)44  static inline int pld_pcie_fw_sim_wlan_disable(struct device *dev,
45  					       enum pld_driver_mode mode)
46  {
47  	return 0;
48  }
49  
pld_pcie_fw_sim_link_down(struct device * dev)50  static inline void pld_pcie_fw_sim_link_down(struct device *dev)
51  {
52  }
53  
pld_pcie_fw_sim_is_fw_down(struct device * dev)54  static inline int pld_pcie_fw_sim_is_fw_down(struct device *dev)
55  {
56  	return 0;
57  }
58  
pld_pcie_fw_sim_get_platform_cap(struct device * dev,struct pld_platform_cap * cap)59  static inline int pld_pcie_fw_sim_get_platform_cap(struct device *dev,
60  						   struct pld_platform_cap *cap)
61  {
62  	return 0;
63  }
64  
pld_pcie_fw_sim_get_soc_info(struct device * dev,struct pld_soc_info * info)65  static inline int pld_pcie_fw_sim_get_soc_info(struct device *dev,
66  					       struct pld_soc_info *info)
67  {
68  	return 0;
69  }
70  
pld_pcie_fw_sim_get_user_msi_assignment(struct device * dev,char * user_name,int * num_vectors,uint32_t * base_data,uint32_t * base_vector)71  static inline int pld_pcie_fw_sim_get_user_msi_assignment(struct device *dev,
72  							  char *user_name,
73  							  int *num_vectors,
74  							  uint32_t *base_data,
75  							  uint32_t *base_vector)
76  {
77  	return -EINVAL;
78  }
79  
pld_pcie_fw_sim_get_msi_irq(struct device * dev,unsigned int vector)80  static inline int pld_pcie_fw_sim_get_msi_irq(struct device *dev,
81  					      unsigned int vector)
82  {
83  	return 0;
84  }
85  
pld_pcie_fw_sim_get_msi_address(struct device * dev,uint32_t * msi_addr_low,uint32_t * msi_addr_high)86  static inline void pld_pcie_fw_sim_get_msi_address(struct device *dev,
87  						   uint32_t *msi_addr_low,
88  						   uint32_t *msi_addr_high)
89  {
90  }
91  
pld_pcie_fw_sim_request_irq(struct device * dev,int irq,irq_handler_t handler,unsigned long irqflags,const char * devname,void * dev_data)92  static inline int pld_pcie_fw_sim_request_irq(struct device *dev, int irq,
93  					      irq_handler_t handler,
94  					      unsigned long irqflags,
95  					      const char *devname,
96  					      void *dev_data)
97  {
98  	return 0;
99  }
100  
pld_pcie_fw_sim_read_config_word(struct device * dev,int offset,uint16_t * val)101  static inline int pld_pcie_fw_sim_read_config_word(struct device *dev,
102  						   int offset, uint16_t *val)
103  {
104  	return 0;
105  }
106  
pld_pcie_fw_sim_free_irq(struct device * dev,unsigned int ce_id,void * ctx)107  static inline int pld_pcie_fw_sim_free_irq(struct device *dev,
108  					   unsigned int ce_id, void *ctx)
109  {
110  	return 0;
111  }
112  
pld_pcie_fw_sim_enable_irq(struct device * dev,unsigned int irq)113  static inline void pld_pcie_fw_sim_enable_irq(struct device *dev,
114  					      unsigned int irq)
115  {
116  }
117  
pld_pcie_fw_sim_disable_irq(struct device * dev,unsigned int irq)118  static inline void pld_pcie_fw_sim_disable_irq(struct device *dev,
119  					       unsigned int irq)
120  {
121  }
122  
pld_pcie_fw_sim_idle_shutdown(struct device * dev)123  static inline int pld_pcie_fw_sim_idle_shutdown(struct device *dev)
124  {
125  	return 0;
126  }
127  
pld_pcie_fw_sim_idle_restart(struct device * dev)128  static inline int pld_pcie_fw_sim_idle_restart(struct device *dev)
129  {
130  	return 0;
131  }
132  
pld_pcie_fw_sim_thermal_register(struct device * dev,unsigned long max_state,int mon_id)133  static inline int pld_pcie_fw_sim_thermal_register(struct device *dev,
134  						   unsigned long max_state,
135  						   int mon_id)
136  {
137  	return 0;
138  }
139  
pld_pcie_fw_sim_thermal_unregister(struct device * dev,int mon_id)140  static inline void pld_pcie_fw_sim_thermal_unregister(struct device *dev,
141  						      int mon_id)
142  {
143  }
144  
pld_pcie_fw_sim_get_thermal_state(struct device * dev,unsigned long * therm_state,int mon_id)145  static inline int pld_pcie_fw_sim_get_thermal_state(struct device *dev,
146  						    unsigned long *therm_state,
147  						    int mon_id)
148  {
149  	return 0;
150  }
151  
pld_pcie_fw_sim_exit_power_save(struct device * dev)152  static inline int pld_pcie_fw_sim_exit_power_save(struct device *dev)
153  {
154  	return 0;
155  }
156  
pld_pcie_fw_sim_get_irq(struct device * dev,int ce_id)157  static inline int pld_pcie_fw_sim_get_irq(struct device *dev, int ce_id)
158  {
159  	return 0;
160  }
161  #else
162  #include <net/cnss2.h>
163  
164  int pld_pcie_fw_sim_wlan_enable(struct device *dev,
165  				struct pld_wlan_enable_cfg *config,
166  				enum pld_driver_mode mode,
167  				const char *host_version);
168  int pld_pcie_fw_sim_wlan_disable(struct device *dev, enum pld_driver_mode mode);
169  int pld_pcie_fw_sim_register_driver(void);
170  void pld_pcie_fw_sim_unregister_driver(void);
171  int pld_pcie_fw_sim_get_platform_cap(struct device *dev,
172  				     struct pld_platform_cap *cap);
173  int pld_pcie_fw_sim_get_soc_info(struct device *dev, struct pld_soc_info *info);
174  int pld_pcie_fw_sim_get_irq(struct device *dev, int ce_id);
175  
pld_pcie_fw_sim_get_user_msi_assignment(struct device * dev,char * user_name,int * num_vectors,uint32_t * base_data,uint32_t * base_vector)176  static inline int pld_pcie_fw_sim_get_user_msi_assignment(struct device *dev,
177  							  char *user_name,
178  							  int *num_vectors,
179  							  uint32_t *base_data,
180  							  uint32_t *base_vector)
181  {
182  	return cnss_fw_sim_get_user_msi_assignment(dev, user_name, num_vectors,
183  					    base_data, base_vector);
184  }
185  
pld_pcie_fw_sim_get_msi_irq(struct device * dev,unsigned int vector)186  static inline int pld_pcie_fw_sim_get_msi_irq(struct device *dev,
187  					      unsigned int vector)
188  {
189  	return cnss_fw_sim_get_msi_irq(dev, vector);
190  }
191  
pld_pcie_fw_sim_get_msi_address(struct device * dev,uint32_t * msi_addr_low,uint32_t * msi_addr_high)192  static inline void pld_pcie_fw_sim_get_msi_address(struct device *dev,
193  						   uint32_t *msi_addr_low,
194  						   uint32_t *msi_addr_high)
195  {
196  	cnss_fw_sim_get_msi_address(dev, msi_addr_low, msi_addr_high);
197  }
198  
pld_pcie_fw_sim_request_irq(struct device * dev,int irq,irq_handler_t handler,unsigned long irqflags,const char * devname,void * dev_data)199  static inline int pld_pcie_fw_sim_request_irq(struct device *dev, int irq,
200  					      irq_handler_t handler,
201  					      unsigned long irqflags,
202  					      const char *devname,
203  					      void *dev_data)
204  {
205  	return cnss_fw_sim_request_irq(dev, irq, handler,
206  				       irqflags, devname, dev_data);
207  }
208  
pld_pcie_fw_sim_read_config_word(struct device * dev,int offset,uint16_t * val)209  static inline int pld_pcie_fw_sim_read_config_word(struct device *dev,
210  						   int offset, uint16_t *val)
211  {
212  	return cnss_fw_sim_read_config_word(dev, offset, val);
213  }
214  
pld_pcie_fw_sim_free_irq(struct device * dev,int irq,void * dev_data)215  static inline int pld_pcie_fw_sim_free_irq(struct device *dev,
216  					   int irq, void *dev_data)
217  {
218  	return cnss_fw_sim_free_irq(dev, irq, dev_data);
219  }
220  
pld_pcie_fw_sim_enable_irq(struct device * dev,int irq)221  static inline void pld_pcie_fw_sim_enable_irq(struct device *dev, int irq)
222  {
223  	cnss_fw_sim_enable_irq(dev, irq);
224  }
225  
pld_pcie_fw_sim_disable_irq(struct device * dev,int irq)226  static inline void pld_pcie_fw_sim_disable_irq(struct device *dev, int irq)
227  {
228  	cnss_fw_sim_disable_irq(dev, irq);
229  }
230  
pld_pcie_fw_sim_idle_shutdown(struct device * dev)231  static inline int pld_pcie_fw_sim_idle_shutdown(struct device *dev)
232  {
233  	return cnss_fw_sim_idle_shutdown(dev);
234  }
235  
pld_pcie_fw_sim_idle_restart(struct device * dev)236  static inline int pld_pcie_fw_sim_idle_restart(struct device *dev)
237  {
238  	return cnss_fw_sim_idle_restart(dev);
239  }
240  
pld_pcie_fw_sim_thermal_register(struct device * dev,unsigned long max_state,int mon_id)241  static inline int pld_pcie_fw_sim_thermal_register(struct device *dev,
242  						   unsigned long max_state,
243  						   int mon_id)
244  {
245  	return cnss_fw_sim_thermal_cdev_register(dev, max_state, mon_id);
246  }
247  
pld_pcie_fw_sim_thermal_unregister(struct device * dev,int mon_id)248  static inline void pld_pcie_fw_sim_thermal_unregister(struct device *dev,
249  						      int mon_id)
250  {
251  	cnss_fw_sim_thermal_cdev_unregister(dev, mon_id);
252  }
253  
pld_pcie_fw_sim_get_thermal_state(struct device * dev,unsigned long * therm_state,int mon_id)254  static inline int pld_pcie_fw_sim_get_thermal_state(struct device *dev,
255  						    unsigned long *therm_state,
256  						    int mon_id)
257  {
258  	return cnss_fw_sim_get_curr_therm_cdev_state(dev, therm_state,
259  						     mon_id);
260  }
261  
pld_pcie_fw_sim_exit_power_save(struct device * dev)262  static inline int pld_pcie_fw_sim_exit_power_save(struct device *dev)
263  {
264  	return cnss_fw_sim_exit_power_save(dev);
265  }
266  
267  #endif
268  #endif
269