iface-modem-firmware: common logic to check for sahara/firehose tags
The logic will exclusively look for the udev tags reporting sahara/firehose support in the primary control port of each modem type.
This commit is contained in:
committed by
Dan Williams
parent
93da5e0b93
commit
781428ddcd
@@ -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);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
@@ -39,6 +39,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 */
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user