From ba27c317bec0c47c453b4e10667f2122e9fefa39 Mon Sep 17 00:00:00 2001 From: Loic Poulain Date: Tue, 24 Nov 2020 15:33:29 +0100 Subject: libqmi-glib,utils: Add mhi_uci device/driver support mhi_uci is the Linux subsystem/driver exposing raw PCIe/MHI channels to userspace via character devices. This channels can serve as transport for various protocols, including QMUX, MBIM, etc... Signed-off-by: Loic Poulain --- src/libqmi-glib/qmi-utils.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/libqmi-glib/qmi-utils.c b/src/libqmi-glib/qmi-utils.c index f7d186c..d6c1b3e 100644 --- a/src/libqmi-glib/qmi-utils.c +++ b/src/libqmi-glib/qmi-utils.c @@ -440,7 +440,7 @@ static gchar * utils_get_driver (const gchar *device_basename, GError **error) { - static const gchar *subsystems[] = { "usbmisc", "usb" }; + static const gchar *subsystems[] = { "usbmisc", "usb", "mhi_uci" }; guint i; gchar *driver = NULL; @@ -515,6 +515,17 @@ __qmi_utils_get_transport_type (const gchar *path, goto out; } + if (!g_strcmp0 (driver, "mhi_uci")) { + /* MHI/PCIe uci devices have protocol in their name */ + if (g_strrstr (device_basename, "QMI")) { + transport = __QMI_TRANSPORT_TYPE_QMUX; + goto out; + } else if (g_strrstr (device_basename, "MBIM")) { + transport = __QMI_TRANSPORT_TYPE_MBIM; + goto out; + } + } + g_set_error (&inner_error, QMI_CORE_ERROR, QMI_CORE_ERROR_FAILED, "unexpected driver detected: %s", driver); -- cgit v1.2.3