[ARM] Move ISA DMA bus_to_virt() out of set_dma_addr()
authorRussell King <rmk@dyn-67.arm.linux.org.uk>
Wed, 4 Jan 2006 14:41:29 +0000 (14:41 +0000)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Wed, 4 Jan 2006 14:41:29 +0000 (14:41 +0000)
Allow the compiler to optimise the bus_to_virt(virt_to_bus())
transformation in the ARM ISA DMA interface.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/kernel/dma.c
include/asm-arm/dma.h

index 8d6381cd89153adf628f0387253cf519b0f2e774..3aedada71046810420f32671052cf42bf8b2b441 100644 (file)
@@ -131,7 +131,7 @@ void set_dma_sg (dmach_t channel, struct scatterlist *sg, int nr_sg)
  *
  * Copy address to the structure, and set the invalid bit
  */
-void set_dma_addr (dmach_t channel, unsigned long physaddr)
+void __set_dma_addr (dmach_t channel, void *addr)
 {
        dma_t *dma = dma_chan + channel;
 
@@ -141,7 +141,7 @@ void set_dma_addr (dmach_t channel, unsigned long physaddr)
 
        dma->sg = &dma->buf;
        dma->sgcount = 1;
-       dma->buf.__address = bus_to_virt(physaddr);
+       dma->buf.__address = addr;
        dma->using_sg = 0;
        dma->invalid = 1;
 }
@@ -278,7 +278,7 @@ GLOBAL_ALIAS(get_dma_list, get_dma_residue);
 GLOBAL_ALIAS(set_dma_mode, get_dma_residue);
 GLOBAL_ALIAS(set_dma_page, get_dma_residue);
 GLOBAL_ALIAS(set_dma_count, get_dma_residue);
-GLOBAL_ALIAS(set_dma_addr, get_dma_residue);
+GLOBAL_ALIAS(__set_dma_addr, get_dma_residue);
 GLOBAL_ALIAS(set_dma_sg, get_dma_residue);
 GLOBAL_ALIAS(set_dma_speed, get_dma_residue);
 GLOBAL_ALIAS(init_dma, get_dma_residue);
@@ -289,7 +289,7 @@ EXPORT_SYMBOL(request_dma);
 EXPORT_SYMBOL(free_dma);
 EXPORT_SYMBOL(enable_dma);
 EXPORT_SYMBOL(disable_dma);
-EXPORT_SYMBOL(set_dma_addr);
+EXPORT_SYMBOL(__set_dma_addr);
 EXPORT_SYMBOL(set_dma_count);
 EXPORT_SYMBOL(set_dma_mode);
 EXPORT_SYMBOL(set_dma_page);
index ef41df43a584765b5c7d10ce6e38a6cc75d567f8..1c7087f9364c1b485658213d5241fe4cc898c360 100644 (file)
@@ -91,7 +91,9 @@ extern void set_dma_sg(dmach_t channel, struct scatterlist *sg, int nr_sg);
  * especially since some DMA architectures don't update the
  * DMA address immediately, but defer it to the enable_dma().
  */
-extern void set_dma_addr(dmach_t channel, unsigned long physaddr);
+extern void __set_dma_addr(dmach_t channel, void *addr);
+#define set_dma_addr(channel, addr)                            \
+       __set_dma_addr(channel, bus_to_virt(addr))
 
 /* Set the DMA byte count for this channel
  *