diff options
-rw-r--r-- | firmware/drivers/uda1380.c | 6 | ||||
-rw-r--r-- | firmware/pcm_playback.c | 10 |
2 files changed, 9 insertions, 7 deletions
diff --git a/firmware/drivers/uda1380.c b/firmware/drivers/uda1380.c index 8accdc46b3..c0ff0c7ceb 100644 --- a/firmware/drivers/uda1380.c +++ b/firmware/drivers/uda1380.c | |||
@@ -48,7 +48,7 @@ unsigned short uda1380_defaults[2*NUM_DEFAULT_REGS] = | |||
48 | { | 48 | { |
49 | REG_0, EN_DAC | EN_INT | EN_DEC | SYSCLK_256FS | WSPLL_25_50, | 49 | REG_0, EN_DAC | EN_INT | EN_DEC | SYSCLK_256FS | WSPLL_25_50, |
50 | REG_I2S, I2S_IFMT_IIS, | 50 | REG_I2S, I2S_IFMT_IIS, |
51 | REG_PWR, PON_PLL | PON_DAC | PON_BIAS, /* PON_HP is enabled later */ | 51 | REG_PWR, PON_PLL | PON_BIAS, /* PON_HP & PON_DAC is enabled later */ |
52 | REG_AMIX, AMIX_RIGHT(0x3f) | AMIX_LEFT(0x3f), /* 00=max, 3f=mute */ | 52 | REG_AMIX, AMIX_RIGHT(0x3f) | AMIX_LEFT(0x3f), /* 00=max, 3f=mute */ |
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 */ |
@@ -157,10 +157,10 @@ int uda1380_set_regs(void) | |||
157 | void uda1380_enable_output(bool enable) | 157 | 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_DAC | PON_HP); |
161 | } else { | 161 | } else { |
162 | uda1380_write_reg(REG_MUTE, MUTE_MASTER); | 162 | uda1380_write_reg(REG_MUTE, MUTE_MASTER); |
163 | uda1380_write_reg(REG_PWR, uda1380_regs[REG_PWR] & ~PON_HP); | 163 | uda1380_write_reg(REG_PWR, uda1380_regs[REG_PWR] & ~PON_DAC); |
164 | } | 164 | } |
165 | } | 165 | } |
166 | 166 | ||
diff --git a/firmware/pcm_playback.c b/firmware/pcm_playback.c index 5e2ba07b18..f75ec69857 100644 --- a/firmware/pcm_playback.c +++ b/firmware/pcm_playback.c | |||
@@ -307,14 +307,16 @@ void pcm_init(void) | |||
307 | /* Initialize default register values. */ | 307 | /* Initialize default register values. */ |
308 | uda1380_init(); | 308 | uda1380_init(); |
309 | 309 | ||
310 | /* Turn on headphone power */ | 310 | /* Sleep a while so the power can stabilize (especially a long |
311 | uda1380_enable_output(true); | 311 | delay is needed for the line out connector). */ |
312 | sleep(HZ); | ||
312 | 313 | ||
313 | /* Sleep a little so the power can stabilize. */ | 314 | /* Power on FSDAC and HP amp. */ |
314 | sleep(HZ/4); | 315 | uda1380_enable_output(true); |
315 | 316 | ||
316 | /* Unmute the master channel (DAC should be at zero point now). */ | 317 | /* Unmute the master channel (DAC should be at zero point now). */ |
317 | uda1380_mute(false); | 318 | uda1380_mute(false); |
319 | |||
318 | #elif defined(HAVE_TLV320) | 320 | #elif defined(HAVE_TLV320) |
319 | tlv320_init(); | 321 | tlv320_init(); |
320 | tlv320_enable_output(true); | 322 | tlv320_enable_output(true); |