brcmsmac: get board and chip info from bcma
authorHauke Mehrtens <hauke@hauke-m.de>
Sun, 29 Apr 2012 00:50:27 +0000 (02:50 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 16 May 2012 16:45:23 +0000 (12:45 -0400)
bcma now provide this data and brcmsmac should get it from there and
not parse it by its self.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Tested-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/brcm80211/brcmsmac/aiutils.c

index 441b3cce25f31fb1a93f73971da566c637998a6f..d2c8f14c0597c8c5985b328175f4a1a2c0a22fb9 100644 (file)
@@ -542,27 +542,12 @@ ai_buscore_setup(struct si_info *sii, struct bcma_device *cc)
        return true;
 }
 
-/*
- * get boardtype and boardrev
- */
-static __used void ai_nvram_process(struct si_info *sii)
-{
-       uint w = 0;
-
-       /* do a pci config read to get subsystem id and subvendor id */
-       pci_read_config_dword(sii->pcibus, PCI_SUBSYSTEM_VENDOR_ID, &w);
-
-       sii->pub.boardvendor = w & 0xffff;
-       sii->pub.boardtype = (w >> 16) & 0xffff;
-}
-
 static struct si_info *ai_doattach(struct si_info *sii,
                                   struct bcma_bus *pbus)
 {
        struct si_pub *sih = &sii->pub;
        u32 w, savewin;
        struct bcma_device *cc;
-       uint socitype;
        struct ssb_sprom *sprom = &pbus->sprom;
 
        savewin = 0;
@@ -577,30 +562,15 @@ static struct si_info *ai_doattach(struct si_info *sii,
        if (!ai_buscore_prep(sii))
                return NULL;
 
-       /*
-        * ChipID recognition.
-        *   We assume we can read chipid at offset 0 from the regs arg.
-        *   If we add other chiptypes (or if we need to support old sdio
-        *   hosts w/o chipcommon), some way of recognizing them needs to
-        *   be added here.
-        */
-       w = bcma_read32(cc, CHIPCREGOFFS(chipid));
-       socitype = (w & CID_TYPE_MASK) >> CID_TYPE_SHIFT;
-       /* Might as wll fill in chip id rev & pkg */
-       sih->chip = w & CID_ID_MASK;
-       sih->chiprev = (w & CID_REV_MASK) >> CID_REV_SHIFT;
-       sih->chippkg = (w & CID_PKG_MASK) >> CID_PKG_SHIFT;
-
-       /* scan for cores */
-       if (socitype != SOCI_AI)
-               return NULL;
+       sih->chip = pbus->chipinfo.id;
+       sih->chiprev = pbus->chipinfo.rev;
+       sih->chippkg = pbus->chipinfo.pkg;
+       sih->boardvendor = pbus->boardinfo.vendor;
+       sih->boardtype = pbus->boardinfo.type;
 
-       SI_MSG("Found chip type AI (0x%08x)\n", w);
        if (!ai_buscore_setup(sii, cc))
                goto exit;
 
-       ai_nvram_process(sii);
-
        /* === NVRAM, clock is ready === */
        bcma_write32(cc, CHIPCREGOFFS(gpiopullup), 0);
        bcma_write32(cc, CHIPCREGOFFS(gpiopulldown), 0);