aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c
diff options
context:
space:
mode:
authorFranky Lin <frankyl@broadcom.com>2012-11-05 19:22:24 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-11-14 14:55:56 -0500
commit38b0b0ddee3270106d740e8df42a5b52beed502b (patch)
tree09cc5589cf2ad3d618ea7f74c98f5a207e37349f /drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c
parent7cdf57d34c017e5c4c48069ae46e7cb87979435a (diff)
brcmfmac: protect consecutive SDIO access with sdio_claim_host
Semaphore sdsem is used to protect consecutive memory access through SDIO bus. Same functionality is provided by sdio_claim_host/ sdio_release_host interface as well. Replace sdsem with sdio_claim_host. Signed-off-by: Franky Lin <frankyl@broadcom.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c')
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c
index c3247d5b3c22..c62ec2a5b271 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c
@@ -372,9 +372,7 @@ static int brcmf_sdioh_enablefuncs(struct brcmf_sdio_dev *sdiodev)
372 } 372 }
373 373
374 /* Enable Function 1 */ 374 /* Enable Function 1 */
375 sdio_claim_host(sdiodev->func[1]);
376 err_ret = sdio_enable_func(sdiodev->func[1]); 375 err_ret = sdio_enable_func(sdiodev->func[1]);
377 sdio_release_host(sdiodev->func[1]);
378 if (err_ret) 376 if (err_ret)
379 brcmf_dbg(ERROR, "Failed to enable F1 Err: 0x%08x\n", err_ret); 377 brcmf_dbg(ERROR, "Failed to enable F1 Err: 0x%08x\n", err_ret);
380 378
@@ -393,16 +391,14 @@ int brcmf_sdioh_attach(struct brcmf_sdio_dev *sdiodev)
393 sdiodev->num_funcs = 2; 391 sdiodev->num_funcs = 2;
394 392
395 sdio_claim_host(sdiodev->func[1]); 393 sdio_claim_host(sdiodev->func[1]);
394
396 err_ret = sdio_set_block_size(sdiodev->func[1], SDIO_FUNC1_BLOCKSIZE); 395 err_ret = sdio_set_block_size(sdiodev->func[1], SDIO_FUNC1_BLOCKSIZE);
397 sdio_release_host(sdiodev->func[1]);
398 if (err_ret) { 396 if (err_ret) {
399 brcmf_dbg(ERROR, "Failed to set F1 blocksize\n"); 397 brcmf_dbg(ERROR, "Failed to set F1 blocksize\n");
400 goto out; 398 goto out;
401 } 399 }
402 400
403 sdio_claim_host(sdiodev->func[2]);
404 err_ret = sdio_set_block_size(sdiodev->func[2], SDIO_FUNC2_BLOCKSIZE); 401 err_ret = sdio_set_block_size(sdiodev->func[2], SDIO_FUNC2_BLOCKSIZE);
405 sdio_release_host(sdiodev->func[2]);
406 if (err_ret) { 402 if (err_ret) {
407 brcmf_dbg(ERROR, "Failed to set F2 blocksize\n"); 403 brcmf_dbg(ERROR, "Failed to set F2 blocksize\n");
408 goto out; 404 goto out;
@@ -411,6 +407,7 @@ int brcmf_sdioh_attach(struct brcmf_sdio_dev *sdiodev)
411 brcmf_sdioh_enablefuncs(sdiodev); 407 brcmf_sdioh_enablefuncs(sdiodev);
412 408
413out: 409out:
410 sdio_release_host(sdiodev->func[1]);
414 brcmf_dbg(TRACE, "Done\n"); 411 brcmf_dbg(TRACE, "Done\n");
415 return err_ret; 412 return err_ret;
416} 413}