diff options
author | Stephan Gerhold <stephan.gerhold@kernkonzept.com> | 2022-08-11 15:50:17 +0200 |
---|---|---|
committer | Stephan Gerhold <stephan.gerhold@kernkonzept.com> | 2022-08-18 15:35:35 +0200 |
commit | 23c027a7a9b916aabc82e70d922b727aa70af89a (patch) | |
tree | e03d2759013f311b389df167cfe90759aaa1f3ee | |
parent | 4ab459109d558f5149062a0639e880482c61274f (diff) |
broadband-modem-qmi: split up peek_port_qmi_for_data()
peek_port_qmi_for_data() is currently quite confusing to read because it
mostly covers qmi_wwan while the mhi_net case returns early. Split this
up into separate functions per driver to make it less confusing, similar
to the variant in mm-broadband-modem-qmi-qcom-soc.
No functional change.
-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, |