From f6838c738aa178e026ee543abca6e36a8fa2fbec Mon Sep 17 00:00:00 2001 From: Richard Hughes Date: Tue, 29 Jan 2019 10:54:18 +0000 Subject: [PATCH] trivial: Add fu_udev_device_get_slot_depth() We'll need this for another plugin soon. --- plugins/nvme/fu-nvme-device.c | 20 +------------------- src/fu-udev-device.c | 18 ++++++++++++++++++ src/fu-udev-device.h | 2 ++ 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/plugins/nvme/fu-nvme-device.c b/plugins/nvme/fu-nvme-device.c index 1470f5a1d..d39609b14 100644 --- a/plugins/nvme/fu-nvme-device.c +++ b/plugins/nvme/fu-nvme-device.c @@ -305,24 +305,6 @@ fu_nvme_device_parse_cns (FuNvmeDevice *self, const guint8 *buf, gsize sz, GErro return TRUE; } -static guint -fu_nvme_device_pci_slot_depth (FuNvmeDevice *self) -{ - GUdevDevice *udev_device = fu_udev_device_get_dev (FU_UDEV_DEVICE (self)); - g_autoptr(GUdevDevice) device_tmp = NULL; - - device_tmp = g_udev_device_get_parent_with_subsystem (udev_device, "pci", NULL); - if (device_tmp == NULL) - return 0; - for (guint i = 0; i < 0xff; i++) { - g_autoptr(GUdevDevice) parent = g_udev_device_get_parent (device_tmp); - if (parent == NULL) - return i; - g_set_object (&device_tmp, parent); - } - return 0; -} - static void fu_nvme_device_dump (const gchar *title, const guint8 *buf, gsize sz) { @@ -369,7 +351,7 @@ fu_nvme_device_probe (FuUdevDevice *device, GError **error) return FALSE; /* look at the PCI depth to work out if in an external enclosure */ - self->pci_depth = fu_nvme_device_pci_slot_depth (self); + self->pci_depth = fu_udev_device_get_slot_depth (device, "pci"); if (self->pci_depth <= 2) fu_device_add_flag (FU_DEVICE (self), FWUPD_DEVICE_FLAG_INTERNAL); diff --git a/src/fu-udev-device.c b/src/fu-udev-device.c index c888ebdc3..e9229c641 100644 --- a/src/fu-udev-device.c +++ b/src/fu-udev-device.c @@ -251,6 +251,24 @@ fu_udev_device_set_dev (FuUdevDevice *self, GUdevDevice *udev_device) return; } +guint +fu_udev_device_get_slot_depth (FuUdevDevice *self, const gchar *subsystem) +{ + GUdevDevice *udev_device = fu_udev_device_get_dev (FU_UDEV_DEVICE (self)); + g_autoptr(GUdevDevice) device_tmp = NULL; + + device_tmp = g_udev_device_get_parent_with_subsystem (udev_device, subsystem, NULL); + if (device_tmp == NULL) + return 0; + for (guint i = 0; i < 0xff; i++) { + g_autoptr(GUdevDevice) parent = g_udev_device_get_parent (device_tmp); + if (parent == NULL) + return i; + g_set_object (&device_tmp, parent); + } + return 0; +} + static void fu_udev_device_incorporate (FuDevice *self, FuDevice *donor) { diff --git a/src/fu-udev-device.h b/src/fu-udev-device.h index be8e1e03c..efb76b9f9 100644 --- a/src/fu-udev-device.h +++ b/src/fu-udev-device.h @@ -32,6 +32,8 @@ const gchar *fu_udev_device_get_subsystem (FuUdevDevice *self); guint16 fu_udev_device_get_vendor (FuUdevDevice *self); guint16 fu_udev_device_get_model (FuUdevDevice *self); guint8 fu_udev_device_get_revision (FuUdevDevice *self); +guint fu_udev_device_get_slot_depth (FuUdevDevice *self, + const gchar *subsystem); gboolean fu_udev_device_set_physical_id (FuUdevDevice *self, const gchar *subsystem, GError **error);