base-modem: create modem for QRTR subsystem
Add support for QRTR devices so modems can be created based on ports using the QRTR subsystem.
This commit is contained in:

committed by
Aleksander Morgado

parent
5f1bac5cf8
commit
f82f50fb13
@@ -30,6 +30,9 @@
|
|||||||
|
|
||||||
#include "mm-context.h"
|
#include "mm-context.h"
|
||||||
#include "mm-base-modem.h"
|
#include "mm-base-modem.h"
|
||||||
|
#if defined WITH_QMI && QMI_QRTR_SUPPORTED
|
||||||
|
#include "mm-kernel-device-qrtr.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "mm-log-object.h"
|
#include "mm-log-object.h"
|
||||||
#include "mm-port-enums-types.h"
|
#include "mm-port-enums-types.h"
|
||||||
@@ -263,6 +266,24 @@ base_modem_create_rpmsg_port (MMBaseModem *self,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined WITH_QRTR
|
||||||
|
static MMPort *
|
||||||
|
base_modem_create_qrtr_port (MMBaseModem *self,
|
||||||
|
const gchar *name,
|
||||||
|
MMKernelDevice *kernel_device,
|
||||||
|
MMPortType ptype)
|
||||||
|
{
|
||||||
|
if (ptype == MM_PORT_TYPE_QMI) {
|
||||||
|
g_autoptr(QrtrNode) node = NULL;
|
||||||
|
|
||||||
|
g_assert (MM_IS_KERNEL_DEVICE_QRTR (kernel_device));
|
||||||
|
node = mm_kernel_device_qrtr_get_node (MM_KERNEL_DEVICE_QRTR (kernel_device));
|
||||||
|
return MM_PORT (mm_port_qmi_new_from_node (name, node));
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static MMPort *
|
static MMPort *
|
||||||
base_modem_create_virtual_port (MMBaseModem *self,
|
base_modem_create_virtual_port (MMBaseModem *self,
|
||||||
const gchar *name)
|
const gchar *name)
|
||||||
@@ -307,6 +328,10 @@ base_modem_internal_grab_port (MMBaseModem *self,
|
|||||||
port = base_modem_create_usbmisc_port (self, name, ptype);
|
port = base_modem_create_usbmisc_port (self, name, ptype);
|
||||||
else if (g_str_equal (subsys, "rpmsg"))
|
else if (g_str_equal (subsys, "rpmsg"))
|
||||||
port = base_modem_create_rpmsg_port (self, name, ptype);
|
port = base_modem_create_rpmsg_port (self, name, ptype);
|
||||||
|
#if defined WITH_QRTR
|
||||||
|
else if (g_str_equal (subsys, "qrtr"))
|
||||||
|
port = base_modem_create_qrtr_port (self, name, kernel_device, ptype);
|
||||||
|
#endif
|
||||||
else if (g_str_equal (subsys, "virtual"))
|
else if (g_str_equal (subsys, "virtual"))
|
||||||
port = base_modem_create_virtual_port (self, name);
|
port = base_modem_create_virtual_port (self, name);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user