summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/brcm80211/brcmfmac/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/brcm80211/brcmfmac/core.c')
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/core.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/core.c b/drivers/net/wireless/brcm80211/brcmfmac/core.c
index b8520c3..5f16a7e 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/core.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/core.c
@@ -948,6 +948,7 @@ int brcmf_bus_start(struct device *dev)
struct brcmf_pub *drvr = bus_if->drvr;
struct brcmf_if *ifp;
struct brcmf_if *p2p_ifp;
+ struct brcmf_rev_info_le revinfo;
brcmf_dbg(TRACE, "\n");
@@ -971,6 +972,20 @@ int brcmf_bus_start(struct device *dev)
if (ret < 0)
goto fail;
+ /* assure we have chipid before feature attach */
+ if (!bus_if->chip) {
+ ret = brcmf_fil_cmd_data_get(ifp, BRCMF_C_GET_REVINFO, &revinfo,
+ sizeof(revinfo));
+ if (ret < 0) {
+ brcmf_err("no chipid determined - device may malfunction\n");
+ } else {
+ bus_if->chip = le32_to_cpu(revinfo.chipnum);
+ bus_if->chiprev = le32_to_cpu(revinfo.chiprev);
+ brcmf_dbg(INFO, "firmware revinfo: chip %x (%d) rev %d\n",
+ bus_if->chip, bus_if->chip,
+ bus_if->chiprev);
+ }
+ }
brcmf_feat_attach(drvr);
ret = brcmf_fws_init(drvr);