Loading drivers/net/wireless/cnss2/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -4,5 +4,6 @@ cnss2-y := main.o cnss2-y += bus.o cnss2-y += debug.o cnss2-y += pci.o cnss2-y += usb.o cnss2-y += power.o cnss2-$(CONFIG_CNSS2_QMI) += qmi.o wlan_firmware_service_v01.o drivers/net/wireless/cnss2/bus.c +40 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ #include "bus.h" #include "debug.h" #include "pci.h" #include "usb.h" enum cnss_dev_bus_type cnss_get_dev_bus_type(struct device *dev) { Loading @@ -35,12 +36,33 @@ enum cnss_dev_bus_type cnss_get_bus_type(unsigned long device_id) case QCA6290_EMULATION_DEVICE_ID: case QCA6290_DEVICE_ID: return CNSS_BUS_PCI; case QCN7605_COMPOSITE_DEVICE_ID: case QCN7605_STANDALONE_DEVICE_ID: return CNSS_BUS_USB; default: cnss_pr_err("Unknown device_id: 0x%lx\n", device_id); return CNSS_BUS_NONE; } } bool cnss_bus_req_mem_ind_valid(struct cnss_plat_data *plat_priv) { if (cnss_get_bus_type(plat_priv->device_id) == CNSS_BUS_USB) return false; else return true; } bool cnss_bus_dev_cal_rep_valid(struct cnss_plat_data *plat_priv) { bool ret = false; if (cnss_get_bus_type(plat_priv->device_id) == CNSS_BUS_USB) ret = true; return ret; } void *cnss_bus_dev_to_bus_priv(struct device *dev) { if (!dev) Loading Loading @@ -68,6 +90,8 @@ struct cnss_plat_data *cnss_bus_dev_to_plat_priv(struct device *dev) switch (cnss_get_dev_bus_type(dev)) { case CNSS_BUS_PCI: return cnss_pci_priv_to_plat_priv(bus_priv); case CNSS_BUS_USB: return cnss_usb_priv_to_plat_priv(bus_priv); default: return NULL; } Loading @@ -81,6 +105,8 @@ int cnss_bus_init(struct cnss_plat_data *plat_priv) switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pci_init(plat_priv); case CNSS_BUS_USB: return cnss_usb_init(plat_priv); default: cnss_pr_err("Unsupported bus type: %d\n", plat_priv->bus_type); Loading @@ -96,6 +122,8 @@ void cnss_bus_deinit(struct cnss_plat_data *plat_priv) switch (plat_priv->bus_type) { case CNSS_BUS_PCI: cnss_pci_deinit(plat_priv); case CNSS_BUS_USB: cnss_usb_deinit(plat_priv); default: cnss_pr_err("Unsupported bus type: %d\n", plat_priv->bus_type); Loading Loading @@ -204,6 +232,8 @@ int cnss_bus_call_driver_probe(struct cnss_plat_data *plat_priv) switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pci_call_driver_probe(plat_priv->bus_priv); case CNSS_BUS_USB: return cnss_usb_call_driver_probe(plat_priv->bus_priv); default: cnss_pr_err("Unsupported bus type: %d\n", plat_priv->bus_type); Loading @@ -219,6 +249,8 @@ int cnss_bus_call_driver_remove(struct cnss_plat_data *plat_priv) switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pci_call_driver_remove(plat_priv->bus_priv); case CNSS_BUS_USB: return cnss_usb_call_driver_remove(plat_priv->bus_priv); default: cnss_pr_err("Unsupported bus type: %d\n", plat_priv->bus_type); Loading @@ -234,6 +266,8 @@ int cnss_bus_dev_powerup(struct cnss_plat_data *plat_priv) switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pci_dev_powerup(plat_priv->bus_priv); case CNSS_BUS_USB: return 0; default: cnss_pr_err("Unsupported bus type: %d\n", plat_priv->bus_type); Loading @@ -249,6 +283,8 @@ int cnss_bus_dev_shutdown(struct cnss_plat_data *plat_priv) switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pci_dev_shutdown(plat_priv->bus_priv); case CNSS_BUS_USB: return 0; default: cnss_pr_err("Unsupported bus type: %d\n", plat_priv->bus_type); Loading Loading @@ -294,6 +330,8 @@ int cnss_bus_register_driver_hdlr(struct cnss_plat_data *plat_priv, void *data) switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pci_register_driver_hdlr(plat_priv->bus_priv, data); case CNSS_BUS_USB: return cnss_usb_register_driver_hdlr(plat_priv->bus_priv, data); default: cnss_pr_err("Unsupported bus type: %d\n", plat_priv->bus_type); Loading @@ -309,6 +347,8 @@ int cnss_bus_unregister_driver_hdlr(struct cnss_plat_data *plat_priv) switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pci_unregister_driver_hdlr(plat_priv->bus_priv); case CNSS_BUS_USB: return cnss_usb_unregister_driver_hdlr(plat_priv->bus_priv); default: cnss_pr_err("Unsupported bus type: %d\n", plat_priv->bus_type); Loading drivers/net/wireless/cnss2/bus.h +10 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,13 @@ #define QCA6390_EMULATION_DEVICE_ID 0x0108 #define QCA6390_DEVICE_ID 0x1101 #define QCN7605_USB_VENDOR_ID 0x05C6 #define QCN7605_COMPOSITE_DEVICE_ID QCN7605_COMPOSITE_PRODUCT_ID #define QCN7605_STANDALONE_DEVICE_ID QCN7605_STANDALONE_PRODUCT_ID #define QCN7605_STANDALONE_PRODUCT_ID 0x9900 #define QCN7605_COMPOSITE_PRODUCT_ID 0x9901 enum cnss_dev_bus_type cnss_get_dev_bus_type(struct device *dev); enum cnss_dev_bus_type cnss_get_bus_type(unsigned long device_id); void *cnss_bus_dev_to_bus_priv(struct device *dev); Loading @@ -53,5 +60,8 @@ int cnss_bus_call_driver_modem_status(struct cnss_plat_data *plat_priv, int modem_current_status); int cnss_bus_update_status(struct cnss_plat_data *plat_priv, enum cnss_driver_status status); int cnss_bus_recovery_update_status(struct cnss_plat_data *plat_priv); bool cnss_bus_req_mem_ind_valid(struct cnss_plat_data *plat_priv); bool cnss_bus_dev_cal_rep_valid(struct cnss_plat_data *plat_priv); #endif /* _CNSS_BUS_H */ drivers/net/wireless/cnss2/main.c +48 −1 Original line number Diff line number Diff line Loading @@ -463,6 +463,15 @@ static int cnss_fw_ready_hdlr(struct cnss_plat_data *plat_priv) return ret; } static int cnss_cal_update_hdlr(struct cnss_plat_data *plat_priv) { /* QCN7605 store the cal data sent by FW to calDB memory area * get out of this after complete data is uploaded. FW is expected * to send cal done */ return 0; } static char *cnss_driver_event_to_str(enum cnss_driver_event_type type) { switch (type) { Loading @@ -480,6 +489,10 @@ static char *cnss_driver_event_to_str(enum cnss_driver_event_type type) return "COLD_BOOT_CAL_START"; case CNSS_DRIVER_EVENT_COLD_BOOT_CAL_DONE: return "COLD_BOOT_CAL_DONE"; case CNSS_DRIVER_EVENT_CAL_UPDATE: return "COLD_BOOT_CAL_DATA_UPDATE"; case CNSS_DRIVER_EVENT_CAL_DOWNLOAD: return "COLD_BOOT_CAL_DATA_DOWNLOAD"; case CNSS_DRIVER_EVENT_REGISTER_DRIVER: return "REGISTER_DRIVER"; case CNSS_DRIVER_EVENT_UNREGISTER_DRIVER: Loading Loading @@ -1072,6 +1085,30 @@ int cnss_force_collect_rddm(struct device *dev) } EXPORT_SYMBOL(cnss_force_collect_rddm); static int cnss_wlfw_server_arrive_hdlr(struct cnss_plat_data *plat_priv) { int ret; ret = cnss_wlfw_server_arrive(plat_priv); if (ret) goto out; if (!cnss_bus_req_mem_ind_valid(plat_priv)) { ret = cnss_wlfw_tgt_cap_send_sync(plat_priv); if (ret) goto out; ret = cnss_wlfw_bdf_dnld_send_sync(plat_priv); if (ret) goto out; /*cnss driver sends meta data report and waits for FW_READY*/ if (cnss_bus_dev_cal_rep_valid(plat_priv)) ret = cnss_wlfw_cal_report_send_sync(plat_priv); } out: return ret; } static int cnss_cold_boot_cal_start_hdlr(struct cnss_plat_data *plat_priv) { int ret = 0; Loading Loading @@ -1151,7 +1188,7 @@ static void cnss_driver_event_work(struct work_struct *work) switch (event->type) { case CNSS_DRIVER_EVENT_SERVER_ARRIVE: ret = cnss_wlfw_server_arrive(plat_priv); ret = cnss_wlfw_server_arrive_hdlr(plat_priv); break; case CNSS_DRIVER_EVENT_SERVER_EXIT: ret = cnss_wlfw_server_exit(plat_priv); Loading @@ -1171,6 +1208,9 @@ static void cnss_driver_event_work(struct work_struct *work) case CNSS_DRIVER_EVENT_COLD_BOOT_CAL_START: ret = cnss_cold_boot_cal_start_hdlr(plat_priv); break; case CNSS_DRIVER_EVENT_CAL_UPDATE: ret = cnss_cal_update_hdlr(plat_priv); break; case CNSS_DRIVER_EVENT_COLD_BOOT_CAL_DONE: ret = cnss_cold_boot_cal_done_hdlr(plat_priv); break; Loading Loading @@ -1440,6 +1480,10 @@ int cnss_register_ramdump(struct cnss_plat_data *plat_priv) case QCA6390_DEVICE_ID: ret = cnss_register_ramdump_v2(plat_priv); break; case QCN7605_COMPOSITE_DEVICE_ID: case QCN7605_STANDALONE_DEVICE_ID: break; default: cnss_pr_err("Unknown device ID: 0x%lx\n", plat_priv->device_id); ret = -ENODEV; Loading @@ -1460,6 +1504,9 @@ void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv) case QCA6390_DEVICE_ID: cnss_unregister_ramdump_v2(plat_priv); break; case QCN7605_COMPOSITE_DEVICE_ID: case QCN7605_STANDALONE_DEVICE_ID: break; default: cnss_pr_err("Unknown device ID: 0x%lx\n", plat_priv->device_id); break; Loading drivers/net/wireless/cnss2/main.h +6 −1 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ enum cnss_dev_bus_type { CNSS_BUS_NONE = -1, CNSS_BUS_PCI, CNSS_BUS_USB, }; struct cnss_vreg_info { Loading Loading @@ -160,6 +161,8 @@ enum cnss_driver_event_type { CNSS_DRIVER_EVENT_FORCE_FW_ASSERT, CNSS_DRIVER_EVENT_POWER_UP, CNSS_DRIVER_EVENT_POWER_DOWN, CNSS_DRIVER_EVENT_CAL_UPDATE, CNSS_DRIVER_EVENT_CAL_DOWNLOAD, CNSS_DRIVER_EVENT_MAX, }; Loading Loading @@ -270,5 +273,7 @@ void cnss_unregister_subsys(struct cnss_plat_data *plat_priv); int cnss_register_ramdump(struct cnss_plat_data *plat_priv); void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv); void cnss_set_pin_connect_status(struct cnss_plat_data *plat_priv); u32 cnss_get_wake_msi(struct cnss_plat_data *plat_priv); bool *cnss_get_qmi_bypass(void); bool is_qcn7605_device(u16 device_id); #endif /* _CNSS_MAIN_H */ Loading
drivers/net/wireless/cnss2/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -4,5 +4,6 @@ cnss2-y := main.o cnss2-y += bus.o cnss2-y += debug.o cnss2-y += pci.o cnss2-y += usb.o cnss2-y += power.o cnss2-$(CONFIG_CNSS2_QMI) += qmi.o wlan_firmware_service_v01.o
drivers/net/wireless/cnss2/bus.c +40 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ #include "bus.h" #include "debug.h" #include "pci.h" #include "usb.h" enum cnss_dev_bus_type cnss_get_dev_bus_type(struct device *dev) { Loading @@ -35,12 +36,33 @@ enum cnss_dev_bus_type cnss_get_bus_type(unsigned long device_id) case QCA6290_EMULATION_DEVICE_ID: case QCA6290_DEVICE_ID: return CNSS_BUS_PCI; case QCN7605_COMPOSITE_DEVICE_ID: case QCN7605_STANDALONE_DEVICE_ID: return CNSS_BUS_USB; default: cnss_pr_err("Unknown device_id: 0x%lx\n", device_id); return CNSS_BUS_NONE; } } bool cnss_bus_req_mem_ind_valid(struct cnss_plat_data *plat_priv) { if (cnss_get_bus_type(plat_priv->device_id) == CNSS_BUS_USB) return false; else return true; } bool cnss_bus_dev_cal_rep_valid(struct cnss_plat_data *plat_priv) { bool ret = false; if (cnss_get_bus_type(plat_priv->device_id) == CNSS_BUS_USB) ret = true; return ret; } void *cnss_bus_dev_to_bus_priv(struct device *dev) { if (!dev) Loading Loading @@ -68,6 +90,8 @@ struct cnss_plat_data *cnss_bus_dev_to_plat_priv(struct device *dev) switch (cnss_get_dev_bus_type(dev)) { case CNSS_BUS_PCI: return cnss_pci_priv_to_plat_priv(bus_priv); case CNSS_BUS_USB: return cnss_usb_priv_to_plat_priv(bus_priv); default: return NULL; } Loading @@ -81,6 +105,8 @@ int cnss_bus_init(struct cnss_plat_data *plat_priv) switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pci_init(plat_priv); case CNSS_BUS_USB: return cnss_usb_init(plat_priv); default: cnss_pr_err("Unsupported bus type: %d\n", plat_priv->bus_type); Loading @@ -96,6 +122,8 @@ void cnss_bus_deinit(struct cnss_plat_data *plat_priv) switch (plat_priv->bus_type) { case CNSS_BUS_PCI: cnss_pci_deinit(plat_priv); case CNSS_BUS_USB: cnss_usb_deinit(plat_priv); default: cnss_pr_err("Unsupported bus type: %d\n", plat_priv->bus_type); Loading Loading @@ -204,6 +232,8 @@ int cnss_bus_call_driver_probe(struct cnss_plat_data *plat_priv) switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pci_call_driver_probe(plat_priv->bus_priv); case CNSS_BUS_USB: return cnss_usb_call_driver_probe(plat_priv->bus_priv); default: cnss_pr_err("Unsupported bus type: %d\n", plat_priv->bus_type); Loading @@ -219,6 +249,8 @@ int cnss_bus_call_driver_remove(struct cnss_plat_data *plat_priv) switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pci_call_driver_remove(plat_priv->bus_priv); case CNSS_BUS_USB: return cnss_usb_call_driver_remove(plat_priv->bus_priv); default: cnss_pr_err("Unsupported bus type: %d\n", plat_priv->bus_type); Loading @@ -234,6 +266,8 @@ int cnss_bus_dev_powerup(struct cnss_plat_data *plat_priv) switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pci_dev_powerup(plat_priv->bus_priv); case CNSS_BUS_USB: return 0; default: cnss_pr_err("Unsupported bus type: %d\n", plat_priv->bus_type); Loading @@ -249,6 +283,8 @@ int cnss_bus_dev_shutdown(struct cnss_plat_data *plat_priv) switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pci_dev_shutdown(plat_priv->bus_priv); case CNSS_BUS_USB: return 0; default: cnss_pr_err("Unsupported bus type: %d\n", plat_priv->bus_type); Loading Loading @@ -294,6 +330,8 @@ int cnss_bus_register_driver_hdlr(struct cnss_plat_data *plat_priv, void *data) switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pci_register_driver_hdlr(plat_priv->bus_priv, data); case CNSS_BUS_USB: return cnss_usb_register_driver_hdlr(plat_priv->bus_priv, data); default: cnss_pr_err("Unsupported bus type: %d\n", plat_priv->bus_type); Loading @@ -309,6 +347,8 @@ int cnss_bus_unregister_driver_hdlr(struct cnss_plat_data *plat_priv) switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pci_unregister_driver_hdlr(plat_priv->bus_priv); case CNSS_BUS_USB: return cnss_usb_unregister_driver_hdlr(plat_priv->bus_priv); default: cnss_pr_err("Unsupported bus type: %d\n", plat_priv->bus_type); Loading
drivers/net/wireless/cnss2/bus.h +10 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,13 @@ #define QCA6390_EMULATION_DEVICE_ID 0x0108 #define QCA6390_DEVICE_ID 0x1101 #define QCN7605_USB_VENDOR_ID 0x05C6 #define QCN7605_COMPOSITE_DEVICE_ID QCN7605_COMPOSITE_PRODUCT_ID #define QCN7605_STANDALONE_DEVICE_ID QCN7605_STANDALONE_PRODUCT_ID #define QCN7605_STANDALONE_PRODUCT_ID 0x9900 #define QCN7605_COMPOSITE_PRODUCT_ID 0x9901 enum cnss_dev_bus_type cnss_get_dev_bus_type(struct device *dev); enum cnss_dev_bus_type cnss_get_bus_type(unsigned long device_id); void *cnss_bus_dev_to_bus_priv(struct device *dev); Loading @@ -53,5 +60,8 @@ int cnss_bus_call_driver_modem_status(struct cnss_plat_data *plat_priv, int modem_current_status); int cnss_bus_update_status(struct cnss_plat_data *plat_priv, enum cnss_driver_status status); int cnss_bus_recovery_update_status(struct cnss_plat_data *plat_priv); bool cnss_bus_req_mem_ind_valid(struct cnss_plat_data *plat_priv); bool cnss_bus_dev_cal_rep_valid(struct cnss_plat_data *plat_priv); #endif /* _CNSS_BUS_H */
drivers/net/wireless/cnss2/main.c +48 −1 Original line number Diff line number Diff line Loading @@ -463,6 +463,15 @@ static int cnss_fw_ready_hdlr(struct cnss_plat_data *plat_priv) return ret; } static int cnss_cal_update_hdlr(struct cnss_plat_data *plat_priv) { /* QCN7605 store the cal data sent by FW to calDB memory area * get out of this after complete data is uploaded. FW is expected * to send cal done */ return 0; } static char *cnss_driver_event_to_str(enum cnss_driver_event_type type) { switch (type) { Loading @@ -480,6 +489,10 @@ static char *cnss_driver_event_to_str(enum cnss_driver_event_type type) return "COLD_BOOT_CAL_START"; case CNSS_DRIVER_EVENT_COLD_BOOT_CAL_DONE: return "COLD_BOOT_CAL_DONE"; case CNSS_DRIVER_EVENT_CAL_UPDATE: return "COLD_BOOT_CAL_DATA_UPDATE"; case CNSS_DRIVER_EVENT_CAL_DOWNLOAD: return "COLD_BOOT_CAL_DATA_DOWNLOAD"; case CNSS_DRIVER_EVENT_REGISTER_DRIVER: return "REGISTER_DRIVER"; case CNSS_DRIVER_EVENT_UNREGISTER_DRIVER: Loading Loading @@ -1072,6 +1085,30 @@ int cnss_force_collect_rddm(struct device *dev) } EXPORT_SYMBOL(cnss_force_collect_rddm); static int cnss_wlfw_server_arrive_hdlr(struct cnss_plat_data *plat_priv) { int ret; ret = cnss_wlfw_server_arrive(plat_priv); if (ret) goto out; if (!cnss_bus_req_mem_ind_valid(plat_priv)) { ret = cnss_wlfw_tgt_cap_send_sync(plat_priv); if (ret) goto out; ret = cnss_wlfw_bdf_dnld_send_sync(plat_priv); if (ret) goto out; /*cnss driver sends meta data report and waits for FW_READY*/ if (cnss_bus_dev_cal_rep_valid(plat_priv)) ret = cnss_wlfw_cal_report_send_sync(plat_priv); } out: return ret; } static int cnss_cold_boot_cal_start_hdlr(struct cnss_plat_data *plat_priv) { int ret = 0; Loading Loading @@ -1151,7 +1188,7 @@ static void cnss_driver_event_work(struct work_struct *work) switch (event->type) { case CNSS_DRIVER_EVENT_SERVER_ARRIVE: ret = cnss_wlfw_server_arrive(plat_priv); ret = cnss_wlfw_server_arrive_hdlr(plat_priv); break; case CNSS_DRIVER_EVENT_SERVER_EXIT: ret = cnss_wlfw_server_exit(plat_priv); Loading @@ -1171,6 +1208,9 @@ static void cnss_driver_event_work(struct work_struct *work) case CNSS_DRIVER_EVENT_COLD_BOOT_CAL_START: ret = cnss_cold_boot_cal_start_hdlr(plat_priv); break; case CNSS_DRIVER_EVENT_CAL_UPDATE: ret = cnss_cal_update_hdlr(plat_priv); break; case CNSS_DRIVER_EVENT_COLD_BOOT_CAL_DONE: ret = cnss_cold_boot_cal_done_hdlr(plat_priv); break; Loading Loading @@ -1440,6 +1480,10 @@ int cnss_register_ramdump(struct cnss_plat_data *plat_priv) case QCA6390_DEVICE_ID: ret = cnss_register_ramdump_v2(plat_priv); break; case QCN7605_COMPOSITE_DEVICE_ID: case QCN7605_STANDALONE_DEVICE_ID: break; default: cnss_pr_err("Unknown device ID: 0x%lx\n", plat_priv->device_id); ret = -ENODEV; Loading @@ -1460,6 +1504,9 @@ void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv) case QCA6390_DEVICE_ID: cnss_unregister_ramdump_v2(plat_priv); break; case QCN7605_COMPOSITE_DEVICE_ID: case QCN7605_STANDALONE_DEVICE_ID: break; default: cnss_pr_err("Unknown device ID: 0x%lx\n", plat_priv->device_id); break; Loading
drivers/net/wireless/cnss2/main.h +6 −1 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ enum cnss_dev_bus_type { CNSS_BUS_NONE = -1, CNSS_BUS_PCI, CNSS_BUS_USB, }; struct cnss_vreg_info { Loading Loading @@ -160,6 +161,8 @@ enum cnss_driver_event_type { CNSS_DRIVER_EVENT_FORCE_FW_ASSERT, CNSS_DRIVER_EVENT_POWER_UP, CNSS_DRIVER_EVENT_POWER_DOWN, CNSS_DRIVER_EVENT_CAL_UPDATE, CNSS_DRIVER_EVENT_CAL_DOWNLOAD, CNSS_DRIVER_EVENT_MAX, }; Loading Loading @@ -270,5 +273,7 @@ void cnss_unregister_subsys(struct cnss_plat_data *plat_priv); int cnss_register_ramdump(struct cnss_plat_data *plat_priv); void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv); void cnss_set_pin_connect_status(struct cnss_plat_data *plat_priv); u32 cnss_get_wake_msi(struct cnss_plat_data *plat_priv); bool *cnss_get_qmi_bypass(void); bool is_qcn7605_device(u16 device_id); #endif /* _CNSS_MAIN_H */