Merge request !1287 from 'sushrut-branch'

kernel-device, generic: add subsystem device ID support

https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1287
This commit is contained in:
Dan Williams
2025-02-21 14:01:51 +00:00
54 changed files with 126 additions and 0 deletions
@@ -69,6 +69,7 @@ struct _MMKernelDeviceGenericPrivate {
guint16 physdev_vid;
guint16 physdev_pid;
guint16 physdev_subsystem_vid;
guint16 physdev_subsystem_pid;
guint16 physdev_revision;
gchar *physdev_manufacturer;
gchar *physdev_product;
@@ -402,6 +403,7 @@ preload_contents_pci (MMKernelDeviceGeneric *self)
self->priv->physdev_vid = read_sysfs_attribute_as_hex (self->priv->physdev_sysfs_path, "vendor");
self->priv->physdev_pid = read_sysfs_attribute_as_hex (self->priv->physdev_sysfs_path, "device");
self->priv->physdev_subsystem_vid = read_sysfs_attribute_as_hex (self->priv->physdev_sysfs_path, "subsystem_vendor");
self->priv->physdev_subsystem_pid = read_sysfs_attribute_as_hex (self->priv->physdev_sysfs_path, "subsystem_device");
self->priv->physdev_revision = read_sysfs_attribute_as_hex (self->priv->physdev_sysfs_path, "revision");
/* stop traversing as soon as the physical device is found */
break;
@@ -585,6 +587,8 @@ preload_contents (MMKernelDeviceGeneric *self)
mm_obj_dbg (self, " product: %04x", self->priv->physdev_pid);
if (self->priv->physdev_subsystem_vid)
mm_obj_dbg (self, " subsystem vendor: %04x", self->priv->physdev_subsystem_vid);
if (self->priv->physdev_subsystem_pid)
mm_obj_dbg (self, " subsystem device: %04x", self->priv->physdev_subsystem_pid);
if (self->priv->physdev_revision)
mm_obj_dbg (self, " revision: %04x", self->priv->physdev_revision);
if (self->priv->physdev_manufacturer)
@@ -704,6 +708,12 @@ kernel_device_get_physdev_subsystem_vid (MMKernelDevice *self)
return MM_KERNEL_DEVICE_GENERIC (self)->priv->physdev_subsystem_vid;
}
static guint16
kernel_device_get_physdev_subsystem_pid (MMKernelDevice *self)
{
return MM_KERNEL_DEVICE_GENERIC (self)->priv->physdev_subsystem_pid;
}
static guint16
kernel_device_get_physdev_revision (MMKernelDevice *self)
{
@@ -827,6 +837,9 @@ check_condition (MMKernelDeviceGeneric *self,
else if (g_str_equal (attribute, "subsystem_vendor"))
result = ((mm_get_uint_from_hex_str (match->value, &val)) &&
((mm_kernel_device_get_physdev_subsystem_vid (MM_KERNEL_DEVICE (self)) == val) == condition_equal));
else if (g_str_equal (attribute, "subsystem_device"))
result = ((mm_get_uint_from_hex_str (match->value, &val)) &&
((mm_kernel_device_get_physdev_subsystem_pid (MM_KERNEL_DEVICE (self)) == val) == condition_equal));
/* manufacturer in the physdev */
else if (g_str_equal (attribute, "manufacturer"))
result = ((self->priv->physdev_manufacturer && g_str_equal (self->priv->physdev_manufacturer, match->value)) == condition_equal);
@@ -1214,6 +1227,7 @@ mm_kernel_device_generic_class_init (MMKernelDeviceGenericClass *klass)
kernel_device_class->get_physdev_vid = kernel_device_get_physdev_vid;
kernel_device_class->get_physdev_pid = kernel_device_get_physdev_pid;
kernel_device_class->get_physdev_subsystem_vid = kernel_device_get_physdev_subsystem_vid;
kernel_device_class->get_physdev_subsystem_pid = kernel_device_get_physdev_subsystem_pid;
kernel_device_class->get_physdev_revision = kernel_device_get_physdev_revision;
kernel_device_class->get_physdev_sysfs_path = kernel_device_get_physdev_sysfs_path;
kernel_device_class->get_physdev_subsystem = kernel_device_get_physdev_subsystem;
+11
View File
@@ -49,6 +49,7 @@ struct _MMKernelDeviceUdevPrivate {
guint16 vendor;
guint16 product;
guint16 subsystem_vendor;
guint16 subsystem_device;
guint16 revision;
gchar *driver;
@@ -188,6 +189,7 @@ preload_contents_pci (MMKernelDeviceUdev *self)
self->priv->vendor = udev_device_get_sysfs_attr_as_hex (iter, "vendor");
self->priv->product = udev_device_get_sysfs_attr_as_hex (iter, "device");
self->priv->subsystem_vendor = udev_device_get_sysfs_attr_as_hex (iter, "subsystem_vendor");
self->priv->subsystem_device = udev_device_get_sysfs_attr_as_hex (iter, "subsystem_device");
self->priv->revision = udev_device_get_sysfs_attr_as_hex (iter, "revision");
self->priv->physdev = g_object_ref (iter);
/* stop traversing as soon as the physical device is found */
@@ -300,6 +302,8 @@ preload_contents (MMKernelDeviceUdev *self)
mm_obj_dbg (self, " product: %04x", self->priv->product);
if (self->priv->subsystem_vendor)
mm_obj_dbg (self, " subsystem vendor: %04x", self->priv->subsystem_vendor);
if (self->priv->subsystem_device)
mm_obj_dbg (self, " subsystem device: %04x", self->priv->subsystem_device);
if (self->priv->revision)
mm_obj_dbg (self, " revision: %04x", self->priv->revision);
}
@@ -417,6 +421,12 @@ kernel_device_get_physdev_subsystem_vid (MMKernelDevice *self)
return MM_KERNEL_DEVICE_UDEV (self)->priv->subsystem_vendor;
}
static guint16
kernel_device_get_physdev_subsystem_pid (MMKernelDevice *self)
{
return MM_KERNEL_DEVICE_UDEV (self)->priv->subsystem_device;
}
static guint16
kernel_device_get_physdev_revision (MMKernelDevice *self)
{
@@ -816,6 +826,7 @@ mm_kernel_device_udev_class_init (MMKernelDeviceUdevClass *klass)
kernel_device_class->get_physdev_vid = kernel_device_get_physdev_vid;
kernel_device_class->get_physdev_pid = kernel_device_get_physdev_pid;
kernel_device_class->get_physdev_subsystem_vid = kernel_device_get_physdev_subsystem_vid;
kernel_device_class->get_physdev_subsystem_pid = kernel_device_get_physdev_subsystem_pid;
kernel_device_class->get_physdev_revision = kernel_device_get_physdev_revision;
kernel_device_class->get_physdev_sysfs_path = kernel_device_get_physdev_sysfs_path;
kernel_device_class->get_physdev_subsystem = kernel_device_get_physdev_subsystem;
+12
View File
@@ -117,6 +117,18 @@ mm_kernel_device_get_physdev_subsystem_vid (MMKernelDevice *self)
0);
}
guint16
mm_kernel_device_get_physdev_subsystem_pid (MMKernelDevice *self)
{
/* when a lower device is available, physdev info taken from it */
if (self->priv->lower_device)
return mm_kernel_device_get_physdev_subsystem_pid (self->priv->lower_device);
return (MM_KERNEL_DEVICE_GET_CLASS (self)->get_physdev_subsystem_pid ?
MM_KERNEL_DEVICE_GET_CLASS (self)->get_physdev_subsystem_pid (self) :
0);
}
guint16
mm_kernel_device_get_physdev_pid (MMKernelDevice *self)
{
+2
View File
@@ -56,6 +56,7 @@ struct _MMKernelDeviceClass {
guint16 (* get_physdev_vid) (MMKernelDevice *self);
guint16 (* get_physdev_pid) (MMKernelDevice *self);
guint16 (* get_physdev_subsystem_vid) (MMKernelDevice *self);
guint16 (* get_physdev_subsystem_pid) (MMKernelDevice *self);
guint16 (* get_physdev_revision) (MMKernelDevice *self);
const gchar * (* get_physdev_sysfs_path) (MMKernelDevice *self);
const gchar * (* get_physdev_subsystem) (MMKernelDevice *self);
@@ -93,6 +94,7 @@ const gchar *mm_kernel_device_get_physdev_uid (MMKernelDevice *self);
guint16 mm_kernel_device_get_physdev_vid (MMKernelDevice *self);
guint16 mm_kernel_device_get_physdev_pid (MMKernelDevice *self);
guint16 mm_kernel_device_get_physdev_subsystem_vid (MMKernelDevice *self);
guint16 mm_kernel_device_get_physdev_subsystem_pid (MMKernelDevice *self);
guint16 mm_kernel_device_get_physdev_revision (MMKernelDevice *self);
const gchar *mm_kernel_device_get_physdev_sysfs_path (MMKernelDevice *self);
const gchar *mm_kernel_device_get_physdev_subsystem (MMKernelDevice *self);
+25
View File
@@ -60,6 +60,8 @@ enum {
PROP_VENDOR_ID,
PROP_PRODUCT_ID,
PROP_SUBSYSTEM_VENDOR_ID,
PROP_SUBSYSTEM_DEVICE_ID,
PROP_CONNECTION,
PROP_REPROBE,
PROP_DATA_NET_SUPPORTED,
@@ -94,6 +96,7 @@ struct _MMBaseModemPrivate {
guint vendor_id;
guint product_id;
guint subsystem_vendor_id;
guint subsystem_device_id;
gboolean hotplugged;
gboolean valid;
@@ -2119,6 +2122,14 @@ mm_base_modem_get_subsystem_vendor_id (MMBaseModem *self)
return self->priv->subsystem_vendor_id;
}
guint
mm_base_modem_get_subsystem_device_id (MMBaseModem *self)
{
g_return_val_if_fail (MM_IS_BASE_MODEM (self), 0);
return self->priv->subsystem_device_id;
}
/*****************************************************************************/
static gboolean
@@ -2285,6 +2296,9 @@ set_property (GObject *object,
case PROP_SUBSYSTEM_VENDOR_ID:
self->priv->subsystem_vendor_id = g_value_get_uint (value);
break;
case PROP_SUBSYSTEM_DEVICE_ID:
self->priv->subsystem_device_id = g_value_get_uint (value);
break;
case PROP_CONNECTION:
g_clear_object (&self->priv->connection);
self->priv->connection = g_value_dup_object (value);
@@ -2340,6 +2354,9 @@ get_property (GObject *object,
case PROP_SUBSYSTEM_VENDOR_ID:
g_value_set_uint (value, self->priv->subsystem_vendor_id);
break;
case PROP_SUBSYSTEM_DEVICE_ID:
g_value_set_uint (value, self->priv->subsystem_device_id);
break;
case PROP_CONNECTION:
g_value_set_object (value, self->priv->connection);
break;
@@ -2512,6 +2529,14 @@ mm_base_modem_class_init (MMBaseModemClass *klass)
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
g_object_class_install_property (object_class, PROP_SUBSYSTEM_VENDOR_ID, properties[PROP_SUBSYSTEM_VENDOR_ID]);
properties[PROP_SUBSYSTEM_DEVICE_ID] =
g_param_spec_uint (MM_BASE_MODEM_SUBSYSTEM_DEVICE_ID,
"Hardware subsystem device ID",
"Hardware subsystem device ID. Available for pci devices.",
0, G_MAXUINT, 0,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
g_object_class_install_property (object_class, PROP_SUBSYSTEM_DEVICE_ID, properties[PROP_SUBSYSTEM_DEVICE_ID]);
properties[PROP_CONNECTION] =
g_param_spec_object (MM_BASE_MODEM_CONNECTION,
"Connection",
+2
View File
@@ -66,6 +66,7 @@ typedef struct _MMBaseModemPrivate MMBaseModemPrivate;
#define MM_BASE_MODEM_VENDOR_ID "base-modem-vendor-id"
#define MM_BASE_MODEM_PRODUCT_ID "base-modem-product-id"
#define MM_BASE_MODEM_SUBSYSTEM_VENDOR_ID "base-modem-subsystem-vendor-id"
#define MM_BASE_MODEM_SUBSYSTEM_DEVICE_ID "base-modem-subsystem-device-id"
#define MM_BASE_MODEM_REPROBE "base-modem-reprobe"
#define MM_BASE_MODEM_DATA_NET_SUPPORTED "base-modem-data-net-supported"
#define MM_BASE_MODEM_DATA_TTY_SUPPORTED "base-modem-data-tty-supported"
@@ -211,6 +212,7 @@ const gchar *mm_base_modem_get_plugin (MMBaseModem *self);
guint mm_base_modem_get_vendor_id (MMBaseModem *self);
guint mm_base_modem_get_product_id (MMBaseModem *self);
guint mm_base_modem_get_subsystem_vendor_id (MMBaseModem *self);
guint mm_base_modem_get_subsystem_device_id (MMBaseModem *self);
GCancellable *mm_base_modem_peek_cancellable (MMBaseModem *self);
+12
View File
@@ -72,6 +72,8 @@ struct _MMDevicePrivate {
guint16 product;
/* Subsystem vendor ID for PCI devices */
guint16 subsystem_vendor;
/* Subsystem device ID for PCI devices */
guint16 subsystem_device;
/* Kernel drivers managing this device */
gchar **drivers;
@@ -269,6 +271,9 @@ mm_device_grab_port (MMDevice *self,
if (!self->priv->subsystem_vendor)
self->priv->subsystem_vendor = mm_kernel_device_get_physdev_subsystem_vid (kernel_port);
if (!self->priv->subsystem_device)
self->priv->subsystem_device = mm_kernel_device_get_physdev_subsystem_pid (kernel_port);
/* Add new port driver */
add_port_driver (self, kernel_port);
@@ -614,6 +619,13 @@ mm_device_get_subsystem_vendor (MMDevice *self)
return self->priv->subsystem_vendor;
}
guint16
mm_device_get_subsystem_device (MMDevice *self)
{
return self->priv->subsystem_device;
}
void
mm_device_set_plugin (MMDevice *self,
GObject *plugin)
+2
View File
@@ -100,6 +100,8 @@ const gchar **mm_device_get_drivers (MMDevice *self);
guint16 mm_device_get_vendor (MMDevice *self);
guint16 mm_device_get_product (MMDevice *self);
guint16 mm_device_get_subsystem_vendor (MMDevice *self);
guint16 mm_device_get_subsystem_device (MMDevice *self);
void mm_device_set_plugin (MMDevice *self,
GObject *plugin);
GObject *mm_device_peek_plugin (MMDevice *self);
+1
View File
@@ -956,6 +956,7 @@ mm_plugin_create_modem (MMPlugin *self,
mm_device_get_vendor (device),
mm_device_get_product (device),
mm_device_get_subsystem_vendor (device),
mm_device_get_subsystem_device (device),
port_probes,
error);
if (!modem)
+1
View File
@@ -111,6 +111,7 @@ struct _MMPluginClass {
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error);
@@ -55,6 +55,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -42,6 +42,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
@@ -40,6 +40,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
@@ -36,6 +36,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
@@ -143,6 +143,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -375,6 +375,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -40,6 +40,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -49,6 +49,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -50,6 +50,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -54,6 +54,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -44,6 +44,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -35,6 +35,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -624,6 +624,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -40,6 +40,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -43,6 +43,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -37,6 +37,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
@@ -187,6 +187,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -44,6 +44,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
@@ -38,6 +38,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -38,6 +38,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -40,6 +40,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
@@ -45,6 +45,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
@@ -46,6 +46,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -47,6 +47,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
@@ -40,6 +40,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -50,6 +50,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -115,6 +115,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -38,6 +38,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -80,6 +80,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
@@ -45,6 +45,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -45,6 +45,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -47,6 +47,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -41,6 +41,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
@@ -40,6 +40,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -49,6 +49,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -42,6 +42,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -49,6 +49,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -45,6 +45,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -40,6 +40,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -37,6 +37,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -41,6 +41,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -44,6 +44,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -189,6 +189,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{
+1
View File
@@ -65,6 +65,7 @@ create_modem (MMPlugin *self,
guint16 vendor,
guint16 product,
guint16 subsystem_vendor,
guint16 subsystem_device,
GList *probes,
GError **error)
{