diff options
-rw-r--r-- | firmware/drivers/uda1380.c | 4 | ||||
-rw-r--r-- | firmware/pcm_playback.c | 15 |
2 files changed, 9 insertions, 10 deletions
diff --git a/firmware/drivers/uda1380.c b/firmware/drivers/uda1380.c index 07e92e7bba..1636f13365 100644 --- a/firmware/drivers/uda1380.c +++ b/firmware/drivers/uda1380.c | |||
@@ -53,7 +53,7 @@ unsigned short uda1380_defaults[2*NUM_DEFAULT_REGS] = | |||
53 | REG_MASTER_VOL, MASTER_VOL_LEFT(0x20) | MASTER_VOL_RIGHT(0x20), /* 00=max, ff=mute */ | 53 | REG_MASTER_VOL, MASTER_VOL_LEFT(0x20) | MASTER_VOL_RIGHT(0x20), /* 00=max, ff=mute */ |
54 | REG_MIX_VOL, MIX_VOL_CH_1(0) | MIX_VOL_CH_2(0xff), /* 00=max, ff=mute */ | 54 | REG_MIX_VOL, MIX_VOL_CH_1(0) | MIX_VOL_CH_2(0xff), /* 00=max, ff=mute */ |
55 | REG_EQ, EQ_MODE_MAX, /* Bass and tremble = 0 dB */ | 55 | REG_EQ, EQ_MODE_MAX, /* Bass and tremble = 0 dB */ |
56 | REG_MUTE, MUTE_MASTER, /* Mute everything to start with */ | 56 | REG_MUTE, MUTE_MASTER | MUTE_CH2, /* Mute everything to start with */ |
57 | REG_MIX_CTL, MIX_CTL_MIX, /* Enable mixer */ | 57 | REG_MIX_CTL, MIX_CTL_MIX, /* Enable mixer */ |
58 | REG_DEC_VOL, 0, | 58 | REG_DEC_VOL, 0, |
59 | REG_PGA, MUTE_ADC, | 59 | REG_PGA, MUTE_ADC, |
@@ -158,8 +158,6 @@ void uda1380_enable_output(bool enable) | |||
158 | { | 158 | { |
159 | if (enable) { | 159 | if (enable) { |
160 | uda1380_write_reg(REG_PWR, uda1380_regs[REG_PWR] | PON_HP); | 160 | uda1380_write_reg(REG_PWR, uda1380_regs[REG_PWR] | PON_HP); |
161 | /* Don't unmute audio output here */ | ||
162 | // uda1380_write_reg(REG_MUTE, MUTE_CH2); | ||
163 | } else { | 161 | } else { |
164 | uda1380_write_reg(REG_MUTE, MUTE_MASTER); | 162 | uda1380_write_reg(REG_MUTE, MUTE_MASTER); |
165 | uda1380_write_reg(REG_PWR, uda1380_regs[REG_PWR] & ~PON_HP); | 163 | uda1380_write_reg(REG_PWR, uda1380_regs[REG_PWR] & ~PON_HP); |
diff --git a/firmware/pcm_playback.c b/firmware/pcm_playback.c index 03afdace0a..6f395a58e2 100644 --- a/firmware/pcm_playback.c +++ b/firmware/pcm_playback.c | |||
@@ -248,7 +248,7 @@ void pcm_play_data(const unsigned char* start, int size, | |||
248 | dma_start(start, size); | 248 | dma_start(start, size); |
249 | 249 | ||
250 | /* Sleep a while, then unmute audio output */ | 250 | /* Sleep a while, then unmute audio output */ |
251 | sleep(1); | 251 | sleep(HZ/8); |
252 | uda1380_mute(false); | 252 | uda1380_mute(false); |
253 | } | 253 | } |
254 | 254 | ||
@@ -353,8 +353,14 @@ void pcm_init(void) | |||
353 | ICR4 = (ICR4 & 0xffff00ff) | 0x00001c00; | 353 | ICR4 = (ICR4 & 0xffff00ff) | 0x00001c00; |
354 | IMR &= ~(1<<14); /* bit 14 is DMA0 */ | 354 | IMR &= ~(1<<14); /* bit 14 is DMA0 */ |
355 | 355 | ||
356 | pcm_play_init(); | ||
357 | pcm_set_frequency(44100); | 356 | pcm_set_frequency(44100); |
357 | |||
358 | /* Turn on headphone power with audio output muted. */ | ||
359 | uda1380_mute(true); | ||
360 | sleep(HZ/4); | ||
361 | uda1380_enable_output(true); | ||
362 | |||
363 | pcm_play_init(); | ||
358 | } | 364 | } |
359 | 365 | ||
360 | void pcm_play_set_watermark(int numbytes, void (*callback)(int bytes_left)) | 366 | void pcm_play_set_watermark(int numbytes, void (*callback)(int bytes_left)) |
@@ -699,11 +705,6 @@ void pcm_play_init(void) | |||
699 | crossfade_active = false; | 705 | crossfade_active = false; |
700 | crossfade_init = false; | 706 | crossfade_init = false; |
701 | pcm_event_handler = NULL; | 707 | 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); | ||
707 | } | 708 | } |
708 | 709 | ||
709 | void pcm_crossfade_enable(bool on_off) | 710 | void pcm_crossfade_enable(bool on_off) |