xref: /wlan-driver/qcacld-3.0/core/pld/src/pld_ipci.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2021-2023 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_IPCI_H__
21*5113495bSYour Name #define __PLD_IPCI_H__
22*5113495bSYour Name 
23*5113495bSYour Name #ifdef CONFIG_PLD_IPCI_ICNSS
24*5113495bSYour Name #ifdef CONFIG_CNSS_OUT_OF_TREE
25*5113495bSYour Name #include "icnss2.h"
26*5113495bSYour Name #else
27*5113495bSYour Name #include <soc/qcom/icnss2.h>
28*5113495bSYour Name #endif
29*5113495bSYour Name #endif
30*5113495bSYour Name #include "pld_internal.h"
31*5113495bSYour Name 
32*5113495bSYour Name #ifndef CONFIG_PLD_IPCI_ICNSS
pld_ipci_register_driver(void)33*5113495bSYour Name static inline int pld_ipci_register_driver(void)
34*5113495bSYour Name {
35*5113495bSYour Name 	return 0;
36*5113495bSYour Name }
37*5113495bSYour Name 
pld_ipci_unregister_driver(void)38*5113495bSYour Name static inline void pld_ipci_unregister_driver(void)
39*5113495bSYour Name {
40*5113495bSYour Name }
41*5113495bSYour Name 
pld_ipci_wlan_enable(struct device * dev,struct pld_wlan_enable_cfg * config,enum pld_driver_mode mode,const char * host_version)42*5113495bSYour Name static inline int pld_ipci_wlan_enable(struct device *dev,
43*5113495bSYour Name 				       struct pld_wlan_enable_cfg *config,
44*5113495bSYour Name 				       enum pld_driver_mode mode,
45*5113495bSYour Name 				       const char *host_version)
46*5113495bSYour Name {
47*5113495bSYour Name 	return 0;
48*5113495bSYour Name }
49*5113495bSYour Name 
pld_ipci_wlan_disable(struct device * dev,enum pld_driver_mode mode)50*5113495bSYour Name static inline int pld_ipci_wlan_disable(struct device *dev,
51*5113495bSYour Name 					enum pld_driver_mode mode)
52*5113495bSYour Name {
53*5113495bSYour Name 	return 0;
54*5113495bSYour Name }
55*5113495bSYour Name 
pld_ipci_get_soc_info(struct device * dev,struct pld_soc_info * info)56*5113495bSYour Name static inline int pld_ipci_get_soc_info(struct device *dev,
57*5113495bSYour Name 					struct pld_soc_info *info)
58*5113495bSYour Name {
59*5113495bSYour Name 	return 0;
60*5113495bSYour Name }
61*5113495bSYour Name 
pld_ipci_power_on(struct device * dev)62*5113495bSYour Name static inline int pld_ipci_power_on(struct device *dev)
63*5113495bSYour Name {
64*5113495bSYour Name 	return 0;
65*5113495bSYour Name }
66*5113495bSYour Name 
pld_ipci_power_off(struct device * dev)67*5113495bSYour Name static inline int pld_ipci_power_off(struct device *dev)
68*5113495bSYour Name {
69*5113495bSYour Name 	return 0;
70*5113495bSYour Name }
71*5113495bSYour Name 
pld_ipci_idle_restart(struct device * dev)72*5113495bSYour Name static inline int pld_ipci_idle_restart(struct device *dev)
73*5113495bSYour Name {
74*5113495bSYour Name 	return 0;
75*5113495bSYour Name }
76*5113495bSYour Name 
pld_ipci_idle_shutdown(struct device * dev)77*5113495bSYour Name static inline int pld_ipci_idle_shutdown(struct device *dev)
78*5113495bSYour Name {
79*5113495bSYour Name 	return 0;
80*5113495bSYour Name }
81*5113495bSYour Name 
pld_ipci_force_assert_target(struct device * dev)82*5113495bSYour Name static inline int pld_ipci_force_assert_target(struct device *dev)
83*5113495bSYour Name {
84*5113495bSYour Name 	return -EINVAL;
85*5113495bSYour Name }
86*5113495bSYour Name 
pld_ipci_get_user_msi_assignment(struct device * dev,char * user_name,int * num_vectors,uint32_t * user_base_data,uint32_t * base_vector)87*5113495bSYour Name static inline int pld_ipci_get_user_msi_assignment(struct device *dev,
88*5113495bSYour Name 						   char *user_name,
89*5113495bSYour Name 						   int *num_vectors,
90*5113495bSYour Name 						   uint32_t *user_base_data,
91*5113495bSYour Name 						   uint32_t *base_vector)
92*5113495bSYour Name {
93*5113495bSYour Name 	return 0;
94*5113495bSYour Name }
95*5113495bSYour Name 
pld_ipci_get_msi_irq(struct device * dev,unsigned int vector)96*5113495bSYour Name static inline int pld_ipci_get_msi_irq(struct device *dev, unsigned int vector)
97*5113495bSYour Name {
98*5113495bSYour Name 	return 0;
99*5113495bSYour Name }
100*5113495bSYour Name 
pld_ipci_get_msi_address(struct device * dev,uint32_t * msi_addr_low,uint32_t * msi_addr_high)101*5113495bSYour Name static inline void pld_ipci_get_msi_address(struct device *dev,
102*5113495bSYour Name 					    uint32_t *msi_addr_low,
103*5113495bSYour Name 					    uint32_t *msi_addr_high)
104*5113495bSYour Name {
105*5113495bSYour Name }
106*5113495bSYour Name 
pld_ipci_is_fw_down(struct device * dev)107*5113495bSYour Name static inline int pld_ipci_is_fw_down(struct device *dev)
108*5113495bSYour Name {
109*5113495bSYour Name 	return 0;
110*5113495bSYour Name }
111*5113495bSYour Name 
pld_ipci_set_fw_log_mode(struct device * dev,u8 fw_log_mode)112*5113495bSYour Name static inline int pld_ipci_set_fw_log_mode(struct device *dev, u8 fw_log_mode)
113*5113495bSYour Name {
114*5113495bSYour Name 	return 0;
115*5113495bSYour Name }
116*5113495bSYour Name 
pld_ipci_smmu_get_domain(struct device * dev)117*5113495bSYour Name static inline void *pld_ipci_smmu_get_domain(struct device *dev)
118*5113495bSYour Name {
119*5113495bSYour Name 	return NULL;
120*5113495bSYour Name }
121*5113495bSYour Name 
pld_ipci_smmu_map(struct device * dev,phys_addr_t paddr,uint32_t * iova_addr,size_t size)122*5113495bSYour Name static inline int pld_ipci_smmu_map(struct device *dev, phys_addr_t paddr,
123*5113495bSYour Name 				    uint32_t *iova_addr, size_t size)
124*5113495bSYour Name {
125*5113495bSYour Name 	return 0;
126*5113495bSYour Name }
127*5113495bSYour Name 
pld_ipci_smmu_unmap(struct device * dev,uint32_t iova_addr,size_t size)128*5113495bSYour Name static inline int pld_ipci_smmu_unmap(struct device *dev,
129*5113495bSYour Name 				      uint32_t iova_addr, size_t size)
130*5113495bSYour Name {
131*5113495bSYour Name 	return 0;
132*5113495bSYour Name }
133*5113495bSYour Name 
pld_ipci_force_wake_request(struct device * dev)134*5113495bSYour Name static inline int pld_ipci_force_wake_request(struct device *dev)
135*5113495bSYour Name {
136*5113495bSYour Name 	return 0;
137*5113495bSYour Name }
138*5113495bSYour Name 
pld_ipci_force_wake_release(struct device * dev)139*5113495bSYour Name static inline int pld_ipci_force_wake_release(struct device *dev)
140*5113495bSYour Name {
141*5113495bSYour Name 	return 0;
142*5113495bSYour Name }
143*5113495bSYour Name 
pld_ipci_is_device_awake(struct device * dev)144*5113495bSYour Name static inline int pld_ipci_is_device_awake(struct device *dev)
145*5113495bSYour Name {
146*5113495bSYour Name 	return 0;
147*5113495bSYour Name }
148*5113495bSYour Name 
pld_ipci_athdiag_read(struct device * dev,uint32_t offset,uint32_t memtype,uint32_t datalen,uint8_t * output)149*5113495bSYour Name static inline int pld_ipci_athdiag_read(struct device *dev, uint32_t offset,
150*5113495bSYour Name 					uint32_t memtype, uint32_t datalen,
151*5113495bSYour Name 					uint8_t *output)
152*5113495bSYour Name {
153*5113495bSYour Name 	return 0;
154*5113495bSYour Name }
155*5113495bSYour Name 
pld_ipci_athdiag_write(struct device * dev,uint32_t offset,uint32_t memtype,uint32_t datalen,uint8_t * input)156*5113495bSYour Name static inline int pld_ipci_athdiag_write(struct device *dev, uint32_t offset,
157*5113495bSYour Name 					 uint32_t memtype, uint32_t datalen,
158*5113495bSYour Name 					 uint8_t *input)
159*5113495bSYour Name {
160*5113495bSYour Name 	return 0;
161*5113495bSYour Name }
162*5113495bSYour Name 
163*5113495bSYour Name static inline int
pld_ipci_qmi_send(struct device * dev,int type,void * cmd,int cmd_len,void * cb_ctx,int (* cb)(void * ctx,void * event,int event_len))164*5113495bSYour Name pld_ipci_qmi_send(struct device *dev, int type, void *cmd,
165*5113495bSYour Name 		  int cmd_len, void *cb_ctx,
166*5113495bSYour Name 		  int (*cb)(void *ctx, void *event, int event_len))
167*5113495bSYour Name {
168*5113495bSYour Name 	return 0;
169*5113495bSYour Name }
170*5113495bSYour Name 
pld_ipci_thermal_register(struct device * dev,unsigned long max_state,int mon_id)171*5113495bSYour Name static inline int pld_ipci_thermal_register(struct device *dev,
172*5113495bSYour Name 					    unsigned long max_state,
173*5113495bSYour Name 					    int mon_id)
174*5113495bSYour Name {
175*5113495bSYour Name 	return 0;
176*5113495bSYour Name }
177*5113495bSYour Name 
pld_ipci_thermal_unregister(struct device * dev,int mon_id)178*5113495bSYour Name static inline void pld_ipci_thermal_unregister(struct device *dev,
179*5113495bSYour Name 					       int mon_id)
180*5113495bSYour Name {
181*5113495bSYour Name }
182*5113495bSYour Name 
pld_ipci_get_thermal_state(struct device * dev,unsigned long * thermal_state,int mon_id)183*5113495bSYour Name static inline int pld_ipci_get_thermal_state(struct device *dev,
184*5113495bSYour Name 					     unsigned long *thermal_state,
185*5113495bSYour Name 					     int mon_id)
186*5113495bSYour Name {
187*5113495bSYour Name 	return 0;
188*5113495bSYour Name }
189*5113495bSYour Name 
pld_ipci_exit_power_save(struct device * dev)190*5113495bSYour Name static inline int pld_ipci_exit_power_save(struct device *dev)
191*5113495bSYour Name {
192*5113495bSYour Name 	return 0;
193*5113495bSYour Name }
194*5113495bSYour Name 
pld_ipci_prevent_l1(struct device * dev)195*5113495bSYour Name static inline int pld_ipci_prevent_l1(struct device *dev)
196*5113495bSYour Name {
197*5113495bSYour Name 	return 0;
198*5113495bSYour Name }
199*5113495bSYour Name 
pld_ipci_allow_l1(struct device * dev)200*5113495bSYour Name static inline void pld_ipci_allow_l1(struct device *dev)
201*5113495bSYour Name {
202*5113495bSYour Name }
203*5113495bSYour Name 
pld_ipci_mhi_state(struct device * dev)204*5113495bSYour Name static inline int pld_ipci_mhi_state(struct device *dev)
205*5113495bSYour Name {
206*5113495bSYour Name 	return 0;
207*5113495bSYour Name }
208*5113495bSYour Name 
pld_ipci_is_pci_ep_awake(struct device * dev)209*5113495bSYour Name static inline int pld_ipci_is_pci_ep_awake(struct device *dev)
210*5113495bSYour Name {
211*5113495bSYour Name 	return 0;
212*5113495bSYour Name }
213*5113495bSYour Name 
pld_ipci_get_irq(struct device * dev,int ce_id)214*5113495bSYour Name static inline int pld_ipci_get_irq(struct device *dev, int ce_id)
215*5113495bSYour Name {
216*5113495bSYour Name 	return 0;
217*5113495bSYour Name }
218*5113495bSYour Name #else
219*5113495bSYour Name /**
220*5113495bSYour Name  * pld_ipci_register_driver() - Register platform device callback functions
221*5113495bSYour Name  *
222*5113495bSYour Name  * Return: int
223*5113495bSYour Name  */
224*5113495bSYour Name int pld_ipci_register_driver(void);
225*5113495bSYour Name 
226*5113495bSYour Name /**
227*5113495bSYour Name  * pld_ipci_unregister_driver() - Unregister platform device callback functions
228*5113495bSYour Name  *
229*5113495bSYour Name  * Return: void
230*5113495bSYour Name  */
231*5113495bSYour Name void pld_ipci_unregister_driver(void);
232*5113495bSYour Name 
233*5113495bSYour Name /**
234*5113495bSYour Name  * pld_ipci_wlan_enable() - Enable WLAN
235*5113495bSYour Name  * @dev: device
236*5113495bSYour Name  * @config: WLAN configuration data
237*5113495bSYour Name  * @mode: WLAN mode
238*5113495bSYour Name  * @host_version: host software version
239*5113495bSYour Name  *
240*5113495bSYour Name  * This function enables WLAN FW. It passed WLAN configuration data,
241*5113495bSYour Name  * WLAN mode and host software version to FW.
242*5113495bSYour Name  *
243*5113495bSYour Name  * Return: 0 for success
244*5113495bSYour Name  *         Non zero failure code for errors
245*5113495bSYour Name  */
246*5113495bSYour Name int pld_ipci_wlan_enable(struct device *dev,
247*5113495bSYour Name 			 struct pld_wlan_enable_cfg *config,
248*5113495bSYour Name 			 enum pld_driver_mode mode, const char *host_version);
249*5113495bSYour Name 
250*5113495bSYour Name /**
251*5113495bSYour Name  * pld_ipci_wlan_disable() - Disable WLAN
252*5113495bSYour Name  * @dev: device
253*5113495bSYour Name  * @mode: WLAN mode
254*5113495bSYour Name  *
255*5113495bSYour Name  * This function disables WLAN FW. It passes WLAN mode to FW.
256*5113495bSYour Name  *
257*5113495bSYour Name  * Return: 0 for success
258*5113495bSYour Name  *         Non zero failure code for errors
259*5113495bSYour Name  */
260*5113495bSYour Name int pld_ipci_wlan_disable(struct device *dev, enum pld_driver_mode mode);
261*5113495bSYour Name 
262*5113495bSYour Name /**
263*5113495bSYour Name  * pld_ipci_get_soc_info() - Get SOC information
264*5113495bSYour Name  * @dev: device
265*5113495bSYour Name  * @info: buffer to SOC information
266*5113495bSYour Name  *
267*5113495bSYour Name  * Return SOC info to the buffer.
268*5113495bSYour Name  *
269*5113495bSYour Name  * Return: 0 for success
270*5113495bSYour Name  *         Non zero failure code for errors
271*5113495bSYour Name  */
272*5113495bSYour Name int pld_ipci_get_soc_info(struct device *dev, struct pld_soc_info *info);
273*5113495bSYour Name int pld_ipci_get_irq(struct device *dev, int ce_id);
274*5113495bSYour Name 
pld_ipci_power_on(struct device * dev)275*5113495bSYour Name static inline int pld_ipci_power_on(struct device *dev)
276*5113495bSYour Name {
277*5113495bSYour Name 	return icnss_power_on(dev);
278*5113495bSYour Name }
279*5113495bSYour Name 
pld_ipci_power_off(struct device * dev)280*5113495bSYour Name static inline int pld_ipci_power_off(struct device *dev)
281*5113495bSYour Name {
282*5113495bSYour Name 	return icnss_power_off(dev);
283*5113495bSYour Name }
284*5113495bSYour Name 
pld_ipci_idle_restart(struct device * dev)285*5113495bSYour Name static inline int pld_ipci_idle_restart(struct device *dev)
286*5113495bSYour Name {
287*5113495bSYour Name 	return icnss_idle_restart(dev);
288*5113495bSYour Name }
289*5113495bSYour Name 
pld_ipci_idle_shutdown(struct device * dev)290*5113495bSYour Name static inline int pld_ipci_idle_shutdown(struct device *dev)
291*5113495bSYour Name {
292*5113495bSYour Name 	return icnss_idle_shutdown(dev);
293*5113495bSYour Name }
294*5113495bSYour Name 
pld_ipci_force_assert_target(struct device * dev)295*5113495bSYour Name static inline int pld_ipci_force_assert_target(struct device *dev)
296*5113495bSYour Name {
297*5113495bSYour Name 	return icnss_trigger_recovery(dev);
298*5113495bSYour Name }
299*5113495bSYour Name 
pld_ipci_get_user_msi_assignment(struct device * dev,char * user_name,int * num_vectors,uint32_t * user_base_data,uint32_t * base_vector)300*5113495bSYour Name static inline int pld_ipci_get_user_msi_assignment(struct device *dev,
301*5113495bSYour Name 						   char *user_name,
302*5113495bSYour Name 						   int *num_vectors,
303*5113495bSYour Name 						   uint32_t *user_base_data,
304*5113495bSYour Name 						   uint32_t *base_vector)
305*5113495bSYour Name {
306*5113495bSYour Name 	return icnss_get_user_msi_assignment(dev, user_name, num_vectors,
307*5113495bSYour Name 					    user_base_data, base_vector);
308*5113495bSYour Name }
309*5113495bSYour Name 
pld_ipci_get_msi_irq(struct device * dev,unsigned int vector)310*5113495bSYour Name static inline int pld_ipci_get_msi_irq(struct device *dev, unsigned int vector)
311*5113495bSYour Name {
312*5113495bSYour Name 	return icnss_get_msi_irq(dev, vector);
313*5113495bSYour Name }
314*5113495bSYour Name 
pld_ipci_get_msi_address(struct device * dev,uint32_t * msi_addr_low,uint32_t * msi_addr_high)315*5113495bSYour Name static inline void pld_ipci_get_msi_address(struct device *dev,
316*5113495bSYour Name 					    uint32_t *msi_addr_low,
317*5113495bSYour Name 					    uint32_t *msi_addr_high)
318*5113495bSYour Name {
319*5113495bSYour Name 	icnss_get_msi_address(dev, msi_addr_low, msi_addr_high);
320*5113495bSYour Name }
321*5113495bSYour Name 
pld_ipci_is_fw_down(struct device * dev)322*5113495bSYour Name static inline int pld_ipci_is_fw_down(struct device *dev)
323*5113495bSYour Name {
324*5113495bSYour Name 	return icnss_is_fw_down();
325*5113495bSYour Name }
326*5113495bSYour Name 
pld_ipci_set_fw_log_mode(struct device * dev,u8 fw_log_mode)327*5113495bSYour Name static inline int pld_ipci_set_fw_log_mode(struct device *dev, u8 fw_log_mode)
328*5113495bSYour Name {
329*5113495bSYour Name 	return icnss_set_fw_log_mode(dev, fw_log_mode);
330*5113495bSYour Name }
331*5113495bSYour Name 
pld_ipci_smmu_get_domain(struct device * dev)332*5113495bSYour Name static inline void *pld_ipci_smmu_get_domain(struct device *dev)
333*5113495bSYour Name {
334*5113495bSYour Name 	return icnss_smmu_get_domain(dev);
335*5113495bSYour Name }
336*5113495bSYour Name 
pld_ipci_smmu_map(struct device * dev,phys_addr_t paddr,uint32_t * iova_addr,size_t size)337*5113495bSYour Name static inline int pld_ipci_smmu_map(struct device *dev, phys_addr_t paddr,
338*5113495bSYour Name 				    uint32_t *iova_addr, size_t size)
339*5113495bSYour Name {
340*5113495bSYour Name 	return icnss_smmu_map(dev, paddr, iova_addr, size);
341*5113495bSYour Name }
342*5113495bSYour Name 
343*5113495bSYour Name #ifdef CONFIG_SMMU_S1_UNMAP
pld_ipci_smmu_unmap(struct device * dev,uint32_t iova_addr,size_t size)344*5113495bSYour Name static inline int pld_ipci_smmu_unmap(struct device *dev,
345*5113495bSYour Name 				      uint32_t iova_addr, size_t size)
346*5113495bSYour Name {
347*5113495bSYour Name 	return icnss_smmu_unmap(dev, iova_addr, size);
348*5113495bSYour Name }
349*5113495bSYour Name 
350*5113495bSYour Name #else
pld_ipci_smmu_unmap(struct device * dev,uint32_t iova_addr,size_t size)351*5113495bSYour Name static inline int pld_ipci_smmu_unmap(struct device *dev,
352*5113495bSYour Name 				      uint32_t iova_addr, size_t size)
353*5113495bSYour Name {
354*5113495bSYour Name 	return 0;
355*5113495bSYour Name }
356*5113495bSYour Name #endif
357*5113495bSYour Name 
pld_ipci_force_wake_request(struct device * dev)358*5113495bSYour Name static inline int pld_ipci_force_wake_request(struct device *dev)
359*5113495bSYour Name {
360*5113495bSYour Name 	return icnss_force_wake_request(dev);
361*5113495bSYour Name }
362*5113495bSYour Name 
pld_ipci_force_wake_release(struct device * dev)363*5113495bSYour Name static inline int pld_ipci_force_wake_release(struct device *dev)
364*5113495bSYour Name {
365*5113495bSYour Name 	return icnss_force_wake_release(dev);
366*5113495bSYour Name }
367*5113495bSYour Name 
pld_ipci_is_device_awake(struct device * dev)368*5113495bSYour Name static inline int pld_ipci_is_device_awake(struct device *dev)
369*5113495bSYour Name {
370*5113495bSYour Name 	return icnss_is_device_awake(dev);
371*5113495bSYour Name }
372*5113495bSYour Name 
pld_ipci_athdiag_read(struct device * dev,uint32_t offset,uint32_t memtype,uint32_t datalen,uint8_t * output)373*5113495bSYour Name static inline int pld_ipci_athdiag_read(struct device *dev, uint32_t offset,
374*5113495bSYour Name 					uint32_t memtype, uint32_t datalen,
375*5113495bSYour Name 					uint8_t *output)
376*5113495bSYour Name {
377*5113495bSYour Name 	return icnss_athdiag_read(dev, offset, memtype, datalen, output);
378*5113495bSYour Name }
379*5113495bSYour Name 
pld_ipci_athdiag_write(struct device * dev,uint32_t offset,uint32_t memtype,uint32_t datalen,uint8_t * input)380*5113495bSYour Name static inline int pld_ipci_athdiag_write(struct device *dev, uint32_t offset,
381*5113495bSYour Name 					 uint32_t memtype, uint32_t datalen,
382*5113495bSYour Name 					 uint8_t *input)
383*5113495bSYour Name {
384*5113495bSYour Name 	return icnss_athdiag_write(dev, offset, memtype, datalen, input);
385*5113495bSYour Name }
386*5113495bSYour Name 
387*5113495bSYour Name static inline int
pld_ipci_qmi_send(struct device * dev,int type,void * cmd,int cmd_len,void * cb_ctx,int (* cb)(void * ctx,void * event,int event_len))388*5113495bSYour Name pld_ipci_qmi_send(struct device *dev, int type, void *cmd,
389*5113495bSYour Name 		  int cmd_len, void *cb_ctx,
390*5113495bSYour Name 		  int (*cb)(void *ctx, void *event, int event_len))
391*5113495bSYour Name {
392*5113495bSYour Name 	return icnss_qmi_send(dev, type, cmd, cmd_len, cb_ctx, cb);
393*5113495bSYour Name }
394*5113495bSYour Name 
pld_ipci_thermal_register(struct device * dev,unsigned long max_state,int mon_id)395*5113495bSYour Name static inline int pld_ipci_thermal_register(struct device *dev,
396*5113495bSYour Name 					    unsigned long max_state,
397*5113495bSYour Name 					    int mon_id)
398*5113495bSYour Name {
399*5113495bSYour Name 	return icnss_thermal_cdev_register(dev, max_state, mon_id);
400*5113495bSYour Name }
401*5113495bSYour Name 
pld_ipci_thermal_unregister(struct device * dev,int mon_id)402*5113495bSYour Name static inline void pld_ipci_thermal_unregister(struct device *dev,
403*5113495bSYour Name 					       int mon_id)
404*5113495bSYour Name {
405*5113495bSYour Name 	icnss_thermal_cdev_unregister(dev, mon_id);
406*5113495bSYour Name }
407*5113495bSYour Name 
pld_ipci_get_thermal_state(struct device * dev,unsigned long * thermal_state,int mon_id)408*5113495bSYour Name static inline int pld_ipci_get_thermal_state(struct device *dev,
409*5113495bSYour Name 					     unsigned long *thermal_state,
410*5113495bSYour Name 					     int mon_id)
411*5113495bSYour Name {
412*5113495bSYour Name 	return icnss_get_curr_therm_cdev_state(dev, thermal_state, mon_id);
413*5113495bSYour Name }
414*5113495bSYour Name 
pld_ipci_exit_power_save(struct device * dev)415*5113495bSYour Name static inline int pld_ipci_exit_power_save(struct device *dev)
416*5113495bSYour Name {
417*5113495bSYour Name 	return icnss_exit_power_save(dev);
418*5113495bSYour Name }
419*5113495bSYour Name 
pld_ipci_prevent_l1(struct device * dev)420*5113495bSYour Name static inline int pld_ipci_prevent_l1(struct device *dev)
421*5113495bSYour Name {
422*5113495bSYour Name 	return icnss_prevent_l1(dev);
423*5113495bSYour Name }
424*5113495bSYour Name 
pld_ipci_allow_l1(struct device * dev)425*5113495bSYour Name static inline void pld_ipci_allow_l1(struct device *dev)
426*5113495bSYour Name {
427*5113495bSYour Name 	icnss_allow_l1(dev);
428*5113495bSYour Name }
429*5113495bSYour Name 
pld_ipci_is_pci_ep_awake(struct device * dev)430*5113495bSYour Name static inline int pld_ipci_is_pci_ep_awake(struct device *dev)
431*5113495bSYour Name {
432*5113495bSYour Name 	return icnss_is_pci_ep_awake(dev);
433*5113495bSYour Name }
434*5113495bSYour Name 
pld_ipci_mhi_state(struct device * dev)435*5113495bSYour Name static inline int pld_ipci_mhi_state(struct device *dev)
436*5113495bSYour Name {
437*5113495bSYour Name 	return icnss_get_mhi_state(dev);
438*5113495bSYour Name }
439*5113495bSYour Name #endif
440*5113495bSYour Name #endif
441