brcm80211: fmac: chip attach code flow clean up
authorFranky Lin <frankyl@broadcom.com>
Fri, 4 Nov 2011 21:23:35 +0000 (22:23 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 9 Nov 2011 21:14:01 +0000 (16:14 -0500)
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>
drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.c
drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.h

index 5e7b70e0f4ea6ef556f07997f82135b33f4dd12a..868cb9deacaa118d38f2051abfcf2d4ef10a4807 100644 (file)
@@ -3867,31 +3867,6 @@ static void brcmf_sdbrcm_sdiod_drive_strength_init(struct brcmf_bus *bus,
        }
 }
 
-static int
-brcmf_sdbrcm_chip_attach(struct brcmf_bus *bus, u32 regs)
-{
-       struct chip_info *ci;
-       int err;
-
-       brcmf_dbg(TRACE, "Enter\n");
-
-       /* alloc chip_info_t */
-       ci = kzalloc(sizeof(struct chip_info), GFP_ATOMIC);
-       if (NULL == ci)
-               return -ENOMEM;
-
-       err = brcmf_sdio_chip_attach(bus->sdiodev, ci, regs);
-       if (err)
-               goto fail;
-
-       bus->ci = ci;
-       return 0;
-fail:
-       bus->ci = NULL;
-       kfree(ci);
-       return err;
-}
-
 static bool
 brcmf_sdbrcm_probe_attach(struct brcmf_bus *bus, u32 regsva)
 {
@@ -3913,7 +3888,7 @@ brcmf_sdbrcm_probe_attach(struct brcmf_bus *bus, u32 regsva)
 #endif                         /* BCMDBG */
 
        /*
-        * Force PLL off until brcmf_sdbrcm_chip_attach()
+        * Force PLL off until brcmf_sdio_chip_attach()
         * programs PLL control regs
         */
 
@@ -3931,8 +3906,8 @@ brcmf_sdbrcm_probe_attach(struct brcmf_bus *bus, u32 regsva)
                goto fail;
        }
 
-       if (brcmf_sdbrcm_chip_attach(bus, regsva)) {
-               brcmf_dbg(ERROR, "brcmf_sdbrcm_chip_attach failed!\n");
+       if (brcmf_sdio_chip_attach(bus->sdiodev, &bus->ci, regsva)) {
+               brcmf_dbg(ERROR, "brcmf_sdio_chip_attach failed!\n");
                goto fail;
        }
 
index 002157f0ce290e2c5a3b17ca5915e99cdf485a57..10befbfa7e1f81dcab906e6662fece73f393381f 100644 (file)
@@ -252,17 +252,25 @@ brcmf_sdio_chip_buscoresetup(struct brcmf_sdio_dev *sdiodev,
 }
 
 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 @@ int brcmf_sdio_chip_attach(struct brcmf_sdio_dev *sdiodev,
        brcmf_sdcard_reg_write(sdiodev,
                CORE_CC_REG(ci->cccorebase, gpiopulldown), 4, 0);
 
+       *ci_ptr = ci;
+       return 0;
+
+err:
+       kfree(ci);
        return ret;
 }
index 17007bdad56449036ec590437ff409ac8b8e3f70..25ac3857039ecf66e6c50cffa8e6afa0080257dc 100644 (file)
@@ -137,7 +137,6 @@ struct sbconfig {
 extern void brcmf_sdio_chip_coredisable(struct brcmf_sdio_dev *sdiodev,
                                        u32 corebase);
 extern int brcmf_sdio_chip_attach(struct brcmf_sdio_dev *sdiodev,
-                                 struct chip_info *ci, u32 regs);
-
+                                 struct chip_info **ci_ptr, u32 regs);
 
 #endif         /* _BRCMFMAC_SDIO_CHIP_H_ */