Hi,
attached patch provides a libpci implementation sufficient to get flashrom to compile. It should work but is untested beyond what flashrom does. It's also incomplete: libpci has many more capabilities than exposed in this variant.
No pciutils code was harmed in its production - this code was written by looking at flashrom's expectations, so licensing is clean.
Signed-off-by: Patrick Georgi patrick.georgi@coresystems.de
Patrick Georgi wrote:
attached patch provides a libpci implementation sufficient to get flashrom to compile. It should work but is untested beyond what flashrom does. It's also incomplete: libpci has many more capabilities than exposed in this variant.
No pciutils code was harmed in its production - this code was written by looking at flashrom's expectations, so licensing is clean.
Signed-off-by: Patrick Georgi patrick.georgi@coresystems.de
With one important comment and one about style, this is:
Acked-by: Peter Stuge peter@stuge.se
+++ libpci/libpci.c (Revision 0)
..
+int pci_filter_match(struct pci_filter* pf, struct pci_dev* dev) +{
- int match = 1;
- if ((pf->domain > -1) && (pf->domain != dev->domain)) match = 0;
- if ((pf->bus > -1) && (pf->bus != dev->bus)) match = 0;
- if ((pf->dev > -1) && (pf->dev != dev->dev)) match = 0;
- if ((pf->func > -1) && (pf->func != dev->func)) match = 0;
- if ((pf->vendor > -1) && (pf->vendor != dev->vendor_id)) match = 0;
- if ((pf->device > -1) && (pf->device != dev->device_id)) match = 0;
- return match;
+}
Maybe skip the variable and return directly? I'd also like the return to be on it's own line.
+struct pci_dev *pci_get_dev(struct pci_access* pacc, u16 domain, u8 bus, u8 dev, u8 func) +{
- struct pci_dev *cur;
- for (cur = pacc->devices; cur != NULL; cur = cur->next) {
if ((cur->domain == domain) && (cur->bus == bus) && (cur->dev == dev) && (cur->func == func)) break;
cur = cur->next;
- }
- /* FIXME: is NULL the right answer if device not found? */
- return cur;
+}
This function doesn't search, it "creates" a struct pci_dev using pci_alloc() + PCI_DEV(), so it may even be possible to remove libpci_to_lb().
//Peter