Lines Matching defs:dmat
104 static int reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map,
108 _bus_dmamap_reserve_pages(bus_dma_tag_t dmat, bus_dmamap_t map, int flags)
115 if (reserve_bounce_pages(dmat, map, 0) != 0) {
121 if (reserve_bounce_pages(dmat, map, 1) != 0) {
123 bz = dmat->bounce_zone;
155 addr_needs_bounce(bus_dma_tag_t dmat, bus_addr_t paddr)
158 if (paddr > dmat_lowaddr(dmat) && paddr <= dmat_highaddr(dmat))
160 if (!vm_addr_align_ok(paddr, dmat_alignment(dmat)))
167 alloc_bounce_zone(bus_dma_tag_t dmat)
174 if ((dmat_alignment(dmat) <= bz->alignment) &&
176 dmat_domain(dmat) == bz->domain &&
178 (dmat_lowaddr(dmat) >= bz->lowaddr)) {
179 dmat->bounce_zone = bz;
193 bz->lowaddr = dmat_lowaddr(dmat);
194 bz->alignment = MAX(dmat_alignment(dmat), PAGE_SIZE);
197 bz->domain = dmat_domain(dmat);
205 dmat->bounce_zone = bz;
265 alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages)
270 bz = dmat->bounce_zone;
310 reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map, int commit)
316 bz = dmat->bounce_zone;
330 add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr,
334 add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr,
341 KASSERT(dmat->bounce_zone != NULL, ("no bounce zone in dma tag"));
351 bz = dmat->bounce_zone;
370 if (dmat_flags(dmat) & BUS_DMA_KEEP_PG_OFFSET) {
398 free_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map)
408 bz = dmat->bounce_zone;
415 if (dmat_flags(dmat) & BUS_DMA_KEEP_PG_OFFSET) {
433 if (reserve_bounce_pages(map->dmat, map, 1) != 0)
450 _bus_dmamap_addseg(bus_dma_tag_t dmat, bus_dmamap_t map, bus_addr_t curaddr,
456 ("ds_addr %#jx > BUS_SPACE_MAXADDR %#jx; dmat %p fl %#x low %#jx "
459 dmat, dmat_bounce_flags(dmat), (uintmax_t)dmat_lowaddr(dmat),
460 (uintmax_t)dmat_highaddr(dmat)));
465 if (!vm_addr_bound_ok(curaddr, sgsize, dmat_boundary(dmat)))
466 sgsize = roundup2(curaddr, dmat_boundary(dmat)) - curaddr;
479 (segs[seg].ds_len + sgsize) <= dmat_maxsegsz(dmat) &&
481 segs[seg].ds_len + sgsize, dmat_boundary(dmat)))
484 if (++seg >= dmat_nsegments(dmat))
499 _bus_dmamap_addsegs(bus_dma_tag_t dmat, bus_dmamap_t map, bus_addr_t curaddr,
505 todo = MIN(sgsize, dmat_maxsegsz(dmat));
506 done = _bus_dmamap_addseg(dmat, map, curaddr, todo, segs,
520 bus_dma_tag_t dmat;
538 dmat = map->dmat;
539 bz = dmat->bounce_zone;
540 dmat_lockfunc(dmat)(dmat_lockfuncarg(dmat),
543 bus_dmamap_load_mem(map->dmat, map, &map->mem,
545 dmat_lockfunc(dmat)(dmat_lockfuncarg(dmat),