xref: /wlan-driver/qcacld-3.0/core/pld/src/pld_pcie.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
6*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
7*5113495bSYour Name  * above copyright notice and this permission notice appear in all
8*5113495bSYour Name  * copies.
9*5113495bSYour Name  *
10*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
18*5113495bSYour Name  */
19*5113495bSYour Name 
20*5113495bSYour Name #ifndef __PLD_PCIE_H__
21*5113495bSYour Name #define __PLD_PCIE_H__
22*5113495bSYour Name 
23*5113495bSYour Name #ifdef CONFIG_PLD_PCIE_CNSS
24*5113495bSYour Name #ifdef CONFIG_CNSS_OUT_OF_TREE
25*5113495bSYour Name #include "cnss2.h"
26*5113495bSYour Name #else
27*5113495bSYour Name #include <net/cnss2.h>
28*5113495bSYour Name #endif
29*5113495bSYour Name #endif
30*5113495bSYour Name #include <linux/pci.h>
31*5113495bSYour Name #include "pld_internal.h"
32*5113495bSYour Name 
33*5113495bSYour Name #ifdef DYNAMIC_SINGLE_CHIP
34*5113495bSYour Name #define PREFIX DYNAMIC_SINGLE_CHIP "/"
35*5113495bSYour Name #else
36*5113495bSYour Name 
37*5113495bSYour Name #ifdef MULTI_IF_NAME
38*5113495bSYour Name #define PREFIX MULTI_IF_NAME "/"
39*5113495bSYour Name #else
40*5113495bSYour Name #define PREFIX ""
41*5113495bSYour Name #endif
42*5113495bSYour Name 
43*5113495bSYour Name #endif
44*5113495bSYour Name 
45*5113495bSYour Name #if !defined(HIF_PCI) || defined(CONFIG_PLD_PCIE_FW_SIM)
pld_pcie_register_driver(void)46*5113495bSYour Name static inline int pld_pcie_register_driver(void)
47*5113495bSYour Name {
48*5113495bSYour Name 	return 0;
49*5113495bSYour Name }
50*5113495bSYour Name 
pld_pcie_unregister_driver(void)51*5113495bSYour Name static inline void pld_pcie_unregister_driver(void)
52*5113495bSYour Name {
53*5113495bSYour Name }
54*5113495bSYour Name 
pld_pcie_get_ce_id(struct device * dev,int irq)55*5113495bSYour Name static inline int pld_pcie_get_ce_id(struct device *dev, int irq)
56*5113495bSYour Name {
57*5113495bSYour Name 	return 0;
58*5113495bSYour Name }
59*5113495bSYour Name #else
60*5113495bSYour Name /**
61*5113495bSYour Name  * pld_pcie_register_driver() - Register PCIE device callback functions
62*5113495bSYour Name  *
63*5113495bSYour Name  * Return: int
64*5113495bSYour Name  */
65*5113495bSYour Name int pld_pcie_register_driver(void);
66*5113495bSYour Name 
67*5113495bSYour Name /**
68*5113495bSYour Name  * pld_pcie_unregister_driver() - Unregister PCIE device callback functions
69*5113495bSYour Name  *
70*5113495bSYour Name  * Return: void
71*5113495bSYour Name  */
72*5113495bSYour Name void pld_pcie_unregister_driver(void);
73*5113495bSYour Name 
74*5113495bSYour Name /**
75*5113495bSYour Name  * pld_pcie_get_ce_id() - Get CE number for the provided IRQ
76*5113495bSYour Name  * @dev: device
77*5113495bSYour Name  * @irq: IRQ number
78*5113495bSYour Name  *
79*5113495bSYour Name  * Return: CE number
80*5113495bSYour Name  */
81*5113495bSYour Name int pld_pcie_get_ce_id(struct device *dev, int irq);
82*5113495bSYour Name #endif
83*5113495bSYour Name 
84*5113495bSYour Name #ifndef CONFIG_PLD_PCIE_CNSS
pld_pcie_wlan_enable(struct device * dev,struct pld_wlan_enable_cfg * config,enum pld_driver_mode mode,const char * host_version)85*5113495bSYour Name static inline int pld_pcie_wlan_enable(struct device *dev,
86*5113495bSYour Name 				       struct pld_wlan_enable_cfg *config,
87*5113495bSYour Name 				       enum pld_driver_mode mode,
88*5113495bSYour Name 				       const char *host_version)
89*5113495bSYour Name {
90*5113495bSYour Name 	return 0;
91*5113495bSYour Name }
92*5113495bSYour Name 
pld_pcie_wlan_disable(struct device * dev,enum pld_driver_mode mode)93*5113495bSYour Name static inline int pld_pcie_wlan_disable(struct device *dev,
94*5113495bSYour Name 					enum pld_driver_mode mode)
95*5113495bSYour Name {
96*5113495bSYour Name 	return 0;
97*5113495bSYour Name }
98*5113495bSYour Name 
pld_pcie_wlan_hw_enable(void)99*5113495bSYour Name static inline int pld_pcie_wlan_hw_enable(void)
100*5113495bSYour Name {
101*5113495bSYour Name 	return 0;
102*5113495bSYour Name }
103*5113495bSYour Name 
104*5113495bSYour Name #else
105*5113495bSYour Name 
106*5113495bSYour Name /**
107*5113495bSYour Name  * pld_pcie_wlan_enable() - Enable WLAN
108*5113495bSYour Name  * @dev: device
109*5113495bSYour Name  * @config: WLAN configuration data
110*5113495bSYour Name  * @mode: WLAN mode
111*5113495bSYour Name  * @host_version: host software version
112*5113495bSYour Name  *
113*5113495bSYour Name  * This function enables WLAN FW. It passed WLAN configuration data,
114*5113495bSYour Name  * WLAN mode and host software version to FW.
115*5113495bSYour Name  *
116*5113495bSYour Name  * Return: 0 for success
117*5113495bSYour Name  *         Non zero failure code for errors
118*5113495bSYour Name  */
119*5113495bSYour Name int pld_pcie_wlan_enable(struct device *dev, struct pld_wlan_enable_cfg *config,
120*5113495bSYour Name 			 enum pld_driver_mode mode, const char *host_version);
121*5113495bSYour Name 
122*5113495bSYour Name /**
123*5113495bSYour Name  * pld_pcie_wlan_disable() - Disable WLAN
124*5113495bSYour Name  * @dev: device
125*5113495bSYour Name  * @mode: WLAN mode
126*5113495bSYour Name  *
127*5113495bSYour Name  * This function disables WLAN FW. It passes WLAN mode to FW.
128*5113495bSYour Name  *
129*5113495bSYour Name  * Return: 0 for success
130*5113495bSYour Name  *         Non zero failure code for errors
131*5113495bSYour Name  */
132*5113495bSYour Name int pld_pcie_wlan_disable(struct device *dev, enum pld_driver_mode mode);
133*5113495bSYour Name 
134*5113495bSYour Name #ifdef FEATURE_CNSS_HW_SECURE_DISABLE
pld_pcie_wlan_hw_enable(void)135*5113495bSYour Name static inline int pld_pcie_wlan_hw_enable(void)
136*5113495bSYour Name {
137*5113495bSYour Name 	return cnss_wlan_hw_enable();
138*5113495bSYour Name }
139*5113495bSYour Name #else
pld_pcie_wlan_hw_enable(void)140*5113495bSYour Name static inline int pld_pcie_wlan_hw_enable(void)
141*5113495bSYour Name {
142*5113495bSYour Name 	return -EINVAL;
143*5113495bSYour Name }
144*5113495bSYour Name #endif
145*5113495bSYour Name #endif
146*5113495bSYour Name 
147*5113495bSYour Name #if defined(CONFIG_PLD_PCIE_CNSS)
pld_pcie_set_fw_log_mode(struct device * dev,u8 fw_log_mode)148*5113495bSYour Name static inline int pld_pcie_set_fw_log_mode(struct device *dev, u8 fw_log_mode)
149*5113495bSYour Name {
150*5113495bSYour Name 	return cnss_set_fw_log_mode(dev, fw_log_mode);
151*5113495bSYour Name }
152*5113495bSYour Name 
pld_pcie_intr_notify_q6(struct device * dev)153*5113495bSYour Name static inline void pld_pcie_intr_notify_q6(struct device *dev)
154*5113495bSYour Name {
155*5113495bSYour Name }
156*5113495bSYour Name #else
pld_pcie_set_fw_log_mode(struct device * dev,u8 fw_log_mode)157*5113495bSYour Name static inline int pld_pcie_set_fw_log_mode(struct device *dev, u8 fw_log_mode)
158*5113495bSYour Name {
159*5113495bSYour Name 	return 0;
160*5113495bSYour Name }
161*5113495bSYour Name 
pld_pcie_intr_notify_q6(struct device * dev)162*5113495bSYour Name static inline void pld_pcie_intr_notify_q6(struct device *dev)
163*5113495bSYour Name {
164*5113495bSYour Name }
165*5113495bSYour Name #endif
166*5113495bSYour Name 
167*5113495bSYour Name #if (!defined(CONFIG_PLD_PCIE_CNSS)) || (!defined(CONFIG_CNSS_SECURE_FW))
pld_pcie_get_sha_hash(struct device * dev,const u8 * data,u32 data_len,u8 * hash_idx,u8 * out)168*5113495bSYour Name static inline int pld_pcie_get_sha_hash(struct device *dev, const u8 *data,
169*5113495bSYour Name 					u32 data_len, u8 *hash_idx, u8 *out)
170*5113495bSYour Name {
171*5113495bSYour Name 	return 0;
172*5113495bSYour Name }
173*5113495bSYour Name 
pld_pcie_get_fw_ptr(struct device * dev)174*5113495bSYour Name static inline void *pld_pcie_get_fw_ptr(struct device *dev)
175*5113495bSYour Name {
176*5113495bSYour Name 	return NULL;
177*5113495bSYour Name }
178*5113495bSYour Name #else
pld_pcie_get_sha_hash(struct device * dev,const u8 * data,u32 data_len,u8 * hash_idx,u8 * out)179*5113495bSYour Name static inline int pld_pcie_get_sha_hash(struct device *dev, const u8 *data,
180*5113495bSYour Name 					u32 data_len, u8 *hash_idx, u8 *out)
181*5113495bSYour Name {
182*5113495bSYour Name 	return cnss_get_sha_hash(data, data_len, hash_idx, out);
183*5113495bSYour Name }
184*5113495bSYour Name 
pld_pcie_get_fw_ptr(struct device * dev)185*5113495bSYour Name static inline void *pld_pcie_get_fw_ptr(struct device *dev)
186*5113495bSYour Name {
187*5113495bSYour Name 	return cnss_get_fw_ptr();
188*5113495bSYour Name }
189*5113495bSYour Name #endif
190*5113495bSYour Name 
191*5113495bSYour Name #ifdef CONFIG_PLD_PCIE_CNSS
pld_pcie_wlan_pm_control(struct device * dev,bool vote)192*5113495bSYour Name static inline int pld_pcie_wlan_pm_control(struct device *dev, bool vote)
193*5113495bSYour Name {
194*5113495bSYour Name 	return cnss_wlan_pm_control(dev, vote);
195*5113495bSYour Name }
196*5113495bSYour Name #else
pld_pcie_wlan_pm_control(struct device * dev,bool vote)197*5113495bSYour Name static inline int pld_pcie_wlan_pm_control(struct device *dev, bool vote)
198*5113495bSYour Name {
199*5113495bSYour Name 	return 0;
200*5113495bSYour Name }
201*5113495bSYour Name #endif
202*5113495bSYour Name 
203*5113495bSYour Name #ifndef CONFIG_PLD_PCIE_CNSS
204*5113495bSYour Name #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0))
pld_pcie_smmu_get_domain(struct device * dev)205*5113495bSYour Name static inline void *pld_pcie_smmu_get_domain(struct device *dev)
206*5113495bSYour Name {
207*5113495bSYour Name 	return NULL;
208*5113495bSYour Name }
209*5113495bSYour Name #else
pld_pcie_smmu_get_mapping(struct device * dev)210*5113495bSYour Name static inline void *pld_pcie_smmu_get_mapping(struct device *dev)
211*5113495bSYour Name {
212*5113495bSYour Name 	return NULL;
213*5113495bSYour Name }
214*5113495bSYour Name #endif
215*5113495bSYour Name 
216*5113495bSYour Name static inline int
pld_pcie_smmu_map(struct device * dev,phys_addr_t paddr,uint32_t * iova_addr,size_t size)217*5113495bSYour Name pld_pcie_smmu_map(struct device *dev,
218*5113495bSYour Name 		  phys_addr_t paddr, uint32_t *iova_addr, size_t size)
219*5113495bSYour Name {
220*5113495bSYour Name 	return 0;
221*5113495bSYour Name }
222*5113495bSYour Name 
223*5113495bSYour Name static inline int
pld_pcie_smmu_unmap(struct device * dev,uint32_t iova_addr,size_t size)224*5113495bSYour Name pld_pcie_smmu_unmap(struct device *dev, uint32_t iova_addr, size_t size)
225*5113495bSYour Name {
226*5113495bSYour Name 	return 0;
227*5113495bSYour Name }
228*5113495bSYour Name 
229*5113495bSYour Name static inline int
pld_pcie_get_fw_files_for_target(struct device * dev,struct pld_fw_files * pfw_files,u32 target_type,u32 target_version)230*5113495bSYour Name pld_pcie_get_fw_files_for_target(struct device *dev,
231*5113495bSYour Name 				 struct pld_fw_files *pfw_files,
232*5113495bSYour Name 				 u32 target_type, u32 target_version)
233*5113495bSYour Name {
234*5113495bSYour Name 	pld_get_default_fw_files(pfw_files);
235*5113495bSYour Name 	return 0;
236*5113495bSYour Name }
237*5113495bSYour Name 
pld_pcie_prevent_l1(struct device * dev)238*5113495bSYour Name static inline int pld_pcie_prevent_l1(struct device *dev)
239*5113495bSYour Name {
240*5113495bSYour Name 	return 0;
241*5113495bSYour Name }
242*5113495bSYour Name 
pld_pcie_allow_l1(struct device * dev)243*5113495bSYour Name static inline void pld_pcie_allow_l1(struct device *dev)
244*5113495bSYour Name {
245*5113495bSYour Name }
246*5113495bSYour Name 
pld_pcie_set_gen_speed(struct device * dev,u8 pcie_gen_speed)247*5113495bSYour Name static inline int pld_pcie_set_gen_speed(struct device *dev, u8 pcie_gen_speed)
248*5113495bSYour Name {
249*5113495bSYour Name 	return 0;
250*5113495bSYour Name }
251*5113495bSYour Name 
252*5113495bSYour Name 
pld_pcie_link_down(struct device * dev)253*5113495bSYour Name static inline void pld_pcie_link_down(struct device *dev)
254*5113495bSYour Name {
255*5113495bSYour Name }
256*5113495bSYour Name 
pld_pcie_get_reg_dump(struct device * dev,uint8_t * buf,uint32_t len)257*5113495bSYour Name static inline int pld_pcie_get_reg_dump(struct device *dev, uint8_t *buf,
258*5113495bSYour Name 					uint32_t len)
259*5113495bSYour Name {
260*5113495bSYour Name 	return 0;
261*5113495bSYour Name }
262*5113495bSYour Name 
pld_pcie_is_fw_down(struct device * dev)263*5113495bSYour Name static inline int pld_pcie_is_fw_down(struct device *dev)
264*5113495bSYour Name {
265*5113495bSYour Name 	return 0;
266*5113495bSYour Name }
267*5113495bSYour Name 
pld_pcie_athdiag_read(struct device * dev,uint32_t offset,uint32_t memtype,uint32_t datalen,uint8_t * output)268*5113495bSYour Name static inline int pld_pcie_athdiag_read(struct device *dev, uint32_t offset,
269*5113495bSYour Name 					uint32_t memtype, uint32_t datalen,
270*5113495bSYour Name 					uint8_t *output)
271*5113495bSYour Name {
272*5113495bSYour Name 	return 0;
273*5113495bSYour Name }
274*5113495bSYour Name 
pld_pcie_athdiag_write(struct device * dev,uint32_t offset,uint32_t memtype,uint32_t datalen,uint8_t * input)275*5113495bSYour Name static inline int pld_pcie_athdiag_write(struct device *dev, uint32_t offset,
276*5113495bSYour Name 					 uint32_t memtype, uint32_t datalen,
277*5113495bSYour Name 					 uint8_t *input)
278*5113495bSYour Name {
279*5113495bSYour Name 	return 0;
280*5113495bSYour Name }
281*5113495bSYour Name 
282*5113495bSYour Name static inline void
pld_pcie_schedule_recovery_work(struct device * dev,enum pld_recovery_reason reason)283*5113495bSYour Name pld_pcie_schedule_recovery_work(struct device *dev,
284*5113495bSYour Name 				enum pld_recovery_reason reason)
285*5113495bSYour Name {
286*5113495bSYour Name }
287*5113495bSYour Name 
pld_pcie_get_virt_ramdump_mem(struct device * dev,unsigned long * size)288*5113495bSYour Name static inline void *pld_pcie_get_virt_ramdump_mem(struct device *dev,
289*5113495bSYour Name 						  unsigned long *size)
290*5113495bSYour Name {
291*5113495bSYour Name 	size_t length = 0;
292*5113495bSYour Name 	int flags = GFP_KERNEL;
293*5113495bSYour Name 
294*5113495bSYour Name 	length = TOTAL_DUMP_SIZE;
295*5113495bSYour Name 
296*5113495bSYour Name 	if (!size)
297*5113495bSYour Name 		return NULL;
298*5113495bSYour Name 
299*5113495bSYour Name 	*size = (unsigned long)length;
300*5113495bSYour Name 
301*5113495bSYour Name 	if (in_interrupt() || irqs_disabled() || in_atomic())
302*5113495bSYour Name 		flags = GFP_ATOMIC;
303*5113495bSYour Name 
304*5113495bSYour Name 	return kzalloc(length, flags);
305*5113495bSYour Name }
306*5113495bSYour Name 
pld_pcie_release_virt_ramdump_mem(void * address)307*5113495bSYour Name static inline void pld_pcie_release_virt_ramdump_mem(void *address)
308*5113495bSYour Name {
309*5113495bSYour Name 	kfree(address);
310*5113495bSYour Name }
311*5113495bSYour Name 
pld_pcie_device_crashed(struct device * dev)312*5113495bSYour Name static inline void pld_pcie_device_crashed(struct device *dev)
313*5113495bSYour Name {
314*5113495bSYour Name }
315*5113495bSYour Name 
pld_pcie_device_self_recovery(struct device * dev,enum pld_recovery_reason reason)316*5113495bSYour Name static inline void pld_pcie_device_self_recovery(struct device *dev,
317*5113495bSYour Name 					 enum pld_recovery_reason reason)
318*5113495bSYour Name {
319*5113495bSYour Name }
320*5113495bSYour Name 
pld_pcie_request_pm_qos(struct device * dev,u32 qos_val)321*5113495bSYour Name static inline void pld_pcie_request_pm_qos(struct device *dev, u32 qos_val)
322*5113495bSYour Name {
323*5113495bSYour Name }
324*5113495bSYour Name 
pld_pcie_remove_pm_qos(struct device * dev)325*5113495bSYour Name static inline void pld_pcie_remove_pm_qos(struct device *dev)
326*5113495bSYour Name {
327*5113495bSYour Name }
328*5113495bSYour Name 
pld_pcie_set_tsf_sync_period(struct device * dev,u32 val)329*5113495bSYour Name static inline void pld_pcie_set_tsf_sync_period(struct device *dev, u32 val)
330*5113495bSYour Name {
331*5113495bSYour Name }
332*5113495bSYour Name 
pld_pcie_reset_tsf_sync_period(struct device * dev)333*5113495bSYour Name static inline void pld_pcie_reset_tsf_sync_period(struct device *dev)
334*5113495bSYour Name {
335*5113495bSYour Name }
336*5113495bSYour Name 
pld_pcie_request_bus_bandwidth(struct device * dev,int bandwidth)337*5113495bSYour Name static inline int pld_pcie_request_bus_bandwidth(struct device *dev,
338*5113495bSYour Name 						 int bandwidth)
339*5113495bSYour Name {
340*5113495bSYour Name 	return 0;
341*5113495bSYour Name }
342*5113495bSYour Name 
pld_pcie_get_platform_cap(struct device * dev,struct pld_platform_cap * cap)343*5113495bSYour Name static inline int pld_pcie_get_platform_cap(struct device *dev,
344*5113495bSYour Name 					    struct pld_platform_cap *cap)
345*5113495bSYour Name {
346*5113495bSYour Name 	return 0;
347*5113495bSYour Name }
348*5113495bSYour Name 
pld_pcie_get_soc_info(struct device * dev,struct pld_soc_info * info)349*5113495bSYour Name static inline int pld_pcie_get_soc_info(struct device *dev,
350*5113495bSYour Name 					struct pld_soc_info *info)
351*5113495bSYour Name {
352*5113495bSYour Name 	return 0;
353*5113495bSYour Name }
354*5113495bSYour Name 
pld_pcie_auto_suspend(struct device * dev)355*5113495bSYour Name static inline int pld_pcie_auto_suspend(struct device *dev)
356*5113495bSYour Name {
357*5113495bSYour Name 	return 0;
358*5113495bSYour Name }
359*5113495bSYour Name 
pld_pcie_auto_resume(struct device * dev)360*5113495bSYour Name static inline int pld_pcie_auto_resume(struct device *dev)
361*5113495bSYour Name {
362*5113495bSYour Name 	return 0;
363*5113495bSYour Name }
364*5113495bSYour Name 
pld_pcie_force_wake_request(struct device * dev)365*5113495bSYour Name static inline int pld_pcie_force_wake_request(struct device *dev)
366*5113495bSYour Name {
367*5113495bSYour Name 	return 0;
368*5113495bSYour Name }
369*5113495bSYour Name 
pld_pcie_force_wake_request_sync(struct device * dev,int timeout_us)370*5113495bSYour Name static inline int pld_pcie_force_wake_request_sync(struct device *dev,
371*5113495bSYour Name 						   int timeout_us)
372*5113495bSYour Name {
373*5113495bSYour Name 	return 0;
374*5113495bSYour Name }
375*5113495bSYour Name 
pld_pcie_is_device_awake(struct device * dev)376*5113495bSYour Name static inline int pld_pcie_is_device_awake(struct device *dev)
377*5113495bSYour Name {
378*5113495bSYour Name 	return true;
379*5113495bSYour Name }
380*5113495bSYour Name 
pld_pcie_force_wake_release(struct device * dev)381*5113495bSYour Name static inline int pld_pcie_force_wake_release(struct device *dev)
382*5113495bSYour Name {
383*5113495bSYour Name 	return 0;
384*5113495bSYour Name }
385*5113495bSYour Name 
pld_pcie_lock_reg_window(struct device * dev,unsigned long * flags)386*5113495bSYour Name static inline void pld_pcie_lock_reg_window(struct device *dev,
387*5113495bSYour Name 					    unsigned long *flags)
388*5113495bSYour Name {
389*5113495bSYour Name }
390*5113495bSYour Name 
pld_pcie_unlock_reg_window(struct device * dev,unsigned long * flags)391*5113495bSYour Name static inline void pld_pcie_unlock_reg_window(struct device *dev,
392*5113495bSYour Name 					      unsigned long *flags)
393*5113495bSYour Name {
394*5113495bSYour Name }
395*5113495bSYour Name 
pld_pcie_get_pci_slot(struct device * dev)396*5113495bSYour Name static inline int pld_pcie_get_pci_slot(struct device *dev)
397*5113495bSYour Name {
398*5113495bSYour Name 	return 0;
399*5113495bSYour Name }
400*5113495bSYour Name 
pld_pcie_get_wifi_kobj(struct device * dev)401*5113495bSYour Name static inline struct kobject *pld_pcie_get_wifi_kobj(struct device *dev)
402*5113495bSYour Name {
403*5113495bSYour Name 	return NULL;
404*5113495bSYour Name }
405*5113495bSYour Name 
pld_pcie_power_on(struct device * dev)406*5113495bSYour Name static inline int pld_pcie_power_on(struct device *dev)
407*5113495bSYour Name {
408*5113495bSYour Name 	return 0;
409*5113495bSYour Name }
410*5113495bSYour Name 
pld_pcie_power_off(struct device * dev)411*5113495bSYour Name static inline int pld_pcie_power_off(struct device *dev)
412*5113495bSYour Name {
413*5113495bSYour Name 	return 0;
414*5113495bSYour Name }
415*5113495bSYour Name 
pld_pcie_idle_restart(struct device * dev)416*5113495bSYour Name static inline int pld_pcie_idle_restart(struct device *dev)
417*5113495bSYour Name {
418*5113495bSYour Name 	return 0;
419*5113495bSYour Name }
420*5113495bSYour Name 
pld_pcie_idle_shutdown(struct device * dev)421*5113495bSYour Name static inline int pld_pcie_idle_shutdown(struct device *dev)
422*5113495bSYour Name {
423*5113495bSYour Name 	return 0;
424*5113495bSYour Name }
425*5113495bSYour Name 
pld_pcie_force_assert_target(struct device * dev)426*5113495bSYour Name static inline int pld_pcie_force_assert_target(struct device *dev)
427*5113495bSYour Name {
428*5113495bSYour Name 	return -EINVAL;
429*5113495bSYour Name }
430*5113495bSYour Name 
pld_pcie_collect_rddm(struct device * dev)431*5113495bSYour Name static inline int pld_pcie_collect_rddm(struct device *dev)
432*5113495bSYour Name {
433*5113495bSYour Name 	return 0;
434*5113495bSYour Name }
435*5113495bSYour Name 
pld_pcie_qmi_send_get(struct device * dev)436*5113495bSYour Name static inline int pld_pcie_qmi_send_get(struct device *dev)
437*5113495bSYour Name {
438*5113495bSYour Name 	return 0;
439*5113495bSYour Name }
440*5113495bSYour Name 
pld_pcie_qmi_send_put(struct device * dev)441*5113495bSYour Name static inline int pld_pcie_qmi_send_put(struct device *dev)
442*5113495bSYour Name {
443*5113495bSYour Name 	return 0;
444*5113495bSYour Name }
445*5113495bSYour Name 
446*5113495bSYour Name static inline int
pld_pcie_qmi_send(struct device * dev,int type,void * cmd,int cmd_len,void * cb_ctx,int (* cb)(void * ctx,void * event,int event_len))447*5113495bSYour Name pld_pcie_qmi_send(struct device *dev, int type, void *cmd,
448*5113495bSYour Name 		  int cmd_len, void *cb_ctx,
449*5113495bSYour Name 		  int (*cb)(void *ctx, void *event, int event_len))
450*5113495bSYour Name {
451*5113495bSYour Name 	return -EINVAL;
452*5113495bSYour Name }
453*5113495bSYour Name 
454*5113495bSYour Name static inline int
pld_pcie_register_qmi_ind(struct device * dev,void * cb_ctx,int (* cb)(void * ctx,uint16_t type,void * event,int event_len))455*5113495bSYour Name pld_pcie_register_qmi_ind(struct device *dev, void *cb_ctx,
456*5113495bSYour Name 			  int (*cb)(void *ctx, uint16_t type,
457*5113495bSYour Name 				    void *event, int event_len))
458*5113495bSYour Name {
459*5113495bSYour Name 	return -EINVAL;
460*5113495bSYour Name }
461*5113495bSYour Name 
pld_pcie_get_user_msi_assignment(struct device * dev,char * user_name,int * num_vectors,uint32_t * user_base_data,uint32_t * base_vector)462*5113495bSYour Name static inline int pld_pcie_get_user_msi_assignment(struct device *dev,
463*5113495bSYour Name 						   char *user_name,
464*5113495bSYour Name 						   int *num_vectors,
465*5113495bSYour Name 						   uint32_t *user_base_data,
466*5113495bSYour Name 						   uint32_t *base_vector)
467*5113495bSYour Name {
468*5113495bSYour Name 	return -EINVAL;
469*5113495bSYour Name }
470*5113495bSYour Name 
pld_pcie_get_msi_irq(struct device * dev,unsigned int vector)471*5113495bSYour Name static inline int pld_pcie_get_msi_irq(struct device *dev, unsigned int vector)
472*5113495bSYour Name {
473*5113495bSYour Name 	return 0;
474*5113495bSYour Name }
475*5113495bSYour Name 
pld_pcie_is_one_msi(struct device * dev)476*5113495bSYour Name static inline bool pld_pcie_is_one_msi(struct device *dev)
477*5113495bSYour Name {
478*5113495bSYour Name 	return false;
479*5113495bSYour Name }
480*5113495bSYour Name 
pld_pcie_get_msi_address(struct device * dev,uint32_t * msi_addr_low,uint32_t * msi_addr_high)481*5113495bSYour Name static inline void pld_pcie_get_msi_address(struct device *dev,
482*5113495bSYour Name 					    uint32_t *msi_addr_low,
483*5113495bSYour Name 					    uint32_t *msi_addr_high)
484*5113495bSYour Name {
485*5113495bSYour Name 	return;
486*5113495bSYour Name }
487*5113495bSYour Name 
pld_pcie_is_drv_connected(struct device * dev)488*5113495bSYour Name static inline int pld_pcie_is_drv_connected(struct device *dev)
489*5113495bSYour Name {
490*5113495bSYour Name 	return 0;
491*5113495bSYour Name }
492*5113495bSYour Name 
pld_pcie_platform_driver_support(void)493*5113495bSYour Name static inline bool pld_pcie_platform_driver_support(void)
494*5113495bSYour Name {
495*5113495bSYour Name 	return false;
496*5113495bSYour Name }
497*5113495bSYour Name 
pld_pcie_is_direct_link_supported(struct device * dev)498*5113495bSYour Name static inline bool pld_pcie_is_direct_link_supported(struct device *dev)
499*5113495bSYour Name {
500*5113495bSYour Name 	return false;
501*5113495bSYour Name }
502*5113495bSYour Name 
503*5113495bSYour Name static inline
pld_pcie_audio_smmu_map(struct device * dev,phys_addr_t paddr,dma_addr_t iova,size_t size)504*5113495bSYour Name int pld_pcie_audio_smmu_map(struct device *dev, phys_addr_t paddr,
505*5113495bSYour Name 			    dma_addr_t iova, size_t size)
506*5113495bSYour Name {
507*5113495bSYour Name 	return 0;
508*5113495bSYour Name }
509*5113495bSYour Name 
510*5113495bSYour Name static inline
pld_pcie_audio_smmu_unmap(struct device * dev,dma_addr_t iova,size_t size)511*5113495bSYour Name void pld_pcie_audio_smmu_unmap(struct device *dev, dma_addr_t iova, size_t size)
512*5113495bSYour Name {
513*5113495bSYour Name }
514*5113495bSYour Name 
pld_pcie_set_wfc_mode(struct device * dev,enum pld_wfc_mode wfc_mode)515*5113495bSYour Name static inline int pld_pcie_set_wfc_mode(struct device *dev,
516*5113495bSYour Name 					enum pld_wfc_mode wfc_mode)
517*5113495bSYour Name {
518*5113495bSYour Name 	return 0;
519*5113495bSYour Name }
520*5113495bSYour Name 
pld_pci_thermal_register(struct device * dev,unsigned long max_state,int mon_id)521*5113495bSYour Name static inline int pld_pci_thermal_register(struct device *dev,
522*5113495bSYour Name 					   unsigned long max_state,
523*5113495bSYour Name 					   int mon_id)
524*5113495bSYour Name {
525*5113495bSYour Name 	return 0;
526*5113495bSYour Name }
527*5113495bSYour Name 
pld_pci_thermal_unregister(struct device * dev,int mon_id)528*5113495bSYour Name static inline void pld_pci_thermal_unregister(struct device *dev,
529*5113495bSYour Name 					      int mon_id)
530*5113495bSYour Name {
531*5113495bSYour Name }
532*5113495bSYour Name 
pld_pci_get_thermal_state(struct device * dev,unsigned long * thermal_state,int mon_id)533*5113495bSYour Name static inline int pld_pci_get_thermal_state(struct device *dev,
534*5113495bSYour Name 					    unsigned long *thermal_state,
535*5113495bSYour Name 					    int mon_id)
536*5113495bSYour Name {
537*5113495bSYour Name 	return 0;
538*5113495bSYour Name }
539*5113495bSYour Name 
540*5113495bSYour Name #else
541*5113495bSYour Name #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0))
542*5113495bSYour Name int pld_pcie_set_wfc_mode(struct device *dev,
543*5113495bSYour Name 			  enum pld_wfc_mode wfc_mode);
544*5113495bSYour Name #else
pld_pcie_set_wfc_mode(struct device * dev,enum pld_wfc_mode wfc_mode)545*5113495bSYour Name static inline int pld_pcie_set_wfc_mode(struct device *dev,
546*5113495bSYour Name 					enum pld_wfc_mode wfc_mode)
547*5113495bSYour Name {
548*5113495bSYour Name 	return 0;
549*5113495bSYour Name }
550*5113495bSYour Name #endif
551*5113495bSYour Name 
552*5113495bSYour Name /**
553*5113495bSYour Name  * pld_pcie_get_fw_files_for_target() - Get FW file names
554*5113495bSYour Name  * @dev: device
555*5113495bSYour Name  * @pfw_files: buffer for FW file names
556*5113495bSYour Name  * @target_type: target type
557*5113495bSYour Name  * @target_version: target version
558*5113495bSYour Name  *
559*5113495bSYour Name  * Return target specific FW file names to the buffer.
560*5113495bSYour Name  *
561*5113495bSYour Name  * Return: 0 for success
562*5113495bSYour Name  *         Non zero failure code for errors
563*5113495bSYour Name  */
564*5113495bSYour Name int pld_pcie_get_fw_files_for_target(struct device *dev,
565*5113495bSYour Name 				     struct pld_fw_files *pfw_files,
566*5113495bSYour Name 				     u32 target_type, u32 target_version);
567*5113495bSYour Name 
568*5113495bSYour Name /**
569*5113495bSYour Name  * pld_pcie_get_platform_cap() - Get platform capabilities
570*5113495bSYour Name  * @dev: device
571*5113495bSYour Name  * @cap: buffer to the capabilities
572*5113495bSYour Name  *
573*5113495bSYour Name  * Return capabilities to the buffer.
574*5113495bSYour Name  *
575*5113495bSYour Name  * Return: 0 for success
576*5113495bSYour Name  *         Non zero failure code for errors
577*5113495bSYour Name  */
578*5113495bSYour Name int pld_pcie_get_platform_cap(struct device *dev, struct pld_platform_cap *cap);
579*5113495bSYour Name 
580*5113495bSYour Name /**
581*5113495bSYour Name  * pld_pcie_get_soc_info() - Get SOC information
582*5113495bSYour Name  * @dev: device
583*5113495bSYour Name  * @info: buffer to SOC information
584*5113495bSYour Name  *
585*5113495bSYour Name  * Return SOC info to the buffer.
586*5113495bSYour Name  *
587*5113495bSYour Name  * Return: 0 for success
588*5113495bSYour Name  *         Non zero failure code for errors
589*5113495bSYour Name  */
590*5113495bSYour Name int pld_pcie_get_soc_info(struct device *dev, struct pld_soc_info *info);
591*5113495bSYour Name 
592*5113495bSYour Name /**
593*5113495bSYour Name  * pld_pcie_schedule_recovery_work() - schedule recovery work
594*5113495bSYour Name  * @dev: device
595*5113495bSYour Name  * @reason: recovery reason
596*5113495bSYour Name  *
597*5113495bSYour Name  * Return: void
598*5113495bSYour Name  */
599*5113495bSYour Name void pld_pcie_schedule_recovery_work(struct device *dev,
600*5113495bSYour Name 				     enum pld_recovery_reason reason);
601*5113495bSYour Name 
602*5113495bSYour Name /**
603*5113495bSYour Name  * pld_pcie_device_self_recovery() - device self recovery
604*5113495bSYour Name  * @dev: device
605*5113495bSYour Name  * @reason: recovery reason
606*5113495bSYour Name  *
607*5113495bSYour Name  * Return: void
608*5113495bSYour Name  */
609*5113495bSYour Name void pld_pcie_device_self_recovery(struct device *dev,
610*5113495bSYour Name 				   enum pld_recovery_reason reason);
pld_pcie_collect_rddm(struct device * dev)611*5113495bSYour Name static inline int pld_pcie_collect_rddm(struct device *dev)
612*5113495bSYour Name {
613*5113495bSYour Name 	return cnss_force_collect_rddm(dev);
614*5113495bSYour Name }
615*5113495bSYour Name 
pld_pcie_qmi_send_get(struct device * dev)616*5113495bSYour Name static inline int pld_pcie_qmi_send_get(struct device *dev)
617*5113495bSYour Name {
618*5113495bSYour Name 	return cnss_qmi_send_get(dev);
619*5113495bSYour Name }
620*5113495bSYour Name 
pld_pcie_qmi_send_put(struct device * dev)621*5113495bSYour Name static inline int pld_pcie_qmi_send_put(struct device *dev)
622*5113495bSYour Name {
623*5113495bSYour Name 	return cnss_qmi_send_put(dev);
624*5113495bSYour Name }
625*5113495bSYour Name 
626*5113495bSYour Name static inline int
pld_pcie_qmi_send(struct device * dev,int type,void * cmd,int cmd_len,void * cb_ctx,int (* cb)(void * ctx,void * event,int event_len))627*5113495bSYour Name pld_pcie_qmi_send(struct device *dev, int type, void *cmd,
628*5113495bSYour Name 		  int cmd_len, void *cb_ctx,
629*5113495bSYour Name 		  int (*cb)(void *ctx, void *event, int event_len))
630*5113495bSYour Name {
631*5113495bSYour Name 	return cnss_qmi_send(dev, type, cmd, cmd_len, cb_ctx, cb);
632*5113495bSYour Name }
633*5113495bSYour Name 
634*5113495bSYour Name #if defined(WLAN_CHIPSET_STATS) && \
635*5113495bSYour Name 	(LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0))
636*5113495bSYour Name static inline int
pld_pcie_register_qmi_ind(struct device * dev,void * cb_ctx,int (* cb)(void * ctx,uint16_t type,void * event,int event_len))637*5113495bSYour Name pld_pcie_register_qmi_ind(struct device *dev, void *cb_ctx,
638*5113495bSYour Name 			  int (*cb)(void *ctx, uint16_t type,
639*5113495bSYour Name 				    void *event, int event_len))
640*5113495bSYour Name {
641*5113495bSYour Name 	return cnss_register_driver_async_data_cb(dev, cb_ctx, cb);
642*5113495bSYour Name }
643*5113495bSYour Name #else
644*5113495bSYour Name static inline int
pld_pcie_register_qmi_ind(struct device * dev,void * cb_ctx,int (* cb)(void * ctx,uint16_t type,void * event,int event_len))645*5113495bSYour Name pld_pcie_register_qmi_ind(struct device *dev, void *cb_ctx,
646*5113495bSYour Name 			  int (*cb)(void *ctx, uint16_t type,
647*5113495bSYour Name 				    void *event, int event_len))
648*5113495bSYour Name {
649*5113495bSYour Name 	return 0;
650*5113495bSYour Name }
651*5113495bSYour Name #endif
652*5113495bSYour Name 
653*5113495bSYour Name #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0))
pld_pcie_smmu_get_domain(struct device * dev)654*5113495bSYour Name static inline void *pld_pcie_smmu_get_domain(struct device *dev)
655*5113495bSYour Name {
656*5113495bSYour Name 	return cnss_smmu_get_domain(dev);
657*5113495bSYour Name }
658*5113495bSYour Name #else
pld_pcie_smmu_get_mapping(struct device * dev)659*5113495bSYour Name static inline void *pld_pcie_smmu_get_mapping(struct device *dev)
660*5113495bSYour Name {
661*5113495bSYour Name 	return cnss_smmu_get_mapping(dev);
662*5113495bSYour Name }
663*5113495bSYour Name #endif
664*5113495bSYour Name 
665*5113495bSYour Name static inline int
pld_pcie_smmu_map(struct device * dev,phys_addr_t paddr,uint32_t * iova_addr,size_t size)666*5113495bSYour Name pld_pcie_smmu_map(struct device *dev,
667*5113495bSYour Name 		  phys_addr_t paddr, uint32_t *iova_addr, size_t size)
668*5113495bSYour Name {
669*5113495bSYour Name 	return cnss_smmu_map(dev, paddr, iova_addr, size);
670*5113495bSYour Name }
671*5113495bSYour Name 
672*5113495bSYour Name #ifdef CONFIG_SMMU_S1_UNMAP
673*5113495bSYour Name static inline int
pld_pcie_smmu_unmap(struct device * dev,uint32_t iova_addr,size_t size)674*5113495bSYour Name pld_pcie_smmu_unmap(struct device *dev, uint32_t iova_addr, size_t size)
675*5113495bSYour Name {
676*5113495bSYour Name 	return cnss_smmu_unmap(dev, iova_addr, size);
677*5113495bSYour Name }
678*5113495bSYour Name #else /* !CONFIG_SMMU_S1_UNMAP */
679*5113495bSYour Name static inline int
pld_pcie_smmu_unmap(struct device * dev,uint32_t iova_addr,size_t size)680*5113495bSYour Name pld_pcie_smmu_unmap(struct device *dev, uint32_t iova_addr, size_t size)
681*5113495bSYour Name {
682*5113495bSYour Name 	return 0;
683*5113495bSYour Name }
684*5113495bSYour Name #endif /* CONFIG_SMMU_S1_UNMAP */
685*5113495bSYour Name 
pld_pcie_prevent_l1(struct device * dev)686*5113495bSYour Name static inline int pld_pcie_prevent_l1(struct device *dev)
687*5113495bSYour Name {
688*5113495bSYour Name 	return cnss_pci_prevent_l1(dev);
689*5113495bSYour Name }
690*5113495bSYour Name 
pld_pcie_allow_l1(struct device * dev)691*5113495bSYour Name static inline void pld_pcie_allow_l1(struct device *dev)
692*5113495bSYour Name {
693*5113495bSYour Name 	cnss_pci_allow_l1(dev);
694*5113495bSYour Name }
695*5113495bSYour Name 
696*5113495bSYour Name #ifdef PCIE_GEN_SWITCH
697*5113495bSYour Name /**
698*5113495bSYour Name  * pld_pcie_set_gen_speed() - Wrapper for platform API to set PCIE gen speed
699*5113495bSYour Name  * @dev: device
700*5113495bSYour Name  * @pcie_gen_speed: PCIE gen speed required
701*5113495bSYour Name  *
702*5113495bSYour Name  * Send required PCIE Gen speed to platform driver
703*5113495bSYour Name  *
704*5113495bSYour Name  * Return: 0 for success. Negative error codes.
705*5113495bSYour Name  */
pld_pcie_set_gen_speed(struct device * dev,u8 pcie_gen_speed)706*5113495bSYour Name static inline int pld_pcie_set_gen_speed(struct device *dev, u8 pcie_gen_speed)
707*5113495bSYour Name {
708*5113495bSYour Name 	return cnss_set_pcie_gen_speed(dev, pcie_gen_speed);
709*5113495bSYour Name }
710*5113495bSYour Name #else
pld_pcie_set_gen_speed(struct device * dev,u8 pcie_gen_speed)711*5113495bSYour Name static inline int pld_pcie_set_gen_speed(struct device *dev, u8 pcie_gen_speed)
712*5113495bSYour Name {
713*5113495bSYour Name 	return 0;
714*5113495bSYour Name }
715*5113495bSYour Name #endif
716*5113495bSYour Name 
pld_pcie_link_down(struct device * dev)717*5113495bSYour Name static inline void pld_pcie_link_down(struct device *dev)
718*5113495bSYour Name {
719*5113495bSYour Name 	cnss_pci_link_down(dev);
720*5113495bSYour Name }
721*5113495bSYour Name 
722*5113495bSYour Name #if ((LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0)) && \
723*5113495bSYour Name 		(LINUX_VERSION_CODE < KERNEL_VERSION(5, 11, 0)))
pld_pcie_get_reg_dump(struct device * dev,uint8_t * buf,uint32_t len)724*5113495bSYour Name static inline int pld_pcie_get_reg_dump(struct device *dev, uint8_t *buf,
725*5113495bSYour Name 					uint32_t len)
726*5113495bSYour Name {
727*5113495bSYour Name 	return cnss_pci_get_reg_dump(dev, buf, len);
728*5113495bSYour Name }
729*5113495bSYour Name #else
pld_pcie_get_reg_dump(struct device * dev,uint8_t * buf,uint32_t len)730*5113495bSYour Name static inline int pld_pcie_get_reg_dump(struct device *dev, uint8_t *buf,
731*5113495bSYour Name 					uint32_t len)
732*5113495bSYour Name {
733*5113495bSYour Name 	return 0;
734*5113495bSYour Name }
735*5113495bSYour Name #endif
736*5113495bSYour Name 
pld_pcie_is_fw_down(struct device * dev)737*5113495bSYour Name static inline int pld_pcie_is_fw_down(struct device *dev)
738*5113495bSYour Name {
739*5113495bSYour Name 	return cnss_pci_is_device_down(dev);
740*5113495bSYour Name }
741*5113495bSYour Name 
pld_pcie_athdiag_read(struct device * dev,uint32_t offset,uint32_t memtype,uint32_t datalen,uint8_t * output)742*5113495bSYour Name static inline int pld_pcie_athdiag_read(struct device *dev, uint32_t offset,
743*5113495bSYour Name 					uint32_t memtype, uint32_t datalen,
744*5113495bSYour Name 					uint8_t *output)
745*5113495bSYour Name {
746*5113495bSYour Name 	return cnss_athdiag_read(dev, offset, memtype, datalen, output);
747*5113495bSYour Name }
748*5113495bSYour Name 
pld_pcie_athdiag_write(struct device * dev,uint32_t offset,uint32_t memtype,uint32_t datalen,uint8_t * input)749*5113495bSYour Name static inline int pld_pcie_athdiag_write(struct device *dev, uint32_t offset,
750*5113495bSYour Name 					 uint32_t memtype, uint32_t datalen,
751*5113495bSYour Name 					 uint8_t *input)
752*5113495bSYour Name {
753*5113495bSYour Name 	return cnss_athdiag_write(dev, offset, memtype, datalen, input);
754*5113495bSYour Name }
755*5113495bSYour Name 
pld_pcie_get_virt_ramdump_mem(struct device * dev,unsigned long * size)756*5113495bSYour Name static inline void *pld_pcie_get_virt_ramdump_mem(struct device *dev,
757*5113495bSYour Name 						  unsigned long *size)
758*5113495bSYour Name {
759*5113495bSYour Name 	return cnss_get_virt_ramdump_mem(dev, size);
760*5113495bSYour Name }
761*5113495bSYour Name 
pld_pcie_release_virt_ramdump_mem(void * address)762*5113495bSYour Name static inline void pld_pcie_release_virt_ramdump_mem(void *address)
763*5113495bSYour Name {
764*5113495bSYour Name }
765*5113495bSYour Name 
pld_pcie_device_crashed(struct device * dev)766*5113495bSYour Name static inline void pld_pcie_device_crashed(struct device *dev)
767*5113495bSYour Name {
768*5113495bSYour Name 	cnss_device_crashed(dev);
769*5113495bSYour Name }
770*5113495bSYour Name 
pld_pcie_request_pm_qos(struct device * dev,u32 qos_val)771*5113495bSYour Name static inline void pld_pcie_request_pm_qos(struct device *dev, u32 qos_val)
772*5113495bSYour Name {
773*5113495bSYour Name 	cnss_request_pm_qos(dev, qos_val);
774*5113495bSYour Name }
775*5113495bSYour Name 
pld_pcie_remove_pm_qos(struct device * dev)776*5113495bSYour Name static inline void pld_pcie_remove_pm_qos(struct device *dev)
777*5113495bSYour Name {
778*5113495bSYour Name 	cnss_remove_pm_qos(dev);
779*5113495bSYour Name }
780*5113495bSYour Name 
781*5113495bSYour Name #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0))
pld_pcie_set_tsf_sync_period(struct device * dev,u32 val)782*5113495bSYour Name static inline void pld_pcie_set_tsf_sync_period(struct device *dev, u32 val)
783*5113495bSYour Name {
784*5113495bSYour Name 	cnss_update_time_sync_period(dev, val);
785*5113495bSYour Name }
786*5113495bSYour Name 
pld_pcie_reset_tsf_sync_period(struct device * dev)787*5113495bSYour Name static inline void pld_pcie_reset_tsf_sync_period(struct device *dev)
788*5113495bSYour Name {
789*5113495bSYour Name 	cnss_reset_time_sync_period(dev);
790*5113495bSYour Name }
791*5113495bSYour Name #else
pld_pcie_set_tsf_sync_period(struct device * dev,u32 val)792*5113495bSYour Name static inline void pld_pcie_set_tsf_sync_period(struct device *dev, u32 val)
793*5113495bSYour Name {
794*5113495bSYour Name }
795*5113495bSYour Name 
pld_pcie_reset_tsf_sync_period(struct device * dev)796*5113495bSYour Name static inline void pld_pcie_reset_tsf_sync_period(struct device *dev)
797*5113495bSYour Name {
798*5113495bSYour Name }
799*5113495bSYour Name #endif
pld_pcie_request_bus_bandwidth(struct device * dev,int bandwidth)800*5113495bSYour Name static inline int pld_pcie_request_bus_bandwidth(struct device *dev,
801*5113495bSYour Name 						 int bandwidth)
802*5113495bSYour Name {
803*5113495bSYour Name 	return cnss_request_bus_bandwidth(dev, bandwidth);
804*5113495bSYour Name }
805*5113495bSYour Name 
pld_pcie_auto_suspend(struct device * dev)806*5113495bSYour Name static inline int pld_pcie_auto_suspend(struct device *dev)
807*5113495bSYour Name {
808*5113495bSYour Name 	return cnss_auto_suspend(dev);
809*5113495bSYour Name }
810*5113495bSYour Name 
pld_pcie_auto_resume(struct device * dev)811*5113495bSYour Name static inline int pld_pcie_auto_resume(struct device *dev)
812*5113495bSYour Name {
813*5113495bSYour Name 	return cnss_auto_resume(dev);
814*5113495bSYour Name }
815*5113495bSYour Name 
pld_pcie_force_wake_request(struct device * dev)816*5113495bSYour Name static inline int pld_pcie_force_wake_request(struct device *dev)
817*5113495bSYour Name {
818*5113495bSYour Name 	return cnss_pci_force_wake_request(dev);
819*5113495bSYour Name }
820*5113495bSYour Name 
pld_pcie_force_wake_request_sync(struct device * dev,int timeout_us)821*5113495bSYour Name static inline int pld_pcie_force_wake_request_sync(struct device *dev,
822*5113495bSYour Name 						   int timeout_us)
823*5113495bSYour Name {
824*5113495bSYour Name 	return cnss_pci_force_wake_request_sync(dev, timeout_us);
825*5113495bSYour Name }
826*5113495bSYour Name 
pld_pcie_is_device_awake(struct device * dev)827*5113495bSYour Name static inline int pld_pcie_is_device_awake(struct device *dev)
828*5113495bSYour Name {
829*5113495bSYour Name 	return cnss_pci_is_device_awake(dev);
830*5113495bSYour Name }
831*5113495bSYour Name 
pld_pcie_force_wake_release(struct device * dev)832*5113495bSYour Name static inline int pld_pcie_force_wake_release(struct device *dev)
833*5113495bSYour Name {
834*5113495bSYour Name 	return cnss_pci_force_wake_release(dev);
835*5113495bSYour Name }
836*5113495bSYour Name 
pld_pcie_lock_reg_window(struct device * dev,unsigned long * flags)837*5113495bSYour Name static inline void pld_pcie_lock_reg_window(struct device *dev,
838*5113495bSYour Name 					    unsigned long *flags)
839*5113495bSYour Name {
840*5113495bSYour Name 	cnss_pci_lock_reg_window(dev, flags);
841*5113495bSYour Name }
842*5113495bSYour Name 
pld_pcie_unlock_reg_window(struct device * dev,unsigned long * flags)843*5113495bSYour Name static inline void pld_pcie_unlock_reg_window(struct device *dev,
844*5113495bSYour Name 					      unsigned long *flags)
845*5113495bSYour Name {
846*5113495bSYour Name 	cnss_pci_unlock_reg_window(dev, flags);
847*5113495bSYour Name }
848*5113495bSYour Name 
849*5113495bSYour Name #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0))
pld_pcie_get_pci_slot(struct device * dev)850*5113495bSYour Name static inline int pld_pcie_get_pci_slot(struct device *dev)
851*5113495bSYour Name {
852*5113495bSYour Name 	return cnss_get_pci_slot(dev);
853*5113495bSYour Name }
854*5113495bSYour Name #else
pld_pcie_get_pci_slot(struct device * dev)855*5113495bSYour Name static inline int pld_pcie_get_pci_slot(struct device *dev)
856*5113495bSYour Name {
857*5113495bSYour Name 	return 0;
858*5113495bSYour Name }
859*5113495bSYour Name #endif
860*5113495bSYour Name 
861*5113495bSYour Name #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0))
pld_pcie_get_wifi_kobj(struct device * dev)862*5113495bSYour Name static inline struct kobject *pld_pcie_get_wifi_kobj(struct device *dev)
863*5113495bSYour Name {
864*5113495bSYour Name 	return cnss_get_wifi_kobj(dev);
865*5113495bSYour Name }
866*5113495bSYour Name #else
pld_pcie_get_wifi_kobj(struct device * dev)867*5113495bSYour Name static inline struct kobject *pld_pcie_get_wifi_kobj(struct device *dev)
868*5113495bSYour Name {
869*5113495bSYour Name 	return NULL;
870*5113495bSYour Name }
871*5113495bSYour Name #endif
872*5113495bSYour Name 
pld_pcie_power_on(struct device * dev)873*5113495bSYour Name static inline int pld_pcie_power_on(struct device *dev)
874*5113495bSYour Name {
875*5113495bSYour Name 	return cnss_power_up(dev);
876*5113495bSYour Name }
877*5113495bSYour Name 
pld_pcie_power_off(struct device * dev)878*5113495bSYour Name static inline int pld_pcie_power_off(struct device *dev)
879*5113495bSYour Name {
880*5113495bSYour Name 	return cnss_power_down(dev);
881*5113495bSYour Name }
882*5113495bSYour Name 
pld_pcie_idle_restart(struct device * dev)883*5113495bSYour Name static inline int pld_pcie_idle_restart(struct device *dev)
884*5113495bSYour Name {
885*5113495bSYour Name 	return cnss_idle_restart(dev);
886*5113495bSYour Name }
887*5113495bSYour Name 
pld_pcie_idle_shutdown(struct device * dev)888*5113495bSYour Name static inline int pld_pcie_idle_shutdown(struct device *dev)
889*5113495bSYour Name {
890*5113495bSYour Name 	return cnss_idle_shutdown(dev);
891*5113495bSYour Name }
892*5113495bSYour Name 
pld_pcie_force_assert_target(struct device * dev)893*5113495bSYour Name static inline int pld_pcie_force_assert_target(struct device *dev)
894*5113495bSYour Name {
895*5113495bSYour Name 	return cnss_force_fw_assert(dev);
896*5113495bSYour Name }
897*5113495bSYour Name 
pld_pcie_get_user_msi_assignment(struct device * dev,char * user_name,int * num_vectors,uint32_t * user_base_data,uint32_t * base_vector)898*5113495bSYour Name static inline int pld_pcie_get_user_msi_assignment(struct device *dev,
899*5113495bSYour Name 						   char *user_name,
900*5113495bSYour Name 						   int *num_vectors,
901*5113495bSYour Name 						   uint32_t *user_base_data,
902*5113495bSYour Name 						   uint32_t *base_vector)
903*5113495bSYour Name {
904*5113495bSYour Name 	return cnss_get_user_msi_assignment(dev, user_name, num_vectors,
905*5113495bSYour Name 					    user_base_data, base_vector);
906*5113495bSYour Name }
907*5113495bSYour Name 
pld_pcie_get_msi_irq(struct device * dev,unsigned int vector)908*5113495bSYour Name static inline int pld_pcie_get_msi_irq(struct device *dev, unsigned int vector)
909*5113495bSYour Name {
910*5113495bSYour Name 	return cnss_get_msi_irq(dev, vector);
911*5113495bSYour Name }
912*5113495bSYour Name 
913*5113495bSYour Name #ifdef WLAN_ONE_MSI_VECTOR
pld_pcie_is_one_msi(struct device * dev)914*5113495bSYour Name static inline bool pld_pcie_is_one_msi(struct device *dev)
915*5113495bSYour Name {
916*5113495bSYour Name 	return cnss_is_one_msi(dev);
917*5113495bSYour Name }
918*5113495bSYour Name #else
pld_pcie_is_one_msi(struct device * dev)919*5113495bSYour Name static inline bool pld_pcie_is_one_msi(struct device *dev)
920*5113495bSYour Name {
921*5113495bSYour Name 	return false;
922*5113495bSYour Name }
923*5113495bSYour Name #endif
924*5113495bSYour Name 
pld_pcie_get_msi_address(struct device * dev,uint32_t * msi_addr_low,uint32_t * msi_addr_high)925*5113495bSYour Name static inline void pld_pcie_get_msi_address(struct device *dev,
926*5113495bSYour Name 					    uint32_t *msi_addr_low,
927*5113495bSYour Name 					    uint32_t *msi_addr_high)
928*5113495bSYour Name {
929*5113495bSYour Name 	cnss_get_msi_address(dev, msi_addr_low, msi_addr_high);
930*5113495bSYour Name }
931*5113495bSYour Name 
pld_pcie_is_drv_connected(struct device * dev)932*5113495bSYour Name static inline int pld_pcie_is_drv_connected(struct device *dev)
933*5113495bSYour Name {
934*5113495bSYour Name 	return cnss_pci_is_drv_connected(dev);
935*5113495bSYour Name }
936*5113495bSYour Name 
pld_pcie_platform_driver_support(void)937*5113495bSYour Name static inline bool pld_pcie_platform_driver_support(void)
938*5113495bSYour Name {
939*5113495bSYour Name 	return true;
940*5113495bSYour Name }
941*5113495bSYour Name 
pld_pci_thermal_register(struct device * dev,unsigned long max_state,int mon_id)942*5113495bSYour Name static inline int pld_pci_thermal_register(struct device *dev,
943*5113495bSYour Name 					   unsigned long max_state,
944*5113495bSYour Name 					   int mon_id)
945*5113495bSYour Name {
946*5113495bSYour Name 	return cnss_thermal_cdev_register(dev, max_state, mon_id);
947*5113495bSYour Name }
948*5113495bSYour Name 
pld_pci_thermal_unregister(struct device * dev,int mon_id)949*5113495bSYour Name static inline void pld_pci_thermal_unregister(struct device *dev,
950*5113495bSYour Name 					      int mon_id)
951*5113495bSYour Name {
952*5113495bSYour Name 	cnss_thermal_cdev_unregister(dev, mon_id);
953*5113495bSYour Name }
954*5113495bSYour Name 
pld_pci_get_thermal_state(struct device * dev,unsigned long * thermal_state,int mon_id)955*5113495bSYour Name static inline int pld_pci_get_thermal_state(struct device *dev,
956*5113495bSYour Name 					    unsigned long *thermal_state,
957*5113495bSYour Name 					    int mon_id)
958*5113495bSYour Name {
959*5113495bSYour Name 	return cnss_get_curr_therm_cdev_state(dev, thermal_state, mon_id);
960*5113495bSYour Name }
961*5113495bSYour Name 
962*5113495bSYour Name #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0))
pld_pcie_is_direct_link_supported(struct device * dev)963*5113495bSYour Name static inline bool pld_pcie_is_direct_link_supported(struct device *dev)
964*5113495bSYour Name {
965*5113495bSYour Name 	return cnss_get_fw_cap(dev, CNSS_FW_CAP_DIRECT_LINK_SUPPORT);
966*5113495bSYour Name }
967*5113495bSYour Name 
968*5113495bSYour Name static inline
pld_pcie_audio_smmu_map(struct device * dev,phys_addr_t paddr,dma_addr_t iova,size_t size)969*5113495bSYour Name int pld_pcie_audio_smmu_map(struct device *dev, phys_addr_t paddr,
970*5113495bSYour Name 			    dma_addr_t iova, size_t size)
971*5113495bSYour Name {
972*5113495bSYour Name 	return cnss_audio_smmu_map(dev, paddr, iova, size);
973*5113495bSYour Name }
974*5113495bSYour Name 
975*5113495bSYour Name static inline
pld_pcie_audio_smmu_unmap(struct device * dev,dma_addr_t iova,size_t size)976*5113495bSYour Name void pld_pcie_audio_smmu_unmap(struct device *dev, dma_addr_t iova, size_t size)
977*5113495bSYour Name {
978*5113495bSYour Name 	cnss_audio_smmu_unmap(dev, iova, size);
979*5113495bSYour Name }
980*5113495bSYour Name #else
pld_pcie_is_direct_link_supported(struct device * dev)981*5113495bSYour Name static inline bool pld_pcie_is_direct_link_supported(struct device *dev)
982*5113495bSYour Name {
983*5113495bSYour Name 	return false;
984*5113495bSYour Name }
985*5113495bSYour Name 
986*5113495bSYour Name static inline
pld_pcie_audio_smmu_map(struct device * dev,phys_addr_t paddr,dma_addr_t iova,size_t size)987*5113495bSYour Name int pld_pcie_audio_smmu_map(struct device *dev, phys_addr_t paddr,
988*5113495bSYour Name 			    dma_addr_t iova, size_t size)
989*5113495bSYour Name {
990*5113495bSYour Name 	return 0;
991*5113495bSYour Name }
992*5113495bSYour Name 
993*5113495bSYour Name static inline
pld_pcie_audio_smmu_unmap(struct device * dev,dma_addr_t iova,size_t size)994*5113495bSYour Name void pld_pcie_audio_smmu_unmap(struct device *dev, dma_addr_t iova, size_t size)
995*5113495bSYour Name {
996*5113495bSYour Name }
997*5113495bSYour Name #endif
998*5113495bSYour Name #endif
999*5113495bSYour Name #endif
1000