]> mj.ucw.cz Git - pciutils.git/blobdiff - lib/fbsd-device.c
pci.h: Document PCI_FILL_xxx flags
[pciutils.git] / lib / fbsd-device.c
index 6bb5fddedf2c6f4a9cb7f0b76ec4903668ed5315..36857d636c9d9019647a449171f85525b7df0f81 100644 (file)
@@ -5,7 +5,9 @@
  *     Updated in 2003 by Samy Al Bahra <samy@kerneled.com>
  *     Updated in 2017 by Imre Vadász <imrevdsz@gmail.com>
  *
- *     Can be freely distributed and used under the terms of the GNU GPL.
+ *     Can be freely distributed and used under the terms of the GNU GPL v2+.
+ *
+ *     SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include <errno.h>
@@ -159,8 +161,8 @@ fbsd_scan(struct pci_access *a)
   free(matches);
 }
 
-static int
-fbsd_fill_info(struct pci_dev *d, int flags)
+static void
+fbsd_fill_info(struct pci_dev *d, unsigned int flags)
 {
   struct pci_conf_io conf;
   struct pci_bar_io bar;
@@ -195,21 +197,19 @@ fbsd_fill_info(struct pci_dev *d, int flags)
 
   if (ioctl(d->access->fd, PCIOCGETCONF, &conf) < 0)
     {
-      if (errno == ENODEV)
-        return 0;
-      d->access->error("fbsd_fill_info: ioctl(PCIOCGETCONF) failed: %s", strerror(errno));
+      if (errno != ENODEV)
+       d->access->error("fbsd_fill_info: ioctl(PCIOCGETCONF) failed: %s", strerror(errno));
+      return;
     }
 
-  if (flags & PCI_FILL_IDENT)
+  if (want_fill(d, flags, PCI_FILL_IDENT))
     {
       d->vendor_id = match.pc_vendor;
       d->device_id = match.pc_device;
     }
-  if (flags & PCI_FILL_CLASS)
-    {
-      d->device_class = (match.pc_class << 8) | match.pc_subclass;
-    }
-  if (flags & (PCI_FILL_BASES | PCI_FILL_SIZES))
+  if (want_fill(d, flags, PCI_FILL_CLASS))
+    d->device_class = (match.pc_class << 8) | match.pc_subclass;
+  if (want_fill(d, flags, PCI_FILL_BASES | PCI_FILL_SIZES))
     {
       d->rom_base_addr = 0;
       d->rom_size = 0;
@@ -226,7 +226,7 @@ fbsd_fill_info(struct pci_dev *d, int flags)
          if (ioctl(d->access->fd, PCIOCGETBAR, &bar) < 0)
            {
              if (errno == ENODEV)
-               return 0;
+               return;
              if (errno == EINVAL)
                {
                  d->base_addr[i] = 0;
@@ -242,9 +242,6 @@ fbsd_fill_info(struct pci_dev *d, int flags)
            }
        }
     }
-
-  return flags & (PCI_FILL_IDENT | PCI_FILL_CLASS | PCI_FILL_BASES |
-                 PCI_FILL_SIZES);
 }
 
 static int
@@ -266,6 +263,9 @@ fbsd_read(struct pci_dev *d, int pos, byte *buf, int len)
 
 #if __FreeBSD_version >= 700053 || defined(__DragonFly__)
   pi.pi_sel.pc_domain = d->domain;
+#else
+  if (d->domain)
+    return 0;
 #endif
   pi.pi_sel.pc_bus = d->bus;
   pi.pi_sel.pc_dev = d->dev;
@@ -315,6 +315,9 @@ fbsd_write(struct pci_dev *d, int pos, byte *buf, int len)
 
 #if __FreeBSD_version >= 700053 || defined(__DragonFly__)
   pi.pi_sel.pc_domain = d->domain;
+#else
+  if (d->domain)
+    return 0;
 #endif
   pi.pi_sel.pc_bus = d->bus;
   pi.pi_sel.pc_dev = d->dev;
@@ -347,17 +350,14 @@ fbsd_write(struct pci_dev *d, int pos, byte *buf, int len)
 }
 
 struct pci_methods pm_fbsd_device = {
-  "fbsd-device",
-  "FreeBSD /dev/pci device",
-  fbsd_config,
-  fbsd_detect,
-  fbsd_init,
-  fbsd_cleanup,
-  fbsd_scan,
-  fbsd_fill_info,
-  fbsd_read,
-  fbsd_write,
-  NULL,                                 /* read_vpd */
-  NULL,                                 /* dev_init */
-  NULL                                  /* dev_cleanup */
+  .name = "fbsd-device",
+  .help = "FreeBSD /dev/pci device",
+  .config = fbsd_config,
+  .detect = fbsd_detect,
+  .init = fbsd_init,
+  .cleanup = fbsd_cleanup,
+  .scan = fbsd_scan,
+  .fill_info = fbsd_fill_info,
+  .read = fbsd_read,
+  .write = fbsd_write,
 };