aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy Huang <roy.huang@analog.com>2007-10-10 11:31:19 -0400
committerBryan Wu <bryan.wu@analog.com>2007-10-10 11:31:19 -0400
commit1d945e2b3e421f2ce01b2eb260392f888406933f (patch)
tree306716a6ebba2e17af352ece0bad9af34c9a7843
parent518039bc24cbb9ce34665814fe120eac50bedd9a (diff)
Blackfin arch: add set_dma_curr_addr DMA API to support sound driver recording function
Signed-off-by: Roy Huang <roy.huang@analog.com> Signed-off-by: Bryan Wu <bryan.wu@analog.com>
-rw-r--r--arch/blackfin/kernel/bfin_dma_5xx.c10
-rw-r--r--include/asm-blackfin/dma.h1
2 files changed, 11 insertions, 0 deletions
diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c
index 7cf02f02a1db..7e2201908356 100644
--- a/arch/blackfin/kernel/bfin_dma_5xx.c
+++ b/arch/blackfin/kernel/bfin_dma_5xx.c
@@ -345,6 +345,16 @@ void set_dma_sg(unsigned int channel, struct dmasg *sg, int nr_sg)
345} 345}
346EXPORT_SYMBOL(set_dma_sg); 346EXPORT_SYMBOL(set_dma_sg);
347 347
348void set_dma_curr_addr(unsigned int channel, unsigned long addr)
349{
350 BUG_ON(!(dma_ch[channel].chan_status != DMA_CHANNEL_FREE
351 && channel < MAX_BLACKFIN_DMA_CHANNEL));
352
353 dma_ch[channel].regs->curr_addr_ptr = addr;
354 SSYNC();
355}
356EXPORT_SYMBOL(set_dma_curr_addr);
357
348/*------------------------------------------------------------------------------ 358/*------------------------------------------------------------------------------
349 * Get the DMA status of a specific DMA channel from the system. 359 * Get the DMA status of a specific DMA channel from the system.
350 *-----------------------------------------------------------------------------*/ 360 *-----------------------------------------------------------------------------*/
diff --git a/include/asm-blackfin/dma.h b/include/asm-blackfin/dma.h
index be0d913e5516..4269082b154a 100644
--- a/include/asm-blackfin/dma.h
+++ b/include/asm-blackfin/dma.h
@@ -159,6 +159,7 @@ void set_dma_y_modify(unsigned int channel, short y_modify);
159void set_dma_config(unsigned int channel, unsigned short config); 159void set_dma_config(unsigned int channel, unsigned short config);
160unsigned short set_bfin_dma_config(char direction, char flow_mode, 160unsigned short set_bfin_dma_config(char direction, char flow_mode,
161 char intr_mode, char dma_mode, char width); 161 char intr_mode, char dma_mode, char width);
162void set_dma_curr_addr(unsigned int channel, unsigned long addr);
162 163
163/* get curr status for polling */ 164/* get curr status for polling */
164unsigned short get_dma_curr_irqstat(unsigned int channel); 165unsigned short get_dma_curr_irqstat(unsigned int channel);