diff options
-rw-r--r-- | include/ModemManager-enums.h | 2 | ||||
-rw-r--r-- | plugins/foxconn/mm-broadband-modem-mbim-foxconn.c | 17 |
2 files changed, 15 insertions, 4 deletions
diff --git a/include/ModemManager-enums.h b/include/ModemManager-enums.h index 06c2cf5e0..b5d903676 100644 --- a/include/ModemManager-enums.h +++ b/include/ModemManager-enums.h @@ -1515,6 +1515,7 @@ typedef enum { /*< underscore_name=mm_call_direction >*/ * @MM_MODEM_FIRMWARE_UPDATE_METHOD_NONE: No method specified. * @MM_MODEM_FIRMWARE_UPDATE_METHOD_FASTBOOT: Device supports fastboot-based update. * @MM_MODEM_FIRMWARE_UPDATE_METHOD_QMI_PDC: Device supports QMI PDC based update. + * @MM_MODEM_FIRMWARE_UPDATE_METHOD_MBIM_QDU: Device supports MBIM QDU based update. Since 1.18. * * Type of firmware update method supported by the module. * @@ -1524,6 +1525,7 @@ typedef enum { /*< underscore_name=mm_modem_firmware_update_method >*/ MM_MODEM_FIRMWARE_UPDATE_METHOD_NONE = 0, MM_MODEM_FIRMWARE_UPDATE_METHOD_FASTBOOT = 1 << 0, MM_MODEM_FIRMWARE_UPDATE_METHOD_QMI_PDC = 1 << 1, + MM_MODEM_FIRMWARE_UPDATE_METHOD_MBIM_QDU = 1 << 2, } MMModemFirmwareUpdateMethod; /** diff --git a/plugins/foxconn/mm-broadband-modem-mbim-foxconn.c b/plugins/foxconn/mm-broadband-modem-mbim-foxconn.c index a69e87df6..f46abc97b 100644 --- a/plugins/foxconn/mm-broadband-modem-mbim-foxconn.c +++ b/plugins/foxconn/mm-broadband-modem-mbim-foxconn.c @@ -89,15 +89,24 @@ foxconn_get_firmware_version_ready (QmiClientDms *client, GError *error = NULL; MMFirmwareUpdateSettings *update_settings = NULL; const gchar *str; + MMIfaceModemFirmware *self; output = qmi_client_dms_foxconn_get_firmware_version_finish (client, res, &error); if (!output || !qmi_message_dms_foxconn_get_firmware_version_output_get_result (output, &error)) goto out; - /* Create update settings now */ - update_settings = mm_firmware_update_settings_new (MM_MODEM_FIRMWARE_UPDATE_METHOD_FASTBOOT | - MM_MODEM_FIRMWARE_UPDATE_METHOD_QMI_PDC); - mm_firmware_update_settings_set_fastboot_at (update_settings, "AT^FASTBOOT"); + /* Create update settings now: + * 0x105b is the T99W175 module, T99W175 supports QDU, + * else support FASTBOOT and QMI PDC. + */ + self = g_task_get_source_object (task); + if (mm_base_modem_get_vendor_id (MM_BASE_MODEM (self)) == 0x105b) + update_settings = mm_firmware_update_settings_new (MM_MODEM_FIRMWARE_UPDATE_METHOD_MBIM_QDU); + else { + update_settings = mm_firmware_update_settings_new (MM_MODEM_FIRMWARE_UPDATE_METHOD_FASTBOOT | + MM_MODEM_FIRMWARE_UPDATE_METHOD_QMI_PDC); + mm_firmware_update_settings_set_fastboot_at (update_settings, "AT^FASTBOOT"); + } qmi_message_dms_foxconn_get_firmware_version_output_get_version (output, &str, NULL); mm_firmware_update_settings_set_version (update_settings, str); |