Lines Matching refs:ar
51 static inline u32 shadow_sr_wr_ind_addr(struct ath10k *ar, in shadow_sr_wr_ind_addr() argument
74 ath10k_warn(ar, "invalid CE id: %d", ce_id); in shadow_sr_wr_ind_addr()
87 static inline u32 ath10k_ce_read32(struct ath10k *ar, u32 offset) in ath10k_ce_read32() argument
89 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_read32()
91 return ce->bus_ops->read32(ar, offset); in ath10k_ce_read32()
94 static inline void ath10k_ce_write32(struct ath10k *ar, u32 offset, u32 value) in ath10k_ce_write32() argument
96 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_write32()
98 ce->bus_ops->write32(ar, offset, value); in ath10k_ce_write32()
101 static inline void ath10k_ce_dest_ring_write_index_set(struct ath10k *ar, in ath10k_ce_dest_ring_write_index_set() argument
105 ath10k_ce_write32(ar, ce_ctrl_addr + in ath10k_ce_dest_ring_write_index_set()
106 ar->hw_ce_regs->dst_wr_index_addr, n); in ath10k_ce_dest_ring_write_index_set()
109 static inline u32 ath10k_ce_dest_ring_write_index_get(struct ath10k *ar, in ath10k_ce_dest_ring_write_index_get() argument
112 return ath10k_ce_read32(ar, ce_ctrl_addr + in ath10k_ce_dest_ring_write_index_get()
113 ar->hw_ce_regs->dst_wr_index_addr); in ath10k_ce_dest_ring_write_index_get()
116 static inline void ath10k_ce_src_ring_write_index_set(struct ath10k *ar, in ath10k_ce_src_ring_write_index_set() argument
120 ath10k_ce_write32(ar, ce_ctrl_addr + in ath10k_ce_src_ring_write_index_set()
121 ar->hw_ce_regs->sr_wr_index_addr, n); in ath10k_ce_src_ring_write_index_set()
124 static inline u32 ath10k_ce_src_ring_write_index_get(struct ath10k *ar, in ath10k_ce_src_ring_write_index_get() argument
127 return ath10k_ce_read32(ar, ce_ctrl_addr + in ath10k_ce_src_ring_write_index_get()
128 ar->hw_ce_regs->sr_wr_index_addr); in ath10k_ce_src_ring_write_index_get()
131 static inline u32 ath10k_ce_src_ring_read_index_from_ddr(struct ath10k *ar, in ath10k_ce_src_ring_read_index_from_ddr() argument
134 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_src_ring_read_index_from_ddr()
139 static inline u32 ath10k_ce_src_ring_read_index_get(struct ath10k *ar, in ath10k_ce_src_ring_read_index_get() argument
142 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_src_ring_read_index_get()
147 if (ar->hw_params.rri_on_ddr && in ath10k_ce_src_ring_read_index_get()
149 index = ath10k_ce_src_ring_read_index_from_ddr(ar, ce_id); in ath10k_ce_src_ring_read_index_get()
151 index = ath10k_ce_read32(ar, ce_ctrl_addr + in ath10k_ce_src_ring_read_index_get()
152 ar->hw_ce_regs->current_srri_addr); in ath10k_ce_src_ring_read_index_get()
158 ath10k_ce_shadow_src_ring_write_index_set(struct ath10k *ar, in ath10k_ce_shadow_src_ring_write_index_set() argument
162 ath10k_ce_write32(ar, shadow_sr_wr_ind_addr(ar, ce_state), value); in ath10k_ce_shadow_src_ring_write_index_set()
165 static inline void ath10k_ce_src_ring_base_addr_set(struct ath10k *ar, in ath10k_ce_src_ring_base_addr_set() argument
169 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_src_ring_base_addr_set()
171 u32 ce_ctrl_addr = ath10k_ce_base_address(ar, ce_id); in ath10k_ce_src_ring_base_addr_set()
174 ath10k_ce_write32(ar, ce_ctrl_addr + in ath10k_ce_src_ring_base_addr_set()
175 ar->hw_ce_regs->sr_base_addr_lo, addr_lo); in ath10k_ce_src_ring_base_addr_set()
178 ce_state->ops->ce_set_src_ring_base_addr_hi(ar, ce_ctrl_addr, in ath10k_ce_src_ring_base_addr_set()
183 static void ath10k_ce_set_src_ring_base_addr_hi(struct ath10k *ar, in ath10k_ce_set_src_ring_base_addr_hi() argument
189 ath10k_ce_write32(ar, ce_ctrl_addr + in ath10k_ce_set_src_ring_base_addr_hi()
190 ar->hw_ce_regs->sr_base_addr_hi, addr_hi); in ath10k_ce_set_src_ring_base_addr_hi()
193 static inline void ath10k_ce_src_ring_size_set(struct ath10k *ar, in ath10k_ce_src_ring_size_set() argument
197 ath10k_ce_write32(ar, ce_ctrl_addr + in ath10k_ce_src_ring_size_set()
198 ar->hw_ce_regs->sr_size_addr, n); in ath10k_ce_src_ring_size_set()
201 static inline void ath10k_ce_src_ring_dmax_set(struct ath10k *ar, in ath10k_ce_src_ring_dmax_set() argument
205 struct ath10k_hw_ce_ctrl1 *ctrl_regs = ar->hw_ce_regs->ctrl1_regs; in ath10k_ce_src_ring_dmax_set()
207 u32 ctrl1_addr = ath10k_ce_read32(ar, ce_ctrl_addr + in ath10k_ce_src_ring_dmax_set()
210 ath10k_ce_write32(ar, ce_ctrl_addr + ctrl_regs->addr, in ath10k_ce_src_ring_dmax_set()
215 static inline void ath10k_ce_src_ring_byte_swap_set(struct ath10k *ar, in ath10k_ce_src_ring_byte_swap_set() argument
219 struct ath10k_hw_ce_ctrl1 *ctrl_regs = ar->hw_ce_regs->ctrl1_regs; in ath10k_ce_src_ring_byte_swap_set()
221 u32 ctrl1_addr = ath10k_ce_read32(ar, ce_ctrl_addr + in ath10k_ce_src_ring_byte_swap_set()
224 ath10k_ce_write32(ar, ce_ctrl_addr + ctrl_regs->addr, in ath10k_ce_src_ring_byte_swap_set()
229 static inline void ath10k_ce_dest_ring_byte_swap_set(struct ath10k *ar, in ath10k_ce_dest_ring_byte_swap_set() argument
233 struct ath10k_hw_ce_ctrl1 *ctrl_regs = ar->hw_ce_regs->ctrl1_regs; in ath10k_ce_dest_ring_byte_swap_set()
235 u32 ctrl1_addr = ath10k_ce_read32(ar, ce_ctrl_addr + in ath10k_ce_dest_ring_byte_swap_set()
238 ath10k_ce_write32(ar, ce_ctrl_addr + ctrl_regs->addr, in ath10k_ce_dest_ring_byte_swap_set()
244 u32 ath10k_ce_dest_ring_read_index_from_ddr(struct ath10k *ar, u32 ce_id) in ath10k_ce_dest_ring_read_index_from_ddr() argument
246 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_dest_ring_read_index_from_ddr()
252 static inline u32 ath10k_ce_dest_ring_read_index_get(struct ath10k *ar, in ath10k_ce_dest_ring_read_index_get() argument
255 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_dest_ring_read_index_get()
260 if (ar->hw_params.rri_on_ddr && in ath10k_ce_dest_ring_read_index_get()
262 index = ath10k_ce_dest_ring_read_index_from_ddr(ar, ce_id); in ath10k_ce_dest_ring_read_index_get()
264 index = ath10k_ce_read32(ar, ce_ctrl_addr + in ath10k_ce_dest_ring_read_index_get()
265 ar->hw_ce_regs->current_drri_addr); in ath10k_ce_dest_ring_read_index_get()
270 static inline void ath10k_ce_dest_ring_base_addr_set(struct ath10k *ar, in ath10k_ce_dest_ring_base_addr_set() argument
274 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_dest_ring_base_addr_set()
276 u32 ce_ctrl_addr = ath10k_ce_base_address(ar, ce_id); in ath10k_ce_dest_ring_base_addr_set()
279 ath10k_ce_write32(ar, ce_ctrl_addr + in ath10k_ce_dest_ring_base_addr_set()
280 ar->hw_ce_regs->dr_base_addr_lo, addr_lo); in ath10k_ce_dest_ring_base_addr_set()
283 ce_state->ops->ce_set_dest_ring_base_addr_hi(ar, ce_ctrl_addr, in ath10k_ce_dest_ring_base_addr_set()
288 static void ath10k_ce_set_dest_ring_base_addr_hi(struct ath10k *ar, in ath10k_ce_set_dest_ring_base_addr_hi() argument
295 reg_value = ath10k_ce_read32(ar, ce_ctrl_addr + in ath10k_ce_set_dest_ring_base_addr_hi()
296 ar->hw_ce_regs->dr_base_addr_hi); in ath10k_ce_set_dest_ring_base_addr_hi()
299 ath10k_ce_write32(ar, ce_ctrl_addr + in ath10k_ce_set_dest_ring_base_addr_hi()
300 ar->hw_ce_regs->dr_base_addr_hi, reg_value); in ath10k_ce_set_dest_ring_base_addr_hi()
303 static inline void ath10k_ce_dest_ring_size_set(struct ath10k *ar, in ath10k_ce_dest_ring_size_set() argument
307 ath10k_ce_write32(ar, ce_ctrl_addr + in ath10k_ce_dest_ring_size_set()
308 ar->hw_ce_regs->dr_size_addr, n); in ath10k_ce_dest_ring_size_set()
311 static inline void ath10k_ce_src_ring_highmark_set(struct ath10k *ar, in ath10k_ce_src_ring_highmark_set() argument
315 struct ath10k_hw_ce_dst_src_wm_regs *srcr_wm = ar->hw_ce_regs->wm_srcr; in ath10k_ce_src_ring_highmark_set()
316 u32 addr = ath10k_ce_read32(ar, ce_ctrl_addr + srcr_wm->addr); in ath10k_ce_src_ring_highmark_set()
318 ath10k_ce_write32(ar, ce_ctrl_addr + srcr_wm->addr, in ath10k_ce_src_ring_highmark_set()
323 static inline void ath10k_ce_src_ring_lowmark_set(struct ath10k *ar, in ath10k_ce_src_ring_lowmark_set() argument
327 struct ath10k_hw_ce_dst_src_wm_regs *srcr_wm = ar->hw_ce_regs->wm_srcr; in ath10k_ce_src_ring_lowmark_set()
328 u32 addr = ath10k_ce_read32(ar, ce_ctrl_addr + srcr_wm->addr); in ath10k_ce_src_ring_lowmark_set()
330 ath10k_ce_write32(ar, ce_ctrl_addr + srcr_wm->addr, in ath10k_ce_src_ring_lowmark_set()
335 static inline void ath10k_ce_dest_ring_highmark_set(struct ath10k *ar, in ath10k_ce_dest_ring_highmark_set() argument
339 struct ath10k_hw_ce_dst_src_wm_regs *dstr_wm = ar->hw_ce_regs->wm_dstr; in ath10k_ce_dest_ring_highmark_set()
340 u32 addr = ath10k_ce_read32(ar, ce_ctrl_addr + dstr_wm->addr); in ath10k_ce_dest_ring_highmark_set()
342 ath10k_ce_write32(ar, ce_ctrl_addr + dstr_wm->addr, in ath10k_ce_dest_ring_highmark_set()
347 static inline void ath10k_ce_dest_ring_lowmark_set(struct ath10k *ar, in ath10k_ce_dest_ring_lowmark_set() argument
351 struct ath10k_hw_ce_dst_src_wm_regs *dstr_wm = ar->hw_ce_regs->wm_dstr; in ath10k_ce_dest_ring_lowmark_set()
352 u32 addr = ath10k_ce_read32(ar, ce_ctrl_addr + dstr_wm->addr); in ath10k_ce_dest_ring_lowmark_set()
354 ath10k_ce_write32(ar, ce_ctrl_addr + dstr_wm->addr, in ath10k_ce_dest_ring_lowmark_set()
359 static inline void ath10k_ce_copy_complete_inter_enable(struct ath10k *ar, in ath10k_ce_copy_complete_inter_enable() argument
362 struct ath10k_hw_ce_host_ie *host_ie = ar->hw_ce_regs->host_ie; in ath10k_ce_copy_complete_inter_enable()
364 u32 host_ie_addr = ath10k_ce_read32(ar, ce_ctrl_addr + in ath10k_ce_copy_complete_inter_enable()
365 ar->hw_ce_regs->host_ie_addr); in ath10k_ce_copy_complete_inter_enable()
367 ath10k_ce_write32(ar, ce_ctrl_addr + ar->hw_ce_regs->host_ie_addr, in ath10k_ce_copy_complete_inter_enable()
371 static inline void ath10k_ce_copy_complete_intr_disable(struct ath10k *ar, in ath10k_ce_copy_complete_intr_disable() argument
374 struct ath10k_hw_ce_host_ie *host_ie = ar->hw_ce_regs->host_ie; in ath10k_ce_copy_complete_intr_disable()
376 u32 host_ie_addr = ath10k_ce_read32(ar, ce_ctrl_addr + in ath10k_ce_copy_complete_intr_disable()
377 ar->hw_ce_regs->host_ie_addr); in ath10k_ce_copy_complete_intr_disable()
379 ath10k_ce_write32(ar, ce_ctrl_addr + ar->hw_ce_regs->host_ie_addr, in ath10k_ce_copy_complete_intr_disable()
383 static inline void ath10k_ce_watermark_intr_disable(struct ath10k *ar, in ath10k_ce_watermark_intr_disable() argument
386 struct ath10k_hw_ce_host_wm_regs *wm_regs = ar->hw_ce_regs->wm_regs; in ath10k_ce_watermark_intr_disable()
388 u32 host_ie_addr = ath10k_ce_read32(ar, ce_ctrl_addr + in ath10k_ce_watermark_intr_disable()
389 ar->hw_ce_regs->host_ie_addr); in ath10k_ce_watermark_intr_disable()
391 ath10k_ce_write32(ar, ce_ctrl_addr + ar->hw_ce_regs->host_ie_addr, in ath10k_ce_watermark_intr_disable()
395 static inline void ath10k_ce_error_intr_disable(struct ath10k *ar, in ath10k_ce_error_intr_disable() argument
398 struct ath10k_hw_ce_misc_regs *misc_regs = ar->hw_ce_regs->misc_regs; in ath10k_ce_error_intr_disable()
400 u32 misc_ie_addr = ath10k_ce_read32(ar, in ath10k_ce_error_intr_disable()
401 ce_ctrl_addr + ar->hw_ce_regs->misc_ie_addr); in ath10k_ce_error_intr_disable()
403 ath10k_ce_write32(ar, in ath10k_ce_error_intr_disable()
404 ce_ctrl_addr + ar->hw_ce_regs->misc_ie_addr, in ath10k_ce_error_intr_disable()
408 static inline void ath10k_ce_engine_int_status_clear(struct ath10k *ar, in ath10k_ce_engine_int_status_clear() argument
412 struct ath10k_hw_ce_host_wm_regs *wm_regs = ar->hw_ce_regs->wm_regs; in ath10k_ce_engine_int_status_clear()
414 ath10k_ce_write32(ar, ce_ctrl_addr + wm_regs->addr, mask); in ath10k_ce_engine_int_status_clear()
428 struct ath10k *ar = ce_state->ar; in _ath10k_ce_send_nolock() local
439 ath10k_warn(ar, "%s: send more we can (nbytes: %d, max: %d)\n", in _ath10k_ce_send_nolock()
471 ath10k_ce_src_ring_write_index_set(ar, ctrl_addr, write_index); in _ath10k_ce_send_nolock()
485 struct ath10k *ar = ce_state->ar; in _ath10k_ce_send_nolock_64() local
496 if (test_bit(ATH10K_FLAG_CRASH_FLUSH, &ar->dev_flags)) in _ath10k_ce_send_nolock_64()
500 ath10k_warn(ar, "%s: send more we can (nbytes: %d, max: %d)\n", in _ath10k_ce_send_nolock_64()
503 if (ar->hw_params.rri_on_ddr) in _ath10k_ce_send_nolock_64()
504 sw_index = ath10k_ce_src_ring_read_index_from_ddr(ar, ce_state->id); in _ath10k_ce_send_nolock_64()
546 if (ar->hw_params.shadow_reg_support) in _ath10k_ce_send_nolock_64()
547 ath10k_ce_shadow_src_ring_write_index_set(ar, ce_state, in _ath10k_ce_send_nolock_64()
550 ath10k_ce_src_ring_write_index_set(ar, ctrl_addr, in _ath10k_ce_send_nolock_64()
573 struct ath10k *ar = pipe->ar; in __ath10k_ce_send_revert() local
574 struct ath10k_ce *ce = ath10k_ce_priv(ar); in __ath10k_ce_send_revert()
589 ath10k_ce_src_ring_write_index_get(ar, ctrl_addr))) in __ath10k_ce_send_revert()
606 struct ath10k *ar = ce_state->ar; in ath10k_ce_send() local
607 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_send()
621 struct ath10k *ar = pipe->ar; in ath10k_ce_num_free_src_entries() local
622 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_num_free_src_entries()
637 struct ath10k *ar = pipe->ar; in __ath10k_ce_rx_num_free_bufs() local
638 struct ath10k_ce *ce = ath10k_ce_priv(ar); in __ath10k_ce_rx_num_free_bufs()
653 struct ath10k *ar = pipe->ar; in __ath10k_ce_rx_post_buf() local
654 struct ath10k_ce *ce = ath10k_ce_priv(ar); in __ath10k_ce_rx_post_buf()
674 ath10k_ce_dest_ring_write_index_set(ar, ctrl_addr, write_index); in __ath10k_ce_rx_post_buf()
684 struct ath10k *ar = pipe->ar; in __ath10k_ce_rx_post_buf_64() local
685 struct ath10k_ce *ce = ath10k_ce_priv(ar); in __ath10k_ce_rx_post_buf_64()
707 ath10k_ce_dest_ring_write_index_set(ar, ctrl_addr, write_index); in __ath10k_ce_rx_post_buf_64()
715 struct ath10k *ar = pipe->ar; in ath10k_ce_rx_update_write_idx() local
720 u32 cur_write_idx = ath10k_ce_dest_ring_write_index_get(ar, ctrl_addr); in ath10k_ce_rx_update_write_idx()
729 ath10k_ce_dest_ring_write_index_set(ar, ctrl_addr, write_index); in ath10k_ce_rx_update_write_idx()
737 struct ath10k *ar = pipe->ar; in ath10k_ce_rx_post_buf() local
738 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_rx_post_buf()
866 struct ath10k *ar = ce_state->ar; in ath10k_ce_completed_recv_next() local
867 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_completed_recv_next()
890 struct ath10k *ar; in _ath10k_ce_revoke_recv_next() local
898 ar = ce_state->ar; in _ath10k_ce_revoke_recv_next()
899 ce = ath10k_ce_priv(ar); in _ath10k_ce_revoke_recv_next()
943 struct ath10k *ar; in _ath10k_ce_revoke_recv_next_64() local
951 ar = ce_state->ar; in _ath10k_ce_revoke_recv_next_64()
952 ce = ath10k_ce_priv(ar); in _ath10k_ce_revoke_recv_next_64()
1007 struct ath10k *ar = ce_state->ar; in _ath10k_ce_completed_send_next_nolock() local
1022 read_index = ath10k_ce_src_ring_read_index_get(ar, ctrl_addr); in _ath10k_ce_completed_send_next_nolock()
1030 if (ar->hw_params.rri_on_ddr) in _ath10k_ce_completed_send_next_nolock()
1031 read_index = ath10k_ce_src_ring_read_index_get(ar, ctrl_addr); in _ath10k_ce_completed_send_next_nolock()
1060 struct ath10k *ar = ce_state->ar; in _ath10k_ce_completed_send_next_nolock_64() local
1075 read_index = ath10k_ce_src_ring_read_index_get(ar, ctrl_addr); in _ath10k_ce_completed_send_next_nolock_64()
1083 if (ar->hw_params.rri_on_ddr) in _ath10k_ce_completed_send_next_nolock_64()
1084 read_index = ath10k_ce_src_ring_read_index_get(ar, ctrl_addr); in _ath10k_ce_completed_send_next_nolock_64()
1116 static void ath10k_ce_extract_desc_data(struct ath10k *ar, in ath10k_ce_extract_desc_data() argument
1133 static void ath10k_ce_extract_desc_data_64(struct ath10k *ar, in ath10k_ce_extract_desc_data_64() argument
1163 struct ath10k *ar; in ath10k_ce_cancel_send_next() local
1171 ar = ce_state->ar; in ath10k_ce_cancel_send_next()
1172 ce = ath10k_ce_priv(ar); in ath10k_ce_cancel_send_next()
1181 ce_state->ops->ce_extract_desc_data(ar, src_ring, sw_index, in ath10k_ce_cancel_send_next()
1209 struct ath10k *ar = ce_state->ar; in ath10k_ce_completed_send_next() local
1210 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_completed_send_next()
1228 void ath10k_ce_per_engine_service(struct ath10k *ar, unsigned int ce_id) in ath10k_ce_per_engine_service() argument
1230 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_per_engine_service()
1232 struct ath10k_hw_ce_host_wm_regs *wm_regs = ar->hw_ce_regs->wm_regs; in ath10k_ce_per_engine_service()
1245 ath10k_ce_engine_int_status_clear(ar, ctrl_addr, in ath10k_ce_per_engine_service()
1262 void ath10k_ce_per_engine_service_any(struct ath10k *ar) in ath10k_ce_per_engine_service_any() argument
1267 intr_summary = ath10k_ce_interrupt_summary(ar); in ath10k_ce_per_engine_service_any()
1276 ath10k_ce_per_engine_service(ar, ce_id); in ath10k_ce_per_engine_service_any()
1291 struct ath10k *ar = ce_state->ar; in ath10k_ce_per_engine_handler_adjust() local
1296 ath10k_ce_copy_complete_inter_enable(ar, ctrl_addr); in ath10k_ce_per_engine_handler_adjust()
1298 ath10k_ce_copy_complete_intr_disable(ar, ctrl_addr); in ath10k_ce_per_engine_handler_adjust()
1300 ath10k_ce_watermark_intr_disable(ar, ctrl_addr); in ath10k_ce_per_engine_handler_adjust()
1303 void ath10k_ce_disable_interrupt(struct ath10k *ar, int ce_id) in ath10k_ce_disable_interrupt() argument
1305 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_disable_interrupt()
1313 ctrl_addr = ath10k_ce_base_address(ar, ce_id); in ath10k_ce_disable_interrupt()
1315 ath10k_ce_copy_complete_intr_disable(ar, ctrl_addr); in ath10k_ce_disable_interrupt()
1316 ath10k_ce_error_intr_disable(ar, ctrl_addr); in ath10k_ce_disable_interrupt()
1317 ath10k_ce_watermark_intr_disable(ar, ctrl_addr); in ath10k_ce_disable_interrupt()
1321 void ath10k_ce_disable_interrupts(struct ath10k *ar) in ath10k_ce_disable_interrupts() argument
1326 ath10k_ce_disable_interrupt(ar, ce_id); in ath10k_ce_disable_interrupts()
1330 void ath10k_ce_enable_interrupt(struct ath10k *ar, int ce_id) in ath10k_ce_enable_interrupt() argument
1332 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_enable_interrupt()
1343 void ath10k_ce_enable_interrupts(struct ath10k *ar) in ath10k_ce_enable_interrupts() argument
1351 ath10k_ce_enable_interrupt(ar, ce_id); in ath10k_ce_enable_interrupts()
1355 static int ath10k_ce_init_src_ring(struct ath10k *ar, in ath10k_ce_init_src_ring() argument
1359 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_init_src_ring()
1362 u32 nentries, ctrl_addr = ath10k_ce_base_address(ar, ce_id); in ath10k_ce_init_src_ring()
1366 if (ar->hw_params.target_64bit) in ath10k_ce_init_src_ring()
1373 src_ring->sw_index = ath10k_ce_src_ring_read_index_get(ar, ctrl_addr); in ath10k_ce_init_src_ring()
1378 ath10k_ce_src_ring_write_index_get(ar, ctrl_addr); in ath10k_ce_init_src_ring()
1381 ath10k_ce_src_ring_base_addr_set(ar, ce_id, in ath10k_ce_init_src_ring()
1383 ath10k_ce_src_ring_size_set(ar, ctrl_addr, nentries); in ath10k_ce_init_src_ring()
1384 ath10k_ce_src_ring_dmax_set(ar, ctrl_addr, attr->src_sz_max); in ath10k_ce_init_src_ring()
1385 ath10k_ce_src_ring_byte_swap_set(ar, ctrl_addr, 0); in ath10k_ce_init_src_ring()
1386 ath10k_ce_src_ring_lowmark_set(ar, ctrl_addr, 0); in ath10k_ce_init_src_ring()
1387 ath10k_ce_src_ring_highmark_set(ar, ctrl_addr, nentries); in ath10k_ce_init_src_ring()
1389 ath10k_dbg(ar, ATH10K_DBG_BOOT, in ath10k_ce_init_src_ring()
1396 static int ath10k_ce_init_dest_ring(struct ath10k *ar, in ath10k_ce_init_dest_ring() argument
1400 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_init_dest_ring()
1403 u32 nentries, ctrl_addr = ath10k_ce_base_address(ar, ce_id); in ath10k_ce_init_dest_ring()
1407 if (ar->hw_params.target_64bit) in ath10k_ce_init_dest_ring()
1414 dest_ring->sw_index = ath10k_ce_dest_ring_read_index_get(ar, ctrl_addr); in ath10k_ce_init_dest_ring()
1417 ath10k_ce_dest_ring_write_index_get(ar, ctrl_addr); in ath10k_ce_init_dest_ring()
1420 ath10k_ce_dest_ring_base_addr_set(ar, ce_id, in ath10k_ce_init_dest_ring()
1422 ath10k_ce_dest_ring_size_set(ar, ctrl_addr, nentries); in ath10k_ce_init_dest_ring()
1423 ath10k_ce_dest_ring_byte_swap_set(ar, ctrl_addr, 0); in ath10k_ce_init_dest_ring()
1424 ath10k_ce_dest_ring_lowmark_set(ar, ctrl_addr, 0); in ath10k_ce_init_dest_ring()
1425 ath10k_ce_dest_ring_highmark_set(ar, ctrl_addr, nentries); in ath10k_ce_init_dest_ring()
1427 ath10k_dbg(ar, ATH10K_DBG_BOOT, in ath10k_ce_init_dest_ring()
1434 static int ath10k_ce_alloc_shadow_base(struct ath10k *ar, in ath10k_ce_alloc_shadow_base() argument
1451 ath10k_ce_alloc_src_ring(struct ath10k *ar, unsigned int ce_id, in ath10k_ce_alloc_src_ring() argument
1474 dma_alloc_coherent(ar->dev, in ath10k_ce_alloc_src_ring()
1492 if (ar->hw_params.shadow_reg_support) { in ath10k_ce_alloc_src_ring()
1493 ret = ath10k_ce_alloc_shadow_base(ar, src_ring, nentries); in ath10k_ce_alloc_src_ring()
1495 dma_free_coherent(ar->dev, in ath10k_ce_alloc_src_ring()
1509 ath10k_ce_alloc_src_ring_64(struct ath10k *ar, unsigned int ce_id, in ath10k_ce_alloc_src_ring_64() argument
1531 dma_alloc_coherent(ar->dev, in ath10k_ce_alloc_src_ring_64()
1549 if (ar->hw_params.shadow_reg_support) { in ath10k_ce_alloc_src_ring_64()
1550 ret = ath10k_ce_alloc_shadow_base(ar, src_ring, nentries); in ath10k_ce_alloc_src_ring_64()
1552 dma_free_coherent(ar->dev, in ath10k_ce_alloc_src_ring_64()
1566 ath10k_ce_alloc_dest_ring(struct ath10k *ar, unsigned int ce_id, in ath10k_ce_alloc_dest_ring() argument
1588 dma_alloc_coherent(ar->dev, in ath10k_ce_alloc_dest_ring()
1610 ath10k_ce_alloc_dest_ring_64(struct ath10k *ar, unsigned int ce_id, in ath10k_ce_alloc_dest_ring_64() argument
1631 dma_alloc_coherent(ar->dev, in ath10k_ce_alloc_dest_ring_64()
1662 int ath10k_ce_init_pipe(struct ath10k *ar, unsigned int ce_id, in ath10k_ce_init_pipe() argument
1668 ret = ath10k_ce_init_src_ring(ar, ce_id, attr); in ath10k_ce_init_pipe()
1670 ath10k_err(ar, "Failed to initialize CE src ring for ID: %d (%d)\n", in ath10k_ce_init_pipe()
1677 ret = ath10k_ce_init_dest_ring(ar, ce_id, attr); in ath10k_ce_init_pipe()
1679 ath10k_err(ar, "Failed to initialize CE dest ring for ID: %d (%d)\n", in ath10k_ce_init_pipe()
1689 static void ath10k_ce_deinit_src_ring(struct ath10k *ar, unsigned int ce_id) in ath10k_ce_deinit_src_ring() argument
1691 u32 ctrl_addr = ath10k_ce_base_address(ar, ce_id); in ath10k_ce_deinit_src_ring()
1693 ath10k_ce_src_ring_base_addr_set(ar, ce_id, 0); in ath10k_ce_deinit_src_ring()
1694 ath10k_ce_src_ring_size_set(ar, ctrl_addr, 0); in ath10k_ce_deinit_src_ring()
1695 ath10k_ce_src_ring_dmax_set(ar, ctrl_addr, 0); in ath10k_ce_deinit_src_ring()
1696 ath10k_ce_src_ring_highmark_set(ar, ctrl_addr, 0); in ath10k_ce_deinit_src_ring()
1699 static void ath10k_ce_deinit_dest_ring(struct ath10k *ar, unsigned int ce_id) in ath10k_ce_deinit_dest_ring() argument
1701 u32 ctrl_addr = ath10k_ce_base_address(ar, ce_id); in ath10k_ce_deinit_dest_ring()
1703 ath10k_ce_dest_ring_base_addr_set(ar, ce_id, 0); in ath10k_ce_deinit_dest_ring()
1704 ath10k_ce_dest_ring_size_set(ar, ctrl_addr, 0); in ath10k_ce_deinit_dest_ring()
1705 ath10k_ce_dest_ring_highmark_set(ar, ctrl_addr, 0); in ath10k_ce_deinit_dest_ring()
1708 void ath10k_ce_deinit_pipe(struct ath10k *ar, unsigned int ce_id) in ath10k_ce_deinit_pipe() argument
1710 ath10k_ce_deinit_src_ring(ar, ce_id); in ath10k_ce_deinit_pipe()
1711 ath10k_ce_deinit_dest_ring(ar, ce_id); in ath10k_ce_deinit_pipe()
1715 static void _ath10k_ce_free_pipe(struct ath10k *ar, int ce_id) in _ath10k_ce_free_pipe() argument
1717 struct ath10k_ce *ce = ath10k_ce_priv(ar); in _ath10k_ce_free_pipe()
1721 if (ar->hw_params.shadow_reg_support) in _ath10k_ce_free_pipe()
1723 dma_free_coherent(ar->dev, in _ath10k_ce_free_pipe()
1733 dma_free_coherent(ar->dev, in _ath10k_ce_free_pipe()
1746 static void _ath10k_ce_free_pipe_64(struct ath10k *ar, int ce_id) in _ath10k_ce_free_pipe_64() argument
1748 struct ath10k_ce *ce = ath10k_ce_priv(ar); in _ath10k_ce_free_pipe_64()
1752 if (ar->hw_params.shadow_reg_support) in _ath10k_ce_free_pipe_64()
1754 dma_free_coherent(ar->dev, in _ath10k_ce_free_pipe_64()
1764 dma_free_coherent(ar->dev, in _ath10k_ce_free_pipe_64()
1777 void ath10k_ce_free_pipe(struct ath10k *ar, int ce_id) in ath10k_ce_free_pipe() argument
1779 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_free_pipe()
1782 ce_state->ops->ce_free_pipe(ar, ce_id); in ath10k_ce_free_pipe()
1786 void ath10k_ce_dump_registers(struct ath10k *ar, in ath10k_ce_dump_registers() argument
1789 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_dump_registers()
1793 lockdep_assert_held(&ar->dump_mutex); in ath10k_ce_dump_registers()
1795 ath10k_err(ar, "Copy Engine register dump:\n"); in ath10k_ce_dump_registers()
1799 addr = ath10k_ce_base_address(ar, id); in ath10k_ce_dump_registers()
1803 cpu_to_le32(ath10k_ce_src_ring_write_index_get(ar, addr)); in ath10k_ce_dump_registers()
1805 cpu_to_le32(ath10k_ce_src_ring_read_index_get(ar, addr)); in ath10k_ce_dump_registers()
1807 cpu_to_le32(ath10k_ce_dest_ring_write_index_get(ar, addr)); in ath10k_ce_dump_registers()
1809 cpu_to_le32(ath10k_ce_dest_ring_read_index_get(ar, addr)); in ath10k_ce_dump_registers()
1815 ath10k_err(ar, "[%02d]: 0x%08x %3u %3u %3u %3u", id, in ath10k_ce_dump_registers()
1817 ath10k_err(ar, "[%02d]: 0x%08x %3u %3u %3u %3u\n", id, in ath10k_ce_dump_registers()
1859 static void ath10k_ce_set_ops(struct ath10k *ar, in ath10k_ce_set_ops() argument
1862 switch (ar->hw_rev) { in ath10k_ce_set_ops()
1872 int ath10k_ce_alloc_pipe(struct ath10k *ar, int ce_id, in ath10k_ce_alloc_pipe() argument
1875 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_alloc_pipe()
1879 ath10k_ce_set_ops(ar, ce_state); in ath10k_ce_alloc_pipe()
1892 ce_state->ar = ar; in ath10k_ce_alloc_pipe()
1894 ce_state->ctrl_addr = ath10k_ce_base_address(ar, ce_id); in ath10k_ce_alloc_pipe()
1906 ce_state->ops->ce_alloc_src_ring(ar, ce_id, attr); in ath10k_ce_alloc_pipe()
1909 ath10k_err(ar, "failed to alloc CE src ring %d: %d\n", in ath10k_ce_alloc_pipe()
1917 ce_state->dest_ring = ce_state->ops->ce_alloc_dst_ring(ar, in ath10k_ce_alloc_pipe()
1922 ath10k_err(ar, "failed to alloc CE dest ring %d: %d\n", in ath10k_ce_alloc_pipe()
1933 void ath10k_ce_alloc_rri(struct ath10k *ar) in ath10k_ce_alloc_rri() argument
1939 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_alloc_rri()
1941 ce->vaddr_rri = dma_alloc_coherent(ar->dev, in ath10k_ce_alloc_rri()
1948 ath10k_ce_write32(ar, ar->hw_ce_regs->ce_rri_low, in ath10k_ce_alloc_rri()
1950 ath10k_ce_write32(ar, ar->hw_ce_regs->ce_rri_high, in ath10k_ce_alloc_rri()
1955 ctrl1_regs = ar->hw_ce_regs->ctrl1_regs->addr; in ath10k_ce_alloc_rri()
1956 ce_base_addr = ath10k_ce_base_address(ar, i); in ath10k_ce_alloc_rri()
1957 value = ath10k_ce_read32(ar, ce_base_addr + ctrl1_regs); in ath10k_ce_alloc_rri()
1958 value |= ar->hw_ce_regs->upd->mask; in ath10k_ce_alloc_rri()
1959 ath10k_ce_write32(ar, ce_base_addr + ctrl1_regs, value); in ath10k_ce_alloc_rri()
1964 void ath10k_ce_free_rri(struct ath10k *ar) in ath10k_ce_free_rri() argument
1966 struct ath10k_ce *ce = ath10k_ce_priv(ar); in ath10k_ce_free_rri()
1968 dma_free_coherent(ar->dev, (CE_COUNT * sizeof(u32)), in ath10k_ce_free_rri()