Lines Matching refs:dma

297 	ocs_dma_t	*dma = arg;  in ocs_dma_load()  local
301 dma->phys = 0; in ocs_dma_load()
303 dma->phys = seg->ds_addr; in ocs_dma_load()
317 ocs_dma_free(ocs_os_handle_t os, ocs_dma_t *dma) in ocs_dma_free() argument
321 if (!dma) { in ocs_dma_free()
322 device_printf(ocs->dev, "%s: bad parameter(s) dma=%p\n", __func__, dma); in ocs_dma_free()
326 if (dma->size == 0) { in ocs_dma_free()
330 if (dma->map) { in ocs_dma_free()
331 bus_dmamap_sync(dma->tag, dma->map, BUS_DMASYNC_POSTREAD | in ocs_dma_free()
333 bus_dmamap_unload(dma->tag, dma->map); in ocs_dma_free()
336 if (dma->virt) { in ocs_dma_free()
337 bus_dmamem_free(dma->tag, dma->virt, dma->map); in ocs_dma_free()
338 bus_dmamap_destroy(dma->tag, dma->map); in ocs_dma_free()
340 bus_dma_tag_destroy(dma->tag); in ocs_dma_free()
342 bzero(dma, sizeof(ocs_dma_t)); in ocs_dma_free()
359 ocs_dma_alloc(ocs_os_handle_t os, ocs_dma_t *dma, size_t size, size_t align) in ocs_dma_alloc() argument
363 if (!dma || !size) { in ocs_dma_alloc()
365 __func__, dma, size); in ocs_dma_alloc()
369 bzero(dma, sizeof(ocs_dma_t)); in ocs_dma_alloc()
374 size, 1, size, 0, NULL, NULL, &dma->tag)) { in ocs_dma_alloc()
379 dma->size = size; in ocs_dma_alloc()
382 if (bus_dmamem_alloc(dma->tag, &dma->virt, BUS_DMA_NOWAIT | BUS_DMA_COHERENT, in ocs_dma_alloc()
383 &dma->map)) { in ocs_dma_alloc()
385 ocs_dma_free(ocs, dma); in ocs_dma_alloc()
389 dma->alloc = dma->virt; in ocs_dma_alloc()
392 if (bus_dmamap_load(dma->tag, dma->map, dma->virt, dma->size, ocs_dma_load, in ocs_dma_alloc()
393 dma, 0)) { in ocs_dma_alloc()
395 ocs_dma_free(ocs, dma); in ocs_dma_alloc()
400 if (0 == dma->phys) { in ocs_dma_alloc()
402 ocs_dma_free(ocs, dma); in ocs_dma_alloc()
422 ocs_dma_sync(ocs_dma_t *dma, uint32_t flags) in ocs_dma_sync() argument
424 bus_dmamap_sync(dma->tag, dma->map, flags); in ocs_dma_sync()
428 ocs_dma_copy_in(ocs_dma_t *dma, void *buffer, uint32_t buffer_length) in ocs_dma_copy_in() argument
430 if (!dma) in ocs_dma_copy_in()
436 if (buffer_length > dma->size) in ocs_dma_copy_in()
437 buffer_length = dma->size; in ocs_dma_copy_in()
438 ocs_memcpy(dma->virt, buffer, buffer_length); in ocs_dma_copy_in()
439 dma->len = buffer_length; in ocs_dma_copy_in()
444 ocs_dma_copy_out(ocs_dma_t *dma, void *buffer, uint32_t buffer_length) in ocs_dma_copy_out() argument
446 if (!dma) in ocs_dma_copy_out()
452 if (buffer_length > dma->len) in ocs_dma_copy_out()
453 buffer_length = dma->len; in ocs_dma_copy_out()
454 ocs_memcpy(buffer, dma->virt, buffer_length); in ocs_dma_copy_out()