]> mj.ucw.cz Git - pciutils.git/commitdiff
libpci: Add new internal function pci_generic_scan_domain()
authorPali Rohár <pali@kernel.org>
Sun, 2 Jan 2022 19:49:30 +0000 (20:49 +0100)
committerPali Rohár <pali@kernel.org>
Sat, 5 Nov 2022 10:41:55 +0000 (11:41 +0100)
Function pci_generic_scan() scans PCI domain 0. This new function
pci_generic_scan_domain() scans specified PCI domain number.

lib/aix-device.c
lib/generic.c
lib/internal.h
lib/sylixos-device.c

index f7d8e782b92dbe53e40d9f2d3213ef9ae6ab4eb1..9355395c1b111dff03269c80071d59c537071a5e 100644 (file)
@@ -206,7 +206,7 @@ aix_scan(struct pci_access *a)
       bus_number = pci_buses[i].bus_number;
       if (!busmap[bus_number])
         {
-          pci_generic_scan_bus(a, busmap, bus_number);
+          pci_generic_scan_bus(a, busmap, 0, bus_number);
         }
     }
 }
index d178a4427ef4c94c6d87fd3b577d835db45d35f1..6211c90fbe607d76177925b58049fbae22237fec 100644 (file)
@@ -11,7 +11,7 @@
 #include "internal.h"
 
 void
-pci_generic_scan_bus(struct pci_access *a, byte *busmap, int bus)
+pci_generic_scan_bus(struct pci_access *a, byte *busmap, int domain, int bus)
 {
   int dev, multi, ht;
   struct pci_dev *t;
@@ -24,6 +24,7 @@ pci_generic_scan_bus(struct pci_access *a, byte *busmap, int bus)
     }
   busmap[bus] = 1;
   t = pci_alloc_dev(a);
+  t->domain = domain;
   t->bus = bus;
   for (dev=0; dev<32; dev++)
     {
@@ -41,6 +42,7 @@ pci_generic_scan_bus(struct pci_access *a, byte *busmap, int bus)
            multi = ht & 0x80;
          ht &= 0x7f;
          d = pci_alloc_dev(a);
+         d->domain = t->domain;
          d->bus = t->bus;
          d->dev = t->dev;
          d->func = t->func;
@@ -55,7 +57,7 @@ pci_generic_scan_bus(struct pci_access *a, byte *busmap, int bus)
              break;
            case PCI_HEADER_TYPE_BRIDGE:
            case PCI_HEADER_TYPE_CARDBUS:
-             pci_generic_scan_bus(a, busmap, pci_read_byte(t, PCI_SECONDARY_BUS));
+             pci_generic_scan_bus(a, busmap, domain, pci_read_byte(t, PCI_SECONDARY_BUS));
              break;
            default:
              a->debug("Device %04x:%02x:%02x.%d has unknown header type %02x.\n", d->domain, d->bus, d->dev, d->func, ht);
@@ -66,12 +68,18 @@ pci_generic_scan_bus(struct pci_access *a, byte *busmap, int bus)
 }
 
 void
-pci_generic_scan(struct pci_access *a)
+pci_generic_scan_domain(struct pci_access *a, int domain)
 {
   byte busmap[256];
 
   memset(busmap, 0, sizeof(busmap));
-  pci_generic_scan_bus(a, busmap, 0);
+  pci_generic_scan_bus(a, busmap, domain, 0);
+}
+
+void
+pci_generic_scan(struct pci_access *a)
+{
+  pci_generic_scan_domain(a, 0);
 }
 
 static int
index 11cf5a6d8f82a51dbef17e38a7cf4b34d25a606f..475f0b88fc8ed75bf9da4f26c66ef5b82029037d 100644 (file)
@@ -67,7 +67,8 @@ struct pci_methods {
 };
 
 /* generic.c */
-void pci_generic_scan_bus(struct pci_access *, byte *busmap, int bus);
+void pci_generic_scan_bus(struct pci_access *, byte *busmap, int domain, int bus);
+void pci_generic_scan_domain(struct pci_access *, int domain);
 void pci_generic_scan(struct pci_access *);
 void pci_generic_fill_info(struct pci_dev *, unsigned int flags);
 int pci_generic_block_read(struct pci_dev *, int pos, byte *buf, int len);
index a23438ee15a7d2441639ea7bf7d3918a9e52e3ba..07195d562a6f0b092ceb7c7206fae91c92254095 100644 (file)
@@ -25,7 +25,7 @@ sylixos_scan(struct pci_access *a)
 
   for (bus = 0; bus < PCI_MAX_BUS; bus++)
     if (!busmap[bus])
-      pci_generic_scan_bus(a, busmap, bus);
+      pci_generic_scan_bus(a, busmap, 0, bus);
 }
 
 static void