Skip to content

Commit

Permalink
staging: brcm80211: placed suspend flag in gInstance in brcmfmac
Browse files Browse the repository at this point in the history
One of the steps to remove global variable. gInstance will be
replaced by brcmf_sdio_dev in the upcoming patch.

Reviewed-by: Roland Vossen <rvossen@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Franky Lin authored and Greg Kroah-Hartman committed Aug 23, 2011
1 parent b60987a commit bea4f54
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 18 deletions.
35 changes: 17 additions & 18 deletions drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@ static int brcmf_sdio_resume(struct device *dev);
uint sd_f2_blocksize = 512; /* Default blocksize */

struct brcmf_sdmmc_instance *gInstance;
static atomic_t brcmf_mmc_suspend;

/* devices we support, null terminated */
static const struct sdio_device_id brcmf_sdmmc_ids[] = {
Expand Down Expand Up @@ -100,17 +99,17 @@ DECLARE_WAIT_QUEUE_HEAD(sdioh_request_byte_wait);
DECLARE_WAIT_QUEUE_HEAD(sdioh_request_word_wait);
DECLARE_WAIT_QUEUE_HEAD(sdioh_request_packet_wait);
DECLARE_WAIT_QUEUE_HEAD(sdioh_request_buffer_wait);
#define BRCMF_PM_RESUME_WAIT(a) do { \
#define BRCMF_PM_RESUME_WAIT(a, b) do { \
int retry = 0; \
while (atomic_read(&brcmf_mmc_suspend) && retry++ != 30) { \
while (atomic_read(&b->suspend) && retry++ != 30) { \
wait_event_timeout(a, false, HZ/100); \
} \
} while (0)
#define BRCMF_PM_RESUME_RETURN_ERROR(a) \
do { if (atomic_read(&brcmf_mmc_suspend)) return a; } while (0)
#define BRCMF_PM_RESUME_RETURN_ERROR(a, b) \
do { if (atomic_read(&b->suspend)) return a; } while (0)
#else
#define BRCMF_PM_RESUME_WAIT(a)
#define BRCMF_PM_RESUME_RETURN_ERROR(a)
#define BRCMF_PM_RESUME_WAIT(a, b)
#define BRCMF_PM_RESUME_RETURN_ERROR(a, b)
#endif /* CONFIG_PM_SLEEP */

static int
Expand Down Expand Up @@ -571,8 +570,8 @@ brcmf_sdioh_request_byte(struct sdioh_info *sd, uint rw, uint func,
BRCMF_INFO(("%s: rw=%d, func=%d, addr=0x%05x\n", __func__, rw, func,
regaddr));

BRCMF_PM_RESUME_WAIT(sdioh_request_byte_wait);
BRCMF_PM_RESUME_RETURN_ERROR(-EIO);
BRCMF_PM_RESUME_WAIT(sdioh_request_byte_wait, gInstance);
BRCMF_PM_RESUME_RETURN_ERROR(-EIO, gInstance);
if (rw) { /* CMD52 Write */
if (func == 0) {
/* Can only directly write to some F0 registers.
Expand Down Expand Up @@ -678,8 +677,8 @@ brcmf_sdioh_request_word(struct sdioh_info *sd, uint cmd_type, uint rw,
BRCMF_INFO(("%s: cmd_type=%d, rw=%d, func=%d, addr=0x%05x, nbytes=%d\n",
__func__, cmd_type, rw, func, addr, nbytes));

BRCMF_PM_RESUME_WAIT(sdioh_request_word_wait);
BRCMF_PM_RESUME_RETURN_ERROR(-EIO);
BRCMF_PM_RESUME_WAIT(sdioh_request_word_wait, gInstance);
BRCMF_PM_RESUME_RETURN_ERROR(-EIO, gInstance);
/* Claim host controller */
sdio_claim_host(gInstance->func[func]);

Expand Down Expand Up @@ -728,8 +727,8 @@ brcmf_sdioh_request_packet(struct sdioh_info *sd, uint fix_inc, uint write,

BRCMF_TRACE(("%s: Enter\n", __func__));

BRCMF_PM_RESUME_WAIT(sdioh_request_packet_wait);
BRCMF_PM_RESUME_RETURN_ERROR(-EIO);
BRCMF_PM_RESUME_WAIT(sdioh_request_packet_wait, gInstance);
BRCMF_PM_RESUME_RETURN_ERROR(-EIO, gInstance);

/* Claim host controller */
sdio_claim_host(gInstance->func[func]);
Expand Down Expand Up @@ -806,8 +805,8 @@ brcmf_sdioh_request_buffer(struct sdioh_info *sd, uint pio_dma, uint fix_inc,

BRCMF_TRACE(("%s: Enter\n", __func__));

BRCMF_PM_RESUME_WAIT(sdioh_request_buffer_wait);
BRCMF_PM_RESUME_RETURN_ERROR(-EIO);
BRCMF_PM_RESUME_WAIT(sdioh_request_buffer_wait, gInstance);
BRCMF_PM_RESUME_RETURN_ERROR(-EIO, gInstance);
/* Case 1: we don't have a packet. */
if (pkt == NULL) {
BRCMF_DATA(("%s: Creating new %s Packet, len=%d\n",
Expand Down Expand Up @@ -981,7 +980,7 @@ static int brcmf_ops_sdio_probe(struct sdio_func *func,
sdiodev->func1 = func;
dev_set_drvdata(&func->card->dev, sdiodev);

atomic_set(&brcmf_mmc_suspend, false);
atomic_set(&gInstance->suspend, false);
}

gInstance->func[func->num] = func;
Expand Down Expand Up @@ -1029,7 +1028,7 @@ static int brcmf_sdio_suspend(struct device *dev)

BRCMF_TRACE(("%s\n", __func__));

atomic_set(&brcmf_mmc_suspend, true);
atomic_set(&gInstance->suspend, true);

sdio_flags = sdio_get_host_pm_caps(gInstance->func[1]);
if (!(sdio_flags & MMC_PM_KEEP_POWER)) {
Expand All @@ -1056,7 +1055,7 @@ static int brcmf_sdio_resume(struct device *dev)

sdiodev = dev_get_drvdata(&func->card->dev);
brcmf_sdio_wdtmr_enable(sdiodev, true);
atomic_set(&brcmf_mmc_suspend, false);
atomic_set(&gInstance->suspend, false);
return 0;
}
#endif /* CONFIG_PM_SLEEP */
Expand Down
1 change: 1 addition & 0 deletions drivers/staging/brcm80211/brcmfmac/sdio_host.h
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ struct brcmf_sdmmc_instance {
struct sdioh_info *sd;
struct sdio_func *func[SDIOD_MAX_IOFUNCS];
u32 host_claimed;
atomic_t suspend; /* suspend flag */
};

struct brcmf_sdio_dev {
Expand Down

0 comments on commit bea4f54

Please sign in to comment.