diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-io.c')
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-io.c | 53 | 
1 files changed, 45 insertions, 8 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-io.c b/drivers/net/wireless/iwlwifi/iwl-io.c index 081dd34d238..66c873399ab 100644 --- a/drivers/net/wireless/iwlwifi/iwl-io.c +++ b/drivers/net/wireless/iwlwifi/iwl-io.c @@ -27,6 +27,7 @@   *****************************************************************************/  #include <linux/delay.h>  #include <linux/device.h> +#include <linux/export.h>  #include "iwl-io.h"  #include"iwl-csr.h" @@ -52,6 +53,7 @@ void iwl_set_bit(struct iwl_trans *trans, u32 reg, u32 mask)  	__iwl_set_bit(trans, reg, mask);  	spin_unlock_irqrestore(&trans->reg_lock, flags);  } +EXPORT_SYMBOL_GPL(iwl_set_bit);  void iwl_clear_bit(struct iwl_trans *trans, u32 reg, u32 mask)  { @@ -61,6 +63,25 @@ void iwl_clear_bit(struct iwl_trans *trans, u32 reg, u32 mask)  	__iwl_clear_bit(trans, reg, mask);  	spin_unlock_irqrestore(&trans->reg_lock, flags);  } +EXPORT_SYMBOL_GPL(iwl_clear_bit); + +void iwl_set_bits_mask(struct iwl_trans *trans, u32 reg, u32 mask, u32 value) +{ +	unsigned long flags; +	u32 v; + +#ifdef CONFIG_IWLWIFI_DEBUG +	WARN_ON_ONCE(value & ~mask); +#endif + +	spin_lock_irqsave(&trans->reg_lock, flags); +	v = iwl_read32(trans, reg); +	v &= ~mask; +	v |= value; +	iwl_write32(trans, reg, v); +	spin_unlock_irqrestore(&trans->reg_lock, flags); +} +EXPORT_SYMBOL_GPL(iwl_set_bits_mask);  int iwl_poll_bit(struct iwl_trans *trans, u32 addr,  		 u32 bits, u32 mask, int timeout) @@ -76,6 +97,7 @@ int iwl_poll_bit(struct iwl_trans *trans, u32 addr,  	return -ETIMEDOUT;  } +EXPORT_SYMBOL_GPL(iwl_poll_bit);  int iwl_grab_nic_access_silent(struct iwl_trans *trans)  { @@ -117,6 +139,7 @@ int iwl_grab_nic_access_silent(struct iwl_trans *trans)  	return 0;  } +EXPORT_SYMBOL_GPL(iwl_grab_nic_access_silent);  bool iwl_grab_nic_access(struct iwl_trans *trans)  { @@ -130,6 +153,7 @@ bool iwl_grab_nic_access(struct iwl_trans *trans)  	return true;  } +EXPORT_SYMBOL_GPL(iwl_grab_nic_access);  void iwl_release_nic_access(struct iwl_trans *trans)  { @@ -144,6 +168,7 @@ void iwl_release_nic_access(struct iwl_trans *trans)  	 */  	mmiowb();  } +EXPORT_SYMBOL_GPL(iwl_release_nic_access);  u32 iwl_read_direct32(struct iwl_trans *trans, u32 reg)  { @@ -158,6 +183,7 @@ u32 iwl_read_direct32(struct iwl_trans *trans, u32 reg)  	return value;  } +EXPORT_SYMBOL_GPL(iwl_read_direct32);  void iwl_write_direct32(struct iwl_trans *trans, u32 reg, u32 value)  { @@ -170,6 +196,7 @@ void iwl_write_direct32(struct iwl_trans *trans, u32 reg, u32 value)  	}  	spin_unlock_irqrestore(&trans->reg_lock, flags);  } +EXPORT_SYMBOL_GPL(iwl_write_direct32);  int iwl_poll_direct_bit(struct iwl_trans *trans, u32 addr, u32 mask,  			int timeout) @@ -185,6 +212,7 @@ int iwl_poll_direct_bit(struct iwl_trans *trans, u32 addr, u32 mask,  	return -ETIMEDOUT;  } +EXPORT_SYMBOL_GPL(iwl_poll_direct_bit);  static inline u32 __iwl_read_prph(struct iwl_trans *trans, u32 reg)  { @@ -211,6 +239,7 @@ u32 iwl_read_prph(struct iwl_trans *trans, u32 reg)  	spin_unlock_irqrestore(&trans->reg_lock, flags);  	return val;  } +EXPORT_SYMBOL_GPL(iwl_read_prph);  void iwl_write_prph(struct iwl_trans *trans, u32 addr, u32 val)  { @@ -223,6 +252,7 @@ void iwl_write_prph(struct iwl_trans *trans, u32 addr, u32 val)  	}  	spin_unlock_irqrestore(&trans->reg_lock, flags);  } +EXPORT_SYMBOL_GPL(iwl_write_prph);  void iwl_set_bits_prph(struct iwl_trans *trans, u32 reg, u32 mask)  { @@ -236,6 +266,7 @@ void iwl_set_bits_prph(struct iwl_trans *trans, u32 reg, u32 mask)  	}  	spin_unlock_irqrestore(&trans->reg_lock, flags);  } +EXPORT_SYMBOL_GPL(iwl_set_bits_prph);  void iwl_set_bits_mask_prph(struct iwl_trans *trans, u32 reg,  			    u32 bits, u32 mask) @@ -250,6 +281,7 @@ void iwl_set_bits_mask_prph(struct iwl_trans *trans, u32 reg,  	}  	spin_unlock_irqrestore(&trans->reg_lock, flags);  } +EXPORT_SYMBOL_GPL(iwl_set_bits_mask_prph);  void iwl_clear_bits_prph(struct iwl_trans *trans, u32 reg, u32 mask)  { @@ -264,9 +296,10 @@ void iwl_clear_bits_prph(struct iwl_trans *trans, u32 reg, u32 mask)  	}  	spin_unlock_irqrestore(&trans->reg_lock, flags);  } +EXPORT_SYMBOL_GPL(iwl_clear_bits_prph); -void _iwl_read_targ_mem_words(struct iwl_trans *trans, u32 addr, -			      void *buf, int words) +void _iwl_read_targ_mem_dwords(struct iwl_trans *trans, u32 addr, +			       void *buf, int dwords)  {  	unsigned long flags;  	int offs; @@ -275,24 +308,26 @@ void _iwl_read_targ_mem_words(struct iwl_trans *trans, u32 addr,  	spin_lock_irqsave(&trans->reg_lock, flags);  	if (likely(iwl_grab_nic_access(trans))) {  		iwl_write32(trans, HBUS_TARG_MEM_RADDR, addr); -		for (offs = 0; offs < words; offs++) +		for (offs = 0; offs < dwords; offs++)  			vals[offs] = iwl_read32(trans, HBUS_TARG_MEM_RDAT);  		iwl_release_nic_access(trans);  	}  	spin_unlock_irqrestore(&trans->reg_lock, flags);  } +EXPORT_SYMBOL_GPL(_iwl_read_targ_mem_dwords);  u32 iwl_read_targ_mem(struct iwl_trans *trans, u32 addr)  {  	u32 value; -	_iwl_read_targ_mem_words(trans, addr, &value, 1); +	_iwl_read_targ_mem_dwords(trans, addr, &value, 1);  	return value;  } +EXPORT_SYMBOL_GPL(iwl_read_targ_mem); -int _iwl_write_targ_mem_words(struct iwl_trans *trans, u32 addr, -				void *buf, int words) +int _iwl_write_targ_mem_dwords(struct iwl_trans *trans, u32 addr, +			       void *buf, int dwords)  {  	unsigned long flags;  	int offs, result = 0; @@ -301,7 +336,7 @@ int _iwl_write_targ_mem_words(struct iwl_trans *trans, u32 addr,  	spin_lock_irqsave(&trans->reg_lock, flags);  	if (likely(iwl_grab_nic_access(trans))) {  		iwl_write32(trans, HBUS_TARG_MEM_WADDR, addr); -		for (offs = 0; offs < words; offs++) +		for (offs = 0; offs < dwords; offs++)  			iwl_write32(trans, HBUS_TARG_MEM_WDAT, vals[offs]);  		iwl_release_nic_access(trans);  	} else @@ -310,8 +345,10 @@ int _iwl_write_targ_mem_words(struct iwl_trans *trans, u32 addr,  	return result;  } +EXPORT_SYMBOL_GPL(_iwl_write_targ_mem_dwords);  int iwl_write_targ_mem(struct iwl_trans *trans, u32 addr, u32 val)  { -	return _iwl_write_targ_mem_words(trans, addr, &val, 1); +	return _iwl_write_targ_mem_dwords(trans, addr, &val, 1);  } +EXPORT_SYMBOL_GPL(iwl_write_targ_mem);  |