aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/broadcom
diff options
context:
space:
mode:
authorArend Van Spriel <arend.vanspriel@broadcom.com>2016-07-15 06:39:13 -0400
committerKalle Valo <kvalo@codeaurora.org>2016-07-18 15:41:48 -0400
commitfd3ed33f51c2a586412d35b4f64803f019ab589f (patch)
treec9766c06c406e14de8c9481214af343cf4d869af /drivers/net/wireless/broadcom
parent82bc9ab6a8f577d2174a736c33f3d4ecf7d9ef47 (diff)
brcmfmac: defer DPC processing during probe
The sdio dpc starts processing when in SDIOD_STATE_DATA. This state was entered right after firmware download. This patch moves that transition just before enabling sdio interrupt handling thus avoiding watchdog expiry which would put the bus to sleep while probing. Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com> Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com> Reviewed-by: Franky Lin <franky.lin@broadcom.com> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless/broadcom')
-rw-r--r--drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index 5fb8b91b9326..68ab3ac15650 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -3305,10 +3305,6 @@ static int brcmf_sdio_download_firmware(struct brcmf_sdio *bus,
3305 goto err; 3305 goto err;
3306 } 3306 }
3307 3307
3308 /* Allow full data communication using DPC from now on. */
3309 brcmf_sdiod_change_state(bus->sdiodev, BRCMF_SDIOD_DATA);
3310 bcmerror = 0;
3311
3312err: 3308err:
3313 brcmf_sdio_clkctl(bus, CLK_SDONLY, false); 3309 brcmf_sdio_clkctl(bus, CLK_SDONLY, false);
3314 sdio_release_host(bus->sdiodev->func[1]); 3310 sdio_release_host(bus->sdiodev->func[1]);
@@ -4046,6 +4042,9 @@ static void brcmf_sdio_firmware_callback(struct device *dev,
4046 } 4042 }
4047 4043
4048 if (err == 0) { 4044 if (err == 0) {
4045 /* Allow full data communication using DPC from now on. */
4046 brcmf_sdiod_change_state(bus->sdiodev, BRCMF_SDIOD_DATA);
4047
4049 err = brcmf_sdiod_intr_register(sdiodev); 4048 err = brcmf_sdiod_intr_register(sdiodev);
4050 if (err != 0) 4049 if (err != 0)
4051 brcmf_err("intr register failed:%d\n", err); 4050 brcmf_err("intr register failed:%d\n", err);