summaryrefslogtreecommitdiffstats
path: root/sys/dev/ata/ata-pci.c
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2009-04-27 18:10:42 +0000
committerjkim <jkim@FreeBSD.org>2009-04-27 18:10:42 +0000
commit0dffd8719168deb07b1f0cc8db36e3948f969cbb (patch)
treeb582ffce45f739f40cb0600e389b6ce605bc4d5f /sys/dev/ata/ata-pci.c
parentfd252e7b254b6e7ef2ae59257b281d3e04d6602e (diff)
downloadFreeBSD-src-0dffd8719168deb07b1f0cc8db36e3948f969cbb.zip
FreeBSD-src-0dffd8719168deb07b1f0cc8db36e3948f969cbb.tar.gz
Reduce excessive pci_get_devid() and pci_get_revid() calls
on the same PCI device while device probing.
Diffstat (limited to 'sys/dev/ata/ata-pci.c')
-rw-r--r--sys/dev/ata/ata-pci.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/dev/ata/ata-pci.c b/sys/dev/ata/ata-pci.c
index 5fe26a8..65a7fca 100644
--- a/sys/dev/ata/ata-pci.c
+++ b/sys/dev/ata/ata-pci.c
@@ -759,13 +759,17 @@ ata_set_desc(device_t dev)
struct ata_chip_id *
ata_match_chip(device_t dev, struct ata_chip_id *index)
{
+ uint32_t devid;
+ uint8_t revid;
+
+ devid = pci_get_devid(dev);
+ revid = pci_get_revid(dev);
while (index->chipid != 0) {
- if (pci_get_devid(dev) == index->chipid &&
- pci_get_revid(dev) >= index->chiprev)
- return index;
+ if (devid == index->chipid && revid >= index->chiprev)
+ return (index);
index++;
}
- return NULL;
+ return (NULL);
}
struct ata_chip_id *
OpenPOWER on IntegriCloud