Lines Matching defs:dmah
190 struct drm_dma_handle *const dmah = kmem_alloc(sizeof(*dmah),
192 if (dmah == NULL) {
196 dmah->dmah_tag = dev->dmat;
202 error = -bus_dmamem_alloc(dmah->dmah_tag, size, align, 0,
203 &dmah->dmah_seg, 1, &nsegs, BUS_DMA_NOWAIT);
212 error = -bus_dmamem_map(dmah->dmah_tag, &dmah->dmah_seg, 1, size,
213 &dmah->vaddr,
217 dmah->size = size;
223 error = -bus_dmamap_create(dmah->dmah_tag, size, 1, size, 0,
224 BUS_DMA_NOWAIT, &dmah->dmah_map);
232 error = -bus_dmamap_load(dmah->dmah_tag, dmah->dmah_map, dmah->vaddr,
238 dmah->busaddr = dmah->dmah_map->dm_segs[0].ds_addr;
241 memset(dmah->vaddr, 0, size);
244 return dmah;
246 fail3: bus_dmamap_destroy(dmah->dmah_tag, dmah->dmah_map);
247 fail2: bus_dmamem_unmap(dmah->dmah_tag, dmah->vaddr, dmah->size);
248 fail1: bus_dmamem_free(dmah->dmah_tag, &dmah->dmah_seg, 1);
249 fail0: dmah->dmah_tag = NULL; /* XXX paranoia */
250 kmem_free(dmah, sizeof(*dmah));
256 * Release the bus DMA mappings and memory in dmah, and deallocate it.
259 drm_pci_free(struct drm_device *dev, struct drm_dma_handle *dmah)
262 bus_dmamap_unload(dmah->dmah_tag, dmah->dmah_map);
263 bus_dmamap_destroy(dmah->dmah_tag, dmah->dmah_map);
264 bus_dmamem_unmap(dmah->dmah_tag, dmah->vaddr, dmah->size);
265 bus_dmamem_free(dmah->dmah_tag, &dmah->dmah_seg, 1);
266 dmah->dmah_tag = NULL; /* XXX paranoia */
267 kmem_free(dmah, sizeof(*dmah));