1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (c) 2018-2021, The Linux Foundation. All rights reserved. 4 * Copyright (c) 2021-2022 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_VENDOR_ID 0x168C 13 #define QCA6174_DEVICE_ID 0x003E 14 #define QCA6174_REV_ID_OFFSET 0x08 15 #define QCA6174_REV3_VERSION 0x5020000 16 #define QCA6174_REV3_2_VERSION 0x5030000 17 #define QCA6290_VENDOR_ID 0x17CB 18 #define QCA6290_DEVICE_ID 0x1100 19 #define QCA6390_VENDOR_ID 0x17CB 20 #define QCA6390_DEVICE_ID 0x1101 21 #define QCA6490_VENDOR_ID 0x17CB 22 #define QCA6490_DEVICE_ID 0x1103 23 #define KIWI_VENDOR_ID 0x17CB 24 #define KIWI_DEVICE_ID 0x1107 25 #define MANGO_VENDOR_ID 0x17CB 26 #define MANGO_DEVICE_ID 0x110A 27 28 enum cnss_dev_bus_type cnss_get_dev_bus_type(struct device *dev); 29 enum cnss_dev_bus_type cnss_get_bus_type(struct cnss_plat_data *plat_priv); 30 void *cnss_bus_dev_to_bus_priv(struct device *dev); 31 struct cnss_plat_data *cnss_bus_dev_to_plat_priv(struct device *dev); 32 int cnss_bus_init(struct cnss_plat_data *plat_priv); 33 void cnss_bus_deinit(struct cnss_plat_data *plat_priv); 34 void cnss_bus_add_fw_prefix_name(struct cnss_plat_data *plat_priv, 35 char *prefix_name, char *name); 36 int cnss_bus_load_m3(struct cnss_plat_data *plat_priv); 37 int cnss_bus_handle_dev_sol_irq(struct cnss_plat_data *plat_priv); 38 int cnss_bus_alloc_fw_mem(struct cnss_plat_data *plat_priv); 39 int cnss_bus_alloc_qdss_mem(struct cnss_plat_data *plat_priv); 40 void cnss_bus_free_qdss_mem(struct cnss_plat_data *plat_priv); 41 u32 cnss_bus_get_wake_irq(struct cnss_plat_data *plat_priv); 42 int cnss_bus_force_fw_assert_hdlr(struct cnss_plat_data *plat_priv); 43 int cnss_bus_qmi_send_get(struct cnss_plat_data *plat_priv); 44 int cnss_bus_qmi_send_put(struct cnss_plat_data *plat_priv); 45 void cnss_bus_fw_boot_timeout_hdlr(struct timer_list *t); 46 void cnss_bus_collect_dump_info(struct cnss_plat_data *plat_priv, 47 bool in_panic); 48 void cnss_bus_device_crashed(struct cnss_plat_data *plat_priv); 49 int cnss_bus_call_driver_probe(struct cnss_plat_data *plat_priv); 50 int cnss_bus_call_driver_remove(struct cnss_plat_data *plat_priv); 51 int cnss_bus_dev_powerup(struct cnss_plat_data *plat_priv); 52 int cnss_bus_dev_shutdown(struct cnss_plat_data *plat_priv); 53 int cnss_bus_dev_crash_shutdown(struct cnss_plat_data *plat_priv); 54 int cnss_bus_dev_ramdump(struct cnss_plat_data *plat_priv); 55 int cnss_bus_register_driver_hdlr(struct cnss_plat_data *plat_priv, void *data); 56 int cnss_bus_unregister_driver_hdlr(struct cnss_plat_data *plat_priv); 57 int cnss_bus_call_driver_modem_status(struct cnss_plat_data *plat_priv, 58 int modem_current_status); 59 int cnss_bus_update_status(struct cnss_plat_data *plat_priv, 60 enum cnss_driver_status status); 61 int cnss_bus_update_uevent(struct cnss_plat_data *plat_priv, 62 enum cnss_driver_status status, void *data); 63 int cnss_bus_is_device_down(struct cnss_plat_data *plat_priv); 64 int cnss_bus_check_link_status(struct cnss_plat_data *plat_priv); 65 int cnss_bus_recover_link_down(struct cnss_plat_data *plat_priv); 66 int cnss_bus_debug_reg_read(struct cnss_plat_data *plat_priv, u32 offset, 67 u32 *val, bool raw_access); 68 int cnss_bus_debug_reg_write(struct cnss_plat_data *plat_priv, u32 offset, 69 u32 val, bool raw_access); 70 int cnss_bus_get_iova(struct cnss_plat_data *plat_priv, u64 *addr, u64 *size); 71 int cnss_bus_get_iova_ipa(struct cnss_plat_data *plat_priv, u64 *addr, 72 u64 *size); 73 bool cnss_bus_is_smmu_s1_enabled(struct cnss_plat_data *plat_priv); 74 int cnss_bus_update_time_sync_period(struct cnss_plat_data *plat_priv, 75 unsigned int time_sync_period); 76 void cnss_bus_disable_mhi_satellite_cfg(struct cnss_plat_data *plat_priv); 77 #endif /* _CNSS_BUS_H */ 78