brcm80211: fmac: chip attach code flow clean up
Merged brcmf_sdbrcm_chip_attach into brcmf_sdio_chip_attach
for better readability.
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.c b/drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.c
index 002157f..10befbf 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.c
@@ -252,17 +252,25 @@
}
int brcmf_sdio_chip_attach(struct brcmf_sdio_dev *sdiodev,
- struct chip_info *ci, u32 regs)
+ struct chip_info **ci_ptr, u32 regs)
{
- int ret = 0;
+ int ret;
+ struct chip_info *ci;
+
+ brcmf_dbg(TRACE, "Enter\n");
+
+ /* alloc chip_info_t */
+ ci = kzalloc(sizeof(struct chip_info), GFP_ATOMIC);
+ if (!ci)
+ return -ENOMEM;
ret = brcmf_sdio_chip_buscoreprep(sdiodev);
if (ret != 0)
- return ret;
+ goto err;
ret = brcmf_sdio_chip_recognition(sdiodev, ci, regs);
if (ret != 0)
- return ret;
+ goto err;
brcmf_sdio_chip_buscoresetup(sdiodev, ci);
@@ -271,5 +279,10 @@
brcmf_sdcard_reg_write(sdiodev,
CORE_CC_REG(ci->cccorebase, gpiopulldown), 4, 0);
+ *ci_ptr = ci;
+ return 0;
+
+err:
+ kfree(ci);
return ret;
}