summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMihail Zenkov <mihail.zenkov@gmail.com>2015-02-15 00:42:24 +0000
committerGerrit Rockbox <gerrit@rockbox.org>2015-04-09 19:26:05 +0200
commitf775870a5a373f8ff68d9b3a4150f18b369ac7a9 (patch)
tree4a3dcbc242b1faf25a3b5f1902aeb0b7fd9fe205
parent926829cba33671a37f1eceade54be410ac6927e3 (diff)
downloadrockbox-f775870a5a373f8ff68d9b3a4150f18b369ac7a9.tar.gz
rockbox-f775870a5a373f8ff68d9b3a4150f18b369ac7a9.zip
AMS: Fix pop-clicks noise on play/stop.
This noise itroduced by starting/stopping I2SO MCLK. Enable MCLK permanently fix it. Change-Id: I6d9c51e5ea5bca13026833d2bfdda49d94c6b723
-rw-r--r--firmware/target/arm/as3525/pcm-as3525.c16
1 files changed, 2 insertions, 14 deletions
diff --git a/firmware/target/arm/as3525/pcm-as3525.c b/firmware/target/arm/as3525/pcm-as3525.c
index eb22fc2016..0f077b825b 100644
--- a/firmware/target/arm/as3525/pcm-as3525.c
+++ b/firmware/target/arm/as3525/pcm-as3525.c
@@ -132,8 +132,6 @@ void pcm_play_dma_start(const void *addr, size_t size)
132 /* force writeback */ 132 /* force writeback */
133 commit_dcache_range(dma_start_addr, dma_start_size); 133 commit_dcache_range(dma_start_addr, dma_start_size);
134 134
135 bitset32(&CGU_AUDIO, (1<<11));
136
137 play_start_pcm(); 135 play_start_pcm();
138} 136}
139 137
@@ -151,11 +149,6 @@ void pcm_play_dma_stop(void)
151 149
152 dma_release(); 150 dma_release();
153 151
154#ifdef HAVE_RECORDING
155 if (!is_recording)
156 bitclr32(&CGU_AUDIO, (1<<11));
157#endif
158
159 play_callback_pending = false; 152 play_callback_pending = false;
160} 153}
161 154
@@ -221,10 +214,10 @@ void pcm_dma_apply_settings(void)
221 (0<<23) | /* I2SI_MCLK_EN = disabled */ 214 (0<<23) | /* I2SI_MCLK_EN = disabled */
222 (0<<14) | /* I2SI_MCLK_DIV_SEL = unused */ 215 (0<<14) | /* I2SI_MCLK_DIV_SEL = unused */
223 (0<<12) | /* I2SI_MCLK_SEL = clk_main */ 216 (0<<12) | /* I2SI_MCLK_SEL = clk_main */
224 /* I2SO_MCLK_EN = unchanged */ 217 (1<<11) | /* I2SO_MCLK_EN */
225 (mclk_divider() << 2) | /* I2SO_MCLK_DIV_SEL */ 218 (mclk_divider() << 2) | /* I2SO_MCLK_DIV_SEL */
226 (AS3525_MCLK_SEL << 0), /* I2SO_MCLK_SEL */ 219 (AS3525_MCLK_SEL << 0), /* I2SO_MCLK_SEL */
227 0x01fff7ff); 220 0x01ffffff);
228} 221}
229 222
230size_t pcm_get_bytes_waiting(void) 223size_t pcm_get_bytes_waiting(void)
@@ -386,9 +379,6 @@ void pcm_rec_dma_stop(void)
386 rec_dma_addr = NULL; 379 rec_dma_addr = NULL;
387 rec_dma_size = 0; 380 rec_dma_size = 0;
388 381
389 if (!is_playing)
390 bitclr32(&CGU_AUDIO, (1<<11));
391
392 bitclr32(&CGU_PERI, CGU_I2SIN_APB_CLOCK_ENABLE); 382 bitclr32(&CGU_PERI, CGU_I2SIN_APB_CLOCK_ENABLE);
393} 383}
394 384
@@ -397,8 +387,6 @@ void pcm_rec_dma_start(void *addr, size_t size)
397{ 387{
398 is_recording = true; 388 is_recording = true;
399 389
400 bitset32(&CGU_AUDIO, (1<<11));
401
402 rec_dma_addr = addr; 390 rec_dma_addr = addr;
403 rec_dma_size = size; 391 rec_dma_size = size;
404 392