diff options
author | Ben Chan <benchan@chromium.org> | 2017-09-19 22:25:34 -0700 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2017-10-07 10:05:40 +0200 |
commit | 3a0d658b5d8eef55fdc5ad8c07dcb2c7f2e86453 (patch) | |
tree | 04e149b543131b895c963300bcac05e8f535b6c8 /src/kerneldevice/mm-kernel-device-udev.c | |
parent | bee3f063b44ef4e1476663a30ec673d69b47a442 (diff) |
kerneldevice: add method to retrieve manufacturer information
A USB device may report its manufacturer through the Manufacturer String
Descriptor. That information can sometimes be useful, e.g. MBIM doesn't
define a standard command to query the manufacturer. This patch adds a
method to MMKernelDevice to retrieve the manufacturer information from
the underlying physical device, which can later be used by
MMBroadbandModemMbim to report the manufacturer of a MBIM modem.
Diffstat (limited to 'src/kerneldevice/mm-kernel-device-udev.c')
-rw-r--r-- | src/kerneldevice/mm-kernel-device-udev.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/kerneldevice/mm-kernel-device-udev.c b/src/kerneldevice/mm-kernel-device-udev.c index a5e5c80b..c07d7b44 100644 --- a/src/kerneldevice/mm-kernel-device-udev.c +++ b/src/kerneldevice/mm-kernel-device-udev.c @@ -384,6 +384,21 @@ kernel_device_get_physdev_pid (MMKernelDevice *_self) } static const gchar * +kernel_device_get_physdev_manufacturer (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, "manufacturer"); +} + +static const gchar * kernel_device_get_parent_sysfs_path (MMKernelDevice *_self) { MMKernelDeviceUdev *self; @@ -864,6 +879,7 @@ mm_kernel_device_udev_class_init (MMKernelDeviceUdevClass *klass) kernel_device_class->get_physdev_uid = kernel_device_get_physdev_uid; 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_manufacturer = kernel_device_get_physdev_manufacturer; kernel_device_class->get_parent_sysfs_path = kernel_device_get_parent_sysfs_path; kernel_device_class->is_candidate = kernel_device_is_candidate; kernel_device_class->cmp = kernel_device_cmp; |