summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2018-07-18 12:53:44 +0200
committerDan Williams <dcbw@redhat.com>2018-07-19 19:25:44 +0000
commit0a2060cc78150039bfd07d875016a52672dfe7bd (patch)
tree309b088fd95ce0c0f48f63163c7d7ffd26f555e2
parentdf8ead4808095fe1d0bd079234ddfd56e591fc4b (diff)
downloadModemManager-0a2060cc78150039bfd07d875016a52672dfe7bd.tar.gz
kerneldevice: allow loading physdev product string
-rw-r--r--src/kerneldevice/mm-kernel-device-generic.c9
-rw-r--r--src/kerneldevice/mm-kernel-device-udev.c16
-rw-r--r--src/kerneldevice/mm-kernel-device.c10
-rw-r--r--src/kerneldevice/mm-kernel-device.h2
4 files changed, 37 insertions, 0 deletions
diff --git a/src/kerneldevice/mm-kernel-device-generic.c b/src/kerneldevice/mm-kernel-device-generic.c
index 885bef171..34987e9d4 100644
--- a/src/kerneldevice/mm-kernel-device-generic.c
+++ b/src/kerneldevice/mm-kernel-device-generic.c
@@ -545,6 +545,14 @@ kernel_device_get_physdev_manufacturer (MMKernelDevice *self)
return MM_KERNEL_DEVICE_GENERIC (self)->priv->physdev_manufacturer;
}
+static const gchar *
+kernel_device_get_physdev_product (MMKernelDevice *self)
+{
+ g_return_val_if_fail (MM_IS_KERNEL_DEVICE_GENERIC (self), 0);
+
+ return MM_KERNEL_DEVICE_GENERIC (self)->priv->physdev_product;
+}
+
static gboolean
kernel_device_cmp (MMKernelDevice *a,
MMKernelDevice *b)
@@ -1081,6 +1089,7 @@ mm_kernel_device_generic_class_init (MMKernelDeviceGenericClass *klass)
kernel_device_class->get_physdev_sysfs_path = kernel_device_get_physdev_sysfs_path;
kernel_device_class->get_physdev_subsystem = kernel_device_get_physdev_subsystem;
kernel_device_class->get_physdev_manufacturer = kernel_device_get_physdev_manufacturer;
+ kernel_device_class->get_physdev_product = kernel_device_get_physdev_product;
kernel_device_class->get_interface_class = kernel_device_get_interface_class;
kernel_device_class->get_interface_subclass = kernel_device_get_interface_subclass;
kernel_device_class->get_interface_protocol = kernel_device_get_interface_protocol;
diff --git a/src/kerneldevice/mm-kernel-device-udev.c b/src/kerneldevice/mm-kernel-device-udev.c
index 2c2bc790d..730de98ef 100644
--- a/src/kerneldevice/mm-kernel-device-udev.c
+++ b/src/kerneldevice/mm-kernel-device-udev.c
@@ -439,6 +439,21 @@ kernel_device_get_physdev_manufacturer (MMKernelDevice *_self)
return g_udev_device_get_sysfs_attr (self->priv->physdev, "manufacturer");
}
+static const gchar *
+kernel_device_get_physdev_product (MMKernelDevice *_self)
+{
+ MMKernelDeviceUdev *self;
+
+ g_return_val_if_fail (MM_IS_KERNEL_DEVICE_UDEV (_self), NULL);
+
+ self = MM_KERNEL_DEVICE_UDEV (_self);
+ ensure_physdev (self);
+ if (!self->priv->physdev)
+ return NULL;
+
+ return g_udev_device_get_sysfs_attr (self->priv->physdev, "product");
+}
+
static gint
kernel_device_get_interface_class (MMKernelDevice *_self)
{
@@ -882,6 +897,7 @@ mm_kernel_device_udev_class_init (MMKernelDeviceUdevClass *klass)
kernel_device_class->get_physdev_sysfs_path = kernel_device_get_physdev_sysfs_path;
kernel_device_class->get_physdev_subsystem = kernel_device_get_physdev_subsystem;
kernel_device_class->get_physdev_manufacturer = kernel_device_get_physdev_manufacturer;
+ kernel_device_class->get_physdev_product = kernel_device_get_physdev_product;
kernel_device_class->get_interface_class = kernel_device_get_interface_class;
kernel_device_class->get_interface_subclass = kernel_device_get_interface_subclass;
kernel_device_class->get_interface_protocol = kernel_device_get_interface_protocol;
diff --git a/src/kerneldevice/mm-kernel-device.c b/src/kerneldevice/mm-kernel-device.c
index c4a6d8db7..c9c9139a3 100644
--- a/src/kerneldevice/mm-kernel-device.c
+++ b/src/kerneldevice/mm-kernel-device.c
@@ -123,6 +123,16 @@ mm_kernel_device_get_physdev_manufacturer (MMKernelDevice *self)
NULL);
}
+const gchar *
+mm_kernel_device_get_physdev_product (MMKernelDevice *self)
+{
+ g_return_val_if_fail (MM_IS_KERNEL_DEVICE (self), NULL);
+
+ return (MM_KERNEL_DEVICE_GET_CLASS (self)->get_physdev_product ?
+ MM_KERNEL_DEVICE_GET_CLASS (self)->get_physdev_product (self) :
+ NULL);
+}
+
gint
mm_kernel_device_get_interface_class (MMKernelDevice *self)
{
diff --git a/src/kerneldevice/mm-kernel-device.h b/src/kerneldevice/mm-kernel-device.h
index b50e213c4..2493b87ae 100644
--- a/src/kerneldevice/mm-kernel-device.h
+++ b/src/kerneldevice/mm-kernel-device.h
@@ -52,6 +52,7 @@ struct _MMKernelDeviceClass {
const gchar * (* get_physdev_sysfs_path) (MMKernelDevice *self);
const gchar * (* get_physdev_subsystem) (MMKernelDevice *self);
const gchar * (* get_physdev_manufacturer) (MMKernelDevice *self);
+ const gchar * (* get_physdev_product) (MMKernelDevice *self);
gboolean (* cmp) (MMKernelDevice *a, MMKernelDevice *b);
@@ -86,6 +87,7 @@ guint16 mm_kernel_device_get_physdev_pid (MMKernelDevice *self);
const gchar *mm_kernel_device_get_physdev_sysfs_path (MMKernelDevice *self);
const gchar *mm_kernel_device_get_physdev_subsystem (MMKernelDevice *self);
const gchar *mm_kernel_device_get_physdev_manufacturer (MMKernelDevice *self);
+const gchar *mm_kernel_device_get_physdev_product (MMKernelDevice *self);
gboolean mm_kernel_device_cmp (MMKernelDevice *a, MMKernelDevice *b);