diff options
author | Miika Pekkarinen <miipekk@ihme.org> | 2005-07-01 21:23:07 +0000 |
---|---|---|
committer | Miika Pekkarinen <miipekk@ihme.org> | 2005-07-01 21:23:07 +0000 |
commit | 45d6fa916c87a0132f1248decc4863683fe82921 (patch) | |
tree | 7a9b117b3181c1e35b372a7b6a30f9f49373a1c5 /firmware/pcm_playback.c | |
parent | cea09fa139e5a9794e1feb7ba8213e3b7179af59 (diff) | |
download | rockbox-45d6fa916c87a0132f1248decc4863683fe82921.tar.gz rockbox-45d6fa916c87a0132f1248decc4863683fe82921.zip |
Fixed pops from headphone audio output.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6977 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/pcm_playback.c')
-rw-r--r-- | firmware/pcm_playback.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/firmware/pcm_playback.c b/firmware/pcm_playback.c index 894df6ba0d..03afdace0a 100644 --- a/firmware/pcm_playback.c +++ b/firmware/pcm_playback.c | |||
@@ -247,9 +247,9 @@ void pcm_play_data(const unsigned char* start, int size, | |||
247 | get_more(&next_start, &next_size); | 247 | get_more(&next_start, &next_size); |
248 | dma_start(start, size); | 248 | dma_start(start, size); |
249 | 249 | ||
250 | /* Sleep a while, then power on audio output */ | 250 | /* Sleep a while, then unmute audio output */ |
251 | sleep(HZ/16); | 251 | sleep(1); |
252 | uda1380_enable_output(true); | 252 | uda1380_mute(false); |
253 | } | 253 | } |
254 | 254 | ||
255 | void pcm_play_stop(void) | 255 | void pcm_play_stop(void) |
@@ -257,9 +257,9 @@ void pcm_play_stop(void) | |||
257 | crossfade_active = false; | 257 | crossfade_active = false; |
258 | pcm_set_boost_mode(false); | 258 | pcm_set_boost_mode(false); |
259 | if (pcm_playing) { | 259 | if (pcm_playing) { |
260 | uda1380_enable_output(false); | 260 | uda1380_mute(true); |
261 | pcm_boost(false); | 261 | pcm_boost(false); |
262 | sleep(HZ/16); | 262 | sleep(1); |
263 | dma_stop(); | 263 | dma_stop(); |
264 | } | 264 | } |
265 | } | 265 | } |
@@ -277,10 +277,14 @@ void pcm_play_pause(bool play) | |||
277 | IIS2CONFIG = (pcm_freq << 12) | 0x300 | 4 << 2; | 277 | IIS2CONFIG = (pcm_freq << 12) | 0x300 | 4 << 2; |
278 | EBU1CONFIG = 7 << 12 | 3 << 8 | 5 << 2; | 278 | EBU1CONFIG = 7 << 12 | 3 << 8 | 5 << 2; |
279 | DCR0 |= DMA_EEXT | DMA_START; | 279 | DCR0 |= DMA_EEXT | DMA_START; |
280 | sleep(1); | ||
281 | uda1380_mute(false); | ||
280 | } | 282 | } |
281 | else if(!pcm_paused && !play) | 283 | else if(!pcm_paused && !play) |
282 | { | 284 | { |
283 | logf("pause"); | 285 | logf("pause"); |
286 | uda1380_mute(true); | ||
287 | |||
284 | /* Disable DMA peripheral request. */ | 288 | /* Disable DMA peripheral request. */ |
285 | DCR0 &= ~DMA_EEXT; | 289 | DCR0 &= ~DMA_EEXT; |
286 | IIS2CONFIG = 0x800; | 290 | IIS2CONFIG = 0x800; |
@@ -695,6 +699,11 @@ void pcm_play_init(void) | |||
695 | crossfade_active = false; | 699 | crossfade_active = false; |
696 | crossfade_init = false; | 700 | crossfade_init = false; |
697 | pcm_event_handler = NULL; | 701 | pcm_event_handler = NULL; |
702 | |||
703 | /* Turn on headphone power with audio output muted. */ | ||
704 | uda1380_mute(true); | ||
705 | sleep(HZ/4); | ||
706 | uda1380_enable_output(true); | ||
698 | } | 707 | } |
699 | 708 | ||
700 | void pcm_crossfade_enable(bool on_off) | 709 | void pcm_crossfade_enable(bool on_off) |