Lines Matching refs:ioc

58 	struct proto_ioc_busdma *ioc;  member
63 struct proto_ioc_busdma *ioc) in proto_busdma_tag_create() argument
68 if (ioc->u.tag.bndry != 0 && in proto_busdma_tag_create()
69 (ioc->u.tag.bndry & (ioc->u.tag.bndry - 1)) != 0) in proto_busdma_tag_create()
77 if (ioc->u.tag.maxsegsz > ioc->u.tag.maxsz || ioc->u.tag.nsegs == 1) in proto_busdma_tag_create()
78 ioc->u.tag.maxsegsz = ioc->u.tag.maxsz; in proto_busdma_tag_create()
84 tag->align = MAX(ioc->u.tag.align, parent->align); in proto_busdma_tag_create()
85 tag->bndry = BNDRY_MIN(ioc->u.tag.bndry, parent->bndry); in proto_busdma_tag_create()
86 tag->maxaddr = MIN(ioc->u.tag.maxaddr, parent->maxaddr); in proto_busdma_tag_create()
87 tag->maxsz = MIN(ioc->u.tag.maxsz, parent->maxsz); in proto_busdma_tag_create()
88 tag->maxsegsz = MIN(ioc->u.tag.maxsegsz, parent->maxsegsz); in proto_busdma_tag_create()
89 tag->nsegs = MIN(ioc->u.tag.nsegs, parent->nsegs); in proto_busdma_tag_create()
90 tag->datarate = MIN(ioc->u.tag.datarate, parent->datarate); in proto_busdma_tag_create()
92 ioc->u.tag.align = tag->align; in proto_busdma_tag_create()
93 ioc->u.tag.bndry = tag->bndry; in proto_busdma_tag_create()
94 ioc->u.tag.maxaddr = tag->maxaddr; in proto_busdma_tag_create()
95 ioc->u.tag.maxsz = tag->maxsz; in proto_busdma_tag_create()
96 ioc->u.tag.maxsegsz = tag->maxsegsz; in proto_busdma_tag_create()
97 ioc->u.tag.nsegs = tag->nsegs; in proto_busdma_tag_create()
98 ioc->u.tag.datarate = tag->datarate; in proto_busdma_tag_create()
100 tag->align = ioc->u.tag.align; in proto_busdma_tag_create()
101 tag->bndry = ioc->u.tag.bndry; in proto_busdma_tag_create()
102 tag->maxaddr = ioc->u.tag.maxaddr; in proto_busdma_tag_create()
103 tag->maxsz = ioc->u.tag.maxsz; in proto_busdma_tag_create()
104 tag->maxsegsz = ioc->u.tag.maxsegsz; in proto_busdma_tag_create()
105 tag->nsegs = ioc->u.tag.nsegs; in proto_busdma_tag_create()
106 tag->datarate = ioc->u.tag.datarate; in proto_busdma_tag_create()
109 ioc->result = (uintptr_t)(void *)tag; in proto_busdma_tag_create()
167 pcb->ioc->u.md.bus_nsegs = nseg; in proto_busdma_mem_alloc_callback()
168 pcb->ioc->u.md.bus_addr = segs[0].ds_addr; in proto_busdma_mem_alloc_callback()
173 struct proto_ioc_busdma *ioc) in proto_busdma_mem_alloc() argument
198 pcb.ioc = ioc; in proto_busdma_mem_alloc()
209 ioc->u.md.virt_addr = (uintptr_t)md->virtaddr; in proto_busdma_mem_alloc()
210 ioc->u.md.virt_size = tag->maxsz; in proto_busdma_mem_alloc()
211 ioc->u.md.phys_nsegs = 1; in proto_busdma_mem_alloc()
212 ioc->u.md.phys_addr = md->physaddr; in proto_busdma_mem_alloc()
213 ioc->result = (uintptr_t)(void *)md; in proto_busdma_mem_alloc()
228 struct proto_ioc_busdma *ioc) in proto_busdma_md_create() argument
252 ioc->result = (uintptr_t)(void *)md; in proto_busdma_md_create()
271 pcb->ioc->u.md.bus_nsegs = nseg; in proto_busdma_md_load_callback()
272 pcb->ioc->u.md.bus_addr = segs[0].ds_addr; in proto_busdma_md_load_callback()
277 struct proto_ioc_busdma *ioc, struct thread *td) in proto_busdma_md_load() argument
285 iov.iov_base = (void *)(uintptr_t)ioc->u.md.virt_addr; in proto_busdma_md_load()
286 iov.iov_len = ioc->u.md.virt_size; in proto_busdma_md_load()
297 pcb.ioc = ioc; in proto_busdma_md_load()
305 md->physaddr = pmap_extract(pmap, ioc->u.md.virt_addr); in proto_busdma_md_load()
306 ioc->u.md.phys_nsegs = 1; /* XXX */ in proto_busdma_md_load()
307 ioc->u.md.phys_addr = md->physaddr; in proto_busdma_md_load()
324 struct proto_ioc_busdma *ioc) in proto_busdma_sync() argument
330 if (ioc->u.sync.op & ~ops) in proto_busdma_sync()
334 bus_dmamap_sync(md->bd_tag, md->bd_map, ioc->u.sync.op); in proto_busdma_sync()
387 struct proto_ioc_busdma *ioc, struct thread *td) in proto_busdma_ioctl() argument
396 switch (ioc->request) { in proto_busdma_ioctl()
399 error = proto_busdma_tag_create(busdma, NULL, ioc); in proto_busdma_ioctl()
402 tag = proto_busdma_tag_lookup(busdma, ioc->key); in proto_busdma_ioctl()
407 error = proto_busdma_tag_create(busdma, tag, ioc); in proto_busdma_ioctl()
410 tag = proto_busdma_tag_lookup(busdma, ioc->key); in proto_busdma_ioctl()
418 tag = proto_busdma_tag_lookup(busdma, ioc->u.md.tag); in proto_busdma_ioctl()
423 error = proto_busdma_mem_alloc(busdma, tag, ioc); in proto_busdma_ioctl()
426 md = proto_busdma_md_lookup(busdma, ioc->key); in proto_busdma_ioctl()
434 tag = proto_busdma_tag_lookup(busdma, ioc->u.md.tag); in proto_busdma_ioctl()
439 error = proto_busdma_md_create(busdma, tag, ioc); in proto_busdma_ioctl()
442 md = proto_busdma_md_lookup(busdma, ioc->key); in proto_busdma_ioctl()
450 md = proto_busdma_md_lookup(busdma, ioc->key); in proto_busdma_ioctl()
455 error = proto_busdma_md_load(busdma, md, ioc, td); in proto_busdma_ioctl()
458 md = proto_busdma_md_lookup(busdma, ioc->key); in proto_busdma_ioctl()
466 md = proto_busdma_md_lookup(busdma, ioc->key); in proto_busdma_ioctl()
471 error = proto_busdma_sync(busdma, md, ioc); in proto_busdma_ioctl()