summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorBrad Smith <brad@cvs.openbsd.org>2008-08-28 15:19:04 +0000
committerBrad Smith <brad@cvs.openbsd.org>2008-08-28 15:19:04 +0000
commit9acebe180d49bbd16f76792386c95a3e06392efa (patch)
treef5bda729eafc68a1d148024de887250f2da89d5f /sys/dev
parentfa324f2600bcf43947229a1d9a15ea830e239ee3 (diff)
Do not try to attach to rev 2 BCM4311/BCM4312 chipsets as they
require v4 firmware and the driver currently uses v3 firmware. ok mglocker@
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/pci/if_bwi_pci.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/sys/dev/pci/if_bwi_pci.c b/sys/dev/pci/if_bwi_pci.c
index 7346df6c09e..209c899320f 100644
--- a/sys/dev/pci/if_bwi_pci.c
+++ b/sys/dev/pci/if_bwi_pci.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_bwi_pci.c,v 1.7 2008/05/23 08:49:27 brad Exp $ */
+/* $OpenBSD: if_bwi_pci.c,v 1.8 2008/08/28 15:19:03 brad Exp $ */
/*
* Copyright (c) 2007 Marcus Glocker <mglocker@openbsd.org>
@@ -93,6 +93,18 @@ const struct pci_matchid bwi_pci_devices[] = {
int
bwi_pci_match(struct device *parent, void *match, void *aux)
{
+ struct pci_attach_args *pa = aux;
+
+ /*
+ * The second revision of the BCM4311/BCM4312
+ * chips require v4 firmware.
+ */
+ if (PCI_VENDOR(pa->pa_id) == PCI_VENDOR_BROADCOM &&
+ (PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_BROADCOM_BCM4311 ||
+ PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_BROADCOM_BCM4312) &&
+ PCI_REVISION(pa->pa_class) == 0x02)
+ return (0);
+
return (pci_matchbyid((struct pci_attach_args *)aux, bwi_pci_devices,
sizeof(bwi_pci_devices) / sizeof(bwi_pci_devices[0])));
}