diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-modem-helpers-qmi.c | 35 | ||||
-rw-r--r-- | src/mm-modem-helpers-qmi.h | 2 | ||||
-rw-r--r-- | src/mm-port-qmi.c | 18 |
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; |