diff options
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 64 |
1 files changed, 42 insertions, 22 deletions
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index 5a347e64..75c07dd8 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -262,33 +262,24 @@ mm_broadband_modem_qmi_get_port_qmi_for_data (MMBroadbandModemQmi *self, } static MMPortQmi * -peek_port_qmi_for_data (MMBroadbandModemQmi *self, - MMPort *data, - QmiSioPort *out_sio_port, - GError **error) +peek_port_qmi_for_data_mhi (MMBroadbandModemQmi *self, + MMPort *data, + QmiSioPort *out_sio_port, + GError **error) +{ + return mm_broadband_modem_qmi_peek_port_qmi (self); +} + +static MMPortQmi * +peek_port_qmi_for_data_usb (MMBroadbandModemQmi *self, + MMPort *data, + QmiSioPort *out_sio_port, + GError **error) { GList *cdc_wdm_qmi_ports; GList *l; const gchar *net_port_parent_path; MMPortQmi *found = NULL; - const gchar *net_port_driver; - - g_assert (MM_IS_BROADBAND_MODEM_QMI (self)); - g_assert (mm_port_get_subsys (data) == MM_PORT_SUBSYS_NET); - - net_port_driver = mm_kernel_device_get_driver (mm_port_peek_kernel_device (data)); - if (g_strcmp0 (net_port_driver, "qmi_wwan") != 0 && g_strcmp0 (net_port_driver, "mhi_net")) { - g_set_error (error, - MM_CORE_ERROR, - MM_CORE_ERROR_FAILED, - "Unsupported QMI kernel driver for 'net/%s': %s", - mm_port_get_device (data), - net_port_driver); - return NULL; - } - - if (!g_strcmp0 (net_port_driver, "mhi_net")) - return mm_broadband_modem_qmi_peek_port_qmi (self); net_port_parent_path = mm_kernel_device_get_interface_sysfs_path (mm_port_peek_kernel_device (data)); if (!net_port_parent_path) { @@ -327,6 +318,35 @@ peek_port_qmi_for_data (MMBroadbandModemQmi *self, return found; } + +static MMPortQmi * +peek_port_qmi_for_data (MMBroadbandModemQmi *self, + MMPort *data, + QmiSioPort *out_sio_port, + GError **error) +{ + const gchar *net_port_driver; + + g_assert (MM_IS_BROADBAND_MODEM_QMI (self)); + g_assert (mm_port_get_subsys (data) == MM_PORT_SUBSYS_NET); + + net_port_driver = mm_kernel_device_get_driver (mm_port_peek_kernel_device (data)); + + if (!g_strcmp0 (net_port_driver, "qmi_wwan")) + return peek_port_qmi_for_data_usb (self, data, out_sio_port, error); + + if (!g_strcmp0 (net_port_driver, "mhi_net")) + return peek_port_qmi_for_data_mhi (self, data, out_sio_port, error); + + g_set_error (error, + MM_CORE_ERROR, + MM_CORE_ERROR_FAILED, + "Unsupported QMI kernel driver for 'net/%s': %s", + mm_port_get_device (data), + net_port_driver); + return NULL; +} + MMPortQmi * mm_broadband_modem_qmi_peek_port_qmi_for_data (MMBroadbandModemQmi *self, MMPort *data, |