]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/net/wireless/wl12xx/wl1251_ps.c
Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
[karo-tx-linux.git] / drivers / net / wireless / wl12xx / wl1251_ps.c
index 9931b197ff77c42c3d6aad6ce6964ff4d16a42b1..851dfb65e474eb80a916a802a42b5e0d38b42a20 100644 (file)
@@ -26,7 +26,8 @@
 #include "wl1251_cmd.h"
 #include "wl1251_io.h"
 
-#define WL1251_WAKEUP_TIMEOUT 2000
+/* in ms */
+#define WL1251_WAKEUP_TIMEOUT 100
 
 void wl1251_elp_work(struct work_struct *work)
 {
@@ -67,7 +68,7 @@ void wl1251_ps_elp_sleep(struct wl1251 *wl)
 
 int wl1251_ps_elp_wakeup(struct wl1251 *wl)
 {
-       unsigned long timeout;
+       unsigned long timeout, start;
        u32 elp_reg;
 
        if (!wl->elp)
@@ -75,6 +76,7 @@ int wl1251_ps_elp_wakeup(struct wl1251 *wl)
 
        wl1251_debug(DEBUG_PSM, "waking up chip from elp");
 
+       start = jiffies;
        timeout = jiffies + msecs_to_jiffies(WL1251_WAKEUP_TIMEOUT);
 
        wl1251_write32(wl, HW_ACCESS_ELP_CTRL_REG_ADDR, ELPCTRL_WAKE_UP);
@@ -95,8 +97,7 @@ int wl1251_ps_elp_wakeup(struct wl1251 *wl)
        }
 
        wl1251_debug(DEBUG_PSM, "wakeup time: %u ms",
-                    jiffies_to_msecs(jiffies) -
-                    (jiffies_to_msecs(timeout) - WL1251_WAKEUP_TIMEOUT));
+                    jiffies_to_msecs(jiffies - start));
 
        wl->elp = false;