brcm80211: fmac: only return success in brcmf_sdbrcm_bus_init() when true
authorArend van Spriel <arend@broadcom.com>
Thu, 9 Feb 2012 20:09:04 +0000 (21:09 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 22 Feb 2012 19:48:51 +0000 (14:48 -0500)
The function brcmf_sdbrcm_bus_init() always returned success except for
firmware download failure. However, also when enabling SDIO function 2
is failing the function should return failure. This patch fixes that.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Franky (Zhenhui) 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

index b20029e..47a192d 100644 (file)
@@ -3467,13 +3467,12 @@ static int brcmf_sdbrcm_bus_init(struct device *dev)
 
                /* Set bus state according to enable result */
                bus_if->state = BRCMF_BUS_DATA;
-       }
-
-       else {
+       } else {
                /* Disable F2 again */
                enable = SDIO_FUNC_ENABLE_1;
                brcmf_sdcard_cfg_write(bus->sdiodev, SDIO_FUNC_0,
                                       SDIO_CCCR_IOEx, enable, NULL);
+               ret = -ENODEV;
        }
 
        /* Restore previous clock setting */
@@ -3481,7 +3480,7 @@ static int brcmf_sdbrcm_bus_init(struct device *dev)
                               SBSDIO_FUNC1_CHIPCLKCSR, saveclk, &err);
 
        /* If we didn't come up, turn off backplane clock */
-       if (bus_if->state != BRCMF_BUS_DATA)
+       if (!ret)
                brcmf_sdbrcm_clkctl(bus, CLK_NONE, false);
 
 exit: