diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-3945-io.h')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-3945-io.h | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945-io.h b/drivers/net/wireless/iwlwifi/iwl-3945-io.h index 7dea1552a906..2440fd664dd5 100644 --- a/drivers/net/wireless/iwlwifi/iwl-3945-io.h +++ b/drivers/net/wireless/iwlwifi/iwl-3945-io.h | |||
@@ -21,7 +21,7 @@ | |||
21 | * file called LICENSE. | 21 | * file called LICENSE. |
22 | * | 22 | * |
23 | * Contact Information: | 23 | * Contact Information: |
24 | * James P. Ketrenos <ipw2100-admin@linux.intel.com> | 24 | * Intel Linux Wireless <ilw@linux.intel.com> |
25 | * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 | 25 | * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 |
26 | * | 26 | * |
27 | *****************************************************************************/ | 27 | *****************************************************************************/ |
@@ -93,7 +93,7 @@ static inline int _iwl3945_poll_bit(struct iwl3945_priv *priv, u32 addr, | |||
93 | do { | 93 | do { |
94 | if ((_iwl3945_read32(priv, addr) & mask) == (bits & mask)) | 94 | if ((_iwl3945_read32(priv, addr) & mask) == (bits & mask)) |
95 | return i; | 95 | return i; |
96 | mdelay(10); | 96 | udelay(10); |
97 | i += 10; | 97 | i += 10; |
98 | } while (i < timeout); | 98 | } while (i < timeout); |
99 | 99 | ||
@@ -271,16 +271,7 @@ static inline void iwl3945_write_reg_buf(struct iwl3945_priv *priv, | |||
271 | static inline int _iwl3945_poll_direct_bit(struct iwl3945_priv *priv, | 271 | static inline int _iwl3945_poll_direct_bit(struct iwl3945_priv *priv, |
272 | u32 addr, u32 mask, int timeout) | 272 | u32 addr, u32 mask, int timeout) |
273 | { | 273 | { |
274 | int i = 0; | 274 | return _iwl3945_poll_bit(priv, addr, mask, mask, timeout); |
275 | |||
276 | do { | ||
277 | if ((_iwl3945_read_direct32(priv, addr) & mask) == mask) | ||
278 | return i; | ||
279 | mdelay(10); | ||
280 | i += 10; | ||
281 | } while (i < timeout); | ||
282 | |||
283 | return -ETIMEDOUT; | ||
284 | } | 275 | } |
285 | 276 | ||
286 | #ifdef CONFIG_IWL3945_DEBUG | 277 | #ifdef CONFIG_IWL3945_DEBUG |
@@ -307,6 +298,7 @@ static inline int __iwl3945_poll_direct_bit(const char *f, u32 l, | |||
307 | static inline u32 _iwl3945_read_prph(struct iwl3945_priv *priv, u32 reg) | 298 | static inline u32 _iwl3945_read_prph(struct iwl3945_priv *priv, u32 reg) |
308 | { | 299 | { |
309 | _iwl3945_write_direct32(priv, HBUS_TARG_PRPH_RADDR, reg | (3 << 24)); | 300 | _iwl3945_write_direct32(priv, HBUS_TARG_PRPH_RADDR, reg | (3 << 24)); |
301 | rmb(); | ||
310 | return _iwl3945_read_direct32(priv, HBUS_TARG_PRPH_RDAT); | 302 | return _iwl3945_read_direct32(priv, HBUS_TARG_PRPH_RDAT); |
311 | } | 303 | } |
312 | #ifdef CONFIG_IWL3945_DEBUG | 304 | #ifdef CONFIG_IWL3945_DEBUG |
@@ -328,6 +320,7 @@ static inline void _iwl3945_write_prph(struct iwl3945_priv *priv, | |||
328 | { | 320 | { |
329 | _iwl3945_write_direct32(priv, HBUS_TARG_PRPH_WADDR, | 321 | _iwl3945_write_direct32(priv, HBUS_TARG_PRPH_WADDR, |
330 | ((addr & 0x0000FFFF) | (3 << 24))); | 322 | ((addr & 0x0000FFFF) | (3 << 24))); |
323 | wmb(); | ||
331 | _iwl3945_write_direct32(priv, HBUS_TARG_PRPH_WDAT, val); | 324 | _iwl3945_write_direct32(priv, HBUS_TARG_PRPH_WDAT, val); |
332 | } | 325 | } |
333 | #ifdef CONFIG_IWL3945_DEBUG | 326 | #ifdef CONFIG_IWL3945_DEBUG |
@@ -389,12 +382,14 @@ static inline void iwl3945_clear_bits_prph(struct iwl3945_priv | |||
389 | static inline u32 iwl3945_read_targ_mem(struct iwl3945_priv *priv, u32 addr) | 382 | static inline u32 iwl3945_read_targ_mem(struct iwl3945_priv *priv, u32 addr) |
390 | { | 383 | { |
391 | iwl3945_write_direct32(priv, HBUS_TARG_MEM_RADDR, addr); | 384 | iwl3945_write_direct32(priv, HBUS_TARG_MEM_RADDR, addr); |
385 | rmb(); | ||
392 | return iwl3945_read_direct32(priv, HBUS_TARG_MEM_RDAT); | 386 | return iwl3945_read_direct32(priv, HBUS_TARG_MEM_RDAT); |
393 | } | 387 | } |
394 | 388 | ||
395 | static inline void iwl3945_write_targ_mem(struct iwl3945_priv *priv, u32 addr, u32 val) | 389 | static inline void iwl3945_write_targ_mem(struct iwl3945_priv *priv, u32 addr, u32 val) |
396 | { | 390 | { |
397 | iwl3945_write_direct32(priv, HBUS_TARG_MEM_WADDR, addr); | 391 | iwl3945_write_direct32(priv, HBUS_TARG_MEM_WADDR, addr); |
392 | wmb(); | ||
398 | iwl3945_write_direct32(priv, HBUS_TARG_MEM_WDAT, val); | 393 | iwl3945_write_direct32(priv, HBUS_TARG_MEM_WDAT, val); |
399 | } | 394 | } |
400 | 395 | ||
@@ -402,6 +397,7 @@ static inline void iwl3945_write_targ_mem_buf(struct iwl3945_priv *priv, u32 add | |||
402 | u32 len, u32 *values) | 397 | u32 len, u32 *values) |
403 | { | 398 | { |
404 | iwl3945_write_direct32(priv, HBUS_TARG_MEM_WADDR, addr); | 399 | iwl3945_write_direct32(priv, HBUS_TARG_MEM_WADDR, addr); |
400 | wmb(); | ||
405 | for (; 0 < len; len -= sizeof(u32), values++) | 401 | for (; 0 < len; len -= sizeof(u32), values++) |
406 | iwl3945_write_direct32(priv, HBUS_TARG_MEM_WDAT, *values); | 402 | iwl3945_write_direct32(priv, HBUS_TARG_MEM_WDAT, *values); |
407 | } | 403 | } |