From 5f1bac5cf80e08ac3ca77c45f6fae75eead4da1d Mon Sep 17 00:00:00 2001 From: Andrew Lassalle Date: Wed, 25 Nov 2020 14:42:57 -0800 Subject: port-probe: create port-qmi using a QRTR node For QRTR devices, create the qmi ports using the QRTR node. --- src/mm-port-probe.c | 31 +++++++++++++++++++++++-------- 1 file 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); -- cgit v1.2.3