diff options
-rw-r--r-- | drivers/staging/brcm80211/brcmfmac/bcmsdh.c | 32 | ||||
-rw-r--r-- | drivers/staging/brcm80211/brcmfmac/sdio_host.h | 3 |
2 files changed, 14 insertions, 21 deletions
diff --git a/drivers/staging/brcm80211/brcmfmac/bcmsdh.c b/drivers/staging/brcm80211/brcmfmac/bcmsdh.c index 6f88bd2..0cd449d 100644 --- a/drivers/staging/brcm80211/brcmfmac/bcmsdh.c +++ b/drivers/staging/brcm80211/brcmfmac/bcmsdh.c @@ -57,19 +57,6 @@ static struct brcmf_sdioh_driver drvinfo = { NULL, NULL }; module_param(sd_f2_blocksize, int, 0); -int brcmf_sdcard_detach(struct brcmf_sdio_card *card) -{ - if (card != NULL) { - if (card->sdioh) { - brcmf_sdioh_detach(card->sdioh); - card->sdioh = NULL; - } - kfree(card); - } - - return 0; -} - int brcmf_sdcard_iovar_op(struct brcmf_sdio_card *card, const char *name, void *params, int plen, void *arg, int len, bool set) @@ -441,7 +428,6 @@ int brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) sdiodev->card->sdioh = brcmf_sdioh_attach((void *)0); if (!sdiodev->card->sdioh) { - brcmf_sdcard_detach(sdiodev->card); ret = -ENODEV; goto out; } @@ -466,8 +452,8 @@ int brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) } out: - if ((ret) && (sdiodev->card)) - brcmf_sdcard_detach(sdiodev->card); + if (ret) + brcmf_sdio_remove(sdiodev); return ret; } @@ -475,8 +461,18 @@ EXPORT_SYMBOL(brcmf_sdio_probe); int brcmf_sdio_remove(struct brcmf_sdio_dev *sdiodev) { - drvinfo.detach(sdiodev->bus); - brcmf_sdcard_detach(sdiodev->card); + if (sdiodev->bus) { + drvinfo.detach(sdiodev->bus); + sdiodev->bus = NULL; + } + + if (sdiodev->card) { + if (sdiodev->card->sdioh) + brcmf_sdioh_detach(sdiodev->card->sdioh); + kfree(sdiodev->card); + sdiodev->card = NULL; + } + return 0; } EXPORT_SYMBOL(brcmf_sdio_remove); diff --git a/drivers/staging/brcm80211/brcmfmac/sdio_host.h b/drivers/staging/brcm80211/brcmfmac/sdio_host.h index 68b6843..cf3b8fc 100644 --- a/drivers/staging/brcm80211/brcmfmac/sdio_host.h +++ b/drivers/staging/brcm80211/brcmfmac/sdio_host.h @@ -136,9 +136,6 @@ struct brcmf_sdio_dev { void *bus; }; -/* Detach - freeup resources allocated in attach */ -extern int brcmf_sdcard_detach(struct brcmf_sdio_card *card); - /* Enable/disable SD interrupt */ extern int brcmf_sdcard_intr_enable(struct brcmf_sdio_card *card); extern int brcmf_sdcard_intr_disable(struct brcmf_sdio_card *card); |