Lines Matching refs:udma_q
308 struct al_udma_q udma_q[DMA_MAX_Q]; /* Array of UDMA Qs pointers */ member
358 int al_udma_q_reset(struct al_udma_q *udma_q);
405 static INLINE uint32_t al_udma_available_get(struct al_udma_q *udma_q) in al_udma_available_get() argument
407 uint16_t tmp = udma_q->next_cdesc_idx - (udma_q->next_desc_idx + 1); in al_udma_available_get()
408 tmp &= udma_q->size_mask; in al_udma_available_get()
421 static INLINE al_bool al_udma_is_empty(struct al_udma_q *udma_q) in al_udma_is_empty() argument
423 if (((udma_q->next_cdesc_idx - udma_q->next_desc_idx) & in al_udma_is_empty()
424 udma_q->size_mask) == 0) in al_udma_is_empty()
436 static INLINE union al_udma_desc *al_udma_desc_get(struct al_udma_q *udma_q) in al_udma_desc_get() argument
441 al_assert(udma_q); in al_udma_desc_get()
443 next_desc_idx = udma_q->next_desc_idx; in al_udma_desc_get()
444 desc = udma_q->desc_base_ptr + next_desc_idx; in al_udma_desc_get()
449 udma_q->next_desc_idx = next_desc_idx & udma_q->size_mask; in al_udma_desc_get()
462 static INLINE uint32_t al_udma_ring_id_get(struct al_udma_q *udma_q) in al_udma_ring_id_get() argument
466 al_assert(udma_q); in al_udma_ring_id_get()
468 ring_id = udma_q->desc_ring_id; in al_udma_ring_id_get()
472 if (unlikely(udma_q->next_desc_idx) == 0) in al_udma_ring_id_get()
473 udma_q->desc_ring_id = (udma_q->desc_ring_id + 1) & in al_udma_ring_id_get()
487 static INLINE int al_udma_desc_action_add(struct al_udma_q *udma_q, in al_udma_desc_action_add() argument
492 al_assert(udma_q); in al_udma_desc_action_add()
493 al_assert((num > 0) && (num <= udma_q->size)); in al_udma_desc_action_add()
495 addr = &udma_q->q_regs->rings.drtp_inc; in al_udma_desc_action_add()
521 struct al_udma_q *udma_q, in al_cdesc_next() argument
525 volatile uint8_t *tmp = (volatile uint8_t *) cdesc + offset * udma_q->cdesc_size; in al_cdesc_next()
526 al_assert(udma_q); in al_cdesc_next()
530 if (unlikely((tmp > udma_q->end_cdesc_ptr))) in al_cdesc_next()
532 (udma_q->cdesc_base_ptr + in al_cdesc_next()
533 (tmp - udma_q->end_cdesc_ptr - udma_q->cdesc_size)); in al_cdesc_next()
549 static INLINE al_bool al_udma_new_cdesc(struct al_udma_q *udma_q, in al_udma_new_cdesc() argument
553 == udma_q->comp_ring_id) in al_udma_new_cdesc()
570 struct al_udma_q *udma_q, in al_cdesc_next_update() argument
574 if (unlikely(((volatile uint8_t *) cdesc == udma_q->end_cdesc_ptr))) { in al_cdesc_next_update()
575 udma_q->comp_ring_id = in al_cdesc_next_update()
576 (udma_q->comp_ring_id + 1) & DMA_RING_ID_MASK; in al_cdesc_next_update()
577 return (union al_udma_cdesc *) udma_q->cdesc_base_ptr; in al_cdesc_next_update()
579 return (volatile union al_udma_cdesc *) ((volatile uint8_t *) cdesc + udma_q->cdesc_size); in al_cdesc_next_update()
602 struct al_udma_q *udma_q,
606 #define al_udma_cdesc_idx_to_ptr(udma_q, idx) \ argument
607 ((volatile union al_udma_cdesc *) ((udma_q)->cdesc_base_ptr + \
608 (idx) * (udma_q)->cdesc_size))
625 struct al_udma_q *udma_q, in al_udma_cdesc_get_all() argument
630 al_assert(udma_q); in al_udma_cdesc_get_all()
632 udma_q->comp_head_idx = (uint16_t) in al_udma_cdesc_get_all()
633 (al_reg_read32(&udma_q->q_regs->rings.crhp) & in al_udma_cdesc_get_all()
636 count = (udma_q->comp_head_idx - udma_q->next_cdesc_idx) & in al_udma_cdesc_get_all()
637 udma_q->size_mask; in al_udma_cdesc_get_all()
640 *cdesc = al_udma_cdesc_idx_to_ptr(udma_q, udma_q->next_cdesc_idx); in al_udma_cdesc_get_all()
654 static INLINE int al_udma_cdesc_ack(struct al_udma_q *udma_q, uint32_t num) in al_udma_cdesc_ack() argument
656 al_assert(udma_q); in al_udma_cdesc_ack()
658 udma_q->next_cdesc_idx += num; in al_udma_cdesc_ack()
659 udma_q->next_cdesc_idx &= udma_q->size_mask; in al_udma_cdesc_ack()