Lines Matching refs:trackers
138 static void set_tracker_dma(struct dma_tracker_list *trackers, in set_tracker_dma() argument
142 trackers->list[tag].dma = dma; in set_tracker_dma()
145 static struct rsxx_dma *get_tracker_dma(struct dma_tracker_list *trackers, in get_tracker_dma() argument
148 return trackers->list[tag].dma; in get_tracker_dma()
151 static int pop_tracker(struct dma_tracker_list *trackers) in pop_tracker() argument
155 spin_lock(&trackers->lock); in pop_tracker()
156 tag = trackers->head; in pop_tracker()
158 trackers->head = trackers->list[tag].next_tag; in pop_tracker()
159 trackers->list[tag].next_tag = -1; in pop_tracker()
161 spin_unlock(&trackers->lock); in pop_tracker()
166 static void push_tracker(struct dma_tracker_list *trackers, int tag) in push_tracker() argument
168 spin_lock(&trackers->lock); in push_tracker()
169 trackers->list[tag].next_tag = trackers->head; in push_tracker()
170 trackers->head = tag; in push_tracker()
171 trackers->list[tag].dma = NULL; in push_tracker()
172 spin_unlock(&trackers->lock); in push_tracker()
418 tag = pop_tracker(ctrl->trackers); in rsxx_issue_dmas()
434 push_tracker(ctrl->trackers, tag); in rsxx_issue_dmas()
458 push_tracker(ctrl->trackers, tag); in rsxx_issue_dmas()
464 set_tracker_dma(ctrl->trackers, tag, dma); in rsxx_issue_dmas()
539 dma = get_tracker_dma(ctrl->trackers, tag); in rsxx_dma_done()
568 push_tracker(ctrl->trackers, tag); in rsxx_dma_done()
825 ctrl->trackers = vmalloc(DMA_TRACKER_LIST_SIZE8); in rsxx_dma_ctrl_init()
826 if (!ctrl->trackers) in rsxx_dma_ctrl_init()
829 ctrl->trackers->head = 0; in rsxx_dma_ctrl_init()
831 ctrl->trackers->list[i].next_tag = i + 1; in rsxx_dma_ctrl_init()
832 ctrl->trackers->list[i].dma = NULL; in rsxx_dma_ctrl_init()
834 ctrl->trackers->list[RSXX_MAX_OUTSTANDING_CMDS-1].next_tag = -1; in rsxx_dma_ctrl_init()
835 spin_lock_init(&ctrl->trackers->lock); in rsxx_dma_ctrl_init()
961 if (ctrl->trackers) in rsxx_dma_setup()
962 vfree(ctrl->trackers); in rsxx_dma_setup()
984 dma = get_tracker_dma(ctrl->trackers, i); in rsxx_dma_cancel()
988 push_tracker(ctrl->trackers, i); in rsxx_dma_cancel()
1024 vfree(ctrl->trackers); in rsxx_dma_destroy()
1050 dma = get_tracker_dma(card->ctrl[i].trackers, j); in rsxx_eeh_save_issued_dmas()
1070 push_tracker(card->ctrl[i].trackers, j); in rsxx_eeh_save_issued_dmas()