Lines Matching refs:xr

70 	struct xdma_request *xr;  in xchan_bufs_free_reserved()  local
75 xr = &xchan->xr_mem[i]; in xchan_bufs_free_reserved()
76 size = xr->buf.size; in xchan_bufs_free_reserved()
77 if (xr->buf.vaddr) { in xchan_bufs_free_reserved()
78 pmap_kremove_device(xr->buf.vaddr, size); in xchan_bufs_free_reserved()
79 kva_free(xr->buf.vaddr, size); in xchan_bufs_free_reserved()
80 xr->buf.vaddr = 0; in xchan_bufs_free_reserved()
82 if (xr->buf.paddr) { in xchan_bufs_free_reserved()
83 vmem_free(xchan->vmem, xr->buf.paddr, size); in xchan_bufs_free_reserved()
84 xr->buf.paddr = 0; in xchan_bufs_free_reserved()
86 xr->buf.size = 0; in xchan_bufs_free_reserved()
94 struct xdma_request *xr; in xchan_bufs_alloc_reserved() local
105 xr = &xchan->xr_mem[i]; in xchan_bufs_alloc_reserved()
115 xr->buf.size = size; in xchan_bufs_alloc_reserved()
116 xr->buf.paddr = addr; in xchan_bufs_alloc_reserved()
117 xr->buf.vaddr = kva_alloc(size); in xchan_bufs_alloc_reserved()
118 if (xr->buf.vaddr == 0) { in xchan_bufs_alloc_reserved()
124 pmap_kenter_device(xr->buf.vaddr, size, addr); in xchan_bufs_alloc_reserved()
134 struct xdma_request *xr; in xchan_bufs_alloc_busdma() local
161 xr = &xchan->xr_mem[i]; in xchan_bufs_alloc_busdma()
163 &xr->buf.map); in xchan_bufs_alloc_busdma()
210 struct xdma_request *xr; in xchan_bufs_free() local
219 xr = &xchan->xr_mem[i]; in xchan_bufs_free()
220 b = &xr->buf; in xchan_bufs_free()
324 struct xdma_request *xr; in xchan_seg_done() local
328 xr = TAILQ_FIRST(&xchan->processing); in xchan_seg_done()
329 if (xr == NULL) in xchan_seg_done()
332 b = &xr->buf; in xchan_seg_done()
338 if (xr->direction == XDMA_MEM_TO_DEV) in xchan_seg_done()
346 if (xr->req_type == XR_TYPE_MBUF && in xchan_seg_done()
347 xr->direction == XDMA_DEV_TO_MEM) in xchan_seg_done()
348 m_copyback(xr->m, 0, st->transferred, in xchan_seg_done()
349 (void *)xr->buf.vaddr); in xchan_seg_done()
351 if (xr->direction == XDMA_MEM_TO_DEV) in xchan_seg_done()
352 addr = xr->src_addr; in xchan_seg_done()
354 addr = xr->dst_addr; in xchan_seg_done()
357 xr->status.error = st->error; in xchan_seg_done()
358 xr->status.transferred = st->transferred; in xchan_seg_done()
361 TAILQ_REMOVE(&xchan->processing, xr, xr_next); in xchan_seg_done()
365 TAILQ_INSERT_TAIL(&xchan->queue_out, xr, xr_next); in xchan_seg_done()
394 _xdma_load_data_busdma(xdma_channel_t *xchan, struct xdma_request *xr, in _xdma_load_data_busdma() argument
408 switch (xr->req_type) { in _xdma_load_data_busdma()
411 xr->buf.map, xr->m, seg, &nsegs, BUS_DMA_NOWAIT); in _xdma_load_data_busdma()
418 xr->buf.map, xr->bp, xdma_dmamap_cb, &slr, BUS_DMA_NOWAIT); in _xdma_load_data_busdma()
428 switch (xr->direction) { in _xdma_load_data_busdma()
430 addr = (void *)xr->src_addr; in _xdma_load_data_busdma()
433 addr = (void *)xr->dst_addr; in _xdma_load_data_busdma()
443 error = bus_dmamap_load(xchan->dma_tag_bufs, xr->buf.map, in _xdma_load_data_busdma()
444 addr, (xr->block_len * xr->block_num), in _xdma_load_data_busdma()
471 if (xr->direction == XDMA_MEM_TO_DEV) in _xdma_load_data_busdma()
472 bus_dmamap_sync(xchan->dma_tag_bufs, xr->buf.map, in _xdma_load_data_busdma()
475 bus_dmamap_sync(xchan->dma_tag_bufs, xr->buf.map, in _xdma_load_data_busdma()
482 _xdma_load_data(xdma_channel_t *xchan, struct xdma_request *xr, in _xdma_load_data() argument
491 m = xr->m; in _xdma_load_data()
498 switch (xr->req_type) { in _xdma_load_data()
501 if (xr->direction == XDMA_MEM_TO_DEV) in _xdma_load_data()
503 (void *)xr->buf.vaddr); in _xdma_load_data()
504 seg[0].ds_addr = (bus_addr_t)xr->buf.paddr; in _xdma_load_data()
509 if (xr->direction == XDMA_MEM_TO_DEV) in _xdma_load_data()
521 if (xr->direction == XDMA_MEM_TO_DEV) in _xdma_load_data()
522 xr->src_addr = va; in _xdma_load_data()
524 xr->dst_addr = va; in _xdma_load_data()
541 struct xdma_request *xr, struct bus_dma_segment *seg) in xdma_load_data() argument
548 nsegs = _xdma_load_data_busdma(xchan, xr, seg); in xdma_load_data()
550 nsegs = _xdma_load_data(xchan, xr, seg); in xdma_load_data()
554 xr->buf.nsegs = nsegs; in xdma_load_data()
555 xr->buf.nsegs_left = nsegs; in xdma_load_data()
565 struct xdma_request *xr; in xdma_process() local
588 TAILQ_FOREACH_SAFE(xr, &xchan->queue_in, xr_next, xr_tmp) { in xdma_process()
589 switch (xr->req_type) { in xdma_process()
593 c = xdma_mbuf_defrag(xchan, xr); in xdma_process()
614 nsegs = xdma_load_data(xchan, xr, seg); in xdma_process()
618 xdma_sglist_add(&sg[n], seg, nsegs, xr); in xdma_process()
622 TAILQ_REMOVE(&xchan->queue_in, xr, xr_next); in xdma_process()
626 TAILQ_INSERT_TAIL(&xchan->processing, xr, xr_next); in xdma_process()