diff options
author | uwe <uwe@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1> | 2009-05-16 21:39:19 +0000 |
---|---|---|
committer | uwe <uwe@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1> | 2009-05-16 21:39:19 +0000 |
commit | ced540c3852b39919b31b52cf90d836dd2824552 (patch) | |
tree | 464c74c283c1800bb426667b9e2f1277bd743fc5 /pcidev.c | |
parent | 676fec9b1d0df41ec69e87bc8e9f0c1605f5a577 (diff) | |
download | flashrom-ced540c3852b39919b31b52cf90d836dd2824552.tar.gz |
Add proper workaround for 3COM 3C90xB cards, which need special fixups
(the 3C90xC ones don't). This is tested on hardware.
Also, add initial support for the Atmel AT29C010A chip (which I inserted
in a 3COM 3C90xB card for testing). It can be detected, read works, erase
works, but write will need some additional code (will post in another
patch later).
Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
git-svn-id: https://code.coreboot.org/svn/flashrom/trunk@520 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'pcidev.c')
-rw-r--r-- | pcidev.c | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -32,6 +32,7 @@ uint32_t io_base_addr; struct pci_access *pacc; struct pci_filter filter; char *pcidev_bdf = NULL; +struct pci_dev *pcidev_dev = NULL; uint32_t pcidev_validate(struct pci_dev *dev, struct pcidev_status *devs) { @@ -67,7 +68,7 @@ uint32_t pcidev_init(uint16_t vendor_id, struct pcidev_status *devs) struct pci_dev *dev; char *msg = NULL; int found = 0; - uint32_t addr = 0; + uint32_t addr = 0, curaddr = 0; pacc = pci_alloc(); /* Get the pci_access structure */ pci_init(pacc); /* Initialize the PCI library */ @@ -85,8 +86,11 @@ uint32_t pcidev_init(uint16_t vendor_id, struct pcidev_status *devs) for (dev = pacc->devices; dev; dev = dev->next) { if (pci_filter_match(&filter, dev)) { - if ((addr = pcidev_validate(dev, devs)) != 0) + if ((addr = pcidev_validate(dev, devs)) != 0) { + curaddr = addr; + pcidev_dev = dev; found++; + } } } @@ -102,7 +106,7 @@ uint32_t pcidev_init(uint16_t vendor_id, struct pcidev_status *devs) exit(1); } - return addr; + return curaddr; } void print_supported_pcidevs(struct pcidev_status *devs) |