xref: /wlan-dirver/platform/cnss2/bus.h (revision 87ee900083e70197b9b730006c66e66df9b052a8)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
4  * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
5  */
6 
7 #ifndef _CNSS_BUS_H
8 #define _CNSS_BUS_H
9 
10 #include "main.h"
11 
12 #define QCA6174_REV_ID_OFFSET		0x08
13 #define QCA6174_REV3_VERSION		0x5020000
14 #define QCA6174_REV3_2_VERSION		0x5030000
15 
16 enum cnss_dev_bus_type cnss_get_dev_bus_type(struct device *dev);
17 enum cnss_dev_bus_type cnss_get_bus_type(struct cnss_plat_data *plat_priv);
18 void *cnss_bus_dev_to_bus_priv(struct device *dev);
19 struct cnss_plat_data *cnss_bus_dev_to_plat_priv(struct device *dev);
20 int cnss_bus_init(struct cnss_plat_data *plat_priv);
21 void cnss_bus_deinit(struct cnss_plat_data *plat_priv);
22 void cnss_bus_add_fw_prefix_name(struct cnss_plat_data *plat_priv,
23 				 char *prefix_name, char *name);
24 int cnss_bus_load_tme_patch(struct cnss_plat_data *plat_priv);
25 int cnss_bus_load_m3(struct cnss_plat_data *plat_priv);
26 int cnss_bus_load_aux(struct cnss_plat_data *plat_priv);
27 int cnss_bus_handle_dev_sol_irq(struct cnss_plat_data *plat_priv);
28 int cnss_bus_alloc_fw_mem(struct cnss_plat_data *plat_priv);
29 int cnss_bus_alloc_qdss_mem(struct cnss_plat_data *plat_priv);
30 void cnss_bus_free_qdss_mem(struct cnss_plat_data *plat_priv);
31 u32 cnss_bus_get_wake_irq(struct cnss_plat_data *plat_priv);
32 int cnss_bus_force_fw_assert_hdlr(struct cnss_plat_data *plat_priv);
33 int cnss_bus_qmi_send_get(struct cnss_plat_data *plat_priv);
34 int cnss_bus_qmi_send_put(struct cnss_plat_data *plat_priv);
35 void cnss_bus_fw_boot_timeout_hdlr(struct timer_list *t);
36 void cnss_bus_collect_dump_info(struct cnss_plat_data *plat_priv,
37 				bool in_panic);
38 void cnss_bus_device_crashed(struct cnss_plat_data *plat_priv);
39 int cnss_bus_call_driver_probe(struct cnss_plat_data *plat_priv);
40 int cnss_bus_call_driver_remove(struct cnss_plat_data *plat_priv);
41 int cnss_bus_dev_powerup(struct cnss_plat_data *plat_priv);
42 int cnss_bus_dev_shutdown(struct cnss_plat_data *plat_priv);
43 int cnss_bus_dev_crash_shutdown(struct cnss_plat_data *plat_priv);
44 int cnss_bus_dev_ramdump(struct cnss_plat_data *plat_priv);
45 int cnss_bus_register_driver_hdlr(struct cnss_plat_data *plat_priv, void *data);
46 int cnss_bus_unregister_driver_hdlr(struct cnss_plat_data *plat_priv);
47 int cnss_bus_call_driver_modem_status(struct cnss_plat_data *plat_priv,
48 				      int modem_current_status);
49 int cnss_bus_update_status(struct cnss_plat_data *plat_priv,
50 			   enum cnss_driver_status status);
51 int cnss_bus_update_uevent(struct cnss_plat_data *plat_priv,
52 			   enum cnss_driver_status status, void *data);
53 int cnss_bus_is_device_down(struct cnss_plat_data *plat_priv);
54 int cnss_bus_check_link_status(struct cnss_plat_data *plat_priv);
55 int cnss_bus_recover_link_down(struct cnss_plat_data *plat_priv);
56 int cnss_bus_debug_reg_read(struct cnss_plat_data *plat_priv, u32 offset,
57 			    u32 *val, bool raw_access);
58 int cnss_bus_debug_reg_write(struct cnss_plat_data *plat_priv, u32 offset,
59 			     u32 val, bool raw_access);
60 int cnss_bus_get_iova(struct cnss_plat_data *plat_priv, u64 *addr, u64 *size);
61 int cnss_bus_get_iova_ipa(struct cnss_plat_data *plat_priv, u64 *addr,
62 			  u64 *size);
63 bool cnss_bus_is_smmu_s1_enabled(struct cnss_plat_data *plat_priv);
64 int cnss_bus_update_time_sync_period(struct cnss_plat_data *plat_priv,
65 				     unsigned int time_sync_period);
66 void cnss_bus_disable_mhi_satellite_cfg(struct cnss_plat_data *plat_priv);
67 int cnss_bus_set_therm_cdev_state(struct cnss_plat_data *plat_priv,
68 				  unsigned long thermal_state,
69 				  int tcdev_id);
70 int cnss_bus_get_msi_assignment(struct cnss_plat_data *plat_priv,
71 				char *msi_name,
72 				int *num_vectors,
73 				u32 *user_base_data,
74 				u32 *base_vector);
75 #endif /* _CNSS_BUS_H */
76