1 /*
2 * Copyright (c) 2016-2020 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 #ifndef __PLD_USB_H__
20 #define __PLD_USB_H__
21
22 #include "pld_common.h"
23
24 #ifdef HIF_USB
25 /**
26 * pld_usb_register_driver() - registration routine for wlan usb drive
27 *
28 * Return: int negative error code on failure and 0 on success
29 */
30 int pld_usb_register_driver(void);
31
32 /**
33 * pld_usb_unregister_driver() - de-registration routine for wlan usb driver
34 *
35 * Return: void
36 */
37 void pld_usb_unregister_driver(void);
38
39 int pld_usb_get_ce_id(int irq);
40 int pld_usb_wlan_enable(struct device *dev, struct pld_wlan_enable_cfg *config,
41 enum pld_driver_mode mode, const char *host_version);
42 int pld_usb_is_fw_down(struct device *dev);
43
44 /**
45 * pld_usb_athdiag_read() - Read data from WLAN FW through USB interface
46 * @dev: pointer of device
47 * @offset: address offset
48 * @memtype: memory type
49 * @datalen: data length
50 * @output: pointer of output buffer
51 *
52 * Return: 0 for success
53 * Non zero failure code for errors
54 */
55 int pld_usb_athdiag_read(struct device *dev, uint32_t offset,
56 uint32_t memtype, uint32_t datalen,
57 uint8_t *output);
58
59 /**
60 * pld_usb_athdiag_write() - Write data to WLAN FW through USB interface
61 * @dev: pointer of device
62 * @offset: address offset
63 * @memtype: memory type
64 * @datalen: data length
65 * @input: pointer of input buffer
66 *
67 * Return: 0 for success
68 * Non zero failure code for errors
69 */
70 int pld_usb_athdiag_write(struct device *dev, uint32_t offset,
71 uint32_t memtype, uint32_t datalen,
72 uint8_t *input);
73
74 #else
pld_usb_register_driver(void)75 static inline int pld_usb_register_driver(void)
76 {
77 return 0;
78 }
79
pld_usb_unregister_driver(void)80 static inline void pld_usb_unregister_driver(void)
81 {}
82
pld_usb_wlan_enable(struct device * dev,struct pld_wlan_enable_cfg * config,enum pld_driver_mode mode,const char * host_version)83 static inline int pld_usb_wlan_enable(struct device *dev,
84 struct pld_wlan_enable_cfg *config,
85 enum pld_driver_mode mode,
86 const char *host_version)
87 {
88 return 0;
89 }
90
pld_usb_is_fw_down(struct device * dev)91 static inline int pld_usb_is_fw_down(struct device *dev)
92 {
93 return 0;
94 }
95
pld_usb_athdiag_read(struct device * dev,uint32_t offset,uint32_t memtype,uint32_t datalen,uint8_t * output)96 static inline int pld_usb_athdiag_read(struct device *dev, uint32_t offset,
97 uint32_t memtype, uint32_t datalen,
98 uint8_t *output)
99 {
100 return 0;
101 }
102
pld_usb_athdiag_write(struct device * dev,uint32_t offset,uint32_t memtype,uint32_t datalen,uint8_t * input)103 static inline int pld_usb_athdiag_write(struct device *dev, uint32_t offset,
104 uint32_t memtype, uint32_t datalen,
105 uint8_t *input)
106 {
107 return 0;
108 }
109 #endif
110
111 static inline int
pld_usb_get_fw_files_for_target(struct pld_fw_files * pfw_files,u32 target_type,u32 target_version)112 pld_usb_get_fw_files_for_target(struct pld_fw_files *pfw_files,
113 u32 target_type, u32 target_version)
114 {
115 pld_get_default_fw_files(pfw_files);
116 return 0;
117 }
118
119 #endif /*__PLD_USB_H__*/
120