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:
Aleksander Morgado
2025-02-21 14:08:50 +00:00
committed by Dan Williams
parent 93da5e0b93
commit 781428ddcd
5 changed files with 81 additions and 111 deletions
+6 -37
View File
@@ -10303,21 +10303,7 @@ modem_firmware_load_update_settings_finish (MMIfaceModemFirmware *self,
GAsyncResult *res, GAsyncResult *res,
GError **error) GError **error)
{ {
return g_task_propagate_pointer (G_TASK (res), error); return mm_iface_modem_firmware_load_update_settings_in_port_finish (self, 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");
} }
static void static void
@@ -10325,28 +10311,11 @@ modem_firmware_load_update_settings (MMIfaceModemFirmware *self,
GAsyncReadyCallback callback, GAsyncReadyCallback callback,
gpointer user_data) gpointer user_data)
{ {
GTask *task; mm_iface_modem_firmware_load_update_settings_in_port (
MMPortMbim *mbim_port; self,
MMKernelDevice *kernel_device; MM_PORT (mm_broadband_modem_mbim_peek_port_mbim (MM_BROADBAND_MODEM_MBIM (self))),
MMModemFirmwareUpdateMethod update_methods; callback,
g_autoptr(MMFirmwareUpdateSettings) update_settings = NULL; user_data);
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);
} }
/*****************************************************************************/ /*****************************************************************************/
+6 -37
View File
@@ -13112,21 +13112,7 @@ modem_firmware_load_update_settings_finish (MMIfaceModemFirmware *self,
GAsyncResult *res, GAsyncResult *res,
GError **error) GError **error)
{ {
return g_task_propagate_pointer (G_TASK (res), error); return mm_iface_modem_firmware_load_update_settings_in_port_finish (self, 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");
} }
static void static void
@@ -13134,28 +13120,11 @@ modem_firmware_load_update_settings (MMIfaceModemFirmware *self,
GAsyncReadyCallback callback, GAsyncReadyCallback callback,
gpointer user_data) gpointer user_data)
{ {
GTask *task; mm_iface_modem_firmware_load_update_settings_in_port (
MMPortQmi *qmi_port; self,
MMKernelDevice *kernel_device; MM_PORT (mm_broadband_modem_qmi_peek_port_qmi (MM_BROADBAND_MODEM_QMI (self))),
MMModemFirmwareUpdateMethod update_methods; callback,
g_autoptr(MMFirmwareUpdateSettings) update_settings = NULL; user_data);
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);
} }
/*****************************************************************************/ /*****************************************************************************/
+6 -37
View File
@@ -11398,21 +11398,7 @@ modem_firmware_load_update_settings_finish (MMIfaceModemFirmware *self,
GAsyncResult *res, GAsyncResult *res,
GError **error) GError **error)
{ {
return g_task_propagate_pointer (G_TASK (res), error); return mm_iface_modem_firmware_load_update_settings_in_port_finish (self, 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");
} }
static void static void
@@ -11420,28 +11406,11 @@ modem_firmware_load_update_settings (MMIfaceModemFirmware *self,
GAsyncReadyCallback callback, GAsyncReadyCallback callback,
gpointer user_data) gpointer user_data)
{ {
GTask *task; mm_iface_modem_firmware_load_update_settings_in_port (
MMIfacePortAt *at_port; self,
MMKernelDevice *kernel_device; MM_PORT (mm_base_modem_peek_port_primary (MM_BASE_MODEM (self))),
MMModemFirmwareUpdateMethod update_methods; callback,
g_autoptr(MMFirmwareUpdateSettings) update_settings = NULL; user_data);
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);
} }
/*****************************************************************************/ /*****************************************************************************/
+52
View File
@@ -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 */ /* Handle the 'List' method from DBus */
+11
View File
@@ -87,4 +87,15 @@ void mm_iface_modem_firmware_shutdown (MMIfaceModemFirmware *self);
void mm_iface_modem_firmware_bind_simple_status (MMIfaceModemFirmware *self, void mm_iface_modem_firmware_bind_simple_status (MMIfaceModemFirmware *self,
MMSimpleStatus *status); 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 */ #endif /* MM_IFACE_MODEM_FIRMWARE_H */