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