Lines Matching full:bus
37 static inline void __iwl_set_bit(struct iwl_bus *bus, u32 reg, u32 mask) in __iwl_set_bit() argument
39 iwl_write32(bus, reg, iwl_read32(bus, reg) | mask); in __iwl_set_bit()
42 static inline void __iwl_clear_bit(struct iwl_bus *bus, u32 reg, u32 mask) in __iwl_clear_bit() argument
44 iwl_write32(bus, reg, iwl_read32(bus, reg) & ~mask); in __iwl_clear_bit()
47 void iwl_set_bit(struct iwl_bus *bus, u32 reg, u32 mask) in iwl_set_bit() argument
51 spin_lock_irqsave(&bus->reg_lock, flags); in iwl_set_bit()
52 __iwl_set_bit(bus, reg, mask); in iwl_set_bit()
53 spin_unlock_irqrestore(&bus->reg_lock, flags); in iwl_set_bit()
56 void iwl_clear_bit(struct iwl_bus *bus, u32 reg, u32 mask) in iwl_clear_bit() argument
60 spin_lock_irqsave(&bus->reg_lock, flags); in iwl_clear_bit()
61 __iwl_clear_bit(bus, reg, mask); in iwl_clear_bit()
62 spin_unlock_irqrestore(&bus->reg_lock, flags); in iwl_clear_bit()
65 int iwl_poll_bit(struct iwl_bus *bus, u32 addr, in iwl_poll_bit() argument
71 if ((iwl_read32(bus, addr) & mask) == (bits & mask)) in iwl_poll_bit()
80 int iwl_grab_nic_access_silent(struct iwl_bus *bus) in iwl_grab_nic_access_silent() argument
84 lockdep_assert_held(&bus->reg_lock); in iwl_grab_nic_access_silent()
87 __iwl_set_bit(bus, CSR_GP_CNTRL, CSR_GP_CNTRL_REG_FLAG_MAC_ACCESS_REQ); in iwl_grab_nic_access_silent()
108 ret = iwl_poll_bit(bus, CSR_GP_CNTRL, in iwl_grab_nic_access_silent()
113 iwl_write32(bus, CSR_RESET, CSR_RESET_REG_FLAG_FORCE_NMI); in iwl_grab_nic_access_silent()
120 int iwl_grab_nic_access(struct iwl_bus *bus) in iwl_grab_nic_access() argument
122 int ret = iwl_grab_nic_access_silent(bus); in iwl_grab_nic_access()
124 u32 val = iwl_read32(bus, CSR_GP_CNTRL); in iwl_grab_nic_access()
125 IWL_ERR(bus, in iwl_grab_nic_access()
132 void iwl_release_nic_access(struct iwl_bus *bus) in iwl_release_nic_access() argument
134 lockdep_assert_held(&bus->reg_lock); in iwl_release_nic_access()
135 __iwl_clear_bit(bus, CSR_GP_CNTRL, in iwl_release_nic_access()
139 u32 iwl_read_direct32(struct iwl_bus *bus, u32 reg) in iwl_read_direct32() argument
144 spin_lock_irqsave(&bus->reg_lock, flags); in iwl_read_direct32()
145 iwl_grab_nic_access(bus); in iwl_read_direct32()
146 value = iwl_read32(bus, reg); in iwl_read_direct32()
147 iwl_release_nic_access(bus); in iwl_read_direct32()
148 spin_unlock_irqrestore(&bus->reg_lock, flags); in iwl_read_direct32()
153 void iwl_write_direct32(struct iwl_bus *bus, u32 reg, u32 value) in iwl_write_direct32() argument
157 spin_lock_irqsave(&bus->reg_lock, flags); in iwl_write_direct32()
158 if (!iwl_grab_nic_access(bus)) { in iwl_write_direct32()
159 iwl_write32(bus, reg, value); in iwl_write_direct32()
160 iwl_release_nic_access(bus); in iwl_write_direct32()
162 spin_unlock_irqrestore(&bus->reg_lock, flags); in iwl_write_direct32()
165 int iwl_poll_direct_bit(struct iwl_bus *bus, u32 addr, u32 mask, in iwl_poll_direct_bit() argument
171 if ((iwl_read_direct32(bus, addr) & mask) == mask) in iwl_poll_direct_bit()
180 static inline u32 __iwl_read_prph(struct iwl_bus *bus, u32 reg) in __iwl_read_prph() argument
182 iwl_write32(bus, HBUS_TARG_PRPH_RADDR, reg | (3 << 24)); in __iwl_read_prph()
184 return iwl_read32(bus, HBUS_TARG_PRPH_RDAT); in __iwl_read_prph()
187 static inline void __iwl_write_prph(struct iwl_bus *bus, u32 addr, u32 val) in __iwl_write_prph() argument
189 iwl_write32(bus, HBUS_TARG_PRPH_WADDR, in __iwl_write_prph()
192 iwl_write32(bus, HBUS_TARG_PRPH_WDAT, val); in __iwl_write_prph()
195 u32 iwl_read_prph(struct iwl_bus *bus, u32 reg) in iwl_read_prph() argument
200 spin_lock_irqsave(&bus->reg_lock, flags); in iwl_read_prph()
201 iwl_grab_nic_access(bus); in iwl_read_prph()
202 val = __iwl_read_prph(bus, reg); in iwl_read_prph()
203 iwl_release_nic_access(bus); in iwl_read_prph()
204 spin_unlock_irqrestore(&bus->reg_lock, flags); in iwl_read_prph()
208 void iwl_write_prph(struct iwl_bus *bus, u32 addr, u32 val) in iwl_write_prph() argument
212 spin_lock_irqsave(&bus->reg_lock, flags); in iwl_write_prph()
213 if (!iwl_grab_nic_access(bus)) { in iwl_write_prph()
214 __iwl_write_prph(bus, addr, val); in iwl_write_prph()
215 iwl_release_nic_access(bus); in iwl_write_prph()
217 spin_unlock_irqrestore(&bus->reg_lock, flags); in iwl_write_prph()
220 void iwl_set_bits_prph(struct iwl_bus *bus, u32 reg, u32 mask) in iwl_set_bits_prph() argument
224 spin_lock_irqsave(&bus->reg_lock, flags); in iwl_set_bits_prph()
225 iwl_grab_nic_access(bus); in iwl_set_bits_prph()
226 __iwl_write_prph(bus, reg, __iwl_read_prph(bus, reg) | mask); in iwl_set_bits_prph()
227 iwl_release_nic_access(bus); in iwl_set_bits_prph()
228 spin_unlock_irqrestore(&bus->reg_lock, flags); in iwl_set_bits_prph()
231 void iwl_set_bits_mask_prph(struct iwl_bus *bus, u32 reg, in iwl_set_bits_mask_prph() argument
236 spin_lock_irqsave(&bus->reg_lock, flags); in iwl_set_bits_mask_prph()
237 iwl_grab_nic_access(bus); in iwl_set_bits_mask_prph()
238 __iwl_write_prph(bus, reg, in iwl_set_bits_mask_prph()
239 (__iwl_read_prph(bus, reg) & mask) | bits); in iwl_set_bits_mask_prph()
240 iwl_release_nic_access(bus); in iwl_set_bits_mask_prph()
241 spin_unlock_irqrestore(&bus->reg_lock, flags); in iwl_set_bits_mask_prph()
244 void iwl_clear_bits_prph(struct iwl_bus *bus, u32 reg, u32 mask) in iwl_clear_bits_prph() argument
249 spin_lock_irqsave(&bus->reg_lock, flags); in iwl_clear_bits_prph()
250 iwl_grab_nic_access(bus); in iwl_clear_bits_prph()
251 val = __iwl_read_prph(bus, reg); in iwl_clear_bits_prph()
252 __iwl_write_prph(bus, reg, (val & ~mask)); in iwl_clear_bits_prph()
253 iwl_release_nic_access(bus); in iwl_clear_bits_prph()
254 spin_unlock_irqrestore(&bus->reg_lock, flags); in iwl_clear_bits_prph()
257 void _iwl_read_targ_mem_words(struct iwl_bus *bus, u32 addr, in _iwl_read_targ_mem_words() argument
264 spin_lock_irqsave(&bus->reg_lock, flags); in _iwl_read_targ_mem_words()
265 iwl_grab_nic_access(bus); in _iwl_read_targ_mem_words()
267 iwl_write32(bus, HBUS_TARG_MEM_RADDR, addr); in _iwl_read_targ_mem_words()
271 vals[offs] = iwl_read32(bus, HBUS_TARG_MEM_RDAT); in _iwl_read_targ_mem_words()
273 iwl_release_nic_access(bus); in _iwl_read_targ_mem_words()
274 spin_unlock_irqrestore(&bus->reg_lock, flags); in _iwl_read_targ_mem_words()
277 u32 iwl_read_targ_mem(struct iwl_bus *bus, u32 addr) in iwl_read_targ_mem() argument
281 _iwl_read_targ_mem_words(bus, addr, &value, 1); in iwl_read_targ_mem()
286 int _iwl_write_targ_mem_words(struct iwl_bus *bus, u32 addr, in _iwl_write_targ_mem_words() argument
293 spin_lock_irqsave(&bus->reg_lock, flags); in _iwl_write_targ_mem_words()
294 if (!iwl_grab_nic_access(bus)) { in _iwl_write_targ_mem_words()
295 iwl_write32(bus, HBUS_TARG_MEM_WADDR, addr); in _iwl_write_targ_mem_words()
299 iwl_write32(bus, HBUS_TARG_MEM_WDAT, vals[offs]); in _iwl_write_targ_mem_words()
300 iwl_release_nic_access(bus); in _iwl_write_targ_mem_words()
303 spin_unlock_irqrestore(&bus->reg_lock, flags); in _iwl_write_targ_mem_words()
308 int iwl_write_targ_mem(struct iwl_bus *bus, u32 addr, u32 val) in iwl_write_targ_mem() argument
310 return _iwl_write_targ_mem_words(bus, addr, &val, 1); in iwl_write_targ_mem()