aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2006-01-04 09:41:29 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2006-01-04 09:41:29 -0500
commit333c9624b728a9e83b741ea75836aa114ec35272 (patch)
tree607fa3d2d2aa3d2cc3e4c4ebacdf8e7d7b59c565
parent109a9378807cb9093a88fbf9707420de97601e14 (diff)
[ARM] Move ISA DMA bus_to_virt() out of set_dma_addr()
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>
-rw-r--r--arch/arm/kernel/dma.c8
-rw-r--r--include/asm-arm/dma.h4
2 files changed, 7 insertions, 5 deletions
diff --git a/arch/arm/kernel/dma.c b/arch/arm/kernel/dma.c
index 8d6381cd8915..3aedada71046 100644
--- a/arch/arm/kernel/dma.c
+++ b/arch/arm/kernel/dma.c
@@ -131,7 +131,7 @@ void set_dma_sg (dmach_t channel, struct scatterlist *sg, int nr_sg)
131 * 131 *
132 * Copy address to the structure, and set the invalid bit 132 * Copy address to the structure, and set the invalid bit
133 */ 133 */
134void set_dma_addr (dmach_t channel, unsigned long physaddr) 134void __set_dma_addr (dmach_t channel, void *addr)
135{ 135{
136 dma_t *dma = dma_chan + channel; 136 dma_t *dma = dma_chan + channel;
137 137
@@ -141,7 +141,7 @@ void set_dma_addr (dmach_t channel, unsigned long physaddr)
141 141
142 dma->sg = &dma->buf; 142 dma->sg = &dma->buf;
143 dma->sgcount = 1; 143 dma->sgcount = 1;
144 dma->buf.__address = bus_to_virt(physaddr); 144 dma->buf.__address = addr;
145 dma->using_sg = 0; 145 dma->using_sg = 0;
146 dma->invalid = 1; 146 dma->invalid = 1;
147} 147}
@@ -278,7 +278,7 @@ GLOBAL_ALIAS(get_dma_list, get_dma_residue);
278GLOBAL_ALIAS(set_dma_mode, get_dma_residue); 278GLOBAL_ALIAS(set_dma_mode, get_dma_residue);
279GLOBAL_ALIAS(set_dma_page, get_dma_residue); 279GLOBAL_ALIAS(set_dma_page, get_dma_residue);
280GLOBAL_ALIAS(set_dma_count, get_dma_residue); 280GLOBAL_ALIAS(set_dma_count, get_dma_residue);
281GLOBAL_ALIAS(set_dma_addr, get_dma_residue); 281GLOBAL_ALIAS(__set_dma_addr, get_dma_residue);
282GLOBAL_ALIAS(set_dma_sg, get_dma_residue); 282GLOBAL_ALIAS(set_dma_sg, get_dma_residue);
283GLOBAL_ALIAS(set_dma_speed, get_dma_residue); 283GLOBAL_ALIAS(set_dma_speed, get_dma_residue);
284GLOBAL_ALIAS(init_dma, get_dma_residue); 284GLOBAL_ALIAS(init_dma, get_dma_residue);
@@ -289,7 +289,7 @@ EXPORT_SYMBOL(request_dma);
289EXPORT_SYMBOL(free_dma); 289EXPORT_SYMBOL(free_dma);
290EXPORT_SYMBOL(enable_dma); 290EXPORT_SYMBOL(enable_dma);
291EXPORT_SYMBOL(disable_dma); 291EXPORT_SYMBOL(disable_dma);
292EXPORT_SYMBOL(set_dma_addr); 292EXPORT_SYMBOL(__set_dma_addr);
293EXPORT_SYMBOL(set_dma_count); 293EXPORT_SYMBOL(set_dma_count);
294EXPORT_SYMBOL(set_dma_mode); 294EXPORT_SYMBOL(set_dma_mode);
295EXPORT_SYMBOL(set_dma_page); 295EXPORT_SYMBOL(set_dma_page);
diff --git a/include/asm-arm/dma.h b/include/asm-arm/dma.h
index ef41df43a584..1c7087f9364c 100644
--- a/include/asm-arm/dma.h
+++ b/include/asm-arm/dma.h
@@ -91,7 +91,9 @@ extern void set_dma_sg(dmach_t channel, struct scatterlist *sg, int nr_sg);
91 * especially since some DMA architectures don't update the 91 * especially since some DMA architectures don't update the
92 * DMA address immediately, but defer it to the enable_dma(). 92 * DMA address immediately, but defer it to the enable_dma().
93 */ 93 */
94extern void set_dma_addr(dmach_t channel, unsigned long physaddr); 94extern void __set_dma_addr(dmach_t channel, void *addr);
95#define set_dma_addr(channel, addr) \
96 __set_dma_addr(channel, bus_to_virt(addr))
95 97
96/* Set the DMA byte count for this channel 98/* Set the DMA byte count for this channel
97 * 99 *