Loading drivers/net/wireless/cnss2/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ 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_DEBUG) += genl.o cnss2-$(CONFIG_CNSS2_QMI) += qmi.o wlan_firmware_service_v01.o drivers/net/wireless/cnss2/bus.c +31 −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 Loading @@ -53,6 +54,10 @@ enum cnss_dev_bus_type cnss_get_bus_type(struct cnss_plat_data *plat_priv) case QCA6390_DEVICE_ID: bus_type = CNSS_BUS_PCI; break; case QCN7605_COMPOSITE_DEVICE_ID: case QCN7605_STANDALONE_DEVICE_ID: bus_type = CNSS_BUS_USB; break; default: cnss_pr_err("Unknown device: 0x%lx\n", plat_priv->device_id); break; Loading @@ -61,6 +66,14 @@ enum cnss_dev_bus_type cnss_get_bus_type(struct cnss_plat_data *plat_priv) return bus_type; } bool cnss_bus_req_mem_ind_valid(struct cnss_plat_data *plat_priv) { if (cnss_get_bus_type(plat_priv) == CNSS_BUS_USB) return false; else return true; } void *cnss_bus_dev_to_bus_priv(struct device *dev) { if (!dev) Loading Loading @@ -88,6 +101,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 @@ -101,6 +116,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 @@ -116,6 +133,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 @@ -255,6 +274,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 @@ -270,6 +291,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 @@ -285,6 +308,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 @@ -300,6 +325,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 @@ -345,6 +372,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 @@ -360,6 +389,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 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,15 @@ #define QCA6290_DEVICE_ID 0x1100 #define QCA6390_VENDOR_ID 0x17CB #define QCA6390_DEVICE_ID 0x1101 #define QCN7605_VENDOR_ID 0x17CB #define QCN7605_DEVICE_ID 0x1102 #define QCN7605_USB_VENDOR_ID 0x05C6 #define QCN7605_STANDALONE_PRODUCT_ID 0x9900 #define QCN7605_COMPOSITE_PRODUCT_ID 0x9901 #define QCN7605_COMPOSITE_DEVICE_ID QCN7605_COMPOSITE_PRODUCT_ID #define QCN7605_STANDALONE_DEVICE_ID QCN7605_STANDALONE_PRODUCT_ID enum cnss_dev_bus_type cnss_get_dev_bus_type(struct device *dev); enum cnss_dev_bus_type cnss_get_bus_type(struct cnss_plat_data *plat_priv); Loading Loading @@ -52,5 +61,5 @@ 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); bool cnss_bus_req_mem_ind_valid(struct cnss_plat_data *plat_priv); #endif /* _CNSS_BUS_H */ drivers/net/wireless/cnss2/main.c +51 −1 Original line number Diff line number Diff line Loading @@ -431,6 +431,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 @@ -448,6 +457,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 @@ -1031,6 +1044,27 @@ int cnss_force_fw_assert(struct device *dev) } EXPORT_SYMBOL(cnss_force_fw_assert); static int cnss_wlfw_server_arrive_hdlr(struct cnss_plat_data *plat_priv, void *data) { int ret; unsigned int bdf_type; ret = cnss_wlfw_server_arrive(plat_priv, data); 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; bdf_type = plat_priv->ctrl_params.bdf_type; ret = cnss_wlfw_bdf_dnld_send_sync(plat_priv, bdf_type); } out: return ret; } int cnss_force_collect_rddm(struct device *dev) { struct cnss_plat_data *plat_priv = cnss_bus_dev_to_plat_priv(dev); Loading Loading @@ -1101,7 +1135,13 @@ static int cnss_cold_boot_cal_done_hdlr(struct cnss_plat_data *plat_priv) plat_priv->cal_done = true; cnss_wlfw_wlan_mode_send_sync(plat_priv, CNSS_OFF); if (plat_priv->device_id == QCN7605_DEVICE_ID || plat_priv->device_id == QCN7605_STANDALONE_DEVICE_ID || plat_priv->device_id == QCN7605_COMPOSITE_DEVICE_ID) goto skip_shutdown; cnss_bus_dev_shutdown(plat_priv); skip_shutdown: complete(&plat_priv->cal_complete); clear_bit(CNSS_COLD_BOOT_CAL, &plat_priv->driver_state); Loading Loading @@ -1253,7 +1293,8 @@ 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, event->data); ret = cnss_wlfw_server_arrive_hdlr(plat_priv, event->data); break; case CNSS_DRIVER_EVENT_SERVER_EXIT: ret = cnss_wlfw_server_exit(plat_priv); Loading @@ -1273,6 +1314,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 @@ -1553,6 +1597,9 @@ 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 @@ -1571,6 +1618,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 +3 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ enum cnss_dev_bus_type { CNSS_BUS_NONE = -1, CNSS_BUS_PCI, CNSS_BUS_USB, }; struct cnss_vreg_cfg { Loading Loading @@ -173,6 +174,8 @@ enum cnss_driver_event_type { CNSS_DRIVER_EVENT_QDSS_TRACE_REQ_MEM, CNSS_DRIVER_EVENT_QDSS_TRACE_SAVE, CNSS_DRIVER_EVENT_QDSS_TRACE_FREE, CNSS_DRIVER_EVENT_CAL_UPDATE, CNSS_DRIVER_EVENT_CAL_DOWNLOAD, CNSS_DRIVER_EVENT_MAX, }; Loading Loading
drivers/net/wireless/cnss2/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ 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_DEBUG) += genl.o cnss2-$(CONFIG_CNSS2_QMI) += qmi.o wlan_firmware_service_v01.o
drivers/net/wireless/cnss2/bus.c +31 −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 Loading @@ -53,6 +54,10 @@ enum cnss_dev_bus_type cnss_get_bus_type(struct cnss_plat_data *plat_priv) case QCA6390_DEVICE_ID: bus_type = CNSS_BUS_PCI; break; case QCN7605_COMPOSITE_DEVICE_ID: case QCN7605_STANDALONE_DEVICE_ID: bus_type = CNSS_BUS_USB; break; default: cnss_pr_err("Unknown device: 0x%lx\n", plat_priv->device_id); break; Loading @@ -61,6 +66,14 @@ enum cnss_dev_bus_type cnss_get_bus_type(struct cnss_plat_data *plat_priv) return bus_type; } bool cnss_bus_req_mem_ind_valid(struct cnss_plat_data *plat_priv) { if (cnss_get_bus_type(plat_priv) == CNSS_BUS_USB) return false; else return true; } void *cnss_bus_dev_to_bus_priv(struct device *dev) { if (!dev) Loading Loading @@ -88,6 +101,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 @@ -101,6 +116,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 @@ -116,6 +133,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 @@ -255,6 +274,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 @@ -270,6 +291,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 @@ -285,6 +308,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 @@ -300,6 +325,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 @@ -345,6 +372,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 @@ -360,6 +389,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 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,15 @@ #define QCA6290_DEVICE_ID 0x1100 #define QCA6390_VENDOR_ID 0x17CB #define QCA6390_DEVICE_ID 0x1101 #define QCN7605_VENDOR_ID 0x17CB #define QCN7605_DEVICE_ID 0x1102 #define QCN7605_USB_VENDOR_ID 0x05C6 #define QCN7605_STANDALONE_PRODUCT_ID 0x9900 #define QCN7605_COMPOSITE_PRODUCT_ID 0x9901 #define QCN7605_COMPOSITE_DEVICE_ID QCN7605_COMPOSITE_PRODUCT_ID #define QCN7605_STANDALONE_DEVICE_ID QCN7605_STANDALONE_PRODUCT_ID enum cnss_dev_bus_type cnss_get_dev_bus_type(struct device *dev); enum cnss_dev_bus_type cnss_get_bus_type(struct cnss_plat_data *plat_priv); Loading Loading @@ -52,5 +61,5 @@ 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); bool cnss_bus_req_mem_ind_valid(struct cnss_plat_data *plat_priv); #endif /* _CNSS_BUS_H */
drivers/net/wireless/cnss2/main.c +51 −1 Original line number Diff line number Diff line Loading @@ -431,6 +431,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 @@ -448,6 +457,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 @@ -1031,6 +1044,27 @@ int cnss_force_fw_assert(struct device *dev) } EXPORT_SYMBOL(cnss_force_fw_assert); static int cnss_wlfw_server_arrive_hdlr(struct cnss_plat_data *plat_priv, void *data) { int ret; unsigned int bdf_type; ret = cnss_wlfw_server_arrive(plat_priv, data); 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; bdf_type = plat_priv->ctrl_params.bdf_type; ret = cnss_wlfw_bdf_dnld_send_sync(plat_priv, bdf_type); } out: return ret; } int cnss_force_collect_rddm(struct device *dev) { struct cnss_plat_data *plat_priv = cnss_bus_dev_to_plat_priv(dev); Loading Loading @@ -1101,7 +1135,13 @@ static int cnss_cold_boot_cal_done_hdlr(struct cnss_plat_data *plat_priv) plat_priv->cal_done = true; cnss_wlfw_wlan_mode_send_sync(plat_priv, CNSS_OFF); if (plat_priv->device_id == QCN7605_DEVICE_ID || plat_priv->device_id == QCN7605_STANDALONE_DEVICE_ID || plat_priv->device_id == QCN7605_COMPOSITE_DEVICE_ID) goto skip_shutdown; cnss_bus_dev_shutdown(plat_priv); skip_shutdown: complete(&plat_priv->cal_complete); clear_bit(CNSS_COLD_BOOT_CAL, &plat_priv->driver_state); Loading Loading @@ -1253,7 +1293,8 @@ 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, event->data); ret = cnss_wlfw_server_arrive_hdlr(plat_priv, event->data); break; case CNSS_DRIVER_EVENT_SERVER_EXIT: ret = cnss_wlfw_server_exit(plat_priv); Loading @@ -1273,6 +1314,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 @@ -1553,6 +1597,9 @@ 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 @@ -1571,6 +1618,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 +3 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ enum cnss_dev_bus_type { CNSS_BUS_NONE = -1, CNSS_BUS_PCI, CNSS_BUS_USB, }; struct cnss_vreg_cfg { Loading Loading @@ -173,6 +174,8 @@ enum cnss_driver_event_type { CNSS_DRIVER_EVENT_QDSS_TRACE_REQ_MEM, CNSS_DRIVER_EVENT_QDSS_TRACE_SAVE, CNSS_DRIVER_EVENT_QDSS_TRACE_FREE, CNSS_DRIVER_EVENT_CAL_UPDATE, CNSS_DRIVER_EVENT_CAL_DOWNLOAD, CNSS_DRIVER_EVENT_MAX, }; Loading