aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Lassalle <andrewlassalle@chromium.org>2020-11-25 14:42:57 -0800
committerAleksander Morgado <aleksander@aleksander.es>2021-04-14 11:27:27 +0200
commit5f1bac5cf80e08ac3ca77c45f6fae75eead4da1d (patch)
treea0a14c7a3051f739dfd57b24149c70d95add428f
parentaeed8c9e5b41c6d911c56ef3dd4c86584e833f3e (diff)
port-probe: create port-qmi using a QRTR node
For QRTR devices, create the qmi ports using the QRTR node.
-rw-r--r--src/mm-port-probe.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/mm-port-probe.c b/src/mm-port-probe.c
index d4bffb3e..f0efce59 100644
--- a/src/mm-port-probe.c
+++ b/src/mm-port-probe.c
@@ -42,6 +42,10 @@
#include "mm-port-qmi.h"
#endif
+#if defined WITH_QRTR
+#include "mm-kernel-device-qrtr.h"
+#endif
+
#if defined WITH_MBIM
#include "mm-port-mbim.h"
#endif
@@ -491,22 +495,33 @@ wdm_probe_qmi (MMPortProbe *self)
ctx = g_task_get_task_data (self->priv->task);
#if defined WITH_QMI
+ /* Create a port and try to open it */
+ mm_obj_dbg (self, "probing QMI...");
+
+#if defined WITH_QRTR
+ if (MM_IS_KERNEL_DEVICE_QRTR (self->priv->port)) {
+ g_autoptr(QrtrNode) node = NULL;
+
+ node = mm_kernel_device_qrtr_get_node (MM_KERNEL_DEVICE_QRTR (self->priv->port));
+
+ /* Will set MM_PORT_SUBSYS_QRTR when creating the mm-port */
+ ctx->port_qmi = mm_port_qmi_new_from_node (mm_kernel_device_get_name (self->priv->port), node);
+ } else
+#endif /* WITH_QRTR */
{
MMPortSubsys subsys = MM_PORT_SUBSYS_USBMISC;
- mm_obj_dbg (self, "probing QMI...");
-
if (g_str_equal (mm_kernel_device_get_subsystem (self->priv->port), "rpmsg"))
subsys = MM_PORT_SUBSYS_RPMSG;
- /* Create a port and try to open it */
ctx->port_qmi = mm_port_qmi_new (mm_kernel_device_get_name (self->priv->port), subsys);
- mm_port_qmi_open (ctx->port_qmi,
- FALSE,
- NULL,
- (GAsyncReadyCallback) port_qmi_open_ready,
- self);
}
+
+ mm_port_qmi_open (ctx->port_qmi,
+ FALSE,
+ NULL,
+ (GAsyncReadyCallback) port_qmi_open_ready,
+ self);
#else
/* If not compiled with QMI support, just assume we won't have any QMI port */
mm_port_probe_set_result_qmi (self, FALSE);