diff options
Diffstat (limited to 'drivers/ssb/scan.c')
-rw-r--r-- | drivers/ssb/scan.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/drivers/ssb/scan.c b/drivers/ssb/scan.c index 9738cad4ba13..45e5babd3961 100644 --- a/drivers/ssb/scan.c +++ b/drivers/ssb/scan.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/pci.h> | 17 | #include <linux/pci.h> |
18 | #include <linux/io.h> | 18 | #include <linux/io.h> |
19 | 19 | ||
20 | #include <pcmcia/cs.h> | ||
21 | #include <pcmcia/cistpl.h> | 20 | #include <pcmcia/cistpl.h> |
22 | #include <pcmcia/ds.h> | 21 | #include <pcmcia/ds.h> |
23 | 22 | ||
@@ -259,7 +258,10 @@ static int we_support_multiple_80211_cores(struct ssb_bus *bus) | |||
259 | #ifdef CONFIG_SSB_PCIHOST | 258 | #ifdef CONFIG_SSB_PCIHOST |
260 | if (bus->bustype == SSB_BUSTYPE_PCI) { | 259 | if (bus->bustype == SSB_BUSTYPE_PCI) { |
261 | if (bus->host_pci->vendor == PCI_VENDOR_ID_BROADCOM && | 260 | if (bus->host_pci->vendor == PCI_VENDOR_ID_BROADCOM && |
262 | bus->host_pci->device == 0x4324) | 261 | ((bus->host_pci->device == 0x4313) || |
262 | (bus->host_pci->device == 0x431A) || | ||
263 | (bus->host_pci->device == 0x4321) || | ||
264 | (bus->host_pci->device == 0x4324))) | ||
263 | return 1; | 265 | return 1; |
264 | } | 266 | } |
265 | #endif /* CONFIG_SSB_PCIHOST */ | 267 | #endif /* CONFIG_SSB_PCIHOST */ |
@@ -308,7 +310,7 @@ int ssb_bus_scan(struct ssb_bus *bus, | |||
308 | } else { | 310 | } else { |
309 | if (bus->bustype == SSB_BUSTYPE_PCI) { | 311 | if (bus->bustype == SSB_BUSTYPE_PCI) { |
310 | bus->chip_id = pcidev_to_chipid(bus->host_pci); | 312 | bus->chip_id = pcidev_to_chipid(bus->host_pci); |
311 | pci_read_config_word(bus->host_pci, PCI_REVISION_ID, | 313 | pci_read_config_byte(bus->host_pci, PCI_REVISION_ID, |
312 | &bus->chip_rev); | 314 | &bus->chip_rev); |
313 | bus->chip_package = 0; | 315 | bus->chip_package = 0; |
314 | } else { | 316 | } else { |
@@ -406,10 +408,10 @@ int ssb_bus_scan(struct ssb_bus *bus, | |||
406 | /* Ignore PCI cores on PCI-E cards. | 408 | /* Ignore PCI cores on PCI-E cards. |
407 | * Ignore PCI-E cores on PCI cards. */ | 409 | * Ignore PCI-E cores on PCI cards. */ |
408 | if (dev->id.coreid == SSB_DEV_PCI) { | 410 | if (dev->id.coreid == SSB_DEV_PCI) { |
409 | if (bus->host_pci->is_pcie) | 411 | if (pci_is_pcie(bus->host_pci)) |
410 | continue; | 412 | continue; |
411 | } else { | 413 | } else { |
412 | if (!bus->host_pci->is_pcie) | 414 | if (!pci_is_pcie(bus->host_pci)) |
413 | continue; | 415 | continue; |
414 | } | 416 | } |
415 | } | 417 | } |
@@ -421,6 +423,16 @@ int ssb_bus_scan(struct ssb_bus *bus, | |||
421 | bus->pcicore.dev = dev; | 423 | bus->pcicore.dev = dev; |
422 | #endif /* CONFIG_SSB_DRIVER_PCICORE */ | 424 | #endif /* CONFIG_SSB_DRIVER_PCICORE */ |
423 | break; | 425 | break; |
426 | case SSB_DEV_ETHERNET: | ||
427 | if (bus->bustype == SSB_BUSTYPE_PCI) { | ||
428 | if (bus->host_pci->vendor == PCI_VENDOR_ID_BROADCOM && | ||
429 | (bus->host_pci->device & 0xFF00) == 0x4300) { | ||
430 | /* This is a dangling ethernet core on a | ||
431 | * wireless device. Ignore it. */ | ||
432 | continue; | ||
433 | } | ||
434 | } | ||
435 | break; | ||
424 | default: | 436 | default: |
425 | break; | 437 | break; |
426 | } | 438 | } |