]> Pileus Git - ~andy/linux/blobdiff - drivers/net/wireless/ath/ath5k/reset.c
ath5k: move ath5k_hw_register_timeout() into reset.c
[~andy/linux] / drivers / net / wireless / ath / ath5k / reset.c
index 8decf21269122a3950e301b59f5b93ee2b5ff05e..8bd62c130b264cbe920d2f8d26c2fc552f59aca8 100644 (file)
@@ -19,8 +19,6 @@
  *
  */
 
-#define _ATH5K_RESET
-
 /*****************************\
   Reset functions and helpers
 \*****************************/
 #include "base.h"
 #include "debug.h"
 
+/*
+ * Check if a register write has been completed
+ */
+int ath5k_hw_register_timeout(struct ath5k_hw *ah, u32 reg, u32 flag, u32 val,
+                             bool is_set)
+{
+       int i;
+       u32 data;
+
+       for (i = AR5K_TUNE_REGISTER_TIMEOUT; i > 0; i--) {
+               data = ath5k_hw_reg_read(ah, reg);
+               if (is_set && (data & flag))
+                       break;
+               else if ((data & flag) == val)
+                       break;
+               udelay(15);
+       }
+
+       return (i <= 0) ? -EAGAIN : 0;
+}
+
 /**
  * ath5k_hw_write_ofdm_timings - set OFDM timings on AR5212
  *
@@ -1386,5 +1405,3 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,
 
        return 0;
 }
-
-#undef _ATH5K_RESET