OSDN Git Service

staging: brcm80211: remove global wait queue head sdioh_spinwait_sleep
authorFranky Lin <frankyl@broadcom.com>
Mon, 8 Aug 2011 13:58:29 +0000 (15:58 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 23 Aug 2011 20:00:03 +0000 (13:00 -0700)
Remove global wait queue head sdioh_spinwait_sleep in fullmac.

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>
drivers/staging/brcm80211/brcmfmac/dhd.h
drivers/staging/brcm80211/brcmfmac/dhd_sdio.c

index 9afd9ff..3c950cc 100644 (file)
@@ -619,28 +619,6 @@ struct bcmevent_name {
        const char *name;
 };
 
-#if defined(CONFIG_PM_SLEEP)
-#define BRCMF_SPINWAIT_SLEEP_INIT(a) DECLARE_WAIT_QUEUE_HEAD(a);
-#define BRCMF_SPINWAIT_SLEEP(a, exp, us) do { \
-               uint countdown = (us) + 9999; \
-               while ((exp) && (countdown >= 10000)) { \
-                       wait_event_timeout(a, false, HZ/100); \
-                       countdown -= 10000; \
-               } \
-       } while (0)
-
-#else
-#define BRCMF_SPINWAIT_SLEEP_INIT(a)
-#define BRCMF_SPINWAIT_SLEEP(a, exp, us)  do { \
-               uint countdown = (us) + 9; \
-               while ((exp) && (countdown >= 10)) { \
-                       udelay(10);  \
-                       countdown -= 10;  \
-               } \
-       } while (0)
-
-#endif /* defined(CONFIG_PM_SLEEP) */
-
 /*
  * Insmod parameters for debug/test
  */
index 7a0d036..e9806c3 100644 (file)
@@ -444,8 +444,6 @@ struct rte_console {
        (((prio) == PRIO_8021D_NONE || (prio) == PRIO_8021D_BE) ? \
        ((prio^2)) : (prio))
 
-BRCMF_SPINWAIT_SLEEP_INIT(sdioh_spinwait_sleep);
-
 /*
  * Core reg address translation.
  * Both macro's returns a 32 bits byte address on the backplane bus.
@@ -1033,6 +1031,7 @@ static int brcmf_sdbrcm_htclk(struct brcmf_bus *bus, bool on, bool pendok)
        int err;
        u8 clkctl, clkreq, devctl;
        struct brcmf_sdio_card *card;
+       unsigned long timeout;
 
        BRCMF_TRACE(("%s: Enter\n", __func__));
 
@@ -1102,14 +1101,16 @@ static int brcmf_sdbrcm_htclk(struct brcmf_bus *bus, bool on, bool pendok)
                }
 
                /* Otherwise, wait here (polling) for HT Avail */
-               if (!SBSDIO_CLKAV(clkctl, bus->alp_only)) {
-                       BRCMF_SPINWAIT_SLEEP(sdioh_spinwait_sleep,
-                              ((clkctl =
-                                brcmf_sdcard_cfg_read(card, SDIO_FUNC_1,
-                                        SBSDIO_FUNC1_CHIPCLKCSR,
-                                                &err)),
-                               !SBSDIO_CLKAV(clkctl, bus->alp_only)),
-                              PMU_MAX_TRANSITION_DLY);
+               timeout = jiffies +
+                         msecs_to_jiffies(PMU_MAX_TRANSITION_DLY/1000);
+               while (!SBSDIO_CLKAV(clkctl, bus->alp_only)) {
+                       clkctl = brcmf_sdcard_cfg_read(card, SDIO_FUNC_1,
+                                                      SBSDIO_FUNC1_CHIPCLKCSR,
+                                                      &err);
+                       if (time_after(jiffies, timeout))
+                               break;
+                       else
+                               usleep_range(5000, 10000);
                }
                if (err) {
                        BRCMF_ERROR(("%s: HT Avail request error: %d\n",