Lines Matching refs:dmah

41 	drm_dma_handle_t *dmah = arg;
47 dmah->busaddr = segs[0].ds_addr;
59 drm_dma_handle_t *dmah;
72 dmah = malloc(sizeof(drm_dma_handle_t), DRM_MEM_DMA, M_ZERO | M_NOWAIT);
73 if (dmah == NULL)
90 &dmah->tag);
92 free(dmah, DRM_MEM_DMA);
96 ret = bus_dmamem_alloc(dmah->tag, &dmah->vaddr,
97 BUS_DMA_WAITOK | BUS_DMA_ZERO, &dmah->map);
99 bus_dma_tag_destroy(dmah->tag);
100 free(dmah, DRM_MEM_DMA);
104 ret = bus_dmamap_load(dmah->tag, dmah->map, dmah->vaddr, size,
105 drm_pci_busdma_callback, dmah, BUS_DMA_NOWAIT | BUS_DMA_NOCACHE);
107 bus_dmamem_free(dmah->tag, dmah->vaddr, dmah->map);
108 bus_dma_tag_destroy(dmah->tag);
109 free(dmah, DRM_MEM_DMA);
114 dmah->tag = dev->pa.pa_dmat; /* use 32-bit DMA tag */
116 if ((ret = bus_dmamem_alloc(dmah->tag, size, align, 0,
117 dmah->segs, 1, &nsegs, BUS_DMA_WAITOK)) != 0) {
120 dmah->tag = NULL;
121 free(dmah, DRM_MEM_DMA);
127 bus_dmamem_free(dmah->tag, dmah->segs, 1);
128 dmah->tag = NULL;
129 free(dmah, DRM_MEM_DMA);
132 if ((ret = bus_dmamem_map(dmah->tag, dmah->segs, nsegs, size,
133 &dmah->vaddr, BUS_DMA_NOWAIT | BUS_DMA_COHERENT | BUS_DMA_NOCACHE)) != 0) {
135 bus_dmamem_free(dmah->tag, dmah->segs, 1);
136 dmah->tag = NULL;
137 free(dmah, DRM_MEM_DMA);
140 if ((ret = bus_dmamap_create(dmah->tag, size, 1, size, 0,
141 BUS_DMA_NOWAIT, &dmah->map)) != 0) {
143 bus_dmamem_unmap(dmah->tag, dmah->vaddr, size);
144 bus_dmamem_free(dmah->tag, dmah->segs, 1);
145 dmah->tag = NULL;
146 free(dmah, DRM_MEM_DMA);
149 if ((ret = bus_dmamap_load(dmah->tag, dmah->map, dmah->vaddr,
152 bus_dmamap_destroy(dmah->tag, dmah->map);
153 bus_dmamem_unmap(dmah->tag, dmah->vaddr, size);
154 bus_dmamem_free(dmah->tag, dmah->segs, 1);
155 dmah->tag = NULL;
156 free(dmah, DRM_MEM_DMA);
159 dmah->busaddr = dmah->map->dm_segs[0].ds_addr;
160 dmah->size = size;
161 dmah->nsegs = 1;
162 memset(dmah->vaddr, 0, size);
165 return dmah;
172 drm_pci_free(struct drm_device *dev, drm_dma_handle_t *dmah)
174 if (dmah == NULL)
178 bus_dmamem_free(dmah->tag, dmah->vaddr, dmah->map);
179 bus_dma_tag_destroy(dmah->tag);
181 bus_dmamap_unload(dmah->tag, dmah->map);
182 bus_dmamap_destroy(dmah->tag, dmah->map);
183 bus_dmamem_unmap(dmah->tag, dmah->vaddr, dmah->size);
184 bus_dmamem_free(dmah->tag, dmah->segs, 1);
185 dmah->tag = NULL;
188 free(dmah, DRM_MEM_DMA);