diff options
author | sos <sos@FreeBSD.org> | 2003-05-19 13:42:23 +0000 |
---|---|---|
committer | sos <sos@FreeBSD.org> | 2003-05-19 13:42:23 +0000 |
commit | 17d362a0bfd703ccfc863abfe2c9779228f95d35 (patch) | |
tree | 3854e3ad55d3a9ddea5571fad5efd33e8a137cd0 /sys/dev/ata | |
parent | eb68623668b44ffebeaf326c9ee1703940bea978 (diff) | |
download | FreeBSD-src-17d362a0bfd703ccfc863abfe2c9779228f95d35.zip FreeBSD-src-17d362a0bfd703ccfc863abfe2c9779228f95d35.tar.gz |
Unbork the chip locating code.
Approved by: re@
Diffstat (limited to 'sys/dev/ata')
-rw-r--r-- | sys/dev/ata/ata-chipset.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/sys/dev/ata/ata-chipset.c b/sys/dev/ata/ata-chipset.c index 11a6793..5d5890c 100644 --- a/sys/dev/ata/ata-chipset.c +++ b/sys/dev/ata/ata-chipset.c @@ -2003,26 +2003,21 @@ static struct ata_chip_id * ata_find_chip(device_t dev, struct ata_chip_id *index, int slot) { device_t *children; - u_int32_t devid; - u_int8_t revid; int nchildren, i; - if (device_get_children(device_get_parent(dev), &children, &nchildren)) return 0; - devid = pci_get_devid(dev); - revid = pci_get_revid(dev); - while (index->chipid != 0) { for (i = 0; i < nchildren; i++) { if (((slot >= 0 && pci_get_slot(children[i]) == slot) || slot < 0)&& - pci_get_devid(children[i]) == devid && - pci_get_revid(children[i]) >= revid) { + pci_get_devid(children[i]) == index->chipid && + pci_get_revid(children[i]) >= index->chiprev) { free(children, M_TEMP); return index; } } + index++; } free(children, M_TEMP); return NULL; |