aboutsummaryrefslogtreecommitdiff
path: root/hardinfo
diff options
context:
space:
mode:
authorBurt P <pburt0@gmail.com>2019-12-28 00:26:55 -0600
committerLeandro A. F. Pereira <leandro@hardinfo.org>2019-12-28 08:32:12 -0800
commitbf72686772b249a683570d9a0b47e139f5327a3c (patch)
tree06d78d370e9aaa23f158570b09e117dcfab220ed /hardinfo
parentb45f68508254c3ddbcabfc536ed5f2b5a7a9528c (diff)
udisks2_util: try pci vendor for nvme without vendor info
Signed-off-by: Burt P <pburt0@gmail.com>
Diffstat (limited to 'hardinfo')
-rw-r--r--hardinfo/udisks2_util.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/hardinfo/udisks2_util.c b/hardinfo/udisks2_util.c
index 11e091b9..dfb0b20f 100644
--- a/hardinfo/udisks2_util.c
+++ b/hardinfo/udisks2_util.c
@@ -2,6 +2,7 @@
#include "udisks2_util.h"
#include "hardinfo.h"
#include "util_ids.h"
+#include "pci_util.h"
#define UDISKS2_INTERFACE "org.freedesktop.UDisks2"
#define UDISKS2_MANAGER_INTERFACE "org.freedesktop.UDisks2.Manager"
@@ -677,6 +678,21 @@ gpointer get_udisks2_drive_info(const char *blockdev, GDBusProxy *block,
g_variant_unref(v);
}
+ /* NVMe vendor from PCI device */
+ if (strstr(u->block_dev, "nvme")
+ && (!u->vendor || !*u->vendor)
+ ) {
+ gchar *file = g_strdup_printf("/sys/block/%s/device/device/vendor", u->block_dev);
+ gchar *val = NULL;
+ if (g_file_get_contents(file, &val, NULL, NULL) ) {
+ unsigned long int id = strtoul(val, NULL, 16);
+ if (id)
+ u->vendor = pci_lookup_ids_vendor_str(id);
+ }
+ g_free(file);
+ g_free(val);
+ }
+
check_sdcard_vendor(u);
if (!u->vendors) {