Edward O'Callaghan submitted this change.

View Change

Approvals: build bot (Jenkins): Verified Thomas Heijligen: Looks good to me, approved
pcidev: Move pci_dev_find() from internal to canonical place

Also rename to `pcidev_find()` in fitting with pcidev.c helpers.

BUG=b:220950271
TEST=```sudo ./flashrom -p internal -r /tmp/bios
<snip>
Found Programmer flash chip "Opaque flash chip" (16384 kB, Programmer-specific) mapped at physical address 0x0000000000000000.
Reading flash... done.
```

Change-Id: Ie21f87699481a84398ca4450b3f03548f0528191
Signed-off-by: Edward O'Callaghan <quasisec@google.com>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/59280
Reviewed-by: Thomas Heijligen <src@posteo.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
---
M board_enable.c
M chipset_enable.c
M internal.c
M pcidev.c
M programmer.h
M sb600spi.c
6 files changed, 32 insertions(+), 33 deletions(-)

diff --git a/board_enable.c b/board_enable.c
index 22db492..300fecb 100644
--- a/board_enable.c
+++ b/board_enable.c
@@ -893,7 +893,7 @@
uint16_t smbba;
uint8_t b;

- dev = pci_dev_find(0x8086, 0x7113); /* Intel PIIX4, PM/SMBus function. */
+ dev = pcidev_find(0x8086, 0x7113); /* Intel PIIX4, PM/SMBus function. */
if (!dev) {
msg_perr("\nERROR: Intel PIIX4 PM not found.\n");
return -1;
@@ -1045,7 +1045,7 @@
struct pci_dev *dev;
uint32_t tmp;

- dev = pci_dev_find(0x10DE, 0x03EB); /* NVIDIA MCP61 SMBus. */
+ dev = pcidev_find(0x10DE, 0x03EB); /* NVIDIA MCP61 SMBus. */
if (!dev) {
msg_perr("\nERROR: NVIDIA MCP61 SMBus not found.\n");
return -1;
@@ -1273,7 +1273,7 @@
if (ret)
return ret;

- dev = pci_dev_find(0x10de, 0x0364); /* NVIDIA MCP55 LPC bridge */
+ dev = pcidev_find(0x10de, 0x0364); /* NVIDIA MCP55 LPC bridge */
if (!dev) {
msg_perr("\nERROR: NVIDIA MCP55 LPC bridge not found.\n");
return -1;
@@ -1343,7 +1343,7 @@
struct pci_dev *dev;
uint32_t reg;

- dev = pci_dev_find(0x1002, 0x4372); /* AMD SMBus controller */
+ dev = pcidev_find(0x1002, 0x4372); /* AMD SMBus controller */
if (!dev) {
msg_perr("\nERROR: AMD SMBus Controller (0x4372) not found.\n");
return -1;
@@ -1407,7 +1407,7 @@
{0}
};

- dev = pci_dev_find(0x8086, 0x7110); /* Intel PIIX4 ISA bridge */
+ dev = pcidev_find(0x8086, 0x7110); /* Intel PIIX4 ISA bridge */
if (!dev) {
msg_perr("\nERROR: Intel PIIX4 ISA bridge not found.\n");
return -1;
@@ -1426,7 +1426,7 @@
return -1;
}

- dev = pci_dev_find(0x8086, 0x7113); /* Intel PIIX4 PM */
+ dev = pcidev_find(0x8086, 0x7113); /* Intel PIIX4 PM */
if (!dev) {
msg_perr("\nERROR: Intel PIIX4 PM not found.\n");
return -1;
@@ -1941,7 +1941,7 @@
uint32_t base, tmp;

/* VT82C686 power management */
- dev = pci_dev_find(0x1106, 0x3057);
+ dev = pcidev_find(0x1106, 0x3057);
if (!dev) {
msg_perr("\nERROR: VT82C686 PM device not found.\n");
return -1;
@@ -2014,7 +2014,7 @@
struct pci_dev *dev;
uint16_t base, temp;

- dev = pci_dev_find(0x1039, 0x0962);
+ dev = pcidev_find(0x1039, 0x0962);
if (!dev) {
msg_perr("Expected south bridge not found\n");
return 1;
@@ -2078,7 +2078,7 @@
uint16_t rt_port;
uint8_t val;

- dev = pci_dev_find(0x8086, 0x2410); /* Intel 82801AA ISA bridge */
+ dev = pcidev_find(0x8086, 0x2410); /* Intel 82801AA ISA bridge */
if (!dev) {
msg_perr("\nERROR: Intel 82801AA ISA bridge not found.\n");
return -1;
@@ -2603,13 +2603,13 @@
if (!cur_model || strcasecmp(cur_model, model))
continue;

- if (!pci_dev_find(board->first_vendor, board->first_device)) {
+ if (!pcidev_find(board->first_vendor, board->first_device)) {
msg_pdbg("Odd. Board name \"%s\":\"%s\" matches, but first PCI device %04x:%04x "
"doesn't.\n", vendor, model, board->first_vendor, board->first_device);
continue;
}

- if (!pci_dev_find(board->second_vendor, board->second_device)) {
+ if (!pcidev_find(board->second_vendor, board->second_device)) {
msg_pdbg("Odd. Board name \"%s\":\"%s\" matches, but second PCI device %04x:%04x "
"doesn't.\n", vendor, model, board->second_vendor, board->second_device);
continue;
@@ -2658,7 +2658,7 @@
board->second_card_device))
continue;
} else {
- if (!pci_dev_find(board->second_vendor,
+ if (!pcidev_find(board->second_vendor,
board->second_device))
continue;
}
diff --git a/chipset_enable.c b/chipset_enable.c
index ac9377b..1cb1700 100644
--- a/chipset_enable.c
+++ b/chipset_enable.c
@@ -1117,7 +1117,7 @@

static int enable_flash_vt_vx(struct pci_dev *dev, const char *name)
{
- struct pci_dev *south_north = pci_dev_find(0x1106, 0xa353);
+ struct pci_dev *south_north = pcidev_find(0x1106, 0xa353);
if (south_north == NULL) {
msg_perr("Could not find South-North Module Interface Control device!\n");
return ERROR_FATAL;
@@ -1557,7 +1557,7 @@
struct pci_dev *smbusdev;

/* Look for the SMBus device. */
- smbusdev = pci_dev_find(0x1002, 0x4372);
+ smbusdev = pcidev_find(0x1002, 0x4372);

if (!smbusdev) {
msg_perr("ERROR: SMBus device not found. Aborting.\n");
@@ -2163,7 +2163,7 @@

/* Now let's try to find the chipset we have... */
for (i = 0; chipset_enables[i].vendor_name != NULL; i++) {
- dev = pci_dev_find(chipset_enables[i].vendor_id,
+ dev = pcidev_find(chipset_enables[i].vendor_id,
chipset_enables[i].device_id);
if (!dev)
continue;
diff --git a/internal.c b/internal.c
index cf9faf6..4049ef1 100644
--- a/internal.c
+++ b/internal.c
@@ -34,17 +34,6 @@

enum chipbustype internal_buses_supported = BUS_NONE;

-struct pci_dev *pci_dev_find(uint16_t vendor, uint16_t device)
-{
- struct pci_filter filter;
-
- pci_filter_init(NULL, &filter);
- filter.vendor = vendor;
- filter.device = device;
-
- return pcidev_scandev(&filter, NULL);
-}
-
#if defined(__i386__) || defined(__x86_64__)
void probe_superio(void)
{
diff --git a/pcidev.c b/pcidev.c
index 0049f0c..7fb6f1d 100644
--- a/pcidev.c
+++ b/pcidev.c
@@ -176,6 +176,17 @@
return NULL;
}

+struct pci_dev *pcidev_find(uint16_t vendor, uint16_t device)
+{
+ struct pci_filter filter;
+
+ pci_filter_init(NULL, &filter);
+ filter.vendor = vendor;
+ filter.device = device;
+
+ return pcidev_scandev(&filter, NULL);
+}
+
struct pci_dev *pcidev_getdevfn(struct pci_dev *dev, const int func)
{
#if !defined(OLD_PCI_GET_DEV)
diff --git a/programmer.h b/programmer.h
index 50753cf..c79422c 100644
--- a/programmer.h
+++ b/programmer.h
@@ -129,6 +129,7 @@
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);
/* rpci_write_* are reversible writes. The original PCI config space register
* contents will be restored on shutdown.
* To clone the pci_dev instances internally, the `pacc` global
@@ -261,9 +262,7 @@
#define SUPERIO_VENDOR_ITE 0x1
#define SUPERIO_VENDOR_WINBOND 0x2
#endif
-#if NEED_PCI == 1
-struct pci_dev *pci_dev_find(uint16_t vendor, uint16_t device);
-#endif
+
#if CONFIG_INTERNAL == 1
extern int is_laptop;
extern int laptop_ok;
diff --git a/sb600spi.c b/sb600spi.c
index eb54028..6f8cc40 100644
--- a/sb600spi.c
+++ b/sb600spi.c
@@ -60,7 +60,7 @@

static int find_smbus_dev_rev(uint16_t vendor, uint16_t device)
{
- struct pci_dev *smbus_dev = pci_dev_find(vendor, device);
+ struct pci_dev *smbus_dev = pcidev_find(vendor, device);
if (!smbus_dev) {
msg_pdbg("No SMBus device with ID %04X:%04X found.\n", vendor, device);
msg_perr("ERROR: SMBus device not found. Not enabling SPI.\n");
@@ -734,11 +734,11 @@
}

/* Look for the SMBus device. */
- smbus_dev = pci_dev_find(0x1002, 0x4385);
+ smbus_dev = pcidev_find(0x1002, 0x4385);
if (!smbus_dev)
- smbus_dev = pci_dev_find(0x1022, 0x780b); /* AMD FCH */
+ smbus_dev = pcidev_find(0x1022, 0x780b); /* AMD FCH */
if (!smbus_dev)
- smbus_dev = pci_dev_find(0x1022, 0x790b); /* AMD FP4 */
+ smbus_dev = pcidev_find(0x1022, 0x790b); /* AMD FP4 */
if (!smbus_dev) {
msg_perr("ERROR: SMBus device not found. Not enabling SPI.\n");
return ERROR_NONFATAL;

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

Gerrit-Project: flashrom
Gerrit-Branch: master
Gerrit-Change-Id: Ie21f87699481a84398ca4450b3f03548f0528191
Gerrit-Change-Number: 59280
Gerrit-PatchSet: 8
Gerrit-Owner: Edward O'Callaghan <quasisec@chromium.org>
Gerrit-Reviewer: Anastasia Klimchuk <aklm@chromium.org>
Gerrit-Reviewer: Edward O'Callaghan <quasisec@chromium.org>
Gerrit-Reviewer: Nico Huber <nico.h@gmx.de>
Gerrit-Reviewer: Thomas Heijligen <src@posteo.de>
Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org>
Gerrit-CC: Paul Menzel <paulepanter@mailbox.org>
Gerrit-MessageType: merged