X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=carlfw%2Finclude%2Fdma.h;fp=carlfw%2Finclude%2Fdma.h;h=11a760dfc98139cb68c921d188d1cc19c8b71941;hb=990ce9efaea1c6e46372a6758988aff6e9d202e9;hp=70417360854bcab334b47fc08d0d6c14f96fc508;hpb=7cb1a2fccddb29f3479d92ab6532aa8dd728fb78;p=carl9170fw.git diff --git a/carlfw/include/dma.h b/carlfw/include/dma.h index 7041736..11a760d 100644 --- a/carlfw/include/dma.h +++ b/carlfw/include/dma.h @@ -215,7 +215,6 @@ struct dma_desc *dma_unlink_head(struct dma_queue *queue); void dma_init_descriptors(void); void dma_reclaim(struct dma_queue *q, struct dma_desc *desc); void dma_put(struct dma_queue *q, struct dma_desc *desc); -void dma_queue_reclaim(struct dma_queue *dst, struct dma_queue *src); static inline __inline bool is_terminator(struct dma_queue *q, struct dma_desc *desc) { @@ -275,6 +274,10 @@ static inline __inline struct dma_desc *dma_dequeue_not_bits(struct dma_queue *q (desc->status & AR9170_OWN_BITS) == bits); \ desc = (queue)->head) +#define __for_each_desc_continue(desc, queue) \ + for (;desc != (queue)->terminator; \ + desc = (desc)->lastAddr->nextAddr) + #define __for_each_desc(desc, queue) \ for (desc = (queue)->head; \ desc != (queue)->terminator; \ @@ -311,6 +314,15 @@ static inline __inline void dma_rearm(struct dma_desc *desc) AR9170_OWN_BITS_HW); } +static inline __inline void dma_fix_downqueue(struct dma_desc *desc) +{ + desc->status = AR9170_OWN_BITS_HW; + desc->ctrl = 0; + desc->dataSize = 0; + desc->totalLen = AR9170_BLOCK_SIZE; + desc->lastAddr = desc; +} + static inline void __check_desc(void) { struct ar9170_dma_memory mem;