From 6ebebbaa0370c1b34a6aae9f25682ecd1c6c22b1 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Thu, 22 Jan 2015 22:42:33 +0100 Subject: [PATCH] Improved listing of vendor-specific information --- ls-caps-vendor.c | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/ls-caps-vendor.c b/ls-caps-vendor.c index 4cdfe22..dc24f90 100644 --- a/ls-caps-vendor.c +++ b/ls-caps-vendor.c @@ -11,7 +11,7 @@ #include "lspci.h" -static void +static int show_vendor_caps_virtio(struct device *d, int where, int cap) { int length = BITS(cap, 0, 8); @@ -19,9 +19,9 @@ show_vendor_caps_virtio(struct device *d, int where, int cap) char *tname; if (length < 16) - return; + return 0; if (!config_fetch(d, where, length)) - return; + return 0; switch (type) { @@ -45,32 +45,38 @@ show_vendor_caps_virtio(struct device *d, int where, int cap) printf("VirtIO: %s\n", tname); if (verbose < 2) - return; + return 1; - printf("\t\tBAR=%d offset=%08x size=%08x\n", + printf("\t\tBAR=%d offset=%08x size=%08x", get_conf_byte(d, where + 4), get_conf_long(d, where + 8), get_conf_long(d, where + 12)); - if (type != 2 || length < 20) - return; + if (type == 2 && length >= 20) + printf(" multiplier=%08x", get_conf_long(d, where+16)); - printf("\t\tmultiplier=%08x\n", - get_conf_long(d, where+16)); + printf("\n"); + return 1; } -void -show_vendor_caps(struct device *d, int where, int cap) +static int +do_show_vendor_caps(struct device *d, int where, int cap) { switch (get_conf_word(d, PCI_VENDOR_ID)) { case 0x1af4: /* Red Hat */ if (get_conf_word(d, PCI_DEVICE_ID) >= 0x1000 && get_conf_word(d, PCI_DEVICE_ID) <= 0x107f) - show_vendor_caps_virtio(d, where, cap); - break; - default: - printf("Vendor Specific Information: Len=%02x \n", BITS(cap, 0, 8)); + return show_vendor_caps_virtio(d, where, cap); break; } + return 0; +} + +void +show_vendor_caps(struct device *d, int where, int cap) +{ + printf("Vendor Specific Information: "); + if (!do_show_vendor_caps(d, where, cap)) + printf("Len=%02x \n", BITS(cap, 0, 8)); } -- 2.39.5