aboutsummaryrefslogtreecommitdiff
path: root/plugins/fibocom/mm-plugin-fibocom.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/fibocom/mm-plugin-fibocom.c')
-rw-r--r--plugins/fibocom/mm-plugin-fibocom.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/plugins/fibocom/mm-plugin-fibocom.c b/plugins/fibocom/mm-plugin-fibocom.c
index 74f25c55..a8370848 100644
--- a/plugins/fibocom/mm-plugin-fibocom.c
+++ b/plugins/fibocom/mm-plugin-fibocom.c
@@ -28,6 +28,7 @@
#if defined WITH_MBIM
#include "mm-broadband-modem-mbim.h"
#include "mm-broadband-modem-mbim-xmm.h"
+#include "mm-broadband-modem-mbim-xmm-fibocom.h"
#endif
#if defined WITH_QMI
@@ -41,6 +42,22 @@ MM_PLUGIN_DEFINE_MINOR_VERSION
/*****************************************************************************/
+#if defined WITH_MBIM
+static gboolean
+mm_port_probe_list_has_initial_eps_off_on_tag (GList *probes)
+{
+ GList *l;
+
+ for (l = probes; l; l = g_list_next (l)) {
+ if (mm_kernel_device_get_global_property_as_boolean (mm_port_probe_peek_port (MM_PORT_PROBE (l->data)),
+ "ID_MM_FIBOCOM_INITIAL_EPS_OFF_ON"))
+ return TRUE;
+ }
+
+ return FALSE;
+}
+#endif
+
static MMBaseModem *
create_modem (MMPlugin *self,
const gchar *uid,
@@ -54,6 +71,15 @@ create_modem (MMPlugin *self,
if (mm_port_probe_list_has_mbim_port (probes)) {
if (mm_port_probe_list_is_xmm (probes)) {
mm_obj_dbg (self, "MBIM-powered XMM-based Fibocom modem found...");
+ if (mm_port_probe_list_has_initial_eps_off_on_tag (probes)) {
+ mm_obj_dbg (self, "initial eps need to toggle modem power");
+ return MM_BASE_MODEM (mm_broadband_modem_mbim_xmm_fibocom_new (uid,
+ drivers,
+ mm_plugin_get_name (self),
+ vendor,
+ product));
+ }
+
return MM_BASE_MODEM (mm_broadband_modem_mbim_xmm_new (uid,
drivers,
mm_plugin_get_name (self),