diff options
author | Franky Lin <frankyl@broadcom.com> | 2012-11-05 19:22:24 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-11-14 14:55:56 -0500 |
commit | 38b0b0ddee3270106d740e8df42a5b52beed502b (patch) | |
tree | 09cc5589cf2ad3d618ea7f74c98f5a207e37349f /drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c | |
parent | 7cdf57d34c017e5c4c48069ae46e7cb87979435a (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.c | 7 |
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 | ||
413 | out: | 409 | out: |
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 | } |