From bbae879e0b44f270163519e7e6a9f0391cb73a8d Mon Sep 17 00:00:00 2001 From: Fugang Duan Date: Thu, 18 Apr 2019 14:50:34 +0800 Subject: [PATCH] MLK-21492 brcmfmac: remove func0 that is not provied by mmc stack func0 is not provided by the mmc stack as a function when probing. commit 99d7b6fdfc8c(brcmfmac: Remove func0 from function array) already remove the func0. But commit c37fa19e0128(brcmfmac: Remove array of functions) add fun0 again. That cause NULL pointer issue. Fixes: c37fa19e0128(brcmfmac: Remove array of functions) Reviewed-by: Richard Zhu Signed-off-by: Fugang Duan --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 2 +- drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 5 +++-- drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h | 1 - 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c index 86c16df12f0d..b656901a09e5 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c @@ -918,7 +918,7 @@ static int brcmf_sdiod_probe(struct brcmf_sdio_dev *sdiodev) goto out; } - if (sdiodev->func0->device == SDIO_DEVICE_ID_CYPRESS_4373) { + if (sdiodev->func1->device == SDIO_DEVICE_ID_CYPRESS_4373) { f2_blksz = SDIO_4373_FUNC2_BLOCKSIZE; } diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c index d0054d746714..62c39c32fab5 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c @@ -4328,7 +4328,7 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, bus->hostintmask = HOSTINTMASK; brcmf_sdiod_writel(sdiod, core->base + SD_REG(hostintmask), bus->hostintmask, NULL); - switch (sdiod->func0->device) { + switch (sdiod->func1->device) { case SDIO_DEVICE_ID_CYPRESS_4373: brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes\n", CY_4373_F2_WATERMARK); @@ -4417,7 +4417,8 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, err = brcmf_attach(sdiod->dev, sdiod->settings); if (err != 0) { brcmf_err("brcmf_attach failed\n"); - goto fail; + sdio_claim_host(sdiod->func1); + goto release; } /* ready */ diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h index 9c5c0dcf05b3..a54ce44ead84 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h @@ -183,7 +183,6 @@ struct fmac_ulp { }; struct brcmf_sdio_dev { - struct sdio_func *func0; struct sdio_func *func1; struct sdio_func *func2; u32 sbwad; /* Save backplane window address */ -- 2.17.1