Lines Matching refs:trackers
124 static void set_tracker_dma(struct dma_tracker_list *trackers,
128 trackers->list[tag].dma = dma;
131 static struct rsxx_dma *get_tracker_dma(struct dma_tracker_list *trackers,
134 return trackers->list[tag].dma;
137 static int pop_tracker(struct dma_tracker_list *trackers)
141 spin_lock(&trackers->lock);
142 tag = trackers->head;
144 trackers->head = trackers->list[tag].next_tag;
145 trackers->list[tag].next_tag = -1;
147 spin_unlock(&trackers->lock);
152 static void push_tracker(struct dma_tracker_list *trackers, int tag)
154 spin_lock(&trackers->lock);
155 trackers->list[tag].next_tag = trackers->head;
156 trackers->head = tag;
157 trackers->list[tag].dma = NULL;
158 spin_unlock(&trackers->lock);
404 tag = pop_tracker(ctrl->trackers);
420 push_tracker(ctrl->trackers, tag);
444 push_tracker(ctrl->trackers, tag);
450 set_tracker_dma(ctrl->trackers, tag, dma);
525 dma = get_tracker_dma(ctrl->trackers, tag);
554 push_tracker(ctrl->trackers, tag);
811 ctrl->trackers = vmalloc(DMA_TRACKER_LIST_SIZE8);
812 if (!ctrl->trackers)
815 ctrl->trackers->head = 0;
817 ctrl->trackers->list[i].next_tag = i + 1;
818 ctrl->trackers->list[i].dma = NULL;
820 ctrl->trackers->list[RSXX_MAX_OUTSTANDING_CMDS-1].next_tag = -1;
821 spin_lock_init(&ctrl->trackers->lock);
947 if (ctrl->trackers)
948 vfree(ctrl->trackers);
970 dma = get_tracker_dma(ctrl->trackers, i);
974 push_tracker(ctrl->trackers, i);
1010 vfree(ctrl->trackers);
1036 dma = get_tracker_dma(card->ctrl[i].trackers, j);
1056 push_tracker(card->ctrl[i].trackers, j);