diff options
Diffstat (limited to 'sound/oss/dmabuf.c')
-rw-r--r-- | sound/oss/dmabuf.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sound/oss/dmabuf.c b/sound/oss/dmabuf.c index bcc3e8e07122..a59c88818f48 100644 --- a/sound/oss/dmabuf.c +++ b/sound/oss/dmabuf.c | |||
@@ -114,7 +114,7 @@ static int sound_alloc_dmap(struct dma_buffparms *dmap) | |||
114 | } | 114 | } |
115 | } | 115 | } |
116 | dmap->raw_buf = start_addr; | 116 | dmap->raw_buf = start_addr; |
117 | dmap->raw_buf_phys = virt_to_bus(start_addr); | 117 | dmap->raw_buf_phys = dma_map_single(NULL, start_addr, dmap->buffsize, DMA_BIDIRECTIONAL); |
118 | 118 | ||
119 | for (page = virt_to_page(start_addr); page <= virt_to_page(end_addr); page++) | 119 | for (page = virt_to_page(start_addr); page <= virt_to_page(end_addr); page++) |
120 | SetPageReserved(page); | 120 | SetPageReserved(page); |
@@ -139,6 +139,7 @@ static void sound_free_dmap(struct dma_buffparms *dmap) | |||
139 | for (page = virt_to_page(start_addr); page <= virt_to_page(end_addr); page++) | 139 | for (page = virt_to_page(start_addr); page <= virt_to_page(end_addr); page++) |
140 | ClearPageReserved(page); | 140 | ClearPageReserved(page); |
141 | 141 | ||
142 | dma_unmap_single(NULL, dmap->raw_buf_phys, dmap->buffsize, DMA_BIDIRECTIONAL); | ||
142 | free_pages((unsigned long) dmap->raw_buf, sz); | 143 | free_pages((unsigned long) dmap->raw_buf, sz); |
143 | dmap->raw_buf = NULL; | 144 | dmap->raw_buf = NULL; |
144 | } | 145 | } |