sound: oss/dmabuf: use dma_map_single
authorArnd Bergmann <arnd@arndb.de>
Thu, 25 Apr 2013 17:28:50 +0000 (19:28 +0200)
committerTakashi Iwai <tiwai@suse.de>
Fri, 26 Apr 2013 05:36:38 +0000 (07:36 +0200)
The virt_to_bus/bus_to_virt functions have been deprecated
for as long as I can remember, and they are used in very
few remaining instances, usually in obscure ISA device
drivers. The OSS sound drivers are the only ones that are
still used on the ARM architecture, and only on some of
the earliest StrongARM machines.

The problem for converting the OSS subsystem to use
dma_map_single instead is that the caller of virt_to_bus
does not have a device pointer, since the subsystem has
never been ported to use the common device infrastructure.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/oss/dmabuf.c

index bcc3e8e071229db29775632dc6a7380aeda0f6f5..a59c88818f48a2dbf1f79e9ac4a627ee81f6cb26 100644 (file)
@@ -114,7 +114,7 @@ static int sound_alloc_dmap(struct dma_buffparms *dmap)
                }
        }
        dmap->raw_buf = start_addr;
-       dmap->raw_buf_phys = virt_to_bus(start_addr);
+       dmap->raw_buf_phys = dma_map_single(NULL, start_addr, dmap->buffsize, DMA_BIDIRECTIONAL);
 
        for (page = virt_to_page(start_addr); page <= virt_to_page(end_addr); page++)
                SetPageReserved(page);
@@ -139,6 +139,7 @@ static void sound_free_dmap(struct dma_buffparms *dmap)
        for (page = virt_to_page(start_addr); page <= virt_to_page(end_addr); page++)
                ClearPageReserved(page);
 
+       dma_unmap_single(NULL, dmap->raw_buf_phys, dmap->buffsize, DMA_BIDIRECTIONAL);
        free_pages((unsigned long) dmap->raw_buf, sz);
        dmap->raw_buf = NULL;
 }