aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mm-modem-helpers-qmi.c35
-rw-r--r--src/mm-modem-helpers-qmi.h2
-rw-r--r--src/mm-port-qmi.c18
3 files changed, 15 insertions, 40 deletions
diff --git a/src/mm-modem-helpers-qmi.c b/src/mm-modem-helpers-qmi.c
index ce3967f3..b6bcbd10 100644
--- a/src/mm-modem-helpers-qmi.c
+++ b/src/mm-modem-helpers-qmi.c
@@ -1795,29 +1795,18 @@ qmi_mobile_equipment_error_from_verbose_call_end_reason_3gpp (QmiWdsVerboseCallE
/* QMI/WDA to MM translations */
QmiDataEndpointType
-mm_port_subsys_to_qmi_endpoint_type (MMPortSubsys subsys)
-{
- switch (subsys) {
- case MM_PORT_SUBSYS_USBMISC:
- return QMI_DATA_ENDPOINT_TYPE_HSUSB;
- case MM_PORT_SUBSYS_RPMSG:
- case MM_PORT_SUBSYS_QRTR:
- return QMI_DATA_ENDPOINT_TYPE_EMBEDDED;
- /* The WWAN subsystem abstracts the underlying transport bus, and so
- * endpoint type can not be deducted from that. This function should
- * then be revisited, but in practice, only MHI/PCI modem ports are
- * exposed through the WWAN subsystem for now.
- */
- case MM_PORT_SUBSYS_WWAN:
- return QMI_DATA_ENDPOINT_TYPE_PCIE;
- case MM_PORT_SUBSYS_UNKNOWN:
- case MM_PORT_SUBSYS_TTY:
- case MM_PORT_SUBSYS_NET:
- case MM_PORT_SUBSYS_UNIX:
- default:
- g_assert_not_reached ();
- break;
- }
+mm_port_net_driver_to_qmi_endpoint_type (const gchar *net_driver)
+{
+ if (!g_strcmp0 (net_driver, "qmi_wwan"))
+ return QMI_DATA_ENDPOINT_TYPE_HSUSB;
+ if (!g_strcmp0 (net_driver, "mhi_net"))
+ return QMI_DATA_ENDPOINT_TYPE_PCIE;
+ if (!g_strcmp0 (net_driver, "ipa"))
+ return QMI_DATA_ENDPOINT_TYPE_EMBEDDED;
+ if (!g_strcmp0 (net_driver, "bam-dmux"))
+ return QMI_DATA_ENDPOINT_TYPE_BAM_DMUX;
+
+ return QMI_DATA_ENDPOINT_TYPE_UNKNOWN;
}
/*****************************************************************************/
diff --git a/src/mm-modem-helpers-qmi.h b/src/mm-modem-helpers-qmi.h
index 8f3dc4f3..92e8f215 100644
--- a/src/mm-modem-helpers-qmi.h
+++ b/src/mm-modem-helpers-qmi.h
@@ -140,7 +140,7 @@ GError *qmi_mobile_equipment_error_from_verbose_call_end_reason_3gpp (QmiWdsVerb
/*****************************************************************************/
/* QMI/WDA to MM translations */
-QmiDataEndpointType mm_port_subsys_to_qmi_endpoint_type (MMPortSubsys subsys);
+QmiDataEndpointType mm_port_net_driver_to_qmi_endpoint_type (const gchar *net_driver);
/*****************************************************************************/
/* QMI/OMA to MM translations */
diff --git a/src/mm-port-qmi.c b/src/mm-port-qmi.c
index 0fedd80d..267c8991 100644
--- a/src/mm-port-qmi.c
+++ b/src/mm-port-qmi.c
@@ -67,7 +67,6 @@ struct _MMPortQmiPrivate {
/* timeout monitoring */
gulong timeout_monitoring_id;
/* endpoint info */
- gulong endpoint_info_signal_id;
QmiDataEndpointType endpoint_type;
gint endpoint_interface_number;
/* kernel data mode */
@@ -149,10 +148,7 @@ initialize_endpoint_info (MMPortQmi *self)
kernel_device = mm_port_peek_kernel_device (MM_PORT (self));
- if (!kernel_device)
- self->priv->endpoint_type = QMI_DATA_ENDPOINT_TYPE_UNDEFINED;
- else
- self->priv->endpoint_type = mm_port_subsys_to_qmi_endpoint_type (mm_port_get_subsys (MM_PORT (self)));
+ self->priv->endpoint_type = mm_port_net_driver_to_qmi_endpoint_type (self->priv->net_driver);
switch (self->priv->endpoint_type) {
case QMI_DATA_ENDPOINT_TYPE_HSUSB:
@@ -2578,6 +2574,7 @@ mm_port_qmi_set_net_driver (MMPortQmi *self,
g_assert (MM_IS_PORT_QMI (self));
g_assert (!self->priv->net_driver);
self->priv->net_driver = g_strdup (net_driver);
+ initialize_endpoint_info (self);
}
/*****************************************************************************/
@@ -2729,12 +2726,6 @@ static void
mm_port_qmi_init (MMPortQmi *self)
{
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, MM_TYPE_PORT_QMI, MMPortQmiPrivate);
-
- /* load endpoint info as soon as kernel device is set */
- self->priv->endpoint_info_signal_id = g_signal_connect (self,
- "notify::" MM_PORT_KERNEL_DEVICE,
- G_CALLBACK (initialize_endpoint_info),
- NULL);
}
#if defined WITH_QRTR
@@ -2784,11 +2775,6 @@ dispose (GObject *object)
MMPortQmi *self = MM_PORT_QMI (object);
GList *l;
- if (self->priv->endpoint_info_signal_id) {
- g_signal_handler_disconnect (self, self->priv->endpoint_info_signal_id);
- self->priv->endpoint_info_signal_id = 0;
- }
-
/* Deallocate all clients */
for (l = self->priv->services; l; l = g_list_next (l)) {
ServiceInfo *info = l->data;