aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2020-10-25 14:10:45 +0100
committerAleksander Morgado <aleksander@aleksander.es>2020-11-09 18:41:57 +0100
commit799c4c72ce1494c8e094c091aa2d20ab62e4a569 (patch)
treecd29f7214c92db2871c017125097ccdfe0897e9b /src
parent7faa3a5e2518765bb3683c26ecdf3155046424b0 (diff)
port-qmi: allow specifying input subsystem
We have assumed until now that all QMI ports are based on the qmi_wwan driver, exposed in the 'usbmisc' subsystem by the cdc-wdm driver. This may no longer be true, so allow creating QMI ports with an explicit subsystem instead of defaulting always to USBMISC.
Diffstat (limited to 'src')
-rw-r--r--src/mm-base-modem.c2
-rw-r--r--src/mm-port-probe.c3
-rw-r--r--src/mm-port-qmi.c5
-rw-r--r--src/mm-port-qmi.h34
4 files changed, 23 insertions, 21 deletions
diff --git a/src/mm-base-modem.c b/src/mm-base-modem.c
index 7dd461f5..a21d7838 100644
--- a/src/mm-base-modem.c
+++ b/src/mm-base-modem.c
@@ -226,7 +226,7 @@ base_modem_create_usbmisc_port (MMBaseModem *self,
{
#if defined WITH_QMI
if (ptype == MM_PORT_TYPE_QMI)
- return MM_PORT (mm_port_qmi_new (name));
+ return MM_PORT (mm_port_qmi_new (name, MM_PORT_SUBSYS_USBMISC));
#endif
#if defined WITH_MBIM
if (ptype == MM_PORT_TYPE_MBIM)
diff --git a/src/mm-port-probe.c b/src/mm-port-probe.c
index bfbe861c..7f8f9157 100644
--- a/src/mm-port-probe.c
+++ b/src/mm-port-probe.c
@@ -494,7 +494,8 @@ wdm_probe_qmi (MMPortProbe *self)
mm_obj_dbg (self, "probing QMI...");
/* Create a port and try to open it */
- ctx->port_qmi = mm_port_qmi_new (mm_kernel_device_get_name (self->priv->port));
+ ctx->port_qmi = mm_port_qmi_new (mm_kernel_device_get_name (self->priv->port),
+ MM_PORT_SUBSYS_USBMISC);
mm_port_qmi_open (ctx->port_qmi,
FALSE,
NULL,
diff --git a/src/mm-port-qmi.c b/src/mm-port-qmi.c
index 6bc7b901..e10f643d 100644
--- a/src/mm-port-qmi.c
+++ b/src/mm-port-qmi.c
@@ -788,11 +788,12 @@ mm_port_qmi_close (MMPortQmi *self,
/*****************************************************************************/
MMPortQmi *
-mm_port_qmi_new (const gchar *name)
+mm_port_qmi_new (const gchar *name,
+ MMPortSubsys subsys)
{
return MM_PORT_QMI (g_object_new (MM_TYPE_PORT_QMI,
MM_PORT_DEVICE, name,
- MM_PORT_SUBSYS, MM_PORT_SUBSYS_USBMISC,
+ MM_PORT_SUBSYS, subsys,
MM_PORT_TYPE, MM_PORT_TYPE_QMI,
NULL));
}
diff --git a/src/mm-port-qmi.h b/src/mm-port-qmi.h
index dd7033dc..986b3b7d 100644
--- a/src/mm-port-qmi.h
+++ b/src/mm-port-qmi.h
@@ -47,23 +47,23 @@ struct _MMPortQmiClass {
GType mm_port_qmi_get_type (void);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMPortQmi, g_object_unref)
-MMPortQmi *mm_port_qmi_new (const gchar *name);
-
-void mm_port_qmi_open (MMPortQmi *self,
- gboolean set_data_format,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data);
-gboolean mm_port_qmi_open_finish (MMPortQmi *self,
- GAsyncResult *res,
- GError **error);
-gboolean mm_port_qmi_is_open (MMPortQmi *self);
-void mm_port_qmi_close (MMPortQmi *self,
- GAsyncReadyCallback callback,
- gpointer user_data);
-gboolean mm_port_qmi_close_finish (MMPortQmi *self,
- GAsyncResult *res,
- GError **error);
+MMPortQmi *mm_port_qmi_new (const gchar *name,
+ MMPortSubsys subsys);
+void mm_port_qmi_open (MMPortQmi *self,
+ gboolean set_data_format,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+gboolean mm_port_qmi_open_finish (MMPortQmi *self,
+ GAsyncResult *res,
+ GError **error);
+gboolean mm_port_qmi_is_open (MMPortQmi *self);
+void mm_port_qmi_close (MMPortQmi *self,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+gboolean mm_port_qmi_close_finish (MMPortQmi *self,
+ GAsyncResult *res,
+ GError **error);
typedef enum {
MM_PORT_QMI_FLAG_DEFAULT = 0,