Lines Matching refs:dma_mem
68 os_dma_mem_alloc(pqisrc_softstate_t *softs, struct dma_mem *dma_mem) in os_dma_mem_alloc() argument
75 ASSERT(dma_mem->align >= 4); in os_dma_mem_alloc()
80 dma_mem->align, 0, /* algnmnt, boundary */ in os_dma_mem_alloc()
84 dma_mem->size, /* maxsize */ in os_dma_mem_alloc()
86 dma_mem->size, /* maxsegsize */ in os_dma_mem_alloc()
89 &dma_mem->dma_tag)) != 0 ) { in os_dma_mem_alloc()
94 if (!dma_mem->dma_tag) { in os_dma_mem_alloc()
100 if ((ret = bus_dmamem_alloc(dma_mem->dma_tag, (void **)&dma_mem->virt_addr, in os_dma_mem_alloc()
101 BUS_DMA_NOWAIT, &dma_mem->dma_map)) != 0) { in os_dma_mem_alloc()
107 if((ret = bus_dmamap_load(dma_mem->dma_tag, dma_mem->dma_map, in os_dma_mem_alloc()
108 dma_mem->virt_addr, dma_mem->size, in os_dma_mem_alloc()
109 os_dma_map, &dma_mem->dma_addr, 0)) != 0) { in os_dma_mem_alloc()
115 memset(dma_mem->virt_addr, 0, dma_mem->size); in os_dma_mem_alloc()
123 if(dma_mem->virt_addr) in os_dma_mem_alloc()
124 bus_dmamem_free(dma_mem->dma_tag, dma_mem->virt_addr, in os_dma_mem_alloc()
125 dma_mem->dma_map); in os_dma_mem_alloc()
127 if(dma_mem->dma_tag) in os_dma_mem_alloc()
128 bus_dma_tag_destroy(dma_mem->dma_tag); in os_dma_mem_alloc()
141 os_dma_mem_free(pqisrc_softstate_t *softs, struct dma_mem *dma_mem) in os_dma_mem_free() argument
145 if(dma_mem->dma_addr) { in os_dma_mem_free()
146 bus_dmamap_unload(dma_mem->dma_tag, dma_mem->dma_map); in os_dma_mem_free()
147 dma_mem->dma_addr = 0; in os_dma_mem_free()
150 if(dma_mem->virt_addr) { in os_dma_mem_free()
151 bus_dmamem_free(dma_mem->dma_tag, dma_mem->virt_addr, in os_dma_mem_free()
152 dma_mem->dma_map); in os_dma_mem_free()
153 dma_mem->virt_addr = NULL; in os_dma_mem_free()
156 if(dma_mem->dma_tag) { in os_dma_mem_free()
157 bus_dma_tag_destroy(dma_mem->dma_tag); in os_dma_mem_free()
158 dma_mem->dma_tag = NULL; in os_dma_mem_free()