aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mm-broadband-modem-mbim.c43
-rw-r--r--src/mm-broadband-modem-qmi.c43
-rw-r--r--src/mm-broadband-modem.c43
-rw-r--r--src/mm-iface-modem-firmware.c52
-rw-r--r--src/mm-iface-modem-firmware.h11
5 files changed, 81 insertions, 111 deletions
diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c
index d22d1146..82a7b574 100644
--- a/src/mm-broadband-modem-mbim.c
+++ b/src/mm-broadband-modem-mbim.c
@@ -10303,21 +10303,7 @@ modem_firmware_load_update_settings_finish (MMIfaceModemFirmware *self,
GAsyncResult *res,
GError **error)
{
- return g_task_propagate_pointer (G_TASK (res), error);
-}
-
-static gboolean
-modem_is_sahara_supported (MMBaseModem *modem,
- MMKernelDevice *kernel_device)
-{
- return mm_kernel_device_get_global_property_as_boolean (kernel_device, "ID_MM_QUALCOMM_SAHARA");
-}
-
-static gboolean
-modem_is_firehose_supported (MMBaseModem *modem,
- MMKernelDevice *kernel_device)
-{
- return mm_kernel_device_get_global_property_as_boolean (kernel_device, "ID_MM_QUALCOMM_FIREHOSE");
+ return mm_iface_modem_firmware_load_update_settings_in_port_finish (self, res, error);
}
static void
@@ -10325,28 +10311,11 @@ modem_firmware_load_update_settings (MMIfaceModemFirmware *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
- GTask *task;
- MMPortMbim *mbim_port;
- MMKernelDevice *kernel_device;
- MMModemFirmwareUpdateMethod update_methods;
- g_autoptr(MMFirmwareUpdateSettings) update_settings = NULL;
-
- task = g_task_new (self, NULL, callback, user_data);
-
- update_methods = MM_MODEM_FIRMWARE_UPDATE_METHOD_NONE;
- mbim_port = mm_broadband_modem_mbim_peek_port_mbim (MM_BROADBAND_MODEM_MBIM (self));
- if (mbim_port) {
- kernel_device = mm_port_peek_kernel_device (MM_PORT (mbim_port));
-
- if (modem_is_firehose_supported (MM_BASE_MODEM (self), kernel_device))
- update_methods |= MM_MODEM_FIRMWARE_UPDATE_METHOD_FIREHOSE;
- if (modem_is_sahara_supported (MM_BASE_MODEM (self), kernel_device))
- update_methods |= MM_MODEM_FIRMWARE_UPDATE_METHOD_SAHARA;
- }
-
- update_settings = mm_firmware_update_settings_new (update_methods);
- g_task_return_pointer (task, g_object_ref (update_settings), (GDestroyNotify)g_object_unref);
- g_object_unref (task);
+ mm_iface_modem_firmware_load_update_settings_in_port (
+ self,
+ MM_PORT (mm_broadband_modem_mbim_peek_port_mbim (MM_BROADBAND_MODEM_MBIM (self))),
+ callback,
+ user_data);
}
/*****************************************************************************/
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c
index 5c23e918..b0cd45da 100644
--- a/src/mm-broadband-modem-qmi.c
+++ b/src/mm-broadband-modem-qmi.c
@@ -13112,21 +13112,7 @@ modem_firmware_load_update_settings_finish (MMIfaceModemFirmware *self,
GAsyncResult *res,
GError **error)
{
- return g_task_propagate_pointer (G_TASK (res), error);
-}
-
-static gboolean
-modem_is_sahara_supported (MMBaseModem *modem,
- MMKernelDevice *kernel_device)
-{
- return mm_kernel_device_get_global_property_as_boolean (kernel_device, "ID_MM_QUALCOMM_SAHARA");
-}
-
-static gboolean
-modem_is_firehose_supported (MMBaseModem *modem,
- MMKernelDevice *kernel_device)
-{
- return mm_kernel_device_get_global_property_as_boolean (kernel_device, "ID_MM_QUALCOMM_FIREHOSE");
+ return mm_iface_modem_firmware_load_update_settings_in_port_finish (self, res, error);
}
static void
@@ -13134,28 +13120,11 @@ modem_firmware_load_update_settings (MMIfaceModemFirmware *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
- GTask *task;
- MMPortQmi *qmi_port;
- MMKernelDevice *kernel_device;
- MMModemFirmwareUpdateMethod update_methods;
- g_autoptr(MMFirmwareUpdateSettings) update_settings = NULL;
-
- task = g_task_new (self, NULL, callback, user_data);
-
- update_methods = MM_MODEM_FIRMWARE_UPDATE_METHOD_NONE;
- qmi_port = mm_broadband_modem_qmi_peek_port_qmi (MM_BROADBAND_MODEM_QMI (self));
- if (qmi_port) {
- kernel_device = mm_port_peek_kernel_device (MM_PORT (qmi_port));
-
- if (modem_is_firehose_supported (MM_BASE_MODEM (self), kernel_device))
- update_methods |= MM_MODEM_FIRMWARE_UPDATE_METHOD_FIREHOSE;
- if (modem_is_sahara_supported (MM_BASE_MODEM (self), kernel_device))
- update_methods |= MM_MODEM_FIRMWARE_UPDATE_METHOD_SAHARA;
- }
-
- update_settings = mm_firmware_update_settings_new (update_methods);
- g_task_return_pointer (task, g_object_ref (update_settings), (GDestroyNotify)g_object_unref);
- g_object_unref (task);
+ mm_iface_modem_firmware_load_update_settings_in_port (
+ self,
+ MM_PORT (mm_broadband_modem_qmi_peek_port_qmi (MM_BROADBAND_MODEM_QMI (self))),
+ callback,
+ user_data);
}
/*****************************************************************************/
diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c
index 3311ffae..ddeb8d0e 100644
--- a/src/mm-broadband-modem.c
+++ b/src/mm-broadband-modem.c
@@ -11398,21 +11398,7 @@ modem_firmware_load_update_settings_finish (MMIfaceModemFirmware *self,
GAsyncResult *res,
GError **error)
{
- return g_task_propagate_pointer (G_TASK (res), error);
-}
-
-static gboolean
-modem_is_sahara_supported (MMBaseModem *modem,
- MMKernelDevice *kernel_device)
-{
- return mm_kernel_device_get_global_property_as_boolean (kernel_device, "ID_MM_QUALCOMM_SAHARA");
-}
-
-static gboolean
-modem_is_firehose_supported (MMBaseModem *modem,
- MMKernelDevice *kernel_device)
-{
- return mm_kernel_device_get_global_property_as_boolean (kernel_device, "ID_MM_QUALCOMM_FIREHOSE");
+ return mm_iface_modem_firmware_load_update_settings_in_port_finish (self, res, error);
}
static void
@@ -11420,28 +11406,11 @@ modem_firmware_load_update_settings (MMIfaceModemFirmware *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
- GTask *task;
- MMIfacePortAt *at_port;
- MMKernelDevice *kernel_device;
- MMModemFirmwareUpdateMethod update_methods;
- g_autoptr(MMFirmwareUpdateSettings) update_settings = NULL;
-
- task = g_task_new (self, NULL, callback, user_data);
-
- update_methods = MM_MODEM_FIRMWARE_UPDATE_METHOD_NONE;
- at_port = mm_base_modem_peek_best_at_port (MM_BASE_MODEM (self), NULL);
- if (at_port) {
- kernel_device = mm_port_peek_kernel_device (MM_PORT (at_port));
-
- if (modem_is_firehose_supported (MM_BASE_MODEM (self), kernel_device))
- update_methods |= MM_MODEM_FIRMWARE_UPDATE_METHOD_FIREHOSE;
- if (modem_is_sahara_supported (MM_BASE_MODEM (self), kernel_device))
- update_methods |= MM_MODEM_FIRMWARE_UPDATE_METHOD_SAHARA;
- }
-
- update_settings = mm_firmware_update_settings_new (update_methods);
- g_task_return_pointer (task, g_object_ref (update_settings), (GDestroyNotify)g_object_unref);
- g_object_unref (task);
+ mm_iface_modem_firmware_load_update_settings_in_port (
+ self,
+ MM_PORT (mm_base_modem_peek_port_primary (MM_BASE_MODEM (self))),
+ callback,
+ user_data);
}
/*****************************************************************************/
diff --git a/src/mm-iface-modem-firmware.c b/src/mm-iface-modem-firmware.c
index 9872db23..ee52ae80 100644
--- a/src/mm-iface-modem-firmware.c
+++ b/src/mm-iface-modem-firmware.c
@@ -40,6 +40,58 @@ mm_iface_modem_firmware_bind_simple_status (MMIfaceModemFirmware *self,
}
/*****************************************************************************/
+/* Load update settings in port (Firmware interface) */
+
+MMFirmwareUpdateSettings *
+mm_iface_modem_firmware_load_update_settings_in_port_finish (MMIfaceModemFirmware *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ return g_task_propagate_pointer (G_TASK (res), error);
+}
+
+static gboolean
+modem_is_sahara_supported (MMKernelDevice *kernel_device)
+{
+ return mm_kernel_device_get_global_property_as_boolean (kernel_device, "ID_MM_QUALCOMM_SAHARA");
+}
+
+static gboolean
+modem_is_firehose_supported (MMKernelDevice *kernel_device)
+{
+ return mm_kernel_device_get_global_property_as_boolean (kernel_device, "ID_MM_QUALCOMM_FIREHOSE");
+}
+
+void
+mm_iface_modem_firmware_load_update_settings_in_port (MMIfaceModemFirmware *self,
+ MMPort *port,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GTask *task;
+ MMModemFirmwareUpdateMethod update_methods;
+ g_autoptr(MMFirmwareUpdateSettings) update_settings = NULL;
+
+ task = g_task_new (self, NULL, callback, user_data);
+
+ update_methods = MM_MODEM_FIRMWARE_UPDATE_METHOD_NONE;
+ if (MM_IS_PORT (port)) {
+ MMKernelDevice *kernel_device;
+
+ kernel_device = mm_port_peek_kernel_device (MM_PORT (port));
+
+ if (modem_is_firehose_supported (kernel_device))
+ update_methods |= MM_MODEM_FIRMWARE_UPDATE_METHOD_FIREHOSE;
+ if (modem_is_sahara_supported (kernel_device))
+ update_methods |= MM_MODEM_FIRMWARE_UPDATE_METHOD_SAHARA;
+ }
+
+ update_settings = mm_firmware_update_settings_new (update_methods);
+ g_task_return_pointer (task, g_object_ref (update_settings), (GDestroyNotify)g_object_unref);
+ g_object_unref (task);
+}
+
+/*****************************************************************************/
/* Handle the 'List' method from DBus */
typedef struct {
diff --git a/src/mm-iface-modem-firmware.h b/src/mm-iface-modem-firmware.h
index e5ee980d..83485a3c 100644
--- a/src/mm-iface-modem-firmware.h
+++ b/src/mm-iface-modem-firmware.h
@@ -87,4 +87,15 @@ void mm_iface_modem_firmware_shutdown (MMIfaceModemFirmware *self);
void mm_iface_modem_firmware_bind_simple_status (MMIfaceModemFirmware *self,
MMSimpleStatus *status);
+/* Helper to load common update settings on the primary port */
+void mm_iface_modem_firmware_load_update_settings_in_port (
+ MMIfaceModemFirmware *self,
+ MMPort *port,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+MMFirmwareUpdateSettings *mm_iface_modem_firmware_load_update_settings_in_port_finish (
+ MMIfaceModemFirmware *self,
+ GAsyncResult *res,
+ GError **error);
+
#endif /* MM_IFACE_MODEM_FIRMWARE_H */