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