diff options
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/bcm43xx/bcm43xx_main.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/drivers/net/wireless/bcm43xx/bcm43xx_main.c b/drivers/net/wireless/bcm43xx/bcm43xx_main.c index 77d0e390b021..085d7857fe31 100644 --- a/drivers/net/wireless/bcm43xx/bcm43xx_main.c +++ b/drivers/net/wireless/bcm43xx/bcm43xx_main.c | |||
@@ -2146,6 +2146,13 @@ out: | |||
2146 | return err; | 2146 | return err; |
2147 | } | 2147 | } |
2148 | 2148 | ||
2149 | #ifdef CONFIG_BCM947XX | ||
2150 | static struct pci_device_id bcm43xx_47xx_ids[] = { | ||
2151 | { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4324) }, | ||
2152 | { 0 } | ||
2153 | }; | ||
2154 | #endif | ||
2155 | |||
2149 | static int bcm43xx_initialize_irq(struct bcm43xx_private *bcm) | 2156 | static int bcm43xx_initialize_irq(struct bcm43xx_private *bcm) |
2150 | { | 2157 | { |
2151 | int res; | 2158 | int res; |
@@ -2155,11 +2162,15 @@ static int bcm43xx_initialize_irq(struct bcm43xx_private *bcm) | |||
2155 | bcm->irq = bcm->pci_dev->irq; | 2162 | bcm->irq = bcm->pci_dev->irq; |
2156 | #ifdef CONFIG_BCM947XX | 2163 | #ifdef CONFIG_BCM947XX |
2157 | if (bcm->pci_dev->bus->number == 0) { | 2164 | if (bcm->pci_dev->bus->number == 0) { |
2158 | struct pci_dev *d = NULL; | 2165 | struct pci_dev *d; |
2159 | /* FIXME: we will probably need more device IDs here... */ | 2166 | struct pci_device_id *id; |
2160 | d = pci_find_device(PCI_VENDOR_ID_BROADCOM, 0x4324, NULL); | 2167 | for (id = bcm43xx_47xx_ids; id->vendor; id++) { |
2161 | if (d != NULL) { | 2168 | d = pci_get_device(id->vendor, id->device, NULL); |
2162 | bcm->irq = d->irq; | 2169 | if (d != NULL) { |
2170 | bcm->irq = d->irq; | ||
2171 | pci_dev_put(d); | ||
2172 | break; | ||
2173 | } | ||
2163 | } | 2174 | } |
2164 | } | 2175 | } |
2165 | #endif | 2176 | #endif |