summaryrefslogtreecommitdiffstats
path: root/firmware/target/arm/as3525/pcm-as3525.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/as3525/pcm-as3525.c')
-rw-r--r--firmware/target/arm/as3525/pcm-as3525.c43
1 files changed, 13 insertions, 30 deletions
diff --git a/firmware/target/arm/as3525/pcm-as3525.c b/firmware/target/arm/as3525/pcm-as3525.c
index cefca0fbe5..a2e3cfbf9f 100644
--- a/firmware/target/arm/as3525/pcm-as3525.c
+++ b/firmware/target/arm/as3525/pcm-as3525.c
@@ -74,18 +74,13 @@ static void dma_callback(void)
{
if(!dma_size)
{
- register pcm_more_callback_type get_more = pcm_callback_for_more;
- if(get_more)
- get_more(&dma_start_addr, &dma_size);
- }
+ pcm_play_get_more_callback(&dma_start_addr, &dma_size);
- if(!dma_size)
- {
- pcm_play_dma_stop();
- pcm_play_dma_stopped_callback();
+ if (!dma_size)
+ return;
}
- else
- play_start_pcm();
+
+ play_start_pcm();
}
void pcm_play_dma_start(const void *addr, size_t size)
@@ -275,31 +270,19 @@ static void rec_dma_callback(void)
if(!rec_dma_size)
{
- register pcm_more_callback_type2 more_ready = pcm_callback_more_ready;
- if (!more_ready || more_ready(0) < 0)
- {
- /* Finished recording */
- pcm_rec_dma_stop();
- pcm_rec_dma_stopped_callback();
- return;
- }
- }
-
- rec_dma_start();
-}
-
+ pcm_rec_more_ready_callback(0, &rec_dma_start_addr, &rec_dma_size);
-void pcm_rec_dma_record_more(void *start, size_t size)
-{
- dump_dcache_range(start, size);
- rec_dma_start_addr = start;
+ if(rec_dma_size != 0)
+ {
+ dump_dcache_range(rec_dma_start_addr, rec_dma_size);
#if CONFIG_CPU == AS3525
- mono_samples = AS3525_UNCACHED_ADDR(start);
+ mono_samples = AS3525_UNCACHED_ADDR(rec_dma_start_addr);
#endif
- rec_dma_size = size;
+ rec_dma_start();
+ }
+ }
}
-
void pcm_rec_dma_stop(void)
{
dma_disable_channel(1);