aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoic Poulain <loic.poulain@linaro.org>2020-11-24 15:33:29 +0100
committerLoic Poulain <loic.poulain@linaro.org>2020-12-16 15:17:32 +0100
commitba27c317bec0c47c453b4e10667f2122e9fefa39 (patch)
treee634a713b8070d0966e9f71a7d81ffa3ec044b7f
parentd4383e89dc921941acb5b56aa3fc85b492f027ac (diff)
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 <loic.poulain@linaro.org>
-rw-r--r--src/libqmi-glib/qmi-utils.c13
1 files changed, 12 insertions, 1 deletions
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);