mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-27 07:02:34 +02:00
Older libpci versions (e.g
2.2.8, as it's default on current FreeBSD 7.2) don't properly fill the base_addr[0] struct member, so revert back to an explicit pci_read_long() call, otherwise detection of PCI devices and their base address will fail with strange error messages. Thanks Idwer Vollering <vidwer@gmail.com> for reporting and testing. Corresponding to flashrom svn r518. Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de> Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
This commit is contained in:
parent
9ee107721f
commit
4059598a06
5
pcidev.c
5
pcidev.c
@ -26,6 +26,8 @@
|
||||
#include <errno.h>
|
||||
#include "flash.h"
|
||||
|
||||
#define PCI_IO_BASE_ADDRESS 0x10
|
||||
|
||||
uint32_t io_base_addr;
|
||||
struct pci_access *pacc;
|
||||
struct pci_filter filter;
|
||||
@ -40,7 +42,8 @@ uint32_t pcidev_validate(struct pci_dev *dev, struct pcidev_status *devs)
|
||||
if (dev->device_id != devs[i].device_id)
|
||||
continue;
|
||||
|
||||
addr = (uint32_t)(dev->base_addr[0] & ~0x03);
|
||||
/* Don't use dev->base_addr[0], won't work on older libpci. */
|
||||
addr = pci_read_long(dev, PCI_IO_BASE_ADDRESS) & ~0x03;
|
||||
|
||||
printf("Found \"%s %s\" (%04x:%04x, BDF %02x:%02x.%x)\n",
|
||||
devs[i].vendor_name, devs[i].device_name, dev->vendor_id,
|
||||
|
Loading…
x
Reference in New Issue
Block a user