diff options
Diffstat (limited to 'firmware/target/arm')
-rw-r--r-- | firmware/target/arm/as3525/pcm-as3525.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/firmware/target/arm/as3525/pcm-as3525.c b/firmware/target/arm/as3525/pcm-as3525.c index 0386cc3336..cf0333f24c 100644 --- a/firmware/target/arm/as3525/pcm-as3525.c +++ b/firmware/target/arm/as3525/pcm-as3525.c | |||
@@ -66,6 +66,9 @@ static void play_start_pcm(void) | |||
66 | dma_size -= size; | 66 | dma_size -= size; |
67 | dma_start_addr += size; | 67 | dma_start_addr += size; |
68 | 68 | ||
69 | CGU_PERI |= CGU_I2SOUT_APB_CLOCK_ENABLE; | ||
70 | CGU_AUDIO |= (1<<11); | ||
71 | |||
69 | dma_enable_channel(1, (void*)addr, (void*)I2SOUT_DATA, DMA_PERI_I2SOUT, | 72 | dma_enable_channel(1, (void*)addr, (void*)I2SOUT_DATA, DMA_PERI_I2SOUT, |
70 | DMAC_FLOWCTRL_DMAC_MEM_TO_PERI, true, false, size >> 2, DMA_S1, | 73 | DMAC_FLOWCTRL_DMAC_MEM_TO_PERI, true, false, size >> 2, DMA_S1, |
71 | dma_callback); | 74 | dma_callback); |
@@ -98,6 +101,9 @@ void pcm_play_dma_stop(void) | |||
98 | { | 101 | { |
99 | dma_disable_channel(1); | 102 | dma_disable_channel(1); |
100 | dma_size = 0; | 103 | dma_size = 0; |
104 | |||
105 | CGU_PERI &= ~CGU_I2SOUT_APB_CLOCK_ENABLE; | ||
106 | CGU_AUDIO &= ~(1<<11); | ||
101 | } | 107 | } |
102 | 108 | ||
103 | void pcm_play_dma_pause(bool pause) | 109 | void pcm_play_dma_pause(bool pause) |
@@ -112,8 +118,8 @@ void pcm_play_dma_init(void) | |||
112 | { | 118 | { |
113 | CGU_PERI |= CGU_I2SOUT_APB_CLOCK_ENABLE; | 119 | CGU_PERI |= CGU_I2SOUT_APB_CLOCK_ENABLE; |
114 | 120 | ||
115 | /* enable I2SO_MCLK, clock source PLLA, minimal frequency */ | 121 | /* clock source PLLA, minimal frequency */ |
116 | CGU_AUDIO |= (1<<11) | (511<<2) | (1<<0); | 122 | CGU_AUDIO |= (511<<2) | (1<<0); |
117 | 123 | ||
118 | I2SOUT_CONTROL |= (1<<6) ; /* enable dma */ | 124 | I2SOUT_CONTROL |= (1<<6) ; /* enable dma */ |
119 | I2SOUT_CONTROL |= (1<<3) ; /* stereo */ | 125 | I2SOUT_CONTROL |= (1<<3) ; /* stereo */ |