aboutsummaryrefslogtreecommitdiff
path: root/src/mm-device.c
diff options
context:
space:
mode:
authorDaniele Palmas <dnlplm@gmail.com>2022-05-04 11:49:03 +0200
committerDaniele Palmas <dnlplm@gmail.com>2022-05-24 09:22:06 +0200
commit654c5f5014f90df7eb239b83ac88a1065e169731 (patch)
treee3b4ae95e450acdcd5d62fd93d12ad734bd253c9 /src/mm-device.c
parentff5840c3c7cd6b9de8881d4c081dfa9bc5e43b11 (diff)
base-modem: add subsystem vendor ID property
Subsystem vendor ID can be used for identifying PCI modems, so expose the property.
Diffstat (limited to 'src/mm-device.c')
-rw-r--r--src/mm-device.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/mm-device.c b/src/mm-device.c
index c9fa5d05..33528946 100644
--- a/src/mm-device.c
+++ b/src/mm-device.c
@@ -66,6 +66,8 @@ struct _MMDevicePrivate {
/* If USB, device vid/pid */
guint16 vendor;
guint16 product;
+ /* Subsystem vendor ID for PCI devices */
+ guint16 subsystem_vendor;
/* Kernel drivers managing this device */
gchar **drivers;
@@ -241,6 +243,9 @@ mm_device_grab_port (MMDevice *self,
self->priv->product = mm_kernel_device_get_physdev_pid (kernel_port);
}
+ if (!self->priv->subsystem_vendor)
+ self->priv->subsystem_vendor = mm_kernel_device_get_physdev_subsystem_vid (kernel_port);
+
/* Add new port driver */
add_port_driver (self, kernel_port);
@@ -363,6 +368,9 @@ export_modem (MMDevice *self)
mm_obj_dbg (self, " vid:pid: 0x%04X:0x%04X",
(mm_base_modem_get_vendor_id (self->priv->modem) & 0xFFFF),
(mm_base_modem_get_product_id (self->priv->modem) & 0xFFFF));
+ if (mm_base_modem_get_subsystem_vendor_id (self->priv->modem))
+ mm_obj_dbg (self, " subsystem vid: 0x%04X",
+ (mm_base_modem_get_subsystem_vendor_id (self->priv->modem) & 0xFFFF));
if (self->priv->virtual)
mm_obj_dbg (self, " virtual");
@@ -515,6 +523,12 @@ mm_device_get_product (MMDevice *self)
return self->priv->product;
}
+guint16
+mm_device_get_subsystem_vendor (MMDevice *self)
+{
+ return self->priv->subsystem_vendor;
+}
+
void
mm_device_set_plugin (MMDevice *self,
GObject *plugin)