The IBM AR5424 card uses the same vendor:device ID as an old AR5212. AR5424 is not yet supported though. We detect this and report it. OpenBSD has similar checks but they check for 64-bit. Changes to ath5k_base.[ch] Changes-licensed-under: 3-clause-BSD Changes to hw.c Changes-licensed-under: ISC Signed-off-by: Luis R. Rodriguez <mcgrof@xxxxxxxxx> --- drivers/net/wireless/ath5k/base.c | 1 + drivers/net/wireless/ath5k/base.h | 1 + drivers/net/wireless/ath5k/hw.c | 22 ++++++++++++++++++++++ 3 files changed, 24 insertions(+), 0 deletions(-) diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c index caf9562..97a7613 100644 --- a/drivers/net/wireless/ath5k/base.c +++ b/drivers/net/wireless/ath5k/base.c @@ -2423,6 +2423,7 @@ static int __devinit ath_pci_probe(struct pci_dev *pdev, sc->iobase = mem; sc->cachelsz = csz * sizeof(u32); /* convert to bytes */ sc->opmode = IEEE80211_IF_TYPE_STA; + sc->pci_express = !!pci_find_capability(pdev, PCI_CAP_ID_EXP); mutex_init(&sc->lock); spin_lock_init(&sc->rxbuflock); spin_lock_init(&sc->txbuflock); diff --git a/drivers/net/wireless/ath5k/base.h b/drivers/net/wireless/ath5k/base.h index 1bd1d1f..fde51f1 100644 --- a/drivers/net/wireless/ath5k/base.h +++ b/drivers/net/wireless/ath5k/base.h @@ -131,6 +131,7 @@ struct ath_softc { struct ieee80211_rate rates[AR5K_MAX_RATES * NUM_IEEE80211_MODES]; enum ieee80211_if_types opmode; struct ath_hw *ah; /* Atheros HW */ + unsigned int pci_express : 1;/* indicates PCI Express */ int debug; diff --git a/drivers/net/wireless/ath5k/hw.c b/drivers/net/wireless/ath5k/hw.c index 445fa96..5f2edce 100644 --- a/drivers/net/wireless/ath5k/hw.c +++ b/drivers/net/wireless/ath5k/hw.c @@ -240,6 +240,28 @@ struct ath_hw *ath5k_hw_attach(u16 device, */ hal->ah_single_chip = true; break; + case PCI_DEVICE_ID_ATHEROS_AR5212_IBM: + /* + * IBM ThinkPads use the same device ID for different + * chipset versions... we differentiate by pci_express + */ + if (sc->pci_express) { + /* + * PCI Express "Mini Card" interface based on the + * AR5424 chipset. + */ + hal->ah_single_chip = true; + /* not yet supported */ + dev_info(&sc->pdev->dev, + "PCI-Express AR5424 not yet supported\n"); + ret = -EINVAL; + goto err_free; + } else { + /* Classic Mini PCI interface based on AR5212 */ + hal->ah_single_chip = false; + } + break; + default: /* * Multi chip solutions -- 1.5.2.5 - To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html