Thomas Heijligen has uploaded this change for review.

View Change

Revert "pcidev: remove pcidev_getdevfn() function"

As Edward pointed out correctly this function does more than abstracting
the different versions of `pci_get_dev()`. It also hide the usage of
the global `struct pci_access pacc` from the caller.

This reverts commit 0e8902f1ff2b927bb91a5e89e4fde3d8d71f6692.

Change-Id: I0cd2f54cb6a6e35dc353476e0f5e502cbbd06cba
Signed-off-by: Thomas Heijligen <thomas.heijligen@secunet.com>
---
M board_enable.c
M include/programmer.h
M pcidev.c
3 files changed, 26 insertions(+), 2 deletions(-)

git pull ssh://review.coreboot.org:29418/flashrom refs/changes/30/73730/1
diff --git a/board_enable.c b/board_enable.c
index 3e6a5a7..d35b151 100644
--- a/board_enable.c
+++ b/board_enable.c
@@ -1095,12 +1095,11 @@
return -1;
}

- dev = pci_get_dev(pacc, dev->domain, dev->bus, dev->dev, 1);
+ dev = pcidev_getdevfn(dev, 1);
if (!dev) {
msg_perr("MCP SMBus controller could not be found\n");
return -1;
}
- pci_fill_info(dev, PCI_FILL_IDENT);
devclass = pci_read_word(dev, PCI_CLASS_DEVICE);
if (devclass != 0x0C05) {
msg_perr("Unexpected device class %04x for SMBus"
diff --git a/include/programmer.h b/include/programmer.h
index 9728d8d..d8d8b4a 100644
--- a/include/programmer.h
+++ b/include/programmer.h
@@ -125,6 +125,7 @@
uintptr_t pcidev_readbar(struct pci_dev *dev, int bar);
struct pci_dev *pcidev_init(const struct programmer_cfg *cfg, const struct dev_entry *devs, int bar);
struct pci_dev *pcidev_scandev(struct pci_filter *filter, struct pci_dev *start);
+struct pci_dev *pcidev_getdevfn(struct pci_dev *dev, const int func);
struct pci_dev *pcidev_find_vendorclass(uint16_t vendor, uint16_t devclass);
struct pci_dev *pcidev_card_find(uint16_t vendor, uint16_t device, uint16_t card_vendor, uint16_t card_device);
struct pci_dev *pcidev_find(uint16_t vendor, uint16_t device);
diff --git a/pcidev.c b/pcidev.c
index 68da327..696510e 100644
--- a/pcidev.c
+++ b/pcidev.c
@@ -190,6 +190,14 @@
return pcidev_scandev(&filter, NULL);
}

+struct pci_dev *pcidev_getdevfn(struct pci_dev *dev, const int func)
+{
+ struct pci_dev *const new = pci_get_dev(pacc, dev->domain, dev->bus, dev->dev, func);
+ if (new)
+ pci_fill_info(new, PCI_FILL_IDENT);
+ return new;
+}
+
struct pci_dev *pcidev_find_vendorclass(uint16_t vendor, uint16_t devclass)
{
struct pci_dev *temp = NULL;

To view, visit change 73730. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: flashrom
Gerrit-Branch: master
Gerrit-Change-Id: I0cd2f54cb6a6e35dc353476e0f5e502cbbd06cba
Gerrit-Change-Number: 73730
Gerrit-PatchSet: 1
Gerrit-Owner: Thomas Heijligen <src@posteo.de>
Gerrit-MessageType: newchange