diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-io.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-io.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-io.c b/drivers/net/wireless/iwlwifi/iwl-io.c index f98175a0d35b..44cc3cf45762 100644 --- a/drivers/net/wireless/iwlwifi/iwl-io.c +++ b/drivers/net/wireless/iwlwifi/iwl-io.c | |||
@@ -93,14 +93,14 @@ int iwl_poll_direct_bit(struct iwl_trans *trans, u32 addr, u32 mask, | |||
93 | } | 93 | } |
94 | IWL_EXPORT_SYMBOL(iwl_poll_direct_bit); | 94 | IWL_EXPORT_SYMBOL(iwl_poll_direct_bit); |
95 | 95 | ||
96 | static inline u32 __iwl_read_prph(struct iwl_trans *trans, u32 ofs) | 96 | u32 __iwl_read_prph(struct iwl_trans *trans, u32 ofs) |
97 | { | 97 | { |
98 | u32 val = iwl_trans_read_prph(trans, ofs); | 98 | u32 val = iwl_trans_read_prph(trans, ofs); |
99 | trace_iwlwifi_dev_ioread_prph32(trans->dev, ofs, val); | 99 | trace_iwlwifi_dev_ioread_prph32(trans->dev, ofs, val); |
100 | return val; | 100 | return val; |
101 | } | 101 | } |
102 | 102 | ||
103 | static inline void __iwl_write_prph(struct iwl_trans *trans, u32 ofs, u32 val) | 103 | void __iwl_write_prph(struct iwl_trans *trans, u32 ofs, u32 val) |
104 | { | 104 | { |
105 | trace_iwlwifi_dev_iowrite_prph32(trans->dev, ofs, val); | 105 | trace_iwlwifi_dev_iowrite_prph32(trans->dev, ofs, val); |
106 | iwl_trans_write_prph(trans, ofs, val); | 106 | iwl_trans_write_prph(trans, ofs, val); |
@@ -130,6 +130,21 @@ void iwl_write_prph(struct iwl_trans *trans, u32 ofs, u32 val) | |||
130 | } | 130 | } |
131 | IWL_EXPORT_SYMBOL(iwl_write_prph); | 131 | IWL_EXPORT_SYMBOL(iwl_write_prph); |
132 | 132 | ||
133 | int iwl_poll_prph_bit(struct iwl_trans *trans, u32 addr, | ||
134 | u32 bits, u32 mask, int timeout) | ||
135 | { | ||
136 | int t = 0; | ||
137 | |||
138 | do { | ||
139 | if ((iwl_read_prph(trans, addr) & mask) == (bits & mask)) | ||
140 | return t; | ||
141 | udelay(IWL_POLL_INTERVAL); | ||
142 | t += IWL_POLL_INTERVAL; | ||
143 | } while (t < timeout); | ||
144 | |||
145 | return -ETIMEDOUT; | ||
146 | } | ||
147 | |||
133 | void iwl_set_bits_prph(struct iwl_trans *trans, u32 ofs, u32 mask) | 148 | void iwl_set_bits_prph(struct iwl_trans *trans, u32 ofs, u32 mask) |
134 | { | 149 | { |
135 | unsigned long flags; | 150 | unsigned long flags; |