From 855b8983319f24835e72669469669f270fffa1db Mon Sep 17 00:00:00 2001 From: Edward O'Callaghan Date: Sat, 13 Nov 2021 17:56:20 +1100 Subject: pcidev: Move pci_card_find() from internal to canonical place Also rename to `pcidev_card_find()` in fitting with pcidev.c helpers. BUG=b:220950271 TEST=```sudo ./flashrom -p internal -r /tmp/bios Found Programmer flash chip "Opaque flash chip" (16384 kB, Programmer-specific) mapped at physical address 0x0000000000000000. Reading flash... done. ``` Change-Id: I026bfbecba114411728d4ad1ed8969b469fa7d2d Signed-off-by: Edward O'Callaghan Reviewed-on: https://review.coreboot.org/c/flashrom/+/59279 Tested-by: build bot (Jenkins) Reviewed-by: Thomas Heijligen Reviewed-by: Nikolai Artemiev Reviewed-by: Anastasia Klimchuk --- pcidev.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'pcidev.c') diff --git a/pcidev.c b/pcidev.c index 8b8b4788..0049f0ca 100644 --- a/pcidev.c +++ b/pcidev.c @@ -157,6 +157,25 @@ struct pci_dev *pcidev_scandev(struct pci_filter *filter, struct pci_dev *start) return NULL; } +struct pci_dev *pcidev_card_find(uint16_t vendor, uint16_t device, + uint16_t card_vendor, uint16_t card_device) +{ + struct pci_dev *temp = NULL; + struct pci_filter filter; + + pci_filter_init(NULL, &filter); + filter.vendor = vendor; + filter.device = device; + + while ((temp = pcidev_scandev(&filter, temp))) { + if ((card_vendor == pci_read_word(temp, PCI_SUBSYSTEM_VENDOR_ID)) + && (card_device == pci_read_word(temp, PCI_SUBSYSTEM_ID))) + return temp; + } + + return NULL; +} + struct pci_dev *pcidev_getdevfn(struct pci_dev *dev, const int func) { #if !defined(OLD_PCI_GET_DEV) -- cgit v1.2.3