Lines Matching refs:dmah

48 	struct drm_dma_handle *dmah;
75 dmah = malloc(sizeof(struct drm_dma_handle), DRM_MEM_DMA,
77 if (dmah == NULL) {
89 &dmah->tag);
91 free(dmah, DRM_MEM_DMA);
97 ret = bus_dmamem_alloc(dmah->tag, &dmah->vaddr,
98 BUS_DMA_WAITOK | BUS_DMA_ZERO, &dmah->map);
100 bus_dma_tag_destroy(dmah->tag);
101 free(dmah, DRM_MEM_DMA);
107 ret = bus_dmamap_load(dmah->tag, dmah->map, dmah->vaddr,
111 bus_dmamem_free(dmah->tag, dmah->vaddr, dmah->map);
112 bus_dma_tag_destroy(dmah->tag);
113 free(dmah, DRM_MEM_DMA);
119 dmah = malloc(sizeof(struct drm_dma_handle) +
122 if (dmah == NULL) {
128 dmah->tag = dev->pa.pa_dmat;
130 if ((ret = bus_dmamem_alloc(dmah->tag, request->size, PAGE_SIZE, 0,
131 dmah->segs, pages, &nsegs,
135 dmah->tag = NULL;
136 free(dmah, DRM_MEM_DMA);
142 dmah->nsegs = nsegs;
143 if ((ret = bus_dmamem_map(dmah->tag, dmah->segs, nsegs, request->size,
144 &dmah->vaddr, BUS_DMA_NOWAIT |
147 bus_dmamem_free(dmah->tag, dmah->segs, dmah->nsegs);
148 dmah->tag = NULL;
149 free(dmah, DRM_MEM_DMA);
154 if ((ret = bus_dmamap_create(dmah->tag, request->size, nsegs,
156 &dmah->map)) != 0) {
158 bus_dmamem_unmap(dmah->tag, dmah->vaddr, request->size);
159 bus_dmamem_free(dmah->tag, dmah->segs, nsegs);
160 dmah->tag = NULL;
161 free(dmah, DRM_MEM_DMA);
166 if ((ret = bus_dmamap_load(dmah->tag, dmah->map, dmah->vaddr,
170 bus_dmamap_destroy(dmah->tag, dmah->map);
171 bus_dmamem_unmap(dmah->tag, dmah->vaddr, request->size);
172 bus_dmamem_free(dmah->tag, dmah->segs, dmah->nsegs);
173 dmah->tag = NULL;
174 free(dmah, DRM_MEM_DMA);
183 bus_addr_t base = dmah->map->dm_segs[i].ds_addr;
187 (offs + PAGE_SIZE <= dmah->map->dm_segs[i].ds_len) &&
194 dmah->size = request->size;
195 memset(dmah->vaddr, 0, request->size);
198 entry->sg_dmah = dmah;
199 entry->handle = (unsigned long)dmah->vaddr;
248 struct drm_dma_handle *dmah = entry->sg_dmah;
251 bus_dmamap_unload(dmah->tag, dmah->map);
252 bus_dmamem_free(dmah->tag, dmah->vaddr, dmah->map);
253 bus_dma_tag_destroy(dmah->tag);
255 bus_dmamap_unload(dmah->tag, dmah->map);
256 bus_dmamap_destroy(dmah->tag, dmah->map);
257 bus_dmamem_unmap(dmah->tag, dmah->vaddr, dmah->size);
258 bus_dmamem_free(dmah->tag, dmah->segs, dmah->nsegs);
259 dmah->tag = NULL;
261 free(dmah, DRM_MEM_DMA);